diff --git a/CHANGES.md b/CHANGES.md
index 790bed6918..48f4a57f39 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,5 +1,49 @@
# CHANGELOG
+## 2.7.0 (Unreleased)
+
+### :rocket: Epics and highlights
+
+### :boom: Breaking changes & Deprecations
+
+### :heart: Community contributions (Thank you!)
+- Design improvements to the Invitations page with an empty state [GitHub #2608](https://github.com/penpot/penpot/issues/2608) by [@iprithvitharun](https://github.com/iprithvitharun)
+
+### :sparkles: New features
+- Update board presets with a newer devices [Taiga #10610](https://tree.taiga.io/project/penpot/us/10610)
+- Propagate "sharing a prototype" to editors and viewers [Taiga #8853](https://tree.taiga.io/project/penpot/us/8853)
+- Design improvements to the Invitations page with an empty state [Taiga #4554](https://tree.taiga.io/project/penpot/us/4554)
+- Duplicate token sets [Taiga #10694](https://tree.taiga.io/project/penpot/issue/10694)
+- Add set selection in create Token themes flow [Taiga #10746](https://tree.taiga.io/project/penpot/issue/10746)
+- Display indicator on not active sets [Taiga #10668](https://tree.taiga.io/project/penpot/issue/10668)
+
+### :bug: Bugs fixed
+- Fix problem in viewer with the back button [Taiga #10907](https://tree.taiga.io/project/penpot/issue/10907)
+- Fix resize bar background on tokens panel [Taiga #10811](https://tree.taiga.io/project/penpot/issue/10811)
+- Fix shortcut for history version panel [Taiga #11006](https://tree.taiga.io/project/penpot/issue/11006)
+- Fix positioning of comment drafts when near the right / bottom edges of viewport [Taiga #10534](https://tree.taiga.io/project/penpot/issue/10534)
+- Fix path having a wrong selrect [Taiga #10257](https://tree.taiga.io/project/penpot/issue/10257)
+- Fix SVG `stroke-linecap` property when importing SVGs [Taiga #9489](https://tree.taiga.io/project/penpot/issue/9489)
+- Fix position problems cutting-pasting a component [Taiga #10677](https://tree.taiga.io/project/penpot/issue/10677)
+- Fix design tab has a horizontal scroll [Taiga #10660](https://tree.taiga.io/project/penpot/issue/10660)
+- Fix long file names being clipped when longer than allowed length [Taiga #10662](https://tree.taiga.io/project/penpot/issue/10662)
+- Fix problem with error detail in toast [Taiga #10519](https://tree.taiga.io/project/penpot/issue/10519)
+- Fix view mode error when an external user tries to export something from a prototype using a shared link [Taiga #10251](https://tree.taiga.io/project/penpot/issue/10251)
+- Fix merge path nodes with only one node selected [Taiga #9626](https://tree.taiga.io/project/penpot/issue/9626)
+- Fix problem with import errors [Taiga #10040](https://tree.taiga.io/project/penpot/issue/10040)
+- Fix color gradient on texts [Taiga Issue #7488](https://tree.taiga.io/project/penpot/issue/7488)
+- Add support for self mentions [Taiga #10809](https://tree.taiga.io/project/penpot/issue/10809)
+- Fix team info settings alignment [Taiga #10869](https://tree.taiga.io/project/penpot/issue/10869)
+- Fix left sidebar horizontal scroll on nested layers [Taiga #10791](https://tree.taiga.io/project/penpot/issue/10791)
+- Improve error message details importing tokens [Taiga Issue #10772](https://tree.taiga.io/project/penpot/issue/10772)
+- Fix no selected set after Drag & Drop [Github #71](https://github.com/tokens-studio/penpot/issues/71)
+- Styledictionary v5 Update [Github #6283](https://github.com/penpot/penpot/pull/6283)
+- Fix Rename a set throws an internal error [Github #78](https://github.com/tokens-studio/penpot/issues/78)
+- Fix Out of Sync Token Value & Color Picker [Github #102](https://github.com/tokens-studio/penpot/issues/102)
+- Fix Color should preserve color space [Github #69](https://github.com/tokens-studio/penpot/issues/69)
+- Fix cannot rename Design Token Sets when group of same name exists [Taiga Issue #10773](https://tree.taiga.io/project/penpot/issue/10773)
+- Fix problem when duplicating grid layout [Github #6391](https://github.com/penpot/penpot/issues/6391)
+
## 2.6.2
### :bug: Bugs fixed
diff --git a/README.md b/README.md
index 77a6a70541..148e31e827 100644
--- a/README.md
+++ b/README.md
@@ -16,18 +16,18 @@
- Website •
- Getting Started •
- User Guide •
- Tutorials & Info •
+ Website •
+ User Guide •
+ Learning Center •
Community
- Youtube •
- Peertube •
- Linkedin •
- Instagram •
- Mastodon •
+ Youtube •
+ Peertube •
+ Linkedin •
+ Instagram •
+ Mastodon •
+ Bluesky •
X
@@ -40,12 +40,13 @@
Penpot is the first **open-source** design tool for design and code collaboration. Designers can create stunning designs, interactive prototypes, design systems at scale, while developers enjoy ready-to-use code and make their workflow easy and fast. And all of this with no handoff drama.
-Penpot is available on browser and [self host](https://penpot.app/self-host). It’s web-based and works with open standards (SVG, CSS and HTML). And last but not least, it’s free!
+Available on browser or self-hosted, Penpot works with open standards like SVG, CSS, HTML and JSON, and it’s free!
-Penpot’s latest [huge release 2.0](https://penpot.app/dev-diaries), takes the platform to a whole new level. This update introduces the ground-breaking [CSS Grid Layout feature](https://penpot.app/penpot-2.0), a complete UI redesign, a new Components system, and much more. Plus, it's faster and more accessible.
+The latest updates take Penpot even further. It’s the first design tool to integrate native [design tokens](https://penpot.dev/collaboration/design-tokens)—a single source of truth to improve efficiency and collaboration between product design and development.
+With the [huge 2.0 release](https://penpot.app/dev-diaries), Penpot took the platform to a whole new level. This update introduces the ground-breaking [CSS Grid Layout feature](https://penpot.app/penpot-2.0), a complete UI redesign, a new Components system, and much more.
+For organizations that need extra service for its teams, [get in touch](https://cal.com/team/penpot/talk-to-us)
-
-🎇 **Penpot Fest** is our design, code & Open Source event. Check out the highlights from [Penpot Fest 2023 edition](https://www.youtube.com/watch?v=sOpLZaK5mDc)!
+🎇 Design, code, and Open Source meet at [Penpot Fest](https://penpot.app/penpotfest)! Be part of the 2025 edition in Madrid, Spain, on October 9-10.
## Table of contents ##
@@ -61,7 +62,7 @@ Penpot’s latest [huge release 2.0](https://penpot.app/dev-diaries), takes the
Penpot expresses designs as code. Designers can do their best work and see it will be beautifully implemented by developers in a two-way collaboration.
### Plugin system ###
-[Penpot plugins](https://penpot.app/penpothub/plugins) let you expand the platform's capabilities, give you the flexibility to integrate it with other apps, and design custom solutions.
+[Penpot plugins](https://penpot.app/penpothub/plugins) let you expand the platform's capabilities, give you the flexibility to integrate it with other apps, and design custom solutions.
### Designed for developers ###
Penpot was built to serve both designers and developers and create a fluid design-code process. You have the choice to enjoy real-time collaboration or play "solo".
@@ -78,6 +79,10 @@ Penpot offers integration into the development toolchain, thanks to its support
### 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.
+
+
@@ -125,13 +130,13 @@ You will find the following categories:
## Contributing ##
-Any contribution will make a difference to improve Penpot. How can you get involved?
+Any contribution will make a difference to improve Penpot. How can you get involved?
-Choose your way:
+Choose your way:
- Create and [share Libraries & Templates](https://penpot.app/libraries-templates.html) that will be helpful for the community
- Invite your [team to join](https://design.penpot.app/#/auth/register)
-- Star this repo and follow us on Social Media: [Mastodon](https://fosstodon.org/@penpot/), [Youtube](https://www.youtube.com/c/Penpot), [Instagram](https://instagram.com/penpot.app), [Linkedin](https://www.linkedin.com/company/penpotdesign), [Peertube](https://peertube.kaleidos.net/a/penpot_app) and [X](https://twitter.com/penpotapp).
+- Give this repo a star and follow us on Social Media: [Mastodon](https://fosstodon.org/@penpot/), [Youtube](https://www.youtube.com/c/Penpot), [Instagram](https://instagram.com/penpot.app), [Linkedin](https://www.linkedin.com/company/penpotdesign), [Peertube](https://peertube.kaleidos.net/a/penpot_app), [X](https://twitter.com/penpotapp) and [BlueSky](https://bsky.app/profile/penpot.app)
- Participate in the [Community](https://community.penpot.app/) space by asking and answering questions; reacting to others’ articles; opening your own conversations and following along on decisions affecting the project.
- Report bugs with our easy [guide for bugs hunting](https://help.penpot.app/contributing-guide/reporting-bugs/) or [GitHub issues](https://github.com/penpot/penpot/issues)
- Become a [translator](https://help.penpot.app/contributing-guide/translations)
diff --git a/backend/scripts/repl b/backend/scripts/repl
index 558a68b955..04865d1004 100755
--- a/backend/scripts/repl
+++ b/backend/scripts/repl
@@ -31,7 +31,8 @@ export PENPOT_FLAGS="\
enable-tiered-file-data-storage \
enable-file-validation \
enable-file-schema-validation \
- enable-subscriptions-old";
+ enable-subscriptons \
+ enable-subscriptons-old";
# Default deletion delay for devenv
export PENPOT_DELETION_DELAY="24h"
@@ -71,15 +72,18 @@ 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="--enable-preview \
+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 \
-XX:+EnableDynamicAgentLoading \
- -XX:-OmitStackTraceInFastThrow \
+ -XX:-OmitStackTraceInFastThrow \
-XX:+UnlockDiagnosticVMOptions \
- -XX:+DebugNonSafepoints";
+ -XX:+DebugNonSafepoints \
+ --sun-misc-unsafe-memory-access=allow \
+ --enable-preview \
+ --enable-native-access=ALL-UNNAMED";
export OPTIONS="-A:jmx-remote -A:dev"
diff --git a/backend/scripts/run.template.sh b/backend/scripts/run.template.sh
index e1f7a727b4..46a4e45552 100644
--- a/backend/scripts/run.template.sh
+++ b/backend/scripts/run.template.sh
@@ -18,7 +18,7 @@ if [ -f ./environ ]; then
source ./environ
fi
-export JVM_OPTS="-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Dlog4j2.configurationFile=log4j2.xml -XX:-OmitStackTraceInFastThrow --enable-preview $JVM_OPTS"
+export JVM_OPTS="-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -Dlog4j2.configurationFile=log4j2.xml -XX:-OmitStackTraceInFastThrow --enable-native-access=ALL-UNNAMED --enable-preview $JVM_OPTS"
ENTRYPOINT=${1:-app.main};
diff --git a/backend/scripts/start-dev b/backend/scripts/start-dev
index dae3af23a7..5f446ef817 100755
--- a/backend/scripts/start-dev
+++ b/backend/scripts/start-dev
@@ -24,18 +24,8 @@ export PENPOT_FLAGS="\
enable-tiered-file-data-storage \
enable-file-validation \
enable-file-schema-validation \
- enable-subscriptions-old";
-
-export OPTIONS="
- -A:jmx-remote -A:dev \
- -J-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager \
- -J-Djdk.attach.allowAttachSelf \
- -J-Dpolyglot.engine.WarnInterpreterOnly=false \
- -J-Dlog4j2.configurationFile=log4j2-devenv.xml \
- -J-XX:+EnableDynamicAgentLoading \
- -J-XX:-OmitStackTraceInFastThrow \
- -J-XX:+UnlockDiagnosticVMOptions \
- -J-XX:+DebugNonSafepoints"
+ enable-subscriptons \
+ enable-subscriptons-old ";
# Default deletion delay for devenv
export PENPOT_DELETION_DELAY="24h"
@@ -66,6 +56,20 @@ export PENPOT_OBJECTS_STORAGE_S3_BUCKET=penpot
entrypoint=${1:-app.main};
-set -ex
+export JAVA_OPTS="\
+ -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager \
+ -Djdk.attach.allowAttachSelf \
+ -Dlog4j2.configurationFile=log4j2-devenv.xml \
+ -Djdk.tracePinnedThreads=full \
+ -XX:+EnableDynamicAgentLoading \
+ -XX:-OmitStackTraceInFastThrow \
+ -XX:+UnlockDiagnosticVMOptions \
+ -XX:+DebugNonSafepoints \
+ --sun-misc-unsafe-memory-access=allow \
+ --enable-preview \
+ --enable-native-access=ALL-UNNAMED";
-clojure $OPTIONS -A:dev -M -m $entrypoint;
+export OPTIONS="-A:jmx-remote -A:dev"
+
+set -ex
+clojure $OPTIONS -M -m $entrypoint;
diff --git a/backend/src/app/binfile/cleaner.clj b/backend/src/app/binfile/cleaner.clj
index 1f4d29ea1f..558cfa129e 100644
--- a/backend/src/app/binfile/cleaner.clj
+++ b/backend/src/app/binfile/cleaner.clj
@@ -11,6 +11,25 @@
[app.common.data :as d]
[app.common.uuid :as uuid]))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; PRE DECODE
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defn clean-shape-pre-decode
+ "Applies a pre-decode phase migration to the shape"
+ [shape]
+ (if (= "bool" (:type shape))
+ (if-let [content (get shape :bool-content)]
+ (-> shape
+ (assoc :content content)
+ (dissoc :bool-content))
+ shape)
+ shape))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; POST DECODE
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
(defn- fix-shape-shadow-color
"Some shapes can come with invalid `id` property on shadow colors
caused by incorrect uuid parsing bug that should be already fixed;
diff --git a/backend/src/app/binfile/v3.clj b/backend/src/app/binfile/v3.clj
index 07ba4618dd..c2b46b4159 100644
--- a/backend/src/app/binfile/v3.clj
+++ b/backend/src/app/binfile/v3.clj
@@ -603,10 +603,20 @@
(reduce-kv (fn [objects id shape]
(assoc objects id (bfl/clean-shape-post-decode shape)))
objects
+ objects))))
+ clean-component-pre-decode
+ (fn [component]
+ (d/update-when component :objects
+ (fn [objects]
+ (reduce-kv (fn [objects id shape]
+ (assoc objects id (bfl/clean-shape-pre-decode shape)))
+ objects
objects))))]
+
(->> (keep (match-component-entry-fn file-id) entries)
(reduce (fn [result {:keys [id entry]}]
(let [object (->> (read-entry input entry)
+ (clean-component-pre-decode)
(decode-component)
(clean-component-post-decode)
(validate-component))]
@@ -641,10 +651,10 @@
(->> (keep (match-shape-entry-fn file-id page-id) entries)
(reduce (fn [result {:keys [id entry]}]
(let [object (->> (read-entry input entry)
+ (bfl/clean-shape-pre-decode)
(decode-shape)
(bfl/clean-shape-post-decode)
(validate-shape))]
-
(if (= id (:id object))
(assoc result id object)
result)))
@@ -755,7 +765,6 @@
;; only the applied
(vary-meta dissoc ::fmg/migrated))]
-
(bfm/register-pending-migrations! cfg file)
(bfc/save-file! cfg file ::db/return-keys false)
diff --git a/backend/src/app/features/components_v2.clj b/backend/src/app/features/components_v2.clj
index 025916bb6b..af106b1672 100644
--- a/backend/src/app/features/components_v2.clj
+++ b/backend/src/app/features/components_v2.clj
@@ -1462,8 +1462,6 @@
(:objects page)
(:id page)
file-id
- true
- nil
cfsh/prepare-create-artboard-from-selection)]
(shape-cb shape)
diff --git a/backend/src/app/loggers/audit.clj b/backend/src/app/loggers/audit.clj
index 88e506f225..20d300ea7f 100644
--- a/backend/src/app/loggers/audit.clj
+++ b/backend/src/app/loggers/audit.clj
@@ -108,6 +108,7 @@
[::ip-addr {:optional true} ::sm/text]
[::props {:optional true} [:map-of :keyword :any]]
[::context {:optional true} [:map-of :keyword :any]]
+ [::tracked-at {:optional true} ::sm/inst]
[::webhooks/event? {:optional true} ::sm/boolean]
[::webhooks/batch-timeout {:optional true} ::dt/duration]
[::webhooks/batch-key {:optional true}
@@ -118,12 +119,12 @@
(defn prepare-event
[cfg mdata params result]
- (let [resultm (meta result)
- request (-> params meta ::http/request)
- profile-id (or (::profile-id resultm)
- (:profile-id result)
- (::rpc/profile-id params)
- uuid/zero)
+ (let [resultm (meta result)
+ request (-> params meta ::http/request)
+ profile-id (or (::profile-id resultm)
+ (:profile-id result)
+ (::rpc/profile-id params)
+ uuid/zero)
session-id (get params ::rpc/external-session-id)
event-origin (get params ::rpc/external-event-origin)
@@ -135,14 +136,14 @@
(clean-props))
- token-id (::actoken/id request)
- context (-> (::context resultm)
- (assoc :external-session-id session-id)
- (assoc :external-event-origin event-origin)
- (assoc :access-token-id (some-> token-id str))
- (d/without-nils))
+ token-id (::actoken/id request)
+ context (-> (::context resultm)
+ (assoc :external-session-id session-id)
+ (assoc :external-event-origin event-origin)
+ (assoc :access-token-id (some-> token-id str))
+ (d/without-nils))
- ip-addr (inet/parse-request request)]
+ ip-addr (inet/parse-request request)]
{::type (or (::type resultm)
(::rpc/type cfg))
diff --git a/backend/src/app/loggers/webhooks.clj b/backend/src/app/loggers/webhooks.clj
index 9d2892dd7d..1b8305504d 100644
--- a/backend/src/app/loggers/webhooks.clj
+++ b/backend/src/app/loggers/webhooks.clj
@@ -15,6 +15,7 @@
[app.config :as cf]
[app.db :as db]
[app.http.client :as http]
+ [app.loggers.audit :as audit]
[app.util.time :as dt]
[app.worker :as wrk]
[clojure.data.json :as json]
@@ -67,18 +68,27 @@
(defmethod ig/init-key ::process-event-handler
[_ cfg]
(fn [{:keys [props] :as task}]
- (l/dbg :hint "process webhook event" :name (:name props))
- (when-let [items (lookup-webhooks cfg props)]
- (l/trc :hint "webhooks found for event" :total (count items))
- (db/tx-run! cfg (fn [cfg]
- (doseq [item items]
- (wrk/submit! (-> cfg
- (assoc ::wrk/task :run-webhook)
- (assoc ::wrk/queue :webhooks)
- (assoc ::wrk/max-retries 3)
- (assoc ::wrk/params {:event props
- :config item})))))))))
+ (let [items (lookup-webhooks cfg props)
+ event {::audit/profile-id (:profile-id props)
+ ::audit/name "webhook"
+ ::audit/type "trigger"
+ ::audit/props {:name (get props :name)
+ :event-id (get props :id)
+ :total-affected (count items)}}]
+
+ (audit/insert! cfg event)
+
+ (when items
+ (l/trc :hint "webhooks found for event" :total (count items))
+ (db/tx-run! cfg (fn [cfg]
+ (doseq [item items]
+ (wrk/submit! (-> cfg
+ (assoc ::wrk/task :run-webhook)
+ (assoc ::wrk/queue :webhooks)
+ (assoc ::wrk/max-retries 3)
+ (assoc ::wrk/params {:event props
+ :config item}))))))))))
;; --- RUN
(declare interpret-exception)
diff --git a/backend/src/app/rpc/commands/files.clj b/backend/src/app/rpc/commands/files.clj
index 117a432ab8..bdb2fcbc59 100644
--- a/backend/src/app/rpc/commands/files.clj
+++ b/backend/src/app/rpc/commands/files.clj
@@ -208,7 +208,7 @@
[:project-id {:optional true} ::sm/uuid]])
(defn- migrate-file
- [{:keys [::db/conn] :as cfg} {:keys [id] :as 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 [;; For avoid unnecesary overhead of creating multiple pointers and
@@ -219,43 +219,45 @@
file (-> file
(update :data feat.fdata/process-pointers deref)
(update :data feat.fdata/process-objects (partial into {}))
- (fmg/migrate-file))
+ (fmg/migrate-file))]
- ;; When file is migrated, we break the rule of no perform
- ;; mutations on get operations and update the file with all
- ;; migrations applied
- ;;
- ;; WARN: he following code will not work on read-only mode,
- ;; it is a known issue; we keep is not implemented until we
- ;; really need this.
- 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)]
+ (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/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))
+ (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))))
+ (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?]
+ lock-for-update?
+ preload-pointers?]
:or {include-deleted? false
lock-for-update? false
- migrate? true}}]
+ migrate? true
+ preload-pointers? false}
+ :as options}]
(assert (db/connection? conn) "expected cfg with valid connection")
@@ -273,10 +275,16 @@
;; 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 (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))
- (if (and migrate? (fmg/need-migration? file))
- (migrate-file cfg file)
file)))
(defn get-minimal-file
@@ -474,7 +482,7 @@
(update page :objects update-vals #(dissoc % :thumbnail)))
(defn get-page
- [{:keys [::db/conn] :as cfg} {:keys [profile-id file-id page-id object-id] :as params}]
+ [{:keys [::db/conn] :as cfg} {:keys [profile-id file-id page-id object-id share-id] :as params}]
(when (and (uuid? object-id)
(not (uuid? page-id)))
@@ -482,22 +490,30 @@
:code :params-validation
:hint "page-id is required when object-id is provided"))
- (let [team (teams/get-team conn
- :profile-id profile-id
- :file-id file-id)
+ (let [perms (get-permissions conn profile-id file-id share-id)
- file (get-file cfg file-id)
+ file (get-file cfg file-id :read-only? true)
- _ (-> (cfeat/get-team-enabled-features cf/flags team)
- (cfeat/check-client-features! (:features params))
- (cfeat/check-file-features! (:features file)))
+ proj (db/get conn :project {:id (:project-id file)})
- page (binding [pmap/*load-fn* (partial feat.fdata/load-pointer cfg file-id)]
- (let [page-id (or page-id (-> file :data :pages first))
- page (dm/get-in file [:data :pages-index page-id])]
- (if (pmap/pointer-map? page)
- (deref page)
- page)))]
+ team (-> (db/get conn :team {:id (:team-id proj)})
+ (teams/decode-row))
+
+ _ (-> (cfeat/get-team-enabled-features cf/flags team)
+ (cfeat/check-client-features! (:features params))
+ (cfeat/check-file-features! (:features file)))
+
+ page (binding [pmap/*load-fn* (partial feat.fdata/load-pointer cfg file-id)]
+ (let [page-id (or page-id (-> file :data :pages first))
+ page (dm/get-in file [:data :pages-index page-id])]
+ (if (pmap/pointer-map? page)
+ (deref page)
+ page)))]
+
+ (when-not perms
+ (ex/raise :type :not-found
+ :code :object-not-found
+ :hint "object not found"))
(cond-> (prune-thumbnails page)
(some? object-id)
@@ -733,7 +749,9 @@
:project-id project-id
:file-id id)
- file (get-file cfg id :project-id project-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))
diff --git a/backend/src/app/rpc/commands/files_thumbnails.clj b/backend/src/app/rpc/commands/files_thumbnails.clj
index 2455807dd8..9d64ec504d 100644
--- a/backend/src/app/rpc/commands/files_thumbnails.clj
+++ b/backend/src/app/rpc/commands/files_thumbnails.clj
@@ -10,7 +10,6 @@
[app.common.data.macros :as dm]
[app.common.features :as cfeat]
[app.common.files.helpers :as cfh]
- [app.common.files.migrations :as fmg]
[app.common.geom.shapes :as gsh]
[app.common.schema :as sm]
[app.common.thumbnails :as thc]
@@ -18,7 +17,6 @@
[app.config :as cf]
[app.db :as db]
[app.db.sql :as-alias sql]
- [app.features.fdata :as feat.fdata]
[app.loggers.audit :as-alias audit]
[app.loggers.webhooks :as-alias webhooks]
[app.media :as media]
@@ -200,14 +198,13 @@
(db/run! cfg (fn [{:keys [::db/conn] :as cfg}]
(files/check-read-permissions! conn profile-id file-id)
- (let [team (teams/get-team conn
- :profile-id profile-id
- :file-id file-id)
+ (let [team (teams/get-team conn
+ :profile-id profile-id
+ :file-id file-id)
- file (binding [pmap/*load-fn* (partial feat.fdata/load-pointer cfg file-id)]
- (-> (files/get-file cfg file-id :migrate? false)
- (update :data feat.fdata/process-pointers deref)
- (fmg/migrate-file)))]
+ file (files/get-file cfg file-id
+ :preload-pointers? true
+ :read-only? true)]
(-> (cfeat/get-team-enabled-features cf/flags team)
(cfeat/check-file-features! (:features file)))
diff --git a/backend/src/app/srepl/fixes.clj b/backend/src/app/srepl/fixes.clj
index 117030397e..18d849603b 100644
--- a/backend/src/app/srepl/fixes.clj
+++ b/backend/src/app/srepl/fixes.clj
@@ -179,7 +179,7 @@
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 true))
+ (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)]
diff --git a/common/src/app/common/data/macros.cljc b/common/src/app/common/data/macros.cljc
index f339a73444..e0096b21cc 100644
--- a/common/src/app/common/data/macros.cljc
+++ b/common/src/app/common/data/macros.cljc
@@ -6,7 +6,7 @@
(ns app.common.data.macros
"Data retrieval & manipulation specific macros."
- (:refer-clojure :exclude [get-in select-keys str with-open min max])
+ (:refer-clojure :exclude [get-in select-keys str with-open max])
#?(:cljs (:require-macros [app.common.data.macros]))
(:require
#?(:clj [clojure.core :as c]
@@ -144,3 +144,8 @@
(str "expr assert: " (pr-str expr)))]
(when *assert*
`(runtime-assert ~hint (fn [] ~expr))))))
+
+(defn truncate
+ "Truncates a string to a certain length"
+ [s max-length]
+ (subs s 0 (min max-length (count s))))
diff --git a/common/src/app/common/features.cljc b/common/src/app/common/features.cljc
index a56829ef33..8f53a9257e 100644
--- a/common/src/app/common/features.cljc
+++ b/common/src/app/common/features.cljc
@@ -103,9 +103,7 @@
"Translate a flag to a feature name"
[flag]
(case flag
- :feature-components-v2 "components/v2"
:feature-styles-v2 "styles/v2"
- :feature-grid-layout "layout/grid"
:feature-fdata-objects-map "fdata/objects-map"
:feature-fdata-pointer-map "fdata/pointer-map"
:feature-plugins "plugins/runtime"
@@ -216,6 +214,12 @@
(check-supported-features! file-features)
+ ;; Components v1 is deprecated
+ (when-not (contains? file-features "components/v2")
+ (ex/raise :type :restriction
+ :code :file-in-components-v1
+ :hint "components v1 is deprecated"))
+
(let [not-supported (-> file-features
(set/difference enabled-features)
(set/difference backend-only-features)
diff --git a/common/src/app/common/files/builder.cljc b/common/src/app/common/files/builder.cljc
index 5d93c515f8..d320e8bc43 100644
--- a/common/src/app/common/files/builder.cljc
+++ b/common/src/app/common/files/builder.cljc
@@ -11,7 +11,6 @@
[app.common.exceptions :as ex]
[app.common.files.changes :as ch]
[app.common.geom.point :as gpt]
- [app.common.geom.rect :as grc]
[app.common.geom.shapes :as gsh]
[app.common.pprint :as pp]
[app.common.schema :as sm]
@@ -38,20 +37,12 @@
fail-on-spec?]
:or {add-container? false
fail-on-spec? false}}]
- (let [components-v2 (dm/get-in file [:data :options :components-v2])
- component-id (:current-component-id file)
- change (cond-> change
- (and add-container? (some? component-id) (not components-v2))
- (-> (assoc :component-id component-id)
- (cond-> (some? (:current-frame-id file))
- (assoc :frame-id (:current-frame-id file))))
-
- (and add-container? (or (nil? component-id) components-v2))
+ (let [change (cond-> change
+ add-container?
(assoc :page-id (:current-page-id file)
:frame-id (:current-frame-id file)))
- valid? (or (and components-v2
- (nil? (:component-id change))
+ valid? (or (and (nil? (:component-id change))
(nil? (:page-id change)))
(ch/valid-change? change))]
@@ -66,11 +57,11 @@
(cond-> file
(and valid? (or (not add-container?) (some? (:component-id change)) (some? (:page-id change))))
- (-> (update :changes conjv change) ;; In components-v2 we do not add shapes
- (update :data ch/process-changes [change] false)) ;; inside a component
+ (-> (update :changes conjv change)
+ (update :data ch/process-changes [change] false))
(not valid?)
- (update :errors conjv change)))));)
+ (update :errors conjv change)))))
(defn- lookup-objects
([file]
@@ -185,12 +176,10 @@
(update :parent-stack conjv (:id obj)))))
(defn close-artboard [file]
- (let [components-v2 (dm/get-in file [:data :options :components-v2])
- parent-id (-> file :parent-stack peek)
+ (let [parent-id (-> file :parent-stack peek)
parent (lookup-shape file parent-id)
current-frame-id (or (:frame-id parent)
- (when (or (nil? (:current-component-id file)) components-v2)
- root-id))]
+ root-id)]
(-> file
(assoc :current-frame-id current-frame-id)
(update :parent-stack pop))))
@@ -283,14 +272,14 @@
:else
(let [objects (lookup-objects file)
- bool-content (gsh/calc-bool-content bool objects)
- bool' (gsh/update-bool-selrect bool children objects)]
+ content (gsh/calc-bool-content bool objects)
+ bool' (gsh/update-bool-selrect bool children objects)]
(commit-change
file
{:type :mod-obj
:id bool-id
:operations
- [{:type :set :attr :bool-content :val bool-content :ignore-touched true}
+ [{:type :set :attr :content :val content :ignore-touched true}
{:type :set :attr :selrect :val (:selrect bool') :ignore-touched true}
{:type :set :attr :points :val (:points bool') :ignore-touched true}
{:type :set :attr :x :val (-> bool' :selrect :x) :ignore-touched true}
@@ -514,58 +503,29 @@
(defn start-component
([file data]
- (let [components-v2 (dm/get-in file [:data :options :components-v2])
- root-type (if components-v2 :frame :group)]
- (start-component file data root-type)))
+ (start-component file data :frame))
([file data root-type]
- ;; FIXME: data probably can be a shape instance, then we can use gsh/shape->rect
- (let [components-v2 (dm/get-in file [:data :options :components-v2])
- selrect (or (grc/make-rect (:x data) (:y data) (:width data) (:height data))
- grc/empty-rect)
- name (:name data)
+ (let [name (:name data)
path (:path data)
main-instance-id (:main-instance-id data)
main-instance-page (:main-instance-page data)
- ;; In components v1 we must create the root shape and set it inside
- ;; the :objects attribute of the component. When in components-v2,
- ;; this will be ignored as the root shape has already been created
- ;; in its page, by the normal page import.
- attrs (-> data
- (assoc :type root-type)
- (assoc :x (:x selrect))
- (assoc :y (:y selrect))
- (assoc :width (:width selrect))
- (assoc :height (:height selrect))
- (assoc :selrect selrect)
- (dissoc :path)
- (dissoc :main-instance-id)
- (dissoc :main-instance-page)
- (dissoc :main-instance-x)
- (dissoc :main-instance-y))
-
- obj (-> (cts/setup-shape attrs)
- (check-name file root-type)
- ;; Components need to have nil values for frame and parent
- (assoc :frame-id nil)
- (assoc :parent-id nil))]
+ obj-id (or (:id data) (uuid/next))]
(-> file
(commit-change
- (cond-> {:type :add-component
- :id (:id obj)
- :name name
- :path path
- :main-instance-id main-instance-id
- :main-instance-page main-instance-page}
- (not components-v2)
- (assoc :shapes [obj])))
+ {:type :add-component
+ :id obj-id
+ :name name
+ :path path
+ :main-instance-id main-instance-id
+ :main-instance-page main-instance-page})
- (assoc :last-id (:id obj))
- (assoc :parent-stack [(:id obj)])
- (assoc :current-component-id (:id obj))
- (assoc :current-frame-id (if (= (:type obj) :frame) (:id obj) uuid/zero))))))
+ (assoc :last-id obj-id)
+ (assoc :parent-stack [obj-id])
+ (assoc :current-component-id obj-id)
+ (assoc :current-frame-id (if (= root-type :frame) obj-id uuid/zero))))))
(defn start-deleted-component
[file data]
@@ -600,8 +560,7 @@
file
(cond
- ;; In components-v2 components haven't any shape inside them.
- (and component-data (:main-instance-id component-data))
+ component-data
(update file :data
(fn [data]
(ctkl/update-component data component-id dissoc :objects)))
@@ -677,17 +636,12 @@
page (ctpl/get-page (:data file) page-id)
component (ctkl/get-component (:data file) component-id)
- components-v2 (dm/get-in file [:options :components-v2])
-
[shape shapes]
(ctn/make-component-instance page
component
(:id file)
(gpt/point x
- y)
- components-v2
- #_{:main-instance true
- :force-id main-instance-id})]
+ y))]
(as-> file $
(reduce #(commit-change %1
diff --git a/common/src/app/common/files/changes.cljc b/common/src/app/common/files/changes.cljc
index 78845e8f4f..023491a9ca 100644
--- a/common/src/app/common/files/changes.cljc
+++ b/common/src/app/common/files/changes.cljc
@@ -26,11 +26,10 @@
[app.common.types.pages-list :as ctpl]
[app.common.types.shape :as cts]
[app.common.types.shape-tree :as ctst]
- [app.common.types.token :as cto]
- [app.common.types.token-theme :as ctot]
[app.common.types.tokens-lib :as ctob]
[app.common.types.typographies-list :as ctyl]
[app.common.types.typography :as ctt]
+ [app.common.types.variant :as ctv]
[app.common.uuid :as uuid]
[clojure.set :as set]))
@@ -336,13 +335,17 @@
[:type [:= :mod-component]]
[:id ::sm/uuid]
[:shapes {:optional true} [:vector {:gen/max 3} :any]]
- [:name {:optional true} :string]]]
+ [:name {:optional true} :string]
+ [:variant-id {:optional true} ::sm/uuid]
+ [:variant-properties {:optional true} [:vector ::ctv/variant-property]]]]
[:del-component
[:map {:title "DelComponentChange"}
[:type [:= :del-component]]
[:id ::sm/uuid]
- [:main-instance {:optional true} :any]
+ ;; when it is an undo of a cut-paste, we need to undo the movement
+ ;; of the shapes so we need to move them delta
+ [:delta {:optional true} ::gpt/point]
[:skip-undelete? {:optional true} :boolean]]]
[:restore-component
@@ -403,7 +406,7 @@
[:type [:= :set-token-theme]]
[:theme-name :string]
[:group :string]
- [:theme [:maybe ::ctot/token-theme]]]]
+ [:theme [:maybe ctob/schema:token-theme-attrs]]]]
[:set-tokens-lib
[:map {:title "SetTokensLib"}
@@ -415,14 +418,14 @@
[:type [:= :set-token-set]]
[:set-name :string]
[:group? :boolean]
- [:token-set [:maybe ::ctot/token-set]]]]
+ [:token-set [:maybe ctob/schema:token-set-attrs]]]]
[:set-token
[:map {:title "SetTokenChange"}
[:type [:= :set-token]]
[:set-name :string]
[:token-name :string]
- [:token [:maybe ::cto/token]]]]]])
+ [:token [:maybe ctob/schema:token-attrs]]]]]])
(def schema:changes
[:sequential {:gen/max 5 :gen/min 1} schema:change])
@@ -956,8 +959,8 @@
(ctkl/mod-component data params))
(defmethod process-change :del-component
- [data {:keys [id skip-undelete? main-instance]}]
- (ctf/delete-component data id skip-undelete? main-instance))
+ [data {:keys [id skip-undelete? delta]}]
+ (ctf/delete-component data id skip-undelete? delta))
(defmethod process-change :restore-component
[data {:keys [id page-id]}]
diff --git a/common/src/app/common/files/changes_builder.cljc b/common/src/app/common/files/changes_builder.cljc
index aa360d2926..692bde840c 100644
--- a/common/src/app/common/files/changes_builder.cljc
+++ b/common/src/app/common/files/changes_builder.cljc
@@ -921,11 +921,11 @@
(apply-changes-local))))
(defn add-component
- ([changes id path name new-shapes updated-shapes main-instance-id main-instance-page]
- (add-component changes id path name new-shapes updated-shapes main-instance-id main-instance-page nil nil nil))
- ([changes id path name new-shapes updated-shapes main-instance-id main-instance-page annotation]
- (add-component changes id path name new-shapes updated-shapes main-instance-id main-instance-page annotation nil nil))
- ([changes id path name new-shapes updated-shapes main-instance-id main-instance-page annotation variant-id variant-properties & {:keys [apply-changes-local-library?]}]
+ ([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))
+ ([changes id path name updated-shapes main-instance-id main-instance-page annotation]
+ (add-component changes id path name updated-shapes main-instance-id main-instance-page annotation nil nil))
+ ([changes id path name updated-shapes main-instance-id main-instance-page annotation variant-id variant-properties & {:keys [apply-changes-local-library?]}]
(assert-page-id! changes)
(assert-objects! changes)
(let [page-id (::page-id (meta changes))
@@ -964,11 +964,11 @@
:name name
:main-instance-id main-instance-id
:main-instance-page main-instance-page
- :annotation annotation
- :variant-id variant-id
- :variant-properties variant-properties}
- (some? new-shapes) ;; this will be null in components-v2
- (assoc :shapes (vec new-shapes))))
+ :annotation annotation}
+ (some? variant-id)
+ (assoc :variant-id variant-id)
+ (seq variant-properties)
+ (assoc :variant-properties variant-properties)))
(into (map mk-change) updated-shapes))))
(update :undo-changes
(fn [undo-changes]
@@ -991,27 +991,39 @@
new-component (update-fn prev-component)]
(if prev-component
(-> changes
- (update :redo-changes conj {:type :mod-component
- :id id
- :name (:name new-component)
- :path (:path new-component)
- :main-instance-id (:main-instance-id new-component)
- :main-instance-page (:main-instance-page new-component)
- :annotation (:annotation new-component)
- :variant-id (:variant-id new-component)
- :variant-properties (:variant-properties new-component)
- :objects (:objects new-component) ;; this won't exist in components-v2 (except for deleted components)
- :modified-at (:modified-at new-component)})
- (update :undo-changes conj {:type :mod-component
- :id id
- :name (:name prev-component)
- :path (:path prev-component)
- :main-instance-id (:main-instance-id prev-component)
- :main-instance-page (:main-instance-page prev-component)
- :annotation (:annotation prev-component)
- :variant-id (:variant-id prev-component)
- :variant-properties (:variant-properties prev-component)
- :objects (:objects prev-component)})
+ (update :redo-changes conj (cond-> {:type :mod-component
+ :id id
+ :name (:name new-component)
+ :path (:path new-component)
+ :main-instance-id (:main-instance-id new-component)
+ :main-instance-page (:main-instance-page new-component)
+ :annotation (:annotation new-component)
+ :objects (:objects new-component) ;; for deleted components
+ :modified-at (:modified-at new-component)}
+ (some? (:variant-id new-component))
+ (assoc :variant-id (:variant-id new-component))
+ (nil? (:variant-id new-component))
+ (dissoc :variant-id)
+ (seq (:variant-properties new-component))
+ (assoc :variant-properties (:variant-properties new-component))
+ (not (seq (:variant-properties new-component)))
+ (dissoc :variant-properties)))
+ (update :undo-changes conj (cond-> {:type :mod-component
+ :id id
+ :name (:name prev-component)
+ :path (:path prev-component)
+ :main-instance-id (:main-instance-id prev-component)
+ :main-instance-page (:main-instance-page prev-component)
+ :annotation (:annotation prev-component)
+ :objects (:objects prev-component)}
+ (some? (:variant-id prev-component))
+ (assoc :variant-id (:variant-id prev-component))
+ (nil? (:variant-id prev-component))
+ (dissoc :variant-id)
+ (seq (:variant-properties prev-component))
+ (assoc :variant-properties (:variant-properties prev-component))
+ (not (seq (:variant-properties prev-component)))
+ (dissoc :variant-properties)))
(cond-> apply-changes-local-library?
(apply-changes-local {:apply-to-library? true})))
changes)))
@@ -1027,7 +1039,7 @@
:page-id page-id})))
(defn restore-component
- [changes id page-id main-instance]
+ [changes id page-id delta]
(assert-library! changes)
(-> changes
(update :redo-changes conj {:type :restore-component
@@ -1035,7 +1047,34 @@
:page-id page-id})
(update :undo-changes conj {:type :del-component
:id id
- :main-instance main-instance})))
+ :delta delta})))
+
+(defn reorder-children
+ [changes id children]
+ (assert-page-id! changes)
+ (assert-objects! changes)
+
+ (let [page-id (::page-id (meta changes))
+ objects (lookup-objects changes)
+ shape (get objects id)
+ old-children (:shapes shape)
+
+ redo-change
+ {:type :reorder-children
+ :parent-id (:id shape)
+ :page-id page-id
+ :shapes children}
+
+ undo-change
+ {:type :reorder-children
+ :parent-id (:id shape)
+ :page-id page-id
+ :shapes old-children}]
+
+ (-> changes
+ (update :redo-changes conj redo-change)
+ (update :undo-changes conj undo-change)
+ (apply-changes-local))))
(defn reorder-grid-children
[changes ids]
@@ -1083,3 +1122,11 @@
(defn get-objects
[changes]
(dm/get-in (::file-data (meta changes)) [:pages-index uuid/zero :objects]))
+
+(defn get-page
+ [changes]
+ (::page (meta changes)))
+
+(defn get-page-id
+ [changes]
+ (::page-id (meta changes)))
diff --git a/common/src/app/common/files/helpers.cljc b/common/src/app/common/files/helpers.cljc
index 3795812c34..bb0fb744f7 100644
--- a/common/src/app/common/files/helpers.cljc
+++ b/common/src/app/common/files/helpers.cljc
@@ -427,11 +427,6 @@
(map #(str/concat base-name (suffix-fn %))
(iterate inc 1))))
-(defn ^:private get-suffix
- "Default suffix impelemtation"
- [copy-count]
- (str/concat " " copy-count))
-
(defn generate-unique-name
"Generates a unique name by selecting the first available name from a generated sequence.
The sequence consists of `base-name` and its variants, avoiding conflicts with `existing-names`.
@@ -445,8 +440,7 @@
Returns:
- A unique name not present in `existing-names`."
- [base-name existing-names & {:keys [suffix-fn immediate-suffix?]
- :or {suffix-fn get-suffix}}]
+ [base-name existing-names & {:keys [suffix-fn immediate-suffix? suffix]}]
(dm/assert!
"expected a set of strings"
(coll? existing-names))
@@ -454,9 +448,21 @@
(dm/assert!
"expected a string for `basename`."
(string? base-name))
- (let [existing-name-set (cond-> (set existing-names)
+ (let [suffix-fn (if suffix-fn
+ suffix-fn
+ (if suffix
+ (fn [copy-count]
+ (str/concat "-"
+ suffix
+ (when (> copy-count 1)
+ (str "-" copy-count))))
+ (fn [copy-count]
+ (str/concat " " copy-count))))
+
+ existing-name-set (cond-> (set existing-names)
immediate-suffix? (conj base-name))
names (name-seq base-name suffix-fn)]
+
(->> names
(remove #(contains? existing-name-set %))
first)))
diff --git a/common/src/app/common/files/migrations.cljc b/common/src/app/common/files/migrations.cljc
index d307756f05..7bd2342ae7 100644
--- a/common/src/app/common/files/migrations.cljc
+++ b/common/src/app/common/files/migrations.cljc
@@ -1264,6 +1264,26 @@
(update :pages-index d/update-vals update-container)
(d/update-when :components d/update-vals update-container))))
+(defmethod migrate-data "0002-normalize-bool-content"
+ [data _]
+ (letfn [(update-object [object]
+ ;; NOTE: we still preserve the previous value for possible
+ ;; rollback, we still need to perform an other migration
+ ;; for properly delete the bool-content prop from shapes
+ ;; once the know the migration was OK
+ (if (cfh/bool-shape? object)
+ (if-let [content (:bool-content object)]
+ (assoc object :content content)
+ object)
+ (dissoc object :bool-content :bool-type)))
+
+ (update-container [container]
+ (d/update-when container :objects update-vals update-object))]
+
+ (-> data
+ (update :pages-index update-vals update-container)
+ (update :components update-vals update-container))))
+
(defmethod migrate-data "0003-fix-root-shape"
[data _]
(letfn [(update-object [shape]
@@ -1341,5 +1361,6 @@
"legacy-66"
"legacy-67"
"0001-remove-tokens-from-groups"
+ "0002-normalize-bool-content"
"0002-clean-shape-interactions"
"0003-fix-root-shape"]))
diff --git a/common/src/app/common/files/repair.cljc b/common/src/app/common/files/repair.cljc
index 66fd58c713..bf51851003 100644
--- a/common/src/app/common/files/repair.cljc
+++ b/common/src/app/common/files/repair.cljc
@@ -572,6 +572,51 @@
(pcb/with-file-data file-data)
(pcb/update-shapes [(:id shape)] repair-shape))))
+(defmethod repair-error :not-a-variant
+ [_ error file _]
+ (log/error :hint "Variant error code, we don't want to auto repair it for now" :code (:code error))
+ file)
+
+(defmethod repair-error :invalid-variant-id
+ [_ error file _]
+ (log/error :hint "Variant error code, we don't want to auto repair it for now" :code (:code error))
+ file)
+
+(defmethod repair-error :invalid-variant-properties
+ [_ error file _]
+ (log/error :hint "Variant error code, we don't want to auto repair it for now" :code (:code error))
+ file)
+
+(defmethod repair-error :variant-not-main
+ [_ error file _]
+ (log/error :hint "Variant error code, we don't want to auto repair it for now" :code (:code error))
+ file)
+
+(defmethod repair-error :parent-not-variant
+ [_ error file _]
+ (log/error :hint "Variant error code, we don't want to auto repair it for now" :code (:code error))
+ file)
+
+(defmethod repair-error :variant-bad-name
+ [_ error file _]
+ (log/error :hint "Variant error code, we don't want to auto repair it for now" :code (:code error))
+ file)
+
+(defmethod repair-error :variant-no-properties
+ [_ error file _]
+ (log/error :hint "Variant error code, we don't want to auto repair it for now" :code (:code error))
+ file)
+
+(defmethod repair-error :variant-bad-variant-name
+ [_ error file _]
+ (log/error :hint "Variant error code, we don't want to auto repair it for now" :code (:code error))
+ file)
+
+(defmethod repair-error :variant-component-bad-name
+ [_ error file _]
+ (log/error :hint "Variant error code, we don't want to auto repair it for now" :code (:code error))
+ file)
+
(defmethod repair-error :default
[_ error file _]
(log/error :hint "Unknown error code, don't know how to repair" :code (:code error))
diff --git a/common/src/app/common/files/shapes_helpers.cljc b/common/src/app/common/files/shapes_helpers.cljc
index 772b71e637..e4f265c4c9 100644
--- a/common/src/app/common/files/shapes_helpers.cljc
+++ b/common/src/app/common/files/shapes_helpers.cljc
@@ -62,6 +62,10 @@
changes id parent-id objects selected index frame-name without-fill? nil))
([changes id parent-id objects selected index frame-name without-fill? target-cell-id]
+ (prepare-create-artboard-from-selection
+ changes id parent-id objects selected index frame-name without-fill? target-cell-id nil))
+
+ ([changes id parent-id objects selected index frame-name without-fill? target-cell-id delta]
(when-let [selected-objs (->> selected
(map (d/getf objects))
(not-empty))]
@@ -99,10 +103,11 @@
:id))
target-cell-id)
+
attrs
{:type :frame
- :x (:x srect)
- :y (:y srect)
+ :x (cond-> (:x srect) delta (+ (:x delta)))
+ :y (cond-> (:y srect) delta (+ (:y delta)))
:width (:width srect)
:height (:height srect)}
diff --git a/frontend/src/app/main/ui/workspace/tokens/token.cljs b/common/src/app/common/files/tokens.cljc
similarity index 90%
rename from frontend/src/app/main/ui/workspace/tokens/token.cljs
rename to common/src/app/common/files/tokens.cljc
index 6056d0966b..3a0a632a7f 100644
--- a/frontend/src/app/main/ui/workspace/tokens/token.cljs
+++ b/common/src/app/common/files/tokens.cljc
@@ -1,8 +1,13 @@
-(ns app.main.ui.workspace.tokens.token
+;; 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.files.tokens
(:require
[app.common.data :as d]
[app.common.data.macros :as dm]
- [app.main.ui.workspace.tokens.tinycolor :as tinycolor]
[clojure.set :as set]
[cuerdas.core :as str]))
@@ -128,18 +133,6 @@
(defn color-token? [token]
(= (:type token) :color))
-
;; FIXME: this should be precalculated ?
(defn is-reference? [token]
(str/includes? (:value token) "{"))
-
-(defn color-bullet-color [token-color-value]
- (when-let [tc (tinycolor/valid-color token-color-value)]
- (if (tinycolor/alpha tc)
- {:color (tinycolor/->hex-string tc)
- :opacity (tinycolor/alpha tc)}
- (tinycolor/->hex-string tc))))
-
-(defn resolved-token-bullet-color [{:keys [resolved-value] :as token}]
- (when (and resolved-value (color-token? token))
- (color-bullet-color resolved-value)))
diff --git a/common/src/app/common/files/validate.cljc b/common/src/app/common/files/validate.cljc
index 8c3746c310..2659f65336 100644
--- a/common/src/app/common/files/validate.cljc
+++ b/common/src/app/common/files/validate.cljc
@@ -10,12 +10,15 @@
[app.common.data.macros :as dm]
[app.common.exceptions :as ex]
[app.common.files.helpers :as cfh]
+ [app.common.files.variant :as cfv]
[app.common.schema :as sm]
[app.common.types.component :as ctk]
+ [app.common.types.components-list :as ctkl]
[app.common.types.container :as ctn]
[app.common.types.file :as ctf]
[app.common.types.pages-list :as ctpl]
[app.common.types.shape-tree :as ctst]
+ [app.common.types.variant :as ctv]
[app.common.uuid :as uuid]
[cuerdas.core :as str]))
@@ -56,7 +59,17 @@
:instance-head-not-frame
:misplaced-slot
:missing-slot
- :shape-ref-cycle})
+ :shape-ref-cycle
+ :not-a-variant
+ :invalid-variant-id
+ :invalid-variant-properties
+ :variant-not-main
+ :parent-not-variant
+ :variant-bad-name
+ :variant-bad-variant-name
+ :variant-component-bad-name
+ :variant-no-properties
+ :variant-component-bad-id})
(def ^:private schema:error
[:map {:title "ValidationError"}
@@ -401,6 +414,68 @@
(check-empty-swap-slot shape file page)
(run! #(check-shape % file page libraries :context :not-component) (:shapes shape)))
+(defn- check-variant-container
+ "Shape is a variant container, so:
+ -all its children should be variants with variant-id equals to the shape-id
+ -all the components should have the same properties
+ "
+ [shape file page]
+ (let [shape-id (:id shape)
+ shapes (:shapes shape)
+ children (map #(ctst/get-shape page %) shapes)
+ prop-names (cfv/extract-properties-names (first children) (:data file))]
+ (doseq [child children]
+ (if (not (ctk/is-variant? child))
+ (report-error :not-a-variant
+ (str/ffmt "Shape % should be a variant" (:id child))
+ child file page)
+ (do
+ (when (not= (:variant-id child) shape-id)
+ (report-error :invalid-variant-id
+ (str/ffmt "Variant % has invalid variant-id %" (:id child) (:variant-id child))
+ child file page))
+ (when (not= prop-names (cfv/extract-properties-names child (:data file)))
+ (report-error :invalid-variant-properties
+ (str/ffmt "Variant % has invalid properties %" (:id child) (vec prop-names))
+ child file page)))))))
+
+(defn- check-variant
+ "Shape is a variant, so
+ -it should be a main component
+ -its parent should be a variant-container
+ -its variant-name is derived from the properties
+ -its name should be tha same as its parent's
+ "
+ [shape file page]
+ (let [parent (ctst/get-shape page (:parent-id shape))
+ component (ctkl/get-component (:data file) (:component-id shape) true)
+ name (ctv/properties-to-name (:variant-properties component))]
+ (when-not (ctk/main-instance? shape)
+ (report-error :variant-not-main
+ (str/ffmt "Variant % is not a main instance" (:id shape))
+ shape file page))
+ (when-not (ctk/is-variant-container? parent)
+ (report-error :parent-not-variant
+ (str/ffmt "Variant % has an invalid parent" (:id shape))
+ shape file page))
+
+ (when-not (= name (:variant-name shape))
+ (report-error :variant-bad-variant-name
+ (str/ffmt "Variant % has an invalid variant-name" (:id shape))
+ shape file page))
+ (when-not (= (:name parent) (:name shape))
+ (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)))
+ (report-error :variant-component-bad-name
+ (str/ffmt "Component % has an invalid name" (:id shape))
+ shape file page))
+ (when-not (= (:variant-id component) (:variant-id shape))
+ (report-error :variant-component-bad-id
+ (str/ffmt "Variant % has adifferent variant-id than its component" (:id shape))
+ shape file page))))
+
(defn- check-shape
"Validate referential integrity and semantic coherence of
a shape and all its children. Report all errors found.
@@ -421,6 +496,12 @@
(check-parent-children shape file page)
(check-frame shape file page)
+ (when (ctk/is-variant-container? shape)
+ (check-variant-container shape file page))
+
+ (when (ctk/is-variant? shape)
+ (check-variant shape file page))
+
(if (ctk/instance-head? shape)
(if (not= :frame (:type shape))
(report-error :instance-head-not-frame
@@ -496,6 +577,24 @@
"This deleted component has shapes with shape-ref pointing to self"
component file nil :cycles-ids cycles-ids))))
+(defn- check-variant-component
+ "Component is a variant, so:
+ -Its main should be a variant
+ -It should have at least one variant property"
+ [component file]
+ (let [component-page (ctf/get-component-page (:data file) component)
+ main-component (if (:deleted component)
+ (dm/get-in component [:objects (:main-instance-id component)])
+ (ctst/get-shape component-page (:main-instance-id component)))]
+ (when-not (ctk/is-variant? main-component)
+ (report-error :not-a-variant
+ (str/ffmt "Shape % should be a variant" (:id main-component))
+ main-component file component-page))
+ (when (< (count (:variant-properties component)) 1)
+ (report-error :variant-no-properties
+ (str/ffmt "Component variant % should have properties" (:id main-component))
+ main-component file nil))))
+
(defn- check-component
"Validate semantic coherence of a component. Report all errors found."
[component file]
@@ -505,7 +604,10 @@
component file nil))
(when (:deleted component)
(check-component-duplicate-swap-slot component file)
- (check-ref-cycles component file)))
+ (check-ref-cycles component file))
+
+ (when (ctk/is-variant? component)
+ (check-variant-component component file)))
(defn- get-orphan-shapes
[{:keys [objects] :as page}]
diff --git a/common/src/app/common/files/variant.cljc b/common/src/app/common/files/variant.cljc
new file mode 100644
index 0000000000..e901fd19ef
--- /dev/null
+++ b/common/src/app/common/files/variant.cljc
@@ -0,0 +1,84 @@
+;; 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.files.variant
+ (:require
+ [app.common.data.macros :as dm]
+ [app.common.types.component :as ctc]
+ [app.common.types.components-list :as ctcl]
+ [app.common.types.variant :as ctv]
+ [cuerdas.core :as str]))
+
+
+(defn find-variant-components
+ "Find a list of the components thet belongs to this variant-id"
+ [data objects variant-id]
+ ;; We can't simply filter components, because we need to maintain the order
+ (->> (dm/get-in objects [variant-id :shapes])
+ (map #(dm/get-in objects [% :component-id]))
+ (map #(ctcl/get-component data % true))
+ reverse))
+
+(defn- dashes-to-end
+ [property-values]
+ (let [dashes (if (some #(= % "--") property-values) ["--"] [])]
+ (concat (remove #(= % "--") property-values) dashes)))
+
+
+(defn extract-properties-names
+ [shape data]
+ (->> shape
+ (#(ctcl/get-component data (:component-id %) true))
+ :variant-properties
+ (map :name)))
+
+
+(defn extract-properties-values
+ [data objects variant-id]
+ (->> (find-variant-components data objects variant-id)
+ (mapcat :variant-properties)
+ (group-by :name)
+ (map (fn [[k v]]
+ {:name k
+ :value (->> v
+ (map #(if (str/empty? (:value %)) "--" (:value %)))
+ distinct
+ dashes-to-end)}))))
+
+(defn get-variant-mains
+ [component data]
+ (assert (ctv/valid-variant-component? component) "expected valid component variant")
+ (when-let [variant-id (:variant-id component)]
+ (let [page-id (:main-instance-page component)
+ objects (-> (dm/get-in data [:pages-index page-id])
+ (get :objects))]
+ (dm/get-in objects [variant-id :shapes]))))
+
+
+(defn is-secondary-variant?
+ [component data]
+ (let [shapes (get-variant-mains component data)]
+ (and (seq shapes)
+ (not= (:main-instance-id component) (last shapes)))))
+
+(defn get-primary-variant
+ [data component]
+ (let [page-id (:main-instance-page component)
+ objects (-> (dm/get-in data [:pages-index page-id])
+ (get :objects))
+ variant-id (:variant-id component)]
+ (->> (dm/get-in objects [variant-id :shapes])
+ peek
+ (get objects))))
+
+(defn get-primary-component
+ [data component-id]
+ (when-let [component (ctcl/get-component data component-id)]
+ (if (ctc/is-variant? component)
+ (->> component
+ (get-primary-variant data)
+ :component-id
+ (ctcl/get-component data))
+ component)))
diff --git a/common/src/app/common/flags.cljc b/common/src/app/common/flags.cljc
index dbc39e5041..371d889230 100644
--- a/common/src/app/common/flags.cljc
+++ b/common/src/app/common/flags.cljc
@@ -79,7 +79,7 @@
:file-schema-validation
;; Reports the schema validation errors internally.
:soft-file-schema-validation
- ;; Activates the referential integrity validation during update file; related to components-v2.
+ ;; Activates the referential integrity validation during update file.
:file-validation
;; Reports the referential integrity validation errors internally.
:soft-file-validation
@@ -125,6 +125,7 @@
:export-file-v3
:render-wasm-dpr
:hide-release-modal
+ :subscriptions
:subscriptions-old})
(def all-flags
diff --git a/common/src/app/common/geom/shapes/grid_layout/layout_data.cljc b/common/src/app/common/geom/shapes/grid_layout/layout_data.cljc
index d994cae10c..424dcbb34f 100644
--- a/common/src/app/common/geom/shapes/grid_layout/layout_data.cljc
+++ b/common/src/app/common/geom/shapes/grid_layout/layout_data.cljc
@@ -39,7 +39,7 @@
;;
;; 5. If any track still has an infinite growth limit set its growth limit to its base size.
-;; - Distribute extra space accross spaned tracks
+;; - Distribute extra space accross spaned tracks
;; - Maximize tracks
;;
;; - Expand flexible tracks
@@ -198,7 +198,7 @@
track-list))
-(defn add-auto-size
+(defn stretch-tracks
[track-list add-size]
(->> track-list
(mapv (fn [{:keys [type size max-size] :as track}]
@@ -357,7 +357,8 @@
to-idx (+ (dec (get cell prop)) (get cell prop-span))
indexed-tracks (subvec (d/enumerate track-list) from-idx to-idx)
- to-allocate (size-to-allocate type parent (get children-map shape-id) cell bounds objects)
+ to-allocate
+ (size-to-allocate type parent (get children-map shape-id) cell bounds objects)
;; Remove the size and the tracks that are not allocated
[to-allocate total-frs indexed-tracks]
@@ -493,11 +494,11 @@
column-tracks (cond-> column-tracks
(= :stretch (:layout-justify-content parent))
- (add-auto-size column-add-auto))
+ (stretch-tracks column-add-auto))
row-tracks (cond-> row-tracks
(= :stretch (:layout-align-content parent))
- (add-auto-size row-add-auto))
+ (stretch-tracks row-add-auto))
column-total-size (tracks-total-size column-tracks)
row-total-size (tracks-total-size row-tracks)
diff --git a/common/src/app/common/geom/shapes/path.cljc b/common/src/app/common/geom/shapes/path.cljc
index c9863d9f3d..a7e56f3d2a 100644
--- a/common/src/app/common/geom/shapes/path.cljc
+++ b/common/src/app/common/geom/shapes/path.cljc
@@ -347,7 +347,11 @@
move-p nil
content (seq content)]
(if content
- (let [command (first content)
+ (let [last-p (last content)
+ content (if (= :move-to (:command last-p))
+ (butlast content)
+ content)
+ command (first content)
to-p (command->point command)
[from-p move-p command-pts]
diff --git a/common/src/app/common/geom/shapes/transforms.cljc b/common/src/app/common/geom/shapes/transforms.cljc
index af52ac238e..50a41e06f3 100644
--- a/common/src/app/common/geom/shapes/transforms.cljc
+++ b/common/src/app/common/geom/shapes/transforms.cljc
@@ -95,8 +95,8 @@
(d/update-when :x d/safe+ dx)
(d/update-when :y d/safe+ dy)
(d/update-when :position-data move-position-data mvec)
- (cond-> (= :bool type) (update :bool-content gpa/move-content mvec))
- (cond-> (= :path type) (update :content gpa/move-content mvec)))))
+ (cond-> (or (= :bool type) (= :path type))
+ (update :content gpa/move-content mvec)))))
;; --- Absolute Movement
@@ -317,13 +317,10 @@
points (gco/transform-points (dm/get-prop shape :points) transform-mtx)
selrect (gco/transform-selrect (dm/get-prop shape :selrect) transform-mtx)
- shape (if (= type :bool)
- (update shape :bool-content gpa/transform-content transform-mtx)
- shape)
shape (if (= type :text)
(update shape :position-data transform-position-data transform-mtx)
shape)
- shape (if (= type :path)
+ shape (if (or (= type :path) (= type :bool))
(update shape :content gpa/transform-content transform-mtx)
(assoc shape
:x (dm/get-prop selrect :x)
@@ -355,11 +352,8 @@
rotation (mod (+ (d/nilv (:rotation shape) 0)
(d/nilv (dm/get-in shape [:modifiers :rotation]) 0))
360)
- shape (if (= type :bool)
- (update shape :bool-content gpa/transform-content transform-mtx)
- shape)
- shape (if (= type :path)
+ shape (if (or (= type :path) (= type :bool))
(update shape :content gpa/transform-content transform-mtx)
(assoc shape
:x (dm/get-prop selrect :x)
@@ -454,9 +448,14 @@
"Calculates the selrect+points for the boolean shape"
[shape children objects]
- (let [bool-content (gshb/calc-bool-content shape objects)
- shape (assoc shape :bool-content bool-content)
- [points selrect] (gpa/content->points+selrect shape bool-content)]
+ (let [content
+ (gshb/calc-bool-content shape objects)
+
+ shape
+ (assoc shape :content content)
+
+ [points selrect]
+ (gpa/content->points+selrect shape content)]
(if (and (some? selrect) (d/not-empty? points))
(-> shape
diff --git a/common/src/app/common/logic/libraries.cljc b/common/src/app/common/logic/libraries.cljc
index 9413e97964..631db173a1 100644
--- a/common/src/app/common/logic/libraries.cljc
+++ b/common/src/app/common/logic/libraries.cljc
@@ -15,6 +15,7 @@
[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.spec :as us]
[app.common.text :as txt]
[app.common.types.color :as ctc]
@@ -29,6 +30,7 @@
[app.common.types.shape.layout :as ctl]
[app.common.types.token :as cto]
[app.common.types.typography :as cty]
+ [app.common.types.variant :as ctv]
[app.common.uuid :as uuid]
[clojure.set :as set]
[clojure.spec.alpha :as s]))
@@ -105,113 +107,99 @@
(defn- duplicate-component
"Clone the root shape of the component and all children. Generate new
ids from all of them."
- [component new-component-id library-data force-id]
- (let [components-v2 (dm/get-in library-data [:options :components-v2])]
- (if components-v2
- (let [main-instance-page (ctf/get-component-page library-data component)
- main-instance-shape (ctf/get-component-root library-data component)
- delta (gpt/point (+ (:width main-instance-shape) 50) 0)
+ [component new-component-id library-data force-id delta variant-id]
+ (let [main-instance-page (ctf/get-component-page library-data component)
+ main-instance-shape (ctf/get-component-root library-data component)
+ delta (or delta (gpt/point (+ (:width main-instance-shape) 50) 0))
- ids-map (volatile! {})
- inverted-ids-map (volatile! {})
- nested-main-heads (volatile! #{})
+ ids-map (volatile! {})
+ inverted-ids-map (volatile! {})
+ nested-main-heads (volatile! #{})
- update-original-shape
- (fn [original-shape new-shape]
+ update-original-shape
+ (fn [original-shape new-shape]
; Save some ids for later
- (vswap! ids-map assoc (:id original-shape) (:id new-shape))
- (vswap! inverted-ids-map assoc (:id new-shape) (:id original-shape))
- (when (and (ctk/main-instance? original-shape)
- (not= (:component-id original-shape) (:id component)))
- (vswap! nested-main-heads conj (:id original-shape)))
- original-shape)
+ (vswap! ids-map assoc (:id original-shape) (:id new-shape))
+ (vswap! inverted-ids-map assoc (:id new-shape) (:id original-shape))
+ (when (and (ctk/main-instance? original-shape)
+ (not= (:component-id original-shape) (:id component)))
+ (vswap! nested-main-heads conj (:id original-shape)))
+ original-shape)
- update-new-shape
- (fn [new-shape _]
- (cond-> new-shape
- ; Link the new main to the new component
- (= (:component-id new-shape) (:id component))
- (assoc :component-id new-component-id)
+ update-new-shape
+ (fn [new-shape _]
+ (cond-> new-shape
+ ; Link the new main to the new component
+ (= (:component-id new-shape) (:id component))
+ (assoc :component-id new-component-id)
- :always
- (gsh/move delta)))
+ ; If it is the instance root, add it the variant-id
+ (and (ctk/instance-root? new-shape) (some? variant-id))
+ (assoc :variant-id variant-id)
- [new-instance-shape new-instance-shapes _]
- (ctst/clone-shape main-instance-shape
- (:parent-id main-instance-shape)
- (:objects main-instance-page)
- :update-new-shape update-new-shape
- :update-original-shape update-original-shape
- :force-id force-id)
+ :always
+ (gsh/move delta)))
- remap-frame
- (fn [shape]
+ [new-instance-shape new-instance-shapes _]
+ (ctst/clone-shape main-instance-shape
+ (:parent-id main-instance-shape)
+ (:objects main-instance-page)
+ :update-new-shape update-new-shape
+ :update-original-shape update-original-shape
+ :force-id force-id)
+ remap-frame
+ (fn [shape]
; Remap all frame-ids internal to the component to the new shapes
- (update shape :frame-id
- #(get @ids-map % (:frame-id shape))))
+ (update shape :frame-id
+ #(get @ids-map % (:frame-id shape))))
- convert-nested-main
- (fn [shape]
+ convert-nested-main
+ (fn [shape]
; If there is some nested main instance, convert it into a copy of
; main nested in the original component.
- (let [origin-shape-id (get @inverted-ids-map (:id shape))
- objects (:objects main-instance-page)
- parent-ids (cfh/get-parent-ids-seq-with-self objects origin-shape-id)]
- (cond-> shape
- (@nested-main-heads origin-shape-id)
- (dissoc :main-instance)
+ (let [origin-shape-id (get @inverted-ids-map (:id shape))
+ objects (:objects main-instance-page)
+ parent-ids (cfh/get-parent-ids-seq-with-self objects origin-shape-id)]
+ (cond-> shape
+ (@nested-main-heads origin-shape-id)
+ (dissoc :main-instance)
- (some @nested-main-heads parent-ids)
- (assoc :shape-ref origin-shape-id))))
+ (some @nested-main-heads parent-ids)
+ (assoc :shape-ref origin-shape-id))))
- xf-shape (comp (map remap-frame)
- (map convert-nested-main))
+ xf-shape (comp (map remap-frame)
+ (map convert-nested-main))
- new-instance-shapes (into [] xf-shape new-instance-shapes)]
+ new-instance-shapes (into [] xf-shape new-instance-shapes)]
- [nil nil new-instance-shape new-instance-shapes])
-
- (let [component-root (d/seek #(nil? (:parent-id %)) (vals (:objects component)))
-
- [new-component-shape new-component-shapes _]
- (ctst/clone-shape component-root
- nil
- (get component :objects))]
-
- [new-component-shape new-component-shapes nil nil]))))
+ [new-instance-shape new-instance-shapes]))
(defn generate-duplicate-component
"Create a new component copied from the one with the given id."
- [changes library component-id new-component-id components-v2 & {:keys [new-shape-id apply-changes-local-library?]}]
+ [changes library component-id new-component-id & {:keys [new-shape-id apply-changes-local-library? delta new-variant-id page-id]}]
(let [component (ctkl/get-component (:data library) component-id)
new-name (:name component)
- main-instance-page (when components-v2
- (ctf/get-component-page (:data library) component))
+ main-instance-page (ctf/get-component-page (:data library) component)
+ ;; Since variants, we can duplicate a component into another page
+ target-page-id (or page-id (:id main-instance-page))
- new-component-id (when components-v2
- new-component-id)
-
- [new-component-shape new-component-shapes ; <- null in components-v2
- new-main-instance-shape new-main-instance-shapes]
- (duplicate-component component new-component-id (:data library) new-shape-id)]
+ [new-main-instance-shape new-main-instance-shapes]
+ (duplicate-component component new-component-id (:data library) new-shape-id delta new-variant-id)]
[new-main-instance-shape
(-> changes
- (pcb/with-page main-instance-page)
+ (pcb/with-page-id target-page-id)
(pcb/with-objects (:objects main-instance-page))
(pcb/add-objects new-main-instance-shapes {:ignore-touched true})
- (pcb/add-component (if components-v2
- new-component-id
- (:id new-component-shape))
+ (pcb/add-component new-component-id
(:path component)
new-name
- new-component-shapes
[]
(:id new-main-instance-shape)
- (:id main-instance-page)
+ target-page-id
(:annotation component)
- (:variant-id component)
+ (or new-variant-id (:variant-id component))
(:variant-properties component)
{:apply-changes-local-library? apply-changes-local-library?})
;; Update grid layout if the new main instance is inside
@@ -228,23 +216,34 @@
"Generate changes to create a new instance from a component."
([changes objects file-id component-id position page libraries]
(generate-instantiate-component changes objects file-id component-id position page libraries nil nil nil {}))
-
- ([changes objects file-id component-id position page libraries old-id parent-id frame-id
+ ([changes objects file-id component-id position page libraries old-id parent-id frame-id params]
+ (generate-instantiate-component changes objects file-id component-id position page libraries old-id parent-id frame-id {} params))
+ ([changes objects file-id component-id position page libraries old-id parent-id frame-id ids-map
{:keys [force-frame?]
:or {force-frame? false}}]
- (let [component (ctf/get-component libraries file-id component-id)
- parent (when parent-id (get objects parent-id))
- library (get libraries file-id)
- components-v2 (dm/get-in library [:data :options :components-v2])
+ (let [component (ctf/get-component libraries file-id component-id)
+ library (get libraries file-id)
+ parent (when parent-id (get objects parent-id))
+
+ ;; When we are intanciating a variant, it can't be on a variant-container
+ parent (when parent
+ (if (and (ctk/is-variant? component)
+ (ctk/is-variant-container? parent))
+ (get objects (:parent-id parent))
+ parent))
+ parent-id (d/nilv (:id parent) parent-id)
+ frame-id (d/nilv (:frame-id parent) frame-id)
[new-shape new-shapes]
(ctn/make-component-instance page
component
(:data library)
position
- components-v2
(cond-> {}
+ (contains? ids-map old-id)
+ (assoc :force-id (get ids-map old-id))
+
force-frame?
(assoc :force-frame-id frame-id)))
@@ -266,8 +265,11 @@
(cond-> (pcb/add-object changes first-shape {:ignore-touched true})
(some? old-id) (pcb/amend-last-change #(assoc % :old-id old-id)))
+ duplicated-parent?
+ (->> ids-map vals (some #(= % (:parent-id first-shape))))
+
changes
- (if (ctl/grid-layout? objects (:parent-id first-shape))
+ (if (and (ctl/grid-layout? objects (:parent-id first-shape)) (not duplicated-parent?))
(let [target-cell (-> position meta :cell)
[row column]
@@ -394,17 +396,28 @@
(when (some #(= (:id current-page) %) (:pages library-data)) ;; If the page doesn't belong to the library, it's not valid
current-page)
(ctpl/get-last-page library-data))]
- (prepare-restore-component changes library-data component-id page (gpt/point 0 0) nil nil nil)))
+ (prepare-restore-component changes library-data component-id page nil nil nil nil)))
- ([changes library-data component-id page delta old-id parent-id frame-id]
- (let [component (ctkl/get-deleted-component library-data component-id)
- parent (get-in page [:objects parent-id])
+ ([changes library-data component-id page position old-id parent-id frame-id]
+ (let [library-data (or (pcb/get-library-data changes) library-data)
+ component (ctkl/get-deleted-component library-data component-id)
+ objects (or (pcb/get-objects changes) (:objects page))
+ parent (get objects parent-id)
main-inst (get-in component [:objects (:main-instance-id component)])
inside-component? (some? (ctn/get-instance-root (:objects page) parent))
shapes (cfh/get-children-with-self (:objects component) (:main-instance-id component))
- shapes (map #(gsh/move % delta) shapes)
- first-shape (cond-> (first shapes)
+ is-variant? (ctk/is-variant? component)
+
+ orig-pos (gpt/point (:x main-inst) (:y main-inst))
+ delta (if position
+ (gpt/subtract position orig-pos)
+ (gpt/point 0 0))
+ minusdelta (gpt/point (- (:x delta)) (- (:y delta)))
+
+ moved-shapes (map #(gsh/move % delta) shapes)
+
+ first-shape (cond-> (first moved-shapes)
(not (nil? parent-id))
(assoc :parent-id parent-id)
(not (nil? frame-id))
@@ -426,9 +439,16 @@
(some? old-id) (pcb/amend-last-change #(assoc % :old-id old-id))) ; on copy/paste old id is used later to reorder the paster layers
changes (reduce #(pcb/add-object %1 %2 {:ignore-touched true})
changes
- (rest shapes))]
- {:changes (pcb/restore-component changes component-id (:id page) main-inst)
- :shape (first shapes)})))
+ (rest moved-shapes))
+ changes (cond-> changes
+ ;; Remove variant info when restoring into a parent that is not a variant-container
+ (and is-variant? parent (not (ctk/is-variant-container? parent)))
+ (clvp/generate-make-shapes-no-variant [first-shape])
+ ;; Add variant info and rename when restoring into a variant-container
+ (ctk/is-variant-container? parent)
+ (clvp/generate-make-shapes-variant [first-shape] parent))]
+ {:changes (pcb/restore-component changes component-id (:id page) minusdelta)
+ :shape (first moved-shapes)})))
;; ---- General library synchronization functions ----
@@ -451,8 +471,7 @@
:file (pretty-file file-id libraries current-file-id)
:library (pretty-file library-id libraries current-file-id))
- (let [file (get-in libraries [file-id :data])
- components-v2 (get-in file [:options :components-v2])]
+ (let [file (get-in libraries [file-id :data])]
(loop [containers (ctf/object-containers-seq file)
changes changes]
(if-let [container (first containers)]
@@ -465,7 +484,6 @@
asset-id
library-id
container
- components-v2
libraries
current-file-id))))
changes))))
@@ -490,8 +508,7 @@
:file (pretty-file file-id libraries current-file-id)
:library (pretty-file library-id libraries current-file-id))
- (let [file (get-in libraries [file-id :data])
- components-v2 (get-in file [:options :components-v2])]
+ (let [file (get-in libraries [file-id :data])]
(loop [local-components (ctkl/components-seq file)
changes changes]
(if-let [local-component (first local-components)]
@@ -503,7 +520,6 @@
asset-id
library-id
(cfh/make-container local-component :component)
- components-v2
libraries
current-file-id)))
changes))))
@@ -511,7 +527,7 @@
(defn- generate-sync-container
"Generate changes to synchronize all shapes in a particular container (a page
or a component) that use assets of the given type in the given library."
- [changes asset-type asset-id library-id container components-v2 libraries current-file-id]
+ [changes asset-type asset-id library-id container libraries current-file-id]
(if (cfh/page? container)
(container-log :debug (:id container) :msg "Sync page in local file" :page-id (:id container))
@@ -530,7 +546,6 @@
library-id
container
shape
- components-v2
libraries
current-file-id))
changes))))
@@ -560,13 +575,13 @@
(defmulti generate-sync-shape
"Generate changes to synchronize one shape from all assets of the given type
that is using, in the given library."
- (fn [asset-type _changes _library-id _container _shape _components-v2 _libraries _current-file-id] asset-type))
+ (fn [asset-type _changes _library-id _container _shape _libraries _current-file-id] asset-type))
(defmethod generate-sync-shape :components
- [_ changes _library-id container shape components-v2 libraries current-file-id]
+ [_ changes _library-id container shape libraries current-file-id]
(let [shape-id (:id shape)
file (get current-file-id libraries)]
- (generate-sync-shape-direct changes file libraries container shape-id false components-v2)))
+ (generate-sync-shape-direct changes file libraries container shape-id false)))
(defmethod generate-sync-shape :colors
[_ changes library-id _ shape _ libraries _]
@@ -742,7 +757,7 @@
(defn generate-sync-shape-direct
"Generate changes to synchronize one shape that is the root of a component
instance, and all its children, from the given component."
- [changes file libraries container shape-id reset? components-v2]
+ [changes file libraries container shape-id reset?]
(shape-log :debug shape-id container
:msg "Sync shape direct" :shape-inst (str shape-id) :reset? reset?)
(let [shape-inst (ctn/get-shape container shape-id)
@@ -753,12 +768,12 @@
(let [redirect-shaperef (partial redirect-shaperef container libraries)
shape-main (when component
- (if (and reset? components-v2)
+ (if reset?
;; the reset is against the ref-shape, not against the original shape of the component
(ctf/find-ref-shape file container libraries shape-inst)
(ctf/get-ref-shape library component shape-inst)))
- shape-inst (if (and reset? components-v2)
+ shape-inst (if reset?
(redirect-shaperef shape-inst shape-main)
shape-inst)
@@ -780,13 +795,10 @@
root-main
reset?
initial-root?
- redirect-shaperef
- components-v2)
+ redirect-shaperef)
;; If the component is not found, because the master component has been
- ;; deleted or the library unlinked, do nothing in v2 or detach in v1.
- (if components-v2
- changes
- (generate-detach-instance changes libraries container shape-id))))
+ ;; deleted or the library unlinked, do nothing.
+ changes))
changes)))
(defn- find-main-container
@@ -807,7 +819,7 @@
nil))))))
(defn- generate-sync-shape-direct-recursive
- [changes container shape-inst component library file libraries shape-main root-inst root-main reset? initial-root? redirect-shaperef components-v2]
+ [changes container shape-inst component library file libraries shape-main root-inst root-main reset? initial-root? redirect-shaperef]
(shape-log :debug (:id shape-inst) container
:msg "Sync shape direct recursive"
:shape-inst (str (:name shape-inst) " " (pretty-uuid (:id shape-inst)))
@@ -815,9 +827,7 @@
(if (nil? shape-main)
;; This should not occur, but protect against it in any case
- (if components-v2
- changes
- (generate-detach-instance changes container {(:id library) library} (:id shape-inst)))
+ changes
(let [omit-touched? (not reset?)
clear-remote-synced? (and initial-root? reset?)
set-remote-synced? (and (not initial-root?) reset?)
@@ -856,7 +866,7 @@
children-inst (vec (ctn/get-direct-children container shape-inst))
children-main (vec (ctn/get-direct-children component-container shape-main))
- children-inst (if (and reset? components-v2)
+ children-inst (if reset?
(map #(redirect-shaperef %) children-inst) children-inst)
only-inst (fn [changes child-inst]
@@ -888,8 +898,7 @@
root-inst
root-main
omit-touched?
- set-remote-synced?
- components-v2)
+ set-remote-synced?)
changes))
both (fn [changes child-inst child-main]
@@ -909,8 +918,7 @@
root-main
reset?
initial-root?
- redirect-shaperef
- components-v2))
+ redirect-shaperef))
swapped (fn [changes child-inst child-main]
(shape-log :trace (:id child-inst) container
@@ -948,8 +956,7 @@
swapped
moved
false
- reset?
- components-v2)
+ reset?)
changes
(cond-> changes
@@ -965,41 +972,26 @@
(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 components-v2]
- (let [[path name] (cfh/parse-path-name new-name)
- update-fn
- (fn [component]
- (cond-> component
- :always
- (assoc :path path
- :name name)
-
- (not components-v2)
- (update :objects
- ;; Give the same name to the root shape
- #(assoc-in % [id :name] name))))]
+ [changes id new-name library-data]
+ (let [[path name] (cfh/parse-path-name new-name)]
(-> changes
(pcb/with-library-data library-data)
- (pcb/update-component id update-fn))))
+ (pcb/update-component id #(assoc % :path path :name name)))))
(defn generate-sync-shape-inverse
"Generate changes to update the component a shape is linked to, from
the values in the shape and all its children."
- [changes file libraries container shape-id components-v2]
+ [changes file libraries container shape-id]
(shape-log :debug shape-id container :msg "Sync shape inverse" :shape (str shape-id))
(let [redirect-shaperef (partial redirect-shaperef container libraries)
shape-inst (ctn/get-shape container shape-id)
library (dm/get-in libraries [(:component-file shape-inst) :data])
component (ctkl/get-component library (:component-id shape-inst))
- shape-main (when component
- (if components-v2
- (ctf/find-remote-shape container libraries shape-inst)
- (ctf/get-ref-shape library component shape-inst)))
+ shape-main (when component
+ (ctf/find-remote-shape container libraries shape-inst))
- shape-inst (if components-v2
- (redirect-shaperef shape-inst shape-main)
- shape-inst)
+ shape-inst (redirect-shaperef shape-inst shape-main)
initial-root? (:component-root shape-inst)
@@ -1008,7 +1000,7 @@
changes (cond-> changes
(and component (contains? (:touched shape-inst) :name-group))
- (generate-rename-component (:component-id shape-inst) (:name shape-inst) library components-v2))]
+ (generate-rename-component (:component-id shape-inst) (:name shape-inst) library))]
(if component
(generate-sync-shape-inverse-recursive changes
@@ -1022,12 +1014,11 @@
root-inst
root-main
initial-root?
- redirect-shaperef
- components-v2)
+ redirect-shaperef)
changes)))
(defn- generate-sync-shape-inverse-recursive
- [changes container shape-inst component library file libraries shape-main root-inst root-main initial-root? redirect-shaperef components-v2]
+ [changes container shape-inst component library file libraries shape-main root-inst root-main initial-root? redirect-shaperef]
(shape-log :trace (:id shape-inst) container
:msg "Sync shape inverse recursive"
:shape (str (:name shape-inst))
@@ -1084,9 +1075,7 @@
children-main (mapv #(ctn/get-shape component-container %)
(:shapes shape-main))
- children-inst (if components-v2
- (map #(redirect-shaperef %) children-inst)
- children-inst)
+ children-inst (map #(redirect-shaperef %) children-inst)
only-inst (fn [changes child-inst]
(add-shape-to-main changes
@@ -1097,8 +1086,7 @@
component-container
container
root-inst
- root-main
- components-v2))
+ root-main))
only-main (fn [changes child-main]
(remove-shape changes
@@ -1118,8 +1106,7 @@
root-inst
root-main
initial-root?
- redirect-shaperef
- components-v2))
+ redirect-shaperef))
swapped (fn [changes child-inst child-main]
(shape-log :trace (:id child-inst) container
@@ -1153,8 +1140,7 @@
swapped
moved
true
- true
- components-v2)
+ true)
;; The inverse sync may be made on a component that is inside a
;; remote library. We need to separate changes that are from
@@ -1172,7 +1158,7 @@
;; ---- Operation generation helpers ----
(defn- compare-children
- [changes shape-inst children-inst children-main container-inst container-main file libraries only-inst-cb only-main-cb both-cb swapped-cb moved-cb inverse? reset? components-v2]
+ [changes shape-inst children-inst children-main container-inst container-main file libraries only-inst-cb only-main-cb both-cb swapped-cb moved-cb inverse? reset?]
(shape-log :trace (:id shape-inst) container-inst :msg "Compare children")
(loop [children-inst (seq (or children-inst []))
children-main (seq (or children-main []))
@@ -1193,18 +1179,18 @@
(reduce only-inst-cb changes children-inst)
:else
- (if (or (ctk/is-main-of? child-main child-inst components-v2)
+ (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?)))
(recur (next children-inst)
(next children-main)
- (if (ctk/is-main-of? child-main child-inst components-v2)
+ (if (ctk/is-main-of? child-main child-inst)
(both-cb changes child-inst child-main)
(swapped-cb changes child-inst child-main)))
- (let [child-inst' (d/seek #(or (ctk/is-main-of? child-main % components-v2)
+ (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?)))
children-inst)
- child-main' (d/seek #(or (ctk/is-main-of? % child-inst components-v2)
+ 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?)))
children-main)]
(cond
@@ -1220,7 +1206,7 @@
:else
(if inverse?
- (let [is-main? (ctk/is-main-of? child-inst child-main' components-v2)]
+ (let [is-main? (ctk/is-main-of? child-inst child-main')]
(recur (next children-inst)
(remove #(= (:id %) (:id child-main')) children-main)
(cond-> changes
@@ -1230,7 +1216,7 @@
(swapped-cb child-inst child-main')
:always
(moved-cb child-inst child-main'))))
- (let [is-main? (ctk/is-main-of? child-inst' child-main components-v2)]
+ (let [is-main? (ctk/is-main-of? child-inst' child-main)]
(recur (remove #(= (:id %) (:id child-inst')) children-inst)
(next children-main)
(cond-> changes
@@ -1242,14 +1228,14 @@
(moved-cb child-inst' child-main))))))))))))
(defn- add-shape-to-instance
- [changes component-shape index component-page container root-instance root-main omit-touched? set-remote-synced? components-v2]
+ [changes component-shape index component-page container root-instance root-main omit-touched? set-remote-synced?]
(shape-log :info (:id component-shape) component-page
:msg (str "ADD [P " (pretty-uuid (:id container)) "] "
(:name component-shape)
" "
(pretty-uuid (:id component-shape))))
(let [component-parent-shape (ctn/get-shape component-page (:parent-id component-shape))
- parent-shape (d/seek #(ctk/is-main-of? component-parent-shape % components-v2)
+ parent-shape (d/seek #(ctk/is-main-of? component-parent-shape %)
(cfh/get-children-with-self (:objects container)
(:id root-instance)))
all-parents (into [(:id parent-shape)]
@@ -1318,14 +1304,14 @@
changes')))
(defn- add-shape-to-main
- [changes shape index component component-container page root-instance root-main components-v2]
+ [changes shape index component component-container page root-instance root-main]
(shape-log :info (:id shape) page
:msg (str "ADD [C " (pretty-uuid (:id component-container)) "] "
(:name shape)
" "
(pretty-uuid (:id shape))))
(let [parent-shape (ctn/get-shape page (:parent-id shape))
- component-parent-shape (d/seek #(ctk/is-main-of? % parent-shape components-v2)
+ component-parent-shape (d/seek #(ctk/is-main-of? % parent-shape)
(cfh/get-children-with-self (:objects component-container)
(:id root-main)))
all-parents (into [(:id component-parent-shape)]
@@ -1910,30 +1896,33 @@
(assoc change :component-id (:id container))))
(defn generate-add-component-changes
- [changes root objects file-id page-id components-v2]
+ [changes root objects file-id page-id variant-props]
(let [name (:name root)
+ 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)
- [root-shape new-shapes updated-shapes]
- (if-not components-v2
- (ctn/make-component-shape root objects file-id components-v2)
- (ctn/convert-shape-in-component root objects file-id))
+ [root-shape updated-shapes]
+ (ctn/convert-shape-in-component root objects file-id)
- changes (-> changes
- (pcb/add-component (:id root-shape)
- path
- name
- new-shapes
- updated-shapes
- (:id root)
- page-id))]
+ changes (-> changes
+ (pcb/add-component (:id root-shape)
+ path
+ name
+ updated-shapes
+ (:id root)
+ page-id
+ nil
+ variant-id
+ props))]
[root-shape changes]))
(defn generate-add-component
- "If there is exactly one id, and it's a frame (or a group in v1), and not already a component,
- use it as root. Otherwise, create a frame (v2) or group (v1) that contains all ids. Then, make a
+ "If there is exactly one id, and it's a frame, and not already a component,
+ use it as root. Otherwise, create a frame that contains all ids. Then, make a
component with it, and link all shapes to their corresponding one in the component."
- [changes shapes objects page-id file-id components-v2 prepare-create-group prepare-create-board]
+ [changes shapes objects page-id file-id prepare-create-board]
(let [changes (pcb/with-page-id changes page-id)
shapes-count (count shapes)
@@ -1945,9 +1934,7 @@
[root changes old-root-ids]
(if (and (= shapes-count 1)
- (or (and (cfh/group-shape? first-shape)
- (not components-v2))
- (cfh/frame-shape? first-shape))
+ (cfh/frame-shape? first-shape)
(not (ctk/instance-head? first-shape)))
[first-shape
(-> changes
@@ -1962,21 +1949,14 @@
shape-ids (into (d/ordered-set) (map :id) shapes)
[root changes]
- (if-not components-v2
- (prepare-create-group changes ; These functions needs to be passed as argument
- objects ; to avoid a circular dependence
- page-id
- shapes
- root-name
- (not (ctk/instance-head? first-shape)))
- (prepare-create-board changes
- (uuid/next)
- (:parent-id first-shape)
- objects
- shape-ids
- nil
- root-name
- true))]
+ (prepare-create-board changes
+ (uuid/next)
+ (:parent-id first-shape)
+ objects
+ shape-ids
+ nil
+ root-name
+ true)]
[root changes shape-ids]))
@@ -1990,7 +1970,7 @@
objects' (assoc objects (:id root) root)
- [root-shape changes] (generate-add-component-changes changes root objects' file-id page-id components-v2)
+ [root-shape changes] (generate-add-component-changes changes root objects' file-id page-id nil)
changes (pcb/update-shapes changes
old-root-ids
@@ -2004,17 +1984,26 @@
[changes library-data component-id library-id current-page objects]
(let [{:keys [changes shape]} (prepare-restore-component changes library-data component-id current-page)
parent-id (:parent-id shape)
- objects (cond-> (assoc objects (:id shape) shape)
- (not (nil? parent-id))
- (update-in [parent-id :shapes]
- #(conj % (:id shape))))
+
+ insert-before?
+ (and (ctl/flex-layout? objects parent-id)
+ (not (ctl/reverse? objects parent-id)))
+
+ objects
+ (-> objects
+ (assoc (:id shape) shape)
+ (cond-> (and (some? parent-id) insert-before?)
+ (update-in [parent-id :shapes] #(d/concat-vec [(:id shape)] %)))
+ (cond-> (and (some? parent-id) (not insert-before?))
+ (update-in [parent-id :shapes] conj (:id shape))))
;; Adds a resize-parents operation so the groups are updated. We add all the new objects
new-objects-ids (->> changes :redo-changes (filter #(= (:type %) :add-obj)) (mapv :id))
changes (-> changes
(pcb/with-objects objects)
- (pcb/resize-parents new-objects-ids))]
-
+ (pcb/resize-parents new-objects-ids)
+ ;; Fix the order of the children inside the parent
+ (pcb/reorder-children parent-id (get-in objects [parent-id :shapes])))]
(assoc changes :file-id library-id)))
(defn generate-detach-component
@@ -2076,8 +2065,7 @@
[changes objects shape file page libraries id-new-component index target-cell keep-props-values]
(let [[all-parents changes]
(-> changes
- (cls/generate-delete-shapes file page objects (d/ordered-set (:id shape)) {:components-v2 true
- :component-swap true}))
+ (cls/generate-delete-shapes file page objects (d/ordered-set (:id shape)) {:component-swap true}))
[new-shape changes]
(-> changes
(generate-new-shape-for-swap shape file page libraries id-new-component index target-cell keep-props-values))]
@@ -2108,7 +2096,7 @@
(generate-sync-file file-id :typographies asset-id library-id libraries current-file-id))))
(defn generate-sync-head
- [changes file-full libraries container id components-v2 reset?]
+ [changes file-full libraries container id reset?]
(let [shape-inst (ctn/get-shape container id)
objects (:objects container)
parent (get objects (:parent-id shape-inst))
@@ -2117,11 +2105,11 @@
(-> changes
(pcb/with-container container)
(pcb/with-objects (:objects container))
- (generate-sync-shape-direct file-full libraries container (:id head) reset? components-v2))]
+ (generate-sync-shape-direct file-full libraries container (:id head) reset?))]
changes))
(defn generate-reset-component
- [changes file-full libraries container id components-v2]
+ [changes file-full libraries container id]
(let [objects (:objects container)
swap-slot (-> (ctn/get-shape container id)
(ctk/get-swap-slot))
@@ -2129,11 +2117,11 @@
(-> changes
(pcb/with-container container)
(pcb/with-objects objects)
- (generate-sync-shape-direct file-full libraries container id true components-v2))]
+ (generate-sync-shape-direct file-full libraries container id true))]
(cond-> changes
(some? swap-slot)
- (generate-sync-head file-full libraries container id components-v2 true))))
+ (generate-sync-head file-full libraries container id true))))
(defn generate-duplicate-flows
[changes shapes page ids-map]
@@ -2187,52 +2175,90 @@
(pcb/with-page changes page)
frames)))
-(defn generate-duplicate-component-change
- [changes objects page component-root parent-id frame-id delta libraries library-data]
- (let [component-id (:component-id component-root)
- file-id (:component-file component-root)
- main-component (ctf/get-component libraries file-id component-id)
- moved-component (gsh/move component-root delta)
- pos (gpt/point (:x moved-component) (:y moved-component))
- origin-frame (get-in page [:objects frame-id])
- delta (cond-> delta
- (some? origin-frame)
- (gpt/subtract (-> origin-frame :selrect gpt/point)))
+(defn- duplicate-variant
+ [changes library component base-pos parent-id page-id]
+ (let [component-page (ctpl/get-page (:data library) (:main-instance-page component))
+ component-shape (dm/get-in component-page [: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)
+ [shape changes] (generate-duplicate-component changes
+ library
+ (:id component)
+ new-component-id
+ {:apply-changes-local-library? true
+ :delta delta
+ :new-variant-id parent-id
+ :page-id page-id})]
+ [shape
+ (-> changes
+ (pcb/change-parent parent-id [shape]))]))
+
+
+(defn generate-duplicate-component-change
+ [changes objects page main parent-id frame-id delta libraries library-data ids-map]
+ (let [main-id (:id main)
+ component-id (:component-id main)
+ file-id (:component-file main)
+ component (ctf/get-component libraries file-id component-id)
+ pos (as-> (gsh/move main delta) $
+ (gpt/point (:x $) (:y $)))
+
+ ;; 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))
- instantiate-component
- #(generate-instantiate-component changes
- objects
- file-id
- (:component-id component-root)
- pos
- page
- libraries
- (:id component-root)
- parent-id
- frame-id
- {})
restore-component
- #(let [restore (prepare-restore-component changes library-data (:component-id component-root) page delta (:id component-root) parent-id frame-id)]
- [(:shape restore) (:changes restore)])
+ #(let [{:keys [shape changes]}
+ (prepare-restore-component changes
+ library-data
+ component-id
+ page
+ pos
+ main-id
+ parent-id
+ frame-id)]
+ [shape changes])
[_shape changes]
- (if (nil? main-component)
+ (if (nil? component)
(restore-component)
- (instantiate-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
+ {})))]
changes))
(defn generate-duplicate-shape-change
- ([changes objects page unames update-unames! ids-map obj delta level-delta libraries library-data file-id]
- (generate-duplicate-shape-change changes objects page unames update-unames! ids-map obj delta level-delta libraries library-data file-id (:frame-id obj) (:parent-id obj) false false true))
+ ([changes objects page unames update-unames! ids ids-map obj delta level-delta libraries library-data file-id]
+ (generate-duplicate-shape-change changes objects page unames update-unames! ids ids-map obj delta level-delta libraries library-data file-id (:frame-id obj) (:parent-id obj) false false true nil))
+ ([changes objects page unames update-unames! ids ids-map obj delta level-delta libraries library-data file-id variant-props]
+ (generate-duplicate-shape-change changes objects page unames update-unames! ids ids-map obj delta level-delta libraries library-data file-id (:frame-id obj) (:parent-id obj) false false true variant-props))
- ([changes objects page unames update-unames! ids-map obj delta level-delta libraries library-data file-id frame-id parent-id duplicating-component? child? remove-swap-slot?]
+ ([changes objects page unames update-unames! ids ids-map obj delta level-delta libraries library-data file-id frame-id parent-id duplicating-component? child? remove-swap-slot? variant-props]
(cond
(nil? obj)
changes
(ctf/is-main-of-known-component? obj libraries)
- (generate-duplicate-component-change changes objects page obj parent-id frame-id delta libraries library-data)
+ (generate-duplicate-component-change changes objects page obj parent-id frame-id delta libraries library-data ids-map)
:else
(let [frame? (cfh/frame-shape? obj)
@@ -2262,8 +2288,7 @@
regenerate-component
(fn [changes shape]
- (let [components-v2 (dm/get-in library-data [:options :components-v2])
- [_ changes] (generate-add-component-changes changes shape objects file-id (:id page) components-v2)]
+ (let [[_ changes] (generate-add-component-changes changes shape objects file-id (:id page) variant-props)]
changes))
new-obj
@@ -2302,7 +2327,14 @@
(d/update-when :interactions #(ctsi/remap-interactions % ids-map objects))
(cond-> (ctl/grid-layout? obj)
- (ctl/remap-grid-cells ids-map)))
+ (ctl/remap-grid-cells ids-map))
+
+ (cond-> (ctk/is-variant-container? parent)
+ (assoc :variant-id parent-id))
+
+ (cond-> (and (ctk/is-variant? obj) (not (ctk/is-variant-container? parent)))
+ (-> (assoc :name (ctv/variant-name-to-name obj))
+ (dissoc :variant-id))))
new-obj (cond-> new-obj
(not duplicating-component?)
@@ -2334,6 +2366,7 @@
page
unames
update-unames!
+ ids
ids-map
child
delta
@@ -2349,21 +2382,22 @@
;; only remove swap slot of children when the current shape
;; is not a subinstance head nor a instance root
(not subinstance-head?)
- (not instance-root?))))
+ (not instance-root?))
+ variant-props))
changes
(map (d/getf objects) (:shapes obj)))))))
(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]
+ [changes all-objects page ids delta libraries library-data file-id & {:keys [variant-props]}]
(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))
all-ids (reduce #(into %1 (cons %2 (cfh/get-children-ids all-objects %2))) (d/ordered-set) ids)
- ;; We need ids-map for remapping the grid layout. But when duplicating the guides
- ;; we calculate a new one because the components will have created new shapes.
+ ;; We need ids-map for remapping the grid layout. But when duplicating the guides
+ ;; we calculate a new one because the components will have created new shapes.
ids-map (into {} (map #(vector % (uuid/next))) all-ids)
changes (-> changes
@@ -2376,13 +2410,15 @@
page
unames
update-unames!
+ ids
ids-map
%2
delta
nil
libraries
library-data
- file-id)
+ file-id
+ variant-props)
changes))
;; We need to check the changes to get the ids-map
diff --git a/common/src/app/common/logic/shapes.cljc b/common/src/app/common/logic/shapes.cljc
index fa2ba8e5e7..ca64e55f3d 100644
--- a/common/src/app/common/logic/shapes.cljc
+++ b/common/src/app/common/logic/shapes.cljc
@@ -10,14 +10,14 @@
[app.common.files.changes-builder :as pcb]
[app.common.files.helpers :as cfh]
[app.common.geom.shapes :as gsh]
- [app.common.logic.variants :as clv]
+ [app.common.logic.variant-properties :as clvp]
[app.common.types.component :as ctk]
[app.common.types.container :as ctn]
+ [app.common.types.pages-list :as ctpl]
[app.common.types.shape.interactions :as ctsi]
[app.common.types.shape.layout :as ctl]
[app.common.types.token :as cto]
- [app.common.uuid :as uuid]
- [cuerdas.core :as str]))
+ [app.common.uuid :as uuid]))
(defn- generate-unapply-tokens
"When updating attributes that have a token applied, we must unapply it, because the value
@@ -81,163 +81,167 @@
(pcb/update-shapes ids update-fn {:attrs #{:blocked :hidden}}))))
(defn generate-delete-shapes
- [changes file page objects ids {:keys [components-v2 ignore-touched component-swap]}]
- (let [ids (cfh/clean-loops objects ids)
+ ([changes file page objects ids options]
+ (generate-delete-shapes (-> changes
+ (pcb/with-page page)
+ (pcb/with-objects objects)
+ (pcb/with-library-data file))
+ ids
+ options))
+ ([changes ids {:keys [ignore-touched component-swap]}]
+ (let [objects (pcb/get-objects changes)
+ data (pcb/get-library-data changes)
+ page-id (pcb/get-page-id changes)
+ page (or (pcb/get-page changes)
+ (ctpl/get-page data page-id))
- in-component-copy?
- (fn [shape-id]
+ ids (cfh/clean-loops objects ids)
+ in-component-copy?
+ (fn [shape-id]
;; Look for shapes that are inside a component copy, but are
;; not the root. In this case, they must not be deleted,
;; but hidden (to be able to recover them more easily).
;; Unless we are doing a component swap, in which case we want
;; to delete the old shape
- (let [shape (get objects shape-id)]
- (and (ctn/has-any-copy-parent? objects shape)
- (not component-swap))))
+ (let [shape (get objects shape-id)]
+ (and (ctn/has-any-copy-parent? objects shape)
+ (not component-swap))))
- [ids-to-delete ids-to-hide]
- (if components-v2
- (loop [ids-seq (seq ids)
- ids-to-delete []
- ids-to-hide []]
- (let [id (first ids-seq)]
- (if (nil? id)
- [ids-to-delete ids-to-hide]
- (if (in-component-copy? id)
- (recur (rest ids-seq)
- ids-to-delete
- (conj ids-to-hide id))
- (recur (rest ids-seq)
- (conj ids-to-delete id)
- ids-to-hide)))))
- [ids []])
+ [ids-to-delete ids-to-hide]
+ (loop [ids-seq (seq ids)
+ ids-to-delete []
+ ids-to-hide []]
+ (let [id (first ids-seq)]
+ (if (nil? id)
+ [ids-to-delete ids-to-hide]
+ (if (in-component-copy? id)
+ (recur (rest ids-seq)
+ ids-to-delete
+ (conj ids-to-hide id))
+ (recur (rest ids-seq)
+ (conj ids-to-delete id)
+ ids-to-hide)))))
- changes (-> changes
- (pcb/with-page page)
- (pcb/with-objects objects)
- (pcb/with-library-data file))
+ lookup (d/getf objects)
- lookup (d/getf objects)
-
- groups-to-unmask
- (reduce (fn [group-ids id]
+ groups-to-unmask
+ (reduce (fn [group-ids id]
;; When the shape to delete is the mask of a masked group,
;; the mask condition must be removed, and it must be
;; converted to a normal group.
- (let [obj (lookup id)
- parent (lookup (:parent-id obj))]
- (if (and (:masked-group parent)
- (= id (first (:shapes parent))))
- (conj group-ids (:id parent))
- group-ids)))
- #{}
- ids-to-delete)
+ (let [obj (lookup id)
+ parent (lookup (:parent-id obj))]
+ (if (and (:masked-group parent)
+ (= id (first (:shapes parent))))
+ (conj group-ids (:id parent))
+ group-ids)))
+ #{}
+ ids-to-delete)
- interacting-shapes
- (filter (fn [shape]
+ interacting-shapes
+ (filter (fn [shape]
;; If any of the deleted shapes is the destination of
;; some interaction, this must be deleted, too.
- (let [interactions (:interactions shape)]
- (some #(and (ctsi/has-destination %)
- (contains? ids-to-delete (:destination %)))
- interactions)))
- (vals objects))
+ (let [interactions (:interactions shape)]
+ (some #(and (ctsi/has-destination %)
+ (contains? ids-to-delete (:destination %)))
+ interactions)))
+ (vals objects))
- changes
- (reduce (fn [changes {:keys [id] :as flow}]
- (if (contains? ids-to-delete (:starting-frame flow))
- (pcb/set-flow changes id nil)
- changes))
- changes
- (:flows page))
+ changes
+ (reduce (fn [changes {:keys [id] :as flow}]
+ (if (contains? ids-to-delete (:starting-frame flow))
+ (pcb/set-flow changes id nil)
+ changes))
+ changes
+ (:flows page))
- all-parents
- (reduce (fn [res id]
+ all-parents
+ (reduce (fn [res id]
;; All parents of any deleted shape must be resized.
- (into res (cfh/get-parent-ids objects id)))
- (d/ordered-set)
- (concat ids-to-delete ids-to-hide))
+ (into res (cfh/get-parent-ids objects id)))
+ (d/ordered-set)
+ (concat ids-to-delete ids-to-hide))
- all-children
- (->> ids-to-delete ;; Children of deleted shapes must be also deleted.
- (reduce (fn [res id]
- (into res (cfh/get-children-ids objects id)))
- [])
- (reverse)
- (into (d/ordered-set)))
+ all-children
+ (->> ids-to-delete ;; Children of deleted shapes must be also deleted.
+ (reduce (fn [res id]
+ (into res (cfh/get-children-ids objects id)))
+ [])
+ (reverse)
+ (into (d/ordered-set)))
- find-all-empty-parents
- (fn recursive-find-empty-parents [empty-parents]
- (let [all-ids (into empty-parents ids-to-delete)
- contains? (partial contains? all-ids)
- xform (comp (map lookup)
- (filter #(or (cfh/group-shape? %) (cfh/bool-shape? %)))
- (remove #(->> (:shapes %) (remove contains?) seq))
- (map :id))
- parents (into #{} xform all-parents)]
- (if (= empty-parents parents)
- empty-parents
- (recursive-find-empty-parents parents))))
+ find-all-empty-parents
+ (fn recursive-find-empty-parents [empty-parents]
+ (let [all-ids (into empty-parents ids-to-delete)
+ contains? (partial contains? all-ids)
+ xform (comp (map lookup)
+ (filter #(or (cfh/group-shape? %) (cfh/bool-shape? %) (ctk/is-variant-container? %)))
+ (remove #(->> (:shapes %) (remove contains?) seq))
+ (map :id))
+ parents (into #{} xform all-parents)]
+ (if (= empty-parents parents)
+ empty-parents
+ (recursive-find-empty-parents parents))))
- empty-parents
+ empty-parents
;; Any parent whose children are all deleted, must be deleted too.
;; Unless we are during a component swap: in this case we are replacing a shape by
;; other one, so must not delete empty parents.
- (if-not component-swap
- (into (d/ordered-set) (find-all-empty-parents #{}))
- #{})
+ (if-not component-swap
+ (into (d/ordered-set) (find-all-empty-parents #{}))
+ #{})
- components-to-delete
- (if components-v2
- (reduce (fn [components id]
- (let [shape (get objects id)]
- (if (and (= (:component-file shape) (:id file)) ;; Main instances should exist only in local file
- (:main-instance shape)) ;; but check anyway
- (conj components (:component-id shape))
- components)))
- []
- (into ids-to-delete all-children))
- [])
+ components-to-delete
+ (reduce (fn [components id]
+ (let [shape (get objects id)]
+ (if (and (= (:component-file shape) (:id data)) ;; Main instances should exist only in local file
+ (:main-instance shape)) ;; but check anyway
+ (conj components (:component-id shape))
+ components)))
+ []
+ (into ids-to-delete all-children))
- ids-set (set ids-to-delete)
- guides-to-delete
- (->> (:guides page)
- (vals)
- (filter #(contains? ids-set (:frame-id %)))
- (map :id))
+ ids-set (set ids-to-delete)
- changes (reduce (fn [changes guide-id]
- (pcb/set-flow changes guide-id nil))
- changes
- guides-to-delete)
+ guides-to-delete
+ (->> (:guides page)
+ (vals)
+ (filter #(contains? ids-set (:frame-id %)))
+ (map :id))
- changes (reduce (fn [changes component-id]
+ changes (reduce (fn [changes guide-id]
+ (pcb/set-flow changes guide-id nil))
+ changes
+ guides-to-delete)
+
+ changes (reduce (fn [changes component-id]
;; It's important to delete the component before the main instance, because we
;; need to store the instance position if we want to restore it later.
- (pcb/delete-component changes component-id (:id page)))
- changes
- components-to-delete)
+ (pcb/delete-component changes component-id (:id page)))
+ changes
+ components-to-delete)
- changes (-> changes
- (generate-update-shape-flags ids-to-hide objects {:hidden true})
- (pcb/remove-objects all-children {:ignore-touched true})
- (pcb/remove-objects ids-to-delete {:ignore-touched ignore-touched})
- (pcb/remove-objects empty-parents)
- (pcb/resize-parents all-parents)
- (pcb/update-shapes groups-to-unmask
- (fn [shape]
- (assoc shape :masked-group false)))
- (pcb/update-shapes (map :id interacting-shapes)
- (fn [shape]
- (d/update-when shape :interactions
- (fn [interactions]
- (into []
- (remove #(and (ctsi/has-destination %)
- (contains? ids-to-delete (:destination %))))
- interactions))))))]
- [all-parents changes]))
+ changes (-> changes
+ (generate-update-shape-flags ids-to-hide objects {:hidden true})
+ (pcb/remove-objects all-children {:ignore-touched true})
+ (pcb/remove-objects ids-to-delete {:ignore-touched ignore-touched})
+ (pcb/remove-objects empty-parents)
+ (pcb/resize-parents all-parents)
+ (pcb/update-shapes groups-to-unmask
+ (fn [shape]
+ (assoc shape :masked-group false)))
+ (pcb/update-shapes (map :id interacting-shapes)
+ (fn [shape]
+ (d/update-when shape :interactions
+ (fn [interactions]
+ (into []
+ (remove #(and (ctsi/has-destination %)
+ (contains? ids-to-delete (:destination %))))
+ interactions))))))]
+ [all-parents changes])))
(defn generate-relocate
@@ -255,7 +259,7 @@
child-heads-ids (map :id child-heads)
- variant-heads (filter ctk/is-variant? child-heads)
+ variant-shapes (filter ctk/is-variant? shapes)
component-main-parent
(ctn/find-component-main objects parent false)
@@ -339,7 +343,19 @@
(map :id)))
index-cell-data (when to-index (ctl/get-cell-by-index parent to-index))
- cell (or cell (and index-cell-data [(:row index-cell-data) (:column index-cell-data)]))]
+ cell (or cell (and index-cell-data [(:row index-cell-data) (:column index-cell-data)]))
+
+
+ ;; Parents that are a variant-container that becomes empty
+ empty-variant-cont (reduce
+ (fn [to-delete parent-id]
+ (let [parent (get objects parent-id)]
+ (if (and (ctk/is-variant-container? parent)
+ (empty? (remove (set ids) (:shapes parent))))
+ (conj to-delete (:id parent))
+ to-delete)))
+ #{}
+ (remove #(= % parent-id) all-parents))]
(-> changes
;; Remove layout-item properties when moving a shape outside a layout
@@ -368,82 +384,11 @@
;; Remove variant info and rename when moving outside a variant-container
(cond-> (not (ctk/is-variant-container? parent))
- ((fn [changes]
- (reduce
- (fn [changes shape]
- (let [new-name (str/replace (:variant-name shape) #", " " / ")
- [cpath cname] (cfh/parse-path-name new-name)]
- (-> changes
- (pcb/update-component (:component-id shape)
- #(-> (dissoc % :variant-id :variant-properties)
- (assoc :name cname
- :path cpath))
- {:apply-changes-local-library? true})
- (pcb/update-shapes [(:id shape)]
- #(-> (dissoc % :variant-id :variant-name)
- (assoc :name new-name))))))
- changes
- variant-heads))))
+ (clvp/generate-make-shapes-no-variant variant-shapes))
;; Add variant info and rename when moving into a different variant-container
(cond-> (ctk/is-variant-container? parent)
- ((fn [changes]
- (let [get-base-name #(if (some? (:variant-name %))
- (str/replace (:variant-name %) #", " " / ")
- (:name %))
-
- calc-num-props #(-> %
- get-base-name
- cfh/split-path
- count)
-
- max-path-items (apply max (map calc-num-props child-heads))
-
- first-comp-id (->> parent
- :shapes
- first
- (get objects)
- :component-id)
-
- data (pcb/get-library-data changes)
- variant-properties (get-in data [:components first-comp-id :variant-properties])
- num-props (count variant-properties)
- num-new-props (if (< max-path-items num-props)
- 0
- (- max-path-items num-props))
-
- changes (nth
- (iterate #(clv/generate-add-new-property % (:id parent)) changes)
- num-new-props)]
- (reduce
- (fn [changes shape]
- (if (= (:id parent) (:variant-id shape))
- changes ;; do nothing if we aren't changing the parent
- (let [base-name (get-base-name shape)
-
- ;; we need to get the updated library data to have access to the current properties
- data (pcb/get-library-data changes)
-
- props (clv/path-to-properties
- base-name
- (get-in data [:components first-comp-id :variant-properties]))
-
- variant-name (clv/properties-to-name props)
- [cpath cname] (cfh/parse-path-name (:name parent))]
-
- (-> (pcb/update-component changes
- (:component-id shape)
- #(assoc % :variant-id (:id parent)
- :variant-properties props
- :name cname
- :path cpath)
- {:apply-changes-local-library? true})
- (pcb/update-shapes [(:id shape)]
- #(assoc % :variant-id (:id parent)
- :variant-name variant-name
- :name (:name parent)))))))
- changes
- child-heads)))))
+ (clvp/generate-make-shapes-variant child-heads parent))
;; Move the shapes
(pcb/change-parent parent-id
@@ -518,7 +463,11 @@
(pcb/update-shapes ids #(assoc % :blocked true)))
;; Resize parent containers that need to
- (pcb/resize-parents parents))))
+ (pcb/resize-parents parents)
+
+ ;; Remove parents when are a variant-container that becomes empty
+ (cond-> (seq empty-variant-cont)
+ (#(second (generate-delete-shapes % empty-variant-cont {})))))))
(defn change-show-in-viewer
[shape hide?]
diff --git a/common/src/app/common/logic/variant_properties.cljc b/common/src/app/common/logic/variant_properties.cljc
new file mode 100644
index 0000000000..e39e7d223f
--- /dev/null
+++ b/common/src/app/common/logic/variant_properties.cljc
@@ -0,0 +1,198 @@
+;; 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.logic.variant-properties
+ (: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.types.component :as ctk]
+ [app.common.types.components-list :as ctcl]
+ [app.common.types.variant :as ctv]
+ [cuerdas.core :as str]))
+
+(defn generate-update-property-name
+ [changes variant-id pos new-name]
+ (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]
+ (pcb/update-component
+ changes (:id component)
+ #(assoc-in % [:variant-properties pos :name] new-name)
+ {:apply-changes-local-library? true}))
+ changes
+ related-components)))
+
+
+(defn generate-remove-property
+ [changes variant-id 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/remove-at-index props 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-update-property-value
+ [changes component-id pos value]
+ (let [data (pcb/get-library-data changes)
+ component (ctcl/get-component data component-id true)
+ main-id (:main-instance-id component)
+ name (-> (:variant-properties component)
+ (update pos assoc :value value)
+ ctv/properties-to-name)]
+ (-> changes
+ (pcb/update-component component-id #(assoc-in % [:variant-properties pos :value] value)
+ {:apply-changes-local-library? true})
+ (pcb/update-shapes [main-id] #(assoc % :variant-name name)))))
+
+
+(defn generate-add-new-property
+ [changes variant-id & {:keys [fill-values? property-name]}]
+ (let [data (pcb/get-library-data changes)
+ objects (pcb/get-objects changes)
+ related-components (cfv/find-variant-components data objects variant-id)
+
+ props (-> related-components last :variant-properties)
+ next-prop-num (ctv/next-property-number props)
+ property-name (or property-name (str ctv/property-prefix next-prop-num))
+
+ [_ changes]
+ (reduce (fn [[num changes] component]
+ (let [main-id (:main-instance-id component)
+
+ update-props #(-> (d/nilv % [])
+ (conj {:name property-name
+ :value (if fill-values? (str ctv/value-prefix num) "")}))
+
+ update-name #(if fill-values?
+ (if (str/empty? %)
+ (str ctv/value-prefix num)
+ (str % ", " ctv/value-prefix num))
+ %)]
+ [(inc num)
+ (-> changes
+ (pcb/update-component (:id component)
+ #(update % :variant-properties update-props)
+ {:apply-changes-local-library? true})
+ (pcb/update-shapes [main-id] #(update % :variant-name update-name)))]))
+ [1 changes]
+ related-components)]
+ changes))
+
+(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)]
+ (-> changes
+ (pcb/update-component (:component-id shape)
+ #(-> (dissoc % :variant-id :variant-properties)
+ (assoc :name cname
+ :path cpath))
+ {:apply-changes-local-library? true})
+ (pcb/update-shapes [(:id shape)]
+ #(-> (dissoc % :variant-id :variant-name)
+ (assoc :name new-name))))))
+
+(defn generate-make-shapes-no-variant
+ [changes shapes]
+ (reduce generate-make-shape-no-variant changes shapes))
+
+
+(defn- generate-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)
+ props (ctv/merge-properties base-properties
+ (:variant-properties component))
+ new-props (- min-props
+ (+ (count props)
+ (if add-name? 1 0)))
+ props (ctv/add-new-props props (repeat new-props ""))]
+
+ (if add-name?
+ (ctv/add-new-prop props (:name component))
+ props)))
+
+(defn- generate-new-properties-from-non-variant
+ [shape min-props container-name base-properties]
+ (let [;; Remove container name from shape name if present
+ shape-name (ctv/remove-prefix (:name shape) container-name)]
+ (ctv/path-to-properties shape-name base-properties min-props)))
+
+
+(defn generate-make-shapes-variant
+ [changes shapes variant-container]
+ (let [data (pcb/get-library-data changes)
+ objects (pcb/get-objects changes)
+ variant-id (:id variant-container)
+
+ ;; If we are cut-pasting a variant-container, this will be null
+ ;; because it hasn't any shapes yet
+ first-comp-id (->> variant-container
+ :shapes
+ first
+ (get objects)
+ :component-id)
+
+ base-props (->> (get-in data [:components first-comp-id :variant-properties])
+ (map #(assoc % :value "")))
+ num-base-props (count base-props)
+
+ [cpath cname] (cfh/parse-path-name (:name variant-container))
+ container-name (:name variant-container)
+
+ generate-new-properties
+ (fn [shape min-props]
+ (if (ctk/is-variant? shape)
+ (generate-new-properties-from-variant shape min-props data container-name base-props)
+ (generate-new-properties-from-non-variant shape min-props container-name base-props)))
+
+ total-props (reduce (fn [m shape]
+ (max m (count (generate-new-properties shape num-base-props))))
+ 0
+ shapes)
+
+ num-new-props (if (or (zero? num-base-props)
+ (< total-props num-base-props))
+ 0
+ (- total-props num-base-props))
+
+ changes (nth
+ (iterate #(generate-add-new-property % variant-id) changes)
+ num-new-props)
+
+ changes (pcb/update-shapes changes (map :id shapes)
+ #(assoc % :variant-id variant-id
+ :name (:name variant-container)))]
+ (reduce
+ (fn [changes shape]
+ (if (or (zero? num-base-props)
+ (= variant-id (:variant-id shape)))
+ changes ;; do nothing more if we aren't changing the parent or there are no base props
+ (let [props (generate-new-properties shape total-props)
+ variant-name (ctv/properties-to-name props)]
+ (-> (pcb/update-component changes
+ (:component-id shape)
+ #(assoc % :variant-id variant-id
+ :variant-properties props
+ :name cname
+ :path cpath)
+ {:apply-changes-local-library? true})
+ (pcb/update-shapes [(:id shape)]
+ #(assoc % :variant-name variant-name))))))
+ changes
+ shapes)))
\ No newline at end of file
diff --git a/common/src/app/common/logic/variants.cljc b/common/src/app/common/logic/variants.cljc
index c624c757bc..73573d48d3 100644
--- a/common/src/app/common/logic/variants.cljc
+++ b/common/src/app/common/logic/variants.cljc
@@ -1,160 +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.common.logic.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.types.components-list :as ctcl]
- [cuerdas.core :as str]))
+ [app.common.files.variant :as cfv]
+ [app.common.logic.libraries :as cll]
+ [app.common.logic.variant-properties :as clvp]
+ [app.common.types.variant :as ctv]))
+(defn generate-add-new-variant
+ [changes shape variant-id new-component-id new-shape-id prop-num]
+ (let [data (pcb/get-library-data changes)
+ objects (pcb/get-objects changes)
+ component-id (:component-id shape)
+ value (str ctv/value-prefix
+ (-> (cfv/extract-properties-values data objects variant-id)
+ last
+ :value
+ count
+ inc))
-(def property-prefix "Property")
-(def property-regex (re-pattern (str property-prefix "(\\d+)")))
-(def value-prefix "Value")
-
-(defn find-related-components
- "Find a list of the components thet belongs to this variant-id"
- [data objects variant-id]
- (->> (dm/get-in objects [variant-id :shapes])
- (map #(dm/get-in objects [% :component-id]))
- (map #(ctcl/get-component data % true))
- reverse))
-
-
-(defn properties-to-name
- "Transform the properties into a name, with the values separated by comma"
- [properties]
- (->> properties
- (map :value)
- (remove str/empty?)
- (str/join ", ")))
-
-
-(defn next-property-number
- "Returns the next property number, to avoid duplicates on the property names"
- [properties]
- (let [numbers (keep
- #(some->> (:name %) (re-find property-regex) second d/parse-integer)
- properties)
- max-num (if (seq numbers)
- (apply max numbers)
- 0)]
- (inc (max max-num (count properties)))))
-
-
-(defn path-to-properties
- "From a list of properties and a name with path, assign each token of the
- path as value of a different property"
- [path properties]
- (let [next-prop-num (next-property-number properties)
- cpath (cfh/split-path path)
- assigned (mapv #(assoc % :value (nth cpath %2 "")) properties (range))
- remaining (drop (count properties) cpath)
- new-properties (map-indexed (fn [i v] {:name (str property-prefix (+ next-prop-num i))
- :value v}) remaining)]
- (into assigned new-properties)))
-
-(defn- dashes-to-end
- [property-values]
- (let [dashes (if (some #(= % "--") property-values) ["--"] [])]
- (concat (remove #(= % "--") property-values) dashes)))
-
-
-(defn extract-properties-values
- [data objects variant-id]
- (->> (find-related-components data objects variant-id)
- (mapcat :variant-properties)
- (group-by :name)
- (map (fn [[k v]]
- {:name k
- :value (->> v
- (map #(if (str/empty? (:value %)) "--" (:value %)))
- distinct
- dashes-to-end)}))))
-
-
-(defn generate-update-property-name
- [changes variant-id pos new-name]
- (let [data (pcb/get-library-data changes)
- objects (pcb/get-objects changes)
- related-components (find-related-components data objects variant-id)]
- (reduce (fn [changes component]
- (pcb/update-component
- changes (:id component)
- #(assoc-in % [:variant-properties pos :name] new-name)
- {:apply-changes-local-library? true}))
- changes
- related-components)))
-
-
-(defn generate-remove-property
- [changes variant-id pos]
- (let [data (pcb/get-library-data changes)
- objects (pcb/get-objects changes)
- related-components (find-related-components data objects variant-id)]
- (reduce (fn [changes component]
- (let [props (:variant-properties component)
- props (d/remove-at-index props pos)
- main-id (:main-instance-id component)
- name (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-update-property-value
- [changes component-id pos value]
- (let [data (pcb/get-library-data changes)
- component (ctcl/get-component data component-id true)
- main-id (:main-instance-id component)
- name (-> (:variant-properties component)
- (update pos assoc :value value)
- properties-to-name)]
+ [new-shape changes] (-> changes
+ (cll/generate-duplicate-component
+ {:data data}
+ component-id
+ new-component-id
+ {:new-shape-id new-shape-id :apply-changes-local-library? true}))]
(-> changes
- (pcb/update-component component-id #(assoc-in % [:variant-properties pos :value] value)
- {:apply-changes-local-library? true})
- (pcb/update-shapes [main-id] #(assoc % :variant-name name)))))
-
-
-(defn generate-add-new-property
- [changes variant-id & {:keys [fill-values?]}]
- (let [data (pcb/get-library-data changes)
- objects (pcb/get-objects changes)
- related-components (find-related-components data objects variant-id)
-
- props (-> related-components first :variant-properties)
- next-prop-num (next-property-number props)
- property-name (str property-prefix next-prop-num)
-
- [_ changes]
- (reduce (fn [[num changes] component]
- (let [main-id (:main-instance-id component)
-
- update-props #(-> (d/nilv % [])
- (conj {:name property-name
- :value (if fill-values? (str value-prefix num) "")}))
-
- update-name #(if fill-values?
- (if (str/empty? %)
- (str value-prefix num)
- (str % ", " value-prefix num))
- %)]
- [(inc num)
- (-> changes
- (pcb/update-component (:id component)
- #(update % :variant-properties update-props)
- {:apply-changes-local-library? true})
- (pcb/update-shapes [main-id] #(update % :variant-name update-name)))]))
- [1 changes]
- related-components)]
- changes))
-
+ (clvp/generate-update-property-value new-component-id prop-num value)
+ (pcb/change-parent (:parent-id shape) [new-shape] 0))))
diff --git a/common/src/app/common/schema.cljc b/common/src/app/common/schema.cljc
index 64eaa1f9b9..8f68ea051a 100644
--- a/common/src/app/common/schema.cljc
+++ b/common/src/app/common/schema.cljc
@@ -113,6 +113,10 @@
[schema]
(mu/optional-keys schema default-options))
+(defn required-keys
+ [schema]
+ (mu/required-keys schema default-options))
+
(defn transformer
[& transformers]
(apply mt/transformer transformers))
@@ -145,11 +149,30 @@
;; :else
;; o))
+(defn -transform-map-keys
+ ([f]
+ (let [xform (map (fn [[k v]] [(f k) v]))]
+ #(cond->> % (map? %) (into (empty %) xform))))
+ ([ks f]
+ (let [xform (map (fn [[k v]] [(cond-> k (contains? ks k) f) v]))]
+ #(cond->> % (map? %) (into (empty %) xform)))))
+
(defn json-transformer
[]
- (mt/transformer
- (mt/json-transformer)
- (mt/collection-transformer)))
+ (let [map-of-key-decoders (mt/-string-decoders)]
+ (mt/transformer
+ {:name :json
+ :decoders (-> (mt/-json-decoders)
+ (assoc :map-of {:compile (fn [schema _]
+ (let [key-schema (some-> schema (m/children) (first))]
+ (or (some-> key-schema (m/type) map-of-key-decoders
+ (mt/-interceptor schema {}) (m/-intercepting)
+ (m/-comp m/-keyword->string)
+ (mt/-transform-if-valid key-schema)
+ (-transform-map-keys))
+ (-transform-map-keys m/-keyword->string))))}))
+ :encoders (mt/-json-encoders)}
+ (mt/collection-transformer))))
(defn string-transformer
[]
@@ -874,7 +897,7 @@
{:title "inst"
:description "Satisfies Inst protocol"
:error/message "should be an instant"
- :gen/gen (->> (sg/small-int)
+ :gen/gen (->> (sg/small-int :min 0 :max 100000)
(sg/fmap (fn [v] (tm/parse-instant v))))
:decode/string tm/parse-instant
diff --git a/common/src/app/common/svg/path.cljc b/common/src/app/common/svg/path.cljc
index ac89be9d06..5951002a18 100644
--- a/common/src/app/common/svg/path.cljc
+++ b/common/src/app/common/svg/path.cljc
@@ -40,76 +40,3 @@
(map (fn [segment]
(.toPersistentMap ^js segment)))
(parser/parse path-str)))))
-
-#?(:cljs
- (defn content->buffer
- "Converts the path content into binary format."
- [content]
- (let [total (count content)
- ssize 28
- buffer (new js/ArrayBuffer (* total ssize))
- dview (new js/DataView buffer)]
- (loop [index 0]
- (when (< index total)
- (let [segment (nth content index)
- offset (* index ssize)]
- (case (:command segment)
- :move-to
- (let [{:keys [x y]} (:params segment)]
- (.setInt16 dview (+ offset 0) 1)
- (.setFloat32 dview (+ offset 20) x)
- (.setFloat32 dview (+ offset 24) y))
- :line-to
- (let [{:keys [x y]} (:params segment)]
- (.setInt16 dview (+ offset 0) 2)
- (.setFloat32 dview (+ offset 20) x)
- (.setFloat32 dview (+ offset 24) y))
- :curve-to
- (let [{:keys [c1x c1y c2x c2y x y]} (:params segment)]
- (.setInt16 dview (+ offset 0) 3)
- (.setFloat32 dview (+ offset 4) c1x)
- (.setFloat32 dview (+ offset 8) c1y)
- (.setFloat32 dview (+ offset 12) c2x)
- (.setFloat32 dview (+ offset 16) c2y)
- (.setFloat32 dview (+ offset 20) x)
- (.setFloat32 dview (+ offset 24) y))
-
- :close-path
- (.setInt16 dview (+ offset 0) 4))
- (recur (inc index)))))
- buffer)))
-
-#?(:cljs
- (defn buffer->content
- "Converts the a buffer to a path content vector"
- [buffer]
- (assert (instance? js/ArrayBuffer buffer) "expected ArrayBuffer instance")
- (let [ssize 28
- total (/ (.-byteLength buffer) ssize)
- dview (new js/DataView buffer)]
- (loop [index 0
- result []]
- (if (< index total)
- (let [offset (* index ssize)
- type (.getInt16 dview (+ offset 0))
- command (case type
- 1 :move-to
- 2 :line-to
- 3 :curve-to
- 4 :close-path)
- params (case type
- 1 {:x (.getFloat32 dview (+ offset 20))
- :y (.getFloat32 dview (+ offset 24))}
- 2 {:x (.getFloat32 dview (+ offset 20))
- :y (.getFloat32 dview (+ offset 24))}
- 3 {:c1x (.getFloat32 dview (+ offset 4))
- :c1y (.getFloat32 dview (+ offset 8))
- :c2x (.getFloat32 dview (+ offset 12))
- :c2y (.getFloat32 dview (+ offset 16))
- :x (.getFloat32 dview (+ offset 20))
- :y (.getFloat32 dview (+ offset 24))}
- 4 {})]
- (recur (inc index)
- (conj result {:command command
- :params params})))
- result)))))
diff --git a/common/src/app/common/svg/path/bool.cljc b/common/src/app/common/svg/path/bool.cljc
index 11fe314a83..40bb9cc825 100644
--- a/common/src/app/common/svg/path/bool.cljc
+++ b/common/src/app/common/svg/path/bool.cljc
@@ -10,6 +10,7 @@
[app.common.geom.point :as gpt]
[app.common.geom.rect :as grc]
[app.common.geom.shapes.path :as gsp]
+ [app.common.math :as mth]
[app.common.svg.path.command :as upc]
[app.common.svg.path.subpath :as ups]))
@@ -233,6 +234,45 @@
(gsp/command->point current)
(conj result (dissoc current :prev)))))))
+(defn remove-duplicated-segments
+ "Remove from the content segments"
+ [content]
+ (letfn [;; This is a comparator for float points with a precission
+ ;; used to remove already existing segments
+ (comparator [[fx1 fy1 tx1 ty1 :as v1] [fx2 fy2 tx2 ty2 :as v2]]
+ (if (and (mth/close? tx1 tx2)
+ (mth/close? ty1 ty2)
+ (mth/close? fx1 fx2)
+ (mth/close? fy1 fy2))
+ 0 ;; equal
+ (compare v1 v2)))]
+
+ (loop [current (first content)
+ content (rest content)
+ segments (sorted-set-by comparator)
+ result []]
+
+ (if (nil? current)
+ result
+
+ (let [fx (-> current :prev :x)
+ fy (-> current :prev :y)
+ tx (-> current :params :x)
+ ty (-> current :params :y)
+
+ result
+ (cond-> result
+ (and (not (contains? segments [fx fy tx ty]))
+ (not (contains? segments [tx ty fx fy])))
+ (conj current))
+
+ segments (conj segments [fx fy tx ty])]
+
+ (recur (first content)
+ (rest content)
+ segments
+ result))))))
+
(defn create-union [content-a content-a-split content-b content-b-split sr-a sr-b]
;; Pick all segments in content-a that are not inside content-b
;; Pick all segments in content-b that are not inside content-a
@@ -312,15 +352,17 @@
content-a-split (->> content-a-split add-previous (filter is-segment?))
content-b-split (->> content-b-split add-previous (filter is-segment?))
- bool-content
+ content
(case bool-type
:union (create-union content-a content-a-split content-b content-b-split sr-a sr-b)
:difference (create-difference content-a content-a-split content-b content-b-split sr-a sr-b)
:intersection (create-intersection content-a content-a-split content-b content-b-split sr-a sr-b)
:exclude (create-exclusion content-a-split content-b-split))]
- (->> (fix-move-to bool-content)
- (ups/close-subpaths))))
+ (-> content
+ remove-duplicated-segments
+ fix-move-to
+ ups/close-subpaths)))
(defn content-bool
[bool-type contents]
@@ -331,4 +373,3 @@
(reduce (partial content-bool-pair bool-type))
(into []))
[]))
-
diff --git a/common/src/app/common/svg/path/subpath.cljc b/common/src/app/common/svg/path/subpath.cljc
index 2000debb39..d5117f5f84 100644
--- a/common/src/app/common/svg/path/subpath.cljc
+++ b/common/src/app/common/svg/path/subpath.cljc
@@ -126,7 +126,7 @@
(pt= (:from subpath) (:to subpath)))
(defn close-subpaths
- "Searches a path for possible supaths that can create closed loops and merge them"
+ "Searches a path for possible subpaths that can create closed loops and merge them"
[content]
(let [subpaths (get-subpaths content)
closed-subpaths
diff --git a/common/src/app/common/svg/shapes_builder.cljc b/common/src/app/common/svg/shapes_builder.cljc
index 97d738a3bf..90e0889512 100644
--- a/common/src/app/common/svg/shapes_builder.cljc
+++ b/common/src/app/common/svg/shapes_builder.cljc
@@ -435,16 +435,12 @@
attrs
(-> attrs
- (cond-> linecap
- (dissoc :strokeLinecap))
(cond-> (some? color)
(dissoc :stroke :strokeWidth :strokeOpacity))
(update
:style
(fn [style]
(-> style
- (cond-> linecap
- (dissoc :strokeLinecap))
(cond-> (some? color)
(dissoc :stroke :strokeWidth :strokeOpacity)))))
(d/without-nils))]
@@ -461,12 +457,14 @@
(and (some? linecap) (cfh/path-shape? shape)
(or (= linecap :round) (= linecap :square)))
+
(assoc :stroke-cap-start linecap
- :stroke-cap-end linecap)
+ :stroke-cap-end linecap
+ :stroke-linecap linecap)
(d/any-key? (dm/get-in shape [:strokes 0])
:strokeColor :strokeOpacity :strokeWidth
- :strokeCapStart :strokeCapEnd)
+ :strokeLinecap :strokeCapStart :strokeCapEnd)
(assoc-in [:strokes 0 :stroke-style] :svg))))
(defn setup-opacity [shape]
diff --git a/common/src/app/common/test_helpers/components.cljc b/common/src/app/common/test_helpers/components.cljc
index 666406d52b..687be91871 100644
--- a/common/src/app/common/test_helpers/components.cljc
+++ b/common/src/app/common/test_helpers/components.cljc
@@ -31,7 +31,7 @@
"Need that root is already a frame"
(cfh/frame-shape? root))
- (let [[_new-root _new-shapes updated-shapes]
+ (let [[_new-root updated-shapes]
(ctn/convert-shape-in-component root (:objects page) (:id file))
updated-root (first updated-shapes) ; Can't use new-root because it has a new id
@@ -54,8 +54,7 @@
:name name
:path path
:main-instance-id (:id updated-root)
- :main-instance-page (:id page)
- :shapes updated-shapes))))))))
+ :main-instance-page (:id page)))))))))
(defn update-component
[file component-label & {:keys [] :as params}]
@@ -98,7 +97,6 @@
component
(:data library)
(gpt/point 100 100)
- true
{:force-id (thi/new-id! copy-root-label)
:force-frame-id frame-id})
diff --git a/common/src/app/common/test_helpers/compositions.cljc b/common/src/app/common/test_helpers/compositions.cljc
index 82ebf5c58c..2d890844a7 100644
--- a/common/src/app/common/test_helpers/compositions.cljc
+++ b/common/src/app/common/test_helpers/compositions.cljc
@@ -85,7 +85,7 @@
& {:keys [component-params root-params child-params]}]
;; Generated shape tree:
;; {:root-label} [:name Frame1] # [Component :component-label]
- ;; :child-label [:name Rect1]
+ ;; :child-label [:name Rect1]
(-> file
(add-frame-with-child root-label child-label :frame-params root-params :child-params child-params)
(thc/make-component component-label root-label component-params)))
@@ -95,7 +95,7 @@
& {:keys [component-params main-root-params main-child-params copy-root-params]}]
;; Generated shape tree:
;; {:main-root-label} [:name Frame1] # [Component :component-label]
- ;; :main-child-label [:name Rect1]
+ ;; :main-child-label [:name Rect1]
;;
;; :copy-root-label [:name Frame1] #--> [Component :component-label] :main-root-label
;; [:name Rect1] ---> :main-child-label
@@ -113,9 +113,9 @@
& {:keys [component-params root-params child-params-list]}]
;; Generated shape tree:
;; {:root-label} [:name Frame1] # [Component :component-label]
- ;; :child1-label [:name Rect1]
- ;; :child2-label [:name Rect2]
- ;; :child3-label [:name Rect3]
+ ;; :child1-label [:name Rect1]
+ ;; :child2-label [:name Rect2]
+ ;; :child3-label [:name Rect3]
(as-> file $
(add-frame $ root-label root-params)
(reduce (fn [file [index [label params]]]
@@ -134,9 +134,9 @@
& {:keys [component-params main-root-params main-child-params-list copy-root-params]}]
;; Generated shape tree:
;; {:root-label} [:name Frame1] # [Component :component-label]
- ;; :child1-label [:name Rect1]
- ;; :child2-label [:name Rect2]
- ;; :child3-label [:name Rect3]
+ ;; :child1-label [:name Rect1]
+ ;; :child2-label [:name Rect2]
+ ;; :child3-label [:name Rect3]
;;
;; :copy-root-label [:name Frame1] #--> [Component :component-label] :root-label
;; [:name Rect1] ---> :child1-label
@@ -156,7 +156,7 @@
& {:keys [component1-params root1-params main1-child-params component2-params main2-root-params nested-head-params]}]
;; Generated shape tree:
;; {:main1-root-label} [:name Frame1] # [Component :component1-label]
- ;; :main1-child-label [:name Rect1]
+ ;; :main1-child-label [:name Rect1]
;;
;; {:main2-root-label} [:name Frame2] # [Component :component2-label]
;; :nested-head-label [:name Frame1] @--> [Component :component1-label] :main1-root-label
@@ -183,7 +183,7 @@
& {:keys [component1-params root1-params main1-child-params component2-params main2-root-params nested-head-params copy2-root-params]}]
;; Generated shape tree:
;; {:main1-root-label} [:name Frame1] # [Component :component1-label]
- ;; :main1-child-label [:name Rect1]
+ ;; :main1-child-label [:name Rect1]
;;
;; {:main2-root-label} [:name Frame2] # [Component :component2-label]
;; :nested-head-label [:name Frame1] @--> [Component :component1-label] :main1-root-label
@@ -336,8 +336,7 @@
file
{file-id file}
(ctn/make-container container :page)
- (:id shape)
- true))
+ (:id shape)))
file' (thf/apply-changes file changes)]
(if propagate-fn
(propagate-fn file')
@@ -361,7 +360,7 @@
(:objects page)
#{(-> (ths/get-shape file shape-tag :page-label page-label)
:id)}
- {:components-v2 true})
+ {})
file' (thf/apply-changes file changes)]
(if propagate-fn
(propagate-fn file')
@@ -380,7 +379,7 @@
(gpt/point 0 0) ;; delta
{(:id file) file} ;; libraries
(:data file) ;; library-data
- (:id file)) ;; file-id
+ (:id file)) ;; file-id
(cll/generate-duplicate-changes-update-indices (:objects page) ;; objects
#{(:id shape)}))
file' (thf/apply-changes file changes)]
diff --git a/common/src/app/common/test_helpers/variants.cljc b/common/src/app/common/test_helpers/variants.cljc
index 804dd3c7e7..e9a76d0628 100644
--- a/common/src/app/common/test_helpers/variants.cljc
+++ b/common/src/app/common/test_helpers/variants.cljc
@@ -22,4 +22,18 @@
(thc/make-component component1-label root1-label)
(thc/update-component component1-label {:variant-id variant-id :variant-properties [{:name "Property1" :value "Value1"}]})
(thc/make-component component2-label root2-label)
- (thc/update-component component2-label {:variant-id variant-id :variant-properties [{:name "Property1" :value "Value1"}]}))))
+ (thc/update-component component2-label {:variant-id variant-id :variant-properties [{:name "Property1" :value "Value2"}]}))))
+
+(defn add-variant-two-properties
+ [file variant-label component1-label root1-label component2-label root2-label
+ & {:keys []}]
+ (let [file (ths/add-sample-shape file variant-label :type :frame :is-variant-container true)
+ variant-id (thi/id variant-label)]
+
+ (-> file
+ (ths/add-sample-shape root2-label :type :frame :parent-label variant-label :variant-id variant-id :variant-name "p1v2, p2v2")
+ (ths/add-sample-shape root1-label :type :frame :parent-label variant-label :variant-id variant-id :variant-name "p1v1, p2v1")
+ (thc/make-component component1-label root1-label)
+ (thc/update-component component1-label {:variant-id variant-id :variant-properties [{:name "Property1" :value "p1v1"} {:name "Property2" :value "p2v1"}]})
+ (thc/make-component component2-label root2-label)
+ (thc/update-component component2-label {:variant-id variant-id :variant-properties [{:name "Property1" :value "p1v2"} {:name "Property2" :value "p2v2"}]}))))
diff --git a/common/src/app/common/types/component.cljc b/common/src/app/common/types/component.cljc
index 14844153e9..09aa6b6f17 100644
--- a/common/src/app/common/types/component.cljc
+++ b/common/src/app/common/types/component.cljc
@@ -10,6 +10,7 @@
[app.common.schema :as sm]
[app.common.types.page :as ctp]
[app.common.types.plugins :as ctpg]
+ [app.common.types.variant :as ctv]
[cuerdas.core :as str]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -17,15 +18,17 @@
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def schema:component
- [:map
- [:id ::sm/uuid]
- [:name :string]
- [:path {:optional true} [:maybe :string]]
- [:modified-at {:optional true} ::sm/inst]
- [:objects {:gen/max 10 :optional true} ::ctp/objects]
- [:main-instance-id ::sm/uuid]
- [:main-instance-page ::sm/uuid]
- [:plugin-data {:optional true} ::ctpg/plugin-data]])
+ [:merge
+ [:map
+ [:id ::sm/uuid]
+ [:name :string]
+ [:path {:optional true} [:maybe :string]]
+ [:modified-at {:optional true} ::sm/inst]
+ [:objects {:gen/max 10 :optional true} ::ctp/objects]
+ [:main-instance-id ::sm/uuid]
+ [:main-instance-page ::sm/uuid]
+ [:plugin-data {:optional true} ::ctpg/plugin-data]]
+ ::ctv/variant-component])
(sm/register! ::component schema:component)
@@ -90,8 +93,8 @@
:constraints-h :constraints-group
:constraints-v :constraints-group
:fixed-scroll :constraints-group
- :bool-type :bool-group
- :bool-content :bool-group
+ :bool-type :content-group
+ :bool-content :content-group
:exports :exports-group
:grids :grids-group
@@ -179,10 +182,8 @@
(= (:component-file shape) file-id)))
(defn is-main-of?
- [shape-main shape-inst components-v2]
- (or (= (:shape-ref shape-inst) (:id shape-main))
- (and (= (:shape-ref shape-inst) (:shape-ref shape-main))
- (not components-v2))))
+ [shape-main shape-inst]
+ (= (:shape-ref shape-inst) (:id shape-main)))
(defn main-instance?
"Check if this shape is the root of the main instance of some
@@ -333,8 +334,6 @@
(let [parent (get objects (:parent-id shape))]
;; We don't want to change the structure of component copies
(and (not (in-component-copy-not-head? shape))
- ;; We don't want to duplicate variants
- (not (is-variant? shape))
;; Non instance, non copy. We allow
(or (not (instance-head? shape))
(not (in-component-copy? parent))))))
diff --git a/common/src/app/common/types/components_list.cljc b/common/src/app/common/types/components_list.cljc
index 1139a6a66b..fd75341681 100644
--- a/common/src/app/common/types/components_list.cljc
+++ b/common/src/app/common/types/components_list.cljc
@@ -34,20 +34,12 @@
(assoc component :modified-at (dt/now)))
(defn add-component
- [fdata {:keys [id name path main-instance-id main-instance-page shapes annotation variant-id variant-properties]}]
- (let [components-v2 (dm/get-in fdata [:options :components-v2])
- fdata (update fdata :components assoc id (touch {:id id :name name :path path}))]
- (if components-v2
- (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)
- variant-properties (update-in [:components id] assoc :variant-properties variant-properties))
-
- (let [wrap-object-fn cfeat/*wrap-with-objects-map-fn*]
- (assoc-in fdata [:components id :objects]
- (->> shapes
- (d/index-by :id)
- (wrap-object-fn)))))))
+ [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}))]
+ (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)
+ variant-properties (update-in [:components id] assoc :variant-properties variant-properties))))
(defn mod-component
[file-data {:keys [id name path main-instance-id main-instance-page objects annotation variant-id variant-properties modified-at]}]
@@ -119,7 +111,6 @@
[file-data component-id f & args]
(d/update-in-when file-data [:components component-id] #(-> (apply f % args)
(touch))))
-
(defn set-component-modified
[file-data component-id]
(update-component file-data component-id identity))
diff --git a/common/src/app/common/types/container.cljc b/common/src/app/common/types/container.cljc
index 6b714fb465..bfb6d09e2e 100644
--- a/common/src/app/common/types/container.cljc
+++ b/common/src/app/common/types/container.cljc
@@ -267,67 +267,8 @@
new-children (->> (cfh/get-children objects (:id root))
(map #(dissoc % :component-root)))]
[(assoc new-root :id new-id)
- nil
(into [new-root] new-children)]))
-(defn make-component-shape ;; Only used for components v1
- "Clone the shape and all children. Generate new ids and detach
- from parent and frame. Update the original shapes to have links
- to the new ones."
- [shape objects file-id components-v2]
- (assert (nil? (:component-id shape)))
- (assert (nil? (:component-file shape)))
- (assert (nil? (:shape-ref shape)))
- (let [frame-ids-map (volatile! {})
-
- ;; Ensure that the component root is not an instance
- update-new-shape (fn [new-shape original-shape]
- (when (= (:type original-shape) :frame)
- (vswap! frame-ids-map assoc (:id original-shape) (:id new-shape)))
-
- (cond-> new-shape
- true
- (dissoc :component-root)
-
- (nil? (:parent-id new-shape))
- (dissoc :component-id
- :component-file
- :shape-ref)))
-
- ;; Make the original shape an instance of the new component.
- ;; If one of the original shape children already was a component
- ;; instance, maintain this instanceness untouched.
- update-original-shape (fn [original-shape new-shape]
- (cond-> original-shape
- (nil? (:shape-ref original-shape))
- (-> (assoc :shape-ref (:id new-shape))
- (dissoc :touched))
-
- (nil? (:parent-id new-shape))
- (assoc :component-id (:id new-shape)
- :component-file file-id
- :component-root true)
-
- (and (nil? (:parent-id new-shape)) components-v2)
- (assoc :main-instance true)
-
- (some? (:parent-id new-shape))
- (dissoc :component-root)))
-
- [new-root-shape new-shapes updated-shapes]
- (ctst/clone-shape shape
- nil
- objects
- :update-new-shape update-new-shape
- :update-original-shape update-original-shape)
-
- ;; If frame-id points to a shape inside the component, remap it to the
- ;; corresponding new frame shape. If not, set it to nil.
- remap-frame-id (fn [shape]
- (update shape :frame-id #(get @frame-ids-map % nil)))]
-
- [new-root-shape (map remap-frame-id new-shapes) updated-shapes]))
-
(defn remove-swap-keep-attrs
"Remove flex children properties except the fit-content for flex layouts. These are properties
that we don't have to propagate to copies but will be respected when swapping components"
@@ -352,20 +293,18 @@
WARNING: This process does not remap media references (on fills, strokes, ...); that is
delegated to an async process on the backend side that checks unreferenced shapes and
automatically creates correct references."
- ([page component library-data position components-v2]
- (make-component-instance page component library-data position components-v2 {}))
- ([page component library-data position components-v2
+ ([page component library-data position]
+ (make-component-instance page component library-data position {}))
+ ([page component library-data position
{:keys [main-instance? force-id force-frame-id keep-ids?]
:or {main-instance? false force-id nil force-frame-id nil keep-ids? false}}]
- (let [component-page (when components-v2
- (ctpl/get-page library-data (:main-instance-page component)))
+ (let [component-page (ctpl/get-page library-data (:main-instance-page component))
+
+ component-shape (-> (get-shape component-page (:main-instance-id component))
+ (assoc :parent-id nil) ;; On v2 we force parent-id to nil in order to behave like v1
+ (assoc :frame-id uuid/zero)
+ (remove-swap-keep-attrs))
- component-shape (if components-v2
- (-> (get-shape component-page (:main-instance-id component))
- (assoc :parent-id nil) ;; On v2 we force parent-id to nil in order to behave like v1
- (assoc :frame-id uuid/zero)
- (remove-swap-keep-attrs))
- (get-shape component (:id component)))
orig-pos (gpt/point (:x component-shape) (:y component-shape))
delta (gpt/subtract position orig-pos)
@@ -395,8 +334,7 @@
update-new-shape
(fn [new-shape original-shape]
(let [new-name (:name new-shape)
- root? (or (ctk/instance-root? original-shape) ; If shape is inside a component (not components-v2)
- (nil? (:parent-id original-shape)))] ; we detect it by having no parent)
+ root? (ctk/instance-root? original-shape)]
(when root?
(vswap! unames conj new-name))
@@ -417,10 +355,8 @@
main-instance?
(dissoc :shape-ref)
- (and (not main-instance?)
- (or components-v2 ; In v1, shape-ref points to the remote instance
- (nil? (:shape-ref original-shape)))) ; in v2, shape-ref points to the near instance
- (assoc :shape-ref (:id original-shape))
+ (not main-instance?)
+ (assoc :shape-ref (:id original-shape)) ; shape-ref points to the near instance
(nil? (:parent-id original-shape))
(assoc :component-id (:id component)
@@ -428,14 +364,14 @@
:component-root true
:name new-name)
- (or (some? (:parent-id original-shape)) ; On v2 we have removed the parent-id for component roots (see above)
+ (or (some? (:parent-id original-shape)) ; On v2 we have removed the parent-id for component roots
(some? component-frame))
(dissoc :component-root))))
[new-shape new-shapes _]
(ctst/clone-shape component-shape
frame-id
- (if components-v2 (:objects component-page) (:objects component))
+ (:objects component-page)
:update-new-shape update-new-shape
:force-id force-id
:keep-ids? keep-ids?
@@ -545,21 +481,39 @@
no-changes?
(and (every? #(= parent-id (:parent-id %)) children)
(not pasting?))
+
+ ;; When pasting frames, children have the frames and their children
+ ;; We need to check only the top shapes
+ children-ids (set (map :id children))
+ top-children (remove #(contains? children-ids (:parent-id %)) children)
+
+ ;; Are all the top-children a main-instance of a component?
all-main?
- (every? ctk/main-instance? children)
+ (every? ctk/main-instance? top-children)
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 variant-container, all the items should be main
- (or all-main? (not (ctk/is-variant-container? parent)))
;; If we are moving into a main component, no descendant can be main
- (or (nil? any-main-descendant) (not (ctk/main-instance? parent)))))
+ (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?)))
[parent-id (get-frame parent-id)]
(recur (:parent-id parent) objects children pasting? libraries))))))
@@ -602,8 +556,7 @@
;; TODO: the check of :width and :height probably may be
;; removed after the check added in
- ;; data/workspace/modifiers/check-delta function. Better check
- ;; it and test toroughly when activating components-v2 mode.
+ ;; data/workspace/modifiers/check-delta function.
in-copy?
(ctk/in-component-copy? shape)
diff --git a/common/src/app/common/types/file.cljc b/common/src/app/common/types/file.cljc
index c6f029ac57..dbe637f457 100644
--- a/common/src/app/common/types/file.cljc
+++ b/common/src/app/common/types/file.cljc
@@ -130,7 +130,7 @@
(some? page-id)
(ctpl/add-page page)
- (contains? cfeat/*current* "components/v2")
+ :always
(assoc-in [:options :components-v2] true)))))
(defn make-file
@@ -221,48 +221,45 @@
(ctpl/get-page file-data (:main-instance-page component)))
(defn get-component-container
- "Retrieve the container that holds the component shapes (the page in components-v2
- or the component itself in v1 or deleted component)."
+ "Retrieve the container that holds the component shapes (the page
+ or the component itself on deleted component)."
[file-data component]
- (let [components-v2 (dm/get-in file-data [:options :components-v2])]
- (if (and components-v2 (not (:deleted component)))
- (let [component-page (get-component-page file-data component)]
- (cfh/make-container component-page :page))
- (cfh/make-container component :component))))
+ (if (not (:deleted component))
+ (let [component-page (get-component-page file-data component)]
+ (cfh/make-container component-page :page))
+ (cfh/make-container component :component)))
(defn get-component-root
"Retrieve the root shape of the component."
[file-data component]
- (let [components-v2 (dm/get-in file-data [:options :components-v2])]
- (if (and components-v2 (not (:deleted component)))
- (-> file-data
- (get-component-page component)
- (ctn/get-shape (:main-instance-id component)))
- (ctk/get-component-root component))))
+ (if (not (:deleted component))
+ (-> file-data
+ (get-component-page component)
+ (ctn/get-shape (:main-instance-id component)))
+ (ctk/get-component-root component)))
(defn get-component-shape
"Retrieve one shape in the component by id. If with-context? is true, add the
file and container where the shape resides in its metadata."
[file-data component shape-id & {:keys [with-context?] :or {with-context? false}}]
- (let [components-v2 (dm/get-in file-data [:options :components-v2])]
- (if (and components-v2 (not (:deleted component)))
- (let [component-page (get-component-page file-data component)]
- (when component-page
- (let [child (cfh/get-child (:objects component-page)
- (:main-instance-id component)
- shape-id)]
- (cond-> child
- (and child with-context?)
- (with-meta {:file {:id (:id file-data)
- :data file-data}
- :container (ctn/make-container component-page :page)})))))
+ (if (not (:deleted component))
+ (let [component-page (get-component-page file-data component)]
+ (when component-page
+ (let [child (cfh/get-child (:objects component-page)
+ (:main-instance-id component)
+ shape-id)]
+ (cond-> child
+ (and child with-context?)
+ (with-meta {:file {:id (:id file-data)
+ :data file-data}
+ :container (ctn/make-container component-page :page)})))))
- (let [shape (dm/get-in component [:objects shape-id])]
- (cond-> shape
- (and shape with-context?)
- (with-meta {:file {:id (:id file-data)
- :data file-data}
- :container (ctn/make-container component :component)}))))))
+ (let [shape (dm/get-in component [:objects shape-id])]
+ (cond-> shape
+ (and shape with-context?)
+ (with-meta {:file {:id (:id file-data)
+ :data file-data}
+ :container (ctn/make-container component :component)})))))
(defn get-ref-shape
"Retrieve the shape in the component that is referenced by the instance shape."
@@ -384,12 +381,11 @@
(defn get-component-shapes
"Retrieve all shapes of the component"
[file-data component]
- (let [components-v2 (dm/get-in file-data [:options :components-v2])]
- (if (and components-v2
- (not (:deleted component))) ;; the deleted components have its children in the :objects property
- (let [instance-page (get-component-page file-data component)]
- (cfh/get-children-with-self (:objects instance-page) (:main-instance-id component)))
- (vals (:objects component)))))
+
+ (if (not (:deleted component)) ;; the deleted components have its children in the :objects property
+ (let [instance-page (get-component-page file-data component)]
+ (cfh/get-children-with-self (:objects instance-page) (:main-instance-id component)))
+ (vals (:objects component))))
;; Return true if the object is a component that exists on the file or its libraries (even a deleted one)
(defn is-main-of-known-component?
@@ -403,44 +399,52 @@
(defn load-component-objects
"Add an :objects property to the component, with only the shapes that belong to it"
- [file-data component]
- (let [components-v2 (dm/get-in file-data [:options :components-v2])]
- (if (and components-v2 component (empty? (:objects component))) ;; This operation may be called twice, e.g. in an idempotent change
- (let [component-page (get-component-page file-data component)
- page-objects (:objects component-page)
- objects (->> (cons (:main-instance-id component)
- (cfh/get-children-ids page-objects (:main-instance-id component)))
- (map #(get page-objects %))
- (d/index-by :id))]
- (assoc component :objects objects))
- component)))
+ ([file-data component]
+ (load-component-objects file-data component (gpt/point 0 0)))
+ ([file-data component delta]
+ (if (and component (empty? (:objects component))) ;; This operation may be called twice, e.g. in an idempotent change
+ (let [component-page (get-component-page file-data component)
+ page-objects (:objects component-page)
+ objects (->> (cons (:main-instance-id component)
+ (cfh/get-children-ids page-objects (:main-instance-id component)))
+ (map #(get page-objects %))
+ ;; when it is an undo of a cut-paste, we need to undo the movement
+ ;; of the shapes so we need to move them delta
+ (map #(gsh/move % delta))
+ (d/index-by :id))]
+ (assoc component :objects objects))
+ component)))
(defn delete-component
"Mark a component as deleted and store the main instance shapes iside it, to
be able to be recovered later."
- [file-data component-id skip-undelete? main-instance]
- (let [components-v2 (dm/get-in file-data [:options :components-v2])]
- (if (or (not components-v2) skip-undelete?)
+ [file-data component-id skip-undelete? delta]
+ (let [delta (or delta (gpt/point 0 0))]
+ (if skip-undelete?
(ctkl/delete-component file-data component-id)
- (let [set-main-instance ;; If there is a saved main-instance, restore it. This happens on the restore-component action
- #(if main-instance
- (assoc-in % [:objects (:main-instance-id %)] main-instance)
- %)]
- (-> file-data
- (ctkl/update-component component-id (partial load-component-objects file-data))
- (ctkl/update-component component-id set-main-instance)
- (ctkl/mark-component-deleted component-id))))))
+ (-> file-data
+ (ctkl/update-component component-id #(load-component-objects file-data % delta))
+ (ctkl/mark-component-deleted component-id)))))
(defn restore-component
"Recover a deleted component and all its shapes and put all this again in place."
[file-data component-id page-id]
- (let [components-v2 (dm/get-in file-data [:options :components-v2])
- update-page? (and components-v2 (not (nil? page-id)))]
- (-> file-data
- (ctkl/update-component component-id #(dissoc % :objects))
- (ctkl/mark-component-undeleted component-id)
- (cond-> update-page?
- (ctkl/update-component component-id #(assoc % :main-instance-page page-id))))))
+ (let [update-page? (not (nil? page-id))
+ component (ctkl/get-component file-data component-id true)
+ main-instance-page (or page-id (:main-instance-page component))
+ main-instance (dm/get-in file-data [:pages-index main-instance-page
+ :objects (:main-instance-id component)])]
+ (cond-> file-data
+ :always
+ (->
+ (ctkl/update-component component-id #(dissoc % :objects))
+ (ctkl/mark-component-undeleted component-id))
+
+ update-page?
+ (ctkl/update-component component-id #(assoc % :main-instance-page page-id))
+
+ (ctk/is-variant? component)
+ (ctkl/update-component component-id #(assoc % :variant-id (:variant-id main-instance))))))
(defn purge-component
"Remove permanently a component."
@@ -557,7 +561,6 @@
component
library-data
position
- (dm/get-in file-data [:options :components-v2])
{:main-instance? true
:keep-ids? true})
@@ -589,8 +592,7 @@
:name (:name component)
:path (:path component)
:main-instance-id (:id main-instance-shape)
- :main-instance-page page-id
- :shapes (get-component-shapes library-data component)}))
+ :main-instance-page page-id}))
; Change all existing instances to point to the local file
remap-instances
diff --git a/common/src/app/common/types/shape.cljc b/common/src/app/common/types/shape.cljc
index fc70ff61e1..b7d50a1c16 100644
--- a/common/src/app/common/types/shape.cljc
+++ b/common/src/app/common/types/shape.cljc
@@ -32,6 +32,7 @@
[app.common.types.shape.shadow :as ctss]
[app.common.types.shape.text :as ctsx]
[app.common.types.token :as cto]
+ [app.common.types.variant :as ctv]
[app.common.uuid :as uuid]
[clojure.set :as set]))
@@ -233,7 +234,7 @@
[:map {:title "BoolAttrs"}
[:shapes [:vector {:gen/max 10 :gen/min 1} ::sm/uuid]]
[:bool-type [::sm/one-of bool-types]]
- [:bool-content ::ctsp/content]])
+ [:content ::ctsp/content]])
(def ^:private schema:rect-attrs
[:map {:title "RectAttrs"}])
@@ -317,7 +318,9 @@
schema:frame-attrs
schema:shape-attrs
schema:shape-geom-attrs
- schema:shape-base-attrs]]
+ schema:shape-base-attrs
+ ::ctv/variant-shape
+ ::ctv/variant-container]]
[:bool
[:merge {:title "BoolShape"}
diff --git a/common/src/app/common/types/shape/path.cljc b/common/src/app/common/types/shape/path.cljc
index 1fd33bd45c..8e102c7e0f 100644
--- a/common/src/app/common/types/shape/path.cljc
+++ b/common/src/app/common/types/shape/path.cljc
@@ -6,7 +6,16 @@
(ns app.common.types.shape.path
(:require
- [app.common.schema :as sm]))
+ [app.common.schema :as sm])
+ (:import
+ #?(:cljs [goog.string StringBuffer]
+ :clj [java.nio ByteBuffer])))
+
+#?(:clj (set! *warn-on-reflection* true))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; SCHEMA: PLAIN FORMAT
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def schema:line-to-segment
[:map
@@ -52,5 +61,371 @@
(def schema:path-content
[:vector schema:path-segment])
+(def check-path-content
+ (sm/check-fn schema:path-content))
+
(sm/register! ::segment schema:path-segment)
(sm/register! ::content schema:path-content)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; TYPE: PATH-DATA
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(def ^:const SEGMENT-BYTE-SIZE 28)
+
+(defprotocol IPathData
+ (-write-to [_ buffer offset] "write the content to the specified buffer"))
+
+(defrecord PathSegment [command params])
+
+(defn- get-path-string
+ "Format the path data structure to string"
+ [buffer size]
+ (let [builder #?(:clj (java.lang.StringBuilder. (int (* size 4)))
+ :cljs (StringBuffer.))]
+ (loop [index 0]
+ (when (< index size)
+ (let [offset (* index SEGMENT-BYTE-SIZE)
+ type #?(:clj (.getShort ^ByteBuffer buffer offset)
+ :cljs (.getInt16 buffer offset))]
+ (case (long type)
+ 1 (let [x #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 20))
+ :cljs (.getFloat32 buffer (+ offset 20)))
+ y #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 24))
+ :cljs (.getFloat32 buffer (+ offset 24)))]
+ (doto builder
+ (.append "M")
+ (.append x)
+ (.append ",")
+ (.append y)))
+ 2 (let [x #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 20))
+ :cljs (.getFloat32 buffer (+ offset 20)))
+ y #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 24))
+ :cljs (.getFloat32 buffer (+ offset 24)))]
+ (doto builder
+ (.append "L")
+ (.append x)
+ (.append ",")
+ (.append y)))
+
+ 3 (let [c1x #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 4))
+ :cljs (.getFloat32 buffer (+ offset 4)))
+ c1y #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 8))
+ :cljs (.getFloat32 buffer (+ offset 8)))
+ c2x #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 12))
+ :cljs (.getFloat32 buffer (+ offset 12)))
+ c2y #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 16))
+ :cljs (.getFloat32 buffer (+ offset 16)))
+ x #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 20))
+ :cljs (.getFloat32 buffer (+ offset 20)))
+ y #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 24))
+ :cljs (.getFloat32 buffer (+ offset 24)))]
+ (doto builder
+ (.append "C")
+ (.append c1x)
+ (.append ",")
+ (.append c1y)
+ (.append ",")
+ (.append c2x)
+ (.append ",")
+ (.append c2y)
+ (.append ",")
+ (.append x)
+ (.append ",")
+ (.append y)))
+ 4 (doto builder
+ (.append "Z")))
+ (recur (inc index)))))
+
+ (.toString builder)))
+
+(defn- read-segment
+ [buffer index]
+ (let [offset (* index SEGMENT-BYTE-SIZE)
+ type #?(:clj (.getShort ^ByteBuffer buffer offset)
+ :cljs (.getInt16 buffer offset))]
+ (case (long type)
+ 1 (let [x #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 20))
+ :cljs (.getFloat32 buffer (+ offset 20)))
+ y #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 24))
+ :cljs (.getFloat32 buffer (+ offset 24)))]
+ (->PathSegment :move-to {:x x :y y}))
+
+ 2 (let [x #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 20))
+ :cljs (.getFloat32 buffer (+ offset 20)))
+ y #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 24))
+ :cljs (.getFloat32 buffer (+ offset 24)))]
+ (->PathSegment :line-to {:x x :y y}))
+
+ 3 (let [c1x #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 4))
+ :cljs (.getFloat32 buffer (+ offset 4)))
+ c1y #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 8))
+ :cljs (.getFloat32 buffer (+ offset 8)))
+ c2x #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 12))
+ :cljs (.getFloat32 buffer (+ offset 12)))
+ c2y #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 16))
+ :cljs (.getFloat32 buffer (+ offset 16)))
+ x #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 20))
+ :cljs (.getFloat32 buffer (+ offset 20)))
+ y #?(:clj (.getFloat ^ByteBuffer buffer (+ offset 24))
+ :cljs (.getFloat32 buffer (+ offset 24)))]
+
+ (->PathSegment :curve-to {:x x :y y :c1x c1x :c1y c1y :c2x c2x :c2y c2y}))
+
+ 4 (->PathSegment :close-path {}))))
+
+(defn- in-range?
+ [size i]
+ (and (< i size) (>= i 0)))
+
+#?(:clj
+ (deftype PathData [size buffer]
+ Object
+ (toString [_]
+ (get-path-string buffer size))
+
+ clojure.lang.Sequential
+ clojure.lang.IPersistentCollection
+
+ (empty [_]
+ (throw (ex-info "not implemented" {})))
+ (equiv [_ other]
+ (if (instance? PathData other)
+ (.equals ^ByteBuffer buffer (.-buffer ^PathData other))
+ false))
+
+ (seq [this]
+ (when (pos? size)
+ (->> (range size)
+ (map (fn [i] (nth this i))))))
+
+ (cons [_ _val]
+ (throw (ex-info "not implemented" {})))
+
+ clojure.lang.IReduceInit
+ (reduce [_ f start]
+ (loop [index 0
+ result start]
+ (if (< index size)
+ (let [result (f result (read-segment buffer index))]
+ (if (reduced? result)
+ @result
+ (recur (inc index) result)))
+ result)))
+
+ clojure.lang.Indexed
+ (nth [_ i]
+ (if (in-range? size i)
+ (read-segment buffer i)
+ nil))
+
+ (nth [_ i default]
+ (if (in-range? size i)
+ (read-segment buffer i)
+ default))
+
+ clojure.lang.Counted
+ (count [_] size))
+
+ :cljs
+ (deftype PathData [size buffer dview]
+ Object
+ (toString [_]
+ (get-path-string dview size))
+
+ IPathData
+ (-write-to [_ into-buffer offset]
+ (assert (instance? js/ArrayBuffer into-buffer) "expected an instance of Uint32Array")
+ (let [size (.-byteLength buffer)
+ mem (js/Uint32Array. into-buffer offset size)]
+ (.set mem (js/Uint32Array. buffer))))
+
+ cljs.core/ISequential
+ cljs.core/IEquiv
+ (-equiv [_ other]
+ (if (instance? PathData other)
+ (let [obuffer (.-buffer other)
+ osize (.-byteLength obuffer)
+ csize (.-byteLength buffer)]
+ (if (= osize csize)
+ (let [cb (js/Uint32Array. buffer)
+ ob (js/Uint32Array. obuffer)]
+ (loop [i 0]
+ (if (< i osize)
+ (if (= (aget ob i)
+ (aget cb i))
+ (recur (inc i))
+ false)
+ true)))
+ false))
+ false))
+
+ cljs.core/IReduce
+ (-reduce [_ f]
+ (loop [index 1
+ result (if (pos? size)
+ (read-segment dview 0)
+ nil)]
+ (if (< index size)
+ (let [result (f result (read-segment dview index))]
+ (if (reduced? result)
+ @result
+ (recur (inc index) result)))
+ result)))
+
+ (-reduce [_ f start]
+ (loop [index 0
+ result start]
+ (if (< index size)
+ (let [result (f result (read-segment dview index))]
+ (if (reduced? result)
+ @result
+ (recur (inc index) result)))
+ result)))
+
+ cljs.core/IHash
+ (-hash [_]
+ (throw (ex-info "not-implemented" {})))
+
+ cljs.core/ICounted
+ (-count [_] size)
+
+ cljs.core/IIndexed
+ (-nth [_ i]
+ (if (in-range? size i)
+ (read-segment dview i)
+ nil))
+
+ (-nth [_ i default]
+ (if (in-range? i size)
+ (read-segment dview i)
+ default))
+
+ cljs.core/ISeqable
+ (-seq [this]
+ (when (pos? size)
+ (->> (range size)
+ (map (fn [i] (cljs.core/-nth this i))))))))
+
+(defn- from-bytes
+ [buffer]
+ #?(:clj
+ (cond
+ (instance? ByteBuffer buffer)
+ (let [size (.capacity ^ByteBuffer buffer)
+ count (long (/ size SEGMENT-BYTE-SIZE))]
+ (PathData. count buffer))
+
+ (bytes? buffer)
+ (let [size (alength ^bytes buffer)
+ count (long (/ size SEGMENT-BYTE-SIZE))]
+ (PathData. count
+ (ByteBuffer/wrap buffer)))
+
+ :else
+ (throw (java.lang.IllegalArgumentException. "invalid data provided")))
+
+ :cljs
+ (cond
+ (instance? js/ArrayBuffer buffer)
+ (let [size (.-byteLength buffer)
+ count (long (/ size SEGMENT-BYTE-SIZE))]
+ (PathData. count
+ buffer
+ (js/DataView. buffer)))
+
+ (instance? js/DataView buffer)
+ (let [dview buffer
+ buffer (.-buffer dview)
+ size (.-byteLength buffer)
+ count (long (/ size SEGMENT-BYTE-SIZE))]
+ (PathData. count buffer dview))
+
+ :else
+ (throw (js/Error. "invalid data provided")))))
+
+;; FIXME: consider implementing with reduce
+;; FIXME: consider ensure fixed precision for avoid doing it on formatting
+
+(defn- from-plain
+ "Create a PathData instance from plain data structures"
+ [content]
+ (assert (check-path-content content))
+
+ (let [content (vec content)
+ total (count content)
+ #?@(:cljs [buffer (new js/ArrayBuffer (* total SEGMENT-BYTE-SIZE))
+ dview (new js/DataView buffer)]
+ :clj [buffer (ByteBuffer/allocate (* total SEGMENT-BYTE-SIZE))])]
+ (loop [index 0]
+ (when (< index total)
+ (let [segment (nth content index)
+ offset (* index SEGMENT-BYTE-SIZE)]
+ (case (get segment :command)
+ :move-to
+ (let [params (get segment :params)
+ x (float (get params :x))
+ y (float (get params :y))]
+ #?(:clj (.putShort buffer (int offset) (short 1))
+ :cljs (.setInt16 dview offset 1))
+ #?(:clj (.putFloat buffer (+ offset 20) x)
+ :cljs (.setFloat32 dview (+ offset 20) x))
+ #?(:clj (.putFloat buffer (+ offset 24) y)
+ :cljs (.setFloat32 dview (+ offset 24) y)))
+
+ :line-to
+ (let [params (get segment :params)
+ x (float (get params :x))
+ y (float (get params :y))]
+ #?(:clj (.putShort buffer (int offset) (short 2))
+ :cljs (.setInt16 dview offset 2))
+ #?(:clj (.putFloat buffer (+ offset 20) x)
+ :cljs (.setFloat32 dview (+ offset 20) x))
+ #?(:clj (.putFloat buffer (+ offset 24) y)
+ :cljs (.setFloat32 dview (+ offset 24) y)))
+
+ :curve-to
+ (let [params (get segment :params)
+ x (float (get params :x))
+ y (float (get params :y))
+ c1x (float (get params :c1x x))
+ c1y (float (get params :c1y y))
+ c2x (float (get params :c2x x))
+ c2y (float (get params :c2y y))]
+
+ #?(:clj (.putShort buffer (int offset) (short 3))
+ :cljs (.setInt16 dview offset 3))
+ #?(:clj (.putFloat buffer (+ offset 4) c1x)
+ :cljs (.setFloat32 dview (+ offset 4) c1x))
+ #?(:clj (.putFloat buffer (+ offset 8) c1y)
+ :cljs (.setFloat32 dview (+ offset 8) c1y))
+ #?(:clj (.putFloat buffer (+ offset 12) c2x)
+ :cljs (.setFloat32 dview (+ offset 12) c2x))
+ #?(:clj (.putFloat buffer (+ offset 16) c2y)
+ :cljs (.setFloat32 dview (+ offset 16) c2y))
+ #?(:clj (.putFloat buffer (+ offset 20) x)
+ :cljs (.setFloat32 dview (+ offset 20) x))
+ #?(:clj (.putFloat buffer (+ offset 24) y)
+ :cljs (.setFloat32 dview (+ offset 24) y)))
+
+ :close-path
+ #?(:clj (.putShort buffer (int offset) (short 4))
+ :cljs (.setInt16 dview offset 4)))
+ (recur (inc index)))))
+
+ #?(:cljs (from-bytes dview)
+ :clj (from-bytes buffer))))
+
+(defn path-data
+ "Create an instance of PathData, returns itself if it is already
+ PathData instance"
+ [data]
+ (cond
+ (instance? PathData data)
+ data
+
+ (sequential? data)
+ (from-plain data)
+
+ :else
+ (from-bytes data)))
diff --git a/common/src/app/common/types/token.cljc b/common/src/app/common/types/token.cljc
index f269e2cca8..e406027d3c 100644
--- a/common/src/app/common/types/token.cljc
+++ b/common/src/app/common/types/token.cljc
@@ -66,16 +66,6 @@
[n]
(string? n))
-;; TODO Move this to tokens-lib
-(sm/register!
- ^{::sm/type ::token}
- [:map {:title "Token"}
- [:name token-name-ref]
- [:type [::sm/one-of token-types]]
- [:value :any]
- [:description {:optional true} [:maybe :string]]
- [:modified-at {:optional true} ::sm/inst]])
-
(sm/register!
^{::sm/type ::color}
[:map
diff --git a/common/src/app/common/types/token_theme.cljc b/common/src/app/common/types/token_theme.cljc
deleted file mode 100644
index 5177fb1c33..0000000000
--- a/common/src/app/common/types/token_theme.cljc
+++ /dev/null
@@ -1,28 +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.common.types.token-theme
- (:require
- [app.common.schema :as sm]))
-
-(sm/register!
- ^{::sm/type ::token-theme}
- [:map {:title "TokenTheme"}
- [:name :string]
- [:group :string]
- [:description [:maybe :string]]
- [:is-source :boolean]
- [:id :string]
- [:modified-at {:optional true} ::sm/inst]
- [:sets :any]])
-
-(sm/register!
- ^{::sm/type ::token-set}
- [:map {:title "TokenSet"}
- [:name :string]
- [:description {:optional true} [:maybe :string]]
- [:modified-at {:optional true} ::sm/inst]
- [:tokens {:optional true} :any]])
diff --git a/common/src/app/common/types/tokens_lib.cljc b/common/src/app/common/types/tokens_lib.cljc
index 06b190340e..ffed9c3949 100644
--- a/common/src/app/common/types/tokens_lib.cljc
+++ b/common/src/app/common/types/tokens_lib.cljc
@@ -9,7 +9,9 @@
#?(:clj [app.common.fressian :as fres])
[app.common.data :as d]
[app.common.data.macros :as dm]
+ [app.common.files.helpers :as cfh]
[app.common.schema :as sm]
+ [app.common.schema.generators :as sg]
[app.common.time :as dt]
[app.common.transit :as t]
[app.common.types.token :as cto]
@@ -117,12 +119,15 @@
[:name cto/token-name-ref]
[:type [::sm/one-of cto/token-types]]
[:value :any]
- [:description [:maybe :string]]
- [:modified-at ::sm/inst]])
+ [:description {:optional true} :string]
+ [:modified-at {:optional true} ::sm/inst]])
+
+(declare make-token)
(def schema:token
- [:and
- schema:token-attrs
+ [:and {:gen/gen (->> (sg/generator schema:token-attrs)
+ (sg/fmap #(make-token %)))}
+ (sm/required-keys schema:token-attrs)
[:fn token?]])
(def check-token
@@ -321,6 +326,7 @@
(assoc-in [:ids temp-id] token))))
{:tokens-tree {} :ids {}} tokens))
+
(defprotocol ITokenSet
(update-name [_ set-name] "change a token set name while keeping the path")
(add-token [_ token] "add a token at the end of the list")
@@ -380,15 +386,32 @@
(def schema:token-set-attrs
[:map {:title "TokenSet"}
[:name :string]
- [:description [:maybe :string]]
- [:modified-at ::sm/inst]
- [:tokens [:and
- [:map-of {:gen/max 5} :string schema:token]
- [:fn d/ordered-map?]]]])
+ [:description {:optional true} :string]
+ [:modified-at {:optional true} ::sm/inst]
+ [:tokens {:optional true
+ :gen/gen (->> (sg/generator [:map-of ::sm/text schema:token])
+ (sg/fmap #(into (d/ordered-map) %)))}
+ [:and
+ [:map-of {:gen/max 5
+ :decode/json (fn [v]
+ (cond
+ (d/ordered-map? v)
+ v
+
+ (map? v)
+ (into (d/ordered-map) v)
+
+ :else
+ v))}
+ :string schema:token]
+ [:fn d/ordered-map?]]]])
+
+(declare make-token-set)
(def schema:token-set
- [:and
- schema:token-set-attrs
+ [:and {:gen/gen (->> (sg/generator schema:token-set-attrs)
+ (sg/fmap #(make-token-set %)))}
+ (sm/required-keys schema:token-set-attrs)
[:fn token-set?]])
(sm/register! ::token-set schema:token-set)
@@ -552,16 +575,16 @@
(def schema:token-theme-attrs
[:map {:title "TokenTheme"}
[:name :string]
- [:group :string]
- [:description [:maybe :string]]
- [:is-source [:maybe :boolean]]
- [:id :string]
- [:modified-at ::sm/inst]
- [:sets [:set {:gen/max 5} :string]]])
+ [:group {:optional true} :string]
+ [:description {:optional true} :string]
+ [:is-source {:optional true} :boolean]
+ [:id {:optional true} :string]
+ [:modified-at {:optional true} ::sm/inst]
+ [:sets {:optional true} [:set {:gen/max 5} :string]]])
(def schema:token-theme
[:and
- schema:token-theme-attrs
+ (sm/required-keys schema:token-theme-attrs)
[:fn token-theme?]])
(sm/register! ::token-theme schema:token-theme)
@@ -803,7 +826,7 @@
(map-indexed (fn [index item]
(assoc item :index index))))))
-(defn- flatten-nested-tokens-json
+(defn flatten-nested-tokens-json
"Recursively flatten the dtcg token structure, joining keys with '.'."
[tokens token-path]
(reduce-kv
@@ -830,7 +853,7 @@
(declare make-tokens-lib)
-(defn- legacy-nodes->dtcg-nodes [sets-data]
+(defn legacy-nodes->dtcg-nodes [sets-data]
(walk/postwalk
(fn [node]
(cond-> node
@@ -866,8 +889,6 @@ Will return a value that matches this schema:
(get-active-themes-set-tokens [_] "set of set names that are active in the the active themes")
(encode-dtcg [_] "Encodes library to a dtcg compatible json string")
(decode-dtcg-json [_ parsed-json] "Decodes parsed json containing tokens and converts to library")
- (decode-single-set-json [_ set-name tokens] "Decodes parsed json containing single token set and converts to library")
- (decode-single-set-legacy-json [_ set-name tokens] "Decodes parsed legacy json containing single token set and converts to library")
(decode-legacy-json [_ parsed-json] "Decodes parsed legacy json containing tokens and converts to library")
(get-all-tokens [_] "all tokens in the lib")
(validate [_]))
@@ -922,6 +943,7 @@ Will return a value that matches this schema:
this)))
+
(delete-set [_ set-name]
(let [prefixed-path (set-name->prefixed-full-path set-name)]
(TokensLib. (d/dissoc-in sets prefixed-path)
@@ -1311,17 +1333,6 @@ Will return a value that matches this schema:
(assoc-in ["$metadata" "activeThemes"] active-themes-clear)
(assoc-in ["$metadata" "activeSets"] active-sets))))
- (decode-single-set-json [this set-name tokens]
- (assert (map? tokens) "expected a map data structure for `data`")
-
- (add-set this (make-token-set :name (normalize-set-name set-name)
- :tokens (flatten-nested-tokens-json tokens ""))))
-
-
- (decode-single-set-legacy-json [this set-name tokens]
- (assert (map? tokens) "expected a map data structure for `data`")
- (decode-single-set-json this set-name (legacy-nodes->dtcg-nodes tokens)))
-
(decode-dtcg-json [_ data]
(assert (map? data) "expected a map data structure for `data`")
@@ -1481,6 +1492,14 @@ Will return a value that matches this schema:
{:encode/json encode-dtcg
:decode/json decode-dtcg}})
+(defn duplicate-set [set-name lib & {:keys [suffix]}]
+ (let [sets (get-sets lib)
+ unames (map :name sets)
+ copy-name (cfh/generate-unique-name set-name unames :suffix suffix)]
+ (some-> (get-set lib set-name)
+ (assoc :name copy-name)
+ (assoc :modified-at (dt/now)))))
+
(sm/register! type:tokens-lib)
;; === Serialization handlers for RPC API (transit) and database (fressian)
diff --git a/common/src/app/common/types/variant.cljc b/common/src/app/common/types/variant.cljc
new file mode 100644
index 0000000000..3fe90b92e7
--- /dev/null
+++ b/common/src/app/common/types/variant.cljc
@@ -0,0 +1,281 @@
+;; 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.types.variant
+ (:require
+ [app.common.data :as d]
+ [app.common.files.helpers :as cfh]
+ [app.common.math :as math]
+ [app.common.schema :as sm]
+ [cuerdas.core :as str]))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; SCHEMA
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(def schema:variant-property
+ [:map
+ [:name :string]
+ [:value :string]])
+
+(def schema:variant-component
+ ;; A component that is part of a variant set.
+ [:map
+ [:variant-id {:optional true} ::sm/uuid]
+ [:variant-properties {:optional true} [:vector schema:variant-property]]])
+
+(def schema:variant-shape
+ ;; The root shape of the main instance of a variant component.
+ [:map
+ [:variant-id {:optional true} ::sm/uuid]
+ [:variant-name {:optional true} :string]])
+
+(def schema:variant-container
+ ;; is a board that contains all variant components of a variant set,
+ ;; for grouping them visually in the workspace.
+ [:map
+ [:is-variant-container {:optional true} :boolean]])
+
+(sm/register! ::variant-property schema:variant-property)
+(sm/register! ::variant-component schema:variant-component)
+(sm/register! ::variant-shape schema:variant-shape)
+(sm/register! ::variant-container schema:variant-container)
+
+(def valid-variant-component?
+ (sm/check-fn schema:variant-component))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(def property-prefix "Property")
+(def property-regex (re-pattern (str property-prefix "(\\d+)")))
+(def value-prefix "Value ")
+
+
+(defn properties-to-name
+ "Transform the properties into a name, with the values separated by comma"
+ [properties]
+ (->> properties
+ (map :value)
+ (remove str/empty?)
+ (str/join ", ")))
+
+
+(defn next-property-number
+ "Returns the next property number, to avoid duplicates on the property names"
+ [properties]
+ (let [numbers (keep
+ #(some->> (:name %) (re-find property-regex) second d/parse-integer)
+ properties)
+ max-num (if (seq numbers)
+ (apply max numbers)
+ 0)]
+ (inc (max max-num (count properties)))))
+
+(defn add-new-prop
+ "Adds a new property with generated name and provided value to the existing props list."
+ [props value]
+ (conj props {:name (str property-prefix (next-property-number props))
+ :value value}))
+
+(defn add-new-props
+ "Adds new properties with generated names and provided values to the existing props list."
+ [props values]
+ (let [next-prop-num (next-property-number props)
+ xf (map-indexed (fn [i v]
+ {:name (str property-prefix (+ next-prop-num i))
+ :value v}))]
+ (into props xf values)))
+
+(defn path-to-properties
+ "From a list of properties and a name with path, assign each token of the
+ path as value of a different property"
+ ([path properties]
+ (path-to-properties path properties 0))
+ ([path properties min-props]
+ (let [cpath (cfh/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
+ cpath (take total-props (concat cpath (repeat "")))
+ remaining (drop (count properties) cpath)]
+ (add-new-props assigned remaining))))
+
+
+(defn properties-map-to-string
+ "Transforms a map of properties to a string of properties omitting the empty ones"
+ [properties]
+ (->> properties
+ (keep (fn [{:keys [name value]}]
+ (when (not (str/blank? value))
+ (str name "=" value))))
+ (str/join ", ")))
+
+
+(defn properties-string-to-map
+ "Transforms a string of properties to a map of properties"
+ [s]
+ (->> (str/split s ",")
+ (mapv #(str/split % "="))
+ (mapv (fn [[k v]]
+ {:name (str/trim k)
+ :value (str/trim v)}))))
+
+
+(defn valid-properties-string?
+ "Checks if a string of properties has a processable format or not"
+ [s]
+ (let [pattern #"^([a-zA-Z0-9\s]+=[a-zA-Z0-9\s]+)(,\s*[a-zA-Z0-9\s]+=[a-zA-Z0-9\s]+)*$"]
+ (not (nil? (re-matches pattern s)))))
+
+
+(defn find-properties-to-remove
+ "Compares two property maps to find which properties should be removed"
+ [prev-props upd-props]
+ (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 find-index-for-property-name
+ "Finds the index of a name in a property map"
+ [props name]
+ (some (fn [[idx prop]]
+ (when (= (:name prop) name)
+ idx))
+ (map-indexed vector props)))
+
+(defn remove-prefix
+ "Removes the given prefix (with or without a trailing ' / ') from the beginning of the name"
+ [name prefix]
+ (let [long-name (str prefix " / ")]
+ (cond
+ (str/starts-with? name long-name)
+ (subs name (count long-name))
+
+ (str/starts-with? name prefix)
+ (subs name (count prefix))
+
+ :else
+ name)))
+
+(def ^:private xf:map-name
+ (map :name))
+
+(defn- matching-indices
+ [props1 props2]
+ (let [names-in-p2 (into #{} xf:map-name props2)
+ xform (comp
+ (map-indexed (fn [index {:keys [name]}]
+ (when (contains? names-in-p2 name)
+ index)))
+ (filter some?))]
+ (into #{} xform props1)))
+
+(defn- find-index-by-name
+ "Returns the index of the first item in props with the given name, or nil if not found."
+ [name props]
+ (some (fn [[idx item]]
+ (when (= (:name item) name)
+ idx))
+ (map-indexed vector props)))
+
+(defn- next-valid-position
+ "Returns the first non-negative integer not present in the used-pos set."
+ [used-pos]
+ (loop [p 0]
+ (if (contains? used-pos p)
+ (recur (inc p))
+ p)))
+
+(defn- find-position
+ "Returns the index of the property with the given name in `props`,
+ or the next available index not in `used-pos` if not found."
+ [name props used-pos]
+ (or (find-index-by-name name props)
+ (next-valid-position used-pos)))
+
+(defn merge-properties
+ "Merges props2 into props1 with the following rules:
+ - For each property p2 in props2:
+ - Skip it if its value is empty.
+ - If props1 contains a property with the same name, update its value with that of p2.
+ - Otherwise, assign p2's value to the first unused property in props1. A property is considered used if:
+ - Its name exists in both props1 and props2, or
+ - Its value has already been updated during the merge.
+ - If no unused properties are available in props1, append a new property with a default name and p2's value."
+ [props1 props2]
+ (let [props2 (remove #(str/empty? (:value %)) props2)]
+ (-> (reduce
+ (fn [{:keys [props used-pos]} prop]
+ (let [pos (find-position (:name prop) props used-pos)
+ used-pos (conj used-pos pos)]
+ (if (< pos (count props))
+ {:props (assoc-in (vec props) [pos :value] (:value prop)) :used-pos used-pos}
+ {:props (add-new-prop props (:value prop)) :used-pos used-pos})))
+ {:props (vec props1) :used-pos (matching-indices props1 props2)}
+ props2)
+ :props)))
+
+(defn compare-properties
+ "Compares vectors of properties keeping the value if it is the same for all
+ or setting a custom value where their values do not coincide"
+ ([props-list]
+ (compare-properties props-list nil))
+
+ ([props-list distinct-mark]
+ (let [grouped (group-by :name (apply concat props-list))
+ check-values (fn [values]
+ (let [vals (map :value values)]
+ (if (apply = vals)
+ (first vals)
+ distinct-mark)))]
+ (mapv (fn [[name values]]
+ {:name name :value (check-values values)})
+ grouped))))
+
+(defn same-variant?
+ "Determines if all elements belong to the same variant"
+ [components]
+ (let [variant-ids (distinct (map :variant-id components))
+ not-blank? (complement str/blank?)]
+ (and
+ (= 1 (count variant-ids))
+ (not-blank? (first variant-ids)))))
+
+(defn distance
+ "Computes a weighted distance between two property lists `props1` and `props2`.
+ Latter properties weight less that previous ones"
+ [props1 props2]
+ (let [total-num-props (count props1)
+ xform (map-indexed
+ (fn [idx [p1 p2]]
+ (if (not= p1 p2)
+ (math/pow 2 (- total-num-props idx))
+ 0)))]
+ (transduce
+ xform
+ +
+ (map vector props1 props2))))
+
+(defn variant-name-to-name
+ "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) #", " " / ")))
diff --git a/frontend/test/frontend_tests/tokens/token_test.cljs b/common/test/common_tests/files/tokens_test.cljc
similarity index 65%
rename from frontend/test/frontend_tests/tokens/token_test.cljs
rename to common/test/common_tests/files/tokens_test.cljc
index 0124d58404..a16b625c88 100644
--- a/frontend/test/frontend_tests/tokens/token_test.cljs
+++ b/common/test/common_tests/files/tokens_test.cljc
@@ -4,36 +4,36 @@
;;
;; Copyright (c) KALEIDOS INC
-(ns frontend-tests.tokens.token-test
+(ns common-tests.files.tokens-test
(:require
- [app.main.ui.workspace.tokens.token :as wtt]
- [cljs.test :as t :include-macros true]))
+ [app.common.files.tokens :as cft]
+ [clojure.test :as t]))
(t/deftest test-parse-token-value
(t/testing "parses double from a token value"
- (t/is (= {:value 100.1 :unit nil} (wtt/parse-token-value "100.1")))
- (t/is (= {:value -9 :unit nil} (wtt/parse-token-value "-9"))))
+ (t/is (= {:value 100.1 :unit nil} (cft/parse-token-value "100.1")))
+ (t/is (= {:value -9.0 :unit nil} (cft/parse-token-value "-9"))))
(t/testing "trims white-space"
- (t/is (= {:value -1.3 :unit nil} (wtt/parse-token-value " -1.3 "))))
+ (t/is (= {:value -1.3 :unit nil} (cft/parse-token-value " -1.3 "))))
(t/testing "parses unit: px"
- (t/is (= {:value 70.3 :unit "px"} (wtt/parse-token-value " 70.3px "))))
+ (t/is (= {:value 70.3 :unit "px"} (cft/parse-token-value " 70.3px "))))
(t/testing "parses unit: %"
- (t/is (= {:value -10 :unit "%"} (wtt/parse-token-value "-10%"))))
+ (t/is (= {:value -10.0 :unit "%"} (cft/parse-token-value "-10%"))))
(t/testing "parses unit: px")
(t/testing "returns nil for any invalid characters"
- (t/is (nil? (wtt/parse-token-value " -1.3a "))))
+ (t/is (nil? (cft/parse-token-value " -1.3a "))))
(t/testing "doesnt accept invalid double"
- (t/is (nil? (wtt/parse-token-value ".3")))))
+ (t/is (nil? (cft/parse-token-value ".3")))))
(t/deftest token-applied-test
(t/testing "matches passed token with `:token-attributes`"
- (t/is (true? (wtt/token-applied? {:name "a"} {:applied-tokens {:x "a"}} #{:x}))))
+ (t/is (true? (cft/token-applied? {:name "a"} {:applied-tokens {:x "a"}} #{:x}))))
(t/testing "doesn't match empty token"
- (t/is (nil? (wtt/token-applied? {} {:applied-tokens {:x "a"}} #{:x}))))
+ (t/is (nil? (cft/token-applied? {} {:applied-tokens {:x "a"}} #{:x}))))
(t/testing "does't match passed token `:id`"
- (t/is (nil? (wtt/token-applied? {:name "b"} {:applied-tokens {:x "a"}} #{:x}))))
+ (t/is (nil? (cft/token-applied? {:name "b"} {:applied-tokens {:x "a"}} #{:x}))))
(t/testing "doesn't match passed `:token-attributes`"
- (t/is (nil? (wtt/token-applied? {:name "a"} {:applied-tokens {:x "a"}} #{:y})))))
+ (t/is (nil? (cft/token-applied? {:name "a"} {:applied-tokens {:x "a"}} #{:y})))))
(t/deftest shapes-ids-by-applied-attributes
(t/testing "Returns set of matched attributes that fit the applied token"
@@ -54,7 +54,7 @@
shape-applied-x-y
shape-applied-all
shape-applied-none]
- expected (wtt/shapes-ids-by-applied-attributes {:name "1"} shapes attributes)]
+ expected (cft/shapes-ids-by-applied-attributes {:name "1"} shapes attributes)]
(t/is (= (:x expected) (shape-ids shape-applied-x
shape-applied-x-y
shape-applied-all)))
@@ -62,34 +62,34 @@
shape-applied-x-y
shape-applied-all)))
(t/is (= (:z expected) (shape-ids shape-applied-all)))
- (t/is (true? (wtt/shapes-applied-all? expected (shape-ids shape-applied-all) attributes)))
- (t/is (false? (wtt/shapes-applied-all? expected (apply shape-ids shapes) attributes)))
+ (t/is (true? (cft/shapes-applied-all? expected (shape-ids shape-applied-all) attributes)))
+ (t/is (false? (cft/shapes-applied-all? expected (apply shape-ids shapes) attributes)))
(shape-ids shape-applied-x
shape-applied-x-y
shape-applied-all))))
(t/deftest tokens-applied-test
(t/testing "is true when single shape matches the token and attributes"
- (t/is (true? (wtt/shapes-token-applied? {:name "a"} [{:applied-tokens {:x "a"}}
+ (t/is (true? (cft/shapes-token-applied? {:name "a"} [{:applied-tokens {:x "a"}}
{:applied-tokens {:x "b"}}]
#{:x}))))
(t/testing "is false when no shape matches the token or attributes"
- (t/is (nil? (wtt/shapes-token-applied? {:name "a"} [{:applied-tokens {:x "b"}}
+ (t/is (nil? (cft/shapes-token-applied? {:name "a"} [{:applied-tokens {:x "b"}}
{:applied-tokens {:x "b"}}]
#{:x})))
- (t/is (nil? (wtt/shapes-token-applied? {:name "a"} [{:applied-tokens {:x "a"}}
+ (t/is (nil? (cft/shapes-token-applied? {:name "a"} [{:applied-tokens {:x "a"}}
{:applied-tokens {:x "a"}}]
#{:y})))))
(t/deftest name->path-test
- (t/is (= ["foo" "bar" "baz"] (wtt/token-name->path "foo.bar.baz")))
- (t/is (= ["foo" "bar" "baz"] (wtt/token-name->path "foo..bar.baz")))
- (t/is (= ["foo" "bar" "baz"] (wtt/token-name->path "foo..bar.baz...."))))
+ (t/is (= ["foo" "bar" "baz"] (cft/token-name->path "foo.bar.baz")))
+ (t/is (= ["foo" "bar" "baz"] (cft/token-name->path "foo..bar.baz")))
+ (t/is (= ["foo" "bar" "baz"] (cft/token-name->path "foo..bar.baz...."))))
(t/deftest token-name-path-exists?-test
- (t/is (true? (wtt/token-name-path-exists? "border-radius" {"border-radius" {"sm" {:name "sm"}}})))
- (t/is (true? (wtt/token-name-path-exists? "border-radius" {"border-radius" {:name "sm"}})))
- (t/is (true? (wtt/token-name-path-exists? "border-radius.sm" {"border-radius" {:name "sm"}})))
- (t/is (true? (wtt/token-name-path-exists? "border-radius.sm.x" {"border-radius" {:name "sm"}})))
- (t/is (false? (wtt/token-name-path-exists? "other" {"border-radius" {:name "sm"}})))
- (t/is (false? (wtt/token-name-path-exists? "dark.border-radius.md" {"dark" {"border-radius" {"sm" {:name "sm"}}}}))))
+ (t/is (true? (cft/token-name-path-exists? "border-radius" {"border-radius" {"sm" {:name "sm"}}})))
+ (t/is (true? (cft/token-name-path-exists? "border-radius" {"border-radius" {:name "sm"}})))
+ (t/is (true? (cft/token-name-path-exists? "border-radius.sm" {"border-radius" {:name "sm"}})))
+ (t/is (true? (cft/token-name-path-exists? "border-radius.sm.x" {"border-radius" {:name "sm"}})))
+ (t/is (false? (cft/token-name-path-exists? "other" {"border-radius" {:name "sm"}})))
+ (t/is (false? (cft/token-name-path-exists? "dark.border-radius.md" {"dark" {"border-radius" {"sm" {:name "sm"}}}}))))
diff --git a/common/test/common_tests/logic/comp_creation_test.cljc b/common/test/common_tests/logic/comp_creation_test.cljc
index f06ca3a938..462734d6ee 100644
--- a/common/test/common_tests/logic/comp_creation_test.cljc
+++ b/common/test/common_tests/logic/comp_creation_test.cljc
@@ -40,8 +40,6 @@
(:objects page)
(:id page)
(:id file)
- true
- nil
nil)
file' (thf/apply-changes file changes)
@@ -74,8 +72,6 @@
(:objects page)
(:id page)
(:id file)
- true
- nil
cfsh/prepare-create-artboard-from-selection)
file' (thf/apply-changes file changes)
@@ -111,8 +107,6 @@
(:objects page)
(:id page)
(:id file)
- true
- nil
cfsh/prepare-create-artboard-from-selection)
file' (thf/apply-changes file changes)
@@ -151,8 +145,6 @@
(:objects page)
(:id page)
(:id file)
- true
- nil
cfsh/prepare-create-artboard-from-selection)
file' (thf/apply-changes file changes)
@@ -191,8 +183,6 @@
(:objects page)
(:id page)
(:id file)
- true
- nil
nil)
file' (thf/apply-changes file changes)
@@ -232,8 +222,6 @@
(:objects page)
(:id page)
(:id file)
- true
- nil
cfsh/prepare-create-artboard-from-selection)
file' (thf/apply-changes file changes)
@@ -265,8 +253,7 @@
changes (cll/generate-rename-component (pcb/empty-changes)
(:id component)
"Test component after"
- (:data file)
- true)
+ (:data file))
file' (thf/apply-changes file changes)
@@ -445,8 +432,8 @@
(t/is (some? copy1-child'))
(t/is (ctk/instance-root? copy1-root'))
(t/is (ctk/instance-of? copy1-root' (:id file') (:id component')))
- (t/is (ctk/is-main-of? main1-root' copy1-root' true))
- (t/is (ctk/is-main-of? main1-child' copy1-child' true))
+ (t/is (ctk/is-main-of? main1-root' copy1-root'))
+ (t/is (ctk/is-main-of? main1-child' copy1-child'))
(t/is (ctst/parent-of? copy1-root' copy1-child'))))
(t/deftest test-instantiate-component-from-lib
@@ -489,8 +476,8 @@
(t/is (some? copy1-child'))
(t/is (ctk/instance-root? copy1-root'))
(t/is (ctk/instance-of? copy1-root' (:id library) (:id component')))
- (t/is (ctk/is-main-of? main1-root' copy1-root' true))
- (t/is (ctk/is-main-of? main1-child' copy1-child' true))
+ (t/is (ctk/is-main-of? main1-root' copy1-root'))
+ (t/is (ctk/is-main-of? main1-child' copy1-child'))
(t/is (ctst/parent-of? copy1-root' copy1-child'))))
(t/deftest test-instantiate-nested-component
@@ -533,8 +520,8 @@
(t/is (some? copy1-child'))
(t/is (ctk/instance-root? copy1-root'))
(t/is (ctk/instance-of? copy1-root' (:id file') (:id component')))
- (t/is (ctk/is-main-of? main1-root' copy1-root' true))
- (t/is (ctk/is-main-of? main1-child' copy1-child' true))
+ (t/is (ctk/is-main-of? main1-root' copy1-root'))
+ (t/is (ctk/is-main-of? main1-child' copy1-child'))
(t/is (ctst/parent-of? copy1-root' copy1-child'))))
(t/deftest test-instantiate-nested-component-from-lib
@@ -580,8 +567,8 @@
(t/is (some? copy1-child'))
(t/is (ctk/instance-root? copy1-root'))
(t/is (ctk/instance-of? copy1-root' (:id library) (:id component')))
- (t/is (ctk/is-main-of? main1-root' copy1-root' true))
- (t/is (ctk/is-main-of? main1-child' copy1-child' true))
+ (t/is (ctk/is-main-of? main1-root' copy1-root'))
+ (t/is (ctk/is-main-of? main1-child' copy1-child'))
(t/is (ctst/parent-of? copy1-root' copy1-child'))))
(t/deftest test-detach-copy
diff --git a/common/test/common_tests/logic/comp_reset_test.cljc b/common/test/common_tests/logic/comp_reset_test.cljc
index 04abcbeeb4..23894cc398 100644
--- a/common/test/common_tests/logic/comp_reset_test.cljc
+++ b/common/test/common_tests/logic/comp_reset_test.cljc
@@ -47,8 +47,7 @@
file-mdf
{(:id file-mdf) file-mdf}
page-mdf
- (:id copy-root)
- true)
+ (:id copy-root))
file' (thf/apply-changes file changes)
@@ -99,8 +98,7 @@
{(:id file-mdf) file-mdf
(:id library) library}
page-mdf
- (:id copy-root)
- true)
+ (:id copy-root))
file' (thf/apply-changes file changes)
@@ -151,8 +149,7 @@
file-mdf
{(:id file-mdf) file-mdf}
page-mdf
- (:id copy-root)
- true)
+ (:id copy-root))
file' (thf/apply-changes file changes)
@@ -198,8 +195,7 @@
file-mdf
{(:id file-mdf) file-mdf}
page-mdf
- (:id copy-root)
- true)
+ (:id copy-root))
file' (thf/apply-changes file changes)
@@ -246,8 +242,7 @@
file-mdf
{(:id file-mdf) file-mdf}
page-mdf
- (:id copy-root)
- true)
+ (:id copy-root))
file' (thf/apply-changes file changes)
@@ -291,8 +286,7 @@
file-mdf
{(:id file-mdf) file-mdf}
page-mdf
- (:id copy2-root)
- true)
+ (:id copy2-root))
file' (thf/apply-changes file changes)
@@ -338,8 +332,7 @@
file-mdf
{(:id file-mdf) file-mdf}
page-mdf
- (:id copy2-root)
- true)
+ (:id copy2-root))
file' (thf/apply-changes file changes)
diff --git a/common/test/common_tests/logic/comp_sync_test.cljc b/common/test/common_tests/logic/comp_sync_test.cljc
index e5e5d42652..a52ea3d373 100644
--- a/common/test/common_tests/logic/comp_sync_test.cljc
+++ b/common/test/common_tests/logic/comp_sync_test.cljc
@@ -227,7 +227,7 @@
(t/is (= (:touched copy-root') nil))
(t/is (= (:touched copy-new-child') nil))
(t/is (ctst/parent-of? copy-root' copy-new-child'))
- (t/is (ctk/is-main-of? main-free-shape' copy-new-child' true))))
+ (t/is (ctk/is-main-of? main-free-shape' copy-new-child'))))
(t/deftest test-sync-when-deleting-shape
(let [;; ==== Setup
diff --git a/common/test/common_tests/logic/token_test.cljc b/common/test/common_tests/logic/token_test.cljc
index 93548f39a1..a68a96b2a2 100644
--- a/common/test/common_tests/logic/token_test.cljc
+++ b/common/test/common_tests/logic/token_test.cljc
@@ -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 common-tests.logic.token-test
(:require
[app.common.files.changes-builder :as pcb]
diff --git a/common/test/common_tests/logic/variants_test.cljc b/common/test/common_tests/logic/variants_test.cljc
index e37229d263..98d40253be 100644
--- a/common/test/common_tests/logic/variants_test.cljc
+++ b/common/test/common_tests/logic/variants_test.cljc
@@ -7,7 +7,10 @@
(ns common-tests.logic.variants-test
(:require
[app.common.files.changes-builder :as pcb]
- [app.common.logic.variants :as clv]
+ [app.common.geom.point :as gpt]
+ [app.common.logic.libraries :as cll]
+ [app.common.logic.shapes :as cls]
+ [app.common.logic.variant-properties :as clvp]
[app.common.test-helpers.components :as thc]
[app.common.test-helpers.files :as thf]
[app.common.test-helpers.ids-map :as thi]
@@ -20,7 +23,7 @@
(t/deftest test-update-property-name
(let [;; ==== Setup
file (-> (thf/sample-file :file1)
- (thv/add-variant :v01 :c01 :m01 :c02 :m02))
+ (thv/add-variant-two-properties :v01 :c01 :m01 :c02 :m02))
v-id (-> (ths/get-shape file :v01) :id)
page (thf/current-page file)
@@ -29,8 +32,8 @@
(pcb/with-page-id (:id page))
(pcb/with-library-data (:data file))
(pcb/with-objects (:objects page))
- (clv/generate-update-property-name v-id 0 "NewName1")
- (clv/generate-update-property-name v-id 1 "NewName2"))
+ (clvp/generate-update-property-name v-id 0 "NewName1")
+ (clvp/generate-update-property-name v-id 1 "NewName2"))
file' (thf/apply-changes file changes)
@@ -65,7 +68,7 @@
(pcb/with-page-id (:id page))
(pcb/with-library-data (:data file))
(pcb/with-objects (:objects page))
- (clv/generate-add-new-property v-id))
+ (clvp/generate-add-new-property v-id))
file' (thf/apply-changes file changes)
@@ -101,7 +104,7 @@
(pcb/with-page-id (:id page))
(pcb/with-library-data (:data file))
(pcb/with-objects (:objects page))
- (clv/generate-add-new-property v-id {:fill-values? true}))
+ (clvp/generate-add-new-property v-id {:fill-values? true}))
file' (thf/apply-changes file changes)
@@ -117,7 +120,7 @@
(t/is (= (count (:variant-properties comp01')) 2))
(t/is (= (count (:variant-properties comp02)) 1))
(t/is (= (count (:variant-properties comp02')) 2))
- (t/is (= (-> comp01' :variant-properties last :value) "Value1"))))
+ (t/is (= (-> comp01' :variant-properties last :value) "Value 1"))))
@@ -132,7 +135,7 @@
(pcb/with-page-id (:id page))
(pcb/with-library-data (:data file))
(pcb/with-objects (:objects page))
- (clv/generate-add-new-property v-id))
+ (clvp/generate-add-new-property v-id))
file (thf/apply-changes file changes)
@@ -147,7 +150,7 @@
(pcb/with-page-id (:id page))
(pcb/with-library-data (:data file))
(pcb/with-objects (:objects page))
- (clv/generate-remove-property v-id 0))
+ (clvp/generate-remove-property v-id 0))
file' (thf/apply-changes file changes)
@@ -180,8 +183,8 @@
(pcb/with-page-id (:id page))
(pcb/with-library-data (:data file))
(pcb/with-objects (:objects page))
- (clv/generate-update-property-value (:id comp01) 0 "NewValue1")
- (clv/generate-update-property-value (:id comp02) 0 "NewValue2"))
+ (clvp/generate-update-property-value (:id comp01) 0 "NewValue1")
+ (clvp/generate-update-property-value (:id comp02) 0 "NewValue2"))
file' (thf/apply-changes file changes)
@@ -192,3 +195,73 @@
;; ==== Check
(t/is (= (-> comp01' :variant-properties first :value) "NewValue1"))
(t/is (= (-> comp02' :variant-properties first :value) "NewValue2"))))
+
+
+(t/deftest test-duplicate-variant-container
+ (let [;; ==== Setup
+ file (-> (thf/sample-file :file1)
+ (thv/add-variant :v01 :c01 :m01 :c02 :m02))
+ data (:data file)
+ page (thf/current-page file)
+ objects (:objects page)
+
+ variant-container (ths/get-shape file :v01)
+
+
+
+
+ ;; ==== Action
+ changes (-> (pcb/empty-changes nil)
+ (pcb/with-page-id (:id page))
+ (pcb/with-library-data (:data file))
+ (pcb/with-objects (:objects page))
+ (cll/generate-duplicate-changes objects ;; objects
+ page ;; page
+ #{(:id variant-container)} ;; ids
+ (gpt/point 0 0) ;; delta
+ {(:id file) file} ;; libraries
+ (:data file) ;; library-data
+ (:id file))) ;; file-id
+
+ ;; ==== Get
+ file' (thf/apply-changes file changes)
+ data' (:data file')
+ page' (thf/current-page file')
+ objects' (:objects page')]
+
+ ;; ==== Check
+ (thf/validate-file! file')
+ (t/is (= (count (:components data)) 2))
+ (t/is (= (count (:components data')) 4))
+ (t/is (= (count objects) 4))
+ (t/is (= (count objects') 7))))
+
+
+(t/deftest test-delete-variant
+ ;; When a variant container becomes empty, it id automatically deleted
+ (let [;; ==== Setup
+ file (-> (thf/sample-file :file1)
+ (thv/add-variant-two-properties :v01 :c01 :m01 :c02 :m02))
+ container (ths/get-shape file :v01)
+ m01-id (-> (ths/get-shape file :m01) :id)
+ m02-id (-> (ths/get-shape file :m02) :id)
+
+ page (thf/current-page file)
+
+ ;; ==== Action
+ changes (-> (pcb/empty-changes nil)
+ (pcb/with-page-id (:id page))
+ (pcb/with-library-data (:data file))
+ (pcb/with-objects (:objects page))
+ (#(second (cls/generate-delete-shapes % #{m01-id m02-id} {}))))
+
+ file' (thf/apply-changes file changes)
+
+ ;; ==== Get
+ container' (ths/get-shape file' :v01)]
+
+ ;; ==== Check
+ ;; The variant containew was not nil before the deletion
+ (t/is (not (nil? container)))
+ ;; The variant containew is nil after the deletion
+ (t/is (nil? container'))))
diff --git a/common/test/common_tests/runner.cljc b/common/test/common_tests/runner.cljc
index 06a3fc58d7..c7e502bd51 100644
--- a/common/test/common_tests/runner.cljc
+++ b/common/test/common_tests/runner.cljc
@@ -41,6 +41,7 @@
[common-tests.types.modifiers-test]
[common-tests.types.shape-decode-encode-test]
[common-tests.types.shape-interactions-test]
+ [common-tests.types.shape-path-data-test]
[common-tests.types.tokens-lib-test]
[common-tests.uuid-test]))
@@ -90,4 +91,5 @@
'common-tests.types.tokens-lib-test
'common-tests.types.components-test
'common-tests.types.absorb-assets-test
+ 'common-tests.types.shape-path-data-test
'common-tests.uuid-test))
diff --git a/common/test/common_tests/svg_path_test.cljc b/common/test/common_tests/svg_path_test.cljc
index c9e9adcc89..7a826db6ac 100644
--- a/common/test/common_tests/svg_path_test.cljc
+++ b/common/test/common_tests/svg_path_test.cljc
@@ -547,4 +547,3 @@
;; FOR POSSIBLE FUTURE TEST CASES
;; (str "M259.958 89.134c-6.88-.354-10.484-1.241-12.44-3.064-1.871-1.743-6.937-3.098-15.793-4.226-7.171-.913-17.179-2.279-22.24-3.034-5.06-.755-15.252-2.016-22.648-2.8-18.685-1.985-35.63-4.223-38.572-5.096-3.655-1.084-3.016-3.548.708-2.726 1.751.387 13.376 1.701 25.833 2.922 12.456 1.22 29.018 3.114 36.803 4.208 29.94 4.206 29.433 4.204 34.267.136 3.787-3.186 5.669-3.669 14.303-3.669 14.338 0 17.18 1.681 12.182 7.205-2.053 2.268-1.994 2.719.707 5.42 3.828 3.827 3.74 5.846-.238 5.5-1.752-.153-7.544-.502-12.872-.776zm7.563-3.194c0-.778-1.751-1.352-3.892-1.274l-3.893.141 3.539 1.133c1.946.624 3.698 1.197 3.893 1.275.194.077.354-.496.354-1.275zm-15.899-8.493c1.43-2.29 1.414-2.83-.084-2.83-2.05 0-5.25 2.76-5.25 4.529 0 2.226 3.599 1.08 5.334-1.699zm8.114 0c2.486-2.746 2.473-2.83-.438-2.83-1.65 0-3.683 1.273-4.516 2.83-1.175 2.196-1.077 2.831.438 2.831 1.075 0 3.107-1.274 4.516-2.83zm7.814.674c2.858-3.444.476-4.085-3.033-.816-2.451 2.284-2.677 2.973-.975 2.973 1.22 0 3.023-.97 4.008-2.157zm-49.571-4.509c-1.168-.43-3.294-1.802-4.725-3.051-2.112-1.843-9.304-2.595-38.219-3.994-46.474-2.25-63-4.077-60.27-6.665.324-.308 9.507.261 20.406 1.264 10.9 1.003 31.16 2.258 45.024 2.789l25.207.964 4.625-3.527c4.313-3.29 5.41-3.474 16.24-2.732 6.389.438 11.981 1.388 12.428 2.111.447.723-.517 2.73-2.141 4.46l-2.954 3.144c1.607 1.697 3.308 3.289 5.049 4.845 3.248 2.189-5.438 1.289-8.678 1.284-5.428-.061-10.825-.463-11.992-.892zm12.74-3.242c-1.123-.694-2.36-.943-2.75-.554-.389.39.21 1.275 1.334 1.97 1.122.693 2.36.942 2.749.553.389-.39-.21-1.275-1.334-1.97zm-5.663 0a1.42 1.42 0 00-1.415-1.416 1.42 1.42 0 00-1.416 1.416 1.42 1.42 0 001.416 1.415 1.42 1.42 0 001.415-1.415zm-8.464-6.404c.984-1.187 1.35-2.598.813-3.135-1.181-1.18-5.408 1.297-6.184 3.624-.806 2.42 3.265 2.048 5.37-.49zm6.863.258c.867-1.045 1.163-2.313.658-2.819-1.063-1.062-4.719 1.631-4.719 3.476 0 1.864 2.274 1.496 4.061-.657zm8.792-.36c1.637-1.972 1.448-2.197-1.486-1.77-1.848.27-3.622 1.287-3.943 2.26-.838 2.547 3.212 2.181 5.429-.49zm32.443-4.11c-6.156-2.228-67.1-6.138-119.124-7.642-39.208-1.134-72.072-.928-94.618.593-6.617.446-19.681 1.16-29.03 1.587-15.798.72-17.183.573-19.588-2.085-4.498-4.97-2.544-7.857 6.39-9.44 4.394-.778 9.164-2.436 10.6-3.685 5.44-4.729 20.332-14.06 31.14-19.509C65.717 11.88 78.955 7.79 103.837 3.08 121.686-.3 125.552-.642 129.318.82c2.44.948 12.4 1.948 22.132 2.221 15.37.432 20.004 1.18 35.294 5.698 22.36 6.606 39.732 15.1 56.55 27.653 7.307 5.452 14.086 9.913 15.066 9.913.98 0 2.148.956 2.596 2.124.55 1.432 2.798 2.123 6.914 2.123 6.213 0 12.4 3.046 12.38 6.096-.012 1.75-6.502 5.353-9.118 5.063-.818-.09-3.717-.972-6.442-1.958zm-16.986-7.436c0-1.575-33.326-18.118-43.173-21.43-23.008-7.739-54.084-12.922-77.136-12.866-16.863.041-37.877 3.628-52.465 8.956-18.062 6.596-26.563 10.384-29.181 13.002-1.205 1.205-5.306 3.769-9.112 5.698-7.754 3.929-8.841 5.482-3.029 4.325 13.494-2.685 66.794-3.773 110.913-2.264 38.005 1.3 96.812 4.435 102.122 5.443.584.111 1.061-.277 1.061-.864zm-236.39-3.18c0-.78-1.592-1.416-3.539-1.416-1.946 0-3.538.637-3.538 1.415 0 .779 1.592 1.416 3.538 1.416 1.947 0 3.54-.637 3.54-1.416zm7.078-1.416c0-.779-.956-1.416-2.124-1.416-1.167 0-2.123.637-2.123 1.416 0 .778.956 1.415 2.123 1.415 1.168 0 2.124-.637 2.124-1.415zm11.734-4.437c3.278-1.661 6.278-3.483 6.667-4.048 1.366-1.98 20.645-11.231 32.557-15.622 11.862-4.372 36.546-9.865 44.327-9.865 3.485 0 3.867-.404 3.012-3.185-.538-1.752-1.177-3.41-1.42-3.685-.907-1.026-36.72 7.16-45.065 10.302-17.226 6.484-47.566 24.27-47.566 27.886 0 1.786.845 1.585 7.488-1.783zm206.254-5.577c-12.298-10.518-53.842-27.166-70.896-28.41-5.526-.404-6.3-.097-6.695 2.655-.33 2.307.402 3.275 2.831 3.742 32.436 6.237 52.205 12.315 66.975 20.594 11.904 6.673 14.477 7.141 7.785 1.419zM150.1 11.04c-1.949-3.64-7.568-4.078-6.886-.538.256 1.329 2.054 2.817 3.997 3.309 4.498 1.137 4.816.832 2.888-2.771zm6.756.94c-.248-1.752-1.026-3.185-1.727-3.185-.7 0-1.493 1.433-1.76 3.185-.328 2.152.232 3.185 1.727 3.185 1.485 0 2.064-1.047 1.76-3.185zm-30.178-2.458c0-2.303-.908-3.694-2.627-4.025-3.6-.694-5.23 1.301-4.22 5.166 1.216 4.647 6.847 3.709 6.847-1.14zm12.544 2.104c-.448-1.168-1.224-2.132-1.725-2.142-.5-.013-2.343-.404-4.095-.873-2.569-.689-3.185-.274-3.185 2.142 0 2.476.854 2.996 4.91 2.996 3.783 0 4.723-.487 4.095-2.123z")
-
diff --git a/common/test/common_tests/types/absorb_assets_test.cljc b/common/test/common_tests/types/absorb_assets_test.cljc
index 790d029b0b..382b3a681f 100644
--- a/common/test/common_tests/types/absorb_assets_test.cljc
+++ b/common/test/common_tests/types/absorb_assets_test.cljc
@@ -54,7 +54,7 @@
(t/is (= (count components') 1))
(t/is (ctk/instance-of? copy-root' (:id file') (:id component')))
- (t/is (ctk/is-main-of? main-root' copy-root' true))
+ (t/is (ctk/is-main-of? main-root' copy-root'))
(t/is (ctk/main-instance-of? (:id main-root') (:id (second pages')) component'))))
(t/deftest absorb-colors
diff --git a/common/test/common_tests/types/data/legacy-single-set.json b/common/test/common_tests/types/data/legacy-single-set.json
deleted file mode 100644
index e69153a763..0000000000
--- a/common/test/common_tests/types/data/legacy-single-set.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{"color":
- {"red":
- {"100":
- {"value":"red",
- "type":"color",
- "description":""}}}}
diff --git a/common/test/common_tests/types/data/single-set.json b/common/test/common_tests/types/data/single-set.json
deleted file mode 100644
index d558781ae0..0000000000
--- a/common/test/common_tests/types/data/single-set.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{"color":
- {"red":
- {"100":
- {"$value":"red",
- "$type":"color",
- "$description":""}}}}
diff --git a/common/test/common_tests/types/shape_path_data_test.cljc b/common/test/common_tests/types/shape_path_data_test.cljc
new file mode 100644
index 0000000000..79430e883f
--- /dev/null
+++ b/common/test/common_tests/types/shape_path_data_test.cljc
@@ -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 common-tests.types.shape-path-data-test
+ (:require
+ [app.common.data :as d]
+ [app.common.math :as mth]
+ [app.common.pprint :as pp]
+ [app.common.types.shape.path :as path]
+ [clojure.test :as t]))
+
+(def sample-content
+ [{:command :move-to, :params {:x 480.0, :y 839.0}}
+ {:command :line-to, :params {:x 439.0, :y 802.0}}
+ {:command :curve-to, :params {:c1x 368.0, :c1y 737.0, :c2x 310.0, :c2y 681.0, :x 264.0, :y 634.0}}
+ {:command :close-path :params {}}])
+
+(def sample-bytes
+ [0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 67 -16 0 0 68 81 -64 0
+ 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 67 -37 -128 0 68 72 -128 0
+ 0 3 0 0 67 -72 0 0 68 56 64 0 67 -101 0 0 68 42 64 0 67 -124 0 0 68 30 -128 0
+ 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0])
+
+;; This means it implements IReduceInit/IReduce protocols
+(t/deftest path-data-to-vector
+ (let [pdata (path/path-data sample-content)
+ result (vec pdata)]
+ (t/is (= 4 (count result)))
+ (t/is (= (get-in sample-content [0 :command])
+ (get-in result [0 :command])))
+ (t/is (= (get-in sample-content [1 :command])
+ (get-in result [1 :command])))
+ (t/is (= (get-in sample-content [2 :command])
+ (get-in result [2 :command])))
+ (t/is (= (get-in sample-content [3 :command])
+ (get-in result [3 :command])))
+
+ (t/is (= (get-in sample-content [0 :params])
+ (get-in result [0 :params])))
+ (t/is (= (get-in sample-content [1 :params])
+ (get-in result [1 :params])))
+ (t/is (= (get-in sample-content [2 :params])
+ (get-in result [2 :params])))
+ (t/is (= (get-in sample-content [3 :params])
+ (get-in result [3 :params])))))
+
+(t/deftest path-data-plain-to-binary
+ (let [pdata (path/path-data sample-content)]
+ (t/is (= sample-bytes
+ (vec
+ #?(:cljs (js/Int8Array. (.-buffer pdata))
+ :clj (.array (.-buffer pdata))))))
+ (t/is (= (->> sample-content
+ (mapv path/map->PathSegment))
+ (vec pdata)))))
+
diff --git a/common/test/common_tests/types/tokens_lib_test.cljc b/common/test/common_tests/types/tokens_lib_test.cljc
index 0a41f37e5c..ab660fcba9 100644
--- a/common/test/common_tests/types/tokens_lib_test.cljc
+++ b/common/test/common_tests/types/tokens_lib_test.cljc
@@ -120,7 +120,6 @@
(t/is (= ["Foo/Foo" "Foo/Baz" "Foo/Bar"] (move ["Foo"] ["Foo" "Foo"] ["Foo" "Baz"] false)))
(t/is (= ["Foo/Baz" "Foo/Bar" "Foo/Foo"] (move ["Foo"] ["Foo" "Foo"] nil false))))))
-
(t/deftest move-token-set-nested-2
(let [tokens-lib (-> (ctob/make-tokens-lib)
(ctob/add-set (ctob/make-token-set :name "a/b"))
@@ -220,7 +219,6 @@
(t/is (thrown-with-msg? #?(:cljs js/Error :clj Exception) #"expected valid params for token-theme"
(ctob/make-token-theme params)))))
-
(t/deftest make-tokens-lib
(let [tokens-lib (ctob/make-tokens-lib)]
(t/is (= (ctob/set-count tokens-lib) 0))))
@@ -315,6 +313,58 @@
(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"
+ :tokens {"test-token"
+ (ctob/make-token :name "test-token"
+ :type :boolean
+ :value true)})))
+ token-set-copy (ctob/duplicate-set "test-token-set" tokens-lib {:suffix "copy"})
+ token (get-in token-set-copy [:tokens "test-token"])]
+
+ (t/is (some? token-set-copy))
+ (t/is (= (:name token-set-copy) "test-token-set-copy"))
+ (t/is (= (count (: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"
+ :tokens {"test-token"
+ (ctob/make-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"}))
+
+ token-set-copy (ctob/duplicate-set "test-token-set" tokens-lib {:suffix "copy"})
+ token (get-in token-set-copy [:tokens "test-token"])]
+
+ (t/is (some? token-set-copy))
+ (t/is (= (:name token-set-copy) "test-token-set-copy-2"))
+ (t/is (= (count (: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")))
+
+ token-set-copy (ctob/duplicate-set "test-token-set" tokens-lib {:suffix "copy"})
+ tokens (get token-set-copy :tokens)]
+
+ (t/is (some? token-set-copy))
+ (t/is (= (:name token-set-copy) "test-token-set-copy"))
+ (t/is (= (count (: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"})]
+
+ (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")))
@@ -918,7 +968,6 @@
(t/is (dt/is-after? (:modified-at token-set') (:modified-at token-set)))
(t/is (dt/is-after? (:modified-at token') (:modified-at token)))))
-
(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"))
@@ -1371,30 +1420,6 @@
(t/testing "invalid tokens got discarded"
(t/is (nil? (get-set-token "typography" "H1.Bold")))))))
-#?(:clj
- (t/deftest single-set-legacy-json-decoding
- (let [json (-> (slurp "test/common_tests/types/data/legacy-single-set.json")
- (tr/decode-str))
- lib (ctob/decode-single-set-legacy-json (ctob/ensure-tokens-lib nil) "single_set" json)
- get-set-token (fn [set-name token-name]
- (some-> (ctob/get-set lib set-name)
- (ctob/get-token token-name)))]
- (t/is (= '("single_set") (ctob/get-ordered-set-names lib)))
- (t/testing "token added"
- (t/is (some? (get-set-token "single_set" "color.red.100")))))))
-
-#?(:clj
- (t/deftest single-set-dtcg-json-decoding
- (let [json (-> (slurp "test/common_tests/types/data/single-set.json")
- (tr/decode-str))
- lib (ctob/decode-single-set-json (ctob/ensure-tokens-lib nil) "single_set" json)
- get-set-token (fn [set-name token-name]
- (some-> (ctob/get-set lib set-name)
- (ctob/get-token token-name)))]
- (t/is (= '("single_set") (ctob/get-ordered-set-names lib)))
- (t/testing "token added"
- (t/is (some? (get-set-token "single_set" "color.red.100")))))))
-
#?(:clj
(t/deftest dtcg-encoding-decoding-json
(let [json (-> (slurp "test/common_tests/types/data/tokens-multi-set-example.json")
diff --git a/common/test/common_tests/types/variant_test.cljc b/common/test/common_tests/types/variant_test.cljc
new file mode 100644
index 0000000000..258b41e8a8
--- /dev/null
+++ b/common/test/common_tests/types/variant_test.cljc
@@ -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
+
+(ns common-tests.types.variant-test
+ (:require
+ [app.common.types.variant :as ctv]
+ [clojure.test :as t]))
+
+
+(t/deftest variant-distance01
+ ;;c1: primary, default, rounded, blue, dark
+ ;;c2: primary, hover, squared, blue, dark
+ ;;c3: primary, default, squared, blue, light
+
+ ;; I have a copy of c1, and I change from rounded to squared
+ ;; c2: 1 difference in pos 2
+ ;; c3: 1 differences in pos 5
+ ;; The min distance should be c3
+
+ (let [target [{:name "type" :value "primary"}
+ {:name "status" :value "default"}
+ {:name "borders" :value "squared"}
+ {:name "color" :value "blue"}
+ {:name "theme" :value "dark"}]
+ props2 [{:name "type" :value "primary"}
+ {:name "status" :value "hover"}
+ {:name "borders" :value "rounded"}
+ {:name "color" :value "blue"}
+ {:name "theme" :value "dark"}]
+ props3 [{:name "type" :value "primary"}
+ {:name "status" :value "default"}
+ {:name "borders" :value "rounded"}
+ {:name "color" :value "blue"}
+ {:name "theme" :value "light"}]
+ dist2 (ctv/distance target props2)
+ dist3 (ctv/distance target props3)]
+ (t/is (< dist3 dist2))))
+
+
+(t/deftest variant-distance02
+ ;;c1: primary, default, rounded, blue, dark
+ ;;c2: primary, hover, squared, red, dark
+ ;;c3: secondary, hover, rounded, blue, dark
+
+ ;; I have a copy of c1, and I change from default to hover
+ ;; c2: 2 differences in pos 3 and 4
+ ;; c3: 1 differences in pos 1
+ ;; The min distance should be c2
+
+ (let [target [{:name "type" :value "primary"}
+ {:name "status" :value "hover"}
+ {:name "borders" :value "rounded"}
+ {:name "color" :value "blue"}
+ {:name "theme" :value "dark"}]
+ props2 [{:name "type" :value "primary"}
+ {:name "status" :value "hover"}
+ {:name "borders" :value "squared"}
+ {:name "color" :value "red"}
+ {:name "theme" :value "dark"}]
+ props3 [{:name "type" :value "secondary"}
+ {:name "status" :value "hover"}
+ {:name "borders" :value "rounded"}
+ {:name "color" :value "blue"}
+ {:name "theme" :value "dark"}]
+ dist2 (ctv/distance target props2)
+ dist3 (ctv/distance target props3)]
+ (t/is (< dist2 dist3))))
+
+(t/deftest variant-distance03
+ ;;c1: primary, default, rounded, blue, dark
+ ;;c2: secondary, default, rounded, blue, light
+ ;;c3: secondary, hover, squared, blue, dark
+ ;;c4: secondary, hover, rounded, blue, dark
+
+ ;; I have a copy of c1, and I change from primary to secondary
+ ;; c2: 1 difference in pos 4
+ ;; c3: 2 differences in pos 1 and 2
+ ;; c4: 1 difference in pos 1
+ ;; The distances should be c2 < c4 < c3
+
+ (let [target [{:name "type" :value "secondary"}
+ {:name "status" :value "default"}
+ {:name "borders" :value "rounded"}
+ {:name "color" :value "blue"}
+ {:name "theme" :value "dark"}]
+ props2 [{:name "type" :value "secondary"}
+ {:name "status" :value "default"}
+ {:name "borders" :value "rounded"}
+ {:name "color" :value "blue"}
+ {:name "theme" :value "light"}]
+ props3 [{:name "type" :value "secondary"}
+ {:name "status" :value "hover"}
+ {:name "borders" :value "squared"}
+ {:name "color" :value "blue"}
+ {:name "theme" :value "dark"}]
+ props4 [{:name "type" :value "secondary"}
+ {:name "status" :value "hover"}
+ {:name "borders" :value "rounded"}
+ {:name "color" :value "blue"}
+ {:name "theme" :value "dark"}]
+ dist2 (ctv/distance target props2)
+ dist3 (ctv/distance target props3)
+ dist4 (ctv/distance target props4)]
+ (t/is (< dist2 dist4))
+ (t/is (< dist4 dist3))))
+
+
+
+
diff --git a/common/test/common_tests/variant_test.cljc b/common/test/common_tests/variant_test.cljc
new file mode 100644
index 0000000000..78ac25d097
--- /dev/null
+++ b/common/test/common_tests/variant_test.cljc
@@ -0,0 +1,108 @@
+;; 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.variant-test
+ (:require
+ [app.common.types.variant :as ctv]
+ [clojure.test :as t]))
+
+(t/deftest convert-between-variant-properties-maps-and-strings
+ (let [map-with-two-props [{:name "border" :value "yes"} {:name "color" :value "gray"}]
+ map-with-two-props-one-blank [{:name "border" :value "no"} {:name "color" :value ""}]
+ map-with-one-prop [{:name "border" :value "no"}]
+ map-with-spaces [{:name "border 1" :value "of course"} {:name "color 2" :value "dark gray"}]
+
+ string-valid-with-two-props "border=yes, color=gray"
+ string-valid-with-one-prop "border=no"
+ string-valid-with-spaces "border 1=of course, color 2=dark gray"
+ string-invalid "border=yes, color="]
+
+ (t/testing "convert map to string"
+ (t/is (= (ctv/properties-map-to-string map-with-two-props) string-valid-with-two-props))
+ (t/is (= (ctv/properties-map-to-string map-with-two-props-one-blank) string-valid-with-one-prop))
+ (t/is (= (ctv/properties-map-to-string map-with-spaces) string-valid-with-spaces)))
+
+ (t/testing "convert string to map"
+ (t/is (= (ctv/properties-string-to-map string-valid-with-two-props) map-with-two-props))
+ (t/is (= (ctv/properties-string-to-map string-valid-with-one-prop) map-with-one-prop))
+ (t/is (= (ctv/properties-string-to-map string-valid-with-spaces) map-with-spaces)))
+
+ (t/testing "check if a string is valid"
+ (t/is (= (ctv/valid-properties-string? string-valid-with-two-props) true))
+ (t/is (= (ctv/valid-properties-string? string-valid-with-one-prop) true))
+ (t/is (= (ctv/valid-properties-string? string-valid-with-spaces) true))
+ (t/is (= (ctv/valid-properties-string? string-invalid) false)))))
+
+
+(t/deftest find-properties
+ (let [prev-props [{:name "border" :value "yes"} {:name "color" :value "gray"}]
+ upd-props-1 [{:name "border" :value "yes"}]
+ upd-props-2 [{:name "border" :value "yes"} {:name "color" :value "blue"}]
+ upd-props-3 [{:name "border" :value "yes"} {:name "color" :value "gray"} {:name "shadow" :value "large"}]
+ upd-props-4 [{:name "color" :value "yellow"} {:name "shadow" :value "large"}]]
+
+ (t/testing "a property to remove"
+ (t/is (= (ctv/find-properties-to-remove prev-props upd-props-1)
+ [{:name "color" :value "gray"}]))
+ (t/is (= (ctv/find-properties-to-update prev-props upd-props-1)
+ []))
+ (t/is (= (ctv/find-properties-to-add prev-props upd-props-1)
+ [])))
+
+ (t/testing "a property to update"
+ (t/is (= (ctv/find-properties-to-remove prev-props upd-props-2)
+ []))
+ (t/is (= (ctv/find-properties-to-update prev-props upd-props-2)
+ [{:name "color" :value "blue"}]))
+ (t/is (= (ctv/find-properties-to-add prev-props upd-props-2)
+ [])))
+
+ (t/testing "a property to add"
+ (t/is (= (ctv/find-properties-to-remove prev-props upd-props-3)
+ []))
+ (t/is (= (ctv/find-properties-to-update prev-props upd-props-3)
+ []))
+ (t/is (= (ctv/find-properties-to-add prev-props upd-props-3)
+ [{:name "shadow" :value "large"}])))
+
+ (t/testing "properties to remove, update & add"
+ (t/is (= (ctv/find-properties-to-remove prev-props upd-props-4)
+ [{:name "border" :value "yes"}]))
+ (t/is (= (ctv/find-properties-to-update prev-props upd-props-4)
+ [{:name "color" :value "yellow"}]))
+ (t/is (= (ctv/find-properties-to-add prev-props upd-props-4)
+ [{:name "shadow" :value "large"}])))
+
+ (t/testing "find property index"
+ (t/is (= (ctv/find-index-for-property-name prev-props "border") 0))
+ (t/is (= (ctv/find-index-for-property-name prev-props "color") 1)))))
+
+
+(t/deftest compare-properties
+ (let [props-1 [{:name "border" :value "yes"} {:name "color" :value "gray"}]
+ props-2 [{:name "border" :value "yes"} {:name "color" :value "red"}]
+ props-3 [{:name "border" :value "no"} {:name "color" :value "gray"}]]
+
+ (t/testing "compare properties"
+ (t/is (= (ctv/compare-properties [props-1 props-2])
+ [{:name "border" :value "yes"} {:name "color" :value nil}]))
+ (t/is (= (ctv/compare-properties [props-1 props-2 props-3])
+ [{:name "border" :value nil} {:name "color" :value nil}]))
+ (t/is (= (ctv/compare-properties [props-1 props-2 props-3] "&")
+ [{:name "border" :value "&"} {:name "color" :value "&"}])))))
+
+
+(t/deftest check-belong-same-variant
+ (let [components-1 [{:variant-id "a variant"} {:variant-id "a variant"}]
+ components-2 [{:variant-id "a variant"} {:variant-id "another variant"}]
+ components-3 [{:variant-id "a variant"} {}]
+ components-4 [{} {}]]
+
+ (t/testing "check-belong-same-variant"
+ (t/is (= (ctv/same-variant? components-1) true))
+ (t/is (= (ctv/same-variant? components-2) false))
+ (t/is (= (ctv/same-variant? components-3) false))
+ (t/is (= (ctv/same-variant? components-4) false)))))
diff --git a/docker/devenv/Dockerfile b/docker/devenv/Dockerfile
index 29b6e7c544..d9105fbe49 100644
--- a/docker/devenv/Dockerfile
+++ b/docker/devenv/Dockerfile
@@ -1,15 +1,16 @@
-FROM debian:bookworm
+FROM ubuntu:24.04
LABEL maintainer="Penpot "
ARG DEBIAN_FRONTEND=noninteractive
-ENV NODE_VERSION=v22.13.1 \
+ENV NODE_VERSION=v22.14.0 \
CLOJURE_VERSION=1.12.0.1501 \
CLJKONDO_VERSION=2025.01.16 \
BABASHKA_VERSION=1.12.196 \
CLJFMT_VERSION=0.13.0 \
RUSTUP_VERSION=1.27.1 \
RUST_VERSION=1.85.0 \
+ EMSCRIPTEN_VERSION=4.0.6 \
LANG=en_US.UTF-8 \
LC_ALL=en_US.UTF-8
@@ -45,7 +46,7 @@ RUN set -ex; \
rm -rf /var/lib/apt/lists/*;
RUN set -ex; \
- useradd -m -g users -s /bin/bash penpot; \
+ usermod -l penpot -d /home/penpot -G users -s /bin/bash ubuntu; \
passwd penpot -d; \
echo "penpot ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
@@ -63,8 +64,6 @@ RUN set -ex; \
woff-tools \
woff2 \
fontforge \
- gconf-service \
- libasound2 \
libatk1.0-0 \
libatk-bridge2.0-0 \
libcairo2 \
@@ -73,7 +72,6 @@ RUN set -ex; \
libexpat1 \
libfontconfig1 \
libgcc1 \
- libgconf-2-4 \
libgdk-pixbuf2.0-0 \
libglib2.0-0 \
libgtk-3-0 \
@@ -95,7 +93,6 @@ RUN set -ex; \
libxss1 \
libxtst6 \
fonts-liberation \
- libappindicator1 \
libnss3 \
libgbm1 \
xvfb \
@@ -107,12 +104,12 @@ RUN set -eux; \
ARCH="$(dpkg --print-architecture)"; \
case "${ARCH}" in \
aarch64|arm64) \
- ESUM='fb43ae1202402842559cb6223886ec1663b90ffbec48479abbcb92c92c9012eb'; \
- BINARY_URL='https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.2%2B7/OpenJDK23U-jdk_aarch64_linux_hotspot_23.0.2_7.tar.gz'; \
+ ESUM='18071047526ab4b53131f9bb323e8703485ae37fcb2f2c5ef0f1b7bab66d1b94'; \
+ BINARY_URL='https://github.com/adoptium/temurin24-binaries/releases/download/jdk-24%2B36/OpenJDK24U-jdk_aarch64_linux_hotspot_24_36.tar.gz'; \
;; \
amd64|x86_64) \
- ESUM='870ac8c05c6fe563e7a3878a47d0234b83c050e83651d2c47e8b822ec74512dd'; \
- BINARY_URL='https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.2%2B7/OpenJDK23U-jdk_x64_linux_hotspot_23.0.2_7.tar.gz'; \
+ ESUM='c340dee97b6aa215d248bc196dcac5b56e7be9b5c5d45e691344d40d5d0b171d'; \
+ BINARY_URL='https://github.com/adoptium/temurin24-binaries/releases/download/jdk-24%2B36/OpenJDK24U-jdk_x64_linux_hotspot_24_36.tar.gz'; \
;; \
*) \
echo "Unsupported arch: ${ARCH}"; \
@@ -137,7 +134,7 @@ RUN set -ex; \
RUN set -ex; \
install -d /usr/share/postgresql-common/pgdg; \
curl -o /usr/share/postgresql-common/pgdg/apt.postgresql.org.asc --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc; \
- echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt bookworm-pgdg main" >> /etc/apt/sources.list.d/postgresql.list; \
+ echo "deb [signed-by=/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc] https://apt.postgresql.org/pub/repos/apt noble-pgdg main" >> /etc/apt/sources.list.d/postgresql.list; \
apt-get -qq update; \
apt-get -qqy install postgresql-client-16; \
rm -rf /var/lib/apt/lists/*;
@@ -273,8 +270,8 @@ WORKDIR /usr/local
RUN set -eux; \
git clone https://github.com/emscripten-core/emsdk.git; \
cd emsdk; \
- ./emsdk install latest; \
- ./emsdk activate latest; \
+ ./emsdk install $EMSCRIPTEN_VERSION; \
+ ./emsdk activate $EMSCRIPTEN_VERSION; \
rustup target add wasm32-unknown-emscripten;
WORKDIR /home
diff --git a/docker/devenv/docker-compose.yaml b/docker/devenv/docker-compose.yaml
index ff2e8dcf61..796618e9c2 100644
--- a/docker/devenv/docker-compose.yaml
+++ b/docker/devenv/docker-compose.yaml
@@ -68,7 +68,7 @@ services:
- PENPOT_LDAP_ATTRS_PHOTO=jpegPhoto
minio:
- image: "minio/minio:RELEASE.2023-11-11T08-14-41Z"
+ image: "minio/minio:RELEASE.2025-04-03T14-56-28Z"
command: minio server /mnt/data --console-address ":9001"
volumes:
@@ -83,7 +83,7 @@ services:
- 9001:9001
postgres:
- image: postgres:16
+ image: postgres:16.8
command: postgres -c config_file=/etc/postgresql.conf
restart: always
stop_signal: SIGINT
diff --git a/exporter/package.json b/exporter/package.json
index 7ab00e7701..0361d3b1e5 100644
--- a/exporter/package.json
+++ b/exporter/package.json
@@ -18,7 +18,7 @@
"luxon": "^3.5.0",
"playwright": "^1.50.0",
"raw-body": "^3.0.0",
- "svgo": "penpot/svgo#v3",
+ "svgo": "penpot/svgo#v3.1",
"xml-js": "^1.6.11",
"xregexp": "^5.1.1"
},
diff --git a/exporter/yarn.lock b/exporter/yarn.lock
index 2364d4cea6..3c86f61390 100644
--- a/exporter/yarn.lock
+++ b/exporter/yarn.lock
@@ -620,13 +620,13 @@ __metadata:
languageName: node
linkType: hard
-"css-tree@npm:^3.0.0":
- version: 3.0.0
- resolution: "css-tree@npm:3.0.0"
+"css-tree@npm:^3.1.0":
+ version: 3.1.0
+ resolution: "css-tree@npm:3.1.0"
dependencies:
- mdn-data: "npm:2.10.0"
+ mdn-data: "npm:2.12.2"
source-map-js: "npm:^1.0.1"
- checksum: 10c0/43d44fdf7004ae91d73d486f17894fef77efa33747a6752b9241cf0f5fb47fabc16ec34a96a993651d9014dfdeee803d7c5fcd3548214252ee19f4e5c98999b2
+ checksum: 10c0/b5715852c2f397c715ca00d56ec53fc83ea596295ae112eb1ba6a1bda3b31086380e596b1d8c4b980fe6da09e7d0fc99c64d5bb7313030dd0fba9c1415f30979
languageName: node
linkType: hard
@@ -898,7 +898,7 @@ __metadata:
raw-body: "npm:^3.0.0"
shadow-cljs: "npm:2.28.20"
source-map-support: "npm:^0.5.21"
- svgo: "penpot/svgo#v3"
+ svgo: "penpot/svgo#v3.1"
xml-js: "npm:^1.6.11"
xregexp: "npm:^5.1.1"
languageName: unknown
@@ -1383,10 +1383,10 @@ __metadata:
languageName: node
linkType: hard
-"mdn-data@npm:2.10.0":
- version: 2.10.0
- resolution: "mdn-data@npm:2.10.0"
- checksum: 10c0/f6f1a6a6eb092bab250d06f6f6c7cb1733a77a17e7119aac829ad67d4322bbf6a30df3c6d88686e71942e66bd49274b2ddfede22a1d3df0d6c49a56fbd09eb7c
+"mdn-data@npm:2.12.2":
+ version: 2.12.2
+ resolution: "mdn-data@npm:2.12.2"
+ checksum: 10c0/b22443b71d70f72ccc3c6ba1608035431a8fc18c3c8fc53523f06d20e05c2ac10f9b53092759a2ca85cf02f0d37036f310b581ce03e7b99ac74d388ef8152ade
languageName: node
linkType: hard
@@ -2286,16 +2286,16 @@ __metadata:
languageName: node
linkType: hard
-"svgo@penpot/svgo#v3":
+"svgo@penpot/svgo#v3.1":
version: 4.0.0
- resolution: "svgo@https://github.com/penpot/svgo.git#commit=71c0db44c3c2665f2ffc0c4c5383acaebd5c524f"
+ resolution: "svgo@https://github.com/penpot/svgo.git#commit=a46262c12c0d967708395972c374eb2adead4180"
dependencies:
"@trysound/sax": "npm:0.2.0"
css-select: "npm:^5.1.0"
- css-tree: "npm:^3.0.0"
+ css-tree: "npm:^3.1.0"
csso: "npm:^5.0.5"
lodash: "npm:^4.17.21"
- checksum: 10c0/642c583372a610e484382cbf8a8fe28256dd354598d2e65ade2a3a63bf841b4d3dab4106f929f183ae3610007db2fc1413e82acc23793fe1a2e882bc923acc72
+ checksum: 10c0/87a51a0cd1168a31c07ddfa9ffa544d0cad1412b3549dc20146143a179c66e36420a88ae40221cdb23146775876d684b47972663b08b3f62335eb4f98773677e
languageName: node
linkType: hard
diff --git a/frontend/deps.edn b/frontend/deps.edn
index f0855a69cd..24ea5efa50 100644
--- a/frontend/deps.edn
+++ b/frontend/deps.edn
@@ -49,6 +49,6 @@
cider/cider-nrepl {:mvn/version "0.48.0"}}}
:shadow-cljs
- {:main-opts ["-m" "shadow.cljs.devtools.cli"]}
-
+ {:main-opts ["-m" "shadow.cljs.devtools.cli"]
+ :jvm-opts ["--sun-misc-unsafe-memory-access=allow" "-Dpenpot.wasm.profile-marks=true"]}
}}
diff --git a/frontend/package.json b/frontend/package.json
index ba740928eb..983eb966ca 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -103,9 +103,9 @@
"@penpot/draft-js": "portal:./vendor/draft-js",
"@penpot/hljs": "portal:./vendor/hljs",
"@penpot/mousetrap": "portal:./vendor/mousetrap",
- "@penpot/svgo": "penpot/svgo#c6fba7a4dcfbc27b643e7fc0c94fc98cf680b77b",
+ "@penpot/svgo": "penpot/svgo#v3.1",
"@penpot/text-editor": "portal:./text-editor",
- "@tokens-studio/sd-transforms": "^0.16.1",
+ "@tokens-studio/sd-transforms": "1.2.11",
"compression": "^1.7.5",
"date-fns": "^4.1.0",
"eventsource-parser": "^3.0.0",
@@ -124,7 +124,7 @@
"rxjs": "8.0.0-alpha.14",
"sax": "^1.4.1",
"source-map-support": "^0.5.21",
- "style-dictionary": "4.0.0-prerelease.36",
+ "style-dictionary": "5.0.0-rc.1",
"tdigest": "^0.1.2",
"tinycolor2": "^1.6.0",
"ua-parser-js": "2.0.0",
diff --git a/frontend/playwright/data/get-teams-render-wasm.json b/frontend/playwright/data/get-teams-render-wasm.json
new file mode 100644
index 0000000000..589e3d160a
--- /dev/null
+++ b/frontend/playwright/data/get-teams-render-wasm.json
@@ -0,0 +1,26 @@
+[
+ {
+ "~:features": {
+ "~#set": [
+ "render-wasm",
+ "layout/grid",
+ "styles/v2",
+ "fdata/pointer-map",
+ "fdata/objects-map",
+ "components/v2",
+ "fdata/shape-data-type"
+ ]
+ },
+ "~:permissions": {
+ "~:type": "~:membership",
+ "~:is-owner": true,
+ "~:is-admin": true,
+ "~:can-edit": true
+ },
+ "~:name": "Default",
+ "~:modified-at": "~m1713533116375",
+ "~:id": "~uc7ce0794-0992-8105-8004-38e630f7920a",
+ "~:created-at": "~m1713533116375",
+ "~:is-default": true
+ }
+]
diff --git a/frontend/playwright/data/get-teams-variants.json b/frontend/playwright/data/get-teams-variants.json
new file mode 100644
index 0000000000..50b323d047
--- /dev/null
+++ b/frontend/playwright/data/get-teams-variants.json
@@ -0,0 +1,26 @@
+[
+ {
+ "~:features": {
+ "~#set": [
+ "variants/v1",
+ "layout/grid",
+ "styles/v2",
+ "fdata/pointer-map",
+ "fdata/objects-map",
+ "components/v2",
+ "fdata/shape-data-type"
+ ]
+ },
+ "~:permissions": {
+ "~:type": "~:membership",
+ "~:is-owner": true,
+ "~:is-admin": true,
+ "~:can-edit": true
+ },
+ "~:name": "Default",
+ "~:modified-at": "~m1713533116375",
+ "~:id": "~uc7ce0794-0992-8105-8004-38e630f7920a",
+ "~:created-at": "~m1713533116375",
+ "~:is-default": true
+ }
+]
\ No newline at end of file
diff --git a/frontend/playwright/data/workspace/get-file-tokens.json b/frontend/playwright/data/workspace/get-file-tokens.json
index 84143b7a4e..d10f306b4c 100644
--- a/frontend/playwright/data/workspace/get-file-tokens.json
+++ b/frontend/playwright/data/workspace/get-file-tokens.json
@@ -53,7 +53,7 @@
{
"~#penpot/token-set": {
"~:name": "core",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498283",
"~:tokens": {
"~#ordered-map": [
@@ -64,7 +64,7 @@
"~:name": "colors.red.600",
"~:type": "~:color",
"~:value": "#e53e3e",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -76,7 +76,7 @@
"~:name": "colors.white",
"~:type": "~:color",
"~:value": "#ffffff",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498277"
}
}
@@ -88,7 +88,7 @@
"~:name": "colors.pink.400",
"~:type": "~:color",
"~:value": "#f687b3",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -100,7 +100,7 @@
"~:name": "colors.blue.300",
"~:type": "~:color",
"~:value": "#90cdf4",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498281"
}
}
@@ -112,7 +112,7 @@
"~:name": "colors.red.700",
"~:type": "~:color",
"~:value": "#c53030",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -124,7 +124,7 @@
"~:name": "colors.pink.800",
"~:type": "~:color",
"~:value": "#97266d",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -136,7 +136,7 @@
"~:name": "colors.green.100",
"~:type": "~:color",
"~:value": "#f0fff4",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498279"
}
}
@@ -148,7 +148,7 @@
"~:name": "colors.blue.100",
"~:type": "~:color",
"~:value": "#ebf8ff",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498281"
}
}
@@ -160,7 +160,7 @@
"~:name": "colors.green.800",
"~:type": "~:color",
"~:value": "#276749",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498280"
}
}
@@ -172,7 +172,7 @@
"~:name": "colors.indigo.500",
"~:type": "~:color",
"~:value": "#667eea",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -184,7 +184,7 @@
"~:name": "dimension.sm",
"~:type": "~:dimensions",
"~:value": "{dimension.xs} * {dimension.scale}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498276"
}
}
@@ -196,7 +196,7 @@
"~:name": "colors.purple.900",
"~:type": "~:color",
"~:value": "#44337a",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -208,7 +208,7 @@
"~:name": "colors.orange.200",
"~:type": "~:color",
"~:value": "#feebc8",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -220,7 +220,7 @@
"~:name": "colors.teal.700",
"~:type": "~:color",
"~:value": "#2c7a7b",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498281"
}
}
@@ -232,7 +232,7 @@
"~:name": "colors.green.300",
"~:type": "~:color",
"~:value": "#9ae6b4",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498279"
}
}
@@ -244,7 +244,7 @@
"~:name": "colors.pink.600",
"~:type": "~:color",
"~:value": "#d53f8c",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -256,7 +256,7 @@
"~:name": "colors.yellow.200",
"~:type": "~:color",
"~:value": "#fefcbf",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498279"
}
}
@@ -268,7 +268,7 @@
"~:name": "colors.yellow.800",
"~:type": "~:color",
"~:value": "#975a16",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498279"
}
}
@@ -280,7 +280,7 @@
"~:name": "colors.teal.200",
"~:type": "~:color",
"~:value": "#b2f5ea",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498281"
}
}
@@ -292,7 +292,7 @@
"~:name": "colors.teal.500",
"~:type": "~:color",
"~:value": "#38b2ac",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498281"
}
}
@@ -304,7 +304,7 @@
"~:name": "colors.blue.200",
"~:type": "~:color",
"~:value": "#bee3f8",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498281"
}
}
@@ -316,7 +316,7 @@
"~:name": "colors.green.600",
"~:type": "~:color",
"~:value": "#38a169",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498279"
}
}
@@ -328,7 +328,7 @@
"~:name": "colors.indigo.400",
"~:type": "~:color",
"~:value": "#7f9cf5",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -340,7 +340,7 @@
"~:name": "colors.purple.600",
"~:type": "~:color",
"~:value": "#805ad5",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -352,7 +352,7 @@
"~:name": "colors.purple.400",
"~:type": "~:color",
"~:value": "#b794f4",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -364,7 +364,7 @@
"~:name": "colors.indigo.900",
"~:type": "~:color",
"~:value": "#3c366b",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -376,7 +376,7 @@
"~:name": "spacing.lg",
"~:type": "~:spacing",
"~:value": "{dimension.lg}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498277"
}
}
@@ -388,7 +388,7 @@
"~:name": "colors.purple.300",
"~:type": "~:color",
"~:value": "#d6bcfa",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -400,7 +400,7 @@
"~:name": "colors.yellow.500",
"~:type": "~:color",
"~:value": "#ecc94b",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498279"
}
}
@@ -412,7 +412,7 @@
"~:name": "opacity.md",
"~:type": "~:opacity",
"~:value": "50%",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498283"
}
}
@@ -424,7 +424,7 @@
"~:name": "colors.purple.800",
"~:type": "~:color",
"~:value": "#553c9a",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -436,7 +436,7 @@
"~:name": "colors.yellow.900",
"~:type": "~:color",
"~:value": "#744210",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498279"
}
}
@@ -448,7 +448,7 @@
"~:name": "dimension.xl",
"~:type": "~:dimensions",
"~:value": "{dimension.lg} * {dimension.scale}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498276"
}
}
@@ -460,7 +460,7 @@
"~:name": "colors.yellow.700",
"~:type": "~:color",
"~:value": "#b7791f",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498279"
}
}
@@ -472,7 +472,7 @@
"~:name": "colors.green.900",
"~:type": "~:color",
"~:value": "#22543d",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498280"
}
}
@@ -484,7 +484,7 @@
"~:name": "spacing.md",
"~:type": "~:spacing",
"~:value": "{dimension.md}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498277"
}
}
@@ -496,7 +496,7 @@
"~:name": "colors.red.200",
"~:type": "~:color",
"~:value": "#fed7d7",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -508,7 +508,7 @@
"~:name": "colors.orange.600",
"~:type": "~:color",
"~:value": "#dd6b20",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -520,7 +520,7 @@
"~:name": "dimension.scale",
"~:type": "~:dimensions",
"~:value": "2",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498276"
}
}
@@ -532,7 +532,7 @@
"~:name": "colors.red.800",
"~:type": "~:color",
"~:value": "#9b2c2c",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -544,7 +544,7 @@
"~:name": "colors.red.300",
"~:type": "~:color",
"~:value": "#feb2b2",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -556,7 +556,7 @@
"~:name": "dimension.md",
"~:type": "~:dimensions",
"~:value": "{dimension.sm} * {dimension.scale}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498276"
}
}
@@ -568,7 +568,7 @@
"~:name": "colors.gray.600",
"~:type": "~:color",
"~:value": "#718096",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498277"
}
}
@@ -580,7 +580,7 @@
"~:name": "colors.pink.100",
"~:type": "~:color",
"~:value": "#fff5f7",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -592,7 +592,7 @@
"~:name": "colors.yellow.300",
"~:type": "~:color",
"~:value": "#faf089",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498279"
}
}
@@ -604,7 +604,7 @@
"~:name": "colors.orange.800",
"~:type": "~:color",
"~:value": "#9c4221",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -616,7 +616,7 @@
"~:name": "colors.indigo.700",
"~:type": "~:color",
"~:value": "#4c51bf",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -628,7 +628,7 @@
"~:name": "colors.yellow.400",
"~:type": "~:color",
"~:value": "#f6e05e",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498279"
}
}
@@ -640,7 +640,7 @@
"~:name": "opacity.low",
"~:type": "~:opacity",
"~:value": "10%",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498283"
}
}
@@ -652,7 +652,7 @@
"~:name": "colors.indigo.200",
"~:type": "~:color",
"~:value": "#c3dafe",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -664,7 +664,7 @@
"~:name": "colors.blue.900",
"~:type": "~:color",
"~:value": "#2a4365",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498281"
}
}
@@ -676,7 +676,7 @@
"~:name": "colors.gray.500",
"~:type": "~:color",
"~:value": "#a0aec0",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498277"
}
}
@@ -688,7 +688,7 @@
"~:name": "colors.red.400",
"~:type": "~:color",
"~:value": "#fc8181",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -700,7 +700,7 @@
"~:name": "colors.teal.800",
"~:type": "~:color",
"~:value": "#285e61",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498281"
}
}
@@ -712,7 +712,7 @@
"~:name": "colors.gray.300",
"~:type": "~:color",
"~:value": "#e2e8f0",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498277"
}
}
@@ -724,7 +724,7 @@
"~:name": "colors.teal.600",
"~:type": "~:color",
"~:value": "#319795",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498281"
}
}
@@ -736,7 +736,7 @@
"~:name": "colors.red.500",
"~:type": "~:color",
"~:value": "#f56565",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -748,7 +748,7 @@
"~:name": "colors.teal.400",
"~:type": "~:color",
"~:value": "#4fd1c5",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498281"
}
}
@@ -760,7 +760,7 @@
"~:name": "borderRadius.lg",
"~:type": "~:border-radius",
"~:value": "8",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498277"
}
}
@@ -772,7 +772,7 @@
"~:name": "colors.gray.200",
"~:type": "~:color",
"~:value": "#edf2f7",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498277"
}
}
@@ -784,7 +784,7 @@
"~:name": "colors.red.900",
"~:type": "~:color",
"~:value": "#742a2a",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -796,7 +796,7 @@
"~:name": "colors.gray.900",
"~:type": "~:color",
"~:value": "#1a202c",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -808,7 +808,7 @@
"~:name": "colors.pink.700",
"~:type": "~:color",
"~:value": "#b83280",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -820,7 +820,7 @@
"~:name": "colors.green.200",
"~:type": "~:color",
"~:value": "#c6f6d5",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498279"
}
}
@@ -832,7 +832,7 @@
"~:name": "colors.pink.500",
"~:type": "~:color",
"~:value": "#ed64a6",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -844,7 +844,7 @@
"~:name": "colors.yellow.600",
"~:type": "~:color",
"~:value": "#d69e2e",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498279"
}
}
@@ -856,7 +856,7 @@
"~:name": "colors.orange.700",
"~:type": "~:color",
"~:value": "#c05621",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -868,7 +868,7 @@
"~:name": "colors.teal.100",
"~:type": "~:color",
"~:value": "#e6fffa",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498280"
}
}
@@ -880,7 +880,7 @@
"~:name": "colors.gray.800",
"~:type": "~:color",
"~:value": "#2d3748",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -892,7 +892,7 @@
"~:name": "colors.orange.300",
"~:type": "~:color",
"~:value": "#fbd38d",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -904,7 +904,7 @@
"~:name": "colors.orange.100",
"~:type": "~:color",
"~:value": "#fffaf0",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -916,7 +916,7 @@
"~:name": "colors.purple.700",
"~:type": "~:color",
"~:value": "#6b46c1",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -928,7 +928,7 @@
"~:name": "dimension.lg",
"~:type": "~:dimensions",
"~:value": "{dimension.md} * {dimension.scale}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498276"
}
}
@@ -940,7 +940,7 @@
"~:name": "colors.gray.400",
"~:type": "~:color",
"~:value": "#cbd5e0",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498277"
}
}
@@ -952,7 +952,7 @@
"~:name": "colors.indigo.100",
"~:type": "~:color",
"~:value": "#ebf4ff",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -964,7 +964,7 @@
"~:name": "colors.green.500",
"~:type": "~:color",
"~:value": "#48bb78",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498279"
}
}
@@ -976,7 +976,7 @@
"~:name": "colors.pink.300",
"~:type": "~:color",
"~:value": "#fbb6ce",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -988,7 +988,7 @@
"~:name": "colors.pink.900",
"~:type": "~:color",
"~:value": "#702459",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -1000,7 +1000,7 @@
"~:name": "colors.purple.200",
"~:type": "~:color",
"~:value": "#e9d8fd",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -1012,7 +1012,7 @@
"~:name": "colors.purple.500",
"~:type": "~:color",
"~:value": "#9f7aea",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -1024,7 +1024,7 @@
"~:name": "colors.green.700",
"~:type": "~:color",
"~:value": "#2f855a",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498279"
}
}
@@ -1036,7 +1036,7 @@
"~:name": "colors.indigo.800",
"~:type": "~:color",
"~:value": "#434190",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -1048,7 +1048,7 @@
"~:name": "colors.blue.700",
"~:type": "~:color",
"~:value": "#2b6cb0",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498281"
}
}
@@ -1060,7 +1060,7 @@
"~:name": "borderRadius.sm",
"~:type": "~:border-radius",
"~:value": "4",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498277"
}
}
@@ -1072,7 +1072,7 @@
"~:name": "colors.black",
"~:type": "~:color",
"~:value": "#000000",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498277"
}
}
@@ -1084,7 +1084,7 @@
"~:name": "opacity.high",
"~:type": "~:opacity",
"~:value": "90%",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498283"
}
}
@@ -1096,7 +1096,7 @@
"~:name": "colors.blue.800",
"~:type": "~:color",
"~:value": "#2c5282",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498281"
}
}
@@ -1108,7 +1108,7 @@
"~:name": "colors.orange.400",
"~:type": "~:color",
"~:value": "#f6ad55",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -1120,7 +1120,7 @@
"~:name": "colors.pink.200",
"~:type": "~:color",
"~:value": "#fed7e2",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -1132,7 +1132,7 @@
"~:name": "colors.gray.100",
"~:type": "~:color",
"~:value": "#f7fafc",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498277"
}
}
@@ -1144,7 +1144,7 @@
"~:name": "spacing.xl",
"~:type": "~:spacing",
"~:value": "{dimension.xl}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498277"
}
}
@@ -1156,7 +1156,7 @@
"~:name": "dimension.xs",
"~:type": "~:dimensions",
"~:value": "4",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498276"
}
}
@@ -1168,7 +1168,7 @@
"~:name": "colors.teal.900",
"~:type": "~:color",
"~:value": "#234e52",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498281"
}
}
@@ -1180,7 +1180,7 @@
"~:name": "colors.teal.300",
"~:type": "~:color",
"~:value": "#81e6d9",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498281"
}
}
@@ -1192,7 +1192,7 @@
"~:name": "colors.blue.500",
"~:type": "~:color",
"~:value": "#4299e1",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498281"
}
}
@@ -1204,7 +1204,7 @@
"~:name": "borderRadius.xl",
"~:type": "~:border-radius",
"~:value": "16",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498277"
}
}
@@ -1216,7 +1216,7 @@
"~:name": "colors.green.400",
"~:type": "~:color",
"~:value": "#68d391",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498279"
}
}
@@ -1228,7 +1228,7 @@
"~:name": "colors.indigo.300",
"~:type": "~:color",
"~:value": "#a3bffa",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -1240,7 +1240,7 @@
"~:name": "colors.red.100",
"~:type": "~:color",
"~:value": "#fff5f5",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -1252,7 +1252,7 @@
"~:name": "colors.orange.900",
"~:type": "~:color",
"~:value": "#7b341e",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498279"
}
}
@@ -1264,7 +1264,7 @@
"~:name": "colors.purple.100",
"~:type": "~:color",
"~:value": "#faf5ff",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -1276,7 +1276,7 @@
"~:name": "spacing.xs",
"~:type": "~:spacing",
"~:value": "{dimension.xs}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498276"
}
}
@@ -1288,7 +1288,7 @@
"~:name": "colors.indigo.600",
"~:type": "~:color",
"~:value": "#5a67d8",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498282"
}
}
@@ -1300,7 +1300,7 @@
"~:name": "colors.gray.700",
"~:type": "~:color",
"~:value": "#4a5568",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498277"
}
}
@@ -1312,7 +1312,7 @@
"~:name": "colors.blue.400",
"~:type": "~:color",
"~:value": "#63b3ed",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498281"
}
}
@@ -1324,7 +1324,7 @@
"~:name": "spacing.sm",
"~:type": "~:spacing",
"~:value": "{dimension.sm}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498277"
}
}
@@ -1336,7 +1336,7 @@
"~:name": "colors.orange.500",
"~:type": "~:color",
"~:value": "#ed8936",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498278"
}
}
@@ -1348,7 +1348,7 @@
"~:name": "colors.yellow.100",
"~:type": "~:color",
"~:value": "#fffff0",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498279"
}
}
@@ -1360,7 +1360,7 @@
"~:name": "colors.blue.600",
"~:type": "~:color",
"~:value": "#3182ce",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498281"
}
}
@@ -1379,7 +1379,7 @@
{
"~#penpot/token-set": {
"~:name": "LightDark/light",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498290",
"~:tokens": {
"~#ordered-map": [
@@ -1390,7 +1390,7 @@
"~:name": "accent.default",
"~:type": "~:color",
"~:value": "{colors.indigo.400}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498290"
}
}
@@ -1402,7 +1402,7 @@
"~:name": "bg.muted",
"~:type": "~:color",
"~:value": "{colors.gray.100}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498290"
}
}
@@ -1414,7 +1414,7 @@
"~:name": "bg.subtle",
"~:type": "~:color",
"~:value": "{colors.gray.200}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498290"
}
}
@@ -1426,7 +1426,7 @@
"~:name": "accent.bg",
"~:type": "~:color",
"~:value": "{colors.indigo.200}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498290"
}
}
@@ -1438,7 +1438,7 @@
"~:name": "accent.onAccent",
"~:type": "~:color",
"~:value": "{colors.white}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498290"
}
}
@@ -1450,7 +1450,7 @@
"~:name": "shadows.default",
"~:type": "~:color",
"~:value": "{colors.gray.900}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498290"
}
}
@@ -1462,7 +1462,7 @@
"~:name": "fg.muted",
"~:type": "~:color",
"~:value": "{colors.gray.700}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498289"
}
}
@@ -1474,7 +1474,7 @@
"~:name": "fg.default",
"~:type": "~:color",
"~:value": "{colors.black}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498289"
}
}
@@ -1486,7 +1486,7 @@
"~:name": "fg.subtle",
"~:type": "~:color",
"~:value": "{colors.gray.500}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498290"
}
}
@@ -1498,7 +1498,7 @@
"~:name": "bg.default",
"~:type": "~:color",
"~:value": "{colors.white}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498290"
}
}
@@ -1514,7 +1514,7 @@
{
"~#penpot/token-set": {
"~:name": "LightDark/dark",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498291",
"~:tokens": {
"~#ordered-map": [
@@ -1525,7 +1525,7 @@
"~:name": "accent.default",
"~:type": "~:color",
"~:value": "{colors.indigo.600}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498291"
}
}
@@ -1537,7 +1537,7 @@
"~:name": "bg.muted",
"~:type": "~:color",
"~:value": "{colors.gray.700}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498291"
}
}
@@ -1549,7 +1549,7 @@
"~:name": "bg.subtle",
"~:type": "~:color",
"~:value": "{colors.gray.600}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498291"
}
}
@@ -1561,7 +1561,7 @@
"~:name": "accent.bg",
"~:type": "~:color",
"~:value": "{colors.indigo.800}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498291"
}
}
@@ -1573,7 +1573,7 @@
"~:name": "accent.onAccent",
"~:type": "~:color",
"~:value": "{colors.white}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498291"
}
}
@@ -1585,7 +1585,7 @@
"~:name": "shadows.default",
"~:type": "~:color",
"~:value": "rgba({colors.black}, 0.3)",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498291"
}
}
@@ -1597,7 +1597,7 @@
"~:name": "fg.muted",
"~:type": "~:color",
"~:value": "{colors.gray.300}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498291"
}
}
@@ -1609,7 +1609,7 @@
"~:name": "fg.default",
"~:type": "~:color",
"~:value": "{colors.white}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498291"
}
}
@@ -1621,7 +1621,7 @@
"~:name": "fg.subtle",
"~:type": "~:color",
"~:value": "{colors.gray.500}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498291"
}
}
@@ -1633,7 +1633,7 @@
"~:name": "bg.default",
"~:type": "~:color",
"~:value": "{colors.gray.900}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498291"
}
}
@@ -1651,7 +1651,7 @@
{
"~#penpot/token-set": {
"~:name": "theme",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498292",
"~:tokens": {
"~#ordered-map": [
@@ -1662,7 +1662,7 @@
"~:name": "button.primary.background",
"~:type": "~:color",
"~:value": "{accent.default}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498292"
}
}
@@ -1674,7 +1674,7 @@
"~:name": "button.primary.text",
"~:type": "~:color",
"~:value": "{accent.onAccent}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498292"
}
}
@@ -1686,7 +1686,7 @@
"~:name": "button.borderRadius",
"~:type": "~:border-radius",
"~:value": "{borderRadius.lg}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498292"
}
}
@@ -1698,7 +1698,7 @@
"~:name": "card.borderRadius",
"~:type": "~:border-radius",
"~:value": "{borderRadius.lg}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498292"
}
}
@@ -1710,7 +1710,7 @@
"~:name": "card.background",
"~:type": "~:color",
"~:value": "{bg.default}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498292"
}
}
@@ -1722,7 +1722,7 @@
"~:name": "card.padding",
"~:type": "~:dimensions",
"~:value": "{dimension.md}",
- "~:description": null,
+ "~:description": "",
"~:modified-at": "~m1737542498292"
}
}
@@ -1746,7 +1746,7 @@
"~#penpot/token-theme": {
"~:name": "Light",
"~:group": "Core",
- "~:description": null,
+ "~:description": "",
"~:is-source": false,
"~:id": "core-light",
"~:modified-at": "~m1737542746842",
@@ -1762,7 +1762,7 @@
"~#penpot/token-theme": {
"~:name": "Dark",
"~:group": "Core",
- "~:description": null,
+ "~:description": "",
"~:is-source": false,
"~:id": "core-dark",
"~:modified-at": "~m1737542746842",
@@ -1785,7 +1785,7 @@
"~#penpot/token-theme": {
"~:name": "__PENPOT__HIDDEN__TOKEN__THEME__",
"~:group": "",
- "~:description": null,
+ "~:description": "",
"~:is-source": false,
"~:id": "hidden-theme",
"~:modified-at": "~m1737542683555",
diff --git a/frontend/playwright/data/workspace/get-team-variants.json b/frontend/playwright/data/workspace/get-team-variants.json
new file mode 100644
index 0000000000..2ac6097bdc
--- /dev/null
+++ b/frontend/playwright/data/workspace/get-team-variants.json
@@ -0,0 +1,24 @@
+{
+ "~:features": {
+ "~#set": [
+ "variants/v1",
+ "layout/grid",
+ "styles/v2",
+ "fdata/pointer-map",
+ "fdata/objects-map",
+ "components/v2",
+ "fdata/shape-data-type"
+ ]
+ },
+ "~:permissions": {
+ "~:type": "~:membership",
+ "~:is-owner": true,
+ "~:is-admin": true,
+ "~:can-edit": true
+ },
+ "~:name": "Default",
+ "~:modified-at": "~m1713533116375",
+ "~:id": "~uc7ce0794-0992-8105-8004-38e630f40f6d",
+ "~:created-at": "~m1713533116375",
+ "~:is-default": true
+}
\ No newline at end of file
diff --git a/frontend/playwright/ui/pages/WorkspacePage.js b/frontend/playwright/ui/pages/WorkspacePage.js
index 3fc9b42db0..6e79fa686a 100644
--- a/frontend/playwright/ui/pages/WorkspacePage.js
+++ b/frontend/playwright/ui/pages/WorkspacePage.js
@@ -70,6 +70,7 @@ export class WorkspacePage extends BaseWebSocketPage {
);
this.toolbarOptions = page.getByTestId("toolbar-options");
this.rectShapeButton = page.getByRole("button", { name: "Rectangle (R)" });
+ this.ellipseShapeButton = page.getByRole("button", { name: "Ellipse (E)" });
this.moveButton = page.getByRole("button", { name: "Move (V)" });
this.boardButton = page.getByRole("button", { name: "Board (B)" });
this.toggleToolbarButton = page.getByRole("button", {
@@ -198,6 +199,13 @@ export class WorkspacePage extends BaseWebSocketPage {
await this.page.mouse.up();
}
+ async clickAt(x, y) {
+ await this.page.waitForTimeout(100);
+ await this.viewport.hover({ position: { x, y } });
+ await this.page.mouse.down();
+ await this.page.mouse.up();
+ }
+
async panOnViewportAt(x, y, width, height) {
await this.page.waitForTimeout(100);
await this.viewport.hover({ position: { x, y } });
diff --git a/frontend/playwright/ui/specs/render-wasm.spec.js b/frontend/playwright/ui/specs/render-wasm.spec.js
new file mode 100644
index 0000000000..abf8fae464
--- /dev/null
+++ b/frontend/playwright/ui/specs/render-wasm.spec.js
@@ -0,0 +1,23 @@
+import { test, expect } from "@playwright/test";
+import { WorkspacePage } from "../pages/WorkspacePage";
+import { BaseWebSocketPage } from "../pages/BaseWebSocketPage";
+
+test.beforeEach(async ({ page }) => {
+ await WorkspacePage.init(page);
+ await BaseWebSocketPage.mockRPC(
+ page,
+ "get-teams",
+ "get-teams-render-wasm.json",
+ );
+});
+
+test("BUG 10867 - Crash when loading comments", async ({ page }) => {
+ const workspacePage = new WorkspacePage(page);
+ await workspacePage.setupEmptyFile();
+ await workspacePage.goToWorkspace();
+
+ await workspacePage.showComments();
+ await expect(
+ workspacePage.rightSidebar.getByText("Show all comments"),
+ ).toBeVisible();
+});
diff --git a/frontend/playwright/ui/specs/tokens.spec.js b/frontend/playwright/ui/specs/tokens.spec.js
index 73e8488316..e717b77e36 100644
--- a/frontend/playwright/ui/specs/tokens.spec.js
+++ b/frontend/playwright/ui/specs/tokens.spec.js
@@ -371,6 +371,59 @@ test.describe("Tokens: Tokens Tab", () => {
await expect(tokensTabPanel.getByLabel("color.dark.primary")).toBeEnabled();
});
+ test("User changes color token color while keeping custom color space", async ({
+ page,
+ }) => {
+ const { workspacePage, tokensUpdateCreateModal, tokenThemesSetsSidebar } =
+ await setupEmptyTokensFile(page);
+
+ const tokensTabPanel = page.getByRole("tabpanel", { name: "tokens" });
+ await tokensTabPanel.getByTitle("Add token: Color").click();
+
+ await expect(tokensUpdateCreateModal).toBeVisible();
+ const nameField = tokensUpdateCreateModal.getByLabel("Name");
+ const valueField = tokensUpdateCreateModal.getByLabel("Value");
+
+ await valueField.click();
+ await valueField.fill("hsv(1,1,1)");
+ await expect(
+ tokensUpdateCreateModal.getByText("Resolved value: #ff0400"),
+ ).toBeVisible();
+
+ const colorBullet = tokensUpdateCreateModal.getByTestId(
+ "token-form-color-bullet",
+ );
+ await colorBullet.click();
+
+ const valueSaturationSelector = tokensUpdateCreateModal.getByTestId(
+ "value-saturation-selector",
+ );
+ await expect(valueSaturationSelector).toBeVisible();
+
+ // Check if color space doesnt get overwritten when changing color via the picker
+ // Not testing for exact value to avoid flakiness of px click
+ await valueSaturationSelector.click({ position: { x: 100, y: 100 } });
+ await expect(valueField).not.toHaveValue("hsv(1,1,1)");
+ await expect(valueField).toHaveValue(/^hsv.*$/);
+
+ // Clearing the input field should pick hex
+ await valueField.fill("");
+ await expect(
+ tokensUpdateCreateModal.getByText("Resolved value: -"),
+ ).toBeVisible();
+ await valueSaturationSelector.click({ position: { x: 50, y: 50 } });
+ await expect(valueField).toHaveValue(/^#[A-Fa-f\d]+$/);
+
+ // Changing opacity for hex values converts to rgba
+ const sliderOpacity = tokensUpdateCreateModal.getByTestId("slider-opacity");
+ await sliderOpacity.click({ position: { x: 50, y: 0 } });
+ await expect(valueField).toHaveValue(/^rgba(.*)$/);
+
+ // Changing color now will stay in rgba
+ await valueSaturationSelector.click({ position: { x: 0, y: 0 } });
+ await expect(valueField).toHaveValue(/^rgba(.*)$/);
+ });
+
test("User duplicate color token", async ({ page }) => {
const { tokensSidebar, tokenContextMenuForToken } =
await setupTokensFile(page);
@@ -511,7 +564,9 @@ test.describe("Tokens: Sets Tab", () => {
// Creates nesting by renaming set with double click
await tokenThemesSetsSidebar
.getByRole("button", { name: "light-renamed" })
- .dblclick();
+ .click({ button: "right" });
+ await expect(tokenContextMenuForSet).toBeVisible();
+ await tokenContextMenuForSet.getByText("Rename").click();
await changeSetInput(tokenThemesSetsSidebar, "nested/light");
await assertSetsList(tokenThemesSetsSidebar, [
diff --git a/frontend/playwright/ui/specs/variants.spec.js b/frontend/playwright/ui/specs/variants.spec.js
new file mode 100644
index 0000000000..9b042341b5
--- /dev/null
+++ b/frontend/playwright/ui/specs/variants.spec.js
@@ -0,0 +1,428 @@
+import { test, expect } from "@playwright/test";
+import { WorkspacePage } from "../pages/WorkspacePage";
+import { BaseWebSocketPage } from "../pages/BaseWebSocketPage";
+
+test.beforeEach(async ({ page }) => {
+ await WorkspacePage.init(page);
+ await BaseWebSocketPage.mockRPC(page, "get-teams", "get-teams-variants.json");
+});
+
+const setupVariantsFile = async (workspacePage) => {
+ await workspacePage.setupEmptyFile();
+ await workspacePage.mockRPC(
+ "get-team?id=*",
+ "workspace/get-team-variants.json",
+ );
+
+ await workspacePage.setupEmptyFile();
+ await workspacePage.mockRPC(
+ /get\-file\?/,
+ "workspace/get-file-not-empty.json",
+ );
+ await workspacePage.mockRPC(
+ "update-file?id=*",
+ "workspace/update-file-create-rect.json",
+ );
+
+ await workspacePage.goToWorkspace({
+ fileId: "6191cd35-bb1f-81f7-8004-7cc63d087374",
+ pageId: "6191cd35-bb1f-81f7-8004-7cc63d087375",
+ });
+};
+
+const setupVariantsFileWithVariant = async (workspacePage) => {
+ await setupVariantsFile(workspacePage);
+
+ await workspacePage.clickLeafLayer("Rectangle");
+ await workspacePage.page.keyboard.press("Control+k");
+ await workspacePage.page.keyboard.press("Control+k");
+};
+
+const findVariant = async (workspacePage, num_variant) => {
+ const container = await workspacePage.layers
+ .getByTestId("layer-row")
+ .filter({ has: workspacePage.page.getByText("Rectangle") })
+ .filter({ has: workspacePage.page.locator(".icon-component") })
+ .nth(num_variant);
+
+ const variant1 = await workspacePage.layers
+ .getByTestId("layer-row")
+ .filter({ has: workspacePage.page.getByText("Value 1") })
+ .filter({ has: workspacePage.page.locator(".icon-variant") })
+ .nth(num_variant);
+
+ const variant2 = await workspacePage.layers
+ .getByTestId("layer-row")
+ .filter({ has: workspacePage.page.getByText("Value 2") })
+ .filter({ has: workspacePage.page.locator(".icon-variant") })
+ .nth(num_variant);
+
+ return {
+ container: container,
+ variant1: variant1,
+ variant2: variant2,
+ };
+};
+
+const validateVariant = async (variant) => {
+ //The variant container exists and is visible
+ await expect(variant.container).toBeVisible();
+
+ //The variants exists and are visible
+ await expect(variant.variant1).toBeVisible();
+ await expect(variant.variant2).toBeVisible();
+
+ // variant1 and variant2 are items inside the childs of variant_container
+ const parent_id = "children-" + (await variant.container.getAttribute("id"));
+ await expect(variant.variant1.locator("xpath=..")).toHaveAttribute(
+ "data-testid",
+ parent_id,
+ );
+ await expect(variant.variant2.locator("xpath=..")).toHaveAttribute(
+ "data-testid",
+ parent_id,
+ );
+};
+
+test("User creates a variant", async ({ page }) => {
+ const workspacePage = new WorkspacePage(page);
+ await setupVariantsFileWithVariant(workspacePage);
+
+ await workspacePage.clickLeafLayer("Rectangle");
+
+ const variant = await findVariant(workspacePage, 0);
+ // The variant is valid
+ await validateVariant(variant);
+
+ // Extra validators
+ await variant.container.click();
+
+ const variants = await workspacePage.layers
+ .getByTestId("layer-row")
+ .filter({ has: workspacePage.page.locator(".icon-variant") })
+ .all();
+
+ // There are exactly two variants
+ expect(variants.length).toBe(2);
+
+ // The design tab shows the variant properties
+ await expect(
+ workspacePage.page.getByTitle("Property1: Value 1, Value 2"),
+ ).toBeVisible();
+});
+
+test("User duplicates a variant container", async ({ page }) => {
+ const workspacePage = new WorkspacePage(page);
+ await setupVariantsFileWithVariant(workspacePage);
+
+ const variant = await findVariant(workspacePage, 0);
+
+ // Select the variant container
+ await variant.container.click();
+
+ //Duplicate the variant container
+ await workspacePage.page.keyboard.press("Control+d");
+
+ const variant_original = await findVariant(workspacePage, 1); // On duplicate, the new item is the first
+ const variant_duplicate = await findVariant(workspacePage, 0);
+
+ // Expand the layers
+ await variant_duplicate.container.getByRole("button").first().click();
+
+ // The variants are valid
+ await validateVariant(variant_original);
+ await validateVariant(variant_duplicate);
+});
+
+test("User copy paste a variant container", async ({ page }) => {
+ const workspacePage = new WorkspacePage(page);
+ await setupVariantsFileWithVariant(workspacePage);
+
+ const variant = await findVariant(workspacePage, 0);
+
+ // Select the variant container
+ await variant.container.click();
+
+ //Copy the variant container
+ await workspacePage.page.keyboard.press("Control+c");
+
+ //Paste the variant container
+ 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);
+
+ // Expand the layers
+ await variant_duplicate.container.getByRole("button").first().click();
+
+ // The variants are valid
+ await validateVariant(variant_original);
+ await validateVariant(variant_duplicate);
+});
+
+test("User cut paste a variant container", async ({ page }) => {
+ const workspacePage = new WorkspacePage(page);
+ await setupVariantsFileWithVariant(workspacePage);
+
+ const variant = await findVariant(workspacePage, 0);
+
+ // Select the variant container
+ await variant.container.click();
+
+ //Cut the variant container
+ await workspacePage.page.keyboard.press("Control+x");
+
+ //Paste the variant container
+ await workspacePage.clickAt(500, 500);
+ await workspacePage.page.keyboard.press("Control+v");
+
+ const variant_pasted = await findVariant(workspacePage, 0);
+
+ // Expand the layers
+ await variant_pasted.container.getByRole("button").first().click();
+
+ // The variants are valid
+ await validateVariant(variant_pasted);
+});
+
+test("[Bugfixing] User cut paste a variant container into a board, and undo twice", async ({
+ page,
+}) => {
+ const workspacePage = new WorkspacePage(page);
+ await setupVariantsFileWithVariant(workspacePage);
+
+ const variant = await findVariant(workspacePage, 0);
+
+ //Create a board
+ await workspacePage.boardButton.click();
+ await workspacePage.clickWithDragViewportAt(500, 500, 200, 200);
+ await workspacePage.clickAt(495, 495);
+ const board = await workspacePage.rootShape.locator("Board");
+
+ // Select the variant container
+ await variant.container.click();
+
+ //Cut the variant container
+ await workspacePage.page.keyboard.press("Control+x");
+
+ //Select the board
+ await workspacePage.clickLeafLayer("Board");
+
+ //Paste the variant container inside the board
+ await workspacePage.page.keyboard.press("Control+v");
+
+ //Undo twice
+ await workspacePage.page.keyboard.press("Control+z");
+ await workspacePage.page.keyboard.press("Control+z");
+
+ const variant_after_undo = await findVariant(workspacePage, 0);
+
+ // The variants are valid
+ await validateVariant(variant_after_undo);
+});
+
+test("User copy paste a variant", async ({ page }) => {
+ const workspacePage = new WorkspacePage(page);
+ await setupVariantsFileWithVariant(workspacePage);
+
+ const variant = await findVariant(workspacePage, 0);
+
+ // Select the variant1
+ await variant.variant1.click();
+
+ //Cut the variant
+ await workspacePage.page.keyboard.press("Control+c");
+
+ //Paste the variant
+ await workspacePage.clickAt(500, 500);
+ await workspacePage.page.keyboard.press("Control+v");
+
+ const copy = await workspacePage.layers
+ .getByTestId("layer-row")
+ .filter({ has: workspacePage.page.getByText("Rectangle") })
+ .filter({ has: workspacePage.page.locator(".icon-component-copy") });
+
+ //The copy exists and is visible
+ await expect(copy).toBeVisible();
+});
+
+test("User cut paste a variant outside the container", async ({ page }) => {
+ const workspacePage = new WorkspacePage(page);
+ await setupVariantsFileWithVariant(workspacePage);
+
+ const variant = await findVariant(workspacePage, 0);
+
+ // Select the variant1
+ await variant.variant1.click();
+
+ //Cut the variant
+ await workspacePage.page.keyboard.press("Control+x");
+
+ //Paste the variant
+ await workspacePage.clickAt(500, 500);
+ await workspacePage.page.keyboard.press("Control+v");
+
+ const component = await workspacePage.layers
+ .getByTestId("layer-row")
+ .filter({ has: workspacePage.page.getByText("Rectangle / Value 1") })
+ .filter({ has: workspacePage.page.locator(".icon-component") });
+
+ //The component exists and is visible
+ await expect(component).toBeVisible();
+});
+
+test("User drag and drop a variant outside the container", async ({ page }) => {
+ const workspacePage = new WorkspacePage(page);
+ await setupVariantsFileWithVariant(workspacePage);
+
+ const variant = await findVariant(workspacePage, 0);
+
+ // Drag and drop the variant
+ await workspacePage.clickWithDragViewportAt(350, 400, 0, 200);
+
+ const component = await workspacePage.layers
+ .getByTestId("layer-row")
+ .filter({ has: workspacePage.page.getByText("Rectangle / Value 1") })
+ .filter({ has: workspacePage.page.locator(".icon-component") });
+
+ //The component exists and is visible
+ await expect(component).toBeVisible();
+});
+
+test("User cut paste a component inside a variant", async ({ page }) => {
+ const workspacePage = new WorkspacePage(page);
+ await setupVariantsFileWithVariant(workspacePage);
+
+ const variant = await findVariant(workspacePage, 0);
+
+ //Create a component
+ await workspacePage.ellipseShapeButton.click();
+ await workspacePage.clickWithDragViewportAt(500, 500, 20, 20);
+ await workspacePage.clickLeafLayer("Ellipse");
+ await workspacePage.page.keyboard.press("Control+k");
+
+ //Cut the component
+ await workspacePage.page.keyboard.press("Control+x");
+
+ //Paste the component inside the variant
+ await variant.container.click();
+ await workspacePage.page.keyboard.press("Control+v");
+
+ const variant3 = await workspacePage.layers
+ .getByTestId("layer-row")
+ .filter({ has: workspacePage.page.getByText("Ellipse") })
+ .filter({ has: workspacePage.page.locator(".icon-variant") })
+ .first();
+
+ //The new variant exists and is visible
+ await expect(variant3).toBeVisible();
+});
+
+test("User cut paste a component with path inside a variant", async ({
+ page,
+}) => {
+ const workspacePage = new WorkspacePage(page);
+ await setupVariantsFileWithVariant(workspacePage);
+
+ const variant = await findVariant(workspacePage, 0);
+
+ //Create a component
+ await workspacePage.ellipseShapeButton.click();
+ await workspacePage.clickWithDragViewportAt(500, 500, 20, 20);
+ await workspacePage.clickLeafLayer("Ellipse");
+ await workspacePage.page.keyboard.press("Control+k");
+
+ //Rename the component
+ await workspacePage.layers.getByText("Ellipse").dblclick();
+ await workspacePage.page
+ .getByTestId("layer-item")
+ .getByRole("textbox")
+ .pressSequentially("button / hover");
+ await workspacePage.page.keyboard.press("Enter");
+
+ //Cut the component
+ await workspacePage.page.keyboard.press("Control+x");
+
+ //Paste the component inside the variant
+ await variant.container.click();
+ await workspacePage.page.keyboard.press("Control+v");
+
+ const variant3 = await workspacePage.layers
+ .getByTestId("layer-row")
+ .filter({ has: workspacePage.page.getByText("button, hover") })
+ .filter({ has: workspacePage.page.locator(".icon-variant") })
+ .first();
+
+ //The new variant exists and is visible
+ await expect(variant3).toBeVisible();
+});
+
+test("User drag and drop a component with path inside a variant", async ({
+ page,
+}) => {
+ const workspacePage = new WorkspacePage(page);
+ await setupVariantsFileWithVariant(workspacePage);
+
+ const variant = await findVariant(workspacePage, 0);
+
+ //Create a component
+ await workspacePage.ellipseShapeButton.click();
+ await workspacePage.clickWithDragViewportAt(500, 500, 20, 20);
+ await workspacePage.clickLeafLayer("Ellipse");
+ await workspacePage.page.keyboard.press("Control+k");
+
+ //Rename the component
+ await workspacePage.layers.getByText("Ellipse").dblclick();
+ await workspacePage.page
+ .getByTestId("layer-item")
+ .getByRole("textbox")
+ .pressSequentially("button / hover");
+ await workspacePage.page.keyboard.press("Enter");
+
+ //Drag and drop the component the component
+ await workspacePage.clickWithDragViewportAt(510, 510, 0, -200);
+
+ const variant3 = await workspacePage.layers
+ .getByTestId("layer-row")
+ .filter({ has: workspacePage.page.getByText("button, hover") })
+ .filter({ has: workspacePage.page.locator(".icon-variant") })
+ .first();
+
+ //The new variant exists and is visible
+ await expect(variant3).toBeVisible();
+});
+
+test("User cut paste a variant into another container", async ({ page }) => {
+ const workspacePage = new WorkspacePage(page);
+ await setupVariantsFileWithVariant(workspacePage);
+
+ // Create anothe variant
+ await workspacePage.ellipseShapeButton.click();
+ await workspacePage.clickWithDragViewportAt(500, 500, 20, 20);
+ await workspacePage.clickLeafLayer("Ellipse");
+ await workspacePage.page.keyboard.press("Control+k");
+ await workspacePage.page.keyboard.press("Control+k");
+
+ const variant_origin = await findVariant(workspacePage, 1);
+ const variant_target = await findVariant(workspacePage, 0);
+
+ // Select the variant1
+ await variant_origin.variant1.click();
+
+ //Cut the variant
+ await workspacePage.page.keyboard.press("Control+x");
+
+ //Paste the variant
+ await workspacePage.layers.getByText("Ellipse").first().click();
+ await workspacePage.page.keyboard.press("Control+v");
+
+ const variant3 = await workspacePage.layers
+ .getByTestId("layer-row")
+ .filter({ has: workspacePage.page.getByText("Value 1, rectangle") })
+ .filter({ has: workspacePage.page.locator(".icon-variant") })
+ .first();
+
+ //The new variant exists and is visible
+ await expect(variant3).toBeVisible();
+});
diff --git a/frontend/playwright/ui/specs/versions.spec.js b/frontend/playwright/ui/specs/versions.spec.js
index edd8fc9ea9..dd28a74c5e 100644
--- a/frontend/playwright/ui/specs/versions.spec.js
+++ b/frontend/playwright/ui/specs/versions.spec.js
@@ -4,11 +4,13 @@ import { presenceFixture } from "../../data/workspace/ws-notifications";
test.beforeEach(async ({ page }) => {
await WorkspacePage.init(page);
+ const workspacePage = new WorkspacePage(page);
+ await workspacePage.setupEmptyFile(page);
});
test("Save and restore version", async ({ page }) => {
const workspacePage = new WorkspacePage(page);
- await workspacePage.setupEmptyFile(page);
+
await workspacePage.mockRPC(/get\-file\?/, "workspace/versions-init.json");
await workspacePage.mockRPC(
"get-file-fragment?file-id=*&fragment-id=406b7b01-d3e2-80e4-8005-3138b7cc5f0b",
@@ -87,3 +89,20 @@ test("Save and restore version", async ({ page }) => {
// check that the history panel is closed after restore
await expect(page.getByRole("tab", { name: "design" })).toBeVisible();
});
+
+test("BUG 11006 - Fix history panel shortcut", async ({ page }) => {
+ const workspacePage = new WorkspacePage(page);
+ await workspacePage.mockRPC(/get\-file\?/, "workspace/versions-init.json");
+ await workspacePage.mockRPC(
+ "get-file-snapshots?file-id=*",
+ "workspace/versions-snapshot-1.json",
+ );
+
+ await workspacePage.goToWorkspace();
+
+ await page.keyboard.press("Control+Alt+h");
+
+ await expect(
+ workspacePage.rightSidebar.getByText("There are no versions yet"),
+ ).toBeVisible();
+});
diff --git a/frontend/resources/images/features/2.7-duplicate-set.gif b/frontend/resources/images/features/2.7-duplicate-set.gif
new file mode 100644
index 0000000000..a8e2ff367a
Binary files /dev/null and b/frontend/resources/images/features/2.7-duplicate-set.gif differ
diff --git a/frontend/resources/images/features/2.7-invitations.gif b/frontend/resources/images/features/2.7-invitations.gif
new file mode 100644
index 0000000000..ca601049be
Binary files /dev/null and b/frontend/resources/images/features/2.7-invitations.gif differ
diff --git a/frontend/resources/images/features/2.7-share.gif b/frontend/resources/images/features/2.7-share.gif
new file mode 100644
index 0000000000..e983cbe4a4
Binary files /dev/null and b/frontend/resources/images/features/2.7-share.gif differ
diff --git a/frontend/resources/images/features/2.7-slide-0.jpg b/frontend/resources/images/features/2.7-slide-0.jpg
new file mode 100644
index 0000000000..1825c955ca
Binary files /dev/null and b/frontend/resources/images/features/2.7-slide-0.jpg differ
diff --git a/frontend/resources/images/icons/crown.svg b/frontend/resources/images/icons/crown.svg
new file mode 100644
index 0000000000..086dc5fa20
--- /dev/null
+++ b/frontend/resources/images/icons/crown.svg
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/frontend/resources/images/icons/eye-off.svg b/frontend/resources/images/icons/eye-off.svg
new file mode 100644
index 0000000000..00c1582b4d
--- /dev/null
+++ b/frontend/resources/images/icons/eye-off.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/frontend/src/app/main/constants.cljs b/frontend/src/app/main/constants.cljs
index e9d3137c48..8ea2ea0cc2 100644
--- a/frontend/src/app/main/constants.cljs
+++ b/frontend/src/app/main/constants.cljs
@@ -25,6 +25,36 @@
(def size-presets
[{:name "APPLE"}
+ {:name "iPhone 16"
+ :width 393
+ :height 852}
+ {:name "iPhone 16 Pro"
+ :width 402
+ :height 874}
+ {:name "iPhone 16 Pro Max"
+ :width 440
+ :height 956}
+ {:name "iPhone 16 Plus"
+ :width 430
+ :height 932}
+ {:name "14/15 Pro Max"
+ :width 430
+ :height 932}
+ {:name "iPhone 15/15 Pro"
+ :width 393
+ :height 852}
+ {:name "iPhone 13/14 "
+ :width 390
+ :height 844}
+ {:name "iPhone 14 Plus"
+ :width 428
+ :height 926}
+ {:name "iPhone 13 Mini"
+ :width 375
+ :height 812}
+ {:name "iPhone SE"
+ :width 320
+ :height 568}
{:name "iPhone 12/12 Pro"
:width 390
:height 844}
@@ -40,47 +70,86 @@
{:name "iPhone XS Max/XR/11"
:width 414
:height 896}
- {:name "iPhone 6/7/8 Plus"
- :width 414
- :height 736}
- {:name "iPhone 6/7/8/SE2"
- :width 375
- :height 667}
- {:name "iPhone 5/SE"
- :width 320
- :height 568}
{:name "iPad"
:width 768
:height 1024}
+ {:name "iPad Mini 8.3in"
+ :width 744
+ :height 1133}
{:name "iPad Pro 10.5in"
:width 834
:height 1112}
+ {:name "iPad Pro 11in"
+ :width 834
+ :height 1194}
{:name "iPad Pro 12.9in"
- :width 1024
+ :width 1027
:height 1366}
+ {:name "Watch Series 10"
+ :width 416
+ :height 496}
+ {:name "Watch 45mm"
+ :width 396
+ :height 484}
{:name "Watch 44mm"
:width 368
:height 448}
{:name "Watch 42mm"
:width 312
:height 390}
+ {:name "Watch 41mm"
+ :width 352
+ :height 430}
{:name "Watch 40mm"
:width 324
:height 394}
{:name "Watch 38mm"
:width 272
:height 340}
+ {:name "MacBook Air"
+ :width 1280
+ :height 832}
+ {:name "MacBook Pro 14in"
+ :width 1512
+ :height 982}
+ {:name "MacBook Pro 16in"
+ :width 1728
+ :height 1117}
{:name "ANDROID"}
+ {:name "Expanded"
+ :width 1280
+ :height 800}
+ {:name "Compact"
+ :width 412
+ :height 917}
+ {:name "Large"
+ :width 360
+ :height 800}
+ {:name "Medium"
+ :width 700
+ :height 840}
+ {:name "Small"
+ :width 360
+ :height 640}
{:name "Mobile"
:width 360
:height 640}
{:name "Tablet"
:width 768
:height 1024}
+ {:name "Google Pixel 7 Pro"
+ :width 1440
+ :height 3120}
+ {:name "Google Pixel 6a/6"
+ :width 1080
+ :height 2400}
{:name "Google Pixel 4a/5"
:width 393
:height 851}
+ {:name "Samsung Galaxy S22"
+ :width 1080
+ :height 2340}
{:name "Samsung Galaxy S20+"
:width 384
:height 854}
@@ -95,11 +164,17 @@
{:name "Surface Pro 4/5/6/7"
:width 1368
:height 912}
+ {:name "Surface Pro 8"
+ :width 140
+ :height 960}
{:name "ReMarkable"}
{:name "Remarkable 2"
- :width 840
- :height 1120}
+ :width 1404
+ :height 1872}
+ {:name "Remarkable Pro"
+ :width 1620
+ :height 2160}
{:name "WEB"}
{:name "Web 1280"
@@ -115,6 +190,20 @@
:width 1920
:height 1080}
+ {:name "MIXED"}
+ {:name "Desktop/Wireframe"
+ :width 1440
+ :height 1024}
+ {:name "TV"
+ :width 1280
+ :height 720}
+ {:name "Slide 16:9"
+ :width 1920
+ :height 1080}
+ {:name "Slide 4:3"
+ :width 1027
+ :height 768}
+
{:name "PRINT (96dpi)"}
{:name "A0"
:width 3179
@@ -150,7 +239,7 @@
:height 320}
{:name "Instagram post"
:width 1080
- :height 1080}
+ :height 1350}
{:name "Instagram story"
:width 1080
:height 1920}
@@ -170,15 +259,24 @@
:width 1584
:height 396}
{:name "LinkedIn post"
- :width 1200
- :height 627}
- {:name "Twitter profile"
+ :width 520
+ :height 320}
+ {:name "Bluesky profile"
:width 400
:height 400}
- {:name "Twitter header"
+ {:name "Bluesky cover"
+ :width 3000
+ :height 1000}
+ {:name "Bluesky post"
+ :width 1080
+ :height 1350}
+ {:name "X profile"
+ :width 400
+ :height 400}
+ {:name "X header"
:width 1500
:height 500}
- {:name "Twitter post"
+ {:name "X post"
:width 1024
:height 512}
{:name "YouTube profile"
@@ -187,6 +285,9 @@
{:name "YouTube banner"
:width 2560
:height 1440}
+ {:name "YouTube cover"
+ :width 2048
+ :height 1152}
{:name "YouTube thumb"
:width 1280
:height 720}])
diff --git a/frontend/src/app/main/ui/workspace/tokens/style_dictionary.cljs b/frontend/src/app/main/data/style_dictionary.cljs
similarity index 86%
rename from frontend/src/app/main/ui/workspace/tokens/style_dictionary.cljs
rename to frontend/src/app/main/data/style_dictionary.cljs
index d04ed352e9..101c0fc854 100644
--- a/frontend/src/app/main/ui/workspace/tokens/style_dictionary.cljs
+++ b/frontend/src/app/main/data/style_dictionary.cljs
@@ -1,16 +1,21 @@
-(ns app.main.ui.workspace.tokens.style-dictionary
+;; 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.data.style-dictionary
(:require
["@tokens-studio/sd-transforms" :as sd-transforms]
["style-dictionary$default" :as sd]
+ [app.common.files.tokens :as cft]
[app.common.logging :as l]
[app.common.schema :as sm]
[app.common.transit :as t]
[app.common.types.tokens-lib :as ctob]
- [app.main.ui.workspace.tokens.errors :as wte]
- [app.main.ui.workspace.tokens.tinycolor :as tinycolor]
- [app.main.ui.workspace.tokens.token :as wtt]
- [app.main.ui.workspace.tokens.warnings :as wtw]
- [app.util.i18n :refer [tr]]
+ [app.main.data.tinycolor :as tinycolor]
+ [app.main.data.workspace.tokens.errors :as wte]
+ [app.main.data.workspace.tokens.warnings :as wtw]
[app.util.time :as dt]
[beicon.v2.core :as rx]
[cuerdas.core :as str]
@@ -25,7 +30,7 @@
"Initiates the StyleDictionary instance.
Setup transforms from tokens-studio used to parse and resolved token values."
(do
- (sd-transforms/registerTransforms sd)
+ (sd-transforms/register sd)
(.registerFormat sd #js {:name "custom/json"
:format (fn [^js res]
(.-tokens (.-dictionary res)))})
@@ -55,7 +60,7 @@
"Parses `value` of a numeric `sd-token` into a map like `{:value 1 :unit \"px\"}`.
If the `value` is not parseable and/or has missing references returns a map with `:errors`."
[value]
- (let [parsed-value (wtt/parse-token-value value)
+ (let [parsed-value (cft/parse-token-value value)
out-of-bounds (or (>= (:value parsed-value) sm/max-safe-int)
(<= (:value parsed-value) sm/min-safe-int))]
(if (and parsed-value (not out-of-bounds))
@@ -73,7 +78,7 @@
If the `value` is parseable but is out of range returns a map with `warnings`."
[value has-references?]
- (let [parsed-value (wtt/parse-token-value value)
+ (let [parsed-value (cft/parse-token-value value)
out-of-scope (not (<= 0 (:value parsed-value) 1))
references (seq (ctob/find-token-value-references value))]
(cond
@@ -99,7 +104,7 @@
If the `value` is parseable but is out of range returns a map with `warnings`."
[value has-references?]
- (let [parsed-value (wtt/parse-token-value value)
+ (let [parsed-value (cft/parse-token-value value)
out-of-scope (< (:value parsed-value) 0)
references (seq (ctob/find-token-value-references value))]
(cond
@@ -192,9 +197,11 @@
config)
(build-dictionary [_]
- (let [config' (clj->js config)]
+ (let [platform "json"
+ config' (clj->js config)]
(-> (sd. config')
- (.buildAllPlatforms "json")
+ (.buildAllPlatforms platform)
+ (p/then #(.getPlatformTokens ^js % platform))
(p/then #(.-allTokens ^js %))))))
(defn resolve-tokens-tree+
@@ -240,7 +247,21 @@
;; === Import
-(defn reference-errors
+(defn- decode-single-set-json
+ "Decodes parsed json containing single token set and converts to library"
+ [this set-name tokens]
+ (assert (map? tokens) "expected a map data structure for `data`")
+
+ (ctob/add-set this (ctob/make-token-set :name (ctob/normalize-set-name set-name)
+ :tokens (ctob/flatten-nested-tokens-json tokens ""))))
+
+(defn- decode-single-set-legacy-json
+ "Decodes parsed legacy json containing single token set and converts to library"
+ [this set-name tokens]
+ (assert (map? tokens) "expected a map data structure for `data`")
+ (decode-single-set-json this set-name (ctob/legacy-nodes->dtcg-nodes tokens)))
+
+(defn- reference-errors
"Extracts reference errors from StyleDictionary."
[err]
(let [[header-1 header-2 & errors] (str/split err "\n")]
@@ -249,6 +270,16 @@
(= header-2 "Reference Errors:"))
errors)))
+(defn name-error
+ "Extracts name error out of malli schema error during import."
+ [err]
+ (let [schema-error (some-> (ex-data err)
+ (get-in [:app.common.schema/explain :errors])
+ (first))
+ name-error? (= (:in schema-error) [:name])]
+ (when name-error?
+ (wte/error-ex-info :error.import/invalid-token-name (:value schema-error) err))))
+
(defn process-json-stream
([data-stream]
(process-json-stream nil data-stream))
@@ -267,11 +298,11 @@
(cond
(and single-set?
(= :json-format/legacy json-format))
- (ctob/decode-single-set-legacy-json (ctob/ensure-tokens-lib nil) file-name json-data)
+ (decode-single-set-legacy-json (ctob/ensure-tokens-lib nil) file-name json-data)
(and single-set?
(= :json-format/dtcg json-format))
- (ctob/decode-single-set-json (ctob/ensure-tokens-lib nil) file-name json-data)
+ (decode-single-set-json (ctob/ensure-tokens-lib nil) file-name json-data)
(= :json-format/legacy json-format)
(ctob/decode-legacy-json (ctob/ensure-tokens-lib nil) json-data)
@@ -280,7 +311,9 @@
(ctob/decode-dtcg-json (ctob/ensure-tokens-lib nil) json-data))
(catch js/Error e
- (throw (wte/error-ex-info :error.import/invalid-json-data json-data e)))))))
+ (let [err (or (name-error e)
+ (wte/error-ex-info :error.import/invalid-json-data json-data e))]
+ (throw err)))))))
(rx/mapcat (fn [tokens-lib]
(try
(-> (ctob/get-all-tokens tokens-lib)
@@ -295,17 +328,6 @@
(catch js/Error e
(p/rejected (wte/error-ex-info :error.import/style-dictionary-unknown-error "" e))))))))))
-;; === Errors
-
-(defn humanize-errors [{:keys [errors] :as token}]
- (->> (map (fn [err]
- (case (:error/code err)
- ;; TODO: This needs translations
- :error.style-dictionary/missing-reference (tr "workspace.token.token-not-resolved" (:error/value err))
- nil))
- errors)
- (str/join "\n")))
-
;; === Hooks
(defonce !tokens-cache (atom nil))
diff --git a/frontend/src/app/main/ui/workspace/tokens/tinycolor.cljs b/frontend/src/app/main/data/tinycolor.cljs
similarity index 66%
rename from frontend/src/app/main/ui/workspace/tokens/tinycolor.cljs
rename to frontend/src/app/main/data/tinycolor.cljs
index 10c809e397..13fea42e00 100644
--- a/frontend/src/app/main/ui/workspace/tokens/tinycolor.cljs
+++ b/frontend/src/app/main/data/tinycolor.cljs
@@ -1,4 +1,10 @@
-(ns app.main.ui.workspace.tokens.tinycolor
+;; 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.data.tinycolor
"Bindings for tinycolor2 which supports a wide range of css compatible colors.
This library was chosen as it is already used by StyleDictionary,
@@ -32,17 +38,24 @@
(let [tc (tinycolor color-str)]
(str/starts-with? (.getFormat tc) "hex"))))
-(defn ->string [^js tc]
- (.toString tc))
+(defn ->string
+ "Stringify `tc` to `format`, uses `hex` as per default."
+ [^js tc format]
+ (let [format' (case format
+ ;; Tinycolor `.toString` doesnt support the `a` suffix it gives you via `.getFormat`
+ "rgba" "rgb"
+ "hsva" "hsv"
+ ;; Keep these formats
+ "rgb" "rgb"
+ "hsv" "hsv"
+ ;; Fall back to hex as the default
+ "hex")]
+ (.toString tc format')))
(defn ->hex-string [^js tc]
(assert (tinycolor? tc))
(.toHexString tc))
-(defn ->rgba-string [^js tc]
- (assert (tinycolor? tc))
- (.toRgbString tc))
-
(defn color-format [^js tc]
(assert (tinycolor? tc))
(.getFormat tc))
diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs
index 01dc099c8a..8817dafd93 100644
--- a/frontend/src/app/main/data/workspace.cljs
+++ b/frontend/src/app/main/data/workspace.cljs
@@ -13,6 +13,7 @@
[app.common.features :as cfeat]
[app.common.files.changes-builder :as pcb]
[app.common.files.helpers :as cfh]
+ [app.common.files.variant :as cfv]
[app.common.geom.align :as gal]
[app.common.geom.point :as gpt]
[app.common.geom.proportions :as gpp]
@@ -25,7 +26,7 @@
[app.common.schema :as sm]
[app.common.text :as txt]
[app.common.transit :as t]
- [app.common.types.component :as ctk]
+ [app.common.types.component :as ctc]
[app.common.types.components-list :as ctkl]
[app.common.types.container :as ctn]
[app.common.types.file :as ctf]
@@ -75,6 +76,7 @@
[app.main.data.workspace.thumbnails :as dwth]
[app.main.data.workspace.transforms :as dwt]
[app.main.data.workspace.undo :as dwu]
+ [app.main.data.workspace.variants :as dwva]
[app.main.data.workspace.viewport :as dwv]
[app.main.data.workspace.zoom :as dwz]
[app.main.errors]
@@ -85,6 +87,7 @@
[app.main.streams :as ms]
[app.main.worker :as uw]
[app.render-wasm :as wasm]
+ [app.render-wasm.api :as api]
[app.util.code-gen.style-css :as css]
[app.util.dom :as dom]
[app.util.globals :as ug]
@@ -393,6 +396,13 @@
(rx/filter dch/commit?)
(rx/map deref)
(rx/mapcat (fn [{:keys [save-undo? undo-changes redo-changes undo-group tags stack-undo?]}]
+ (when render-wasm?
+ (let [added (->> redo-changes
+ (filter #(= (:type %) :add-obj))
+ (map :obj))]
+ (doseq [shape added]
+ (api/process-object shape))))
+
(if (and save-undo? (seq undo-changes))
(let [entry {:undo-changes undo-changes
:redo-changes redo-changes
@@ -571,7 +581,7 @@
name (cfh/generate-unique-name base-name unames :suffix-fn suffix-fn)
objects (update-vals (:objects page) #(dissoc % :use-for-thumbnail))
- main-instances-ids (set (keep #(when (ctk/main-instance? (val %)) (key %)) objects))
+ main-instances-ids (set (keep #(when (ctc/main-instance? (val %)) (key %)) objects))
ids-to-remove (set (apply concat (map #(cfh/get-children-ids objects %) main-instances-ids)))
add-component-copy
@@ -582,7 +592,6 @@
component
fdata
(gpt/point (:x shape) (:y shape))
- true
{:keep-ids? true :force-frame-id (:frame-id shape)})
children (into {} (map (fn [shape] [(:id shape) shape]) new-shapes))
objs (assoc objs id new-shape)]
@@ -698,7 +707,7 @@
(defn rename-file
[id name]
{:pre [(uuid? id) (string? name)]}
- (let [name (str/prune name 200)]
+ (let [name (dm/truncate name 200)]
(ptk/reify ::rename-file
IDeref
(-deref [_]
@@ -788,27 +797,36 @@
([] (end-rename-shape nil nil))
([shape-id name]
(ptk/reify ::end-rename-shape
+ ptk/UpdateEvent
+ (update [_ state]
+ ;; Remove rename state from workspace local state
+ (update state :workspace-local dissoc :shape-for-rename))
ptk/WatchEvent
(watch [_ state _]
(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)
- valid? (and (not (str/ends-with? name "/"))
- (string? clean-name)
- (not (str/blank? clean-name)))]
- (rx/concat
- ;; Remove rename state from workspace local state
- (rx/of #(update % :workspace-local dissoc :shape-for-rename))
+ (let [shape (dsh/lookup-shape state shape-id)
+ name (str/trim name)
+ clean-name (cfh/clean-path name)
+ valid? (and (not (str/ends-with? name "/"))
+ (string? clean-name)
+ (not (str/blank? clean-name)))
+ component-id (:component-id shape)
+ undo-id (js/Symbol)]
- ;; Rename the shape if string is not empty/blank
- (when valid?
- (rx/of (update-shape shape-id {:name clean-name})))
- ;; Update the component in case if shape is a main instance
- (when (and valid? (:main-instance shape))
- (when-let [component-id (:component-id shape)]
- (rx/of (dwl/rename-component component-id clean-name)))))))))))
+ (when valid?
+ (if (ctc/is-variant-container? shape)
+ ;; Rename the full variant when it is a variant container
+ (rx/of (dwva/rename-variant shape-id clean-name))
+ (rx/of
+ (dwu/start-undo-transaction undo-id)
+ ;; Rename the shape if string is not empty/blank
+ (update-shape shape-id {:name clean-name})
+
+ ;; Update the component in case shape is a main instance
+ (when (and (some? component-id) (ctc/main-instance? shape))
+ (dwl/rename-component component-id clean-name))
+ (dwu/commit-undo-transaction undo-id))))))))))
;; --- Update Selected Shapes attrs
@@ -1200,22 +1218,26 @@
(ptk/reify ::show-component-in-assets
ptk/WatchEvent
(watch [_ state _]
- (let [file-id (:current-file-id state)
- fdata (dsh/lookup-file-data state file-id)
- cpath (dm/get-in fdata [:components component-id :path])
- cpath (cfh/split-path cpath)
- paths (map (fn [i] (cfh/join-path (take (inc i) cpath)))
- (range (count cpath)))]
+ (let [file-id (:current-file-id state)
+ 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)))
+ (range (count cpath)))]
(rx/concat
(rx/from (map #(set-assets-group-open file-id :components % true) paths))
(rx/of (dcm/go-to-workspace :layout :assets)
(set-assets-section-open file-id :library true)
(set-assets-section-open file-id :components true)
- (select-single-asset file-id component-id :components)))))
+ (select-single-asset file-id (:id component) :components)))))
ptk/EffectEvent
- (effect [_ _ _]
- (let [wrapper-id (str "component-shape-id-" component-id)]
+ (effect [_ state _]
+ (let [file-id (:current-file-id state)
+ fdata (dsh/lookup-file-data state file-id)
+ component (cfv/get-primary-component fdata component-id)
+ wrapper-id (str "component-shape-id-" (:id component))]
(tm/schedule-on-idle #(dom/scroll-into-view-if-needed! (dom/get-element wrapper-id)))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -1352,15 +1374,31 @@
(assoc obj ::images images))))
(rx/of obj))))
+ (collect-variants [state shape]
+ (let [page-id (:current-page-id state)
+ data (dsh/lookup-file-data state)
+ objects (-> (dsh/get-page data page-id)
+ (get :objects))
+
+ components (cfv/find-variant-components data objects (:id shape))]
+ (into {} (map (juxt :id :variant-properties) components))))
+
+
;; Collects all the items together and split images into a
;; separated data structure for a more easy paste process.
- (collect-data [result {:keys [id ::images] :as item}]
+ ;; Also collects the variant properties of the copied variants
+ (collect-data [state result {:keys [id ::images] :as item}]
(cond-> result
:always
(update :objects assoc id (dissoc item ::images))
(some? images)
- (update :images into images)))
+ (update :images into images)
+
+ (ctc/is-variant-container? item)
+ (update :variant-properties merge (collect-variants state item))))
+
+
(maybe-translate [shape objects parent-frame-id]
(if (= parent-frame-id uuid/zero)
@@ -1382,7 +1420,7 @@
heads))))
(advance-copy [file libraries page objects shape]
- (if (and (ctk/instance-head? shape) (not (ctk/main-instance? shape)))
+ (if (and (ctc/instance-head? shape) (not (ctc/main-instance? shape)))
(let [level-delta (ctn/get-nesting-level-delta (:objects page) shape uuid/zero)]
(if (pos? level-delta)
(reduce (partial advance-shape file libraries page level-delta)
@@ -1445,7 +1483,7 @@
(fn [resolve reject]
(->> (rx/from shapes)
(rx/merge-map (partial prepare-object objects frame-id))
- (rx/reduce collect-data initial)
+ (rx/reduce (partial collect-data state) initial)
(rx/map (partial sort-selected state))
(rx/map (partial advance-copies state selected))
(rx/map #(t/encode-str % {:type :json-verbose}))
@@ -1460,7 +1498,7 @@
;; https://caniuse.com/?search=ClipboardItem
(->> (rx/from shapes)
(rx/merge-map (partial prepare-object objects frame-id))
- (rx/reduce collect-data initial)
+ (rx/reduce (partial collect-data state) initial)
(rx/map (partial sort-selected state))
(rx/map (partial advance-copies state selected))
(rx/map #(t/encode-str % {:type :json-verbose}))
@@ -2048,6 +2086,9 @@
objects (:objects pdata)
+ variant-props (:variant-properties pdata)
+
+
position (deref ms/mouse-position)
;; Calculate position for the pasted elements
@@ -2060,12 +2101,8 @@
libraries (dsh/lookup-libraries state)
ldata (dsh/lookup-file-data state file-id)
- ;; full-libs (assoc-in libraries [(:id ldata) :data] ldata)
-
- full-libs libraries
-
[parent-id
- frame-id] (ctn/find-valid-parent-and-frame-ids candidate-parent-id page-objects (vals objects) true full-libs)
+ frame-id] (ctn/find-valid-parent-and-frame-ids candidate-parent-id page-objects (vals objects) true libraries)
index (if (= candidate-parent-id parent-id)
index
@@ -2079,12 +2116,12 @@
all-objects (merge page-objects objects)
-
drop-cell (when (ctl/grid-layout? all-objects parent-id)
(gslg/get-drop-cell frame-id all-objects position))
changes (-> (pcb/empty-changes it)
- (cll/generate-duplicate-changes all-objects page selected delta libraries ldata file-id)
+ (cll/generate-duplicate-changes all-objects page selected delta
+ libraries ldata file-id {:variant-props variant-props})
(pcb/amend-changes (partial process-rchange media-idx))
(pcb/amend-changes (partial change-add-obj-index objects selected index)))
@@ -2113,7 +2150,7 @@
undo-id (js/Symbol)]
(rx/concat
- (->> (filter ctk/instance-head? orig-shapes)
+ (->> (filter ctc/instance-head? orig-shapes)
(map (fn [{:keys [component-file]}]
(ptk/event ::ev/event
{::ev/name "use-library-component"
@@ -2428,7 +2465,7 @@
(let [objects (dsh/lookup-page-objects state)
copies (->> objects
vals
- (filter #(and (ctk/instance-head? %) (not (ctk/main-instance? %)))))
+ (filter #(and (ctc/instance-head? %) (not (ctc/main-instance? %)))))
copies-no-ref (filter #(not (:shape-ref %)) copies)
find-childs-no-ref (fn [acc-map item]
diff --git a/frontend/src/app/main/data/workspace/libraries.cljs b/frontend/src/app/main/data/workspace/libraries.cljs
index 9c98fcd939..d433cc133b 100644
--- a/frontend/src/app/main/data/workspace/libraries.cljs
+++ b/frontend/src/app/main/data/workspace/libraries.cljs
@@ -42,7 +42,6 @@
[app.main.data.workspace.transforms :as dwtr]
[app.main.data.workspace.undo :as dwu]
[app.main.data.workspace.zoom :as dwz]
- [app.main.features :as features]
[app.main.features.pointer-map :as fpmap]
[app.main.refs :as refs]
[app.main.repo :as rp]
@@ -395,9 +394,9 @@
(defn- add-component2
"This is the second step of the component creation."
- ([selected components-v2]
- (add-component2 nil selected components-v2))
- ([id-ref selected components-v2]
+ ([selected]
+ (add-component2 nil selected))
+ ([id-ref selected]
(ptk/reify ::add-component2
ev/Event
(-data [_]
@@ -413,8 +412,7 @@
parents (into #{} (map :parent-id) shapes)]
(when-not (empty? shapes)
(let [[root component-id changes]
- (cll/generate-add-component (pcb/empty-changes it) shapes objects page-id file-id components-v2
- dwg/prepare-create-group
+ (cll/generate-add-component (pcb/empty-changes it) shapes objects page-id file-id
cfsh/prepare-create-artboard-from-selection)]
(when id-ref
(reset! id-ref component-id))
@@ -439,12 +437,11 @@
selected (->> (d/nilv ids (dsh/lookup-selected state))
(cfh/clean-loops objects))
selected-objects (map #(get objects %) selected)
- components-v2 (features/active-feature? state "components/v2")
;; We don't want to change the structure of component copies
can-make-component (every? true? (map #(ctn/valid-shape-for-component? objects %) selected-objects))]
(when can-make-component
- (rx/of (add-component2 id-ref selected components-v2))))))))
+ (rx/of (add-component2 id-ref selected))))))))
(defn add-multiple-components
"Add several new components to current file library, from the currently selected shapes."
@@ -452,15 +449,14 @@
(ptk/reify ::add-multiple-components
ptk/WatchEvent
(watch [_ state _]
- (let [components-v2 (features/active-feature? state "components/v2")
- objects (dsh/lookup-page-objects state)
+ (let [objects (dsh/lookup-page-objects state)
selected (->> (dsh/lookup-selected state)
(cfh/clean-loops objects))
selected-objects (map #(get objects %) selected)
;; We don't want to change the structure of component copies
can-make-component (every? true? (map #(ctn/valid-shape-for-component? objects %) selected-objects))
added-components (map (fn [id]
- (with-meta (add-component2 [id] components-v2)
+ (with-meta (add-component2 [id])
{:multiple true}))
selected)
undo-id (js/Symbol)]
@@ -489,7 +485,7 @@
(rx/empty)
(let [data (dsh/lookup-file-data state)
changes (-> (pcb/empty-changes it)
- (cll/generate-rename-component id new-name data true))]
+ (cll/generate-rename-component id new-name data))]
(rx/of (dch/commit-changes changes))))))))
(defn rename-component-and-main-instance
@@ -512,7 +508,6 @@
(rx/concat
(rx/of (rename-component component-id clean-name))
- ;; NOTE: only when components-v2 is enabled
(when (and shape-id page-id)
(rx/of (dwsh/update-shapes [shape-id] #(assoc % :name clean-name) {:page-id page-id :stack-undo? true}))))))))))
@@ -526,11 +521,10 @@
(watch [it state _]
(let [libraries (dsh/lookup-libraries state)
library (get libraries library-id)
- components-v2 (features/active-feature? state "components/v2")
[main-instance changes]
(-> (pcb/empty-changes it nil)
- (cll/generate-duplicate-component library component-id new-component-id components-v2))]
+ (cll/generate-duplicate-component library component-id new-component-id))]
(rx/of
(ptk/data-event :layout/update {:ids [(:id main-instance)]})
(dch/commit-changes changes)))))))
@@ -560,8 +554,7 @@
[all-parents changes]
(-> (pcb/empty-changes it page-id)
;; Deleting main root triggers component delete
- (cls/generate-delete-shapes fdata page objects #{root-id} {:components-v2 true
- :undo-group undo-group
+ (cls/generate-delete-shapes fdata page objects #{root-id} {:undo-group undo-group
:undo-id undo-id}))]
(rx/of
(dwu/start-undo-transaction undo-id)
@@ -588,11 +581,14 @@
changes (-> (pcb/empty-changes it)
(cll/generate-restore-component ldata component-id library-id page objects))
+ page-id
+ (->> changes :redo-changes (keep :page-id) first)
+
frames
(->> changes :redo-changes (keep :frame-id))]
(rx/of (dch/commit-changes changes)
- (ptk/data-event :layout/update {:ids frames}))))))
+ (ptk/data-event :layout/update {:page-id page-id :ids frames}))))))
(defn restore-components
@@ -832,7 +828,7 @@
changes
(-> (pcb/empty-changes it)
- (cll/generate-reset-component file libraries container id true))]
+ (cll/generate-reset-component file libraries container id))]
(log/debug :msg "RESET-COMPONENT finished" :js/rchanges (log-changes
(:redo-changes changes)
@@ -884,7 +880,7 @@
(-> (pcb/empty-changes it)
(pcb/set-undo-group undo-group)
(pcb/with-container container)
- (cll/generate-sync-shape-inverse fdata libraries container id true))
+ (cll/generate-sync-shape-inverse fdata libraries container id))
ldata (->> (:component-file shape)
(dsh/lookup-file-data state))
@@ -1274,10 +1270,8 @@
[]
(ptk/reify ::watch-component-changes
ptk/WatchEvent
- (watch [_ state stream]
- (let [components-v2? (features/active-feature? state "components/v2")
-
- stopper-s
+ (watch [_ _ stream]
+ (let [stopper-s
(->> stream
(rx/filter #(or (= ::dw/finalize-page (ptk/type %))
(= ::watch-component-changes (ptk/type %)))))
@@ -1340,7 +1334,7 @@
(rx/debounce 5000)
(rx/tap #(log/trc :hint "buffer initialized")))]
- (when (and components-v2? (contains? cf/flags :component-thumbnails))
+ (when (contains? cf/flags :component-thumbnails)
(->> (rx/merge
changes-s
diff --git a/frontend/src/app/main/data/workspace/media.cljs b/frontend/src/app/main/data/workspace/media.cljs
index 3a6be86c25..a2a7968c09 100644
--- a/frontend/src/app/main/data/workspace/media.cljs
+++ b/frontend/src/app/main/data/workspace/media.cljs
@@ -24,7 +24,6 @@
[app.main.data.helpers :as dsh]
[app.main.data.media :as dmm]
[app.main.data.notifications :as ntf]
- [app.main.data.workspace.libraries :as dwl]
[app.main.data.workspace.shapes :as dwsh]
[app.main.data.workspace.svg-upload :as svg]
[app.main.repo :as rp]
@@ -235,16 +234,6 @@
(rx/catch #(handle-media-error % on-error))
(rx/finalize #(st/emit! (ntf/hide :tag :media-loading))))))))
-;; Deprecated in components-v2
-(defn upload-media-asset
- [params]
- (let [params (assoc params
- :force-media true
- :local? false
- :on-image #(st/emit! (dwl/add-media %))
- :on-svg #(st/emit! (dwl/add-media %)))]
- (process-media-objects params)))
-
(defn upload-media-workspace
[{:keys [position file-id] :as params}]
(let [params (assoc params
@@ -378,7 +367,7 @@
(defn- add-shapes-and-component
[it file-data page name [shape children]]
- (let [[component-shape component-shapes updated-shapes]
+ (let [[component-shape updated-shapes]
(ctn/convert-shape-in-component shape children (:id file-data))
changes (-> (pcb/empty-changes it)
@@ -389,7 +378,6 @@
(pcb/add-component (:id component-shape)
""
name
- component-shapes
updated-shapes
(:id shape)
(:id page)))]
diff --git a/frontend/src/app/main/data/workspace/modifiers.cljs b/frontend/src/app/main/data/workspace/modifiers.cljs
index ace4d0fc4c..d8cc7cf220 100644
--- a/frontend/src/app/main/data/workspace/modifiers.cljs
+++ b/frontend/src/app/main/data/workspace/modifiers.cljs
@@ -30,6 +30,7 @@
[app.main.data.workspace.undo :as dwu]
[app.main.features :as features]
[app.render-wasm.api :as wasm.api]
+ [app.render-wasm.shape :as wasm.shape]
[beicon.v2.core :as rx]
[potok.v2.core :as ptk]))
@@ -162,17 +163,46 @@
change-to-fixed?
(assoc :grow-type :fixed))))
+(defn- set-wasm-props!
+ [objects prev-wasm-props wasm-props]
+ (let [;; Set old value for previous properties
+ clean-props
+ (->> prev-wasm-props
+ (map (fn [[id {:keys [property] :as change}]]
+ (let [shape (get objects id)]
+ [id (assoc change :value (get shape property))]))))
+
+ wasm-props
+ (concat clean-props wasm-props)
+
+ wasm-props
+ (-> (group-by first wasm-props)
+ (update-vals #(map second %)))]
+
+ ;; Props are grouped by id and then assoc to the shape the new value
+ (doseq [[id properties] wasm-props]
+ (let [shape
+ (->> properties
+ (reduce
+ (fn [shape {:keys [property value]}]
+ (assoc shape property value))
+ (get objects id)))]
+
+ ;; With the new values to the shape change multi props
+ (wasm.shape/set-wasm-multi-attrs! shape (->> properties (map :property)))))))
+
(defn clear-local-transform []
(ptk/reify ::clear-local-transform
ptk/EffectEvent
(effect [_ state _]
(when (features/active-feature? state "render-wasm/v1")
- (wasm.api/set-modifiers nil)))
+ (wasm.api/clean-modifiers)
+ (set-wasm-props! (dsh/lookup-page-objects state) (:wasm-props state) [])))
ptk/UpdateEvent
(update [_ state]
(-> state
- (dissoc :workspace-modifiers)
+ (dissoc :workspace-modifiers :wasm-props :prev-wasm-props)
(dissoc :app.main.data.workspace.transforms/current-move-selected)))))
(defn create-modif-tree
@@ -417,6 +447,57 @@
modifiers (calculate-modifiers state ignore-constraints ignore-snap-pixel modif-tree page-id params)]
(assoc state :workspace-modifiers modifiers))))))
+(defn- parse-structure-modifiers
+ [modif-tree]
+ (into
+ []
+ (mapcat
+ (fn [[parent-id data]]
+ (when (ctm/has-structure? (:modifiers data))
+ (->> data
+ :modifiers
+ :structure-parent
+ (mapcat
+ (fn [modifier]
+ (case (:type modifier)
+ :remove-children
+ (->> (:value modifier)
+ (map (fn [child-id]
+ {:type :remove-children
+ :parent parent-id
+ :id child-id
+ :index 0})))
+
+ :add-children
+ (->> (:value modifier)
+ (map (fn [child-id]
+ {:type :add-children
+ :parent parent-id
+ :id child-id
+ :index (:index modifier)})))
+ nil)))))))
+ modif-tree))
+
+(defn- parse-geometry-modifiers
+ [modif-tree]
+ (into
+ []
+ (keep
+ (fn [[id data]]
+ (when (ctm/has-geometry? (:modifiers data))
+ {:id id
+ :transform (ctm/modifiers->transform (:modifiers data))})))
+ modif-tree))
+
+(defn- extract-property-changes
+ [modif-tree]
+ (->> modif-tree
+ (mapcat (fn [[id {:keys [modifiers]}]]
+ (->> (:structure-parent modifiers)
+ (map #(vector id %)))))
+ (filter (fn [[_ {:keys [type]}]]
+ (= type :change-property)))))
+
(defn set-wasm-modifiers
([modif-tree]
(set-wasm-modifiers modif-tree false))
@@ -429,17 +510,31 @@
([modif-tree _ignore-constraints _ignore-snap-pixel _params]
(ptk/reify ::set-wasm-modifiers
- ptk/EffectEvent
- (effect [_ _ _]
- (let [entries
- (->> modif-tree
- (mapv (fn [[id data]]
- {:id id
- :transform (ctm/modifiers->transform (:modifiers data))})))
+ ptk/UpdateEvent
+ (update [_ state]
+ (let [property-changes
+ (extract-property-changes modif-tree)]
- modifiers-new
- (wasm.api/propagate-modifiers entries)]
- (wasm.api/set-modifiers modifiers-new))))))
+ (-> state
+ (assoc :prev-wasm-props (:wasm-props state))
+ (assoc :wasm-props property-changes))))
+
+ ptk/EffectEvent
+ (effect [_ state _]
+ (wasm.api/clean-modifiers)
+
+ (let [prev-wasm-props (:prev-wasm-props state)
+ wasm-props (:wasm-props state)
+ objects (dsh/lookup-page-objects state)]
+
+ (set-wasm-props! objects prev-wasm-props wasm-props)
+
+ (let [structure-entries (parse-structure-modifiers modif-tree)]
+ (wasm.api/set-structure-modifiers structure-entries)
+ (let [geometry-entries (parse-geometry-modifiers modif-tree)
+ modifiers-new
+ (wasm.api/propagate-modifiers geometry-entries)]
+ (wasm.api/set-modifiers modifiers-new))))))))
(defn set-selrect-transform
[modifiers]
@@ -654,4 +749,3 @@
(if undo-transation?
(rx/of (dwu/commit-undo-transaction undo-id))
(rx/empty))))))))
-
diff --git a/frontend/src/app/main/data/workspace/shape_layout.cljs b/frontend/src/app/main/data/workspace/shape_layout.cljs
index ffabffbe8a..61b07c159a 100644
--- a/frontend/src/app/main/data/workspace/shape_layout.cljs
+++ b/frontend/src/app/main/data/workspace/shape_layout.cljs
@@ -97,15 +97,17 @@
;; Never call this directly but through the data-event `:layout/update`
;; Otherwise a lot of cycle dependencies could be generated
(defn- update-layout-positions
- [{:keys [ids undo-group]}]
+ [{:keys [page-id ids undo-group]}]
(ptk/reify ::update-layout-positions
ptk/WatchEvent
(watch [_ state _]
- (let [objects (dsh/lookup-page-objects state)
+ (let [page-id (or page-id (:current-page-id state))
+ objects (dsh/lookup-page-objects state page-id)
ids (->> ids (filter #(contains? objects %)))]
(if (d/not-empty? ids)
(let [modif-tree (dwm/create-modif-tree ids (ctm/reflow-modifiers))]
- (rx/of (dwm/apply-modifiers {:modifiers modif-tree
+ (rx/of (dwm/apply-modifiers {:page-id page-id
+ :modifiers modif-tree
:stack-undo? true
:undo-group undo-group})))
(rx/empty))))))
@@ -127,8 +129,9 @@
(rx/filter #(d/not-empty? %))
(rx/map
(fn [data]
- (let [ids (reduce #(into %1 (:ids %2)) #{} data)]
- (update-layout-positions {:ids ids}))))
+ (let [page-id (->> data (keep :page-id) first)
+ ids (reduce #(into %1 (:ids %2)) #{} data)]
+ (update-layout-positions {:page-id page-id :ids ids}))))
(rx/take-until stopper))))))
(defn finalize-shape-layout
@@ -242,12 +245,13 @@
selected-shapes (map (d/getf objects) selected)
single? (= (count selected-shapes) 1)
is-frame? (= :frame (:type (first selected-shapes)))
- is-variant-cont? (ctc/is-variant-container? (first selected-shapes))
+ has-layout? (ctl/any-layout? (first selected-shapes))
+
undo-id (js/Symbol)]
(rx/of
(dwu/start-undo-transaction undo-id)
- (if (and single? is-frame? (not is-variant-cont?))
+ (if (and single? is-frame? (not has-layout?))
(create-layout-from-id (first selected) type :from-frame? true)
(create-layout-from-selection type))
(dwu/commit-undo-transaction undo-id))))))
diff --git a/frontend/src/app/main/data/workspace/shapes.cljs b/frontend/src/app/main/data/workspace/shapes.cljs
index b65989e269..d9862564b3 100644
--- a/frontend/src/app/main/data/workspace/shapes.cljs
+++ b/frontend/src/app/main/data/workspace/shapes.cljs
@@ -24,7 +24,6 @@
[app.main.data.workspace.edition :as dwe]
[app.main.data.workspace.selection :as dws]
[app.main.data.workspace.undo :as dwu]
- [app.main.features :as features]
[beicon.v2.core :as rx]
[potok.v2.core :as ptk]))
@@ -171,12 +170,10 @@
page (dsh/get-page fdata page-id)
objects (:objects page)
- components-v2 (features/active-feature? state "components/v2")
undo-id (or (:undo-id options) (js/Symbol))
[all-parents changes] (-> (pcb/empty-changes it (:id page))
(cls/generate-delete-shapes fdata page objects ids
- {:components-v2 components-v2
- :ignore-touched (:component-swap options)
+ {:ignore-touched (:component-swap options)
:undo-group (:undo-group options)
:undo-id undo-id}))]
@@ -237,6 +234,8 @@
([id parent-id index]
(create-artboard-from-selection id parent-id index nil))
([id parent-id index name]
+ (create-artboard-from-selection id parent-id index name nil))
+ ([id parent-id index name delta]
(ptk/reify ::create-artboard-from-selection
ptk/WatchEvent
(watch [it state _]
@@ -260,7 +259,9 @@
selected
index
name
- false)
+ false
+ nil
+ delta)
undo-id (js/Symbol)]
diff --git a/frontend/src/app/main/data/workspace/shortcuts.cljs b/frontend/src/app/main/data/workspace/shortcuts.cljs
index a54e14cf0b..e1535516bf 100644
--- a/frontend/src/app/main/data/workspace/shortcuts.cljs
+++ b/frontend/src/app/main/data/workspace/shortcuts.cljs
@@ -464,11 +464,11 @@
:subsections [:panels]
:fn #(st/emit! (dcm/go-to-workspace :layout :assets))}
- :toggle-history {:tooltip (ds/alt "H")
- :command (ds/a-mod "h")
+ :toggle-history {:tooltip (ds/meta-alt "H")
+ :command (ds/ca-mod "h")
:subsections [:panels]
:fn #(emit-when-no-readonly
- (dcm/go-to-workspace :layout :document-history))}
+ (dw/toggle-layout-flag :document-history))}
:toggle-colorpalette {:tooltip (ds/alt "P")
:command (ds/a-mod "p")
diff --git a/frontend/src/app/main/data/workspace/thumbnails.cljs b/frontend/src/app/main/data/workspace/thumbnails.cljs
index 467a999192..11d1503bdc 100644
--- a/frontend/src/app/main/data/workspace/thumbnails.cljs
+++ b/frontend/src/app/main/data/workspace/thumbnails.cljs
@@ -10,6 +10,7 @@
[app.common.files.helpers :as cfh]
[app.common.logging :as l]
[app.common.thumbnails :as thc]
+ [app.common.types.component :as ctc]
[app.common.uuid :as uuid]
[app.main.data.changes :as dch]
[app.main.data.helpers :as dsh]
@@ -184,11 +185,11 @@
(rx/filter (ptk/type? ::clear-thumbnail))
(rx/filter #(= (deref %) object-id))))))))))
-(defn- extract-root-frame-changes
+(defn- extract-frame-changes
"Process a changes set in a commit to extract the frames that are changing"
[page-id [event [old-data new-data]]]
- (let [changes (:changes event)
+ (let [changes (:changes event)
lookup-data-objects
(fn [data page-id]
(dm/get-in data [:pages-index page-id :objects]))
@@ -205,21 +206,28 @@
get-frame-ids
(fn get-frame-ids [id]
- (let [old-objects (lookup-data-objects old-data page-id)
- new-objects (lookup-data-objects new-data page-id)
+ (let [old-objects (lookup-data-objects old-data page-id)
+ new-objects (lookup-data-objects new-data page-id)
- new-shape (get new-objects id)
- old-shape (get old-objects id)
+ new-shape (get new-objects id)
+ old-shape (get old-objects id)
- old-frame-id (if (cfh/frame-shape? old-shape) id (:frame-id old-shape))
- new-frame-id (if (cfh/frame-shape? new-shape) id (:frame-id new-shape))]
+ old-frame-id (if (cfh/frame-shape? old-shape) id (:frame-id old-shape))
+ new-frame-id (if (cfh/frame-shape? new-shape) id (:frame-id new-shape))
+
+ root-frame-old? (cfh/root-frame? old-objects old-frame-id)
+ root-frame-new? (cfh/root-frame? new-objects new-frame-id)
+ instance-root? (ctc/instance-root? new-shape)]
(cond-> #{}
- (cfh/root-frame? old-objects old-frame-id)
- (conj old-frame-id)
+ root-frame-old?
+ (conj ["frame" old-frame-id])
- (cfh/root-frame? new-objects new-frame-id)
- (conj new-frame-id)
+ root-frame-new?
+ (conj ["frame" new-frame-id])
+
+ instance-root?
+ (conj ["component" id])
(and (uuid? (:frame-id old-shape))
(not= uuid/zero (:frame-id old-shape)))
@@ -266,7 +274,7 @@
(rx/map deref)
(rx/observe-on :async)
(rx/with-latest-from workspace-data-s)
- (rx/merge-map (partial extract-root-frame-changes page-id))
+ (rx/merge-map (partial extract-frame-changes page-id))
(rx/tap #(l/trc :hint "inconming change" :origin "all" :frame-id (dm/str %)))
(rx/share))
@@ -281,15 +289,15 @@
;; and interrupt any ongoing update-thumbnail process
;; related to current frame-id
(->> all-commits-s
- (rx/mapcat (fn [frame-id]
- (rx/of (clear-thumbnail file-id page-id frame-id "frame")
- (clear-thumbnail file-id page-id frame-id "component")))))
+ (rx/mapcat (fn [[tag frame-id]]
+ (rx/of (clear-thumbnail file-id page-id frame-id tag)))))
;; Generate thumbnails in batches, once user becomes
;; inactive for some instant.
(->> all-commits-s
(rx/buffer-until notifier-s)
(rx/mapcat #(into #{} %))
- (rx/map #(update-thumbnail file-id page-id % "frame" "watch-state-changes"))))
+ (rx/map (fn [[tag frame-id]]
+ (update-thumbnail file-id page-id frame-id tag "watch-state-changes")))))
(rx/take-until stopper-s))))))
diff --git a/frontend/src/app/main/ui/workspace/tokens/changes.cljs b/frontend/src/app/main/data/workspace/tokens/application.cljs
similarity index 94%
rename from frontend/src/app/main/ui/workspace/tokens/changes.cljs
rename to frontend/src/app/main/data/workspace/tokens/application.cljs
index 8bdc1a67f8..16f5ff28e6 100644
--- a/frontend/src/app/main/ui/workspace/tokens/changes.cljs
+++ b/frontend/src/app/main/data/workspace/tokens/application.cljs
@@ -4,16 +4,19 @@
;;
;; Copyright (c) KALEIDOS INC
-(ns app.main.ui.workspace.tokens.changes
+(ns app.main.data.workspace.tokens.application
(:require
[app.common.data :as d]
[app.common.data.macros :as dm]
+ [app.common.files.tokens :as cft]
[app.common.types.shape.layout :as ctsl]
[app.common.types.shape.radius :as ctsr]
[app.common.types.token :as ctt]
[app.common.types.tokens-lib :as ctob]
[app.main.data.event :as ev]
[app.main.data.helpers :as dsh]
+ [app.main.data.style-dictionary :as sd]
+ [app.main.data.tinycolor :as tinycolor]
[app.main.data.workspace :as udw]
[app.main.data.workspace.colors :as wdc]
[app.main.data.workspace.shape-layout :as dwsl]
@@ -21,16 +24,13 @@
[app.main.data.workspace.transforms :as dwt]
[app.main.data.workspace.undo :as dwu]
[app.main.store :as st]
- [app.main.ui.workspace.tokens.style-dictionary :as sd]
- [app.main.ui.workspace.tokens.tinycolor :as tinycolor]
- [app.main.ui.workspace.tokens.token :as wtt]
[beicon.v2.core :as rx]
[clojure.set :as set]
[potok.v2.core :as ptk]))
(declare token-properties)
-;; Token Updates ---------------------------------------------------------------
+;; Events to apply / unapply tokens to shapes ------------------------------------------------------------
(defn apply-token
"Apply `attributes` that match `token` for `shape-ids`.
@@ -56,8 +56,8 @@
(keys))
[])
- resolved-value (get-in resolved-tokens [(wtt/token-identifier token) :resolved-value])
- tokenized-attributes (wtt/attributes-map attributes token)]
+ resolved-value (get-in resolved-tokens [(cft/token-identifier token) :resolved-value])
+ tokenized-attributes (cft/attributes-map attributes token)]
(rx/of
(st/emit! (ptk/event ::ev/event {::ev/name "apply-tokens"}))
(dwu/start-undo-transaction undo-id)
@@ -80,7 +80,7 @@
ptk/WatchEvent
(watch [_ _ _]
(rx/of
- (let [remove-token #(when % (wtt/remove-attributes-for-token attributes token %))]
+ (let [remove-token #(when % (cft/remove-attributes-for-token attributes token %))]
(dwsh/update-shapes
shape-ids
(fn [shape]
@@ -95,7 +95,7 @@
(get token-properties (:type token))
unapply-tokens?
- (wtt/shapes-token-applied? token shapes (or all-attributes attributes))
+ (cft/shapes-token-applied? token shapes (or all-attributes attributes))
shape-ids (map :id shapes)]
(if unapply-tokens?
@@ -109,7 +109,9 @@
:shape-ids shape-ids
:on-update-shape on-update-shape})))))))
-;; Shape Updates ---------------------------------------------------------------
+;; Events to update the value of attributes with applied tokens ---------------------------------------------------------
+
+;; (note that dwsh/update-shapes function returns an event)
(defn update-shape-radius-all
([value shape-ids attributes] (update-shape-radius-all value shape-ids attributes nil))
@@ -326,7 +328,7 @@
(dwsl/update-layout-child shape-ids props {:ignore-touched true
:page-id page-id}))))))))
-;; Token Types -----------------------------------------------------------------
+;; Map token types to different properties used along the cokde ---------------------------------------------------------
;; FIXME: the values should be lazy evaluated, probably a function,
;; becasue on future we will need to translate that labels and that
diff --git a/frontend/src/app/main/data/workspace/tokens/color.cljs b/frontend/src/app/main/data/workspace/tokens/color.cljs
new file mode 100644
index 0000000000..828a1ca4cd
--- /dev/null
+++ b/frontend/src/app/main/data/workspace/tokens/color.cljs
@@ -0,0 +1,21 @@
+;; 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.data.workspace.tokens.color
+ (:require
+ [app.common.files.tokens :as cft]
+ [app.main.data.tinycolor :as tinycolor]))
+
+(defn color-bullet-color [token-color-value]
+ (when-let [tc (tinycolor/valid-color token-color-value)]
+ (if (tinycolor/alpha tc)
+ {:color (tinycolor/->hex-string tc)
+ :opacity (tinycolor/alpha tc)}
+ (tinycolor/->hex-string tc))))
+
+(defn resolved-token-bullet-color [{:keys [resolved-value] :as token}]
+ (when (and resolved-value (cft/color-token? token))
+ (color-bullet-color resolved-value)))
\ No newline at end of file
diff --git a/frontend/src/app/main/ui/workspace/tokens/errors.cljs b/frontend/src/app/main/data/workspace/tokens/errors.cljs
similarity index 78%
rename from frontend/src/app/main/ui/workspace/tokens/errors.cljs
rename to frontend/src/app/main/data/workspace/tokens/errors.cljs
index 1d9213c4dc..025b7e7916 100644
--- a/frontend/src/app/main/ui/workspace/tokens/errors.cljs
+++ b/frontend/src/app/main/data/workspace/tokens/errors.cljs
@@ -1,4 +1,10 @@
-(ns app.main.ui.workspace.tokens.errors
+;; 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.data.workspace.tokens.errors
(:require
[app.util.i18n :refer [tr]]
[cuerdas.core :as str]))
@@ -12,9 +18,15 @@
{:error/code :error.import/invalid-json-data
:error/fn #(tr "workspace.token.invalid-json")}
+ :error.import/invalid-token-name
+ {:error/code :error.import/invalid-json-data
+ :error/fn #(tr "workspace.token.invalid-json-token-name")
+ :error/detail #(tr "workspace.token.invalid-json-token-name-detail" %)}
+
:error.import/style-dictionary-reference-errors
{:error/code :error.import/style-dictionary-reference-errors
- :error/fn #(str (tr "workspace.token.import-error") "\n\n" (str/join "\n\n" %))}
+ :error/fn #(str (tr "workspace.token.import-error") "\n\n" (first %))
+ :error/detail #(str/join "\n\n" (rest %))}
:error.import/style-dictionary-unknown-error
{:error/code :error.import/style-dictionary-reference-errors
@@ -74,3 +86,11 @@
(:error/fn err) ((:error/fn err) (:error/value err))
(:error/message err) (:error/message err)
:else err)))))
+
+(defn detail-errors [errors]
+ (->> errors
+ (map (fn [err]
+ (when (:error/detail err)
+ ((:error/detail err) (:error/value err)))))
+ (filter some?)
+ (seq)))
diff --git a/frontend/src/app/main/data/tokens.cljs b/frontend/src/app/main/data/workspace/tokens/library_edit.cljs
similarity index 92%
rename from frontend/src/app/main/data/tokens.cljs
rename to frontend/src/app/main/data/workspace/tokens/library_edit.cljs
index 7c234838f3..cc3a345cf3 100644
--- a/frontend/src/app/main/data/tokens.cljs
+++ b/frontend/src/app/main/data/workspace/tokens/library_edit.cljs
@@ -4,7 +4,7 @@
;;
;; Copyright (c) KALEIDOS INC
-(ns app.main.data.tokens
+(ns app.main.data.workspace.tokens.library-edit
(:require
[app.common.data.macros :as dm]
[app.common.files.changes-builder :as pcb]
@@ -18,10 +18,9 @@
[app.main.data.helpers :as dsh]
[app.main.data.notifications :as ntf]
[app.main.data.workspace.shapes :as dwsh]
- [app.main.ui.workspace.tokens.update :as wtu]
+ [app.main.data.workspace.tokens.propagation :as dwtp]
[app.util.i18n :refer [tr]]
[beicon.v2.core :as rx]
- [cuerdas.core :as str]
[potok.v2.core :as ptk]))
(declare set-selected-token-set-name)
@@ -124,7 +123,7 @@
(pcb/update-active-token-themes active-token-themes' prev-active-token-themes))]
(rx/of
(dch/commit-changes changes)
- (wtu/update-workspace-tokens))))))
+ (dwtp/propagate-workspace-tokens))))))
(defn delete-token-theme [group theme-name]
(ptk/reify ::delete-token-theme
@@ -136,7 +135,7 @@
(pcb/set-token-theme group theme-name nil))]
(rx/of
(dch/commit-changes changes)
- (wtu/update-workspace-tokens))))))
+ (dwtp/propagate-workspace-tokens))))))
(defn create-token-set
[set-name]
@@ -192,6 +191,23 @@
(rx/of (set-selected-token-set-name name)
(dch/commit-changes changes))))))))
+(defn duplicate-token-set
+ [id is-group]
+ (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.token.duplicate-suffix")]
+
+ (when-let [set (ctob/duplicate-set name tokens-lib {:suffix suffix})]
+ (let [changes (-> (pcb/empty-changes it)
+ (pcb/with-library-data data)
+ (pcb/set-token-set (:name set) is-group set))]
+ (rx/of (set-selected-token-set-name name)
+ (dch/commit-changes changes))))))))
+
(defn toggle-token-set
[name]
(assert (string? name) "expected a string for `name`")
@@ -205,7 +221,7 @@
(clt/generate-toggle-token-set tlib name))]
(rx/of (dch/commit-changes changes)
- (wtu/update-workspace-tokens))))))
+ (dwtp/propagate-workspace-tokens))))))
(defn toggle-token-set-group [group-path]
(ptk/reify ::toggle-token-set-group
@@ -217,7 +233,7 @@
(clt/generate-toggle-token-set-group (get-tokens-lib state) group-path))]
(rx/of
(dch/commit-changes changes)
- (wtu/update-workspace-tokens))))))
+ (dwtp/propagate-workspace-tokens))))))
(defn import-tokens-lib [lib]
(ptk/reify ::import-tokens-lib
@@ -228,7 +244,7 @@
(pcb/with-library-data data)
(pcb/set-tokens-lib lib))]
(rx/of (dch/commit-changes changes)
- (wtu/update-workspace-tokens))))))
+ (dwtp/propagate-workspace-tokens))))))
(defn delete-token-set-path
[group? path]
@@ -240,7 +256,7 @@
(pcb/with-library-data data)
(pcb/set-token-set (ctob/join-set-path path) group? nil))]
(rx/of (dch/commit-changes changes)
- (wtu/update-workspace-tokens))))))
+ (dwtp/propagate-workspace-tokens))))))
(defn drop-error [{:keys [error to-path]}]
(ptk/reify ::drop-error
@@ -267,7 +283,7 @@
(when-let [changes (clt/generate-move-token-set-group (pcb/empty-changes it) (get-tokens-lib state) drop-opts)]
(rx/of
(dch/commit-changes changes)
- (wtu/update-workspace-tokens)))
+ (dwtp/propagate-workspace-tokens)))
(catch :default e
(rx/of
(drop-error (ex-data e))))))))
@@ -284,7 +300,7 @@
changes (-> (pcb/empty-changes it)
(clt/generate-move-token-set tokens-lib params))]
(rx/of (dch/commit-changes changes)
- (wtu/update-workspace-tokens)))
+ (dwtp/propagate-workspace-tokens)))
(catch :default cause
(rx/of (drop-error (ex-data cause))))))))
@@ -385,17 +401,8 @@
(when-let [token (ctob/get-token token-set token-name)]
(let [tokens (ctob/get-tokens token-set)
unames (map :name tokens)
-
- suffix-fn
- (fn [copy-count]
- (let [suffix (tr "workspace.token.duplicate-suffix")]
- (str/concat "-"
- suffix
- (when (> copy-count 1)
- (str "-" copy-count)))))
-
- copy-name
- (cfh/generate-unique-name token-name unames :suffix-fn suffix-fn)]
+ suffix (tr "workspace.token.duplicate-suffix")
+ copy-name (cfh/generate-unique-name token-name unames :suffix suffix)]
(rx/of (create-token (assoc token :name copy-name)))))))))
diff --git a/frontend/src/app/main/ui/workspace/tokens/update.cljs b/frontend/src/app/main/data/workspace/tokens/propagation.cljs
similarity index 74%
rename from frontend/src/app/main/ui/workspace/tokens/update.cljs
rename to frontend/src/app/main/data/workspace/tokens/propagation.cljs
index 9de0bd2335..7bef78254b 100644
--- a/frontend/src/app/main/ui/workspace/tokens/update.cljs
+++ b/frontend/src/app/main/data/workspace/tokens/propagation.cljs
@@ -4,18 +4,18 @@
;;
;; Copyright (c) KALEIDOS INC
-(ns app.main.ui.workspace.tokens.update
+(ns app.main.data.workspace.tokens.propagation
(:require
[app.common.files.helpers :as cfh]
[app.common.logging :as l]
[app.common.types.token :as ctt]
+ [app.common.types.tokens-lib :as ctob]
[app.main.data.helpers :as dsh]
+ [app.main.data.style-dictionary :as sd]
[app.main.data.workspace.shapes :as dwsh]
[app.main.data.workspace.thumbnails :as dwt]
+ [app.main.data.workspace.tokens.application :as dwta]
[app.main.data.workspace.undo :as dwu]
- [app.main.ui.workspace.tokens.changes :as wtch]
- [app.main.ui.workspace.tokens.style-dictionary :as wtsd]
- [app.main.ui.workspace.tokens.token-set :as wtts]
[app.util.time :as dt]
[beicon.v2.core :as rx]
[clojure.data :as data]
@@ -24,21 +24,21 @@
;; Constants -------------------------------------------------------------------
-(def filter-existing-values? false)
+(def ^:private filter-existing-values? false)
-(def attributes->shape-update
- {ctt/border-radius-keys wtch/update-shape-radius-for-corners
- ctt/color-keys wtch/update-fill-stroke
- ctt/stroke-width-keys wtch/update-stroke-width
- ctt/sizing-keys wtch/update-shape-dimensions
- ctt/opacity-keys wtch/update-opacity
- #{:x :y} wtch/update-shape-position
- #{:p1 :p2 :p3 :p4} wtch/update-layout-padding
- #{:m1 :m2 :m3 :m4} wtch/update-layout-item-margin
- #{:column-gap :row-gap} wtch/update-layout-spacing
- #{:width :height} wtch/update-shape-dimensions
- #{:layout-item-min-w :layout-item-min-h :layout-item-max-w :layout-item-max-h} wtch/update-layout-sizing-limits
- ctt/rotation-keys wtch/update-rotation})
+(def ^:private attributes->shape-update
+ {ctt/border-radius-keys dwta/update-shape-radius-for-corners
+ ctt/color-keys dwta/update-fill-stroke
+ ctt/stroke-width-keys dwta/update-stroke-width
+ ctt/sizing-keys dwta/update-shape-dimensions
+ ctt/opacity-keys dwta/update-opacity
+ #{:x :y} dwta/update-shape-position
+ #{:p1 :p2 :p3 :p4} dwta/update-layout-padding
+ #{:m1 :m2 :m3 :m4} dwta/update-layout-item-margin
+ #{:column-gap :row-gap} dwta/update-layout-spacing
+ #{:width :height} dwta/update-shape-dimensions
+ #{:layout-item-min-w :layout-item-min-h :layout-item-max-w :layout-item-max-h} dwta/update-layout-sizing-limits
+ ctt/rotation-keys dwta/update-rotation})
(def attribute-actions-map
(reduce
@@ -48,6 +48,7 @@
;; Helpers ---------------------------------------------------------------------
+;; TODO: see if this can be replaced by more standard functions
(defn deep-merge
"Like d/deep-merge but unions set values."
([a b]
@@ -60,7 +61,7 @@
;; Data flows ------------------------------------------------------------------
-(defn invert-collect-key-vals
+(defn- invert-collect-key-vals
[xs resolved-tokens shape]
(-> (reduce
(fn [acc [k v]]
@@ -74,7 +75,7 @@
(update acc resolved-value (fnil conj #{}) k))))
{} xs)))
-(defn split-attribute-groups [attrs-values-map]
+(defn- split-attribute-groups [attrs-values-map]
(reduce
(fn [acc [attrs v]]
(cond
@@ -91,7 +92,7 @@
attrs (assoc acc attrs v)))
{} attrs-values-map))
-(defn shape-ids-by-values
+(defn- shape-ids-by-values
[attrs-values-map object-id]
(->> (map (fn [[value attrs]] [attrs {value #{object-id}}]) attrs-values-map)
(into {})))
@@ -121,7 +122,6 @@
[tokens frame-ids text-ids])))
-;; FIXME: revisit this
(defn- actionize-shapes-update-info [page-id shapes-update-info]
(mapcat (fn [[attrs update-infos]]
(let [action (some attribute-actions-map attrs)]
@@ -131,14 +131,15 @@
update-infos)))
shapes-update-info))
-(defn update-tokens
+(defn propagate-tokens
+ "Propagate tokens values to all shapes where they are applied"
[state resolved-tokens]
(let [file-id (get state :current-file-id)
current-page-id (get state :current-page-id)
fdata (dsh/lookup-file-data state file-id)
tpoint (dt/tpoint-ms)]
- (l/inf :status "START" :hint "update-tokens")
+ (l/inf :status "START" :hint "propagate-tokens")
(->> (rx/concat
(rx/of current-page-id)
(->> (rx/from (:pages fdata))
@@ -155,7 +156,7 @@
(actionize-shapes-update-info page-id attrs)]
(l/inf :status "PROGRESS"
- :hint "update-tokens"
+ :hint "propagate-tokens"
:page-id (str page-id)
:elapsed (tpoint)
::l/sync? true)
@@ -175,19 +176,21 @@
(rx/finalize
(fn [_]
(let [elapsed (tpoint)]
- (l/inf :status "END" :hint "update-tokens" :elapsed elapsed)))))))
+ (l/inf :status "END" :hint "propagate-tokens" :elapsed elapsed)))))))
-(defn update-workspace-tokens
+(defn propagate-workspace-tokens
[]
- (ptk/reify ::update-workspace-tokens
+ (ptk/reify ::propagate-workspace-tokens
ptk/WatchEvent
(watch [_ state _]
- (let [tokens (-> (wtts/get-active-theme-sets-tokens-names-map state)
- (wtsd/resolve-tokens+))]
- (->> (rx/from tokens)
- (rx/mapcat (fn [sd-tokens]
- (let [undo-id (js/Symbol)]
- (rx/concat
- (rx/of (dwu/start-undo-transaction undo-id :timeout false))
- (update-tokens state sd-tokens)
- (rx/of (dwu/commit-undo-transaction undo-id)))))))))))
+ (when-let [tokens-lib (-> (dsh/lookup-file-data state)
+ (get :tokens-lib))]
+ (let [tokens (-> (ctob/get-active-themes-set-tokens tokens-lib)
+ (sd/resolve-tokens+))]
+ (->> (rx/from tokens)
+ (rx/mapcat (fn [sd-tokens]
+ (let [undo-id (js/Symbol)]
+ (rx/concat
+ (rx/of (dwu/start-undo-transaction undo-id :timeout false))
+ (propagate-tokens state sd-tokens)
+ (rx/of (dwu/commit-undo-transaction undo-id))))))))))))
\ No newline at end of file
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 b8d02aa1bc..7969e3be10 100644
--- a/frontend/src/app/main/data/workspace/tokens/selected_set.cljs
+++ b/frontend/src/app/main/data/workspace/tokens/selected_set.cljs
@@ -11,7 +11,7 @@
[app.common.types.tokens-lib :as ctob]
[app.main.data.helpers :as dsh]))
-(defn get-selected-token-set-name [state]
+(defn- get-selected-token-set-name [state]
(or (get-in state [:workspace-tokens :selected-token-set-name])
(some-> (dsh/lookup-file-data state)
(get :tokens-lib)
diff --git a/frontend/src/app/main/ui/workspace/tokens/warnings.cljs b/frontend/src/app/main/data/workspace/tokens/warnings.cljs
similarity index 82%
rename from frontend/src/app/main/ui/workspace/tokens/warnings.cljs
rename to frontend/src/app/main/data/workspace/tokens/warnings.cljs
index b175d164aa..1849f824a2 100644
--- a/frontend/src/app/main/ui/workspace/tokens/warnings.cljs
+++ b/frontend/src/app/main/data/workspace/tokens/warnings.cljs
@@ -1,4 +1,10 @@
-(ns app.main.ui.workspace.tokens.warnings
+;; 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.data.workspace.tokens.warnings
(:require
[app.util.i18n :refer [tr]]
[cuerdas.core :as str]))
diff --git a/frontend/src/app/main/data/workspace/variants.cljs b/frontend/src/app/main/data/workspace/variants.cljs
index 1c38fc82f0..1566ba4e3f 100644
--- a/frontend/src/app/main/data/workspace/variants.cljs
+++ b/frontend/src/app/main/data/workspace/variants.cljs
@@ -8,13 +8,16 @@
(:require
[app.common.colors :as clr]
[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.logic.libraries :as cll]
+ [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.types.component :as ctc]
[app.common.types.components-list :as ctkl]
+ [app.common.types.shape.layout :as ctsl]
+ [app.common.types.variant :as ctv]
[app.common.uuid :as uuid]
[app.main.data.changes :as dch]
[app.main.data.helpers :as dsh]
@@ -23,23 +26,65 @@
[app.main.data.workspace.selection :as dws]
[app.main.data.workspace.shape-layout :as dwsl]
[app.main.data.workspace.shapes :as dwsh]
+ [app.main.data.workspace.transforms :as dwt]
[app.main.data.workspace.undo :as dwu]
[app.main.features :as features]
[app.util.dom :as dom]
[beicon.v2.core :as rx]
[potok.v2.core :as ptk]))
-(dm/export clv/find-related-components)
+(defn update-properties-names-and-values
+ "Compares the previous properties with the updated ones and executes the correspondent action
+ for each one depending on if it needs to be removed, updated or added"
+ [component-id variant-id previous-properties updated-properties]
+ (ptk/reify ::update-properties-names-and-values
+ ptk/UpdateEvent
+ (update [_ state]
+ (update state :workspace-local dissoc :shape-for-rename))
-(defn is-secondary-variant?
- [component data]
- (if-let [variant-id (:variant-id component)]
- (let [page-id (:main-instance-page component)
- objects (-> (dsh/get-page data page-id)
- (get :objects))
- shapes (dm/get-in objects [variant-id :shapes])]
- (not= (:main-instance-id component) (last shapes)))
- false))
+ 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))
+
+ properties-to-remove (ctv/find-properties-to-remove previous-properties updated-properties)
+ properties-to-add (ctv/find-properties-to-add previous-properties updated-properties)
+ properties-to-update (ctv/find-properties-to-update previous-properties updated-properties)
+
+ changes (-> (pcb/empty-changes it page-id)
+ (pcb/with-objects objects)
+ (pcb/with-library-data data))
+
+ changes (reduce
+ (fn [changes {:keys [name]}]
+ (-> changes
+ (clvp/generate-update-property-value component-id (ctv/find-index-for-property-name previous-properties name) "")))
+ changes
+ properties-to-remove)
+
+ changes (reduce
+ (fn [changes {:keys [name value]}]
+ (-> changes
+ (clvp/generate-update-property-value component-id (ctv/find-index-for-property-name previous-properties name) value)))
+ changes
+ properties-to-update)
+
+ changes (reduce
+ (fn [changes [idx {:keys [name value]}]]
+ (-> changes
+ (clvp/generate-add-new-property variant-id {:property-name name})
+ (clvp/generate-update-property-value component-id (+ idx (count previous-properties)) value)))
+ changes
+ (map-indexed vector properties-to-add))
+
+ undo-id (js/Symbol)]
+
+ (rx/of
+ (dwu/start-undo-transaction undo-id)
+ (dch/commit-changes changes)
+ (dwu/commit-undo-transaction undo-id))))))
(defn update-property-name
"Update the variant property name on the position pos
@@ -56,7 +101,7 @@
changes (-> (pcb/empty-changes it page-id)
(pcb/with-objects objects)
(pcb/with-library-data data)
- (clv/generate-update-property-name variant-id pos new-name))
+ (clvp/generate-update-property-name variant-id pos new-name))
undo-id (js/Symbol)]
(rx/of
(dwu/start-undo-transaction undo-id)
@@ -77,7 +122,7 @@
changes (-> (pcb/empty-changes it page-id)
(pcb/with-library-data data)
(pcb/with-objects objects)
- (clv/generate-update-property-value component-id pos value))
+ (clvp/generate-update-property-value component-id pos value))
undo-id (js/Symbol)]
(rx/of
(dwu/start-undo-transaction undo-id)
@@ -100,7 +145,7 @@
changes (-> (pcb/empty-changes it page-id)
(pcb/with-library-data data)
(pcb/with-objects objects)
- (clv/generate-remove-property variant-id pos))
+ (clvp/generate-remove-property variant-id pos))
undo-id (js/Symbol)]
(rx/of
@@ -124,7 +169,7 @@
changes (-> (pcb/empty-changes it page-id)
(pcb/with-library-data data)
(pcb/with-objects objects)
- (clv/generate-add-new-property variant-id options))
+ (clvp/generate-add-new-property variant-id options))
undo-id (js/Symbol)]
(rx/of
@@ -132,7 +177,7 @@
(dch/commit-changes changes)
(dwu/commit-undo-transaction undo-id))))))
-(defn set-variant-id
+(defn- set-variant-id
"Sets the variant-id on a component"
[component-id variant-id]
(ptk/reify ::set-variant-id
@@ -149,7 +194,7 @@
(dch/commit-changes changes)
(dwu/commit-undo-transaction undo-id))))))
-(defn focus-property
+(defn- focus-property
[shape-id prop-num]
(ptk/reify ::focus-property
ptk/EffectEvent
@@ -157,6 +202,25 @@
(dom/focus! (dom/get-element (str "variant-prop-" shape-id prop-num))))))
+(defn- resposition-and-resize-variant
+ "Resize the variant container, and move the shape (that is a variant) to the right"
+ [shape-id]
+ (ptk/reify ::resposition-and-resize-variant
+ ptk/WatchEvent
+ (watch [_ state _]
+ (let [page-id (:current-page-id state)
+ objects (dsh/lookup-page-objects state page-id)
+ shape (get objects shape-id)
+ container (get objects (:parent-id shape))
+ width (+ (:width container) (:width shape) 20) ;; 20 is the default gap for variants
+ x (- width (+ (:width shape) 30))] ;; 30 is the default margin for variants
+ (rx/of
+ (dwt/update-dimensions [(:parent-id shape)] :width width)
+ (dwt/update-position shape-id
+ {:x x}
+ {:absolute? false}))))))
+
+
(defn add-new-variant
"Create a new variant and add it to the variant-container"
[shape-id]
@@ -174,39 +238,28 @@
component-id (:component-id shape)
component (ctkl/get-component data component-id)
+ container-id (:parent-id shape)
+ variant-container (get objects container-id)
+ has-layout? (ctsl/any-layout? variant-container)
+
new-component-id (uuid/next)
new-shape-id (uuid/next)
- value (str clv/value-prefix
- (-> (clv/extract-properties-values data objects (:variant-id component))
- last
- :value
- count
- inc))
-
prop-num (dec (count (:variant-properties component)))
-
- [new-shape changes] (-> (pcb/empty-changes it page-id)
+ changes (-> (pcb/empty-changes it page-id)
(pcb/with-library-data data)
(pcb/with-objects objects)
(pcb/with-page-id page-id)
- (cll/generate-duplicate-component
- {:data data}
- component-id
- new-component-id
- true
- {:new-shape-id new-shape-id :apply-changes-local-library? true}))
-
- changes (-> changes
- (clv/generate-update-property-value new-component-id prop-num value)
- (pcb/change-parent (:parent-id shape) [new-shape] 0))
+ (clv/generate-add-new-variant shape (:variant-id component) new-component-id new-shape-id prop-num))
undo-id (js/Symbol)]
(rx/concat
(rx/of
(dwu/start-undo-transaction undo-id)
(dch/commit-changes changes)
+ (when-not has-layout?
+ (resposition-and-resize-variant new-shape-id))
(dwu/commit-undo-transaction undo-id)
(ptk/data-event :layout/update {:ids [(:parent-id shape)]})
(dws/select-shape new-shape-id))
@@ -226,7 +279,7 @@
page-id (:current-page-id state)
objects (dsh/lookup-page-objects state file-id page-id)
main (get objects main-instance-id)
- main-id (:id main)
+ parent (get objects (:parent-id main))
component-id (:component-id main)
cpath (cfh/split-path (:name main))
name (first cpath)
@@ -250,9 +303,17 @@
:stroke-color "#bb97d8" ;; todo use color var?
:stroke-opacity 1
:stroke-width 2}
+
+ ;; Move the position of the variant container so the main shape doesn't
+ ;; change its position
+ delta (if (ctsl/any-layout? parent)
+ (gpt/point 0 0)
+ (gpt/point -30 -30))
undo-id (js/Symbol)]
+ ;;TODO Refactor all called methods in order to be able to
+ ;;generate changes instead of call the events
(rx/concat
(rx/of
(dwu/start-undo-transaction undo-id)
@@ -261,11 +322,11 @@
(dwl/rename-component component-id name))
;; Create variant container
- (dwsh/create-artboard-from-selection variant-id)
+ (dwsh/create-artboard-from-selection variant-id nil nil nil delta)
(cl/remove-all-fills variant-vec {:color clr/black :opacity 1})
(dwsl/create-layout-from-id variant-id :flex)
(dwsh/update-shapes variant-vec #(merge % cont-props))
- (dwsh/update-shapes [main-id] #(merge % main-props))
+ (dwsh/update-shapes [main-instance-id] #(merge % main-props))
(cl/add-stroke variant-vec stroke-props)
(set-variant-id component-id variant-id))
@@ -283,9 +344,11 @@
(rx/of
(add-new-variant main-instance-id)
- (dwu/commit-undo-transaction undo-id)))))))
+ (dwu/commit-undo-transaction undo-id)
+ (ptk/data-event :layout/update {:ids [variant-id]})))))))
(defn add-component-or-variant
+ "Manage the shared shortcut, and do the pertinent action"
[]
(ptk/reify ::add-component-or-variant
@@ -319,6 +382,7 @@
(rx/of (dwl/add-component)))))))
(defn duplicate-or-add-variant
+ "Manage the shared shortcut, and do the pertinent action"
[]
(ptk/reify ::duplicate-or-add-variant
ptk/WatchEvent
@@ -336,3 +400,43 @@
(rx/from (map add-new-variant selected-ids))
(rx/of (dwu/commit-undo-transaction undo-id)))
(rx/of (dws/duplicate-selected true)))))))
+
+
+(defn rename-variant
+ "Rename the variant container and all components belonging to this variant"
+ [variant-id name]
+ (ptk/reify ::rename-variant
+
+ ptk/WatchEvent
+ (watch [_ state _]
+ (let [page-id (:current-page-id state)
+ data (dsh/lookup-file-data state)
+ 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)
+ undo-id (js/Symbol)]
+
+ (rx/concat
+ (rx/of (dwu/start-undo-transaction undo-id)
+ (dwsh/update-shapes [variant-id] #(assoc % :name clean-name)))
+ (rx/from (map
+ #(dwl/rename-component-and-main-instance (:id %) clean-name)
+ variant-components))
+ (rx/of (dwu/commit-undo-transaction undo-id)))))))
+
+
+(defn rename-comp-or-variant-and-main
+ "If the component is in a variant, rename the variant.
+ If it is not, rename the component and its main"
+ [component-id name]
+ (ptk/reify ::rename-comp-or-variant-and-main
+
+ ptk/WatchEvent
+ (watch [_ state _]
+ (let [data (dsh/lookup-file-data state)
+ component (ctkl/get-component data component-id)]
+ (if (ctc/is-variant? component)
+ (rx/of (rename-variant (:variant-id component) name))
+ (rx/of (dwl/rename-component-and-main-instance component-id name)))))))
+
diff --git a/frontend/src/app/main/errors.cljs b/frontend/src/app/main/errors.cljs
index 5ad3c84a22..d8c6b7db10 100644
--- a/frontend/src/app/main/errors.cljs
+++ b/frontend/src/app/main/errors.cljs
@@ -260,6 +260,14 @@
(let [message (tr "errors.feature-not-supported" (:feature error))]
(st/emit! (modal/show {:type :alert :message message})))
+ (= :file-in-components-v1 code)
+ (st/emit! (modal/show {:type :alert
+ :message (tr "errors.deprecated")
+ :link-message {:before (tr "errors.deprecated.contact.before")
+ :text (tr "errors.deprecated.contact.text")
+ :after (tr "errors.deprecated.contact.after")
+ :on-click #(st/emit! (rt/nav :settings-feedback))}}))
+
:else
(print-cause! "Restriction Error" error)))
diff --git a/frontend/src/app/main/fonts.clj b/frontend/src/app/main/fonts.clj
index 43b9fb7916..80f4ca0a05 100644
--- a/frontend/src/app/main/fonts.clj
+++ b/frontend/src/app/main/fonts.clj
@@ -7,33 +7,38 @@
(ns app.main.fonts
"A fonts loading macros."
(:require
+ [app.common.uuid :as uuid]
[clojure.data.json :as json]
[clojure.java.io :as io]
[cuerdas.core :as str]))
(defn- parse-gfont-variant
- [variant]
+ [variant files]
(cond
(= "regular" variant)
- {:id "regular" :name "regular" :weight "400" :style "normal"}
+ {:id "regular" :name "regular" :weight "400" :style "normal" :ttf-url (get files "regular")}
(= "italic" variant)
- {:id "italic" :name "italic" :weight "400" :style "italic"}
+ {:id "italic" :name "italic" :weight "400" :style "italic" :ttf-url (get files "italic")}
:else
- (when-let [[a b c] (re-find #"^(\d+)(.*)$" variant)]
- (if (str/empty? c)
- {:id a :name b :weight b :style "normal"}
- {:id a :name (str b " (" c ")") :weight b :style c}))))
+ (when-let [[id weight style] (re-find #"^(\d+)(.*)$" variant)]
+ {:id id
+ :name variant
+ :weight weight
+ :style (if (str/empty? style) "normal" style)
+ :ttf-url (get files id)})))
(defn- parse-gfont
[font]
(let [family (get font "family")
- variants (get font "variants")]
+ variants (get font "variants")
+ files (get font "files")]
{:id (str "gfont-" (str/slug family))
+ :uuid (uuid/random)
:family family
:name family
- :variants (into [] (comp (map parse-gfont-variant)
+ :variants (into [] (comp (map (fn [variant] (parse-gfont-variant variant files)))
(filter identity))
variants)}))
diff --git a/frontend/src/app/main/fonts.cljs b/frontend/src/app/main/fonts.cljs
index 5b06f449b4..4ee3c80b39 100644
--- a/frontend/src/app/main/fonts.cljs
+++ b/frontend/src/app/main/fonts.cljs
@@ -33,16 +33,16 @@
:name "Source Sans Pro"
:family "sourcesanspro"
:variants
- [{:id "200" :name "200" :weight "200" :style "normal" :suffix "extralight"}
- {:id "200italic" :name "200 (italic)" :weight "200" :style "italic" :suffix "extralightitalic"}
- {:id "300" :name "300" :weight "300" :style "normal" :suffix "light"}
- {:id "300italic" :name "300 (italic)" :weight "300" :style "italic" :suffix "lightitalic"}
- {:id "regular" :name "regular" :weight "400" :style "normal"}
- {:id "italic" :name "italic" :weight "400" :style "italic"}
- {:id "bold" :name "bold" :weight "bold" :style "normal"}
- {:id "bolditalic" :name "bold (italic)" :weight "bold" :style "italic"}
- {:id "black" :name "black" :weight "900" :style "normal"}
- {:id "blackitalic" :name "black (italic)" :weight "900" :style "italic"}]}])
+ [{:id "200" :name "200" :weight "200" :style "normal" :suffix "extralight" :ttf-url "sourcesanspro-extralight.ttf"}
+ {:id "200italic" :name "200 (italic)" :weight "200" :style "italic" :suffix "extralightitalic" :ttf-url "sourcesanspro-extralightitalic.ttf"}
+ {:id "300" :name "300" :weight "300" :style "normal" :suffix "light" :ttf-url "sourcesanspro-light.ttf"}
+ {:id "300italic" :name "300 (italic)" :weight "300" :style "italic" :suffix "lightitalic" :ttf-url "sourcesanspro-lightitalic.ttf"}
+ {:id "regular" :name "regular" :weight "400" :style "normal" :ttf-url "sourcesanspro-regular.ttf"}
+ {:id "italic" :name "italic" :weight "400" :style "italic" :ttf-url "sourcesanspro-italic.ttf"}
+ {:id "bold" :name "bold" :weight "bold" :style "normal" :ttf-url "sourcesanspro-bold.ttf"}
+ {:id "bolditalic" :name "bold (italic)" :weight "bold" :style "italic" :ttf-url "sourcesanspro-bolditalic.ttf"}
+ {:id "black" :name "black" :weight "900" :style "normal" :ttf-url "sourcesanspro-black.ttf"}
+ {:id "blackitalic" :name "black (italic)" :weight "900" :style "italic" :ttf-url "sourcesanspro-blackitalic.ttf"}]}])
(defonce fontsdb (l/atom {}))
(defonce fonts (l/atom []))
diff --git a/frontend/src/app/main/ui.cljs b/frontend/src/app/main/ui.cljs
index 143dec77a1..f43e86cbae 100644
--- a/frontend/src/app/main/ui.cljs
+++ b/frontend/src/app/main/ui.cljs
@@ -194,6 +194,7 @@
:settings-password
:settings-options
:settings-feedback
+ :settings-subscription
:settings-access-tokens
:settings-notifications)
[:? [:& settings-page {:route route}]]
diff --git a/frontend/src/app/main/ui/alert.cljs b/frontend/src/app/main/ui/alert.cljs
index 821b97cee1..8dd9542493 100644
--- a/frontend/src/app/main/ui/alert.cljs
+++ b/frontend/src/app/main/ui/alert.cljs
@@ -9,6 +9,8 @@
(:require
[app.main.data.modal :as modal]
[app.main.store :as st]
+ [app.main.ui.components.link :as lk]
+ [app.main.ui.ds.notifications.context-notification :refer [context-notification*]]
[app.main.ui.icons :as i]
[app.util.dom :as dom]
[app.util.i18n :as i18n :refer [tr]]
@@ -21,6 +23,7 @@
::mf/register-as :alert}
[{:keys [message
scd-message
+ link-message
title
on-accept
hint
@@ -59,10 +62,20 @@
[:div {:class (stl/css :modal-content)}
(when (and (string? message) (not= message ""))
[:h3 {:class (stl/css :modal-msg)} message])
+ (when (seq link-message)
+ [:h3 {:class (stl/css :modal-msg)}
+ [:span (:before link-message)]
+ [:& lk/link {:action (:on-click link-message)
+ :class (stl/css :link)}
+ (:text link-message)]
+ [:span (:after link-message)]])
(when (and (string? scd-message) (not= scd-message ""))
[:h3 {:class (stl/css :modal-scd-msg)} scd-message])
+
(when (string? hint)
- [:p {:class (stl/css :modal-hint)} hint])]
+ [:> context-notification* {:level :info
+ :appearance :ghost}
+ hint])]
[:div {:class (stl/css :modal-footer)}
[:div {:class (stl/css :action-buttons)}
diff --git a/frontend/src/app/main/ui/alert.scss b/frontend/src/app/main/ui/alert.scss
index 33e202118d..6955de2517 100644
--- a/frontend/src/app/main/ui/alert.scss
+++ b/frontend/src/app/main/ui/alert.scss
@@ -8,10 +8,12 @@
.modal-overlay {
@extend .modal-overlay-base;
+
&.transparent {
background-color: transparent;
}
}
+
.modal-container {
@extend .modal-container-base;
}
@@ -34,10 +36,6 @@
margin-bottom: $s-24;
}
-.modal-hint {
- @include bodyLargeTypography;
-}
-
.action-buttons {
@extend .modal-action-btns;
}
@@ -48,6 +46,7 @@
.accept-btn {
@extend .modal-accept-btn;
+
&.danger {
@extend .modal-danger-btn;
}
@@ -60,3 +59,15 @@
color: var(--modal-text-foreground-color);
line-height: 1.5;
}
+
+.link {
+ color: var(--color-accent-primary);
+}
+
+.link::before {
+ content: " ";
+}
+
+.link::after {
+ content: " ";
+}
diff --git a/frontend/src/app/main/ui/comments.cljs b/frontend/src/app/main/ui/comments.cljs
index 1aa3c833e3..479c810cd4 100644
--- a/frontend/src/app/main/ui/comments.cljs
+++ b/frontend/src/app/main/ui/comments.cljs
@@ -450,7 +450,6 @@
(mf/defc mentions-panel*
[]
(let [mentions-s (mf/use-ctx mentions-context)
- profile (mf/deref refs/profile)
team (mf/deref refs/team)
members (:members team)
@@ -467,13 +466,11 @@
mentions-users
(mf/with-memo [mention-filter members]
(->> members
- (filter (fn [{:keys [id fullname email]}]
- (and
- (not= id (:id profile))
- (or (not mention-filter)
- (empty? mention-filter)
- (str/includes? (str/lower fullname) (str/lower mention-filter))
- (str/includes? (str/lower email) (str/lower mention-filter))))))
+ (filter (fn [{:keys [fullname email]}]
+ (or (not mention-filter)
+ (empty? mention-filter)
+ (str/includes? (str/lower fullname) (str/lower mention-filter))
+ (str/includes? (str/lower email) (str/lower mention-filter)))))
(take 4)
(into [])))
@@ -762,9 +759,29 @@
[:> comment-form-buttons* {:on-submit on-submit*
:on-cancel on-cancel
:is-disabled disabled?}]]))
+(defn- offset-position [position viewport zoom bubble-margin]
+ (let [viewport (or viewport {:offset-x 0 :offset-y 0 :width 0 :height 0})
+ base-x (+ (* (:x position) zoom) (:offset-x viewport))
+ base-y (+ (* (:y position) zoom) (:offset-y viewport))
+
+ x (:x position)
+ y (:y position)
+
+ w (:width viewport)
+ h (:height viewport)
+
+ comment-width 284 ;; TODO: this is the width set via CSS in an outer container…
+ ;; We should probably do this in a different way.
+
+ orientation-left? (>= (+ base-x comment-width (:x bubble-margin)) w)
+ orientation-top? (>= base-y (/ h 2))
+
+ h-dir (if orientation-left? :left :right)
+ v-dir (if orientation-top? :top :bottom)]
+ {:x x :y y :h-dir h-dir :v-dir v-dir}))
(mf/defc comment-floating-thread-draft*
- [{:keys [draft zoom on-cancel on-submit position-modifier]}]
+ [{:keys [draft zoom on-cancel on-submit position-modifier viewport]}]
(let [profile (mf/deref refs/profile)
mentions-s (mf/use-memo #(rx/subject))
@@ -773,9 +790,14 @@
(some? position-modifier)
(gpt/transform position-modifier))
content (:content draft)
+ bubble-margin (gpt/point 0 0)
- pos-x (* (:x position) zoom)
- pos-y (* (:y position) zoom)
+ pos (offset-position position viewport zoom bubble-margin)
+
+ margin-x (* (:x bubble-margin) (if (= (:h-dir pos) :left) -1 1))
+ margin-y (* (:y bubble-margin) (if (= (:v-dir pos) :top) -1 1))
+ pos-x (+ (* (:x pos) zoom) margin-x)
+ pos-y (- (* (:y pos) zoom) margin-y)
disabled? (or (blank-content? content)
(exceeds-length? content))
@@ -802,33 +824,39 @@
(on-submit draft)))]
[:> (mf/provider mentions-context) {:value mentions-s}
- [:div
- {:class (stl/css :floating-preview-wrapper)
- :data-testid "floating-thread-bubble"
- :style {:top (str pos-y "px")
- :left (str pos-x "px")}
- :on-click dom/stop-propagation}
- [:> comment-avatar* {:class (stl/css :avatar-lg)
- :image (cfg/resolve-profile-photo-url profile)}]]
- [:div {:class (stl/css :floating-thread-wrapper :cursor-auto)
- :style {:top (str (- pos-y 24) "px")
- :left (str (+ pos-x 28) "px")}
- :on-click dom/stop-propagation}
- [:div {:class (stl/css :form)}
- [:> comment-input*
- {:placeholder (tr "labels.write-new-comment")
- :value (or content "")
- :autofocus true
- :on-esc on-esc
- :on-change on-change
- :on-ctrl-enter on-submit*}]
- (when (exceeds-length? content)
- [:div {:class (stl/css :error-text)}
- (tr "errors.character-limit-exceeded")])
- [:> comment-form-buttons* {:on-submit on-submit*
- :on-cancel on-esc
- :is-disabled disabled?}]]
- [:> mentions-panel*]]]))
+ [:div {:class (stl/css-case :floating-thread-draft-wrapper true
+ :left (= (:h-dir pos) :left)
+ :top (= (:v-dir pos) :top))
+ :style {:top (str pos-y "px")
+ :left (str pos-x "px")}}
+ [:div
+ {:data-testid "floating-thread-bubble"
+ :style {:top (str pos-y "px")
+ :left (str pos-x "px")}
+ :on-click dom/stop-propagation}
+ [:> comment-avatar* {:class (stl/css :avatar-lg)
+ :image (cfg/resolve-profile-photo-url profile)}]]
+ [:div {:class (stl/css :floating-thread-draft-inner-wrapper
+ :cursor-auto)
+ :style {:top (str (- pos-y 24) "px")
+ :left (str (+ pos-x 28) "px")}
+
+ :on-click dom/stop-propagation}
+ [:div {:class (stl/css :form)}
+ [:> comment-input*
+ {:placeholder (tr "labels.write-new-comment")
+ :value (or content "")
+ :autofocus true
+ :on-esc on-esc
+ :on-change on-change
+ :on-ctrl-enter on-submit*}]
+ (when (exceeds-length? content)
+ [:div {:class (stl/css :error-text)}
+ (tr "errors.character-limit-exceeded")])
+ [:> comment-form-buttons* {:on-submit on-submit*
+ :on-cancel on-esc
+ :is-disabled disabled?}]]
+ [:> mentions-panel*]]]]))
(mf/defc comment-floating-thread-header*
{::mf/private true}
@@ -980,26 +1008,7 @@
[thread-id]
(l/derived (l/in [:comments thread-id]) st/state))
-(defn- offset-position [position viewport zoom bubble-margin]
- (let [viewport (or viewport {:offset-x 0 :offset-y 0 :width 0 :height 0})
- base-x (+ (* (:x position) zoom) (:offset-x viewport))
- base-y (+ (* (:y position) zoom) (:offset-y viewport))
- x (:x position)
- y (:y position)
-
- w (:width viewport)
- h (:height viewport)
-
- comment-width 284 ;; TODO: this is the width set via CSS in an outer container…
- ;; We should probably do this in a different way.
-
- orientation-left? (>= (+ base-x comment-width (:x bubble-margin)) w)
- orientation-top? (>= base-y (/ h 2))
-
- h-dir (if orientation-left? :left :right)
- v-dir (if orientation-top? :top :bottom)]
- {:x x :y y :h-dir h-dir :v-dir v-dir}))
(mf/defc comment-floating-thread*
{::mf/wrap [mf/memo]}
diff --git a/frontend/src/app/main/ui/comments.scss b/frontend/src/app/main/ui/comments.scss
index 4e4eb43455..8ca32f61b7 100644
--- a/frontend/src/app/main/ui/comments.scss
+++ b/frontend/src/app/main/ui/comments.scss
@@ -160,6 +160,40 @@
z-index: initial;
}
+.floating-thread-draft-wrapper {
+ position: absolute;
+ display: flex;
+ flex-direction: row;
+ column-gap: $s-12;
+
+ --translate-x: 0%;
+ --translate-y: 0%;
+ transform: translate(var(--translate-x), var(--translate-y));
+
+ &.left {
+ --translate-x: -100%;
+ flex-direction: row-reverse;
+ }
+
+ &.top {
+ --translate-y: -100%;
+ align-items: flex-end;
+ }
+}
+
+.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;
+ pointer-events: auto;
+ border-radius: $br-8;
+ border: $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));
@@ -177,6 +211,7 @@
border: $s-2 solid var(--modal-border-color);
background-color: var(--comment-modal-background-color);
max-height: var(--comment-height);
+
--translate-x: 0%;
--translate-y: 0%;
transform: translate(var(--translate-x), var(--translate-y));
diff --git a/frontend/src/app/main/ui/confirm.cljs b/frontend/src/app/main/ui/confirm.cljs
index abb11ea8c7..9f97146c87 100644
--- a/frontend/src/app/main/ui/confirm.cljs
+++ b/frontend/src/app/main/ui/confirm.cljs
@@ -9,6 +9,7 @@
(:require
[app.main.data.modal :as modal]
[app.main.store :as st]
+ [app.main.ui.ds.notifications.context-notification :refer [context-notification*]]
[app.main.ui.icons :as i]
[app.util.dom :as dom]
[app.util.i18n :as i18n :refer [tr]]
@@ -76,7 +77,9 @@
(when (and (string? scd-message) (not= scd-message ""))
[:h3 {:class (stl/css :modal-scd-msg)} scd-message])
(when (string? hint)
- [:p {:class (stl/css :modal-hint)} hint])
+ [:> context-notification* {:level :info
+ :appearance :ghost}
+ hint])
(when (> (count items) 0)
[:*
[:p {:class (stl/css :modal-subtitle)}
diff --git a/frontend/src/app/main/ui/confirm.scss b/frontend/src/app/main/ui/confirm.scss
index 0b4b08202b..3dfec11100 100644
--- a/frontend/src/app/main/ui/confirm.scss
+++ b/frontend/src/app/main/ui/confirm.scss
@@ -52,10 +52,6 @@
@include bodyLargeTypography;
}
-.modal-hint {
- @extend .modal-hint-base;
-}
-
.action-buttons {
@extend .modal-action-btns;
}
diff --git a/frontend/src/app/main/ui/context.cljs b/frontend/src/app/main/ui/context.cljs
index abee67fb4f..4e97749e9a 100644
--- a/frontend/src/app/main/ui/context.cljs
+++ b/frontend/src/app/main/ui/context.cljs
@@ -23,7 +23,6 @@
(def render-thumbnails (mf/create-context nil))
(def libraries (mf/create-context nil))
-(def components-v2 (mf/create-context nil))
(def design-tokens (mf/create-context nil))
(def current-scroll (mf/create-context nil))
diff --git a/frontend/src/app/main/ui/dashboard/grid.cljs b/frontend/src/app/main/ui/dashboard/grid.cljs
index 450bcd0f33..df094bca80 100644
--- a/frontend/src/app/main/ui/dashboard/grid.cljs
+++ b/frontend/src/app/main/ui/dashboard/grid.cljs
@@ -161,7 +161,7 @@
[:span {:class (stl/css :num-assets)} (str "\u00A0(") (:count components) ")"]] ;; Unicode 00A0 is non-breaking space
[:div {:class (stl/css :asset-list)}
(for [component (:sample components)]
- (let [root-id (or (:main-instance-id component) (:id component))] ;; Check for components-v2 in library
+ (let [root-id (:main-instance-id component)]
[:div {:class (stl/css :asset-list-item)
:key (str "assets-component-" (:id component))}
[:& render/component-svg {:root-shape (get-in component [:objects root-id])
diff --git a/frontend/src/app/main/ui/dashboard/import.cljs b/frontend/src/app/main/ui/dashboard/import.cljs
index dc0afa8ca0..e515ea93a0 100644
--- a/frontend/src/app/main/ui/dashboard/import.cljs
+++ b/frontend/src/app/main/ui/dashboard/import.cljs
@@ -291,7 +291,7 @@
import-error?
[:div {:class (stl/css :error-message)}
- (tr "dashboard.import.import-error")]
+ (tr "labels.error")]
(and (not import-success?) (some? progress))
[:div {:class (stl/css :progress-message)} (parse-progress-message progress)])
@@ -443,7 +443,12 @@
(and (seq entries)
(every? #(= :import-success (:status %)) entries))
- (reset! status* :import-success)))
+ (reset! status* :import-success)
+
+ (and (seq entries)
+ (and (every? #(not= :import-ready (:status %)) entries)
+ (some #(= :import-error (:status %)) entries)))
+ (reset! status* :import-error)))
;; Run analyze operation on component mount
(mf/with-effect []
@@ -469,15 +474,30 @@
{:level (if (zero? import-success-total) :warning :success)
:content (tr "dashboard.import.import-message" (i18n/c import-success-total))}])
- (for [entry entries]
- [:> import-entry* {:edition edition
- :key (dm/str (:uri entry) "/" (:file-id entry))
- :entry entry
- :entries entries
- :on-edit on-edit
- :on-change on-entry-change
- :on-delete on-entry-delete
- :can-be-deleted (> (count entries) 1)}])
+ (when (= :import-error status)
+ [:& context-notification
+ {:level :error
+ :class (stl/css :context-notification-error)
+ :content (tr "dashboard.import.import-error.disclaimer")}])
+
+ (if (= :import-error status)
+ [:div {:class (stl/css :import-error-disclaimer)}
+ [:div (tr "dashboard.import.import-error.message1")]
+ [:ul {:class (stl/css :import-error-list)}
+ (for [entry entries]
+ (when (= :import-error (:status entry))
+ [:li {:class (stl/css :import-error-list-enry)} (:name entry)]))]
+ [:div (tr "dashboard.import.import-error.message2")]]
+
+ (for [entry entries]
+ [:> import-entry* {:edition edition
+ :key (dm/str (:uri entry) "/" (:file-id entry))
+ :entry entry
+ :entries entries
+ :on-edit on-edit
+ :on-change on-entry-change
+ :on-delete on-entry-delete
+ :can-be-deleted (> (count entries) 1)}]))
(when (some? template)
[:> import-entry* {:entry (assoc template :status status)
@@ -499,6 +519,7 @@
:on-click on-continue}])
(when (or (= :import-success status)
+ (= :import-error status)
(= :import-progress status))
[:input {:class (stl/css :accept-btn)
:type "button"
diff --git a/frontend/src/app/main/ui/dashboard/import.scss b/frontend/src/app/main/ui/dashboard/import.scss
index 257134dc4b..0ce6ae41a5 100644
--- a/frontend/src/app/main/ui/dashboard/import.scss
+++ b/frontend/src/app/main/ui/dashboard/import.scss
@@ -192,3 +192,20 @@
}
}
}
+
+.context-notification-error {
+ --context-notification-bg-color: var(--modal-background-color);
+}
+
+.import-error-disclaimer {
+ color: var(--color-foreground-secondary);
+}
+
+.import-error-list {
+ padding: 0 var(--sp-l);
+ list-style: disc;
+}
+
+.import-error-list-enry {
+ padding: var(--sp-xs) 0;
+}
diff --git a/frontend/src/app/main/ui/dashboard/sidebar.cljs b/frontend/src/app/main/ui/dashboard/sidebar.cljs
index 0a6d07c8b9..32386ef988 100644
--- a/frontend/src/app/main/ui/dashboard/sidebar.cljs
+++ b/frontend/src/app/main/ui/dashboard/sidebar.cljs
@@ -26,6 +26,7 @@
[app.main.ui.dashboard.comments :refer [comments-icon* comments-section]]
[app.main.ui.dashboard.inline-edition :refer [inline-edition]]
[app.main.ui.dashboard.project-menu :refer [project-menu*]]
+ [app.main.ui.dashboard.subscription :as subscription]
[app.main.ui.dashboard.team-form]
[app.main.ui.icons :as i :refer [icon-xref]]
[app.util.dom :as dom]
@@ -962,6 +963,10 @@
(dom/open-new-window "https://penpot.app/pricing")))]
[:*
+ (when (contains? cf/flags :subscriptions)
+ [:> subscription/sidebar*])
+
+ ;; TODO remove this block when subscriptions is full implemented
(when (contains? cf/flags :subscriptions-old)
[:button {:class (stl/css :upgrade-plan-section)
:on-click on-power-up-click}
@@ -970,6 +975,7 @@
[:span {:class (stl/css :no-limits)} (tr "dashboard.upgrade-plan.no-limits")]]
[:div {:class (stl/css :power-up)}
(tr "dashboard.upgrade-plan.power-up")]])
+
(when (and team profile)
[:& comments-section
{:profile profile
diff --git a/frontend/src/app/main/ui/dashboard/subscription.cljs b/frontend/src/app/main/ui/dashboard/subscription.cljs
new file mode 100644
index 0000000000..ba2dccdb57
--- /dev/null
+++ b/frontend/src/app/main/ui/dashboard/subscription.cljs
@@ -0,0 +1,78 @@
+;; Copyright (c) KALEIDOS INC
+
+(ns app.main.ui.dashboard.subscription
+ (:require-macros [app.main.style :as stl])
+ (:require
+ [app.main.router :as rt]
+ [app.main.store :as st]
+ [app.main.ui.icons :as i]
+ [app.util.dom :as dom]
+ [app.util.i18n :as i18n :refer [tr]]
+ [rumext.v2 :as mf]))
+
+(mf/defc cta-power-up*
+ [{:keys [top-title top-description bottom-description cta-text cta-link has-dropdown]}]
+ (let [show-data* (mf/use-state false)
+ show-data (deref show-data*)
+ handle-click
+ (mf/use-fn
+ (fn [event]
+ (dom/stop-propagation event)
+ (swap! show-data* not)))]
+
+ [:div {:class (stl/css :cta-power-up)
+ :on-click handle-click}
+ [:button {:class (stl/css :cta-top-section)}
+ [:div {:class (stl/css :content)}
+ [:span {:class (stl/css :cta-title)} top-title]
+ [:span {:class (stl/css :cta-text)} top-description]]
+ (when has-dropdown [:span {:class (stl/css :icon-dropdown)} i/arrow])]
+
+ (when (and has-dropdown show-data)
+ [:div {:class (stl/css :cta-bottom-section)}
+ [:> i18n/tr-html* {:content bottom-description
+ :class (stl/css :content)
+ :tag-name "button"}]
+ [:button {:class (stl/css :cta-highlight :cta-link) :on-click cta-link}
+ cta-text]])]))
+
+(mf/defc sidebar*
+ []
+ (let [;; TODO subscription cases professional/unlimited/enterprise
+ subscription-name :unlimited
+ subscription-is-trial false
+
+ go-to-subscription
+ (mf/use-fn #(st/emit! (rt/nav :settings-subscription)))]
+
+ (case subscription-name
+ :professional
+ [:> cta-power-up*
+ {:top-title (tr "subscription.dashboard.power-up.professional.top-title")
+ :top-description (tr "dashboard.upgrade-plan.no-limits")
+ :bottom-description (tr "subscription.dashboard.power-up.professional.bottom-description")
+ :cta-text (tr "dashboard.upgrade-plan.power-up")
+ :cta-link go-to-subscription
+ :has-dropdown true}]
+
+ :unlimited
+ (if subscription-is-trial
+ [:> cta-power-up*
+ {:top-title (tr "subscription.dashboard.power-up.trial.top-title")
+ :top-description (tr "subscription.dashboard.power-up.trial.top-description")
+ :bottom-description (tr "subscription.dashboard.power-up.trial.bottom-description")
+ :cta-text (tr "subscription.dashboard.power-up.subscribe")}]
+
+ [:> cta-power-up*
+ {:top-title (tr "subscription.dashboard.power-up.unlimited-plan")
+ :top-description (tr "subscription.dashboard.power-up.unlimited.top-description")
+ :bottom-description (tr "subscription.dashboard.power-up.unlimited.bottom-description")
+ :cta-text (tr "subscription.dashboard.power-up.unlimited.cta")
+ :cta-link go-to-subscription
+ :has-dropdown true}])
+
+ :enterprise
+ [:> cta-power-up*
+ {:top-title (tr "subscription.dashboard.power-up.enterprise-plan")
+ :top-description (tr "subscription.dashboard.power-up.enterprise.description")
+ :has-dropdown false}])))
diff --git a/frontend/src/app/main/ui/dashboard/subscription.scss b/frontend/src/app/main/ui/dashboard/subscription.scss
new file mode 100644
index 0000000000..2da07be401
--- /dev/null
+++ b/frontend/src/app/main/ui/dashboard/subscription.scss
@@ -0,0 +1,78 @@
+@use "common/refactor/common-refactor.scss" as *;
+@use "common/refactor/common-dashboard";
+@use "../ds/typography.scss" as t;
+@use "../ds/_borders.scss" as *;
+
+.cta-power-up {
+ display: flex;
+ border: $b-1 solid var(--color-background-quaternary);
+ border-radius: var(--sp-s);
+ flex-direction: column;
+ margin: var(--sp-m);
+ padding: var(--sp-m);
+}
+
+.cta-top-section {
+ @include buttonStyle;
+ display: grid;
+ color: var(--color-foreground-secondary);
+ grid-template-columns: 1fr auto;
+}
+
+.cta-top-section .content {
+ display: flex;
+ flex-direction: column;
+}
+
+.icon-dropdown {
+ @include flexCenter;
+ height: 100%;
+ width: $s-16;
+}
+
+.icon-dropdown svg {
+ @extend .button-icon-small;
+ stroke: var(--icon-foreground);
+ transform: rotate(90deg);
+}
+
+.cta-bottom-section {
+ border-block-start: $s-1 solid var(--color-background-quaternary);
+ display: grid;
+ color: var(--color-foreground-secondary);
+ grid-template-columns: 1fr auto;
+ margin-block-start: $s-12;
+ padding-block-start: $s-12;
+}
+.cta-bottom-section .content {
+ @include t.use-typography("body-small");
+ @include buttonStyle;
+ color: var(--color-foreground-secondary);
+ display: inline;
+ text-align: left;
+}
+
+.cta-text,
+.cta-title {
+ text-align: left;
+}
+
+.cta-text {
+ @include t.use-typography("body-small");
+}
+
+.cta-title {
+ @include t.use-typography("body-medium");
+}
+
+.cta-bottom-section .content strong,
+.cta-highlight {
+ @include t.use-typography("body-small");
+ color: var(--color-accent-tertiary);
+}
+
+.cta-link {
+ @include buttonStyle;
+ align-self: end;
+ margin-inline-start: $s-4;
+}
diff --git a/frontend/src/app/main/ui/dashboard/team.cljs b/frontend/src/app/main/ui/dashboard/team.cljs
index 595ec985a6..fd0fa00184 100644
--- a/frontend/src/app/main/ui/dashboard/team.cljs
+++ b/frontend/src/app/main/ui/dashboard/team.cljs
@@ -74,6 +74,7 @@
invitations-section? (= section :dashboard-team-invitations)
webhooks-section? (= section :dashboard-team-webhooks)
permissions (:permissions team)
+ invitations (:invitations team)
on-invite-member
(mf/use-fn
@@ -108,7 +109,7 @@
[:li {:class (when settings-section? (stl/css :active))}
[:a {:on-click on-nav-settings} (tr "labels.settings")]]]]
[:div {:class (stl/css :dashboard-buttons)}
- (if (and (or invitations-section? members-section?) (:is-admin permissions))
+ (if (and (or invitations-section? members-section?) (:is-admin permissions) (not-empty invitations))
[:a
{:class (stl/css :btn-secondary :btn-small)
:on-click on-invite-member
@@ -735,12 +736,27 @@
(mf/defc empty-invitation-table*
{::mf/props :obj
::mf/private true}
- [{:keys [can-invite]}]
- [:div {:class (stl/css :empty-invitations)}
- [:span (tr "labels.no-invitations")]
- (when ^boolean can-invite
- [:> i18n/tr-html* {:content (tr "labels.no-invitations-hint")
- :tag-name "span"}])])
+ [{:keys [can-invite team]}]
+ (let
+ [route (mf/deref refs/route)
+ invite-email (-> route :query-params :invite-email)
+ on-invite-member (mf/use-fn
+ (mf/deps team invite-email)
+ (fn []
+ (st/emit! (modal/show {:type :invite-members
+ :team team
+ :origin :team
+ :invite-email invite-email}))))]
+ [:div {:class (stl/css :empty-invitations)}
+ [:span (tr "labels.no-invitations")]
+ (when ^boolean can-invite
+ [[:span (tr "labels.no-invitations-gather-people")]
+ [:a
+ {:class (stl/css :btn-empty-invitations)
+ :on-click on-invite-member
+ :data-testid "invite-member"}
+ (tr "dashboard.invite-profile")]
+ [:div {:class (stl/css :blank-space)}]])]))
(mf/defc invitation-section*
{::mf/props :obj
@@ -761,7 +777,7 @@
[:div {:class (stl/css :title-field-role)} (tr "labels.role")]
[:div {:class (stl/css :title-field-status)} (tr "labels.status")]]
(if (empty? invitations)
- [:> empty-invitation-table* {:can-invite can-invite?}]
+ [:> empty-invitation-table* {:can-invite can-invite? :team team}]
[:div {:class (stl/css :table-rows)}
(for [invitation invitations]
[:> invitation-row*
@@ -881,9 +897,10 @@
[:div {:class (stl/css :modal-container)}
[:& fm/form {:form form :on-submit on-submit}
[:div {:class (stl/css :modal-header)}
- (if webhook
- [:h2 {:class (stl/css :modal-title)} (tr "modals.edit-webhook.title")]
- [:h2 {:class (stl/css :modal-title)} (tr "modals.create-webhook.title")])
+ [:h2 {:class (stl/css :modal-title)}
+ (if webhook
+ (tr "modals.edit-webhook.title")
+ (tr "modals.create-webhook.title"))]
[:button {:class (stl/css :modal-close-btn)
:on-click on-modal-close} i/close]]
@@ -1100,10 +1117,6 @@
[:& header {:section :dashboard-team-settings :team team}]
[:section {:class (stl/css :dashboard-team-settings)}
[:div {:class (stl/css :block :info-block)}
- [:div {:class (stl/css :block-label)}
- (tr "dashboard.team-info")]
- [:div {:class (stl/css :block-text)}
- (:name team)]
[:div {:class (stl/css :team-icon)}
(when can-edit
[:button {:class (stl/css :update-overlay)
@@ -1115,7 +1128,11 @@
[:& file-uploader {:accept "image/jpeg,image/png"
:multi false
:ref finput
- :on-selected on-file-selected}])]]
+ :on-selected on-file-selected}])]
+ [:div {:class (stl/css :block-label)}
+ (tr "dashboard.team-info")]
+ [:div {:class (stl/css :block-text)}
+ (:name team)]]
[:div {:class (stl/css :block)}
[:div {:class (stl/css :block-label)}
diff --git a/frontend/src/app/main/ui/dashboard/team.scss b/frontend/src/app/main/ui/dashboard/team.scss
index d6436705fe..cdb45f06a5 100644
--- a/frontend/src/app/main/ui/dashboard/team.scss
+++ b/frontend/src/app/main/ui/dashboard/team.scss
@@ -27,8 +27,7 @@
}
.info-block {
- position: relative;
- padding-top: $s-180;
+ margin-block-start: $s-16;
}
.block-label {
@@ -63,12 +62,11 @@
.team-icon {
--update-button-opacity: 0;
- position: absolute;
- top: 0;
- left: 0;
+ position: relative;
height: $s-120;
width: $s-120;
padding: $s-16;
+ margin-block-end: $s-32;
&:hover {
--update-button-opacity: 1;
@@ -76,6 +74,9 @@
}
.team-image {
+ position: absolute;
+ top: 0;
+ left: 0;
border-radius: 50%;
width: $s-120;
height: $s-120;
@@ -86,8 +87,8 @@
@include buttonStyle;
@include flexCenter;
position: absolute;
- top: $s-16;
- left: $s-16;
+ top: 0;
+ left: 0;
height: 100%;
width: 100%;
z-index: $z-index-modal;
@@ -310,6 +311,12 @@
color: var(--dashboard-list-text-foreground-color);
}
+.btn-empty-invitations {
+ @extend .button-primary;
+ margin-block-start: $s-16;
+ padding-inline: $s-12;
+}
+
.title-field-status {
position: relative;
cursor: default;
diff --git a/frontend/src/app/main/ui/delete_shared.cljs b/frontend/src/app/main/ui/delete_shared.cljs
index ec21009371..92fc47fad9 100644
--- a/frontend/src/app/main/ui/delete_shared.cljs
+++ b/frontend/src/app/main/ui/delete_shared.cljs
@@ -11,6 +11,7 @@
[app.main.data.modal :as modal]
[app.main.repo :as rp]
[app.main.store :as st]
+ [app.main.ui.ds.notifications.context-notification :refer [context-notification*]]
[app.main.ui.icons :as i]
[app.util.dom :as dom]
[app.util.i18n :as i18n :refer [tr]]
@@ -114,7 +115,9 @@
:key (dm/str file-id)}
[:span "- " file-name]])]]
(when (and (string? hint) (not= hint ""))
- [:h3 {:class (stl/css :modal-hint)} hint])]
+ [:> context-notification* {:level :info
+ :appearance :ghost}
+ hint])]
[:*
[:h3 {:class (stl/css :modal-msg)} no-files-msg]]))]
diff --git a/frontend/src/app/main/ui/delete_shared.scss b/frontend/src/app/main/ui/delete_shared.scss
index dfd7741f33..c0ee957e6a 100644
--- a/frontend/src/app/main/ui/delete_shared.scss
+++ b/frontend/src/app/main/ui/delete_shared.scss
@@ -35,10 +35,6 @@
margin-bottom: $s-24;
}
-.modal-hint {
- @extend .modal-hint-base;
-}
-
.element-list {
@include bodyLargeTypography;
color: var(--modal-text-foreground-color);
diff --git a/frontend/src/app/main/ui/ds/controls/combobox.cljs b/frontend/src/app/main/ui/ds/controls/combobox.cljs
index 04a16ace07..fdfedad0a7 100644
--- a/frontend/src/app/main/ui/ds/controls/combobox.cljs
+++ b/frontend/src/app/main/ui/ds/controls/combobox.cljs
@@ -75,6 +75,7 @@
(let [open* (mf/use-state false)
open (deref open*)
+ ;;use-memo-equal
selected* (mf/use-state default-selected)
selected (deref selected*)
@@ -215,6 +216,11 @@
(mf/with-effect [options]
(mf/set-ref-val! options-ref options))
+ (mf/use-effect
+ (mf/deps default-selected)
+ (fn []
+ (reset! selected* default-selected)))
+
[:div {:ref combobox-ref
:class (stl/css-case
:combobox-wrapper true
diff --git a/frontend/src/app/main/ui/ds/controls/input_with_values.cljs b/frontend/src/app/main/ui/ds/controls/input_with_values.cljs
index 4f62df9cfb..c590655df1 100644
--- a/frontend/src/app/main/ui/ds/controls/input_with_values.cljs
+++ b/frontend/src/app/main/ui/ds/controls/input_with_values.cljs
@@ -16,25 +16,28 @@
(def ^:private schema:input-with-values
[:map
[:name :string]
- [:values :string]
+ [:values {:optional true} :string]
[:on-blur {:optional true} fn?]])
-
(mf/defc input-with-values*
{::mf/props :obj
::mf/schema schema:input-with-values}
[{:keys [name values on-blur] :rest props}]
(let [editing* (mf/use-state false)
editing? (deref editing*)
+
input-ref (mf/use-ref)
input (mf/ref-val input-ref)
- title (str name ": " values)
+
+ title (if values (str name ": " values) name)
+
on-edit
(mf/use-fn
(fn [event]
(dom/stop-propagation event)
(reset! editing* true)
(dom/focus! input)))
+
on-stop-edit
(mf/use-fn
(mf/deps on-blur)
@@ -43,6 +46,7 @@
(reset! editing* false)
(when on-blur
(on-blur event))))
+
on-focus
(mf/use-fn
(fn [event]
@@ -70,6 +74,8 @@
[:div {:class (stl/css :input-with-values-edit-container)}
[:> input* props]]
[:div {:class (stl/css :input-with-values-container :input-with-values-grid)
- :title title :on-click on-edit}
- [:span {:class (stl/css :input-with-values-name)} name]
- [:span {:class (stl/css :input-with-values-values)} values]])))
+ :title title
+ :on-click on-edit}
+ [:span {:class (stl/css :input-with-values-name)} name]
+ (when values
+ [:span {:class (stl/css :input-with-values-values)} values])])))
diff --git a/frontend/src/app/main/ui/ds/controls/input_with_values.mdx b/frontend/src/app/main/ui/ds/controls/input_with_values.mdx
index 2c6261be09..778f6bea15 100644
--- a/frontend/src/app/main/ui/ds/controls/input_with_values.mdx
+++ b/frontend/src/app/main/ui/ds/controls/input_with_values.mdx
@@ -5,15 +5,15 @@ import * as InputWithValuesStories from "./input_with_values.stories";
# InputWithValues
-The `input-with-values*` acts as an input with an addition of a series of values that are only indicators.
+The `input-with-values*` acts as an input with an optional addition of a series of values that are only indicators, and an event which is triggered when the focus is lost.
-
## Technical notes
-* You need to pass the mandatory string properties `name` and `values`
-* You can pass a function property `on-blur` that will be called with the blur event when the component lost focus (including when the user press enter or esc)
+* You need to pass the mandatory string property `name`.
+* You can pass the optional string property `values`.
+* You can pass a function property `on-blur` that will be called with the blur event when the component loses focus (including when the user presses enter or esc).
```clj
[:> input-with-values*
@@ -22,16 +22,14 @@ The `input-with-values*` acts as an input with an addition of a series of values
:on-blur on-blur}]
```
-
## Usage guidelines (design)
-
### When to use
-When we have an element that need to be editable, and an extra set of values that aren't editables and are only indicators
-
+When we have an element that can be editable, but doesn't change its appearance on hover, and adds an extra set of values that aren't editable (they're just indicators).
### Interaction / Behavior
-* The component starts on "display" mode, showing the name and the values
-* Once the user clicks on it, the input goes into "active" mode and the only thing that remains and that is editable is the name (the values are hidden)
-* If the user press enter or esc, the component goes back to "display" mode
+
+* The component starts on "display" mode, showing the name and the values.
+* Once the user clicks on it, the input goes into "active" mode and the only thing that remains and can be editable is the name (the values are hidden).
+* If the user presses enter or esc, the component goes back to "display" mode.
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 531d7763f1..c06c680bbe 100644
--- a/frontend/src/app/main/ui/ds/foundations/assets/icon.cljs
+++ b/frontend/src/app/main/ui/ds/foundations/assets/icon.cljs
@@ -113,6 +113,7 @@
(def ^:icon-id corner-top "corner-top")
(def ^:icon-id corner-top-left "corner-top-left")
(def ^:icon-id corner-top-right "corner-top-right")
+(def ^:icon-id crown "crown")
(def ^:icon-id curve "curve")
(def ^:icon-id delete "delete")
(def ^:icon-id delete-text "delete-text")
@@ -134,6 +135,7 @@
(def ^:icon-id exit "exit")
(def ^:icon-id expand "expand")
(def ^:icon-id external-link "external-link")
+(def ^:icon-id eye-off "eye-off")
(def ^:icon-id feedback "feedback")
(def ^:icon-id fill-content "fill-content")
(def ^:icon-id filter "filter")
diff --git a/frontend/src/app/main/ui/ds/notifications/shared/notification_pill.cljs b/frontend/src/app/main/ui/ds/notifications/shared/notification_pill.cljs
index e69475d1f1..000653f026 100644
--- a/frontend/src/app/main/ui/ds/notifications/shared/notification_pill.cljs
+++ b/frontend/src/app/main/ui/ds/notifications/shared/notification_pill.cljs
@@ -8,7 +8,10 @@
(:require-macros
[app.main.style :as stl])
(:require
+ [app.common.data.macros :as dm]
+ [app.main.ui.ds.buttons.icon-button :refer [icon-button*]]
[app.main.ui.ds.foundations.assets.icon :as i]
+ [app.util.i18n :as i18n :refer [tr]]
[rumext.v2 :as mf]))
(defn icons-by-level
@@ -26,15 +29,17 @@
[:level [:enum :default :info :warning :error :success]]
[:type [:enum :toast :context]]
[:appearance {:optional true} [:enum :neutral :ghost]]
- [:is-html {:optional true} :boolean]])
+ [:is-html {:optional true} :boolean]
+ [:show-detail {:optional true} [:maybe :boolean]]
+ [:on-toggle-detail {:optional true} [:maybe fn?]]])
(mf/defc notification-pill*
{::mf/props :obj
::mf/schema schema:notification-pill}
- [{:keys [level type is-html appearance children]}]
- (let [class (stl/css-case :notification-pill true
- :appearance-neutral (= appearance :neutral)
+ [{:keys [level type is-html appearance detail children show-detail on-toggle-detail]}]
+ (let [class (stl/css-case :appearance-neutral (= appearance :neutral)
:appearance-ghost (= appearance :ghost)
+ :with-detail detail
:type-toast (= type :toast)
:type-context (= type :context)
:level-default (= level :default)
@@ -44,12 +49,27 @@
:level-info (= level :info))
is-html (or is-html false)
icon-id (icons-by-level level)]
- [:div {:class class}
- [:> i/icon* {:icon-id icon-id :class (stl/css :icon)}]
+ [:div {:class (dm/str class " " (stl/css :notification-pill))}
+ [:div {:class (stl/css :error-message)}
+ [:> i/icon* {:icon-id icon-id :class (stl/css :icon)}]
;; The content can arrive in markdown format, in these cases
- ;; we will use the prop is-html to true to indicate it and
- ;; that the html injection is performed and the necessary css classes are applied.
- (if is-html
- [:div {:class (stl/css :context-text)
- :dangerouslySetInnerHTML #js {:__html children}}]
- children)]))
+ ;; we will use the prop is-html to true to indicate it and
+ ;; that the html injection is performed and the necessary css classes are applied.
+ (if is-html
+ [:div {:class (stl/css :context-text)
+ :dangerouslySetInnerHTML #js {:__html children}}]
+ children)]
+
+ (when detail
+ [:div {:class (stl/css :error-detail)}
+ [:div {:class (stl/css :error-detail-title)}
+ [:> icon-button*
+ {:icon (if show-detail "arrow-down" "arrow")
+ :aria-label (tr "workspace.notification-pill.detail")
+ :icon-class (stl/css :expand-icon)
+ :variant "action"
+ :on-click on-toggle-detail}]
+ [:div {:on-click on-toggle-detail}
+ (tr "workspace.notification-pill.detail")]]
+ (when show-detail
+ [:div {:class (stl/css :error-detail-content)} detail])])]))
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 3b6e4d5ff3..9216f12858 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
@@ -83,3 +83,37 @@
color: var(--notification-icon-color);
margin-block-start: var(--notification-icon-margin);
}
+
+.notification-pill {
+ display: grid;
+ max-height: 92vh;
+ overflow: hidden;
+}
+
+.with-detail {
+ grid-template-rows: auto 1fr;
+}
+
+.error-message {
+ display: flex;
+ gap: var(--sp-s);
+}
+
+.error-detail {
+ overflow: auto;
+}
+
+.error-detail-title {
+ display: flex;
+ align-items: center;
+ cursor: pointer;
+}
+
+.expand-icon {
+ --icon-fill-color: var(--color-foreground-primary);
+ --icon-stroke-color: var(--color-foreground-primary);
+}
+
+.error-detail-content {
+ padding-left: var(--sp-xxxl);
+}
diff --git a/frontend/src/app/main/ui/ds/notifications/toast.cljs b/frontend/src/app/main/ui/ds/notifications/toast.cljs
index ee21818a1f..e100cd0c78 100644
--- a/frontend/src/app/main/ui/ds/notifications/toast.cljs
+++ b/frontend/src/app/main/ui/ds/notifications/toast.cljs
@@ -21,12 +21,14 @@
[:level {:optional true} [:maybe [:enum :default :info :warning :error :success]]]
[:appearance {:optional true} [:enum :neutral :ghost]]
[:is-html {:optional true} :boolean]
- [:on-close {:optional true} fn?]])
+ [:show-detail {:optional true} [:maybe :boolean]]
+ [:on-close {:optional true} fn?]
+ [:on-toggle-detail {:optional true} [:maybe fn?]]])
(mf/defc toast*
{::mf/props :obj
::mf/schema schema:toast}
- [{:keys [class level appearance type is-html children on-close] :rest props}]
+ [{:keys [class level appearance type is-html children detail show-detail on-close on-toggle-detail] :rest props}]
(let [class (dm/str class " " (stl/css :toast))
level (if (string? level)
(keyword level)
@@ -45,9 +47,14 @@
[:> notification-pill* {:level level
:type type
:is-html is-html
- :appearance appearance} children]
- ;; TODO: this should be a buttom from the DS, but this variant is not designed yet.
- ;; https://tree.taiga.io/project/penpot/task/8492
+ :appearance appearance
+ :detail detail
+ :show-detail show-detail
+ :on-toggle-detail on-toggle-detail} children]
+
+
+ ;; TODO: this should be a buttom from the DS, but this variant is not designed yet.
+ ;; https://tree.taiga.io/project/penpot/task/8492
[:> "button" {:on-click on-close
:aria-label "Close"
:class (stl/css-case :close-button true
diff --git a/frontend/src/app/main/ui/ds/notifications/toast.stories.jsx b/frontend/src/app/main/ui/ds/notifications/toast.stories.jsx
index 99f8857fb5..5c6ff2b3d6 100644
--- a/frontend/src/app/main/ui/ds/notifications/toast.stories.jsx
+++ b/frontend/src/app/main/ui/ds/notifications/toast.stories.jsx
@@ -17,6 +17,12 @@ export default {
children: {
control: { type: "text" },
},
+ detail: {
+ control: { type: "text" },
+ },
+ showDetail: {
+ control: { type: "boolean" },
+ },
},
args: {
children: "Lorem ipsum",
@@ -40,6 +46,14 @@ export const WithLongerText = {
},
};
+export const WithDetail = {
+ args: {
+ detail:
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent lorem ante, bibendum sed ex.",
+ showDetail: true,
+ },
+};
+
export const WithHTML = {
args: {
children:
diff --git a/frontend/src/app/main/ui/exports/assets.scss b/frontend/src/app/main/ui/exports/assets.scss
index d9873cd61d..0af4851951 100644
--- a/frontend/src/app/main/ui/exports/assets.scss
+++ b/frontend/src/app/main/ui/exports/assets.scss
@@ -130,10 +130,6 @@
.no-selection {
@include bodySmallTypography;
margin-bottom: $s-24;
- .modal-hint {
- @include bodySmallTypography;
- color: var(--modal-text-foreground-color);
- }
.modal-link {
@include bodyLargeTypography;
text-decoration: none;
@@ -304,6 +300,7 @@
}
.file-name-label {
@include bodyLargeTypography;
+ @include textEllipsis;
}
}
&.loading {
diff --git a/frontend/src/app/main/ui/exports/files.scss b/frontend/src/app/main/ui/exports/files.scss
index c95f6b64a8..8857bd9c0c 100644
--- a/frontend/src/app/main/ui/exports/files.scss
+++ b/frontend/src/app/main/ui/exports/files.scss
@@ -32,14 +32,9 @@
@extend .modal-close-btn-base;
}
-.modal-content,
-.no-selection {
+.modal-content {
@include bodySmallTypography;
margin-bottom: $s-24;
- .modal-hint {
- @include bodySmallTypography;
- color: var(--modal-text-foreground-color);
- }
.modal-link {
@include bodyLargeTypography;
text-decoration: none;
@@ -199,6 +194,7 @@
.file-entry {
.file-name {
@include flexRow;
+
.file-icon {
@include flexCenter;
height: $s-16;
@@ -211,6 +207,7 @@
}
.file-name-label {
@include bodyLargeTypography;
+ @include textEllipsis;
}
}
&.loading {
diff --git a/frontend/src/app/main/ui/icons.cljs b/frontend/src/app/main/ui/icons.cljs
index 3c23a7c0e8..372e1016a8 100644
--- a/frontend/src/app/main/ui/icons.cljs
+++ b/frontend/src/app/main/ui/icons.cljs
@@ -70,6 +70,8 @@
(def ^:icon boolean-intersection (icon-xref :boolean-intersection))
(def ^:icon boolean-union (icon-xref :boolean-union))
(def ^:icon bug (icon-xref :bug))
+(def ^:icon character-e (icon-xref :character-e))
+(def ^:icon character-u (icon-xref :character-u))
(def ^:icon clip-content (icon-xref :clip-content))
(def ^:icon clipboard (icon-xref :clipboard))
(def ^:icon clock (icon-xref :clock))
@@ -91,6 +93,7 @@
(def ^:icon corner-top (icon-xref :corner-top))
(def ^:icon corner-top-left (icon-xref :corner-top-left))
(def ^:icon corner-top-right (icon-xref :corner-top-right))
+(def ^:icon crown (icon-xref :crown))
(def ^:icon curve (icon-xref :curve))
(def ^:icon delete-text (icon-xref :delete-text))
(def ^:icon delete (icon-xref :delete))
@@ -111,6 +114,7 @@
(def ^:icon elipse (icon-xref :elipse))
(def ^:icon exit (icon-xref :exit))
(def ^:icon expand (icon-xref :expand))
+(def ^:icon external-link (icon-xref :external-link))
(def ^:icon feedback (icon-xref :feedback))
(def ^:icon fill-content (icon-xref :fill-content))
(def ^:icon filter-icon (icon-xref :filter))
@@ -144,7 +148,6 @@
(def ^:icon img (icon-xref :img))
(def ^:icon interaction (icon-xref :interaction))
(def ^:icon join-nodes (icon-xref :join-nodes))
-(def ^:icon external-link (icon-xref :external-link))
(def ^:icon justify-content-column-around (icon-xref :justify-content-column-around))
(def ^:icon justify-content-column-between (icon-xref :justify-content-column-between))
(def ^:icon justify-content-column-center (icon-xref :justify-content-column-center))
diff --git a/frontend/src/app/main/ui/inspect/attributes/variant.cljs b/frontend/src/app/main/ui/inspect/attributes/variant.cljs
index f92e689902..e9b74dad0f 100644
--- a/frontend/src/app/main/ui/inspect/attributes/variant.cljs
+++ b/frontend/src/app/main/ui/inspect/attributes/variant.cljs
@@ -8,7 +8,7 @@
(:require-macros [app.main.style :as stl])
(:require
[app.common.data.macros :as dm]
- [app.common.logic.variants :as clv]
+ [app.common.files.variant :as cfv]
[app.common.types.component :as ctc]
[app.common.types.components-list :as ctkl]
[app.main.ui.components.copy-button :refer [copy-button*]]
@@ -30,26 +30,18 @@
(mf/defc variant-panel*
[{:keys [objects shapes libraries file-id] :as kk}]
(let [shape (->> shapes first)
- title (cond
- (ctc/is-variant-container? shape)
- "inspect.attributes.variant.component"
- (ctc/main-instance? shape)
- "inspect.attributes.variant.variant"
- :else
- "inspect.attributes.variant.copy")
-
+ is-container? (ctc/is-variant-container? shape)
properties (mf/with-memo [objects shape]
(let [data (dm/get-in libraries [file-id :data])
- is-container? (ctc/is-variant-container? shape)
component (when-not is-container? (ctkl/get-component data (:component-id shape)))]
(if is-container?
- (->> (clv/extract-properties-values data objects (:id shape))
+ (->> (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 :attributes-block)}
[:> inspect-title-bar*
- {:title (tr title)
+ {:title (if is-container? (tr "inspect.attributes.variants") (tr "inspect.attributes.variant"))
:class (stl/css :title-spacing-variant)}]
(for [[pos property] (map-indexed vector properties)]
diff --git a/frontend/src/app/main/ui/inspect/right_sidebar.cljs b/frontend/src/app/main/ui/inspect/right_sidebar.cljs
index 990b3a2281..5530464505 100644
--- a/frontend/src/app/main/ui/inspect/right_sidebar.cljs
+++ b/frontend/src/app/main/ui/inspect/right_sidebar.cljs
@@ -50,6 +50,16 @@
libraries (get-libraries from)
main-instance? (ctk/main-instance? first-shape)
+ subtitle (cond
+ (or
+ (ctk/is-variant-container? first-shape)
+ (and (not (ctk/is-variant? first-shape)) main-instance?))
+ (tr "inspect.subtitle.main")
+ (and (ctk/is-variant? first-shape) main-instance?)
+ (tr "inspect.subtitle.variant")
+ (ctk/instance-head? first-shape)
+ (tr "inspect.subtitle.copy"))
+
handle-change-tab
(mf/use-fn
(mf/deps from on-change-section)
@@ -107,7 +117,7 @@
:viewer-code (= from :viewer))}
(if (seq shapes)
[:div {:class (stl/css :tool-windows)}
- [:div {:class (stl/css :shape-row)}
+ [:div {:class (stl/css-case :shape-row true :shape-row-subtitle (some? subtitle))}
(if (> (count shapes) 1)
[:*
[:span {:class (stl/css :layers-icon)} i/layers]
@@ -127,7 +137,13 @@
;; (tr "inspect.tabs.code.selected.rect")
;; (tr "inspect.tabs.code.selected.svg-raw")
;; (tr "inspect.tabs.code.selected.text")
- [:span {:class (stl/css :layer-title)} (:name first-shape)]])]
+ [:div
+ (if (some? subtitle)
+ [:*
+ [:div {:class (stl/css :layer-title :layer-title-with-subtitle)} (:name first-shape)]
+ [:div {:class (stl/css :layer-subtitle)} subtitle]]
+ [:div {:class (stl/css :layer-title)} (:name first-shape)])]])]
+
[:div {:class (stl/css :inspect-content)}
[:> tab-switcher* {:tabs tabs
diff --git a/frontend/src/app/main/ui/inspect/right_sidebar.scss b/frontend/src/app/main/ui/inspect/right_sidebar.scss
index e2ec5025f8..2ce156ce68 100644
--- a/frontend/src/app/main/ui/inspect/right_sidebar.scss
+++ b/frontend/src/app/main/ui/inspect/right_sidebar.scss
@@ -15,6 +15,7 @@
right: unset;
grid-area: right-sidebar;
overflow: hidden;
+
&.viewer-code {
height: calc(100vh - $s-48);
}
@@ -40,10 +41,16 @@
height: $s-32;
}
+.shape-row-subtitle {
+ height: fit-content;
+ align-items: flex-start;
+}
+
.layers-icon,
.shape-icon {
@include flexCenter;
height: $s-32;
+
svg {
@extend .button-icon-small;
stroke: var(--icon-foreground);
@@ -55,6 +62,17 @@
@include textEllipsis;
height: $s-32;
padding: $s-8 0;
+ color: var(--color-foreground-primary);
+}
+
+.layer-title-with-subtitle {
+ height: fit-content;
+ padding-bottom: 0;
+}
+
+.layer-subtitle {
+ @include bodySmallTypography;
+ @include textEllipsis;
color: var(--assets-item-name-foreground-color-rest);
}
diff --git a/frontend/src/app/main/ui/notifications.cljs b/frontend/src/app/main/ui/notifications.cljs
index e78ac74944..de7161db99 100644
--- a/frontend/src/app/main/ui/notifications.cljs
+++ b/frontend/src/app/main/ui/notifications.cljs
@@ -27,7 +27,14 @@
(= :floating (:position notification)))
toast? (or (= :toast (:type notification))
(some? (:timeout notification)))
- content (or (:content notification) "")]
+ content (or (:content notification) "")
+
+ show-detail* (mf/use-state false)
+
+ handle-toggle-detail
+ (mf/use-fn
+ (fn []
+ (swap! show-detail* not)))]
(when notification
(cond
@@ -35,7 +42,10 @@
[:> toast*
{:level (or (:level notification) :info)
:type (:type notification)
- :on-close on-close} content]
+ :detail (:detail notification)
+ :on-close on-close
+ :show-detail @show-detail*
+ :on-toggle-detail handle-toggle-detail} content]
inline?
[:& inline-notification
@@ -55,4 +65,5 @@
[:> toast*
{:level (or (:level notification) :info)
:type (:type notification)
+ :detail (:detail notification)
:on-close on-close} content]))))
diff --git a/frontend/src/app/main/ui/notifications/context_notification.cljs b/frontend/src/app/main/ui/notifications/context_notification.cljs
index f79219c006..d1bb0dbfc4 100644
--- a/frontend/src/app/main/ui/notifications/context_notification.cljs
+++ b/frontend/src/app/main/ui/notifications/context_notification.cljs
@@ -38,13 +38,16 @@
"They are persistent, informative and non-actionable.
They are contextual messages in specific areas off the app"
{::mf/props :obj}
- [{:keys [level content links is-html] :as props}]
- [:aside {:class (stl/css-case :context-notification true
- :contain-html is-html
- :warning (= level :warning)
- :error (= level :error)
- :success (= level :success)
- :info (= level :info))}
+ [{:keys [level content links is-html class] :as props}]
+ [:aside {:class (dm/str
+ class
+ " "
+ (stl/css-case :context-notification true
+ :contain-html is-html
+ :warning (= level :warning)
+ :error (= level :error)
+ :success (= level :success)
+ :info (= level :info)))}
(get-icon-by-level level)
diff --git a/frontend/src/app/main/ui/releases.cljs b/frontend/src/app/main/ui/releases.cljs
index 52e728437e..9a533090d7 100644
--- a/frontend/src/app/main/ui/releases.cljs
+++ b/frontend/src/app/main/ui/releases.cljs
@@ -33,6 +33,7 @@
[app.main.ui.releases.v2-4]
[app.main.ui.releases.v2-5]
[app.main.ui.releases.v2-6]
+ [app.main.ui.releases.v2-7]
[app.util.object :as obj]
[app.util.timers :as tm]
[rumext.v2 :as mf]))
@@ -97,4 +98,4 @@
(defmethod rc/render-release-notes "0.0"
[params]
- (rc/render-release-notes (assoc params :version "2.6")))
+ (rc/render-release-notes (assoc params :version "2.7")))
diff --git a/frontend/src/app/main/ui/releases/v2_7.cljs b/frontend/src/app/main/ui/releases/v2_7.cljs
new file mode 100644
index 0000000000..1a5c562e25
--- /dev/null
+++ b/frontend/src/app/main/ui/releases/v2_7.cljs
@@ -0,0 +1,142 @@
+;; 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-7
+ (: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.7"
+ [{: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.7-slide-0.jpg"
+ :class (stl/css :start-image)
+ :border "0"
+ :alt "Design Tokens make their debut in Penpot!"}]
+
+ [: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)}
+ "Penpot 2.7 is out!"]
+
+ [:p {:class (stl/css :feature-content)}
+ "After the huge excitement around our last release. The first-ever native Design Tokens support in a design tool (yay!), we’re keeping the momentum going with a fresh batch of new features and improvements."]
+
+ [:p {:class (stl/css :feature-content)}
+ "This update brings the first set of upgrades to our new Design Tokens system, a few of the many to come. We’ve also expanded who can create sharing prototype links and improved the invitations area. Last but not least, we fixed a bunch of bugs and optimizations that will make the experience more enjoyable for all."]
+
+ [: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.7-duplicate-set.gif"
+ :class (stl/css :start-image)
+ :border "0"
+ :alt "Design Tokens improvements"}]
+
+ [:div {:class (stl/css :modal-content)}
+ [:div {:class (stl/css :modal-header)}
+ [:h1 {:class (stl/css :modal-title)}
+ "Design Tokens improvements"]]
+
+ [:div {:class (stl/css :feature)}
+ [:p {:class (stl/css :feature-content)}
+ "It hasn’t been long since we launched Design Tokens in Penpot (the first native Design Tokens support in a design tool!), and we’re already rolling out the first set of improvements."]
+
+ [:p {:class (stl/css :feature-content)}
+ "The highlight: you can now duplicate token sets directly from a menu item. A huge time-saver, especially when working from existing sets. We’ve also made it easier to create themes by letting you select their set right away, and we’ve polished some info indicators to make everything a bit clearer. Plus, we’ve fixed a bunch of early-stage bugs to keep things running smoothly."]]
+
+ [:div {:class (stl/css :navigation)}
+ [:& c/navigation-bullets
+ {:slide slide
+ :navigate navigate
+ :total 3}]
+
+ [: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.7-share.gif"
+ :class (stl/css :start-image)
+ :border "0"
+ :alt "Editors and viewers can now create Share prototype links"}]
+
+ [:div {:class (stl/css :modal-content)}
+ [:div {:class (stl/css :modal-header)}
+ [:h1 {:class (stl/css :modal-title)}
+ "Editors and viewers can now create Share prototype links"]]
+
+ [:div {:class (stl/css :feature)}
+ [:p {:class (stl/css :feature-content)}
+ "From now on, both editors and viewers can create Share Prototype links. Sharing prototypes is key for better team collaboration, no matter the role. It’s a common need, team members often have to share presentations without risking any accidental changes to the designs, which means they don’t necessarily need editing permissions. In the future, Penpot will introduce more fine-grained control over these permissions."]
+
+ [:p {:class (stl/css :feature-content)}
+ "This update gives editors and viewers the same ability to configure, create, copy, and delete sharing links. A capability that, until now, was limited to owners and admins."]]
+
+ [:div {:class (stl/css :navigation)}
+ [:& c/navigation-bullets
+ {:slide slide
+ :navigate navigate
+ :total 3}]
+
+ [: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.7-invitations.gif"
+ :class (stl/css :start-image)
+ :border "0"
+ :alt "A clearer way to invite your first team members"}]
+
+ [:div {:class (stl/css :modal-content)}
+ [:div {:class (stl/css :modal-header)}
+ [:h1 {:class (stl/css :modal-title)}
+ "A clearer way to invite your first team members"]]
+ [:div {:class (stl/css :feature)}
+
+ [:p {:class (stl/css :feature-content)}
+ "Penpot works perfectly for solo projects, but it’s always more fun with a team. That’s why we’ve updated the initial state of the invitations area. Instead of starting blank, it now offers clearer guidance to help you invite your first team members."]
+
+ [:p {:class (stl/css :feature-content)}
+ "This improvement in design and UX writing comes from community member Prithvi Tharun (credit where it’s due!) Not all open source contributions are about code, and this is a fantastic example of how design and writing make a real difference too."]]
+
+ [:div {:class (stl/css :navigation)}
+
+ [:& c/navigation-bullets
+ {:slide slide
+ :navigate navigate
+ :total 3}]
+
+ [:button {:on-click finish
+ :class (stl/css :next-btn)} "Let's go"]]]]]])))
+
diff --git a/frontend/src/app/main/ui/releases/v2_7.scss b/frontend/src/app/main/ui/releases/v2_7.scss
new file mode 100644
index 0000000000..dd1b81c82b
--- /dev/null
+++ b/frontend/src/app/main/ui/releases/v2_7.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
+
+@import "refactor/common-refactor.scss";
+
+.modal-overlay {
+ @extend .modal-overlay-base;
+}
+
+.modal-container {
+ display: grid;
+ grid-template-columns: $s-324 1fr;
+ height: $s-500;
+ width: $s-888;
+ border-radius: $br-8;
+ background-color: var(--modal-background-color);
+ border: $s-2 solid var(--modal-border-color);
+}
+
+.start-image {
+ width: $s-324;
+ border-radius: $br-8 0 0 $br-8;
+}
+
+.modal-content {
+ padding: $s-40;
+ display: grid;
+ grid-template-rows: auto 1fr $s-32;
+ gap: $s-24;
+
+ a {
+ color: var(--button-primary-background-color-rest);
+ }
+}
+
+.modal-header {
+ display: grid;
+ gap: $s-8;
+}
+
+.version-tag {
+ @include flexCenter;
+ @include headlineSmallTypography;
+ height: $s-32;
+ width: $s-96;
+ background-color: var(--communication-tag-background-color);
+ color: var(--communication-tag-foreground-color);
+ border-radius: $br-8;
+}
+
+.modal-title {
+ @include headlineLargeTypography;
+ color: var(--modal-title-foreground-color);
+}
+
+.features-block {
+ display: flex;
+ flex-direction: column;
+ gap: $s-16;
+ width: $s-440;
+}
+
+.feature {
+ display: flex;
+ flex-direction: column;
+ gap: $s-8;
+}
+
+.feature-title {
+ @include bodyLargeTypography;
+ color: var(--modal-title-foreground-color);
+}
+
+.feature-content {
+ @include bodyMediumTypography;
+ margin: 0;
+ color: var(--modal-text-foreground-color);
+}
+
+.feature-list {
+ @include bodyMediumTypography;
+ color: var(--modal-text-foreground-color);
+ list-style: disc;
+ display: grid;
+ gap: $s-8;
+}
+
+.navigation {
+ width: 100%;
+ display: grid;
+ grid-template-areas: "bullets button";
+}
+
+.next-btn {
+ @extend .button-primary;
+ width: $s-100;
+ justify-self: flex-end;
+ grid-area: button;
+}
diff --git a/frontend/src/app/main/ui/routes.cljs b/frontend/src/app/main/ui/routes.cljs
index 57886b1e30..dac362aca9 100644
--- a/frontend/src/app/main/ui/routes.cljs
+++ b/frontend/src/app/main/ui/routes.cljs
@@ -34,6 +34,7 @@
["/password" :settings-password]
["/feedback" :settings-feedback]
["/options" :settings-options]
+ ["/subscriptions" :settings-subscription]
["/access-tokens" :settings-access-tokens]
["/notifications" :settings-notifications]]
diff --git a/frontend/src/app/main/ui/settings.cljs b/frontend/src/app/main/ui/settings.cljs
index aa30c4f734..b562acf918 100644
--- a/frontend/src/app/main/ui/settings.cljs
+++ b/frontend/src/app/main/ui/settings.cljs
@@ -22,6 +22,7 @@
[app.main.ui.settings.password :refer [password-page]]
[app.main.ui.settings.profile :refer [profile-page]]
[app.main.ui.settings.sidebar :refer [sidebar]]
+ [app.main.ui.settings.subscription :refer [subscription-page*]]
[app.util.i18n :as i18n :refer [tr]]
[rumext.v2 :as mf]))
@@ -67,6 +68,9 @@
:settings-options
[:& options-page]
+ :settings-subscription
+ [:> subscription-page*]
+
:settings-access-tokens
[:& access-tokens-page]
diff --git a/frontend/src/app/main/ui/settings/sidebar.cljs b/frontend/src/app/main/ui/settings/sidebar.cljs
index 5de595091c..ebd2979870 100644
--- a/frontend/src/app/main/ui/settings/sidebar.cljs
+++ b/frontend/src/app/main/ui/settings/sidebar.cljs
@@ -40,6 +40,9 @@
(def ^:private go-settings-options
#(st/emit! (rt/nav :settings-options)))
+(def ^:private go-settings-subscription
+ #(st/emit! (rt/nav :settings-subscription)))
+
(def ^:private go-settings-access-tokens
#(st/emit! (rt/nav :settings-access-tokens)))
@@ -62,6 +65,7 @@
password? (= section :settings-password)
options? (= section :settings-options)
feedback? (= section :settings-feedback)
+ subscription? (= section :settings-subscription)
access-tokens? (= section :settings-access-tokens)
notifications? (= section :settings-notifications)
team-id (or (dtm/get-last-team-id)
@@ -104,6 +108,13 @@
:data-testid "settings-profile"}
[:span {:class (stl/css :element-title)} (tr "labels.settings")]]
+ (when (contains? cf/flags :subscriptions)
+ [:li {:class (stl/css-case :current subscription?
+ :settings-item true)
+ :on-click go-settings-subscription
+ :data-testid "settings-subscription"}
+ [:span {:class (stl/css :element-title)} (tr "subscription.labels")]])
+
(when (contains? cf/flags :access-tokens)
[:li {:class (stl/css-case :current access-tokens?
:settings-item true)
diff --git a/frontend/src/app/main/ui/settings/subscription.cljs b/frontend/src/app/main/ui/settings/subscription.cljs
new file mode 100644
index 0000000000..96ef703ada
--- /dev/null
+++ b/frontend/src/app/main/ui/settings/subscription.cljs
@@ -0,0 +1,132 @@
+(ns app.main.ui.settings.subscription
+ (:require-macros [app.main.style :as stl])
+ (:require
+ [app.main.refs :as refs]
+ [app.main.ui.icons :as i]
+ [app.util.dom :as dom]
+ [app.util.i18n :as i18n :refer [tr]]
+ [app.util.time :as dt]
+ [rumext.v2 :as mf]))
+
+(mf/defc plan-card*
+ {::mf/props :obj}
+ [{:keys [card-title card-title-icon price-value price-period benefits-title benefits cta-text cta-link]}]
+ [:div {:class (stl/css :plan-card)}
+ [:div {:class (stl/css :plan-card-header)}
+ [:div {:class (stl/css :plan-card-title-container)}
+ (when card-title-icon [:span {:class (stl/css :plan-title-icon)} card-title-icon])
+ [:h4 {:class (stl/css :plan-card-title)} card-title]]
+ (when (and price-value price-period)
+ [:div {:class (stl/css :plan-price)}
+ [:span {:class (stl/css :plan-price-value)} price-value]
+ [:span {:class (stl/css :plan-price-period)} " / " price-period]])]
+ (when benefits-title [:h5 {:class (stl/css :benefits-title)} benefits-title])
+ [:ul {:class (stl/css :benefits-list)}
+ (for [benefit benefits]
+ [:li {:key (str benefit) :class (stl/css :benefit)} "- " benefit])]
+ (when (and cta-link cta-text) [:a {:class (stl/css :cta-button)
+ :href cta-link} cta-text])])
+
+(mf/defc subscription-page*
+ []
+ (let [;; TODO subscription cases professional/unlimited/enterprise
+ subscription-name :unlimited
+ subscription-is-trial false
+ locale (mf/deref i18n/locale)
+ profile (mf/deref refs/profile)
+ penpot-member (dt/format-date-locale-short (:created-at profile) {:locale locale})
+ ;; TODO get subscription member date
+ subscription-member "January 17, 2024"
+ ;; TODO update url to penpot payments
+ go-to-payments "https://penpot.app/pricing"]
+
+ (mf/with-effect []
+ (dom/set-html-title (tr "subscription.labels")))
+ [:section {:class (stl/css :dashboard-section)}
+ [:div {:class (stl/css :dashboard-content)}
+ [:h2 {:class (stl/css :title-section)} (tr "subscription.labels")]
+
+
+ [:div {:class (stl/css :your-subscription)}
+ [:h3 {:class (stl/css :plan-section-title)} (tr "subscription.settings.section-plan")]
+ (case subscription-name
+ :professional
+ [:> plan-card* {:card-title (tr "subscription.settings.professional")
+ :benefits [(tr "subscription.settings.professional.projects-files"),
+ (tr "subscription.settings.professional.teams-editors"),
+ (tr "subscription.settings.professional.storage")]}]
+
+ :unlimited
+ (if subscription-is-trial
+ [:> plan-card* {:card-title (tr "subscription.settings.unlimited-trial")
+ :card-title-icon i/character-u
+ :benefits-title (tr "subscription.settings.benefits.all-professional-benefits")
+ :benefits [(tr "subscription.settings.unlimited.teams"),
+ (tr "subscription.settings.unlimited.bill"),
+ (tr "subscription.settings.unlimited.storage")]
+ :cta-text (tr "subscription.settings.manage-your-subscription")
+ :cta-link go-to-payments}]
+
+ [:> plan-card* {:card-title (tr "subscription.settings.unlimited")
+ :card-title-icon i/character-u
+ :benefits-title (tr "subscription.settings.benefits.all-unlimited-benefits")
+ :benefits [(tr "subscription.settings.unlimited.teams"),
+ (tr "subscription.settings.unlimited.bill"),
+ (tr "subscription.settings.unlimited.storage")]
+ :cta-text (tr "subscription.settings.manage-your-subscription")
+ :cta-link go-to-payments}])
+
+ :enterprise
+ [:> plan-card* {:card-title (tr "subscription.settings.enterprise")
+ :card-title-icon i/character-e
+ :benefits-title (tr "subscription.settings.benefits.all-professiona-benefits")
+ :benefits [(tr "subscription.settings.enterprise.support"),
+ (tr "subscription.settings.enterprise.security"),
+ (tr "subscription.settings.enterprise.logs")]
+ :cta-text (tr "subscription.settings.manage-your-subscription")
+ :cta-link go-to-payments}])
+
+ [:div {:class (stl/css :membership-container)}
+ (when subscription-member [:div {:class (stl/css :membership)}
+ [:span {:class (stl/css :subscription-member)} i/crown]
+ [:span {:class (stl/css :membership-date)} (tr "subscription.settings.support-us-since" subscription-member)]])
+
+ [:div {:class (stl/css :membership)}
+ [:span {:class (stl/css :penpot-member)} i/user]
+ [:span {:class (stl/css :membership-date)} (tr "subscription.settings.member-since" penpot-member)]]]]
+
+ [:div {:class (stl/css :other-subscriptions)}
+ [:h3 {:class (stl/css :plan-section-title)} (tr "subscription.settings.other-plans")]
+ (when (not= subscription-name :professional)
+ [:> plan-card* {:card-title (tr "subscription.settings.professional")
+ :price-value "$0"
+ :price-period (tr "subscription.settings.price-editor-month")
+ :benefits [(tr "subscription.settings.professional.projects-files"),
+ (tr "subscription.settings.professional.teams-editors"),
+ (tr "subscription.settings.professional.storage")]
+ :cta-text (tr "subscription.dashboard.power-up.subscribe")
+ :cta-link go-to-payments}])
+
+ (when (not= subscription-name :unlimited)
+ [:> plan-card* {:card-title (tr "subscription.settings.unlimited")
+ :card-title-icon i/character-u
+ :price-value "$7"
+ :price-period (tr "subscription.settings.price-editor-month")
+ :benefits-title (tr "subscription.settings.benefits.all-professiona-benefits")
+ :benefits [(tr "subscription.settings.unlimited.teams"),
+ (tr "subscription.settings.unlimited.bill"),
+ (tr "subscription.settings.unlimited.storage")]
+ :cta-text (tr "subscription.settings.ulimited.try-it-free")
+ :cta-link go-to-payments}])
+
+ (when (not= subscription-name :enterprise)
+ [:> plan-card* {:card-title (tr "subscription.settings.enterprise")
+ :card-title-icon i/character-e
+ :price-value "$950"
+ :price-period (tr "subscription.settings.price-organization-month")
+ :benefits-title (tr "subscription.settings.benefits.all-professiona-benefits")
+ :benefits [(tr "subscription.settings.enterprise.support"),
+ (tr "subscription.settings.enterprise.security"),
+ (tr "subscription.settings.enterprise.logs")]
+ :cta-text (tr "subscription.dashboard.power-up.subscribe")
+ :cta-link go-to-payments}])]]]))
diff --git a/frontend/src/app/main/ui/settings/subscription.scss b/frontend/src/app/main/ui/settings/subscription.scss
new file mode 100644
index 0000000000..a9e743c019
--- /dev/null
+++ b/frontend/src/app/main/ui/settings/subscription.scss
@@ -0,0 +1,126 @@
+// 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 "common/refactor/common-refactor.scss" as *;
+@use "../ds/typography.scss" as t;
+
+.dashboard-section {
+ display: flex;
+ width: 100%;
+ justify-content: center;
+ align-items: center;
+}
+
+.dashboard-content {
+ display: flex;
+ justify-content: center;
+ flex-direction: column;
+ max-width: $s-500;
+ margin-bottom: $s-32;
+ width: $s-580;
+ margin: $s-92 auto $s-120 auto;
+ justify-content: center;
+}
+
+.membership-container {
+ margin-block-start: $s-16;
+}
+
+.membership {
+ align-items: center;
+ display: flex;
+ margin-block-start: $s-8;
+}
+
+.membership.first {
+ margin-block-start: $s-16;
+}
+
+.membership-date {
+ @include t.use-typography("body-small");
+ color: var(--color-foreground-secondary);
+ margin-inline-start: $s-8;
+}
+
+.subscription-member,
+.penpot-member {
+ @extend .button-icon;
+}
+
+.penpot-member {
+ stroke: var(--icon-foreground);
+}
+
+.subscription-member {
+ stroke: #fdcd79ff;
+}
+
+.title-section {
+ @include t.use-typography("title-large");
+ color: var(--color-foreground-primary);
+ margin-block-end: $s-16;
+}
+
+.plan-section-title {
+ @include t.use-typography("headline-small");
+ color: var(--color-foreground-primary);
+}
+
+.plan-card {
+ border: $s-1 solid var(--color-foreground-secondary);
+ border-radius: $s-8;
+ margin-block-start: $s-16;
+ padding: $s-16;
+}
+
+.plan-card-header {
+ display: flex;
+ justify-content: space-between;
+ margin-block-end: $s-8;
+}
+
+.plan-card-title-container {
+ display: flex;
+ align-items: center;
+ gap: $s-8;
+}
+
+.plan-title-icon {
+ @extend .button-icon;
+ stroke: var(--color-foreground-primary);
+ border-radius: $s-4;
+ border: $s-1 solid var(--color-foreground-primary);
+}
+
+.plan-card-title,
+.plan-price-value {
+ @include t.use-typography("title-medium");
+ color: var(--color-foreground-primary);
+}
+
+.plan-price-period {
+ @include t.use-typography("body-small");
+ color: var(--color-foreground-primary);
+}
+
+.benefits-list {
+ margin-block: 0;
+}
+
+.benefits-title,
+.benefit {
+ @include t.use-typography("body-medium");
+ color: var(--color-foreground-secondary);
+}
+
+.other-subscriptions {
+ margin-block-start: $s-36;
+}
+
+.cta-button {
+ @include t.use-typography("body-small");
+ color: var(--color-accent-tertiary);
+}
diff --git a/frontend/src/app/main/ui/shapes/bool.cljs b/frontend/src/app/main/ui/shapes/bool.cljs
index 29308eebab..87b5b6afb0 100644
--- a/frontend/src/app/main/ui/shapes/bool.cljs
+++ b/frontend/src/app/main/ui/shapes/bool.cljs
@@ -24,7 +24,7 @@
metadata? (mf/use-ctx use/include-metadata-ctx)
content (mf/with-memo [shape child-objs]
- (let [content (:bool-content shape)]
+ (let [content (:content shape)]
(cond
(some? content)
content
diff --git a/frontend/src/app/main/ui/shapes/fills.cljs b/frontend/src/app/main/ui/shapes/fills.cljs
index 4fb4a2996c..0cb672e2ea 100644
--- a/frontend/src/app/main/ui/shapes/fills.cljs
+++ b/frontend/src/app/main/ui/shapes/fills.cljs
@@ -61,9 +61,9 @@
embed (embed/use-data-uris uris)
transform (gsh/transform-str shape)
- pat-props #js {:patternUnits "userSpaceOnUse"
- :x x
- :y y
+ pat-props #js {:patternUnits (if (= :text type) "objectBoundingBox" "userSpaceOnUse")
+ :x (when-not (= :text type) x)
+ :y (when-not (= :text type) y)
:width width
:height height}
diff --git a/frontend/src/app/main/ui/viewer.scss b/frontend/src/app/main/ui/viewer.scss
index 31194da31b..2ece31cd85 100644
--- a/frontend/src/app/main/ui/viewer.scss
+++ b/frontend/src/app/main/ui/viewer.scss
@@ -127,6 +127,7 @@
width: $s-28;
margin-left: $s-8;
background-color: var(--viewer-controls-background-color);
+ pointer-events: all;
svg {
@extend .button-icon;
stroke: var(--icon-foreground);
diff --git a/frontend/src/app/main/ui/viewer/comments.cljs b/frontend/src/app/main/ui/viewer/comments.cljs
index 96c8d5fef1..eb112cb293 100644
--- a/frontend/src/app/main/ui/viewer/comments.cljs
+++ b/frontend/src/app/main/ui/viewer/comments.cljs
@@ -231,6 +231,7 @@
:position-modifier modifier1
:on-cancel on-draft-cancel
:on-submit on-draft-submit
+ :viewport nil
:zoom zoom}])]]]))
(mf/defc comments-sidebar*
diff --git a/frontend/src/app/main/ui/viewer/header.cljs b/frontend/src/app/main/ui/viewer/header.cljs
index 86eb9eb049..c0b4dee23d 100644
--- a/frontend/src/app/main/ui/viewer/header.cljs
+++ b/frontend/src/app/main/ui/viewer/header.cljs
@@ -198,9 +198,7 @@
:on-click toggle-fullscreen}
i/expand]
- (when (and
- (:in-team permissions)
- (:is-admin permissions))
+ (when (:in-team permissions)
[:button {:on-click open-share-dialog
:class (stl/css :share-btn)}
(tr "labels.share")])
diff --git a/frontend/src/app/main/ui/workspace.cljs b/frontend/src/app/main/ui/workspace.cljs
index 83349799a5..0dde3c0a48 100644
--- a/frontend/src/app/main/ui/workspace.cljs
+++ b/frontend/src/app/main/ui/workspace.cljs
@@ -235,19 +235,18 @@
[:> (mf/provider ctx/current-project-id) {:value project-id}
[:> (mf/provider ctx/current-file-id) {:value file-id}
[:> (mf/provider ctx/current-page-id) {:value page-id}
- [:> (mf/provider ctx/components-v2) {:value true}
- [:> (mf/provider ctx/design-tokens) {:value design-tokens?}
- [:> (mf/provider ctx/workspace-read-only?) {:value read-only?}
- [:> modal-container*]
- [:section {:class (stl/css :workspace)
- :style {:background-color background-color
- :touch-action "none"}}
- [:> context-menu*]
- (if (and file-loaded? page-id)
- [:> workspace-page*
- {:page-id page-id
- :file-id file-id
- :file file
- :wglobal wglobal
- :layout layout}]
- [:> workspace-loader*])]]]]]]]))
+ [:> (mf/provider ctx/design-tokens) {:value design-tokens?}
+ [:> (mf/provider ctx/workspace-read-only?) {:value read-only?}
+ [:> modal-container*]
+ [:section {:class (stl/css :workspace)
+ :style {:background-color background-color
+ :touch-action "none"}}
+ [:> context-menu*]
+ (if (and file-loaded? page-id)
+ [:> workspace-page*
+ {:page-id page-id
+ :file-id file-id
+ :file file
+ :wglobal wglobal
+ :layout layout}]
+ [:> workspace-loader*])]]]]]]))
diff --git a/frontend/src/app/main/ui/workspace/context_menu.cljs b/frontend/src/app/main/ui/workspace/context_menu.cljs
index 4821f1f04f..5132bdb9c7 100644
--- a/frontend/src/app/main/ui/workspace/context_menu.cljs
+++ b/frontend/src/app/main/ui/workspace/context_menu.cljs
@@ -146,7 +146,7 @@
do-cut #(st/emit! (dw/copy-selected)
(dw/delete-selected))
do-paste #(st/emit! (dw/paste-from-clipboard))
- do-duplicate #(st/emit! (dw/duplicate-selected true))
+ do-duplicate #(st/emit! (dwv/duplicate-or-add-variant))
enabled-paste-props* (mf/use-state false)
@@ -555,7 +555,7 @@
objects (deref refs/workspace-page-objects)
can-make-component (every? true? (map #(ctn/valid-shape-for-component? objects %) shapes))
heads (filter ctk/instance-head? shapes)
- components-menu-entries (cmm/generate-components-menu-entries heads true)
+ components-menu-entries (cmm/generate-components-menu-entries heads)
variant-container? (and single? (ctk/is-variant-container? (first shapes)))
do-add-component #(st/emit! (dwl/add-component))
do-add-multiple-components #(st/emit! (dwl/add-multiple-components))
diff --git a/frontend/src/app/main/ui/workspace/left_header.cljs b/frontend/src/app/main/ui/workspace/left_header.cljs
index 757012b97f..875907f016 100644
--- a/frontend/src/app/main/ui/workspace/left_header.cljs
+++ b/frontend/src/app/main/ui/workspace/left_header.cljs
@@ -132,7 +132,7 @@
:saved i/status-tick
:error i/status-wrong
nil)]
- file-name])]
+ [:div {:class (stl/css :file-name-label)} file-name]])]
(when ^boolean shared?
[:span {:class (stl/css :shared-badge)} i/library])
[:div {:class (stl/css :menu-section)}
diff --git a/frontend/src/app/main/ui/workspace/left_header.scss b/frontend/src/app/main/ui/workspace/left_header.scss
index df9ea35835..c858941ab3 100644
--- a/frontend/src/app/main/ui/workspace/left_header.scss
+++ b/frontend/src/app/main/ui/workspace/left_header.scss
@@ -54,6 +54,10 @@
flex-direction: row;
}
+.file-name-label {
+ @include textEllipsis;
+}
+
.file-name-input {
@include flexCenter;
width: 100%;
diff --git a/frontend/src/app/main/ui/workspace/main_menu.cljs b/frontend/src/app/main/ui/workspace/main_menu.cljs
index 5da0b952c3..149bb5dcda 100644
--- a/frontend/src/app/main/ui/workspace/main_menu.cljs
+++ b/frontend/src/app/main/ui/workspace/main_menu.cljs
@@ -618,7 +618,7 @@
[:> dropdown-menu-item* {:class (stl/css :submenu-item)
:on-click on-pin-version
:on-key-down on-pin-version-key-down
- :id "file-menu-show-version-history"}
+ :id "file-menu-create-version"}
[:span {:class (stl/css :item-name)}
(tr "dashboard.create-version-menu")]]
@@ -627,7 +627,10 @@
:on-key-down on-show-version-history-key-down
:id "file-menu-show-version-history"}
[:span {:class (stl/css :item-name)}
- (tr "dashboard.show-version-history")]]
+ (tr "dashboard.show-version-history")]
+ [:span {:class (stl/css :shortcut)}
+ (for [sc (scd/split-sc (sc/get-tooltip :toggle-history))]
+ [:span {:class (stl/css :shortcut-key) :key sc} sc])]]
[:div {:class (stl/css :separator)}]])
@@ -786,6 +789,7 @@
on-power-up-click
(mf/use-fn
(fn []
+ (st/emit! (ptk/event ::ev/event {::ev/name "explore-pricing-click" ::ev/origin "workspace-menu"}))
(dom/open-new-window "https://penpot.app/pricing")))
toggle-flag
@@ -900,14 +904,16 @@
:id "file-menu-help-info"}
[:span {:class (stl/css :item-name)} (tr "workspace.header.menu.option.help-info")]
[:span {:class (stl/css :open-arrow)} i/arrow]]
- [:> dropdown-menu-item* {:class (stl/css-case :menu-item true)
- :on-click on-power-up-click
- :on-key-down (fn [event]
- (when (kbd/enter? event)
- (on-power-up-click)))
- :on-pointer-enter close-sub-menu
- :id "file-menu-power-up"}
- [:span {:class (stl/css :item-name)} (tr "workspace.header.menu.option.power-up")]]]
+ ;; TODO remove this block when subscriptions is full implemented
+ (when (contains? cf/flags :subscriptions-old)
+ [:> dropdown-menu-item* {:class (stl/css-case :menu-item true)
+ :on-click on-power-up-click
+ :on-key-down (fn [event]
+ (when (kbd/enter? event)
+ (on-power-up-click)))
+ :on-pointer-enter close-sub-menu
+ :id "file-menu-power-up"}
+ [:span {:class (stl/css :item-name)} (tr "workspace.header.menu.option.power-up")]])]
(case sub-menu
:file
diff --git a/frontend/src/app/main/ui/workspace/shapes/bool.cljs b/frontend/src/app/main/ui/workspace/shapes/bool.cljs
index a3080b704e..536bd7fe68 100644
--- a/frontend/src/app/main/ui/workspace/shapes/bool.cljs
+++ b/frontend/src/app/main/ui/workspace/shapes/bool.cljs
@@ -35,7 +35,7 @@
shape (cond-> shape
^boolean child-sel?
- (dissoc :bool-content))]
+ (dissoc :content))]
[:> shape-container {:shape shape}
[:& bool-shape {:shape shape
diff --git a/frontend/src/app/main/ui/workspace/sidebar.scss b/frontend/src/app/main/ui/workspace/sidebar.scss
index 3101f9d8c1..9dba378304 100644
--- a/frontend/src/app/main/ui/workspace/sidebar.scss
+++ b/frontend/src/app/main/ui/workspace/sidebar.scss
@@ -85,6 +85,7 @@ $width-settings-bar-max: $s-500;
}
.resize-area-horiz {
+ background-color: var(--panel-background-color);
position: absolute;
left: 0;
width: 100%;
diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs
index 066e1d4ce0..466715292b 100644
--- a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs
+++ b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs
@@ -75,8 +75,7 @@
{::mf/wrap [mf/memo]
::mf/wrap-props false}
[{:keys [size file-id]}]
- (let [components-v2 (mf/use-ctx ctx/components-v2)
- read-only? (mf/use-ctx ctx/workspace-read-only?)
+ (let [read-only? (mf/use-ctx ctx/workspace-read-only?)
filters* (mf/use-state
{:term ""
:section "all"
@@ -148,11 +147,6 @@
:id "components"
:handler on-section-filter-change}
- (when (not components-v2)
- {:name (tr "workspace.assets.graphics")
- :id "graphics"
- :handler on-section-filter-change})
-
{:name (tr "workspace.assets.colors")
:id "colors"
:handler on-section-filter-change}
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 b9c4520b4e..0fa0a2d88c 100644
--- a/frontend/src/app/main/ui/workspace/sidebar/assets/common.cljs
+++ b/frontend/src/app/main/ui/workspace/sidebar/assets/common.cljs
@@ -14,6 +14,7 @@
[app.common.types.component :as ctk]
[app.common.types.container :as ctn]
[app.common.types.file :as ctf]
+ [app.common.types.variant :as ctv]
[app.config :as cf]
[app.main.data.helpers :as dsh]
[app.main.data.modal :as modal]
@@ -322,7 +323,7 @@
:is-hidden is-hidden}])))
(defn generate-components-menu-entries
- [shapes components-v2]
+ [shapes]
(let [multi (> (count shapes) 1)
copies (filter ctk/in-component-copy? shapes)
@@ -350,13 +351,13 @@
touched-not-dangling (filter #(and (cfh/component-touched? objects (:id %))
(find-component % false)) copies)
- can-reset-overrides? (or (not components-v2) (seq touched-not-dangling))
+ can-reset-overrides? (seq touched-not-dangling)
;; For when it's only one shape
shape (first shapes)
id (:id shape)
- main-instance? (if components-v2 (ctk/main-instance? shape) true)
+ main-instance? (ctk/main-instance? shape)
component-id (:component-id shape)
library-id (:component-file shape)
@@ -372,16 +373,16 @@
can-update-main? (and (not multi)
(not is-dangling?)
- (or (not components-v2)
- (and (not main-instance?)
- (not (ctn/has-any-copy-parent? objects shape))
- (cfh/component-touched? objects (:id shape)))))
+ (and (not main-instance?)
+ (not (ctn/has-any-copy-parent? objects shape))
+ (cfh/component-touched? objects (:id shape))))
can-detach? (and (seq copies)
(every? #(not (ctn/has-any-copy-parent? objects %)) copies))
variants? (features/use-feature "variants/v1")
+ same-variant? (ctv/same-variant? shapes)
do-detach-component
#(st/emit! (dwl/detach-components (map :id copies)))
@@ -447,10 +448,10 @@
(when (= 1 (count comps-to-restore))
(ts/schedule 1000 do-show-component)))
- menu-entries [(when (and (not multi) main-instance?)
+ menu-entries [(when (and (or (not multi) same-variant?) main-instance?)
{:title (tr "workspace.shape.menu.show-in-assets")
:action do-show-in-assets})
- (when (and (not multi) main-instance? local-component? lacks-annotation? components-v2)
+ (when (and (not multi) main-instance? local-component? lacks-annotation?)
{:title (tr "workspace.shape.menu.create-annotation")
:action do-create-annotation})
(when can-detach?
@@ -462,7 +463,7 @@
(when can-reset-overrides?
{:title (tr "workspace.shape.menu.reset-overrides")
:action do-reset-component})
- (when (and (seq restorable-copies) components-v2)
+ (when (seq restorable-copies)
{:title (tr "workspace.shape.menu.restore-main")
:action do-restore-component})
(when can-show-component?
@@ -471,7 +472,7 @@
(when can-update-main?
{:title (tr "workspace.shape.menu.update-main")
:action do-update-component})
- (when (and variants? (not multi) main-instance?)
+ (when (and variants? (or (not multi) same-variant?) main-instance?)
{:title (tr "workspace.shape.menu.add-variant")
:shortcut :create-component
:action do-add-variant})]]
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 6ba863d7b6..c53002203f 100644
--- a/frontend/src/app/main/ui/workspace/sidebar/assets/components.cljs
+++ b/frontend/src/app/main/ui/workspace/sidebar/assets/components.cljs
@@ -19,6 +19,7 @@
[app.main.data.workspace.libraries :as dwl]
[app.main.data.workspace.media :as dwm]
[app.main.data.workspace.undo :as dwu]
+ [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]]
@@ -54,7 +55,7 @@
{::mf/wrap-props false}
[{:keys [component renaming listing-thumbs? selected
file-id on-asset-click on-context-menu on-drag-start do-rename
- cancel-rename selected-full selected-paths is-local]}]
+ cancel-rename selected-full selected-paths is-local num-variants]}]
(let [item-ref (mf/use-ref)
@@ -95,7 +96,7 @@
(fn [event]
(when (and is-local (:is-local @drag-data*))
(cmm/on-drop-asset event component dragging* selected selected-full
- selected-paths dwl/rename-component-and-main-instance))))
+ selected-paths dwv/rename-comp-or-variant-and-main))))
on-drag-enter
(mf/use-fn
@@ -129,7 +130,8 @@
[:div {:ref item-ref
:class (stl/css-case :selected (contains? selected (:id component))
:grid-cell listing-thumbs?
- :enum-item (not listing-thumbs?))
+ :enum-item (not listing-thumbs?)
+ :enum-item-with-mark (and (not listing-thumbs?) (ctc/is-variant? component)))
:id (dm/str "component-shape-id-" (:id component))
:draggable (and (not read-only?) (not renaming?))
:on-click on-component-click
@@ -166,13 +168,16 @@
:root-shape root-shape
:component component
:container container
- :is-hidden (not visible?)}]])]))
+ :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)
+ :title (tr "workspace.assets.components.num-variants" num-variants)} i/variant])])]))
(mf/defc components-group
{::mf/wrap-props false}
[{:keys [file-id prefix groups open-groups force-open? renaming 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]}]
+ selected-full is-local count-variants]}]
(let [group-open? (if (false? (get open-groups prefix)) ;; if the user has closed it specifically, respect that
false
@@ -205,7 +210,7 @@
(mf/deps dragging* prefix selected-paths selected-full is-local drag-data*)
(fn [event]
(when (and is-local (:is-local @drag-data*))
- (cmm/on-drop-asset-group event dragging* prefix selected-paths selected-full dwl/rename-component-and-main-instance))))]
+ (cmm/on-drop-asset-group event dragging* prefix selected-paths selected-full dwv/rename-comp-or-variant-and-main))))]
[:div {:class (stl/css :component-group)
:on-drag-enter on-drag-enter
@@ -220,7 +225,6 @@
:on-rename on-rename-group
:on-ungroup on-ungroup}]
-
(when group-open?
[:*
(let [components (not-empty (get groups "" []))]
@@ -257,7 +261,8 @@
:on-group on-group
:do-rename do-rename
:cancel-rename cancel-rename
- :is-local is-local}])])
+ :is-local is-local
+ :num-variants (count-variants (:variant-id component))}])])
(for [[path-item content] groups]
(when-not (empty? path-item)
@@ -278,13 +283,14 @@
:on-ungroup on-ungroup
:on-context-menu on-context-menu
:selected-full selected-full
- :is-local is-local}]))])]))
+ :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]}]
+ on-clear-selection open-status-ref count-variants]}]
(let [input-ref (mf/use-ref nil)
@@ -302,7 +308,6 @@
menu-state (mf/use-state cmm/initial-context-menu-state)
read-only? (mf/use-ctx ctx/workspace-read-only?)
- components-v2 (mf/use-ctx ctx/components-v2)
toggle-list-style (mf/use-ctx cmm/assets-toggle-list-style)
selected (:components selected)
@@ -379,7 +384,7 @@
(swap! state* dissoc :renaming)
(when (not (str/blank? new-name))
(st/emit!
- (dwl/rename-component-and-main-instance current-component-id new-name)))))
+ (dwv/rename-comp-or-variant-and-main current-component-id new-name)))))
on-context-menu
(mf/use-fn
@@ -408,7 +413,7 @@
(filter #(if multi-components?
(contains? selected (:id %))
(= current-component-id (:id %))))
- (map #(dwl/rename-component-and-main-instance
+ (map #(dwv/rename-comp-or-variant-and-main
(:id %)
(cmm/add-group % group-name)))))
(st/emit! (dwu/commit-undo-transaction undo-id)))))
@@ -423,7 +428,7 @@
(run! st/emit!
(->> components
(filter #(str/starts-with? (:path %) path))
- (map #(dwl/rename-component-and-main-instance
+ (map #(dwv/rename-comp-or-variant-and-main
(:id %)
(cmm/rename-group % path last-path)))))
(st/emit! (dwu/commit-undo-transaction undo-id)))))
@@ -454,7 +459,7 @@
(run! st/emit!
(->> components
(filter #(str/starts-with? (:path %) path))
- (map #(dwl/rename-component-and-main-instance (:id %) (cmm/ungroup % path)))))
+ (map #(dwv/rename-comp-or-variant-and-main (:id %) (cmm/ungroup % path)))))
(st/emit! (dwu/commit-undo-transaction undo-id)))))
on-drag-start
@@ -515,7 +520,7 @@
:title (tr "workspace.assets.grid-view")
:id "opt-grid"}]]])
- (when (and components-v2 (not read-only?) is-local)
+ (when (and (not read-only?) is-local)
[:> icon-button* {:variant "ghost"
:aria-label (tr "workspace.assets.components.add-component")
:on-click add-component
@@ -544,7 +549,8 @@
:on-ungroup on-ungroup
:on-context-menu on-context-menu
:selected-full selected-full
- :is-local ^boolean is-local}])
+ :is-local ^boolean is-local
+ :count-variants count-variants}])
[:& cmm/assets-context-menu
{:on-close on-close-menu
@@ -554,9 +560,7 @@
:id "assets-rename-component"
:handler on-rename})
(when (and is-local (not (or multi-assets? read-only? any-variant?)))
- {:name (if components-v2
- (tr "workspace.assets.duplicate-main")
- (tr "workspace.assets.duplicate"))
+ {:name (tr "workspace.assets.duplicate-main")
:id "assets-duplicate-component"
:handler on-duplicate})
@@ -564,12 +568,12 @@
{:name (tr "workspace.assets.delete")
:id "assets-delete-component"
:handler on-delete})
- (when (and is-local (not (or multi-assets? read-only? any-variant?)))
+ (when (and is-local (not (or multi-assets? read-only?)))
{:name (tr "workspace.assets.group")
:id "assets-group-component"
:handler on-group})
- (when (and components-v2 (not multi-assets?))
+ (when (not multi-assets?)
{:name (tr "workspace.shape.menu.show-main")
:id "assets-show-main-component"
:handler on-show-main})]}]]]))
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 9340139021..5b38aab489 100644
--- a/frontend/src/app/main/ui/workspace/sidebar/assets/components.scss
+++ b/frontend/src/app/main/ui/workspace/sidebar/assets/components.scss
@@ -157,6 +157,10 @@
}
}
+.enum-item-with-mark {
+ grid-template-columns: auto 1fr $s-24;
+}
+
.item-name {
@include bodySmallTypography;
@include textEllipsis;
@@ -219,3 +223,26 @@
background-color: var(--assets-item-background-color-drag);
border: $s-2 solid var(--assets-item-border-color-drag);
}
+
+.variant-mark {
+ background-color: var(--color-background-tertiary);
+ border-radius: $br-8;
+}
+
+.variant-mark-cell {
+ position: absolute;
+ right: $s-2;
+ top: $s-2;
+}
+
+.component-icon {
+ @include flexCenter;
+ height: $s-24;
+ width: $s-24;
+ order: 3;
+
+ svg {
+ @extend .button-icon-small;
+ stroke: var(--color-accent-secondary);
+ }
+}
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 76352b18da..8529a65b2d 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
@@ -9,12 +9,12 @@
(:require
[app.common.data :as d]
[app.common.data.macros :as dm]
+ [app.common.files.variant :as cfv]
[app.common.types.components-list :as ctkl]
[app.main.data.event :as ev]
[app.main.data.workspace :as dw]
[app.main.data.workspace.libraries :as dwl]
[app.main.data.workspace.undo :as dwu]
- [app.main.data.workspace.variants :as dwv]
[app.main.refs :as refs]
[app.main.router :as rt]
[app.main.store :as st]
@@ -24,7 +24,6 @@
[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.graphics :refer [graphics-section]]
[app.main.ui.workspace.sidebar.assets.typographies :refer [typographies-section]]
[app.util.dom :as dom]
[app.util.i18n :as i18n :refer [tr]]
@@ -145,11 +144,10 @@
(mf/defc file-library-content*
{::mf/private true}
- [{:keys [file is-local is-loaded open-status-ref on-clear-selection filters colors media typographies components]}]
+ [{:keys [file is-local is-loaded open-status-ref on-clear-selection filters colors typographies components count-variants]}]
(let [open-status (mf/deref open-status-ref)
file-id (:id file)
- project-id (:project-id file)
filters-section (:section filters)
has-filters-term? (not ^boolean (str/empty? (:term filters)))
@@ -165,11 +163,6 @@
(or (pos? (count components))
(not has-filters-term?)))
- show-graphics?
- (and (or (= filters-section "all")
- (= filters-section "graphics"))
- (pos? (count media)))
-
show-colors?
(and (or (= filters-section "all")
(= filters-section "colors"))
@@ -188,9 +181,6 @@
force-open-colors?
(when ^boolean has-filters-term? (> 60 (count colors)))
- force-open-graphics?
- (when ^boolean has-filters-term? (> 60 (count media)))
-
force-open-typographies?
(when ^boolean has-filters-term? (> 60 (count typographies)))
@@ -214,9 +204,6 @@
on-component-click
(mf/use-fn (mf/deps on-asset-click) (partial on-asset-click :components))
- on-graphics-click
- (mf/use-fn (mf/deps on-asset-click) (partial on-asset-click :graphics))
-
on-colors-click
(mf/use-fn (mf/deps on-asset-click) (partial on-asset-click :colors))
@@ -263,24 +250,8 @@
:selected selected
:on-asset-click on-component-click
:on-assets-delete on-assets-delete
- :on-clear-selection on-clear-selection}])
-
- (when ^boolean show-graphics?
- [:& graphics-section
- {:file-id file-id
- :project-id project-id
- :local? is-local
- :objects media
- :listing-thumbs? listing-thumbs?
- :open? (or ^boolean force-open-graphics?
- ^boolean (get open-status :graphics false))
- :force-open? force-open-graphics?
- :open-status-ref open-status-ref
- :reverse-sort? reverse-sort?
- :selected selected
- :on-asset-click on-graphics-click
- :on-assets-delete on-assets-delete
- :on-clear-selection on-clear-selection}])
+ :on-clear-selection on-clear-selection
+ :count-variants count-variants}])
(when ^boolean show-colors?
[:& colors-section
@@ -314,7 +285,6 @@
:on-clear-selection on-clear-selection}])
(when (and (not ^boolean show-components?)
- (not ^boolean show-graphics?)
(not ^boolean show-colors?)
(not ^boolean show-typography?))
[:div {:class (stl/css :asset-title)}
@@ -332,7 +302,6 @@
library (use-library-ref file-id)
colors (:colors library)
- media (:media library)
typographies (:typographies library)
filters-term (:term filters)
@@ -347,12 +316,7 @@
(mf/with-memo [filters library]
(as-> (into [] (ctkl/components-seq library)) $
(cmm/apply-filters $ filters)
- (remove #(dwv/is-secondary-variant? % library) $)))
-
- filtered-media
- (mf/with-memo [filters media]
- (-> (vals media)
- (cmm/apply-filters filters)))
+ (remove #(cfv/is-secondary-variant? % library) $)))
filtered-typographies
(mf/with-memo [filters typographies]
@@ -371,7 +335,6 @@
(and (not (str/blank? filters-term))
(or (> 60 (count filtered-colors))
(> 60 (count filtered-components))
- (> 60 (count filtered-media))
(> 60 (count filtered-typographies))))
open?
@@ -385,7 +348,15 @@
(mf/use-fn
(mf/deps file-id)
(fn []
- (st/emit! (dw/unselect-all-assets file-id))))]
+ (st/emit! (dw/unselect-all-assets file-id))))
+
+ count-variants
+ (mf/use-fn
+ (mf/deps library)
+ (fn [variant-id]
+ (->> (ctkl/components-seq library)
+ (filterv #(= variant-id (:variant-id %)))
+ count)))]
[:div {:class (stl/css :tool-window)
:on-context-menu dom/prevent-default
@@ -406,7 +377,7 @@
:filters filters
:colors filtered-colors
:components filtered-components
- :media filtered-media
:typographies filtered-typographies
:on-clear-selection unselect-all
- :open-status-ref open-status-ref}])]))
+ :open-status-ref open-status-ref
+ :count-variants count-variants}])]))
diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets/graphics.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets/graphics.cljs
deleted file mode 100644
index 15d4a79db6..0000000000
--- a/frontend/src/app/main/ui/workspace/sidebar/assets/graphics.cljs
+++ /dev/null
@@ -1,432 +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.main.ui.workspace.sidebar.assets.graphics
- (:require-macros [app.main.style :as stl])
- (:require
- [app.common.data :as d]
- [app.common.data.macros :as dm]
- [app.common.files.helpers :as cfh]
- [app.common.media :as cm]
- [app.config :as cf]
- [app.main.data.event :as ev]
- [app.main.data.modal :as modal]
- [app.main.data.workspace :as dw]
- [app.main.data.workspace.libraries :as dwl]
- [app.main.data.workspace.media :as dwm]
- [app.main.data.workspace.undo :as dwu]
- [app.main.store :as st]
- [app.main.ui.components.editable-label :refer [editable-label]]
- [app.main.ui.components.file-uploader :refer [file-uploader]]
- [app.main.ui.context :as ctx]
- [app.main.ui.hooks :as h]
- [app.main.ui.icons :as i]
- [app.main.ui.workspace.sidebar.assets.common :as cmm]
- [app.main.ui.workspace.sidebar.assets.groups :as grp]
- [app.util.dom :as dom]
- [app.util.dom.dnd :as dnd]
- [app.util.i18n :as i18n :refer [tr]]
- [cuerdas.core :as str]
- [okulary.core :as l]
- [potok.v2.core :as ptk]
- [rumext.v2 :as mf]))
-
-(mf/defc graphics-item
- [{:keys [object renaming listing-thumbs? selected-objects file-id
- on-asset-click on-context-menu on-drag-start do-rename cancel-rename
- selected-full selected-graphics-paths]}]
- (let [item-ref (mf/use-ref)
- visible? (h/use-visible item-ref :once? true)
- object-id (:id object)
-
- dragging* (mf/use-state false)
- dragging? (deref dragging*)
-
- read-only? (mf/use-ctx ctx/workspace-read-only?)
-
- on-drop
- (mf/use-fn
- (mf/deps object dragging* selected-objects selected-full selected-graphics-paths)
- (fn [event]
- (cmm/on-drop-asset event object dragging* selected-objects selected-full
- selected-graphics-paths dwl/rename-media)))
-
- on-drag-enter
- (mf/use-fn
- (mf/deps object dragging* selected-objects selected-graphics-paths)
- (fn [event]
- (cmm/on-drag-enter-asset event object dragging* selected-objects selected-graphics-paths)))
-
- on-drag-leave
- (mf/use-fn
- (mf/deps dragging*)
- (fn [event]
- (cmm/on-drag-leave-asset event dragging*)))
-
- on-grahic-drag-start
- (mf/use-fn
- (mf/deps object file-id selected-objects item-ref on-drag-start read-only?)
- (fn [event]
- (if read-only?
- (dom/prevent-default event)
- (cmm/on-asset-drag-start event file-id object selected-objects item-ref :graphics on-drag-start))))
-
- on-context-menu
- (mf/use-fn
- (mf/deps object-id)
- (partial on-context-menu object-id))
-
- on-asset-click
- (mf/use-fn
- (mf/deps object-id on-asset-click)
- (fn [event]
- (on-asset-click event object-id)))]
-
- [:div {:ref item-ref
- :class-name (stl/css-case
- :selected (contains? selected-objects object-id)
- :grid-cell listing-thumbs?
- :enum-item (not listing-thumbs?))
- :draggable (not read-only?)
- :on-click on-asset-click
- :on-context-menu on-context-menu
- :on-drag-start on-grahic-drag-start
- :on-drag-enter on-drag-enter
- :on-drag-leave on-drag-leave
- :on-drag-over dom/prevent-default
- :on-drop on-drop}
-
- (when visible?
- [:*
- [:img {:src (when visible? (cf/resolve-file-media object true))
- :class (stl/css :graphic-image)
- :draggable false}] ;; Also need to add css pointer-events: none
-
- (let [renaming? (= renaming (:id object))]
- [:*
- [:& editable-label
- {:class (stl/css-case
- :cell-name listing-thumbs?
- :item-name (not listing-thumbs?)
- :editing renaming?)
- :value (cfh/merge-path-item (:path object) (:name object))
- :tooltip (cfh/merge-path-item (:path object) (:name object))
- :display-value (:name object)
- :editing renaming?
- :disable-dbl-click true
- :on-change do-rename
- :on-cancel cancel-rename}]
-
- (when ^boolean dragging?
- [:div {:class (stl/css :dragging)}])])])]))
-
-(mf/defc graphics-group
- [{:keys [file-id prefix groups open-groups force-open? renaming listing-thumbs? selected-objects on-asset-click
- on-drag-start do-rename cancel-rename on-rename-group on-ungroup
- on-context-menu selected-full]}]
- (let [group-open? (get open-groups prefix true)
- dragging* (mf/use-state false)
- dragging? (deref dragging*)
-
- selected-paths
- (mf/with-memo [selected-full]
- (into #{}
- (comp (map :path) (d/nilv ""))
- selected-full))
-
- on-drag-enter
- (mf/use-fn
- (mf/deps dragging* prefix selected-paths)
- (fn [event]
- (cmm/on-drag-enter-asset-group event dragging* prefix selected-paths)))
-
- on-drag-leave
- (mf/use-fn
- (mf/deps dragging*)
- (fn [event]
- (cmm/on-drag-leave-asset event dragging*)))
-
- on-drop
- (mf/use-fn
- (mf/deps dragging* prefix selected-paths selected-full)
- (fn [event]
- (cmm/on-drop-asset-group event dragging* prefix selected-paths selected-full dwl/rename-media)))]
- [:div {:class (stl/css :graphics-group)
- :on-drag-enter on-drag-enter
- :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 :graphics
- :path prefix
- :group-open? group-open?
- :on-rename on-rename-group
- :on-ungroup on-ungroup}]
- (when group-open?
- [:*
- (let [objects (get groups "" [])]
- [:div {:class-name (stl/css-case
- :asset-grid listing-thumbs?
- :asset-enum (not listing-thumbs?)
- :drop-space (and
- (empty? objects)
- (some? groups)
- (not dragging?)))
- :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"])
-
- (when (and (empty? objects)
- (some? groups))
- [:div {:class (stl/css :drop-space)}])
-
- (for [object objects]
- [:& graphics-item
- {:key (dm/str "object-" (:id object))
- :file-id file-id
- :object object
- :renaming renaming
- :listing-thumbs? listing-thumbs?
- :selected-objects selected-objects
- :on-asset-click on-asset-click
- :on-context-menu on-context-menu
- :on-drag-start on-drag-start
- :do-rename do-rename
- :cancel-rename cancel-rename
- :selected-full selected-full
- :selected-paths selected-paths}])])
- (for [[path-item content] groups]
- (when-not (empty? path-item)
- [:& graphics-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-objects selected-objects
- :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
- :selected-full selected-full
- :selected-paths selected-paths}]))])]))
-
-(mf/defc graphics-section
- {::mf/wrap-props false}
- [{:keys [file-id project-id local? objects listing-thumbs? open? force-open? open-status-ref selected reverse-sort?
- on-asset-click on-assets-delete on-clear-selection]}]
- (let [input-ref (mf/use-ref nil)
- state (mf/use-state {:renaming nil :object-id nil})
-
- menu-state (mf/use-state cmm/initial-context-menu-state)
- read-only? (mf/use-ctx ctx/workspace-read-only?)
-
- open-groups-ref (mf/with-memo [open-status-ref]
- (-> (l/in [:groups :graphics])
- (l/derived open-status-ref)))
- open-groups (mf/deref open-groups-ref)
-
- selected (:graphics selected)
- selected-full (into #{} (filter #(contains? selected (:id %))) objects)
- multi-objects? (> (count selected) 1)
- multi-assets? (or (seq (:components selected))
- (seq (:colors selected))
- (seq (:typographies selected)))
-
- objects (mf/with-memo [objects]
- (mapv dwl/extract-path-if-missing objects))
-
- groups (mf/with-memo [objects reverse-sort?]
- (grp/group-assets objects reverse-sort?))
-
- components-v2 (mf/use-ctx ctx/components-v2)
- team-id (mf/use-ctx ctx/current-team-id)
-
- add-graphic
- (mf/use-fn
- (fn []
- (st/emit! (dw/set-assets-section-open file-id :graphics true))
- (dom/click (mf/ref-val input-ref))))
-
- on-file-selected
- (mf/use-fn
- (mf/deps file-id project-id team-id)
- (fn [blobs]
- (let [params {:file-id file-id
- :blobs (seq blobs)}]
- (st/emit! (dwm/upload-media-asset params)
- (ptk/event ::ev/event {::ev/name "add-asset-to-library"
- :asset-type "graphics"
- :file-id file-id
- :project-id project-id
- :team-id team-id})))))
- on-delete
- (mf/use-fn
- (mf/deps @state multi-objects? multi-assets?)
- (fn []
- (if (or multi-objects? multi-assets?)
- (on-assets-delete)
- (st/emit! (dwl/delete-media {:id (:object-id @state)})))))
-
- on-rename
- (mf/use-fn
- (fn []
- (swap! state (fn [state]
- (assoc state :renaming (:object-id state))))))
- cancel-rename
- (mf/use-fn
- (fn []
- (swap! state assoc :renaming nil)))
-
- do-rename
- (mf/use-fn
- (mf/deps @state)
- (fn [new-name]
- (st/emit! (dwl/rename-media (:renaming @state) new-name))
- (swap! state assoc :renaming nil)))
-
- on-context-menu
- (mf/use-fn
- (mf/deps selected on-clear-selection read-only?)
- (fn [object-id event]
- (dom/prevent-default event)
- (let [pos (dom/get-client-position event)]
- (when (and local? (not read-only?))
- (when-not (contains? selected object-id)
- (on-clear-selection))
- (swap! state assoc :object-id object-id)
- (swap! menu-state cmm/open-context-menu pos)))))
-
- on-close-menu
- (mf/use-fn
- (fn []
- (swap! menu-state cmm/close-context-menu)))
-
- create-group
- (mf/use-fn
- (mf/deps objects selected on-clear-selection (:object-id @state))
- (fn [group-name]
- (on-clear-selection)
- (let [undo-id (js/Symbol)]
- (st/emit! (dwu/start-undo-transaction undo-id))
- (run! st/emit!
- (->> objects
- (filter #(if multi-objects?
- (contains? selected (:id %))
- (= (:object-id @state) (:id %))))
- (map #(dwl/rename-media (:id %) (cmm/add-group % group-name)))))
- (st/emit! (dwu/commit-undo-transaction undo-id)))))
-
- rename-group
- (mf/use-fn
- (mf/deps objects)
- (fn [path last-path]
- (on-clear-selection)
- (let [undo-id (js/Symbol)]
- (st/emit! (dwu/start-undo-transaction undo-id))
- (run! st/emit!
- (->> objects
- (filter #(str/starts-with? (:path %) path))
- (map #(dwl/rename-media (:id %) (cmm/rename-group % path last-path)))))
- (st/emit! (dwu/commit-undo-transaction undo-id)))))
-
- on-group
- (mf/use-fn
- (mf/deps objects selected create-group)
- (fn [event]
- (dom/stop-propagation event)
- (modal/show! :name-group-dialog {:accept create-group})))
-
- on-rename-group
- (mf/use-fn
- (mf/deps objects)
- (fn [event path last-path]
- (dom/stop-propagation event)
- (modal/show! :name-group-dialog {:path path
- :last-path last-path
- :accept rename-group})))
- on-ungroup
- (mf/use-fn
- (mf/deps objects)
- (fn [path]
- (on-clear-selection)
- (let [undo-id (js/Symbol)]
- (st/emit! (dwu/start-undo-transaction undo-id))
- (run! st/emit!
- (->> objects
- (filter #(str/starts-with? (:path %) path))
- (map #(dwl/rename-media (:id %) (cmm/ungroup % path)))))
- (st/emit! (dwu/commit-undo-transaction undo-id)))))
-
- on-drag-start
- (mf/use-fn
- (fn [{:keys [name id mtype]} event]
- (dnd/set-data! event "text/asset-id" (str id))
- (dnd/set-data! event "text/asset-name" name)
- (dnd/set-data! event "text/asset-type" mtype)
- (dnd/set-allowed-effect! event "move")))
-
- on-asset-click
- (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.graphics")
- :section :graphics
- :assets-count (count objects)
- :open? open?}
- (when local?
- [:& cmm/asset-section-block {:role :title-button}
- (when (and (not components-v2) (not read-only?))
- [:button {:class (stl/css :assets-btn)
- :on-click add-graphic}
- i/add
- [:& file-uploader {:accept cm/str-image-types
- :multi true
- :ref input-ref
- :on-selected on-file-selected}]])])
-
- [:& cmm/asset-section-block {:role :content}
- [:& graphics-group {:file-id file-id
- :prefix ""
- :groups groups
- :open-groups open-groups
- :force-open? force-open?
- :renaming (:renaming @state)
- :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
- :selected-full selected-full}]
- (when local?
- [:& cmm/assets-context-menu
- {:on-close on-close-menu
- :state @menu-state
- :options [(when-not (or multi-objects? multi-assets?)
- {:name (tr "workspace.assets.rename")
- :id "assets-rename-graphics"
- :handler on-rename})
- {:name (tr "workspace.assets.delete")
- :id "assets-delete-graphics"
- :handler on-delete}
- (when-not multi-assets?
- {:name (tr "workspace.assets.group")
- :id "assets-group-graphics"
- :handler on-group})]}])]]))
diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets/graphics.scss b/frontend/src/app/main/ui/workspace/sidebar/assets/graphics.scss
deleted file mode 100644
index fc20278884..0000000000
--- a/frontend/src/app/main/ui/workspace/sidebar/assets/graphics.scss
+++ /dev/null
@@ -1,188 +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
-
-@import "refactor/common-refactor.scss";
-
-.graphics-group {
- .drop-space {
- height: $s-12;
- }
- .asset-grid {
- display: grid;
- grid-template-columns: repeat(4, 1fr);
- gap: $s-4;
- margin-left: $s-8;
- .grid-cell {
- @include flexCenter;
- position: relative;
- padding: $s-8;
- border: $s-2 solid transparent;
- border-radius: $br-8;
- aspect-ratio: 1/1;
- background-color: var(--color-foreground-secondary);
- overflow: hidden;
- cursor: pointer;
- img {
- height: auto;
- width: auto;
- max-height: 100%;
- max-width: 100%;
- pointer-events: none;
- }
- svg {
- height: 10vh;
- }
- .cell-name {
- @include bodySmallTypography;
- @include textEllipsis;
- display: none;
- position: absolute;
- left: 0;
- bottom: 0;
- width: 100%;
- padding: $s-2;
-
- &.editing {
- display: block;
- }
-
- .editable-label-input {
- height: unset;
- width: 100%;
- padding: $s-2;
- margin: 0;
- }
-
- .editable-label-close {
- display: none;
- }
- }
-
- &:hover {
- background-color: var(--assets-item-background-color-hover);
- .cell-name {
- display: block;
- color: var(--assets-item-name-foreground-color-hover);
- background: linear-gradient(to top, rgba(52, 57, 59, 1) 0%, rgba(52, 57, 59, 0) 100%);
- }
- }
-
- &.selected {
- border: $s-1 solid var(--assets-item-border-color);
- }
-
- .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);
- }
- }
- }
- .asset-enum {
- padding-bottom: $s-4;
- .enum-item {
- position: relative;
- display: flex;
- align-items: center;
- height: $s-36;
- margin-bottom: $s-4;
- padding: $s-2;
- border-radius: $br-8;
- background-color: var(--assets-item-background-color);
- cursor: pointer;
-
- svg,
- img {
- @include flexCenter;
- padding: $s-2;
- height: $s-32;
- width: $s-32;
- border-radius: $br-6;
- background-color: var(--assets-component-background-color);
- }
-
- .item-name {
- @include bodySmallTypography;
- @include textEllipsis;
- padding-left: $s-8;
- color: var(--assets-item-name-foreground-color);
-
- &.editing {
- display: flex;
- align-items: center;
-
- .editable-label-input {
- height: $s-24;
- }
-
- .editable-label-close {
- display: none;
- }
- }
- }
- &:hover {
- background-color: var(--assets-item-background-color-hover);
- .item-name {
- color: var(--assets-item-name-foreground-color-hover);
- }
- }
- &.selected {
- border: $s-1 solid var(--assets-item-border-color);
- }
- }
- }
- .grid-placeholder {
- height: $s-2;
- background-color: var(--color-accent-primary);
- margin-bottom: $s-2;
- }
-}
-.listing-options {
- display: flex;
- align-items: center;
-
- .listing-option-btn {
- @include flexCenter;
- cursor: pointer;
-
- &.first {
- margin-left: auto;
- }
-
- svg {
- height: $s-16;
- width: $s-16;
- }
- }
-}
-.add-component {
- @extend .button-tertiary;
- height: $s-32;
- width: $s-28;
- margin-left: $s-2;
- border-radius: $br-8;
- svg {
- @extend .button-icon;
- stroke: var(--icon-foreground);
- }
-}
-
-.assets-btn {
- @extend .button-tertiary;
- height: $s-32;
- width: calc($s-24 + $s-4);
- padding: 0;
- border-radius: $br-8;
- svg {
- @extend .button-icon;
- stroke: var(--icon-foreground);
- }
-}
diff --git a/frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs b/frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs
index 81d1ef59d6..8ab6db2d8a 100644
--- a/frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs
+++ b/frontend/src/app/main/ui/workspace/sidebar/layer_item.cljs
@@ -11,6 +11,7 @@
[app.common.data.macros :as dm]
[app.common.files.helpers :as cfh]
[app.common.types.component :as ctk]
+ [app.common.types.components-list :as ctkl]
[app.common.types.container :as ctn]
[app.common.types.shape.layout :as ctl]
[app.common.uuid :as uuid]
@@ -23,7 +24,7 @@
[app.main.ui.context :as ctx]
[app.main.ui.hooks :as hooks]
[app.main.ui.icons :as i]
- [app.main.ui.workspace.sidebar.layer-name :refer [layer-name]]
+ [app.main.ui.workspace.sidebar.layer-name :refer [layer-name*]]
[app.util.dom :as dom]
[app.util.i18n :refer [tr]]
[app.util.keyboard :as kbd]
@@ -44,20 +45,26 @@
on-toggle-collapse on-enable-drag on-disable-drag on-toggle-visibility on-toggle-blocking]}
dref]
- (let [id (:id item)
- name (:name item)
- blocked? (:blocked item)
- hidden? (:hidden item)
- has-shapes? (-> item :shapes seq boolean)
- touched? (-> item :touched seq boolean)
- parent-board? (and (cfh/frame-shape? item)
- (= uuid/zero (:parent-id item)))
- absolute? (ctl/item-absolute? item)
- components-v2 (mf/use-ctx ctx/components-v2)
- main-instance? (or (not components-v2) (:main-instance item))
- variants? (features/use-feature "variants/v1")
- is-variant? (when variants? (ctk/is-variant? item))
- variant-name (when is-variant? (:variant-name item))]
+ (let [id (:id item)
+ name (:name item)
+ blocked? (:blocked item)
+ hidden? (:hidden item)
+ has-shapes? (-> item :shapes seq boolean)
+ touched? (-> item :touched seq boolean)
+ parent-board? (and (cfh/frame-shape? item)
+ (= uuid/zero (:parent-id item)))
+ absolute? (ctl/item-absolute? item)
+ main-instance? (:main-instance item)
+
+ variants? (features/use-feature "variants/v1")
+ is-variant? (when variants? (ctk/is-variant? item))
+ is-variant-container? (when variants? (ctk/is-variant-container? item))
+ variant-id (when is-variant? (:variant-id item))
+ variant-name (when is-variant? (:variant-name item))
+
+ data (deref refs/workspace-data)
+ component (ctkl/get-component data (:component-id item))
+ variant-properties (:variant-properties component)]
[:*
[:div {:id id
:ref dref
@@ -72,7 +79,7 @@
:selected selected?
:type-frame (cfh/frame-shape? item)
:type-bool (cfh/bool-shape? item)
- :type-comp component-tree?
+ :type-comp (or component-tree? is-variant-container?)
:hidden hidden?
:dnd-over dnd-over?
:dnd-over-top dnd-over-top?
@@ -121,21 +128,24 @@
{:shape item
:main-instance? main-instance?}]]])
- [:& layer-name {:ref name-ref
- :shape-id id
- :shape-name name
- :is-shape-touched touched?
- :disabled-double-click read-only?
- :on-start-edit on-disable-drag
- :on-stop-edit on-enable-drag
- :depth depth
- :is-blocked blocked?
- :parent-size parent-size
- :is-selected selected?
- :type-comp component-tree?
- :type-frame (cfh/frame-shape? item)
- :variant-name variant-name
- :is-hidden hidden?}]
+ [:> layer-name* {:ref name-ref
+ :shape-id id
+ :shape-name name
+ :is-shape-touched touched?
+ :disabled-double-click read-only?
+ :on-start-edit on-disable-drag
+ :on-stop-edit on-enable-drag
+ :depth depth
+ :is-blocked blocked?
+ :parent-size parent-size
+ :is-selected selected?
+ :type-comp (or component-tree? is-variant-container?)
+ :type-frame (cfh/frame-shape? item)
+ :variant-id variant-id
+ :variant-name variant-name
+ :variant-properties variant-properties
+ :component-id (:id component)
+ :is-hidden hidden?}]
(when (not read-only?)
[:div {:class (stl/css-case
@@ -345,18 +355,14 @@
first-child-node (dom/get-first-child parent-node)
subid
- (when (and single? selected?)
- (let [scroll-to @scroll-to-middle?]
- (ts/schedule
- 100
- #(when (and node scroll-node)
- (let [scroll-distance-ratio (dom/get-scroll-distance-ratio node scroll-node)
- scroll-behavior (if (> scroll-distance-ratio 1) "instant" "smooth")]
- (if scroll-to
- (dom/scroll-into-view! first-child-node #js {:block "center" :behavior scroll-behavior :inline "start"})
- (do
- (dom/scroll-into-view-if-needed! first-child-node #js {:block "center" :behavior scroll-behavior :inline "start"})
- (reset! scroll-to-middle? true))))))))]
+ (when (and single? selected? @scroll-to-middle?)
+ (ts/schedule
+ 100
+ #(when (and node scroll-node)
+ (let [scroll-distance-ratio (dom/get-scroll-distance-ratio node scroll-node)
+ scroll-behavior (if (> scroll-distance-ratio 1) "instant" "smooth")]
+ (dom/scroll-into-view-if-needed! first-child-node #js {:block "center" :behavior scroll-behavior :inline "start"})
+ (reset! scroll-to-middle? true)))))]
#(when (some? subid)
(rx/dispose! subid))))
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 0cb4993598..3b83160f0c 100644
--- a/frontend/src/app/main/ui/workspace/sidebar/layer_item.scss
+++ b/frontend/src/app/main/ui/workspace/sidebar/layer_item.scss
@@ -91,6 +91,9 @@
.element-actions {
display: none;
height: 100%;
+ display: flex;
+ align-items: end;
+
&.selected {
display: flex;
}
diff --git a/frontend/src/app/main/ui/workspace/sidebar/layer_name.cljs b/frontend/src/app/main/ui/workspace/sidebar/layer_name.cljs
index 41d8240f4f..6a871af6f6 100644
--- a/frontend/src/app/main/ui/workspace/sidebar/layer_name.cljs
+++ b/frontend/src/app/main/ui/workspace/sidebar/layer_name.cljs
@@ -9,7 +9,9 @@
(:require
[app.common.data :as d]
[app.common.data.macros :as dm]
+ [app.common.types.variant :as ctv]
[app.main.data.workspace :as dw]
+ [app.main.data.workspace.variants :as dwv]
[app.main.store :as st]
[app.util.debug :as dbg]
[app.util.dom :as dom]
@@ -24,12 +26,13 @@
(-> (l/in [:workspace-local :shape-for-rename])
(l/derived st/state)))
-(mf/defc layer-name
+(mf/defc layer-name*
{::mf/wrap-props false
::mf/forward-ref true}
[{:keys [shape-id shape-name is-shape-touched disabled-double-click
on-start-edit on-stop-edit depth parent-size is-selected
- type-comp type-frame variant-name is-hidden is-blocked]} external-ref]
+ type-comp type-frame variant-id variant-name variant-properties
+ component-id is-hidden is-blocked]} external-ref]
(let [edition* (mf/use-state false)
edition? (deref edition*)
@@ -39,6 +42,9 @@
shape-for-rename (mf/deref lens:shape-for-rename)
shape-name (d/nilv variant-name shape-name)
+ default-value (if variant-id
+ (ctv/properties-map-to-string variant-properties)
+ shape-name)
has-path? (str/includes? shape-name "/")
@@ -54,13 +60,17 @@
accept-edit
(mf/use-fn
- (mf/deps shape-id on-stop-edit)
+ (mf/deps shape-id on-stop-edit component-id variant-id variant-name variant-properties)
(fn []
(let [name-input (mf/ref-val ref)
name (str/trim (dom/get-value name-input))]
(on-stop-edit)
(reset! edition* false)
- (st/emit! (dw/end-rename-shape shape-id name)))))
+ (if variant-name
+ (let [valid? (ctv/valid-properties-string? name)
+ props (if valid? (ctv/properties-string-to-map name) {})]
+ (st/emit! (dwv/update-properties-names-and-values component-id variant-id variant-properties props)))
+ (st/emit! (dw/end-rename-shape shape-id name))))))
cancel-edit
(mf/use-fn
@@ -92,14 +102,15 @@
(if ^boolean edition?
[:input
{:class (stl/css :element-name
- :element-name-input)
+ :element-name-input
+ :selected is-selected)
:style {"--depth" depth "--parent-size" parent-size}
:type "text"
:ref ref
:on-blur accept-edit
:on-key-down on-key-down
:auto-focus true
- :default-value (d/nilv shape-name "")}]
+ :default-value (d/nilv default-value "")}]
[:*
[:span
{:class (stl/css-case
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 c9fbf235bc..a4fb0ec05d 100644
--- a/frontend/src/app/main/ui/workspace/sidebar/layer_name.scss
+++ b/frontend/src/app/main/ui/workspace/sidebar/layer_name.scss
@@ -11,6 +11,7 @@
@include bodySmallTypography;
flex-grow: 1;
color: var(--context-hover-color, var(--layer-row-foreground-color));
+
&.selected {
color: var(--layer-row-foreground-color-selected);
}
@@ -25,6 +26,7 @@
opacity: var(--context-hover-opacity, $op-7);
}
}
+
.element-name-input {
@include textEllipsis;
@include bodySmallTypography;
@@ -37,7 +39,12 @@
border-radius: $br-8;
border: $s-1 solid var(--input-border-color-focus);
color: var(--layer-row-foreground-color);
+
+ &.selected {
+ min-width: $s-88;
+ }
}
+
.element-name-touched {
color: var(--layer-row-component-foreground-color);
}
diff --git a/frontend/src/app/main/ui/workspace/sidebar/layers.cljs b/frontend/src/app/main/ui/workspace/sidebar/layers.cljs
index b242a03fb7..a1a88c05dd 100644
--- a/frontend/src/app/main/ui/workspace/sidebar/layers.cljs
+++ b/frontend/src/app/main/ui/workspace/sidebar/layers.cljs
@@ -145,6 +145,7 @@
(conj :rect :circle :path :bool))]
(or (= uuid/zero id)
(and (or (str/includes? (str/lower (:name shape)) (str/lower search))
+ (str/includes? (str/lower (:variant-name shape)) (str/lower search))
;; Only for local development we allow search for ids. Otherwise will be hard
;; search for numbers or single letter shape names (ie: "A")
(and *assert*
diff --git a/frontend/src/app/main/ui/workspace/sidebar/layers.scss b/frontend/src/app/main/ui/workspace/sidebar/layers.scss
index bdcdf9168a..7d1038beed 100644
--- a/frontend/src/app/main/ui/workspace/sidebar/layers.scss
+++ b/frontend/src/app/main/ui/workspace/sidebar/layers.scss
@@ -226,11 +226,13 @@
display: flex;
flex-direction: column;
height: calc(100vh - var(--calculated-height));
- width: 100%;
- overflow-x: hidden;
+ width: calc(var(--width) + var(--depth) * var(--layer-indentation-size));
+ overflow-x: scroll;
overflow-y: overlay;
scrollbar-gutter: stable;
+
.element-list {
- width: 100%;
+ width: var(--width);
+ display: grid;
}
}
diff --git a/frontend/src/app/main/ui/workspace/sidebar/options.scss b/frontend/src/app/main/ui/workspace/sidebar/options.scss
index 8548dc80fc..5218381871 100644
--- a/frontend/src/app/main/ui/workspace/sidebar/options.scss
+++ b/frontend/src/app/main/ui/workspace/sidebar/options.scss
@@ -25,8 +25,8 @@
}
.element-options {
- display: grid;
- grid-auto-rows: min-content;
+ display: flex;
+ flex-direction: column;
gap: $s-8;
width: 100%;
height: calc(100vh - $s-80);
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 d9661d7d99..bfa26a0209 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
@@ -9,9 +9,10 @@
(:require
[app.common.data.macros :as dm]
[app.common.files.helpers :as cfh]
- [app.common.logic.variants :as clv]
+ [app.common.files.variant :as cfv]
[app.common.types.component :as ctk]
[app.common.types.file :as ctf]
+ [app.common.types.variant :as ctv]
[app.main.data.helpers :as dsh]
[app.main.data.modal :as modal]
[app.main.data.workspace :as dw]
@@ -232,77 +233,111 @@
(when (or editing? creating?)
[:div {:class (stl/css :counter)} (str size "/300")])]])))
-
-(mf/defc component-variant*
- [{:keys [component shape data page-id]}]
- (let [id-component (:id component)
- properties (:variant-properties component)
+(mf/defc component-variant-main-instance*
+ [{:keys [components data]}]
+ (let [component (first components)
variant-id (:variant-id component)
- objects (-> (dsh/get-page data page-id)
+ objects (-> (dsh/get-page data (:main-instance-page component))
(get :objects))
- related-components (dwv/find-related-components data objects variant-id)
-
- flat-comps ;; Get a list like [{:id 0 :prop1 "v1" :prop2 "v2"} {:id 1, :prop1 "v3" :prop2 "v4"}]
- (map (fn [{:keys [id variant-properties]}]
- (into {:id id}
- (map (fn [{:keys [name value]}] [(keyword name) value])
- variant-properties)))
- related-components)
+ properties-map (mapv :variant-properties components)
+ component-ids (mapv :id components)
+ properties (if (> (count component-ids) 1)
+ (ctv/compare-properties properties-map false)
+ (first properties-map))
+ prop-vals (mf/with-memo [data objects variant-id]
+ (cfv/extract-properties-values data objects variant-id))
get-options
(mf/use-fn
- (mf/deps related-components)
+ (mf/deps prop-vals)
(fn [prop-name]
- (->> related-components
- (mapcat (fn [component]
- (map :value (filter #(= (:name %) prop-name)
- (:variant-properties component)))))
- distinct
- (map #(if (str/empty? %) "--" %))
+ (->> (filter #(= (:name %) prop-name) prop-vals)
+ first
+ :value
(map (fn [val] {:label val :id val})))))
- filter-matching
- (mf/use-fn
- (mf/deps flat-comps)
- (fn [id exclude-key]
- (let [reference-item (first (filter #(= (:id %) id) flat-comps))
- reference-values (dissoc reference-item :id exclude-key)]
-
- (->> flat-comps
- (filter (fn [item]
- (= (dissoc item :id exclude-key) reference-values)))
- (map (fn [item] {:label (get item exclude-key) :value (:id item)}))))))
-
-
change-property-value
(mf/use-fn
- (mf/deps id-component)
+ (mf/deps component-ids)
(fn [pos value]
- (st/emit! (dwv/update-property-value id-component pos value))))
+ (doseq [id component-ids]
+ (st/emit! (dwv/update-property-value id pos value)))))
+
+ update-property-name
+ (mf/use-fn
+ (mf/deps variant-id)
+ (fn [event]
+ (let [value (dom/get-target-val event)
+ pos (-> (dom/get-current-target event)
+ (dom/get-data "position")
+ int)]
+ (st/emit! (dwv/update-property-name variant-id pos value)))))]
+
+ [:*
+ (for [[pos prop] (map vector (range) properties)]
+ [:div {:key (str variant-id "-" pos) :class (stl/css :variant-property-container)}
+ [:*
+ [:div {:class (stl/css :variant-property-name-wrapper)}
+ [:> input-with-values* {:name (:name prop)
+ :data-position pos
+ :on-blur update-property-name}]]
+
+ (let [mixed-value? (= (:value prop) false)
+ empty-value? (str/empty? (:value prop))]
+ [:> combobox* {:id (str "variant-prop-" variant-id "-" pos)
+ :placeholder (if mixed-value? (tr "settings.multiple") "")
+ :default-selected (cond
+ mixed-value? ""
+ empty-value? "--"
+ :else (:value prop))
+ :options (clj->js (get-options (:name prop)))
+ :on-change (partial change-property-value pos)}])]])]))
+
+(mf/defc component-variant*
+ [{:keys [component shape data]}]
+ (let [component-id (:id component)
+ properties (:variant-properties component)
+ variant-id (:variant-id component)
+ objects (-> (dsh/get-page data (:main-instance-page component))
+ (get :objects))
+
+ variant-components (cfv/find-variant-components data objects variant-id)
+
+ prop-vals (mf/with-memo [data objects variant-id]
+ (cfv/extract-properties-values data objects variant-id))
+
+ get-options-vals
+ (mf/use-fn
+ (mf/deps prop-vals)
+ (fn [prop-name]
+ (->> (filter #(= (:name %) prop-name) prop-vals)
+ first
+ :value)))
switch-component
(mf/use-fn
(mf/deps shape)
- (fn [id]
- (st/emit! (dwl/component-swap shape (:component-file shape) id))))]
+ (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-components
+ (remove #(= (:id %) component-id))
+ (filter #(= (dm/get-in % [:variant-properties pos :value]) val)))
+ nearest-comp (apply min-key #(ctv/distance target-props (:variant-properties %)) valid-comps)]
+ (when nearest-comp
+ (st/emit! (dwl/component-swap shape (:component-file shape) (:id nearest-comp))))))))]
+
[:*
(for [[pos prop] (map vector (range) properties)]
-
[:div {:key (str (:id shape) pos) :class (stl/css :variant-property-container)}
- (if (ctk/main-instance? shape)
- [:*
- [:span {:class (stl/css :variant-property-name :variant-property-name-bg)} (:name prop)]
- [:> combobox* {:id (str "variant-prop-" (:id shape) pos)
- :default-selected (if (str/empty? (:value prop)) "--" (:value prop))
- :options (clj->js (get-options (:name prop)))
- :on-change (partial change-property-value pos)}]]
-
- [:*
- [:span {:class (stl/css :variant-property-name)} (:name prop)]
- [:& select {:default-value id-component
- :options (filter-matching id-component (keyword (:name prop)))
- :on-change switch-component}]])])]))
+ [:*
+ [:span {:class (stl/css :variant-property-name)}
+ (:name prop)]
+ [:& select {:default-value (if (str/empty? (:value prop)) "--" (:value prop))
+ :options (clj->js (get-options-vals (:name prop)))
+ :on-change #(switch-component pos %)}]]])]))
(mf/defc component-swap-item
{::mf/props :obj}
@@ -595,11 +630,10 @@
{::mf/props :obj}
[{:keys [shapes swap-opened?]}]
(let [current-file-id (mf/use-ctx ctx/current-file-id)
- current-page-id (mf/use-ctx ctx/current-page-id)
libraries (deref refs/files)
current-file (get libraries current-file-id)
- data (get current-file :data)
+
state* (mf/use-state
#(do {:show-content true
@@ -622,11 +656,17 @@
current-file
libraries
{:include-deleted? true})
-
+ data (dm/get-in libraries [(:component-file shape) :data])
variants? (features/use-feature "variants/v1")
is-variant? (when variants? (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)
+
toggle-content
(mf/use-fn #(swap! state* update :show-content not))
@@ -664,7 +704,7 @@
(fn []
(swap! state* update :render inc)))
- menu-entries (cmm/generate-components-menu-entries shapes true)
+ menu-entries (cmm/generate-components-menu-entries shapes)
show-menu? (seq menu-entries)
path (->> component (:path) (cfh/split-path) (cfh/join-path-with-dot))]
@@ -708,7 +748,7 @@
[:div {:class (stl/css :name-wrapper)}
[:div {:class (stl/css :component-name)}
[:span {:class (stl/css :component-name-inside)}
- (if multi
+ (if (and multi (not same-variant?))
(tr "settings.multiple")
(cfh/last-path shape-name))]]
@@ -734,8 +774,14 @@
(when (and (not swap-opened?) (not multi))
[:& component-annotation {:id id :shape shape :component component :rerender-fn rerender-fn}])
- (when (and is-variant? (not swap-opened?) (not multi))
- [:> component-variant* {:component component :shape shape :data data :page-id current-page-id}])
+ (when (and is-variant? (not main-instance?) (not swap-opened?) (not multi))
+ [:> component-variant* {:component component
+ :shape shape
+ :data data}])
+
+ (when (and is-variant? main-instance? same-variant? (not swap-opened?))
+ [:> component-variant-main-instance* {:components components
+ :data data}])
(when (dbg/enabled? :display-touched)
[:div ":touched " (str (:touched shape))])])])))
@@ -760,7 +806,7 @@
variant-id (:variant-id first-variant)
properties (mf/with-memo [data objects variant-id]
- (clv/extract-properties-values data objects (:id shape)))
+ (cfv/extract-properties-values data objects (:id shape)))
menu-open* (mf/use-state false)
menu-open? (deref menu-open*)
@@ -850,11 +896,11 @@
[:div {:key (str (:id shape) pos) :class (stl/css :variant-property-row)}
[:> input-with-values* {:name (:name property)
:values val
- :data-position (:pos property)
+ :data-position pos
:on-blur update-property-name}]
[:> icon-button* {:variant "ghost"
:aria-label (tr "workspace.shape.menu.remove-variant-property")
:on-click remove-property
- :data-position (:pos property)
+ :data-position pos
:icon "remove"
:disabled (<= (count properties) 1)}]]))])]])))
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 4c210a8768..2b8406648d 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
@@ -714,24 +714,25 @@
width: 100%;
display: flex;
gap: var(--sp-xs);
-}
-
-.variant-property-name-bg {
- border-radius: $br-8;
- background-color: var(--assets-item-background-color);
+ padding-right: var(--sp-xxs);
}
.variant-property-name {
color: var(--color-foreground-primary);
-
+ height: var(--sp-xxxl);
width: $s-104;
display: flex;
align-items: center;
justify-content: center;
- height: var(--sp-xxxl);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
+
+.variant-property-name-wrapper {
+ display: flex;
+ flex: 0 0 auto;
+ width: $s-104;
+}
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 425fbc5d2f..476e1f120d 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
@@ -16,7 +16,6 @@
[app.main.data.workspace :as udw]
[app.main.data.workspace.grid-layout.editor :as dwge]
[app.main.data.workspace.shape-layout :as dwsl]
- [app.main.features :as features]
[app.main.refs :as refs]
[app.main.store :as st]
[app.main.ui.components.dropdown :refer [dropdown]]
@@ -976,8 +975,6 @@
grid-justify-content-row (:layout-justify-content values)
grid-justify-content-column (:layout-align-content values)
- grid-enabled? (features/use-feature "layout/grid")
-
on-column-justify-change
(mf/use-fn
(mf/deps ids)
@@ -1007,24 +1004,22 @@
(if (and (not multiple) (:layout values))
[:div {:class (stl/css :title-actions)}
- (when ^boolean grid-enabled?
- [:*
- [:> icon-button* {:variant "ghost"
- :aria-label (tr "workspace.shape.menu.add-layout")
- :on-click on-toggle-dropdown-visibility
- :icon "menu"}]
+ [:> icon-button* {:variant "ghost"
+ :aria-label (tr "workspace.shape.menu.add-layout")
+ :on-click on-toggle-dropdown-visibility
+ :icon "menu"}]
- [:& dropdown {:show show-dropdown?
- :on-close on-hide-dropdown}
- [:div {:class (stl/css :layout-options)}
- [:button {:class (stl/css :layout-option)
- :data-type "flex"
- :on-click on-add-layout}
- "Flex layout"]
- [:button {:class (stl/css :layout-option)
- :data-type "grid"
- :on-click on-add-layout}
- "Grid layout"]]]])
+ [:& dropdown {:show show-dropdown?
+ :on-close on-hide-dropdown}
+ [:div {:class (stl/css :layout-options)}
+ [:button {:class (stl/css :layout-option)
+ :data-type "flex"
+ :on-click on-add-layout}
+ "Flex layout"]
+ [:button {:class (stl/css :layout-option)
+ :data-type "grid"
+ :on-click on-add-layout}
+ "Grid layout"]]]
(when has-layout?
[:> icon-button* {:variant "ghost"
@@ -1033,29 +1028,23 @@
:icon "remove"}])]
[:div {:class (stl/css :title-actions)}
- (if ^boolean grid-enabled?
- [:*
- [:> icon-button* {:variant "ghost"
- :aria-label (tr "workspace.shape.menu.add-layout")
- :on-click on-toggle-dropdown-visibility
- :icon "add"}]
+ [:> icon-button* {:variant "ghost"
+ :aria-label (tr "workspace.shape.menu.add-layout")
+ :on-click on-toggle-dropdown-visibility
+ :icon "add"}]
- [:& dropdown {:show show-dropdown?
- :on-close on-hide-dropdown}
- [:div {:class (stl/css :layout-options)}
- [:button {:class (stl/css :layout-option)
- :data-type "flex"
- :on-click on-add-layout}
- "Flex layout"]
- [:button {:class (stl/css :layout-option)
- :data-type "grid"
- :on-click on-add-layout}
- "Grid layout"]]]]
-
- [:button {:class (stl/css :add-layout)
+ [:& dropdown {:show show-dropdown?
+ :on-close on-hide-dropdown}
+ [:div {:class (stl/css :layout-options)}
+ [:button {:class (stl/css :layout-option)
:data-type "flex"
:on-click on-add-layout}
- i/add])
+ "Flex layout"]
+ [:button {:class (stl/css :layout-option)
+ :data-type "grid"
+ :on-click on-add-layout}
+ "Grid layout"]]]
+
(when has-layout?
[:> icon-button* {:variant "ghost"
:aria-label (tr "workspace.shape.menu.delete")
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 fe4cc9c099..dd1c6ea3ba 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
@@ -7,6 +7,7 @@
(ns app.main.ui.workspace.sidebar.options.shapes.frame
(:require
[app.common.data.macros :as dm]
+ [app.common.types.component :as ctk]
[app.common.types.shape.layout :as ctl]
[app.main.features :as features]
[app.main.refs :as refs]
@@ -72,7 +73,7 @@
is-grid-layout? (ctl/grid-layout? shape)
is-layout-child-absolute? (ctl/item-absolute? shape)
variants? (features/use-feature "variants/v1")
- is-variant? (when variants? (:is-variant-container shape))]
+ is-variant? (when variants? (ctk/is-variant-container? shape))]
[:*
[:& layer-menu {:ids ids
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 1401741307..4df1c768c2 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
@@ -13,7 +13,6 @@
[app.main.ui.hooks :as hooks]
[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]]
[app.main.ui.workspace.sidebar.options.menus.constraints :refer [constraints-menu]]
[app.main.ui.workspace.sidebar.options.menus.fill :refer [fill-menu]]
[app.main.ui.workspace.sidebar.options.menus.grid-cell :as grid-cell]
@@ -70,7 +69,6 @@
[:div {:class (stl/css :options)}
[:& layer-menu {:type type :ids layer-ids :values layer-values}]
[:> measures-menu* {:type type :ids measure-ids :values measure-values :shape shape}]
- [:& component-menu {:shapes [shape]}] ;;remove this in components-v2
[:& layout-container-menu
{:type type
diff --git a/frontend/src/app/main/ui/workspace/sidebar/sitemap.scss b/frontend/src/app/main/ui/workspace/sidebar/sitemap.scss
index 3a9a64636b..4a0841e43a 100644
--- a/frontend/src/app/main/ui/workspace/sidebar/sitemap.scss
+++ b/frontend/src/app/main/ui/workspace/sidebar/sitemap.scss
@@ -38,11 +38,14 @@
display: flex;
flex-direction: column;
height: calc(-38px + var(--height, $s-200));
- width: 100%;
- overflow-x: hidden;
+ width: var(--width);
+ overflow-x: scroll;
overflow-y: overlay;
scrollbar-gutter: stable;
- max-width: var(--width);
+
+ .element-list {
+ display: grid;
+ }
}
.pages-list {
diff --git a/frontend/src/app/main/ui/workspace/tokens/common.cljs b/frontend/src/app/main/ui/workspace/tokens/common.cljs
deleted file mode 100644
index a3b5cc8bc9..0000000000
--- a/frontend/src/app/main/ui/workspace/tokens/common.cljs
+++ /dev/null
@@ -1,70 +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.main.ui.workspace.tokens.common
- (:require
- [app.common.data :as d]
- [app.main.data.shortcuts :as dsc]
- [app.main.store :as st]
- [app.util.dom :as dom]
- [app.util.globals :as globals]
- [app.util.keyboard :as kbd]
- [cuerdas.core :as str]
- [goog.events :as events]
- [rumext.v2 :as mf])
- (:import goog.events.EventType))
-
-;; Helpers ---------------------------------------------------------------------
-
-(defn camel-keys [m]
- (->> m
- (d/deep-mapm
- (fn [[k v]]
- (if (or (keyword? k) (string? k))
- [(keyword (str/camel (name k))) v]
- [k v])))))
-
-(defn direction-select
- "Returns next `n` in `direction` while wrapping around at the last item at the count of `coll`.
-
- `direction` accepts `:up` or `:down`."
- [direction n coll]
- (let [last-n (dec (count coll))
- next-n (case direction
- :up (dec n)
- :down (inc n))
- wrap-around-n (cond
- (neg? next-n) last-n
- (> next-n last-n) 0
- :else next-n)]
- wrap-around-n))
-
-(defn use-arrow-highlight [{:keys [shortcuts-key options on-select]}]
- (let [highlighted* (mf/use-state nil)
- highlighted (deref highlighted*)
- on-dehighlight #(reset! highlighted* nil)
- on-keyup (fn [event]
- (cond
- (and (kbd/enter? event) highlighted) (on-select (nth options highlighted))
- (kbd/up-arrow? event) (do
- (dom/prevent-default event)
- (->> (direction-select :up (or highlighted 0) options)
- (reset! highlighted*)))
- (kbd/down-arrow? event) (do
- (dom/prevent-default event)
- (->> (direction-select :down (or highlighted -1) options)
- (reset! highlighted*)))))]
- (mf/with-effect [highlighted]
- (let [shortcuts-key shortcuts-key
- keys [(events/listen globals/document EventType.KEYUP on-keyup)
- (events/listen globals/document EventType.KEYDOWN dom/prevent-default)]]
- (st/emit! (dsc/push-shortcuts shortcuts-key {}))
- (fn []
- (doseq [key keys]
- (events/unlistenByKey key))
- (st/emit! (dsc/pop-shortcuts shortcuts-key)))))
- {:highlighted highlighted
- :on-dehighlight on-dehighlight}))
diff --git a/frontend/src/app/main/ui/workspace/tokens/components/controls/input_token_color_bullet.cljs b/frontend/src/app/main/ui/workspace/tokens/components/controls/input_token_color_bullet.cljs
index 4ff70d333b..715f7699c5 100644
--- a/frontend/src/app/main/ui/workspace/tokens/components/controls/input_token_color_bullet.cljs
+++ b/frontend/src/app/main/ui/workspace/tokens/components/controls/input_token_color_bullet.cljs
@@ -7,8 +7,8 @@
(ns app.main.ui.workspace.tokens.components.controls.input-token-color-bullet
(:require-macros [app.main.style :as stl])
(:require
+ [app.main.data.workspace.tokens.color :as dwtc]
[app.main.ui.components.color-bullet :refer [color-bullet]]
- [app.main.ui.workspace.tokens.token :as wtt]
[rumext.v2 :as mf]))
(def ^:private schema::input-token-color-bullet
@@ -20,8 +20,9 @@
{::mf/props :obj
::mf/schema schema::input-token-color-bullet}
[{:keys [color on-click]}]
- [:div {:class (stl/css :input-token-color-bullet)
+ [:div {:data-testid "token-form-color-bullet"
+ :class (stl/css :input-token-color-bullet)
:on-click on-click}
- (if-let [color' (wtt/color-bullet-color color)]
+ (if-let [color' (dwtc/color-bullet-color color)]
[:> color-bullet {:color color' :mini true}]
[:div {:class (stl/css :input-token-color-bullet-placeholder)}])])
diff --git a/frontend/src/app/main/ui/workspace/tokens/context_menu.cljs b/frontend/src/app/main/ui/workspace/tokens/context_menu.cljs
index 8c756a4bd8..678f9a6b96 100644
--- a/frontend/src/app/main/ui/workspace/tokens/context_menu.cljs
+++ b/frontend/src/app/main/ui/workspace/tokens/context_menu.cljs
@@ -9,16 +9,16 @@
(:require
[app.common.data :as d]
[app.common.data.macros :as dm]
+ [app.common.files.tokens :as cft]
[app.common.types.tokens-lib :as ctob]
[app.main.data.modal :as modal]
- [app.main.data.tokens :as dt]
[app.main.data.workspace.shape-layout :as dwsl]
+ [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.components.dropdown :refer [dropdown]]
[app.main.ui.ds.foundations.assets.icon :refer [icon*]]
- [app.main.ui.workspace.tokens.changes :as wtch]
- [app.main.ui.workspace.tokens.token :as wtt]
[app.util.dom :as dom]
[app.util.i18n :refer [tr]]
[app.util.timers :as timers]
@@ -30,15 +30,15 @@
;; Actions ---------------------------------------------------------------------
(defn attribute-actions [token selected-shapes attributes]
- (let [ids-by-attributes (wtt/shapes-ids-by-applied-attributes token selected-shapes attributes)
+ (let [ids-by-attributes (cft/shapes-ids-by-applied-attributes token selected-shapes attributes)
shape-ids (into #{} (map :id selected-shapes))]
- {:all-selected? (wtt/shapes-applied-all? ids-by-attributes shape-ids attributes)
+ {:all-selected? (cft/shapes-applied-all? ids-by-attributes shape-ids attributes)
:shape-ids shape-ids
:selected-pred #(seq (% ids-by-attributes))}))
(defn generic-attribute-actions [attributes title {:keys [token selected-shapes on-update-shape hint]}]
(let [on-update-shape-fn (or on-update-shape
- (-> (wtch/get-token-properties token)
+ (-> (dwta/get-token-properties token)
(:on-update-shape)))
{:keys [selected-pred shape-ids]} (attribute-actions token selected-shapes attributes)]
(map (fn [attribute]
@@ -52,8 +52,8 @@
:selected? selected?
:action (fn []
(if selected?
- (st/emit! (wtch/unapply-token props))
- (st/emit! (wtch/apply-token (assoc props :on-update-shape on-update-shape-fn)))))}))
+ (st/emit! (dwta/unapply-token props))
+ (st/emit! (dwta/apply-token (assoc props :on-update-shape on-update-shape-fn)))))}))
attributes)))
(defn all-or-separate-actions [{:keys [attribute-labels on-update-shape-all on-update-shape hint]}
@@ -67,8 +67,8 @@
:selected? all-selected?
:hint hint
:action #(if all-selected?
- (st/emit! (wtch/unapply-token props))
- (st/emit! (wtch/apply-token (assoc props :on-update-shape (or on-update-shape-all on-update-shape)))))})
+ (st/emit! (dwta/unapply-token props))
+ (st/emit! (dwta/apply-token (assoc props :on-update-shape (or on-update-shape-all on-update-shape)))))})
single-actions (map (fn [[attr title]]
(let [selected? (selected-pred attr)]
{:title title
@@ -78,10 +78,10 @@
:shape-ids shape-ids}
event (cond
all-selected? (-> (assoc props :attributes-to-remove attributes)
- (wtch/apply-token))
- selected? (wtch/unapply-token props)
+ (dwta/apply-token))
+ selected? (dwta/unapply-token props)
:else (-> (assoc props :on-update-shape on-update-shape)
- (wtch/apply-token)))]
+ (dwta/apply-token)))]
(st/emit! event))}))
attribute-labels)]
(concat [all-action] single-actions)))
@@ -105,17 +105,17 @@
:token token
:shape-ids shape-ids}]
(if all-selected?
- (st/emit! (wtch/unapply-token props))
- (st/emit! (wtch/apply-token (assoc props :on-update-shape on-update-shape))))))}
+ (st/emit! (dwta/unapply-token props))
+ (st/emit! (dwta/apply-token (assoc props :on-update-shape on-update-shape))))))}
{:title "Horizontal"
:selected? horizontal-selected?
:action (fn []
(let [props {:token token
:shape-ids shape-ids}
event (cond
- all-selected? (wtch/apply-token (assoc props :attributes-to-remove vertical-attrs))
- horizontal-selected? (wtch/apply-token (assoc props :attributes-to-remove horizontal-attrs))
- :else (wtch/apply-token (assoc props
+ all-selected? (dwta/apply-token (assoc props :attributes-to-remove vertical-attrs))
+ horizontal-selected? (dwta/apply-token (assoc props :attributes-to-remove horizontal-attrs))
+ :else (dwta/apply-token (assoc props
:attributes horizontal-attrs
:on-update-shape on-update-shape)))]
(st/emit! event)))}
@@ -125,9 +125,9 @@
(let [props {:token token
:shape-ids shape-ids}
event (cond
- all-selected? (wtch/apply-token (assoc props :attributes-to-remove horizontal-attrs))
- vertical-selected? (wtch/apply-token (assoc props :attributes-to-remove vertical-attrs))
- :else (wtch/apply-token (assoc props
+ all-selected? (dwta/apply-token (assoc props :attributes-to-remove horizontal-attrs))
+ vertical-selected? (dwta/apply-token (assoc props :attributes-to-remove vertical-attrs))
+ :else (dwta/apply-token (assoc props
:attributes vertical-attrs
:on-update-shape on-update-shape)))]
(st/emit! event)))}]
@@ -147,10 +147,10 @@
:shape-ids shape-ids}
event (cond
all-selected? (-> (assoc props :attributes-to-remove attrs)
- (wtch/apply-token))
- selected? (wtch/unapply-token props)
+ (dwta/apply-token))
+ selected? (dwta/unapply-token props)
:else (-> (assoc props :on-update-shape on-update-shape)
- (wtch/apply-token)))]
+ (dwta/apply-token)))]
(st/emit! event))}))
all-attr-labels)]
(concat multi-items single-items)))
@@ -159,13 +159,13 @@
(st/emit!
(when (= (count attributes) 1)
(dwsl/update-layout shape-ids {:layout-padding-type :multiple}))
- (wtch/update-layout-padding value shape-ids attributes)))
+ (dwta/update-layout-padding value shape-ids attributes)))
(defn update-shape-layout-margin [value shape-ids attributes]
(st/emit!
(when (= (count attributes) 1)
(dwsl/update-layout shape-ids {:layout-item-margin-type :multiple}))
- (wtch/update-layout-item-margin value shape-ids attributes)))
+ (dwta/update-layout-item-margin value shape-ids attributes)))
(defn spacing-attribute-actions [{:keys [token selected-shapes] :as context-data}]
(let [padding-items (layout-spacing-items {:token token
@@ -195,7 +195,7 @@
gap-items (all-or-separate-actions {:attribute-labels {:column-gap "Column Gap"
:row-gap "Row Gap"}
:hint (tr "workspace.token.gaps")
- :on-update-shape wtch/update-layout-spacing}
+ :on-update-shape dwta/update-layout-spacing}
context-data)]
(concat gap-items
[:separator]
@@ -208,25 +208,25 @@
(all-or-separate-actions {:attribute-labels {:width "Width"
:height "Height"}
:hint (tr "workspace.token.size")
- :on-update-shape wtch/update-shape-dimensions}
+ :on-update-shape dwta/update-shape-dimensions}
context-data)
[:separator]
(all-or-separate-actions {:attribute-labels {:layout-item-min-w "Min Width"
:layout-item-min-h "Min Height"}
:hint (tr "workspace.token.min-size")
- :on-update-shape wtch/update-layout-sizing-limits}
+ :on-update-shape dwta/update-layout-sizing-limits}
context-data)
[:separator]
(all-or-separate-actions {:attribute-labels {:layout-item-max-w "Max Width"
:layout-item-max-h "Max Height"}
:hint (tr "workspace.token.max-size")
- :on-update-shape wtch/update-layout-sizing-limits}
+ :on-update-shape dwta/update-layout-sizing-limits}
context-data)))
(defn update-shape-radius-for-corners [value shape-ids attributes]
(st/emit!
(ptk/data-event :expand-border-radius)
- (wtch/update-shape-radius-for-corners value shape-ids attributes)))
+ (dwta/update-shape-radius-for-corners value shape-ids attributes)))
(def shape-attribute-actions-map
(let [stroke-width (partial generic-attribute-actions #{:stroke-width} "Stroke Width")]
@@ -235,11 +235,11 @@
:r4 "Bottom Left"
:r3 "Bottom Right"}
:hint (tr "workspace.token.radius")
- :on-update-shape-all wtch/update-shape-radius-all
+ :on-update-shape-all dwta/update-shape-radius-all
:on-update-shape update-shape-radius-for-corners})
:color (fn [context-data]
- [(generic-attribute-actions #{:fill} "Fill" (assoc context-data :on-update-shape wtch/update-fill :hint (tr "workspace.token.color")))
- (generic-attribute-actions #{:stroke-color} "Stroke" (assoc context-data :on-update-shape wtch/update-stroke-color))])
+ [(generic-attribute-actions #{:fill} "Fill" (assoc context-data :on-update-shape dwta/update-fill :hint (tr "workspace.token.color")))
+ (generic-attribute-actions #{:stroke-color} "Stroke" (assoc context-data :on-update-shape dwta/update-stroke-color))])
:spacing spacing-attribute-actions
:sizing sizing-attribute-actions
:rotation (partial generic-attribute-actions #{:rotation} "Rotation")
@@ -252,19 +252,19 @@
:separator
{:title "Border Radius" :submenu :border-radius}]
[:separator]
- (stroke-width (assoc context-data :on-update-shape wtch/update-stroke-width))
+ (stroke-width (assoc context-data :on-update-shape dwta/update-stroke-width))
[:separator]
- (generic-attribute-actions #{:x} "X" (assoc context-data :on-update-shape wtch/update-shape-position :hint (tr "workspace.token.axis")))
- (generic-attribute-actions #{:y} "Y" (assoc context-data :on-update-shape wtch/update-shape-position))))}))
+ (generic-attribute-actions #{:x} "X" (assoc context-data :on-update-shape dwta/update-shape-position :hint (tr "workspace.token.axis")))
+ (generic-attribute-actions #{:y} "Y" (assoc context-data :on-update-shape dwta/update-shape-position))))}))
(defn default-actions [{:keys [token selected-token-set-name]}]
- (let [{:keys [modal]} (wtch/get-token-properties token)]
+ (let [{:keys [modal]} (dwta/get-token-properties token)]
[{:title (tr "workspace.token.edit")
:no-selectable true
:action (fn [event]
(let [{:keys [key fields]} modal]
(dom/stop-propagation event)
- (st/emit! (dt/assign-token-context-menu nil)
+ (st/emit! (dwtl/assign-token-context-menu nil)
(modal/show key {:x (.-clientX ^js event)
:y (.-clientY ^js event)
:position :right
@@ -274,10 +274,10 @@
:token token}))))}
{:title (tr "workspace.token.duplicate")
:no-selectable true
- :action #(st/emit! (dt/duplicate-token (:name token)))}
+ :action #(st/emit! (dwtl/duplicate-token (:name token)))}
{:title (tr "workspace.token.delete")
:no-selectable true
- :action #(st/emit! (dt/delete-token
+ :action #(st/emit! (dwtl/delete-token
(ctob/prefixed-set-path-string->set-name-string selected-token-set-name)
(:name token)))}]))
@@ -446,7 +446,7 @@
(mf/portal
(mf/html
[:& dropdown {:show is-open?
- :on-close #(st/emit! (dt/assign-token-context-menu nil))}
+ :on-close #(st/emit! (dwtl/assign-token-context-menu nil))}
[:div {:class (stl/css :token-context-menu)
:data-testid "tokens-context-menu-for-token"
:ref dropdown-ref
diff --git a/frontend/src/app/main/ui/workspace/tokens/core.cljs b/frontend/src/app/main/ui/workspace/tokens/core.cljs
deleted file mode 100644
index c61cf0e40d..0000000000
--- a/frontend/src/app/main/ui/workspace/tokens/core.cljs
+++ /dev/null
@@ -1,34 +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.main.ui.workspace.tokens.core
- (:require
- [app.common.data :as d]
- [app.main.ui.workspace.tokens.token :as wtt]))
-
-;; Helpers ---------------------------------------------------------------------
-
-(defn resolve-token-value [{:keys [value resolved-value] :as _token}]
- (or
- resolved-value
- (d/parse-double value)))
-
-(defn maybe-resolve-token-value [{:keys [value] :as token}]
- (when value (resolve-token-value token)))
-
-(defn tokens->select-options [{:keys [shape tokens attributes selected-attributes]}]
- (map
- (fn [{:keys [name] :as token}]
- (cond-> (assoc token :label name)
- (wtt/token-applied? token shape (or selected-attributes attributes)) (assoc :selected? true)))
- tokens))
-
-(defn tokens-name-map->select-options [{:keys [shape tokens attributes selected-attributes]}]
- (map
- (fn [[_k {:keys [name] :as token}]]
- (cond-> (assoc token :label name)
- (wtt/token-applied? token shape (or selected-attributes attributes)) (assoc :selected? true)))
- tokens))
diff --git a/frontend/src/app/main/ui/workspace/tokens/form.cljs b/frontend/src/app/main/ui/workspace/tokens/form.cljs
index 9306904317..606b070936 100644
--- a/frontend/src/app/main/ui/workspace/tokens/form.cljs
+++ b/frontend/src/app/main/ui/workspace/tokens/form.cljs
@@ -10,9 +10,16 @@
[app.common.colors :as c]
[app.common.data :as d]
[app.common.data.macros :as dm]
+ [app.common.files.tokens :as cft]
[app.common.types.tokens-lib :as ctob]
[app.main.data.modal :as modal]
- [app.main.data.tokens :as dt]
+ [app.main.data.style-dictionary :as sd]
+ [app.main.data.tinycolor :as tinycolor]
+ [app.main.data.workspace.tokens.application :as dwta]
+ [app.main.data.workspace.tokens.errors :as wte]
+ [app.main.data.workspace.tokens.library-edit :as dwtl]
+ [app.main.data.workspace.tokens.propagation :as dwtp]
+ [app.main.data.workspace.tokens.warnings :as wtw]
[app.main.refs :as refs]
[app.main.store :as st]
[app.main.ui.ds.buttons.button :refer [button*]]
@@ -22,15 +29,8 @@
[app.main.ui.ds.notifications.context-notification :refer [context-notification*]]
[app.main.ui.workspace.colorpicker :as colorpicker]
[app.main.ui.workspace.colorpicker.ramp :refer [ramp-selector*]]
- [app.main.ui.workspace.tokens.changes :as wtch]
[app.main.ui.workspace.tokens.components.controls.input-token-color-bullet :refer [input-token-color-bullet*]]
[app.main.ui.workspace.tokens.components.controls.input-tokens :refer [input-tokens*]]
- [app.main.ui.workspace.tokens.errors :as wte]
- [app.main.ui.workspace.tokens.style-dictionary :as sd]
- [app.main.ui.workspace.tokens.tinycolor :as tinycolor]
- [app.main.ui.workspace.tokens.token :as wtt]
- [app.main.ui.workspace.tokens.update :as wtu]
- [app.main.ui.workspace.tokens.warnings :as wtw]
[app.util.dom :as dom]
[app.util.functions :as uf]
[app.util.i18n :refer [tr]]
@@ -64,7 +64,7 @@
(let [path-exists-schema
(m/-simple-schema
{:type :token/name-exists
- :pred #(not (wtt/token-name-path-exists? % tokens-tree))
+ :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
@@ -198,6 +198,13 @@
(when-not (and dragging? hex)
(reset! internal-color* selector-color)
(on-change hex alpha)))))]
+ (mf/use-effect
+ (mf/deps color)
+ (fn []
+ ;; Update internal color when user changes input value
+ (when-let [color (tinycolor/valid-color color)]
+ (when-not (= (tinycolor/->hex-string color) (:hex internal-color))
+ (reset! internal-color* (hex->value color))))))
(colorpicker/use-color-picker-css-variables! wrapper-node-ref internal-color)
[:div {:ref wrapper-node-ref}
@@ -232,8 +239,8 @@
[{:keys [token token-type action selected-token-set-name on-display-colorpicker]}]
(let [create? (not (instance? ctob/Token token))
token (or token {:type token-type})
- token-properties (wtch/get-token-properties token)
- color? (wtt/color-token? token)
+ token-properties (dwta/get-token-properties token)
+ color? (cft/color-token? token)
selected-set-tokens (mf/deref refs/workspace-selected-token-set-tokens)
active-theme-tokens (cond-> (mf/deref refs/workspace-active-theme-sets-tokens)
@@ -247,7 +254,7 @@
:interactive? true})
token-path (mf/use-memo
(mf/deps (:name token))
- #(wtt/token-name->path (:name token)))
+ #(cft/token-name->path (:name token)))
selected-set-tokens-tree (mf/use-memo
(mf/deps token-path selected-set-tokens)
@@ -315,13 +322,14 @@
(valid-name? @token-name-ref))
;; Value
- color (mf/use-state (when color? (:value token)))
+ color* (mf/use-state (when color? (:value token)))
+ color (deref color*)
color-ramp-open* (mf/use-state false)
color-ramp-open? (deref color-ramp-open*)
value-input-ref (mf/use-ref nil)
value-ref (mf/use-var (:value token))
- token-resolve-result* (mf/use-state (get resolved-tokens (wtt/token-identifier token)))
+ token-resolve-result* (mf/use-state (get resolved-tokens (cft/token-identifier token)))
token-resolve-result (deref token-resolve-result*)
set-resolve-value
@@ -338,7 +346,7 @@
:else
(:resolved-value token-or-err))]
- (when color? (reset! color (if error? nil v)))
+ (when color? (reset! color* (if error? nil v)))
(reset! token-resolve-result* v))))
on-update-value-debounced (use-debonced-resolve-callback token-name-ref token active-theme-tokens set-resolve-value)
@@ -355,13 +363,28 @@
(reset! value-ref value')
(on-update-value-debounced value'))))
on-update-color (mf/use-fn
- (mf/deps on-update-value-debounced)
+ (mf/deps color on-update-value-debounced)
(fn [hex-value alpha]
- (let [color-value (if (= 1 alpha)
- hex-value
- (-> (tinycolor/valid-color hex-value)
- (tinycolor/set-alpha alpha)
- (tinycolor/->rgba-string)))]
+ (let [;; StyleDictionary will always convert to hex/rgba, so we take the format from the value input field
+ prev-input-color (some-> (dom/get-value (mf/ref-val value-input-ref))
+ (tinycolor/valid-color))
+ ;; If the input is a reference we will take the format from the computed value
+ prev-computed-color (when-not prev-input-color
+ (some-> color (tinycolor/valid-color)))
+ prev-format (some-> (or prev-input-color prev-computed-color)
+ (tinycolor/color-format))
+ to-rgba? (and
+ (< alpha 1)
+ (or (= prev-format "hex") (not prev-format)))
+ to-hex? (and (not prev-format) (= alpha 1))
+ format (cond
+ to-rgba? "rgba"
+ to-hex? "hex"
+ prev-format prev-format
+ :else "hex")
+ color-value (-> (tinycolor/valid-color hex-value)
+ (tinycolor/set-alpha (or alpha 1))
+ (tinycolor/->string format))]
(reset! value-ref color-value)
(dom/set-value! (mf/ref-val value-input-ref) color-value)
(on-update-value-debounced color-value))))
@@ -429,16 +452,16 @@
(when (and (seq result) (not err))
(st/emit!
(if (ctob/token? token)
- (dt/update-token (:name token)
- {:name final-name
- :value final-value
- :description final-description})
+ (dwtl/update-token (:name token)
+ {:name final-name
+ :value final-value
+ :description final-description})
- (dt/create-token {:name final-name
- :type token-type
- :value final-value
- :description final-description}))
- (wtu/update-workspace-tokens)
+ (dwtl/create-token {:name final-name
+ :type token-type
+ :value final-value
+ :description final-description}))
+ (dwtp/propagate-workspace-tokens)
(modal/hide)))))))))
on-delete-token
@@ -447,7 +470,7 @@
(fn [e]
(dom/prevent-default e)
(modal/hide!)
- (st/emit! (dt/delete-token (ctob/prefixed-set-path-string->set-name-string selected-token-set-name) (:name token)))))
+ (st/emit! (dwtl/delete-token (ctob/prefixed-set-path-string->set-name-string selected-token-set-name) (:name token)))))
on-cancel
(mf/use-fn
@@ -538,10 +561,10 @@
:on-blur on-update-value}
(when color?
[:> input-token-color-bullet*
- {:color @color :on-click on-display-colorpicker'}])]
+ {:color color
+ :on-click on-display-colorpicker'}])]
(when color-ramp-open?
- [:> ramp* {:color (some-> (or token-resolve-result (:value token))
- (tinycolor/valid-color))
+ [:> ramp* {:color (some-> color (tinycolor/valid-color))
:on-change on-update-color}])
[:& token-value-or-errors {:result-or-errors token-resolve-result}]]
diff --git a/frontend/src/app/main/ui/workspace/tokens/modals/themes.cljs b/frontend/src/app/main/ui/workspace/tokens/modals/themes.cljs
index d6f98ff307..0b8c751e70 100644
--- a/frontend/src/app/main/ui/workspace/tokens/modals/themes.cljs
+++ b/frontend/src/app/main/ui/workspace/tokens/modals/themes.cljs
@@ -12,7 +12,7 @@
[app.common.types.tokens-lib :as ctob]
[app.main.data.event :as ev]
[app.main.data.modal :as modal]
- [app.main.data.tokens :as wdt]
+ [app.main.data.workspace.tokens.library-edit :as dwtl]
[app.main.refs :as refs]
[app.main.store :as st]
[app.main.ui.components.radio-buttons :refer [radio-button radio-buttons]]
@@ -33,11 +33,11 @@
[rumext.v2 :as mf]))
(mf/defc empty-themes
- [{:keys [set-state]}]
+ [{:keys [change-view]}]
(let [create-theme
(mf/use-fn
- (mf/deps set-state)
- #(set-state (fn [_] {:type :create-theme})))
+ (mf/deps change-view)
+ #(change-view :create-theme))
close-modal
(mf/use-fn
#(st/emit! (modal/hide)))]
@@ -78,17 +78,17 @@
:label ""}]]))
(mf/defc themes-overview
- [{:keys [set-state]}]
+ [{:keys [change-view]}]
(let [active-theme-ids (mf/deref refs/workspace-active-theme-paths)
themes-groups (mf/deref refs/workspace-token-theme-tree-no-hidden)
create-theme
(mf/use-fn
- (mf/deps set-state)
+ (mf/deps change-view)
(fn [e]
(dom/prevent-default e)
(dom/stop-propagation e)
- (set-state (fn [_] {:type :create-theme}))))
+ (change-view :create-theme)))
close-modal
(mf/use-fn
@@ -117,13 +117,12 @@
(fn [e]
(dom/prevent-default e)
(dom/stop-propagation e)
- (st/emit! (wdt/delete-token-theme group name)))
+ (st/emit! (dwtl/delete-token-theme group name)))
on-edit-theme
(fn [e]
(dom/prevent-default e)
(dom/stop-propagation e)
- (set-state (fn [_] {:type :edit-theme
- :theme-path [(:id theme) (:group theme) (:name theme)]})))]]
+ (change-view :edit-theme {:theme-path [(:id theme) (:group theme) (:name theme)]}))]]
[:li {:key theme-id
:class (stl/css :theme-row)}
[:div {:class (stl/css :theme-switch-row)}
@@ -132,7 +131,7 @@
[:div {:on-click (fn [e]
(dom/prevent-default e)
(dom/stop-propagation e)
- (st/emit! (wdt/toggle-token-theme-active? group name)))}
+ (st/emit! (dwtl/toggle-token-theme-active? group name)))}
[:& switch {:name (tr "workspace.token.theme-name" name)
:on-change (constantly nil)
:selected? selected?}]]]
@@ -241,54 +240,6 @@
:disabled disabled?}
(tr "workspace.token.save-theme")]]))
-(mf/defc create-theme
- [{:keys [set-state]}]
- (let [theme (ctob/make-token-theme :name "")
- on-back #(set-state (constantly {:type :themes-overview}))
- theme-state* (mf/use-state theme)
- theme-state (deref theme-state*)
- disabled? (-> (:name theme-state)
- (str/trim)
- (str/empty?))
-
- on-change-field
- (mf/use-fn
- (fn [field value]
- (swap! theme-state* #(assoc % field value))))
-
- on-save-form
- (mf/use-fn
- (mf/deps theme-state)
- (fn [e]
- (dom/prevent-default e)
- (let [theme (-> theme-state
- (update :name str/trim)
- (update :group str/trim)
- (update :description str/trim))]
- (when-not (str/empty? (:name theme))
- (st/emit! (ptk/event ::ev/event {::ev/name "create-tokens-theme"})
- (wdt/create-token-theme theme)))
- (on-back))))
-
- close-modal
- (mf/use-fn
- (fn [e]
- (dom/prevent-default e)
- (st/emit! (modal/hide))))]
-
- [:div {:class (stl/css :themes-modal-wrapper)}
- [:> heading* {:level 2 :typography "headline-medium" :class (stl/css :themes-modal-title)}
- (tr "workspace.token.add-new-theme")]
- [:form {:on-submit on-save-form}
- [:div {:class (stl/css :create-theme-wrapper)}
- [:> theme-inputs* {:theme theme
- :on-change-field on-change-field}]
-
- [:div {:class (stl/css :button-footer)}
- [:> theme-modal-buttons* {:close-modal close-modal
- :on-save-form on-save-form
- :disabled? disabled?}]]]]]))
-
(defn- make-lib-with-theme
[theme sets]
(let [tlib (-> (ctob/make-tokens-lib)
@@ -296,40 +247,39 @@
tlib (reduce ctob/add-set tlib sets)]
(ctob/activate-theme tlib (:group theme) (:name theme))))
-(mf/defc controlled-edit-theme
- [{:keys [state set-state]}]
- (let [{:keys [theme-path]} @state
- [_ theme-group theme-name] theme-path
- ordered-token-sets (mf/deref refs/workspace-ordered-token-sets)
+(mf/defc edit-create-theme*
+ [{:keys [change-view theme on-save is-editing has-prev-view]}]
+ (let [ordered-token-sets (mf/deref refs/workspace-ordered-token-sets)
token-sets (mf/deref refs/workspace-token-sets-tree)
- theme (mf/deref (refs/workspace-token-theme theme-group theme-name))
- theme-state* (mf/use-state theme)
- theme-state (deref theme-state*)
- lib (make-lib-with-theme theme-state ordered-token-sets)
+ current-theme* (mf/use-state theme)
+ current-theme (deref current-theme*)
+ lib (make-lib-with-theme current-theme ordered-token-sets)
;; Form / Modal handlers
- on-back #(set-state (constantly {:type :themes-overview}))
- disabled? (-> (:name theme-state)
+ on-back (mf/use-fn
+ (mf/deps change-view)
+ #(change-view :themes-overview))
+ disabled? (-> (:name current-theme)
(str/trim)
(str/empty?))
on-change-field
(mf/use-fn
(fn [field value]
- (swap! theme-state* #(assoc % field value))))
+ (swap! current-theme* #(assoc % field value))))
on-save-form
(mf/use-fn
- (mf/deps theme theme-state)
+ (mf/deps current-theme on-save on-back)
(fn [e]
(dom/prevent-default e)
- (let [theme' (-> theme-state
+ (let [theme' (-> current-theme
(update :name str/trim)
(update :group str/trim)
(update :description str/trim))]
- (when-not (str/empty? (:name theme))
- (st/emit! (wdt/update-token-theme [(:group theme) (:name theme)] theme')))
+ (when-not (str/empty? (:name theme'))
+ (on-save theme'))
(on-back))))
close-modal
@@ -338,39 +288,39 @@
(dom/prevent-default e)
(st/emit! (modal/hide))))
- on-delete-token
+ on-delete-theme
(mf/use-fn
- (mf/deps theme on-back)
+ (mf/deps current-theme on-back)
(fn []
- (st/emit! (wdt/delete-token-theme (:group theme) (:name theme)))
+ (st/emit! (dwtl/delete-token-theme (:group current-theme) (:name current-theme)))
(on-back)))
;; Sets tree handlers
token-set-group-active?
(mf/use-fn
- (mf/deps theme-state)
+ (mf/deps current-theme)
(fn [group-path]
(ctob/sets-at-path-all-active? lib group-path)))
token-set-active?
(mf/use-fn
- (mf/deps theme-state)
+ (mf/deps current-theme)
(fn [name]
- (contains? (:sets theme-state) name)))
+ (contains? (:sets current-theme) name)))
on-toggle-token-set
(mf/use-fn
- (mf/deps theme-state)
+ (mf/deps current-theme)
(fn [set-name]
- (swap! theme-state* #(ctob/toggle-set % set-name))))
+ (swap! current-theme* #(ctob/toggle-set % set-name))))
on-toggle-token-set-group
(mf/use-fn
- (mf/deps theme-state ordered-token-sets)
+ (mf/deps current-theme ordered-token-sets)
(fn [group-path]
- (swap! theme-state* (fn [theme']
- (let [lib' (make-lib-with-theme theme' ordered-token-sets)]
- (clt/toggle-token-set-group group-path lib' theme'))))))
+ (swap! current-theme* (fn [theme']
+ (let [lib' (make-lib-with-theme theme' ordered-token-sets)]
+ (clt/toggle-token-set-group group-path lib' theme'))))))
on-click-token-set
(mf/use-fn
@@ -381,17 +331,20 @@
[:div {:class (stl/css :themes-modal-wrapper)}
[:> heading* {:level 2 :typography "headline-medium" :class (stl/css :themes-modal-title)}
- (tr "workspace.token.edit-theme-title")]
+ (if is-editing
+ (tr "workspace.token.edit-theme-title")
+ (tr "workspace.token.add-new-theme"))]
[:form {:on-submit on-save-form :class (stl/css :edit-theme-form)}
[:div {:class (stl/css :edit-theme-wrapper)}
- [:button {:on-click on-back
- :class (stl/css :back-btn)
- :type "button"}
- [:> icon* {:icon-id ic/arrow-left :aria-hidden true}]
- (tr "workspace.token.back-to-themes")]
+ (when has-prev-view
+ [:button {:on-click on-back
+ :class (stl/css :back-btn)
+ :type "button"}
+ [:> icon* {:icon-id ic/arrow-left :aria-hidden true}]
+ (tr "workspace.token.back-to-themes")])
- [:> theme-inputs* {:theme theme
+ [:> theme-inputs* {:theme current-theme
:on-change-field on-change-field}]
[:> text* {:as "span" :typography "body-small" :class (stl/css :select-sets-message)}
(tr "workspace.token.set-selection-theme")]
@@ -408,31 +361,80 @@
:origin "theme-modal"}]]
[:div {:class (stl/css :edit-theme-footer)}
- [:> button* {:variant "secondary"
- :type "button"
- :icon "delete"
- :on-click on-delete-token}
- (tr "labels.delete")]
+ (when is-editing
+ [:> button* {:variant "secondary"
+ :type "button"
+ :icon "delete"
+ :on-click on-delete-theme}
+ (tr "labels.delete")])
[:div {:class (stl/css :button-footer)}
[:> theme-modal-buttons* {:close-modal close-modal
:on-save-form on-save-form
:disabled? disabled?}]]]]]]))
+(defn has-prev-view [prev-view-type]
+ (contains? #{:empty-themes :themes-overview} prev-view-type))
+
+(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))
+ 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'))))]
+
+ [:> edit-create-theme*
+ {:change-view change-view
+ :theme theme
+ :on-save on-save
+ :is-editing true
+ :has-prev-view has-prev-view}]))
+
+(mf/defc create-theme
+ [{:keys [state change-view]}]
+ (let [theme (ctob/make-token-theme :name "")
+ on-save
+ (mf/use-fn
+ (fn [theme]
+ (st/emit! (ptk/event ::ev/event {::ev/name "create-tokens-theme"})
+ (dwtl/create-token-theme theme))))
+ has-prev-view (has-prev-view (:prev-type state))]
+
+ [:> edit-create-theme*
+ {:change-view change-view
+ :theme theme
+ :on-save on-save
+ :has-prev-view has-prev-view}]))
+
(mf/defc themes-modal-body*
{::mf/private true}
[]
- (let [themes (mf/deref refs/workspace-token-themes-no-hidden)
- state (mf/use-state #(if (empty? themes)
- {:type :create-theme}
- {:type :themes-overview}))
- set-state (mf/use-fn #(swap! state %))
- component (case (:type @state)
+ (let [themes (mf/deref refs/workspace-token-themes-no-hidden)
+ state* (mf/use-state #(if (empty? themes)
+ {:type :create-theme}
+ {:type :themes-overview}))
+ state (deref state*)
+
+ change-view (mf/use-fn
+ (fn [type & {:keys [theme-path]}]
+ (swap! state* (fn [current-state]
+ (cond-> current-state
+ :always (assoc :type type
+ :prev-type (:type current-state))
+ :theme-path (assoc :theme-path theme-path))))))
+
+ component (case (:type state)
:empty-themes empty-themes
:themes-overview (if (empty? themes) empty-themes themes-overview)
- :edit-theme controlled-edit-theme
+ :edit-theme edit-theme
:create-theme create-theme)]
[:& component {:state state
- :set-state set-state}]))
+ :change-view change-view}]))
(mf/defc token-themes-modal
{::mf/wrap-props false
diff --git a/frontend/src/app/main/ui/workspace/tokens/modals/themes.scss b/frontend/src/app/main/ui/workspace/tokens/modals/themes.scss
index f7e15d6abc..59e57a2b1c 100644
--- a/frontend/src/app/main/ui/workspace/tokens/modals/themes.scss
+++ b/frontend/src/app/main/ui/workspace/tokens/modals/themes.scss
@@ -68,6 +68,7 @@
.button-footer {
display: flex;
+ margin-left: auto;
justify-content: flex-end;
gap: $s-6;
}
diff --git a/frontend/src/app/main/ui/workspace/tokens/sets.cljs b/frontend/src/app/main/ui/workspace/tokens/sets.cljs
index 0ff9f15831..e3d480da99 100644
--- a/frontend/src/app/main/ui/workspace/tokens/sets.cljs
+++ b/frontend/src/app/main/ui/workspace/tokens/sets.cljs
@@ -10,7 +10,7 @@
[app.common.data.macros :as dm]
[app.common.types.tokens-lib :as ctob]
[app.main.data.event :as ev]
- [app.main.data.tokens :as dt]
+ [app.main.data.workspace.tokens.library-edit :as dwtl]
[app.main.refs :as refs]
[app.main.store :as st]
[app.main.ui.context :as ctx]
@@ -31,26 +31,26 @@
(defn- on-start-creation
[]
- (st/emit! (dt/start-token-set-creation [])))
+ (st/emit! (dwtl/start-token-set-creation [])))
(defn- on-toggle-token-set-click [name]
- (st/emit! (dt/toggle-token-set name)))
+ (st/emit! (dwtl/toggle-token-set name)))
(defn- on-toggle-token-set-group-click [path]
- (st/emit! (dt/toggle-token-set-group path)))
+ (st/emit! (dwtl/toggle-token-set-group path)))
(defn- on-select-token-set-click [name]
- (st/emit! (dt/set-selected-token-set-name name)))
+ (st/emit! (dwtl/set-selected-token-set-name name)))
(defn on-update-token-set
[token-set name]
- (st/emit! (dt/clear-token-set-edition)
- (dt/update-token-set token-set name)))
+ (st/emit! (dwtl/clear-token-set-edition)
+ (dwtl/update-token-set token-set name)))
(defn- on-update-token-set-group
[path name]
- (st/emit! (dt/clear-token-set-edition)
- (dt/rename-token-set-group path name)))
+ (st/emit! (dwtl/clear-token-set-edition)
+ (dwtl/rename-token-set-group path name)))
(defn- on-create-token-set
[parent-set name]
@@ -63,7 +63,7 @@
(ctob/normalize-set-name name))]
(st/emit! (ptk/data-event ::ev/event {::ev/name "create-token-set" :name name})
- (dt/create-token-set name))))
+ (dwtl/create-token-set name))))
(defn group-edition-id
"Prefix editing groups `edition-id` so it can be differentiated from sets with the same id."
@@ -167,7 +167,7 @@
(dom/prevent-default event)
(dom/stop-propagation event)
(when (and can-edit? (not is-editing))
- (st/emit! (dt/assign-token-set-context-menu
+ (st/emit! (dwtl/assign-token-set-context-menu
{:position (dom/get-client-position event)
:is-group true
:id id
@@ -270,7 +270,7 @@
(dom/prevent-default event)
(dom/stop-propagation event)
(when (and can-edit? (not is-editing))
- (st/emit! (dt/assign-token-set-context-menu
+ (st/emit! (dwtl/assign-token-set-context-menu
{:position (dom/get-client-position event)
:is-group false
:id id
@@ -383,8 +383,8 @@
:position position
:collapsed-paths collapsed-paths}]
(if (:is-group data)
- (st/emit! (dt/drop-token-set-group params))
- (st/emit! (dt/drop-token-set params))))))
+ (st/emit! (dwtl/drop-token-set-group params))
+ (st/emit! (dwtl/drop-token-set params))))))
on-toggle-collapse
(mf/use-fn
@@ -560,15 +560,15 @@
(mf/deps can-edit?)
(fn [_]
(when can-edit?
- (st/emit! (dt/clear-token-set-edition)
- (dt/clear-token-set-creation)))))
+ (st/emit! (dwtl/clear-token-set-edition)
+ (dwtl/clear-token-set-creation)))))
on-start-edition
(mf/use-fn
(mf/deps can-edit?)
(fn [id]
(when can-edit?
- (st/emit! (dt/start-token-set-edition id)))))]
+ (st/emit! (dwtl/start-token-set-edition id)))))]
[:> controlled-sets-list*
{:token-sets token-sets
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 029244de5b..e9c599697a 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
@@ -8,7 +8,7 @@
(:require-macros [app.main.style :as stl])
(:require
[app.common.data.macros :as dm]
- [app.main.data.tokens :as dt]
+ [app.main.data.workspace.tokens.library-edit :as dwtl]
[app.main.refs :as refs]
[app.main.store :as st]
[app.main.ui.components.dropdown :refer [dropdown]]
@@ -36,23 +36,31 @@
{::mf/private true}
[{:keys [is-group id edition-id path]}]
(let [create-set-at-path
- (mf/use-fn (mf/deps path) #(st/emit! (dt/start-token-set-creation path)))
+ (mf/use-fn (mf/deps path) #(st/emit! (dwtl/start-token-set-creation path)))
on-edit
(mf/use-fn
(mf/deps id)
(fn []
- (st/emit! (dt/start-token-set-edition edition-id))))
+ (st/emit! (dwtl/start-token-set-edition edition-id))))
+
+ on-duplicate
+ (mf/use-fn
+ (mf/deps is-group id)
+ (fn []
+ (st/emit! (dwtl/duplicate-token-set id is-group))))
on-delete
(mf/use-fn
(mf/deps is-group path)
- #(st/emit! (dt/delete-token-set-path is-group path)))]
+ #(st/emit! (dwtl/delete-token-set-path is-group path)))]
[:ul {:class (stl/css :context-list)}
(when is-group
[:> menu-entry* {:title (tr "workspace.token.add-set-to-group") :on-click create-set-at-path}])
[:> menu-entry* {:title (tr "labels.rename") :on-click on-edit}]
+ (when-not is-group
+ [:> menu-entry* {:title (tr "labels.duplicate") :on-click on-duplicate}])
[:> menu-entry* {:title (tr "labels.delete") :on-click on-delete}]]))
(mf/defc token-set-context-menu*
@@ -67,7 +75,7 @@
(+ (dm/get-prop position :x) 5)
on-close
- (mf/use-fn #(st/emit! (dt/assign-token-set-context-menu nil)))]
+ (mf/use-fn #(st/emit! (dwtl/assign-token-set-context-menu nil)))]
[:& dropdown {:show (some? position)
:on-close on-close}
diff --git a/frontend/src/app/main/ui/workspace/tokens/sidebar.cljs b/frontend/src/app/main/ui/workspace/tokens/sidebar.cljs
index 5cb6da341b..a95adfa4d6 100644
--- a/frontend/src/app/main/ui/workspace/tokens/sidebar.cljs
+++ b/frontend/src/app/main/ui/workspace/tokens/sidebar.cljs
@@ -13,11 +13,13 @@
[app.main.data.event :as ev]
[app.main.data.modal :as modal]
[app.main.data.notifications :as ntf]
- [app.main.data.tokens :as dt]
+ [app.main.data.style-dictionary :as sd]
+ [app.main.data.workspace.tokens.application :as dwta]
+ [app.main.data.workspace.tokens.errors :as wte]
+ [app.main.data.workspace.tokens.library-edit :as dwtl]
[app.main.refs :as refs]
[app.main.store :as st]
- [app.main.ui.components.dropdown-menu :refer [dropdown-menu
- dropdown-menu-item*]]
+ [app.main.ui.components.dropdown-menu :refer [dropdown-menu dropdown-menu-item*]]
[app.main.ui.components.title-bar :refer [title-bar]]
[app.main.ui.context :as ctx]
[app.main.ui.ds.buttons.button :refer [button*]]
@@ -27,12 +29,9 @@
[app.main.ui.hooks :as h]
[app.main.ui.hooks.resize :refer [use-resize-hook]]
[app.main.ui.workspace.sidebar.assets.common :as cmm]
- [app.main.ui.workspace.tokens.changes :as wtch]
[app.main.ui.workspace.tokens.context-menu :refer [token-context-menu]]
- [app.main.ui.workspace.tokens.errors :as wte]
[app.main.ui.workspace.tokens.sets :as tsets]
[app.main.ui.workspace.tokens.sets-context-menu :refer [token-set-context-menu*]]
- [app.main.ui.workspace.tokens.style-dictionary :as sd]
[app.main.ui.workspace.tokens.theme-select :refer [theme-select]]
[app.main.ui.workspace.tokens.token-pill :refer [token-pill*]]
[app.util.array :as array]
@@ -71,7 +70,7 @@
{::mf/private true}
[{:keys [type tokens selected-shapes active-theme-tokens is-open]}]
(let [{:keys [modal title]}
- (get wtch/token-properties type)
+ (get dwta/token-properties type)
can-edit?
(mf/use-ctx ctx/can-edit?)
@@ -84,7 +83,7 @@
(mf/use-fn
(fn [event token]
(dom/prevent-default event)
- (st/emit! (dt/assign-token-context-menu
+ (st/emit! (dwtl/assign-token-context-menu
{:type :token
:position (dom/get-client-position event)
:errors (:errors token)
@@ -93,14 +92,14 @@
on-toggle-open-click
(mf/use-fn
(mf/deps is-open type)
- #(st/emit! (dt/set-token-type-section-open type (not is-open))))
+ #(st/emit! (dwtl/set-token-type-section-open type (not is-open))))
on-popover-open-click
(mf/use-fn
(mf/deps type title modal)
(fn [event]
(dom/stop-propagation event)
- (st/emit! (dt/set-token-type-section-open type true)
+ (st/emit! (dwtl/set-token-type-section-open type true)
;; FIXME: use dom/get-client-position
(modal/show (:key modal)
{:x (.-clientX ^js event)
@@ -117,7 +116,7 @@
(fn [event token]
(dom/stop-propagation event)
(when (seq selected-shapes)
- (st/emit! (wtch/toggle-token {:token token
+ (st/emit! (dwta/toggle-token {:token token
:shapes selected-shapes})))))]
[:div {:on-click on-toggle-open-click :class (stl/css :token-section-wrapper)}
@@ -152,7 +151,7 @@
[tokens-by-type]
(loop [empty #js []
filled #js []
- types (-> wtch/token-properties keys seq)]
+ types (-> dwta/token-properties keys seq)]
(if-let [type (first types)]
(if (not-empty (get tokens-by-type type))
(recur empty
@@ -304,6 +303,16 @@
tokens)]
(ctob/group-by-type tokens)))
+ active-token-sets-names
+ (mf/with-memo [tokens-lib]
+ (some-> tokens-lib (ctob/get-active-themes-set-names)))
+
+ token-set-active?
+ (mf/use-fn
+ (mf/deps active-token-sets-names)
+ (fn [name]
+ (contains? active-token-sets-names name)))
+
[empty-group filled-group]
(mf/with-memo [tokens-by-type]
(get-sorted-token-groups tokens-by-type))]
@@ -316,11 +325,22 @@
(let [match (->> (ctob/get-sets tokens-lib)
(first)
(:name))]
- (st/emit! (dt/set-selected-token-set-name match)))))
+ (st/emit! (dwtl/set-selected-token-set-name match)))))
[:*
[:& token-context-menu]
- [:span {:class (stl/css :sets-header)} (tr "workspace.token.tokens-section-title" selected-token-set-name)]
+ [:div {:class (stl/css :sets-header-container)}
+ [:span {:class (stl/css :sets-header)} (tr "workspace.token.tokens-section-title" selected-token-set-name)]
+ [:div {:class (stl/css :sets-header-status) :title (tr "workspace.token.inactive-set-description")}
+ ;; NOTE: when no set in tokens-lib, the selected-token-set-name
+ ;; 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)))
+ [:*
+ [:> i/icon* {:class (stl/css :sets-header-status-icon) :icon-id i/eye-off}]
+ [:span {:class (stl/css :sets-header-status-text)}
+ (tr "workspace.token.inactive-set")]])]]
(for [type filled-group]
(let [tokens (get tokens-by-type type)]
@@ -374,10 +394,11 @@
(sd/process-json-stream {:file-name file-name})
(rx/subs! (fn [lib]
(st/emit! (ptk/data-event ::ev/event {::ev/name "import-tokens"})
- (dt/import-tokens-lib lib)))
+ (dwtl/import-tokens-lib lib)))
(fn [err]
(js/console.error err)
(st/emit! (ntf/show {:content (wte/humanize-errors [(ex-data err)])
+ :detail (wte/detail-errors [(ex-data err)])
:type :toast
:level :error})))))
(-> (mf/ref-val input-ref)
diff --git a/frontend/src/app/main/ui/workspace/tokens/sidebar.scss b/frontend/src/app/main/ui/workspace/tokens/sidebar.scss
index 6828a46655..02969a2ad1 100644
--- a/frontend/src/app/main/ui/workspace/tokens/sidebar.scss
+++ b/frontend/src/app/main/ui/workspace/tokens/sidebar.scss
@@ -39,7 +39,7 @@
}
.themes-header,
-.sets-header {
+.sets-header-container {
@include use-typography("headline-small");
display: block;
padding: $s-8;
@@ -47,10 +47,31 @@
word-break: break-word;
}
-.sets-header {
+.sets-header-container {
+ display: flex;
+ align-items: flex-start;
+ justify-content: space-between;
+ gap: $s-4;
margin-block-start: $s-8;
}
+.sets-header {
+ flex: 1;
+}
+
+.sets-header-status {
+ @include use-typography("body-small");
+ text-transform: none;
+ color: var(--color-foreground-secondary);
+ display: flex;
+ align-items: center;
+ gap: $s-4;
+}
+
+.sets-header-status-text {
+ font-style: italic;
+}
+
.themes-wrapper {
padding: $s-12 0 0 $s-12;
}
@@ -172,12 +193,14 @@
}
.resize-area-horiz {
+ background-color: var(--panel-background-color);
position: absolute;
left: 0;
width: 100%;
padding: $s-3 0 $s-1 0;
height: $s-6;
cursor: ns-resize;
+ z-index: 1;
}
.resize-handle-horiz {
diff --git a/frontend/src/app/main/ui/workspace/tokens/theme_select.cljs b/frontend/src/app/main/ui/workspace/tokens/theme_select.cljs
index 9eaba56d9e..0d2be3905d 100644
--- a/frontend/src/app/main/ui/workspace/tokens/theme_select.cljs
+++ b/frontend/src/app/main/ui/workspace/tokens/theme_select.cljs
@@ -11,7 +11,7 @@
[app.common.types.tokens-lib :as ctob]
[app.common.uuid :as uuid]
[app.main.data.modal :as modal]
- [app.main.data.tokens :as wdt]
+ [app.main.data.workspace.tokens.library-edit :as dwtl]
[app.main.refs :as refs]
[app.main.store :as st]
[app.main.ui.components.dropdown :refer [dropdown]]
@@ -31,7 +31,7 @@
selected? (get active-theme-paths theme-id)
select-theme (fn [e]
(dom/stop-propagation e)
- (st/emit! (wdt/toggle-token-theme-active? group name))
+ (st/emit! (dwtl/toggle-token-theme-active? group name))
(on-close))]]
[:li {:key theme-id
:role "option"
diff --git a/frontend/src/app/main/ui/workspace/tokens/token_pill.cljs b/frontend/src/app/main/ui/workspace/tokens/token_pill.cljs
index 2f375cf56d..2e5e5180d5 100644
--- a/frontend/src/app/main/ui/workspace/tokens/token_pill.cljs
+++ b/frontend/src/app/main/ui/workspace/tokens/token_pill.cljs
@@ -11,12 +11,13 @@
(:require
[app.common.data :as d]
[app.common.files.helpers :as cfh]
+ [app.common.files.tokens :as cft]
+ [app.main.data.workspace.tokens.application :as dwta]
+ [app.main.data.workspace.tokens.color :as dwtc]
[app.main.refs :as refs]
[app.main.ui.components.color-bullet :refer [color-bullet]]
[app.main.ui.ds.foundations.assets.icon :refer [icon*]]
[app.main.ui.ds.foundations.utilities.token.token-status :refer [token-status-icon*]]
- [app.main.ui.workspace.tokens.changes :as wtch]
- [app.main.ui.workspace.tokens.token :as wtt]
[app.util.dom :as dom]
[app.util.i18n :refer [tr]]
[cuerdas.core :as str]
@@ -80,6 +81,7 @@
:y "Y"})
;; Helper functions
+
(defn partially-applied-attr
"Translates partially applied attributes based on the dictionary."
[app-token-keys is-applied {:keys [attributes all-attributes]}]
@@ -106,7 +108,7 @@
(let [{:keys [name value type resolved-value]} token
resolved-value-theme (:resolved-value theme-token)
resolved-value (or resolved-value-theme resolved-value)
- {:keys [title] :as token-props} (wtch/get-token-properties theme-token)
+ {:keys [title] :as token-props} (dwta/get-token-properties theme-token)
applied-tokens (:applied-tokens shape)
app-token-vals (set (vals applied-tokens))
app-token-keys (keys applied-tokens)
@@ -156,9 +158,9 @@
(defn- applied-all-attributes?
[token selected-shapes attributes]
- (let [ids-by-attributes (wtt/shapes-ids-by-applied-attributes token selected-shapes attributes)
+ (let [ids-by-attributes (cft/shapes-ids-by-applied-attributes token selected-shapes attributes)
shape-ids (into #{} xf:map-id selected-shapes)]
- (wtt/shapes-applied-all? ids-by-attributes shape-ids attributes)))
+ (cft/shapes-applied-all? ids-by-attributes shape-ids attributes)))
(mf/defc token-pill*
{::mf/wrap [mf/memo]}
@@ -166,11 +168,11 @@
(let [{:keys [name value errors]} token
has-selected? (pos? (count selected-shapes))
- is-reference? (wtt/is-reference? token)
+ is-reference? (cft/is-reference? token)
contains-path? (str/includes? name ".")
{:keys [attributes all-attributes]}
- (get wtch/token-properties (:type token))
+ (get dwta/token-properties (:type token))
full-applied?
(if has-selected?
@@ -179,7 +181,7 @@
applied?
(if has-selected?
- (wtt/shapes-token-applied? token selected-shapes (d/nilv all-attributes attributes))
+ (cft/shapes-token-applied? token selected-shapes (d/nilv all-attributes attributes))
false)
half-applied?
@@ -201,10 +203,10 @@
no-valid-value)
color
- (when (wtt/color-token? token)
+ (when (cft/color-token? token)
(let [theme-token (get active-theme-tokens (:name token))]
- (or (wtt/resolved-token-bullet-color theme-token)
- (wtt/resolved-token-bullet-color token))))
+ (or (dwtc/resolved-token-bullet-color theme-token)
+ (dwtc/resolved-token-bullet-color token))))
on-click
(mf/use-fn
diff --git a/frontend/src/app/main/ui/workspace/tokens/token_set.cljs b/frontend/src/app/main/ui/workspace/tokens/token_set.cljs
deleted file mode 100644
index 37717e0581..0000000000
--- a/frontend/src/app/main/ui/workspace/tokens/token_set.cljs
+++ /dev/null
@@ -1,45 +0,0 @@
-(ns app.main.ui.workspace.tokens.token-set
- (:require
- [app.common.types.tokens-lib :as ctob]
- [app.main.data.helpers :as dsh]))
-
-(defn get-workspace-tokens-lib
- [state]
- (-> (dsh/lookup-file-data state)
- (get :tokens-lib)))
-
-;; Themes ----------------------------------------------------------------------
-
-(defn get-active-theme-ids
- [state]
- (-> (dsh/lookup-file-data state)
- (get :token-active-themes #{})))
-
-(defn get-temp-theme-id
- [state]
- (-> (dsh/lookup-file-data state)
- (get :token-theme-temporary-id)))
-
-(defn update-theme-id
- [state]
- (let [active-themes (get-active-theme-ids state)
- temporary-theme-id (get-temp-theme-id state)]
- (cond
- (empty? active-themes) temporary-theme-id
- (= 1 (count active-themes)) (first active-themes)
- :else temporary-theme-id)))
-
-(defn get-workspace-token-theme
- [id state]
- (-> (dsh/lookup-file-data state)
- (get :token-themes-index)
- (get id)))
-
-(defn add-token-set-to-token-theme [token-set-id token-theme]
- (update token-theme :sets conj token-set-id))
-
- ;; Sets ------------------------------------------------------------------------
-
-(defn get-active-theme-sets-tokens-names-map [state]
- (when-let [lib (get-workspace-tokens-lib state)]
- (ctob/get-active-themes-set-tokens lib)))
diff --git a/frontend/src/app/main/ui/workspace/viewport/comments.cljs b/frontend/src/app/main/ui/workspace/viewport/comments.cljs
index 2b67b9b6ab..e9e0a4d0d3 100644
--- a/frontend/src/app/main/ui/workspace/viewport/comments.cljs
+++ b/frontend/src/app/main/ui/workspace/viewport/comments.cljs
@@ -86,4 +86,5 @@
{:draft draft
:on-cancel on-draft-cancel
:on-submit on-draft-submit
+ :viewport viewport
:zoom zoom}])]]]))
diff --git a/frontend/src/app/main/ui/workspace/viewport/outline.cljs b/frontend/src/app/main/ui/workspace/viewport/outline.cljs
index 41b67bc998..0043a3fe82 100644
--- a/frontend/src/app/main/ui/workspace/viewport/outline.cljs
+++ b/frontend/src/app/main/ui/workspace/viewport/outline.cljs
@@ -11,6 +11,7 @@
[app.common.exceptions :as ex]
[app.common.files.helpers :as cfh]
[app.common.geom.shapes :as gsh]
+ [app.common.types.component :as ctk]
[app.common.types.container :as ctn]
[app.main.refs :as refs]
[app.main.ui.hooks :as hooks]
@@ -32,7 +33,9 @@
;; NOTE: that we don't use mf/deref to avoid a repaint dependency here
objects (deref refs/workspace-page-objects)
- color (if (ctn/in-any-component? objects shape)
+ color (if (or
+ (ctn/in-any-component? objects shape)
+ (ctk/is-variant-container? shape))
"var(--assets-component-hightlight)"
"var(--color-accent-tertiary)")
diff --git a/frontend/src/app/main/ui/workspace/viewport/selection.cljs b/frontend/src/app/main/ui/workspace/viewport/selection.cljs
index 98ce5a047c..a3b4005f0c 100644
--- a/frontend/src/app/main/ui/workspace/viewport/selection.cljs
+++ b/frontend/src/app/main/ui/workspace/viewport/selection.cljs
@@ -12,6 +12,7 @@
[app.common.geom.matrix :as gmt]
[app.common.geom.point :as gpt]
[app.common.geom.shapes :as gsh]
+ [app.common.types.component :as ctk]
[app.common.types.container :as ctn]
[app.common.types.shape :as cts]
[app.main.data.workspace :as dw]
@@ -530,7 +531,9 @@
;; Note that we don't use mf/deref to avoid a repaint dependency here
objects (deref refs/workspace-page-objects)
- color (if (and (= total 1) ^boolean (ctn/in-any-component? objects shape))
+ color (if (and (= total 1) ^boolean
+ (or (ctn/in-any-component? objects shape)
+ (ctk/is-variant-container? shape)))
selection-rect-color-component
selection-rect-color-normal)]
@@ -577,7 +580,9 @@
;; Note that we don't use mf/deref to avoid a repaint dependency here
objects (deref refs/workspace-page-objects)
- color (if (and (= total 1) ^boolean (ctn/in-any-component? objects shape))
+ color (if (and (= total 1) ^boolean
+ (or (ctn/in-any-component? objects shape)
+ (ctk/is-variant-container? shape)))
selection-rect-color-component
selection-rect-color-normal)]
diff --git a/frontend/src/app/main/ui/workspace/viewport/widgets.cljs b/frontend/src/app/main/ui/workspace/viewport/widgets.cljs
index dcc3f1eefc..2923952a6e 100644
--- a/frontend/src/app/main/ui/workspace/viewport/widgets.cljs
+++ b/frontend/src/app/main/ui/workspace/viewport/widgets.cljs
@@ -92,7 +92,7 @@
objects (deref refs/workspace-page-objects)
color (if selected?
- (if (ctn/in-any-component? objects frame)
+ (if (or (ctn/in-any-component? objects frame) (ctk/is-variant-container? frame))
"var(--assets-component-hightlight)"
"var(--color-accent-tertiary)")
"#8f9da3") ;; TODO: Set this color on the DS
@@ -251,8 +251,7 @@
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")
- components-v2 (mf/use-ctx ctx/components-v2)
- shapes (ctt/get-frames objects {:skip-copies? components-v2})
+ shapes (ctt/get-frames objects {:skip-copies? true})
shapes (if (dbg/enabled? :shape-titles)
(into (set shapes)
(map (d/getf objects))
diff --git a/frontend/src/app/main/ui/workspace/viewport_wasm.cljs b/frontend/src/app/main/ui/workspace/viewport_wasm.cljs
index 3f41a55d0f..b07e3893dd 100644
--- a/frontend/src/app/main/ui/workspace/viewport_wasm.cljs
+++ b/frontend/src/app/main/ui/workspace/viewport_wasm.cljs
@@ -26,7 +26,6 @@
[app.main.ui.workspace.shapes.text.editor :as editor-v1]
[app.main.ui.workspace.shapes.text.text-edition-outline :refer [text-edition-outline]]
[app.main.ui.workspace.shapes.text.v2-editor :as editor-v2]
- [app.main.ui.workspace.shapes.text.viewport-texts-html :as stvh]
[app.main.ui.workspace.viewport.actions :as actions]
[app.main.ui.workspace.viewport.comments :as comments]
[app.main.ui.workspace.viewport.debug :as wvd]
@@ -51,6 +50,7 @@
[app.main.ui.workspace.viewport.widgets :as widgets]
[app.render-wasm.api :as wasm.api]
[app.util.debug :as dbg]
+ [app.util.text-editor :as ted]
[beicon.v2.core :as rx]
[promesa.core :as p]
[rumext.v2 :as mf]))
@@ -102,6 +102,10 @@
drawing (mf/deref refs/workspace-drawing)
focus (mf/deref refs/workspace-focus-selected)
+ workspace-editor-state (mf/deref refs/workspace-editor-state)
+ workspace-v2-editor-state (mf/deref refs/workspace-v2-editor-state)
+
+ file-id (get file :id)
objects (get page :objects)
page-id (get page :id)
background (get page :background clr/canvas)
@@ -139,6 +143,7 @@
on-viewport-ref] (create-viewport-ref)
canvas-ref (mf/use-ref nil)
+ text-editor-ref (mf/use-ref nil)
;; VARS
disable-paste (mf/use-var false)
@@ -288,14 +293,22 @@
(fn []
(wasm.api/clear-canvas))))
+ (mf/with-effect [show-text-editor? workspace-editor-state workspace-v2-editor-state edition]
+ (let [editor-state (get workspace-editor-state edition)
+ v2-editor-state (get workspace-v2-editor-state edition)
+ active-editor-state (or v2-editor-state editor-state)]
+ (when (and show-text-editor? active-editor-state)
+ (let [content (-> active-editor-state
+ (ted/get-editor-current-content)
+ (ted/export-content))]
+ (wasm.api/set-shape-text-content content)
+ (wasm.api/clear-drawing-cache)
+ (wasm.api/request-render "content")))))
+
(mf/with-effect [vport]
(when @canvas-init?
(wasm.api/resize-viewbox (:width vport) (:height vport))))
- (mf/with-effect [@canvas-init? base-objects]
- (when (and @canvas-init? @initialized?)
- (wasm.api/set-objects base-objects)))
-
(mf/with-effect [@canvas-init? preview-blend]
(when (and @canvas-init? preview-blend)
(wasm.api/request-render "with-effect")))
@@ -326,24 +339,10 @@
(when (:can-edit permissions)
[:& top-bar/top-bar {:layout layout}])
[:div {:class (stl/css :viewport-overlays)}
- ;; The behaviour inside a foreign object is a bit different that in plain HTML so we wrap
- ;; inside a foreign object "dummy" so this awkward behaviour is take into account
- [:svg {:style {:top 0 :left 0 :position "fixed" :width "100%" :height "100%" :opacity (when-not (dbg/enabled? :html-text) 0)}}
- [:foreignObject {:x 0 :y 0 :width "100%" :height "100%"}
- [:div {:style {:pointer-events (when-not (dbg/enabled? :html-text) "none")
- ;; some opacity because to debug auto-width events will fill the screen
- :opacity 0.6}}
- (when (and (:can-edit permissions) (not read-only?))
- [:& stvh/viewport-texts
- {:key (dm/str "texts-" page-id)
- :page-id page-id
- :objects objects
- :modifiers modifiers
- :edition edition}])]]]
-
(when show-comments?
[:> comments/comments-layer* {:vbox vbox
:page-id page-id
+ :file-id file-id
:vport vport
:zoom zoom}])
@@ -372,7 +371,6 @@
:class (dm/str @cursor (when drawing-tool " drawing") " " (stl/css :viewport-controls))
:style {:touch-action "none"}
:fill "none"
-
:on-click on-click
:on-context-menu on-context-menu
:on-double-click on-double-click
@@ -398,8 +396,10 @@
(when show-text-editor?
(if (features/active-feature? @st/state "text-editor/v2")
[:& editor-v2/text-editor {:shape editing-shape
+ :ref text-editor-ref
:modifiers modifiers}]
[:& editor-v1/text-editor-svg {:shape editing-shape
+ :ref text-editor-ref
:modifiers modifiers}]))
(when show-frame-outline?
diff --git a/frontend/src/app/plugins/library.cljs b/frontend/src/app/plugins/library.cljs
index bd430ce729..a6291283c7 100644
--- a/frontend/src/app/plugins/library.cljs
+++ b/frontend/src/app/plugins/library.cljs
@@ -19,6 +19,7 @@
[app.main.data.workspace :as dw]
[app.main.data.workspace.libraries :as dwl]
[app.main.data.workspace.texts :as dwt]
+ [app.main.data.workspace.variants :as dwv]
[app.main.repo :as rp]
[app.main.store :as st]
[app.plugins.format :as format]
@@ -641,7 +642,7 @@
:else
(let [component (u/proxy->library-component self)
value (dm/str (d/nilv (:path component) "") " / " value)]
- (st/emit! (dwl/rename-component-and-main-instance id value)))))}
+ (st/emit! (dwv/rename-comp-or-variant-and-main id value)))))}
:path
{:this true
diff --git a/frontend/src/app/render.cljs b/frontend/src/app/render.cljs
index bc1fc3f967..90d7f1a0a4 100644
--- a/frontend/src/app/render.cljs
+++ b/frontend/src/app/render.cljs
@@ -143,17 +143,7 @@
nil)
(do
- (st/emit! (ptk/reify ::initialize-render-objects
- ptk/WatchEvent
- (watch [_ _ stream]
- (rx/merge
- (rx/of (fetch-team :file-id file-id))
-
- (->> stream
- (rx/filter (ptk/type? ::team-fetched))
- (rx/observe-on :async)
- (rx/map (constantly params))
- (rx/map fetch-objects-bundle))))))
+ (st/emit! (fetch-objects-bundle :file-id file-id :page-id page-id :share-id share-id :object-id object-id))
(if (uuid? object-id)
(mf/html
diff --git a/frontend/src/app/render_wasm/api.cljs b/frontend/src/app/render_wasm/api.cljs
index 1656e547f4..e28cc6c77e 100644
--- a/frontend/src/app/render_wasm/api.cljs
+++ b/frontend/src/app/render_wasm/api.cljs
@@ -10,32 +10,65 @@
["react-dom/server" :as rds]
[app.common.data :as d]
[app.common.data.macros :as dm]
- [app.common.geom.matrix :as gmt]
- [app.common.math :as mth]
- [app.common.svg.path :as path]
[app.common.types.shape.layout :as ctl]
+ [app.common.types.shape.path :as path]
[app.common.uuid :as uuid]
[app.config :as cf]
+ [app.main.fonts :as fonts]
[app.main.refs :as refs]
[app.main.render :as render]
- [app.main.store :as st]
- [app.main.ui.shapes.text.fontfaces :as fonts]
+ [app.render-wasm.api.fonts :as f]
+ [app.render-wasm.api.texts :as t]
+ [app.render-wasm.deserializers :as dr]
[app.render-wasm.helpers :as h]
+ [app.render-wasm.mem :as mem]
+ [app.render-wasm.performance :as perf]
+ [app.render-wasm.serializers :as sr]
+ [app.render-wasm.serializers.color :as sr-clr]
+ [app.render-wasm.serializers.fills :as sr-fills]
+ [app.render-wasm.wasm :as wasm]
[app.util.debug :as dbg]
[app.util.http :as http]
+ [app.util.perf :as uperf]
[app.util.webapi :as wapi]
[beicon.v2.core :as rx]
- [cuerdas.core :as str]
- [goog.object :as gobj]
- [lambdaisland.uri :as u]
- [okulary.core :as l]
[promesa.core :as p]
[rumext.v2 :as mf]))
-(defonce internal-frame-id nil)
-(defonce internal-module #js {})
+;; (defonce internal-frame-id nil)
+;; (defonce wasm/internal-module #js {})
(defonce use-dpr? (contains? cf/flags :render-wasm-dpr))
+;;
+;; List of common entry sizes.
+;;
+;; All of these entries are in bytes so we need to adjust
+;; these values to work with TypedArrays of 32 bits.
+;;
+(def CHILD-ENTRY-SIZE 16)
+(def MODIFIER-ENTRY-SIZE 40)
+(def MODIFIER-ENTRY-TRANSFORM-OFFSET 16)
+(def GRID-LAYOUT-ROW-ENTRY-SIZE 5)
+(def GRID-LAYOUT-COLUMN-ENTRY-SIZE 5)
+(def GRID-LAYOUT-CELL-ENTRY-SIZE 37)
+
+(defn modifier-get-entries-size
+ "Returns the list of a modifier list in bytes"
+ [modifiers]
+ (mem/get-list-size modifiers MODIFIER-ENTRY-SIZE))
+
+(defn grid-layout-get-row-entries-size
+ [rows]
+ (mem/get-list-size rows GRID-LAYOUT-ROW-ENTRY-SIZE))
+
+(defn grid-layout-get-column-entries-size
+ [columns]
+ (mem/get-list-size columns GRID-LAYOUT-COLUMN-ENTRY-SIZE))
+
+(defn grid-layout-get-cell-entries-size
+ [cells]
+ (mem/get-list-size cells GRID-LAYOUT-CELL-ENTRY-SIZE))
+
(def dpr
(if use-dpr? js/window.devicePixelRatio 1.0))
@@ -61,48 +94,29 @@
(rds/renderToStaticMarkup)))
;; This should never be called from the outside.
-;; This function receives a "time" parameter that we're not using but maybe in the future could be useful (it is the time since
-;; the window started rendering elements so it could be useful to measure time between frames).
(defn- render
- [_]
- (h/call internal-module "_render")
- (set! internal-frame-id nil))
+ [timestamp]
+ (h/call wasm/internal-module "_render" timestamp)
+ (set! wasm/internal-frame-id nil))
-(defn- rgba-from-hex
- "Takes a hex color in #rrggbb format, and an opacity value from 0 to 1 and returns its 32-bit rgba representation"
- [hex opacity]
- (let [rgb (js/parseInt (subs hex 1) 16)
- a (mth/floor (* (or opacity 1) 0xff))]
- ;; rgba >>> 0 so we have an unsigned representation
- (unsigned-bit-shift-right (bit-or (bit-shift-left a 24) rgb) 0)))
-(defn- rgba-bytes-from-hex
- "Takes a hex color in #rrggbb format, and an opacity value from 0 to 1 and returns an array with its r g b a values"
- [hex opacity]
- (let [rgb (js/parseInt (subs hex 1) 16)
- a (mth/floor (* (or opacity 1) 0xff))
- ;; rgba >>> 0 so we have an unsigned representation
- r (bit-shift-right rgb 16)
- g (bit-and (bit-shift-right rgb 8) 255)
- b (bit-and rgb 255)]
- [r g b a]))
(defn cancel-render
[_]
- (when internal-frame-id
- (js/cancelAnimationFrame internal-frame-id)
- (set! internal-frame-id nil)))
+ (when wasm/internal-frame-id
+ (js/cancelAnimationFrame wasm/internal-frame-id)
+ (set! wasm/internal-frame-id nil)))
(defn request-render
[requester]
- (when internal-frame-id (cancel-render requester))
+ (when wasm/internal-frame-id (cancel-render requester))
(let [frame-id (js/requestAnimationFrame render)]
- (set! internal-frame-id frame-id)))
+ (set! wasm/internal-frame-id frame-id)))
(defn use-shape
[id]
(let [buffer (uuid/get-u32 id)]
- (h/call internal-module "_use_shape"
+ (h/call wasm/internal-module "_use_shape"
(aget buffer 0)
(aget buffer 1)
(aget buffer 2)
@@ -111,7 +125,7 @@
(defn set-parent-id
[id]
(let [buffer (uuid/get-u32 id)]
- (h/call internal-module "_set_parent"
+ (h/call wasm/internal-module "_set_parent"
(aget buffer 0)
(aget buffer 1)
(aget buffer 2)
@@ -119,32 +133,19 @@
(defn set-shape-clip-content
[clip-content]
- (h/call internal-module "_set_shape_clip_content" clip-content))
-
-(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))
+ (h/call wasm/internal-module "_set_shape_clip_content" clip-content))
(defn set-shape-type
[type]
- (h/call internal-module "_set_shape_type" (translate-shape-type type)))
+ (h/call wasm/internal-module "_set_shape_type" (sr/translate-shape-type type)))
(defn set-masked
[masked]
- (h/call internal-module "_set_shape_masked_group" masked))
+ (h/call wasm/internal-module "_set_shape_masked_group" masked))
(defn set-shape-selrect
[selrect]
- (h/call internal-module "_set_shape_selrect"
+ (h/call wasm/internal-module "_set_shape_selrect"
(dm/get-prop selrect :x1)
(dm/get-prop selrect :y1)
(dm/get-prop selrect :x2)
@@ -152,7 +153,7 @@
(defn set-shape-transform
[transform]
- (h/call internal-module "_set_shape_transform"
+ (h/call wasm/internal-module "_set_shape_transform"
(dm/get-prop transform :a)
(dm/get-prop transform :b)
(dm/get-prop transform :c)
@@ -162,64 +163,29 @@
(defn set-shape-rotation
[rotation]
- (h/call internal-module "_set_shape_rotation" rotation))
+ (h/call wasm/internal-module "_set_shape_rotation" rotation))
(defn set-shape-children
[shape-ids]
- (h/call internal-module "_clear_shape_children")
- (run! (fn [id]
- (let [buffer (uuid/get-u32 id)]
- (h/call internal-module "_add_shape_child"
- (aget buffer 0)
- (aget buffer 1)
- (aget buffer 2)
- (aget buffer 3))))
- shape-ids))
+ (let [num-shapes (count shape-ids)]
+ (perf/begin-measure "set-shape-children")
+ (when (> num-shapes 0)
+ (let [offset (mem/alloc-bytes (* CHILD-ENTRY-SIZE num-shapes))
+ heap (mem/get-heap-u32)]
+
+ (loop [entries (seq shape-ids)
+ current-offset offset]
+ (when-not (empty? entries)
+ (let [id (first entries)]
+ (sr/heapu32-set-uuid id heap (mem/ptr8->ptr32 current-offset))
+ (recur (rest entries) (+ current-offset CHILD-ENTRY-SIZE)))))))
+
+ (let [result (h/call wasm/internal-module "_set_children")]
+ (perf/end-measure "set-shape-children")
+ result)))
(defn- get-string-length [string] (+ (count string) 1))
-;; IMPORTANT: It should be noted that only TTF fonts can be stored.
-(defn- store-font-buffer
- [font-data font-array-buffer]
- (let [id-buffer (:family-id-buffer font-data)
- size (.-byteLength font-array-buffer)
- ptr (h/call internal-module "_alloc_bytes" size)
- heap (gobj/get ^js internal-module "HEAPU8")
- mem (js/Uint8Array. (.-buffer heap) ptr size)]
- (.set mem (js/Uint8Array. font-array-buffer))
- (h/call internal-module "_store_font"
- (aget id-buffer 0)
- (aget id-buffer 1)
- (aget id-buffer 2)
- (aget id-buffer 3)
- (:weight font-data)
- (:style font-data))
- true))
-
-(defn- store-font-url
- [font-data font-url]
- (->> (http/send! {:method :get
- :uri font-url
- :response-type :blob})
- (rx/map :body)
- (rx/mapcat wapi/read-file-as-array-buffer)
- (rx/map (fn [array-buffer] (store-font-buffer font-data array-buffer)))))
-
-(defn- store-font-id
- [font-data asset-id]
- (when asset-id
- (let [uri (str (u/join cf/public-uri "assets/by-id/" asset-id))
- id-buffer (uuid/get-u32 (:family-id font-data))
- font-data (assoc font-data :family-id-buffer id-buffer)
- font-stored? (not= 0 (h/call internal-module "_is_font_uploaded"
- (aget id-buffer 0)
- (aget id-buffer 1)
- (aget id-buffer 2)
- (aget id-buffer 3)
- (:weight font-data)
- (:style font-data)))]
- (when-not font-stored? (store-font-url font-data uri)))))
-
(defn- store-image
[id]
@@ -231,12 +197,12 @@
(rx/map :body)
(rx/mapcat wapi/read-file-as-array-buffer)
(rx/map (fn [image]
- (let [image-size (.-byteLength image)
- image-ptr (h/call internal-module "_alloc_bytes" image-size)
- heap (gobj/get ^js internal-module "HEAPU8")
- mem (js/Uint8Array. (.-buffer heap) image-ptr image-size)]
- (.set mem (js/Uint8Array. image))
- (h/call internal-module "_store_image"
+ (let [size (.-byteLength image)
+ offset (mem/alloc-bytes size)
+ heap (mem/get-heap-u8)
+ data (js/Uint8Array. image)]
+ (.set heap data offset)
+ (h/call wasm/internal-module "_store_image"
(aget buffer 0)
(aget buffer 1)
(aget buffer 2)
@@ -245,51 +211,33 @@
(defn set-shape-fills
[fills]
- (h/call internal-module "_clear_shape_fills")
+ (h/call wasm/internal-module "_clear_shape_fills")
(keep (fn [fill]
(let [opacity (or (:fill-opacity fill) 1.0)
color (:fill-color fill)
gradient (:fill-color-gradient fill)
image (:fill-image fill)]
-
(cond
(some? color)
- (let [rgba (rgba-from-hex color opacity)]
- (h/call internal-module "_add_shape_solid_fill" rgba))
+ (let [rgba (sr-clr/hex->u32argb color opacity)]
+ (h/call wasm/internal-module "_add_shape_solid_fill" rgba))
(some? gradient)
- (let [stops (:stops gradient)
- n-stops (count stops)
- mem-size (* 5 n-stops)
- stops-ptr (h/call internal-module "_alloc_bytes" mem-size)
- heap (gobj/get ^js internal-module "HEAPU8")
- mem (js/Uint8Array. (.-buffer heap) stops-ptr mem-size)]
- (if (= (:type gradient) :linear)
- (h/call internal-module "_add_shape_linear_fill"
- (:start-x gradient)
- (:start-y gradient)
- (:end-x gradient)
- (:end-y gradient)
- opacity)
- (h/call internal-module "_add_shape_radial_fill"
- (:start-x gradient)
- (:start-y gradient)
- (:end-x gradient)
- (:end-y gradient)
- opacity
- (:width gradient)))
- (.set mem (js/Uint8Array. (clj->js (flatten (map (fn [stop]
- (let [[r g b a] (rgba-bytes-from-hex (:color stop) (:opacity stop))
- offset (:offset stop)]
- [r g b a (* 100 offset)]))
- stops)))))
- (h/call internal-module "_add_shape_fill_stops"))
+ (let [size sr-fills/GRADIENT-BYTE-SIZE
+ offset (mem/alloc-bytes size)
+ heap (mem/get-heap-u32)]
+ (sr-fills/write-gradient-fill! offset heap gradient opacity)
+ (case (:type gradient)
+ :linear
+ (h/call wasm/internal-module "_add_shape_linear_fill")
+ :radial
+ (h/call wasm/internal-module "_add_shape_radial_fill")))
(some? image)
(let [id (dm/get-prop image :id)
buffer (uuid/get-u32 id)
- cached-image? (h/call internal-module "_is_image_cached" (aget buffer 0) (aget buffer 1) (aget buffer 2) (aget buffer 3))]
- (h/call internal-module "_add_shape_image_fill"
+ cached-image? (h/call wasm/internal-module "_is_image_cached" (aget buffer 0) (aget buffer 1) (aget buffer 2) (aget buffer 3))]
+ (h/call wasm/internal-module "_add_shape_image_fill"
(aget buffer 0)
(aget buffer 1)
(aget buffer 2)
@@ -301,29 +249,9 @@
(store-image id))))))
fills))
-(defn- translate-stroke-style
- [stroke-style]
- (case stroke-style
- :dotted 1
- :dashed 2
- :mixed 3
- 0))
-
-(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))
-
(defn set-shape-strokes
[strokes]
- (h/call internal-module "_clear_shape_strokes")
+ (h/call wasm/internal-module "_clear_shape_strokes")
(keep (fn [stroke]
(let [opacity (or (:stroke-opacity stroke) 1.0)
color (:stroke-color stroke)
@@ -331,48 +259,31 @@
image (:stroke-image stroke)
width (:stroke-width stroke)
align (:stroke-alignment stroke)
- style (-> stroke :stroke-style translate-stroke-style)
- cap-start (-> stroke :stroke-cap-start translate-stroke-cap)
- cap-end (-> stroke :stroke-cap-end translate-stroke-cap)]
+ style (-> stroke :stroke-style sr/translate-stroke-style)
+ cap-start (-> stroke :stroke-cap-start sr/translate-stroke-cap)
+ cap-end (-> stroke :stroke-cap-end sr/translate-stroke-cap)]
(case align
- :inner (h/call internal-module "_add_shape_inner_stroke" width style cap-start cap-end)
- :outer (h/call internal-module "_add_shape_outer_stroke" width style cap-start cap-end)
- (h/call internal-module "_add_shape_center_stroke" width style cap-start cap-end))
+ :inner (h/call wasm/internal-module "_add_shape_inner_stroke" width style cap-start cap-end)
+ :outer (h/call wasm/internal-module "_add_shape_outer_stroke" width style cap-start cap-end)
+ (h/call wasm/internal-module "_add_shape_center_stroke" width style cap-start cap-end))
(cond
(some? gradient)
- (let [stops (:stops gradient)
- n-stops (count stops)
- mem-size (* 5 n-stops)
- stops-ptr (h/call internal-module "_alloc_bytes" mem-size)
- heap (gobj/get ^js internal-module "HEAPU8")
- mem (js/Uint8Array. (.-buffer heap) stops-ptr mem-size)]
- (if (= (:type gradient) :linear)
- (h/call internal-module "_add_shape_stroke_linear_fill"
- (:start-x gradient)
- (:start-y gradient)
- (:end-x gradient)
- (:end-y gradient)
- opacity)
- (h/call internal-module "_add_shape_stroke_radial_fill"
- (:start-x gradient)
- (:start-y gradient)
- (:end-x gradient)
- (:end-y gradient)
- opacity
- (:width gradient)))
- (.set mem (js/Uint8Array. (clj->js (flatten (map (fn [stop]
- (let [[r g b a] (rgba-bytes-from-hex (:color stop) (:opacity stop))
- offset (:offset stop)]
- [r g b a (* 100 offset)]))
- stops)))))
- (h/call internal-module "_add_shape_stroke_stops"))
+ (let [size sr-fills/GRADIENT-BYTE-SIZE
+ offset (mem/alloc-bytes size)
+ heap (mem/get-heap-u32)]
+ (sr-fills/write-gradient-fill! offset heap gradient opacity)
+ (case (:type gradient)
+ :linear
+ (h/call wasm/internal-module "_add_shape_stroke_linear_fill")
+ :radial
+ (h/call wasm/internal-module "_add_shape_stroke_radial_fill")))
(some? image)
(let [id (dm/get-prop image :id)
buffer (uuid/get-u32 id)
- cached-image? (h/call internal-module "_is_image_cached" (aget buffer 0) (aget buffer 1) (aget buffer 2) (aget buffer 3))]
- (h/call internal-module "_add_shape_image_stroke"
+ cached-image? (h/call wasm/internal-module "_is_image_cached" (aget buffer 0) (aget buffer 1) (aget buffer 2) (aget buffer 3))]
+ (h/call wasm/internal-module "_add_shape_image_stroke"
(aget buffer 0)
(aget buffer 1)
(aget buffer 2)
@@ -384,127 +295,65 @@
(store-image id)))
(some? color)
- (let [rgba (rgba-from-hex color opacity)]
- (h/call internal-module "_add_shape_stroke_solid_fill" rgba)))))
+ (let [rgba (sr-clr/hex->u32argb color opacity)]
+ (h/call wasm/internal-module "_add_shape_stroke_solid_fill" rgba)))))
strokes))
-(defn serialize-path-attrs
- [svg-attrs]
- (reduce
- (fn [acc [key value]]
- (str/concat
- acc
- (str/kebab key) "\0"
- value "\0")) "" svg-attrs))
-
(defn set-shape-path-attrs
[attrs]
(let [style (:style attrs)
attrs (-> attrs
(dissoc :style)
(merge style))
- str (serialize-path-attrs attrs)
+ str (sr/serialize-path-attrs attrs)
size (count str)
- ptr (h/call internal-module "_alloc_bytes" size)]
- (h/call internal-module "stringToUTF8" str ptr size)
- (h/call internal-module "_set_shape_path_attrs" (count attrs))))
+ offset (mem/alloc-bytes size)]
+ (h/call wasm/internal-module "stringToUTF8" str offset size)
+ (h/call wasm/internal-module "_set_shape_path_attrs" (count attrs))))
(defn set-shape-path-content
[content]
- (let [buffer (path/content->buffer content)
- size (.-byteLength buffer)
- ptr (h/call internal-module "_alloc_bytes" size)
- heap (gobj/get ^js internal-module "HEAPU8")
- mem (js/Uint8Array. (.-buffer heap) ptr size)]
- (.set mem (js/Uint8Array. buffer))
- (h/call internal-module "_set_shape_path_content")))
+ (let [pdata (path/path-data content)
+ size (* (count pdata) path/SEGMENT-BYTE-SIZE)
+ offset (mem/alloc-bytes size)
+ heap (mem/get-heap-u8)]
+ (path/-write-to pdata (.-buffer heap) offset)
+ (h/call wasm/internal-module "_set_shape_path_content")))
(defn set-shape-svg-raw-content
[content]
(let [size (get-string-length content)
- ptr (h/call internal-module "_alloc_bytes" size)]
- (h/call internal-module "stringToUTF8" content ptr size)
- (h/call internal-module "_set_shape_svg_raw_content")))
-
-(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))
+ offset (mem/alloc-bytes size)]
+ (h/call wasm/internal-module "stringToUTF8" content offset size)
+ (h/call wasm/internal-module "_set_shape_svg_raw_content")))
(defn set-shape-blend-mode
[blend-mode]
;; These values correspond to skia::BlendMode representation
;; https://rust-skia.github.io/doc/skia_safe/enum.BlendMode.html
- (h/call internal-module "_set_shape_blend_mode" (translate-blend-mode blend-mode)))
+ (h/call wasm/internal-module "_set_shape_blend_mode" (sr/translate-blend-mode blend-mode)))
(defn set-shape-opacity
[opacity]
- (h/call internal-module "_set_shape_opacity" (or opacity 1)))
-
-(defn- translate-constraint-h
- [type]
- (case type
- :left 0
- :right 1
- :leftright 2
- :center 3
- :scale 4))
+ (h/call wasm/internal-module "_set_shape_opacity" (or opacity 1)))
(defn set-constraints-h
[constraint]
(when constraint
- (h/call internal-module "_set_shape_constraint_h" (translate-constraint-h constraint))))
-
-(defn- translate-constraint-v
- [type]
- (case type
- :top 0
- :bottom 1
- :topbottom 2
- :center 3
- :scale 4))
+ (h/call wasm/internal-module "_set_shape_constraint_h" (sr/translate-constraint-h constraint))))
(defn set-constraints-v
[constraint]
(when constraint
- (h/call internal-module "_set_shape_constraint_v" (translate-constraint-v constraint))))
+ (h/call wasm/internal-module "_set_shape_constraint_v" (sr/translate-constraint-v constraint))))
(defn set-shape-hidden
[hidden]
- (h/call internal-module "_set_shape_hidden" hidden))
-
-(defn- translate-bool-type
- [bool-type]
- (case bool-type
- :union 0
- :difference 1
- :intersection 2
- :exclusion 3
- 0))
+ (h/call wasm/internal-module "_set_shape_hidden" hidden))
(defn set-shape-bool-type
[bool-type]
- (h/call internal-module "_set_shape_bool_type" (translate-bool-type bool-type)))
-
-(defn set-shape-bool-content
- [content]
- (set-shape-path-content content))
+ (h/call wasm/internal-module "_set_shape_bool_type" (sr/translate-bool-type bool-type)))
(defn- translate-blur-type
[blur-type]
@@ -514,10 +363,10 @@
(defn set-shape-blur
[blur]
- (let [type (-> blur :type translate-blur-type)
+ (let [type (-> blur :type sr/translate-blur-type)
hidden (:hidden blur)
value (:value blur)]
- (h/call internal-module "_set_shape_blur" type hidden value)))
+ (h/call wasm/internal-module "_set_shape_blur" type hidden value)))
(defn set-shape-corners
[corners]
@@ -525,80 +374,27 @@
r2 (or (get corners 1) 0)
r3 (or (get corners 2) 0)
r4 (or (get corners 3) 0)]
- (h/call internal-module "_set_shape_corners" r1 r2 r3 r4)))
-
-
-(defn translate-layout-flex-dir
- [flex-dir]
- (case flex-dir
- :row 0
- :row-reverse 1
- :column 2
- :column-reverse 3))
-
-(defn translate-layout-align-items
- [align-items]
- (case align-items
- :start 0
- :end 1
- :center 2
- :stretch 3))
-
-(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))
-
-(defn translate-layout-justify-items
- [justify-items]
- (case justify-items
- :start 0
- :end 1
- :center 2
- :stretch 3))
-
-(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))
-
-(defn translate-layout-wrap-type
- [wrap-type]
- (case wrap-type
- :wrap 0
- :nowrap 1))
+ (h/call wasm/internal-module "_set_shape_corners" r1 r2 r3 r4)))
(defn set-flex-layout
[shape]
- (let [dir (-> (or (dm/get-prop shape :layout-flex-dir) :row) translate-layout-flex-dir)
+ (let [dir (-> (or (dm/get-prop shape :layout-flex-dir) :row) sr/translate-layout-flex-dir)
gap (dm/get-prop shape :layout-gap)
row-gap (or (dm/get-prop gap :row-gap) 0)
column-gap (or (dm/get-prop gap :column-gap) 0)
- align-items (-> (or (dm/get-prop shape :layout-align-items) :start) translate-layout-align-items)
- align-content (-> (or (dm/get-prop shape :layout-align-content) :stretch) translate-layout-align-content)
- justify-items (-> (or (dm/get-prop shape :layout-justify-items) :start) translate-layout-justify-items)
- justify-content (-> (or (dm/get-prop shape :layout-justify-content) :stretch) translate-layout-justify-content)
- wrap-type (-> (or (dm/get-prop shape :layout-wrap-type) :nowrap) translate-layout-wrap-type)
+ align-items (-> (or (dm/get-prop shape :layout-align-items) :start) sr/translate-layout-align-items)
+ align-content (-> (or (dm/get-prop shape :layout-align-content) :stretch) sr/translate-layout-align-content)
+ justify-items (-> (or (dm/get-prop shape :layout-justify-items) :start) sr/translate-layout-justify-items)
+ justify-content (-> (or (dm/get-prop shape :layout-justify-content) :stretch) sr/translate-layout-justify-content)
+ wrap-type (-> (or (dm/get-prop shape :layout-wrap-type) :nowrap) sr/translate-layout-wrap-type)
padding (dm/get-prop shape :layout-padding)
padding-top (or (dm/get-prop padding :p1) 0)
padding-right (or (dm/get-prop padding :p2) 0)
padding-bottom (or (dm/get-prop padding :p3) 0)
padding-left (or (dm/get-prop padding :p4) 0)]
- (h/call internal-module
+ (h/call wasm/internal-module
"_set_flex_layout_data"
dir
row-gap
@@ -613,24 +409,136 @@
padding-bottom
padding-left)))
+(defn set-grid-layout-data
+ [shape]
+ (let [dir (-> (or (dm/get-prop shape :layout-grid-dir) :row) sr/translate-layout-grid-dir)
+ gap (dm/get-prop shape :layout-gap)
+ row-gap (or (dm/get-prop gap :row-gap) 0)
+ column-gap (or (dm/get-prop gap :column-gap) 0)
+
+ align-items (-> (or (dm/get-prop shape :layout-align-items) :start) sr/translate-layout-align-items)
+ align-content (-> (or (dm/get-prop shape :layout-align-content) :stretch) sr/translate-layout-align-content)
+ justify-items (-> (or (dm/get-prop shape :layout-justify-items) :start) sr/translate-layout-justify-items)
+ justify-content (-> (or (dm/get-prop shape :layout-justify-content) :stretch) sr/translate-layout-justify-content)
+
+ padding (dm/get-prop shape :layout-padding)
+ padding-top (or (dm/get-prop padding :p1) 0)
+ padding-right (or (dm/get-prop padding :p2) 0)
+ padding-bottom (or (dm/get-prop padding :p3) 0)
+ padding-left (or (dm/get-prop padding :p4) 0)]
+
+ (h/call wasm/internal-module
+ "_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)))
+
+(defn set-grid-layout-rows
+ [entries]
+ (let [size (grid-layout-get-row-entries-size entries)
+ offset (mem/alloc-bytes size)
+
+ heap
+ (js/Uint8Array.
+ (.-buffer (mem/get-heap-u8))
+ offset
+ size)]
+ (loop [entries (seq entries)
+ current-offset 0]
+ (when-not (empty? entries)
+ (let [{:keys [type value]} (first entries)]
+ (.set heap (sr/u8 (sr/translate-grid-track-type type)) (+ current-offset 0))
+ (.set heap (sr/f32->u8 value) (+ current-offset 1))
+ (recur (rest entries) (+ current-offset GRID-LAYOUT-ROW-ENTRY-SIZE)))))
+ (h/call wasm/internal-module "_set_grid_rows")))
+
+(defn set-grid-layout-columns
+ [entries]
+ (let [size (grid-layout-get-column-entries-size entries)
+ offset (mem/alloc-bytes size)
+
+ heap
+ (js/Uint8Array.
+ (.-buffer (mem/get-heap-u8))
+ offset
+ size)]
+ (loop [entries (seq entries)
+ current-offset 0]
+ (when-not (empty? entries)
+ (let [{:keys [type value]} (first entries)]
+ (.set heap (sr/u8 (sr/translate-grid-track-type type)) (+ current-offset 0))
+ (.set heap (sr/f32->u8 value) (+ current-offset 1))
+ (recur (rest entries) (+ current-offset GRID-LAYOUT-COLUMN-ENTRY-SIZE)))))
+ (h/call wasm/internal-module "_set_grid_columns")))
+
+(defn set-grid-layout-cells
+ [cells]
+ (let [entries (vals cells)
+ size (grid-layout-get-cell-entries-size entries)
+ offset (mem/alloc-bytes size)
+
+ heap
+ (js/Uint8Array.
+ (.-buffer (mem/get-heap-u8))
+ offset
+ size)]
+
+ (loop [entries (seq entries)
+ current-offset 0]
+ (when-not (empty? entries)
+ (let [cell (first entries)]
+
+ ;; row: [u8; 4],
+ (.set heap (sr/i32->u8 (:row cell)) (+ current-offset 0))
+
+ ;; row_span: [u8; 4],
+ (.set heap (sr/i32->u8 (:row-span cell)) (+ current-offset 4))
+
+ ;; column: [u8; 4],
+ (.set heap (sr/i32->u8 (:column cell)) (+ current-offset 8))
+
+ ;; column_span: [u8; 4],
+ (.set heap (sr/i32->u8 (:column-span cell)) (+ current-offset 12))
+
+ ;; has_align_self: u8,
+ (.set heap (sr/bool->u8 (some? (:align-self cell))) (+ current-offset 16))
+
+ ;; align_self: u8,
+ (.set heap (sr/u8 (sr/translate-align-self (:align-self cell))) (+ current-offset 17))
+
+ ;; has_justify_self: u8,
+ (.set heap (sr/bool->u8 (some? (:justify-self cell))) (+ current-offset 18))
+
+ ;; justify_self: u8,
+ (.set heap (sr/u8 (sr/translate-justify-self (:justify-self cell))) (+ current-offset 19))
+
+ ;; has_shape_id: u8,
+ (.set heap (sr/bool->u8 (d/not-empty? (:shapes cell))) (+ current-offset 20))
+
+ ;; shape_id_a: [u8; 4],
+ ;; shape_id_b: [u8; 4],
+ ;; shape_id_c: [u8; 4],
+ ;; shape_id_d: [u8; 4],
+ (.set heap (sr/uuid->u8 (or (-> cell :shapes first) uuid/zero)) (+ current-offset 21))
+
+ (recur (rest entries) (+ current-offset GRID-LAYOUT-CELL-ENTRY-SIZE)))))
+
+ (h/call wasm/internal-module "_set_grid_cells")))
+
(defn set-grid-layout
- [_shape])
-
-(defn translate-layout-sizing
- [value]
- (case value
- :fill 0
- :fix 1
- :auto 2))
-
-(defn translate-align-self
- [value]
- (when value
- (case value
- :start 0
- :end 1
- :center 2
- :stretch 3)))
+ [shape]
+ (set-grid-layout-data shape)
+ (set-grid-layout-rows (:layout-grid-rows shape))
+ (set-grid-layout-columns (:layout-grid-columns shape))
+ (set-grid-layout-cells (:layout-grid-cells shape)))
(defn set-layout-child
[shape]
@@ -640,9 +548,9 @@
margin-bottom (or (dm/get-prop margins :m3) 0)
margin-left (or (dm/get-prop margins :m4) 0)
- h-sizing (-> (dm/get-prop shape :layout-item-h-sizing) (or :auto) translate-layout-sizing)
- v-sizing (-> (dm/get-prop shape :layout-item-v-sizing) (or :auto) translate-layout-sizing)
- align-self (-> (dm/get-prop shape :layout-item-align-self) translate-align-self)
+ h-sizing (-> (dm/get-prop shape :layout-item-h-sizing) (or :fix) sr/translate-layout-sizing)
+ v-sizing (-> (dm/get-prop shape :layout-item-v-sizing) (or :fix) sr/translate-layout-sizing)
+ align-self (-> (dm/get-prop shape :layout-item-align-self) sr/translate-align-self)
max-h (dm/get-prop shape :layout-item-max-h)
has-max-h (some? max-h)
@@ -654,7 +562,7 @@
has-min-w (some? min-w)
is-absolute (boolean (dm/get-prop shape :layout-item-absolute))
z-index (-> (dm/get-prop shape :layout-item-z-index) (or 0))]
- (h/call internal-module
+ (h/call wasm/internal-module
"_set_layout_child_data"
margin-top
margin-right
@@ -675,342 +583,254 @@
is-absolute
z-index)))
-(defn- translate-shadow-style
- [style]
- (case style
- :drop-shadow 0
- :inner-shadow 1
- 0))
-
(defn set-shape-shadows
[shadows]
- (h/call internal-module "_clear_shape_shadows")
+ (h/call wasm/internal-module "_clear_shape_shadows")
(let [total-shadows (count shadows)]
(loop [index 0]
(when (< index total-shadows)
(let [shadow (nth shadows index)
color (dm/get-prop shadow :color)
blur (dm/get-prop shadow :blur)
- rgba (rgba-from-hex (dm/get-prop color :color) (dm/get-prop color :opacity))
+ rgba (sr-clr/hex->u32argb (dm/get-prop color :color) (dm/get-prop color :opacity))
hidden (dm/get-prop shadow :hidden)
x (dm/get-prop shadow :offset-x)
y (dm/get-prop shadow :offset-y)
spread (dm/get-prop shadow :spread)
style (dm/get-prop shadow :style)]
- (h/call internal-module "_add_shape_shadow" rgba blur spread x y (translate-shadow-style style) hidden)
+ (h/call wasm/internal-module "_add_shape_shadow" rgba blur spread x y (sr/translate-shadow-style style) hidden)
(recur (inc index)))))))
-(defn utf8->buffer [text]
- (let [encoder (js/TextEncoder.)]
- (.encode encoder text)))
-
-(def ^:private fonts
- (l/derived :fonts st/state))
-
-(defn ^:private font->ttf-id [font-uuid font-style font-weight]
- (let [matching-font (d/seek (fn [[_ font]]
- (and (= (:font-id font) font-uuid)
- (= (:font-style font) font-style)
- (= (:font-weight font) font-weight)))
- (seq @fonts))]
- (when matching-font
- (:ttf-file-id (second matching-font)))))
-
-(defn- serialize-font-style
- [font-style]
- (case font-style
- "normal" 0
- "regular" 0
- "italic" 1
- 0))
-
-(defn- serialize-font-id
- [font-id]
- (let [no-prefix (subs font-id (inc (str/index-of font-id "-")))
- as-uuid (uuid/uuid no-prefix)]
- (uuid/get-u32 as-uuid)))
-
-(defn- serialize-font-weight
- [font-weight]
- (js/Number font-weight))
-
-(defn- add-text-leaf [leaf]
- (let [text (dm/get-prop leaf :text)
- font-id (serialize-font-id (dm/get-prop leaf :font-id))
- font-style (serialize-font-style (dm/get-prop leaf :font-style))
- font-weight (serialize-font-weight (dm/get-prop leaf :font-weight))
- font-size (js/Number (dm/get-prop leaf :font-size))
- buffer (utf8->buffer text)
- size (.-byteLength buffer)
- ptr (h/call internal-module "_alloc_bytes" size)
- heap (gobj/get ^js internal-module "HEAPU8")
- mem (js/Uint8Array. (.-buffer heap) ptr size)]
- (.set mem buffer)
- (h/call internal-module "_add_text_leaf"
- (aget font-id 0)
- (aget font-id 1)
- (aget font-id 2)
- (aget font-id 3)
- font-weight font-style font-size)))
-
-(defn set-shape-text-content [content]
- (h/call internal-module "_clear_shape_text")
+(defn set-shape-text-content
+ [content]
+ (h/call wasm/internal-module "_clear_shape_text")
(let [paragraph-set (first (dm/get-prop content :children))
paragraphs (dm/get-prop paragraph-set :children)
- total-paragraphs (count paragraphs)]
-
+ fonts (fonts/get-content-fonts content)]
(loop [index 0]
- (when (< index total-paragraphs)
+ (when (< index (count paragraphs))
(let [paragraph (nth paragraphs index)
- leaves (dm/get-prop paragraph :children)
- total-leaves (count leaves)]
- (h/call internal-module "_add_text_paragraph")
- (loop [index-leaves 0]
- (when (< index-leaves total-leaves)
- (let [leaf (nth leaves index-leaves)]
- (add-text-leaf leaf)
- (recur (inc index-leaves))))))
- (recur (inc index))))))
+ leaves (dm/get-prop paragraph :children)]
+ (when (seq leaves)
+ (t/write-shape-text leaves paragraph)
+ (recur (inc index))))))
+ (f/store-fonts fonts)))
(defn set-view-box
[zoom vbox]
- (h/call internal-module "_set_view" zoom (- (:x vbox)) (- (:y vbox)))
- (render nil))
+ (h/call wasm/internal-module "_set_view" zoom (- (:x vbox)) (- (:y vbox)))
+ (render (uperf/now)))
-(defn clear-cache []
- (h/call internal-module "_clear_cache"))
+(defn clear-drawing-cache []
+ (h/call wasm/internal-module "_clear_drawing_cache"))
-(defn- store-all-fonts
- [fonts]
- (keep (fn [font]
- (let [font-id (dm/get-prop font :font-id)
- font-variant (dm/get-prop font :font-variant-id)
- variant-parts (str/split font-variant #"\-")
- style (first variant-parts)
- weight (serialize-font-weight (last variant-parts))
- font-id (subs font-id (inc (str/index-of font-id "-")))
- font-id (uuid/uuid font-id)
- ttf-id (font->ttf-id font-id style weight)
- font-data {:family-id font-id
- :style (serialize-font-style style)
- :weight weight}]
- (store-font-id font-data ttf-id))) fonts))
+(defn update-shape-tiles []
+ (h/call wasm/internal-module "_update_shape_tiles"))
-(defn set-fonts
- [objects]
- (let [fonts (fonts/shapes->fonts (into [] (vals objects)))
- pending (into [] (store-all-fonts fonts))]
- (->> (rx/from pending)
- (rx/mapcat identity)
- (rx/reduce conj [])
- (rx/subs! request-render))))
+(defn set-object
+ [objects shape]
+ (perf/begin-measure "set-object")
+ (let [id (dm/get-prop shape :id)
+ parent-id (dm/get-prop shape :parent-id)
+ type (dm/get-prop shape :type)
+ masked (dm/get-prop shape :masked-group)
+ selrect (dm/get-prop shape :selrect)
+ constraint-h (dm/get-prop shape :constraints-h)
+ constraint-v (dm/get-prop shape :constraints-v)
+ clip-content (if (= type :frame)
+ (not (dm/get-prop shape :show-content))
+ false)
+ rotation (dm/get-prop shape :rotation)
+ transform (dm/get-prop shape :transform)
+ fills (if (= type :group)
+ [] (dm/get-prop shape :fills))
+ strokes (if (= type :group)
+ [] (dm/get-prop shape :strokes))
+ children (dm/get-prop shape :shapes)
+ blend-mode (dm/get-prop shape :blend-mode)
+ opacity (dm/get-prop shape :opacity)
+ hidden (dm/get-prop shape :hidden)
+ content (dm/get-prop shape :content)
+ blur (dm/get-prop shape :blur)
+ corners (when (some? (dm/get-prop shape :r1))
+ [(dm/get-prop shape :r1)
+ (dm/get-prop shape :r2)
+ (dm/get-prop shape :r3)
+ (dm/get-prop shape :r4)])
+ svg-attrs (dm/get-prop shape :svg-attrs)
+ shadows (dm/get-prop shape :shadow)]
+
+ (use-shape id)
+ (set-parent-id parent-id)
+ (set-shape-type type)
+ (set-shape-clip-content clip-content)
+ (set-shape-selrect selrect)
+ (set-constraints-h constraint-h)
+ (set-constraints-v constraint-v)
+ (set-shape-rotation rotation)
+ (set-shape-transform transform)
+ (set-shape-blend-mode blend-mode)
+ (set-shape-opacity opacity)
+ (set-shape-hidden hidden)
+ (set-shape-children children)
+ (when (and (= type :group) masked)
+ (set-masked masked))
+ (when (some? blur)
+ (set-shape-blur blur))
+ (when (and (some? content)
+ (or (= type :path)
+ (= type :bool)))
+ (when (some? svg-attrs)
+ (set-shape-path-attrs svg-attrs))
+ (set-shape-path-content content))
+ (when (and (some? content) (= type :svg-raw))
+ (set-shape-svg-raw-content (get-static-markup shape)))
+ (when (some? corners) (set-shape-corners corners))
+ (when (some? shadows) (set-shape-shadows shadows))
+ (when (and (= type :text) (some? content))
+ (set-shape-text-content content))
+
+ (when (or (ctl/any-layout? shape)
+ (ctl/any-layout-immediate-child? objects shape))
+ (set-layout-child shape))
+
+ (when (ctl/flex-layout? shape)
+ (set-flex-layout shape))
+
+ (when (ctl/grid-layout? shape)
+ (set-grid-layout shape))
+
+ (let [pending (into [] (concat
+ (if (and (= type :text) (some? content))
+ (set-shape-text-content content)
+ [])
+ (set-shape-fills fills)
+ (set-shape-strokes strokes)))]
+ (perf/end-measure "set-object")
+ pending)))
+
+
+(defn process-object
+ [shape]
+ (let [pending (set-object [] shape)]
+ (when-let [pending (seq pending)]
+ (->> (rx/from pending)
+ (rx/mapcat identity)
+ (rx/reduce conj [])
+ (rx/subs! (fn [_]
+ (clear-drawing-cache)
+ (request-render "set-objects")))))))
(defn set-objects
[objects]
- (set-fonts objects)
+ (perf/begin-measure "set-objects")
(let [shapes (into [] (vals objects))
total-shapes (count shapes)
pending
(loop [index 0 pending []]
(if (< index total-shapes)
- (let [shape (nth shapes index)
- id (dm/get-prop shape :id)
- parent-id (dm/get-prop shape :parent-id)
- type (dm/get-prop shape :type)
- masked (dm/get-prop shape :masked-group)
- selrect (dm/get-prop shape :selrect)
- constraint-h (dm/get-prop shape :constraints-h)
- constraint-v (dm/get-prop shape :constraints-v)
- clip-content (if (= type :frame)
- (not (dm/get-prop shape :show-content))
- false)
- rotation (dm/get-prop shape :rotation)
- transform (dm/get-prop shape :transform)
- fills (if (= type :group)
- [] (dm/get-prop shape :fills))
- strokes (if (= type :group)
- [] (dm/get-prop shape :strokes))
- children (dm/get-prop shape :shapes)
- blend-mode (dm/get-prop shape :blend-mode)
- opacity (dm/get-prop shape :opacity)
- hidden (dm/get-prop shape :hidden)
- content (dm/get-prop shape :content)
- blur (dm/get-prop shape :blur)
- corners (when (some? (dm/get-prop shape :r1))
- [(dm/get-prop shape :r1)
- (dm/get-prop shape :r2)
- (dm/get-prop shape :r3)
- (dm/get-prop shape :r4)])
- bool-content (dm/get-prop shape :bool-content)
- svg-attrs (dm/get-prop shape :svg-attrs)
- shadows (dm/get-prop shape :shadow)]
-
- (use-shape id)
- (set-parent-id parent-id)
- (set-shape-type type)
- (set-shape-clip-content clip-content)
- (set-shape-selrect selrect)
- (set-constraints-h constraint-h)
- (set-constraints-v constraint-v)
- (set-shape-rotation rotation)
- (set-shape-transform transform)
- (set-shape-blend-mode blend-mode)
- (set-shape-opacity opacity)
- (set-shape-hidden hidden)
- (set-shape-children children)
- (when (and (= type :group) masked)
- (set-masked masked))
- (when (some? blur)
- (set-shape-blur blur))
- (when (and (some? content) (= type :path))
- (set-shape-path-attrs svg-attrs)
- (set-shape-path-content content))
- (when (and (some? content) (= type :svg-raw))
- (set-shape-svg-raw-content (get-static-markup shape)))
- (when (some? bool-content) (set-shape-bool-content bool-content))
- (when (some? corners) (set-shape-corners corners))
- (when (some? shadows) (set-shape-shadows shadows))
- (when (and (= type :text) (some? content))
- (set-shape-text-content content))
-
- (when (or (ctl/any-layout? shape)
- (ctl/any-layout-immediate-child? objects shape))
- (set-layout-child shape))
-
- (when (ctl/flex-layout? shape)
- (set-flex-layout shape))
-
- (when (ctl/grid-layout? shape)
- (set-grid-layout shape))
-
- (let [pending' (concat (set-shape-fills fills) (set-shape-strokes strokes))]
- (recur (inc index) (into pending pending'))))
+ (let [shape (nth shapes index)
+ pending' (set-object objects shape)]
+ (recur (inc index) (into pending pending')))
pending))]
- (clear-cache)
+ (perf/end-measure "set-objects")
+ (clear-drawing-cache)
(request-render "set-objects")
(when-let [pending (seq pending)]
(->> (rx/from pending)
(rx/mapcat identity)
(rx/reduce conj [])
- (rx/subs! request-render)))))
+ (rx/subs! (fn [_]
+ (clear-drawing-cache)
+ (request-render "set-objects")))))))
-(defn uuid->u8
- [id]
- (let [buffer (uuid/get-u32 id)
- u32-arr (js/Uint32Array. 4)]
- (doseq [i (range 0 4)]
- (aset u32-arr i (aget buffer i)))
- (js/Uint8Array. (.-buffer u32-arr))))
-
-(defn matrix->u8
- [{:keys [a b c d e f]}]
- (let [f32-arr (js/Float32Array. 6)]
- (aset f32-arr 0 a)
- (aset f32-arr 1 b)
- (aset f32-arr 2 c)
- (aset f32-arr 3 d)
- (aset f32-arr 4 e)
- (aset f32-arr 5 f)
- (js/Uint8Array. (.-buffer f32-arr))))
-
-(defn data->entry
- [data offset]
- (let [id1 (.getUint32 data (+ offset 0) true)
- id2 (.getUint32 data (+ offset 4) true)
- id3 (.getUint32 data (+ offset 8) true)
- id4 (.getUint32 data (+ offset 12) true)
-
- a (.getFloat32 data (+ offset 16) true)
- b (.getFloat32 data (+ offset 20) true)
- c (.getFloat32 data (+ offset 24) true)
- d (.getFloat32 data (+ offset 28) true)
- e (.getFloat32 data (+ offset 32) true)
- f (.getFloat32 data (+ offset 36) true)
-
- id (uuid/from-unsigned-parts id1 id2 id3 id4)]
-
- {:id id
- :transform (gmt/matrix a b c d e f)}))
+(defn set-structure-modifiers
+ [entries]
+ (when-not (empty? entries)
+ (let [offset (mem/alloc-bytes-32 (mem/get-list-size entries 40))
+ heapu32 (mem/get-heap-u32)]
+ (loop [entries (seq entries)
+ current-offset offset]
+ (when-not (empty? entries)
+ (let [{:keys [type parent id index] :as entry} (first entries)]
+ (sr/heapu32-set-u32 (sr/translate-structure-modifier-type type) heapu32 (+ current-offset 0))
+ (sr/heapu32-set-u32 (or index 0) heapu32 (+ current-offset 1))
+ (sr/heapu32-set-uuid parent heapu32 (+ current-offset 2))
+ (sr/heapu32-set-uuid id heapu32 (+ current-offset 6))
+ (recur (rest entries) (+ current-offset 10)))))
+ (h/call wasm/internal-module "_set_structure_modifiers"))))
(defn propagate-modifiers
[entries]
- (let [entry-size 40
- ptr (h/call internal-module "_alloc_bytes" (* entry-size (count entries)))
-
- heap
- (js/Uint8Array.
- (.-buffer (gobj/get ^js internal-module "HEAPU8"))
- ptr
- (* entry-size (count entries)))]
+ (let [offset (mem/alloc-bytes-32 (modifier-get-entries-size entries))
+ heapf32 (mem/get-heap-f32)
+ heapu32 (mem/get-heap-u32)]
(loop [entries (seq entries)
- offset 0]
+ current-offset offset]
(when-not (empty? entries)
(let [{:keys [id transform]} (first entries)]
- (.set heap (uuid->u8 id) offset)
- (.set heap (matrix->u8 transform) (+ offset 16))
- (recur (rest entries) (+ offset entry-size)))))
+ (sr/heapu32-set-uuid id heapu32 current-offset)
+ (sr/heapf32-set-matrix transform heapf32 (+ current-offset (mem/ptr8->ptr32 MODIFIER-ENTRY-TRANSFORM-OFFSET)))
+ (recur (rest entries) (+ current-offset (mem/ptr8->ptr32 MODIFIER-ENTRY-SIZE))))))
- (let [result-ptr (h/call internal-module "_propagate_modifiers")
- heap (js/DataView. (.-buffer (gobj/get ^js internal-module "HEAPU8")))
- len (.getUint32 heap result-ptr true)
+ (let [result-offset (h/call wasm/internal-module "_propagate_modifiers")
+ heapf32 (mem/get-heap-f32)
+ heapu32 (mem/get-heap-u32)
+ len (aget heapu32 (mem/ptr8->ptr32 result-offset))
result
(->> (range 0 len)
- (mapv #(data->entry heap (+ result-ptr 4 (* % entry-size)))))]
- (h/call internal-module "_free_bytes")
+ (mapv #(dr/heap32->entry heapu32 heapf32 (mem/ptr8->ptr32 (+ result-offset 4 (* % MODIFIER-ENTRY-SIZE))))))]
+ (h/call wasm/internal-module "_free_bytes")
result)))
(defn set-canvas-background
[background]
- (let [rgba (rgba-from-hex background 1)]
- (h/call internal-module "_set_canvas_background" rgba)
+ (let [rgba (sr-clr/hex->u32argb background 1)]
+ (h/call wasm/internal-module "_set_canvas_background" rgba)
(request-render "set-canvas-background")))
+(defn clean-modifiers
+ []
+ (h/call wasm/internal-module "_clean_modifiers"))
+
(defn set-modifiers
[modifiers]
- (if (empty? modifiers)
- (h/call internal-module "_clean_modifiers")
-
- (let [ENTRY_SIZE 40
-
- ptr
- (h/call internal-module "_alloc_bytes" (* ENTRY_SIZE (count modifiers)))
-
- heap
- (js/Uint8Array.
- (.-buffer (gobj/get ^js internal-module "HEAPU8"))
- ptr
- (* ENTRY_SIZE (count modifiers)))]
+ (when-not (empty? modifiers)
+ (let [offset (mem/alloc-bytes-32 (* MODIFIER-ENTRY-SIZE (count modifiers)))
+ heapu32 (mem/get-heap-u32)
+ heapf32 (mem/get-heap-f32)]
(loop [entries (seq modifiers)
- offset 0]
+ current-offset offset]
(when-not (empty? entries)
(let [{:keys [id transform]} (first entries)]
- (.set heap (uuid->u8 id) offset)
- (.set heap (matrix->u8 transform) (+ offset 16))
- (recur (rest entries) (+ offset ENTRY_SIZE)))))
+ (sr/heapu32-set-uuid id heapu32 current-offset)
+ (sr/heapf32-set-matrix transform heapf32 (+ current-offset (mem/ptr8->ptr32 MODIFIER-ENTRY-TRANSFORM-OFFSET)))
+ (recur (rest entries) (+ current-offset (mem/ptr8->ptr32 MODIFIER-ENTRY-SIZE))))))
- (h/call internal-module "_set_modifiers")
+ (h/call wasm/internal-module "_set_modifiers")
(request-render "set-modifiers"))))
(defn initialize
[base-objects zoom vbox background]
- (let [rgba (rgba-from-hex background 1)]
- (h/call internal-module "_set_canvas_background" rgba)
- (h/call internal-module "_set_view" zoom (- (:x vbox)) (- (:y vbox)))
+ (let [rgba (sr-clr/hex->u32argb background 1)]
+ (h/call wasm/internal-module "_set_canvas_background" rgba)
+ (h/call wasm/internal-module "_set_view" zoom (- (:x vbox)) (- (:y vbox)))
(set-objects base-objects)))
(def ^:private canvas-options
#js {:antialias false
:depth true
:stencil true
- :alpha true})
+ :alpha true
+ "preserveDrawingBuffer" true})
(defn resize-viewbox
[width height]
- (h/call internal-module "_resize_viewbox" width height))
+ (h/call wasm/internal-module "_resize_viewbox" width height))
(defn- debug-flags
[]
@@ -1020,7 +840,7 @@
(defn assign-canvas
[canvas]
- (let [gl (unchecked-get internal-module "GL")
+ (let [gl (unchecked-get wasm/internal-module "GL")
flags (debug-flags)
context (.getContext ^js canvas "webgl2" canvas-options)
;; Register the context with emscripten
@@ -1031,15 +851,15 @@
(.getExtension context "WEBGL_debug_renderer_info")
;; Initialize Wasm Render Engine
- (h/call internal-module "_init" (/ (.-width ^js canvas) dpr) (/ (.-height ^js canvas) dpr))
- (h/call internal-module "_set_render_options" flags dpr))
+ (h/call wasm/internal-module "_init" (/ (.-width ^js canvas) dpr) (/ (.-height ^js canvas) dpr))
+ (h/call wasm/internal-module "_set_render_options" flags dpr))
(set! (.-width canvas) (* dpr (.-clientWidth ^js canvas)))
(set! (.-height canvas) (* dpr (.-clientHeight ^js canvas))))
(defn clear-canvas
[]
;; TODO: perform corresponding cleaning
- (h/call internal-module "_clean_up"))
+ (h/call wasm/internal-module "_clean_up"))
(defonce module
(delay
@@ -1050,7 +870,7 @@
(let [default (unchecked-get module "default")]
(default))))
(p/fmap (fn [module]
- (set! internal-module module)
+ (set! wasm/internal-module module)
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
new file mode 100644
index 0000000000..1caf62202b
--- /dev/null
+++ b/frontend/src/app/render_wasm/api/fonts.cljs
@@ -0,0 +1,178 @@
+;; 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.render-wasm.api.fonts
+ (:require
+ [app.common.data :as d]
+ [app.common.data.macros :as dm]
+ [app.common.uuid :as uuid]
+ [app.config :as cf]
+ [app.main.fonts :as fonts]
+ [app.main.store :as st]
+ [app.render-wasm.helpers :as h]
+ [app.render-wasm.wasm :as wasm]
+ [app.util.http :as http]
+ [app.util.webapi :as wapi]
+ [beicon.v2.core :as rx]
+ [cuerdas.core :as str]
+ [goog.object :as gobj]
+ [lambdaisland.uri :as u]
+ [okulary.core :as l]))
+
+(def ^:private fonts
+ (l/derived :fonts st/state))
+
+(defn- google-font-id->uuid
+ [font-id]
+ (let [font (fonts/get-font-data font-id)]
+ (:uuid font)))
+
+(defn- custom-font-id->uuid
+ [font-id]
+ (uuid/uuid (subs font-id (inc (str/index-of font-id "-")))))
+
+(defn- font-backend
+ [font-id]
+ (cond
+ (str/starts-with? font-id "gfont-")
+ :google
+ (str/starts-with? font-id "custom-")
+ :custom
+ :else
+ :builtin))
+
+(defn- font-db-data
+ [font-id font-variant-id]
+ (let [font (fonts/get-font-data font-id)
+ variant (fonts/get-variant font font-variant-id)]
+ variant))
+
+(defn- font-id->uuid [font-id]
+ (case (font-backend font-id)
+ :google
+ (google-font-id->uuid font-id)
+ :custom
+ (custom-font-id->uuid font-id)
+ :builtin
+ uuid/zero))
+
+(defn ^:private font-id->asset-id [font-id font-variant-id]
+ (case (font-backend font-id)
+ :google
+ font-id
+ :custom
+ (let [font-uuid (custom-font-id->uuid font-id)
+ matching-font (d/seek (fn [[_ font]]
+ (and (= (:font-id font) font-uuid)
+ (= (:font-variant-id font) font-variant-id)))
+ (seq @fonts))]
+ (when matching-font
+ (:ttf-file-id (second matching-font))))
+ :builtin
+ (let [variant (font-db-data font-id font-variant-id)]
+ (:ttf-url variant))))
+
+;; IMPORTANT: It should be noted that only TTF fonts can be stored.
+(defn- store-font-buffer
+ [font-data font-array-buffer]
+ (let [id-buffer (:family-id-buffer font-data)
+ size (.-byteLength font-array-buffer)
+ ptr (h/call wasm/internal-module "_alloc_bytes" size)
+ heap (gobj/get ^js wasm/internal-module "HEAPU8")
+ mem (js/Uint8Array. (.-buffer heap) ptr size)]
+ (.set mem (js/Uint8Array. font-array-buffer))
+ (h/call wasm/internal-module "_store_font"
+ (aget id-buffer 0)
+ (aget id-buffer 1)
+ (aget id-buffer 2)
+ (aget id-buffer 3)
+ (:weight font-data)
+ (:style font-data))
+ true))
+
+(defn- store-font-url
+ [font-data font-url]
+ (->> (http/send! {:method :get
+ :uri font-url
+ :response-type :blob})
+ (rx/map :body)
+ (rx/mapcat wapi/read-file-as-array-buffer)
+ (rx/map (fn [array-buffer] (store-font-buffer font-data array-buffer)))))
+
+(defn- google-font-ttf-url
+ [font-id font-variant-id]
+ (let [variant (font-db-data font-id font-variant-id)]
+ (if-let [ttf-url (:ttf-url variant)]
+ (str/replace ttf-url "http://fonts.gstatic.com/s/" (u/join cf/public-uri "/internal/gfonts/font/"))
+ nil)))
+
+(defn- font-id->ttf-url
+ [font-id asset-id font-variant-id]
+ (case (font-backend font-id)
+ :google
+ (google-font-ttf-url font-id font-variant-id)
+ :custom
+ (dm/str (u/join cf/public-uri "assets/by-id/" font-id))
+ :builtin
+ (dm/str (u/join cf/public-uri "fonts/" asset-id))))
+
+(defn- store-font-id
+ [font-data asset-id]
+ (when asset-id
+ (let [uri (font-id->ttf-url (:font-id font-data) asset-id (:font-variant-id font-data))
+ id-buffer (uuid/get-u32 (:wasm-id font-data))
+ font-data (assoc font-data :family-id-buffer id-buffer)
+ font-stored? (not= 0 (h/call wasm/internal-module "_is_font_uploaded"
+ (aget id-buffer 0)
+ (aget id-buffer 1)
+ (aget id-buffer 2)
+ (aget id-buffer 3)
+ (:weight font-data)
+ (:style font-data)))]
+ (when-not font-stored? (store-font-url font-data uri)))))
+
+(defn serialize-font-style
+ [font-style]
+ (case font-style
+ "normal" 0
+ "regular" 0
+ "italic" 1
+ 0))
+
+(defn serialize-font-id
+ [font-id]
+ (let [google-font? (str/starts-with? font-id "gfont-")]
+ (if google-font?
+ (uuid/get-u32 (google-font-id->uuid font-id))
+ (let [no-prefix (subs font-id (inc (str/index-of font-id "-")))
+ as-uuid (uuid/uuid no-prefix)]
+ (uuid/get-u32 as-uuid)))))
+
+(defn serialize-font-weight
+ [font-weight]
+ (js/Number font-weight))
+
+(defn store-fonts
+ [fonts]
+ (keep (fn [font]
+ (let [font-id (dm/get-prop font :font-id)
+ font-variant-id (dm/get-prop font :font-variant-id)
+ wasm-id (font-id->uuid font-id)
+ raw-weight (or (:weight (font-db-data font-id font-variant-id)) 400)
+
+ weight (serialize-font-weight raw-weight)
+
+ style (serialize-font-style (cond
+ (str/includes? font-variant-id "italic") "italic"
+ :else "normal"))
+ asset-id (font-id->asset-id font-id font-variant-id)
+ font-data {:wasm-id wasm-id
+ :font-id font-id
+ :font-variant-id font-variant-id
+ :style style
+ :weight weight}]
+ (store-font-id font-data asset-id))) fonts))
+
diff --git a/frontend/src/app/render_wasm/api/texts.cljs b/frontend/src/app/render_wasm/api/texts.cljs
new file mode 100644
index 0000000000..69c790670f
--- /dev/null
+++ b/frontend/src/app/render_wasm/api/texts.cljs
@@ -0,0 +1,108 @@
+;; 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.render-wasm.api.texts
+ (:require
+ [app.render-wasm.api.fonts :as f]
+ [app.render-wasm.helpers :as h]
+ [app.render-wasm.mem :as mem]
+ [app.render-wasm.serializers :as sr]
+ [app.render-wasm.wasm :as wasm]
+ [clojure.string :as str]))
+
+(defn utf8->buffer [text]
+ (let [encoder (js/TextEncoder.)]
+ (.encode encoder text)))
+
+(defn write-shape-text
+ ;; buffer has the following format:
+ ;; [ ]
+ [leaves paragraph]
+ (let [leaves (filter #(not (str/blank? (:text %))) leaves)
+ num-leaves (count leaves)
+ paragraph-attr-size 48
+ leaf-attr-size 52
+ metadata-size (+ 1 paragraph-attr-size (* num-leaves leaf-attr-size))
+ text (apply str (map :text leaves))
+ text-buffer (utf8->buffer text)
+ text-size (.-byteLength text-buffer)
+ buffer (js/ArrayBuffer. (+ metadata-size text-size))
+ dview (js/DataView. buffer)]
+
+ (.setUint32 dview 0 num-leaves)
+
+ ;; Serialize paragraph attributes
+ (let [text-align (sr/serialize-text-align (:text-align paragraph))
+ text-direction (sr/serialize-text-direction (:text-direction paragraph))
+ text-decoration (sr/serialize-text-decoration (:text-decoration paragraph))
+ text-transform (sr/serialize-text-transform (:text-transform paragraph))
+ line-height (:line-height paragraph)
+ letter-spacing (:letter-spacing paragraph)
+ typography-ref-file (sr/serialize-uuid (:typography-ref-file paragraph))
+ typography-ref-id (sr/serialize-uuid (:typography-ref-id paragraph))]
+
+ (.setUint8 dview 4 text-align)
+ (.setUint8 dview 5 text-direction)
+ (.setUint8 dview 6 text-decoration)
+ (.setUint8 dview 7 text-transform)
+
+ (.setFloat32 dview 8 line-height)
+ (.setFloat32 dview 12 letter-spacing)
+
+ (.setUint32 dview 16 (aget typography-ref-file 0))
+ (.setUint32 dview 20 (aget typography-ref-file 1))
+ (.setUint32 dview 24 (aget typography-ref-file 2))
+ (.setInt32 dview 28 (aget typography-ref-file 3))
+
+ (.setUint32 dview 32 (aget typography-ref-id 0))
+ (.setUint32 dview 36 (aget typography-ref-id 1))
+ (.setUint32 dview 40 (aget typography-ref-id 2))
+ (.setInt32 dview 44 (aget typography-ref-id 3)))
+
+ ;; Serialize leaves attributes
+ (loop [index 0 offset (+ 1 paragraph-attr-size)]
+ (when (< index num-leaves)
+ (let [leaf (nth leaves index)
+ font-style (f/serialize-font-style (:font-style leaf))
+ font-size (:font-size leaf)
+ font-weight (:font-weight leaf)
+ font-id (f/serialize-font-id (:font-id leaf))
+ font-family (hash (:font-family leaf))
+ font-variant-id (sr/serialize-uuid (:font-variant-id leaf))
+ text-buffer (utf8->buffer (:text leaf))
+ text-length (.-byteLength text-buffer)]
+
+ (.setUint8 dview offset font-style)
+ (.setFloat32 dview (+ offset 4) font-size)
+ (.setUint32 dview (+ offset 8) font-weight)
+ (.setUint32 dview (+ offset 12) (aget font-id 0))
+ (.setUint32 dview (+ offset 16) (aget font-id 1))
+ (.setUint32 dview (+ offset 20) (aget font-id 2))
+ (.setInt32 dview (+ offset 24) (aget font-id 3))
+
+ (.setInt32 dview (+ offset 28) font-family)
+
+ (.setUint32 dview (+ offset 32) (aget font-variant-id 0))
+ (.setUint32 dview (+ offset 36) (aget font-variant-id 1))
+ (.setUint32 dview (+ offset 40) (aget font-variant-id 2))
+ (.setInt32 dview (+ offset 44) (aget font-variant-id 3))
+
+ (.setInt32 dview (+ offset 48) text-length)
+
+ (recur (inc index) (+ offset leaf-attr-size)))))
+
+ ;; Add text content to buffer
+ (let [text-offset metadata-size
+ buffer-u8 (js/Uint8Array. buffer)]
+ (.set buffer-u8 (js/Uint8Array. text-buffer) text-offset))
+
+ ;; Allocate memory and set buffer
+ (let [total-size (.-byteLength buffer)
+ metadata-offset (mem/alloc-bytes total-size)
+ heap (mem/get-heap-u8)]
+ (.set heap (js/Uint8Array. buffer) metadata-offset)))
+
+ (h/call wasm/internal-module "_set_shape_text_content"))
diff --git a/frontend/src/app/render_wasm/deserializers.cljs b/frontend/src/app/render_wasm/deserializers.cljs
new file mode 100644
index 0000000000..3c7f1f16c0
--- /dev/null
+++ b/frontend/src/app/render_wasm/deserializers.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.render-wasm.deserializers
+ (:require
+ [app.common.geom.matrix :as gmt]
+ [app.common.uuid :as uuid]))
+
+(defn heap32->entry
+ [heapu32 heapf32 offset]
+ (let [id1 (aget heapu32 (+ offset 0))
+ id2 (aget heapu32 (+ offset 1))
+ id3 (aget heapu32 (+ offset 2))
+ id4 (aget heapu32 (+ offset 3))
+
+ a (aget heapf32 (+ offset 4))
+ b (aget heapf32 (+ offset 5))
+ c (aget heapf32 (+ offset 6))
+ d (aget heapf32 (+ offset 7))
+ e (aget heapf32 (+ offset 8))
+ f (aget heapf32 (+ offset 9))
+
+ id (uuid/from-unsigned-parts id1 id2 id3 id4)]
+
+ {:id id
+ :transform (gmt/matrix a b c d e f)}))
+
diff --git a/frontend/src/app/render_wasm/mem.cljs b/frontend/src/app/render_wasm/mem.cljs
new file mode 100644
index 0000000000..4e5e2bad1b
--- /dev/null
+++ b/frontend/src/app/render_wasm/mem.cljs
@@ -0,0 +1,56 @@
+;; 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.render-wasm.mem
+ (:require
+ [app.render-wasm.helpers :as h]
+ [app.render-wasm.wasm :as wasm]))
+
+(defn ptr8->ptr32
+ "Returns a 32-bit (4-byte aligned) pointer of an 8-bit pointer"
+ [value]
+ ;; Divides the value by 4
+ (bit-shift-right value 2))
+
+(defn ptr32->ptr8
+ "Returns a 8-bit pointer of a 32-bit (4-byte aligned) pointer"
+ [value]
+ ;; Multiplies by 4
+ (bit-shift-left value 2))
+
+(defn get-list-size
+ "Returns the size of a list in bytes"
+ [list list-item-size]
+ (* list-item-size (count list)))
+
+(defn alloc-bytes
+ "Allocates an arbitrary amount of bytes"
+ [size]
+ (when (= size 0)
+ (js/console.trace "Tried to allocate 0 bytes"))
+ (h/call wasm/internal-module "_alloc_bytes" size))
+
+(defn alloc-bytes-32
+ "Allocates a 4-byte aligned amount of bytes"
+ [size]
+ (when (= size 0)
+ (js/console.trace "Tried to allocate 0 bytes"))
+ (ptr8->ptr32 (h/call wasm/internal-module "_alloc_bytes" size)))
+
+(defn get-heap-u8
+ "Returns a Uint8Array view of the heap"
+ []
+ (unchecked-get ^js wasm/internal-module "HEAPU8"))
+
+(defn get-heap-u32
+ "Returns a Uint32Array view of the heap"
+ []
+ (unchecked-get ^js wasm/internal-module "HEAPU32"))
+
+(defn get-heap-f32
+ "Returns a Float32Array view of the heap"
+ []
+ (unchecked-get ^js wasm/internal-module "HEAPF32"))
diff --git a/frontend/src/app/render_wasm/performance.cljc b/frontend/src/app/render_wasm/performance.cljc
new file mode 100644
index 0000000000..95c39c4468
--- /dev/null
+++ b/frontend/src/app/render_wasm/performance.cljc
@@ -0,0 +1,41 @@
+;; 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.render-wasm.performance
+ #?(:cljs (:require-macros [app.render-wasm.performance]))
+ (:require
+ [cuerdas.core :as str]))
+
+(defn enabled?
+ []
+ #?(:clj (= (System/getProperty "penpot.wasm.profile-marks") "true")
+ :cljs false))
+
+(defmacro begin-measure
+ [measure-name]
+ (when enabled?
+ (let [measure-name (str/concat measure-name "::begin")]
+ `(.mark js/performance ~measure-name))))
+
+(defmacro end-measure
+ [measure-name & [detail]]
+ (when enabled?
+ (let [begin-name (str/concat measure-name "::begin")
+ end-name (str/concat measure-name "::end")
+ detail `(cljs.core/js-obj ~@(mapcat (fn [[k v]] [(name k) v]) detail))
+ options `(cljs.core/js-obj "start" ~begin-name "end" ~end-name "detail" ~detail)]
+ `(do (.mark js/performance ~end-name)
+ (.measure js/performance ~measure-name ~options)))))
+
+(defmacro with-measure
+ "Measures the time of a function call. This should only be called in synchronous functions"
+ [[measure-name detail] body]
+ (if-not enabled?
+ body
+ `(let [_# (begin-measure ~measure-name)
+ result# ~body
+ _# (end-measure ~measure-name ~detail)]
+ result#)))
diff --git a/frontend/src/app/render_wasm/serializers.cljs b/frontend/src/app/render_wasm/serializers.cljs
new file mode 100644
index 0000000000..ecd881444f
--- /dev/null
+++ b/frontend/src/app/render_wasm/serializers.cljs
@@ -0,0 +1,300 @@
+;; 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.render-wasm.serializers
+ (:require
+ [app.common.data.macros :as dm]
+ [app.common.uuid :as uuid]
+ [cuerdas.core :as str]))
+
+(defn u8
+ [value]
+ (let [u8-arr (js/Uint8Array. 1)]
+ (aset u8-arr 0 value)
+ u8-arr))
+
+(defn f32->u8
+ [value]
+ (let [f32-arr (js/Float32Array. 1)]
+ (aset f32-arr 0 value)
+ (js/Uint8Array. (.-buffer f32-arr))))
+
+(defn i32->u8
+ [value]
+ (let [i32-arr (js/Int32Array. 1)]
+ (aset i32-arr 0 value)
+ (js/Uint8Array. (.-buffer i32-arr))))
+
+(defn bool->u8
+ [value]
+ (let [result (js/Uint8Array. 1)]
+ (aset result 0 (if value 1 0))
+ result))
+
+(defn uuid->u8
+ [id]
+ (let [buffer (uuid/get-u32 id)
+ u32-arr (js/Uint32Array. 4)]
+ (aset u32-arr 0 (aget buffer 0))
+ (aset u32-arr 1 (aget buffer 1))
+ (aset u32-arr 2 (aget buffer 2))
+ (aset u32-arr 3 (aget buffer 3))
+ (js/Uint8Array. (.-buffer u32-arr))))
+
+(defn serialize-uuid
+ [id]
+ (if (nil? id)
+ [uuid/zero]
+ (let [as-uuid (uuid/uuid id)]
+ (uuid/get-u32 as-uuid))))
+
+(defn heapu32-set-u32
+ [value heap offset]
+ (aset heap offset value))
+
+(defn heapu32-set-uuid
+ [id heap offset]
+ (let [buffer (uuid/get-u32 id)]
+ (.set heap buffer offset)
+ buffer))
+
+(defn heapf32-set-matrix
+ [matrix heap offset]
+ (let [a (dm/get-prop matrix :a)
+ b (dm/get-prop matrix :b)
+ c (dm/get-prop matrix :c)
+ d (dm/get-prop matrix :d)
+ e (dm/get-prop matrix :e)
+ f (dm/get-prop matrix :f)]
+ (aset heap (+ offset 0) a)
+ (aset heap (+ offset 1) b)
+ (aset heap (+ offset 2) c)
+ (aset heap (+ offset 3) d)
+ (aset heap (+ offset 4) e)
+ (aset heap (+ offset 5) f)))
+
+(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))
+
+(defn translate-stroke-style
+ [stroke-style]
+ (case stroke-style
+ :dotted 1
+ :dashed 2
+ :mixed 3
+ 0))
+
+(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))
+
+
+(defn serialize-path-attrs
+ [svg-attrs]
+ (reduce
+ (fn [acc [key value]]
+ (str/concat
+ acc
+ (str/kebab key) "\0"
+ value "\0")) "" svg-attrs))
+
+(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))
+
+(defn translate-constraint-h
+ [type]
+ (case type
+ :left 0
+ :right 1
+ :leftright 2
+ :center 3
+ :scale 4))
+
+(defn translate-constraint-v
+ [type]
+ (case type
+ :top 0
+ :bottom 1
+ :topbottom 2
+ :center 3
+ :scale 4))
+
+(defn translate-bool-type
+ [bool-type]
+ (case bool-type
+ :union 0
+ :difference 1
+ :intersection 2
+ :exclusion 3
+ 0))
+
+(defn translate-blur-type
+ [blur-type]
+ (case blur-type
+ :layer-blur 1
+ 0))
+
+(defn translate-layout-flex-dir
+ [flex-dir]
+ (case flex-dir
+ :row 0
+ :row-reverse 1
+ :column 2
+ :column-reverse 3))
+
+(defn translate-layout-grid-dir
+ [flex-dir]
+ (case flex-dir
+ :row 0
+ :column 1))
+
+(defn translate-layout-align-items
+ [align-items]
+ (case align-items
+ :start 0
+ :end 1
+ :center 2
+ :stretch 3))
+
+(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))
+
+(defn translate-layout-justify-items
+ [justify-items]
+ (case justify-items
+ :start 0
+ :end 1
+ :center 2
+ :stretch 3))
+
+(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))
+
+(defn translate-layout-wrap-type
+ [wrap-type]
+ (case wrap-type
+ :wrap 0
+ :nowrap 1))
+
+(defn translate-grid-track-type
+ [type]
+ (case type
+ :percent 0
+ :flex 1
+ :auto 2
+ :fixed 3))
+
+(defn translate-layout-sizing
+ [value]
+ (case value
+ :fill 0
+ :fix 1
+ :auto 2))
+
+(defn translate-align-self
+ [value]
+ (when value
+ (case value
+ :auto 0
+ :start 1
+ :end 2
+ :center 3
+ :stretch 4)))
+
+(defn translate-justify-self
+ [value]
+ (when value
+ (case value
+ :auto 0
+ :start 1
+ :end 2
+ :center 3
+ :stretch 4)))
+
+(defn translate-shadow-style
+ [style]
+ (case style
+ :drop-shadow 0
+ :inner-shadow 1
+ 0))
+
+(defn translate-structure-modifier-type
+ [type]
+ (case type
+ :remove-children 1
+ :add-children 2))
+
+(defn- serialize-enum
+ [value enum-map]
+ (get enum-map value 0))
+
+(defn serialize-text-align
+ [text-align]
+ (serialize-enum text-align {"left" 0 "center" 1 "right" 2 "justify" 3}))
+
+(defn serialize-text-transform
+ [text-transform]
+ (serialize-enum text-transform {"none" 0 "uppercase" 1 "lowercase" 2 "capitalize" 3}))
+
+(defn serialize-text-decoration
+ [text-decoration]
+ (serialize-enum text-decoration {"none" 0 "underline" 1 "line-through" 2 "overline" 3}))
+
+(defn serialize-text-direction
+ [text-direction]
+ (serialize-enum text-direction {"ltr" 0 "rtl" 1}))
diff --git a/frontend/src/app/render_wasm/serializers/color.cljs b/frontend/src/app/render_wasm/serializers/color.cljs
new file mode 100644
index 0000000000..35fda2b756
--- /dev/null
+++ b/frontend/src/app/render_wasm/serializers/color.cljs
@@ -0,0 +1,11 @@
+(ns app.render-wasm.serializers.color
+ (:require
+ [app.common.math :as mth]))
+
+(defn hex->u32argb
+ "Takes a hex color in #rrggbb format, and an opacity value from 0 to 1 and returns its 32-bit argb representation"
+ [hex opacity]
+ (let [rgb (js/parseInt (subs hex 1) 16)
+ a (mth/floor (* (or opacity 1) 0xff))]
+ ;; rgba >>> 0 so we have an unsigned representation
+ (unsigned-bit-shift-right (bit-or (bit-shift-left a 24) rgb) 0)))
\ No newline at end of file
diff --git a/frontend/src/app/render_wasm/serializers/fills.cljs b/frontend/src/app/render_wasm/serializers/fills.cljs
new file mode 100644
index 0000000000..f4f395b66e
--- /dev/null
+++ b/frontend/src/app/render_wasm/serializers/fills.cljs
@@ -0,0 +1,39 @@
+(ns app.render-wasm.serializers.fills
+ (:require
+ [app.render-wasm.serializers.color :as clr]))
+
+(def ^:private GRADIENT-STOP-SIZE 8)
+(def ^:private GRADIENT-BASE-SIZE 28)
+;; TODO: Define in shape model
+(def ^:private MAX-GRADIENT-STOPS 16)
+
+(def GRADIENT-BYTE-SIZE
+ (+ GRADIENT-BASE-SIZE (* MAX-GRADIENT-STOPS GRADIENT-STOP-SIZE)))
+
+(defn write-gradient-fill!
+ [offset heap gradient opacity]
+ (let [dview (js/DataView. (.-buffer heap))
+ start-x (:start-x gradient)
+ start-y (:start-y gradient)
+ end-x (:end-x gradient)
+ end-y (:end-y gradient)
+ width (or (:width gradient) 0)
+ stops (take MAX-GRADIENT-STOPS (:stops gradient))]
+ (.setFloat32 dview offset start-x true)
+ (.setFloat32 dview (+ offset 4) start-y true)
+ (.setFloat32 dview (+ offset 8) end-x true)
+ (.setFloat32 dview (+ offset 12) end-y true)
+ (.setFloat32 dview (+ offset 16) opacity true)
+ (.setFloat32 dview (+ offset 20) width true)
+ (.setUint32 dview (+ offset 24) (count stops) true)
+ (loop [stops (seq stops) offset (+ offset GRADIENT-BASE-SIZE)]
+ (if (empty? stops)
+ offset
+ (let [stop (first stops)
+ hex-color (:color stop)
+ opacity (:opacity stop)
+ argb (clr/hex->u32argb hex-color opacity)
+ stop-offset (:offset stop)]
+ (.setUint32 dview offset argb true)
+ (.setFloat32 dview (+ offset 4) stop-offset true)
+ (recur (rest stops) (+ offset GRADIENT-STOP-SIZE)))))))
\ No newline at end of file
diff --git a/frontend/src/app/render_wasm/shape.cljs b/frontend/src/app/render_wasm/shape.cljs
index d38bdd1aa7..6f80a65982 100644
--- a/frontend/src/app/render_wasm/shape.cljs
+++ b/frontend/src/app/render_wasm/shape.cljs
@@ -8,7 +8,9 @@
(:require
[app.common.transit :as t]
[app.common.types.shape :as shape]
+ [app.common.types.shape.layout :as ctl]
[app.render-wasm.api :as api]
+ [beicon.v2.core :as rx]
[clojure.core :as c]
[cuerdas.core :as str]))
@@ -106,51 +108,135 @@
;; --- SHAPE IMPL
-(defn- set-wasm-attrs
- [self k v]
- (when ^boolean shape/*wasm-sync*
- (api/use-shape (:id self))
+(defn set-wasm-single-attr!
+ [shape k]
+ (let [v (get shape k)]
(case k
:parent-id (api/set-parent-id v)
:type (api/set-shape-type v)
:bool-type (api/set-shape-bool-type v)
- :bool-content (api/set-shape-bool-content v)
:selrect (api/set-shape-selrect v)
- :show-content (if (= (:type self) :frame)
+ :show-content (if (= (:type shape) :frame)
(api/set-shape-clip-content (not v))
(api/set-shape-clip-content false))
:rotation (api/set-shape-rotation v)
:transform (api/set-shape-transform v)
- :fills (api/set-shape-fills v)
- :strokes (api/set-shape-strokes v)
+ :fills (into [] (api/set-shape-fills v))
+ :strokes (into [] (api/set-shape-strokes v))
:blend-mode (api/set-shape-blend-mode v)
:opacity (api/set-shape-opacity v)
:hidden (api/set-shape-hidden v)
:shapes (api/set-shape-children v)
:blur (api/set-shape-blur v)
+ :shadow (api/set-shape-shadows v)
:constraints-h (api/set-constraints-h v)
:constraints-v (api/set-constraints-v v)
- :svg-attrs (when (= (:type self) :path)
- (api/set-shape-path-attrs v))
- :masked-group (when (and (= (:type self) :group) (:masked-group self))
- (api/set-masked (:masked-group self)))
- :content (cond
- (= (:type self) :path)
- (api/set-shape-path-content v)
+ :svg-attrs
+ (when (= (:type shape) :path)
+ (api/set-shape-path-attrs v))
- (= (:type self) :svg-raw)
- (api/set-shape-svg-raw-content (api/get-static-markup self)))
- nil)
- ;; when something synced with wasm
- ;; is modified, we need to request
- ;; a new render.
- (api/clear-cache)
- (api/request-render "set-wasm-attrs")))
+ :masked-group
+ (when (and (= (:type shape) :group) (:masked-group shape))
+ (api/set-masked (:masked-group shape)))
+
+ :content
+ (cond
+ (or (= (:type shape) :path)
+ (= (:type shape) :bool))
+ (api/set-shape-path-content v)
+
+ (= (:type shape) :svg-raw)
+ (api/set-shape-svg-raw-content (api/get-static-markup shape))
+
+ (= (:type shape) :text)
+ (into [] (api/set-shape-text-content v)))
+
+ (:layout-item-margin
+ :layout-item-margin-type
+ :layout-item-h-sizing
+ :layout-item-v-sizing
+ :layout-item-max-h
+ :layout-item-min-h
+ :layout-item-max-w
+ :layout-item-min-w
+ :layout-item-absolute
+ :layout-item-z-index)
+ (api/set-layout-child shape)
+
+ :layout-grid-rows
+ (api/set-grid-layout-rows v)
+
+ :layout-grid-columns
+ (api/set-grid-layout-columns v)
+
+ :layout-grid-cells
+ (api/set-grid-layout-cells v)
+
+ (:layout
+ :layout-flex-dir
+ :layout-gap-type
+ :layout-gap
+ :layout-align-items
+ :layout-align-content
+ :layout-justify-items
+ :layout-justify-content
+ :layout-wrap-type
+ :layout-padding-type
+ :layout-padding)
+ (cond
+ (ctl/grid-layout? shape)
+ (api/set-grid-layout-data shape)
+
+ (ctl/flex-layout? shape)
+ (api/set-flex-layout shape))
+
+ nil)))
+
+(defn set-wasm-multi-attrs!
+ [shape properties]
+ (api/use-shape (:id shape))
+ (let [pending
+ (->> properties
+ (mapcat #(set-wasm-single-attr! shape %)))]
+ (if (and pending (seq pending))
+ (->> (rx/from pending)
+ (rx/mapcat identity)
+ (rx/reduce conj [])
+ (rx/subs!
+ (fn [_]
+ (api/update-shape-tiles)
+ (api/clear-drawing-cache)
+ (api/request-render "set-wasm-attrs-pending"))))
+ (do
+ (api/update-shape-tiles)
+ (api/request-render "set-wasm-attrs")))))
+
+(defn set-wasm-attrs!
+ [shape k v]
+ (let [shape (assoc shape k v)]
+ (api/use-shape (:id shape))
+ (let [pending (set-wasm-single-attr! shape k)]
+ ;; TODO: set-wasm-attrs is called twice with every set
+ (if (and pending (seq pending))
+ (->> (rx/from pending)
+ (rx/mapcat identity)
+ (rx/reduce conj [])
+ (rx/subs!
+ (fn [_]
+ (api/update-shape-tiles)
+ (api/clear-drawing-cache)
+ (api/request-render "set-wasm-attrs-pending"))))
+ (do
+ (api/update-shape-tiles)
+ (api/request-render "set-wasm-attrs"))))))
(defn- impl-assoc
[self k v]
- (set-wasm-attrs self k v)
+ (when ^boolean shape/*wasm-sync*
+ (binding [shape/*wasm-sync* false]
+ (set-wasm-attrs! self k v)))
+
(case k
:id
(ShapeProxy. v
@@ -171,7 +257,10 @@
(defn- impl-dissoc
[self k]
- (set-wasm-attrs self k nil)
+ (when ^boolean shape/*wasm-sync*
+ (binding [shape/*wasm-sync* false]
+ (set-wasm-attrs! self k nil)))
+
(case k
:id
(ShapeProxy. nil
diff --git a/frontend/src/app/render_wasm/wasm.cljs b/frontend/src/app/render_wasm/wasm.cljs
new file mode 100644
index 0000000000..542d4c49a1
--- /dev/null
+++ b/frontend/src/app/render_wasm/wasm.cljs
@@ -0,0 +1,4 @@
+(ns app.render-wasm.wasm)
+
+(defonce internal-frame-id nil)
+(defonce internal-module #js {})
\ No newline at end of file
diff --git a/frontend/src/app/util/path/tools.cljs b/frontend/src/app/util/path/tools.cljs
index 78d1064004..11975774ab 100644
--- a/frontend/src/app/util/path/tools.cljs
+++ b/frontend/src/app/util/path/tools.cljs
@@ -449,11 +449,13 @@
(defn merge-nodes
"Reduces the contiguous segments in points to a single point"
[content points]
- (let [point->merge-point (-> content
- (get-segments points)
- (group-segments)
- (calculate-merge-points points))]
- (-> content
- (separate-nodes points)
- (replace-points point->merge-point))))
+ (let [segments (get-segments content points)]
+ (if (seq segments)
+ (let [point->merge-point (-> segments
+ (group-segments)
+ (calculate-merge-points points))]
+ (-> content
+ (separate-nodes points)
+ (replace-points point->merge-point)))
+ content)))
diff --git a/frontend/src/app/util/time.cljs b/frontend/src/app/util/time.cljs
index 760b32704c..a68e3d2037 100644
--- a/frontend/src/app/util/time.cljs
+++ b/frontend/src/app/util/time.cljs
@@ -277,6 +277,14 @@
(->> #js {:locale locale}
(dfn-format v f))))))
+(defn format-date-locale-short
+ ([v] (format-date-locale-short v nil))
+ ([v {:keys [locale] :or {locale "en"}}]
+ (when v
+ (let [locale-obj (obj/get locales locale)
+ format-str "MMMM do, yyyy"]
+ (dfn-format (js/Date. v) format-str #js {:locale locale-obj})))))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Measurement Helpers
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/frontend/src/app/worker/export.cljs b/frontend/src/app/worker/export.cljs
index de0cc6b50a..7c4a9969dd 100644
--- a/frontend/src/app/worker/export.cljs
+++ b/frontend/src/app/worker/export.cljs
@@ -421,11 +421,9 @@
:uri uri}))
(rx/catch
(fn [cause]
- (rx/of (ex/raise :type :internal
- :code :export-error
- :hint "unexpected error on exporting file"
- :file-id (:id file)
- :cause cause))))))))
+ (rx/of {:type :error
+ :file-id (:id file)
+ :hint (ex-message cause)})))))))
(= format :legacy-zip)
(->> (rx/from files)
diff --git a/frontend/src/features.cljs b/frontend/src/features.cljs
index 9c30a86244..7f6c9a384d 100644
--- a/frontend/src/features.cljs
+++ b/frontend/src/features.cljs
@@ -12,9 +12,6 @@
[app.plugins :as plugins]
[app.util.timers :as tm]))
-(defn ^:export is-components-v2 []
- (features/active-feature? @st/state "components/v2"))
-
(defn ^:export grid []
(tm/schedule-on-idle #(st/emit! (features/toggle-feature "layout/grid")))
nil)
diff --git a/frontend/test/frontend_tests/helpers/pages.cljs b/frontend/test/frontend_tests/helpers/pages.cljs
index 7a4e2e0208..8993326237 100644
--- a/frontend/test/frontend_tests/helpers/pages.cljs
+++ b/frontend/test/frontend_tests/helpers/pages.cljs
@@ -146,8 +146,6 @@
(:objects page)
(:id page)
current-file-id
- true
- dwg/prepare-create-group
cfsh/prepare-create-artboard-from-selection)]
(swap! idmap assoc instance-label (:id group)
diff --git a/frontend/test/frontend_tests/logic/components_and_tokens.cljs b/frontend/test/frontend_tests/logic/components_and_tokens.cljs
index e441f51d8f..2add7ecf4e 100644
--- a/frontend/test/frontend_tests/logic/components_and_tokens.cljs
+++ b/frontend/test/frontend_tests/logic/components_and_tokens.cljs
@@ -15,11 +15,11 @@
[app.common.test-helpers.tokens :as ctht]
[app.common.types.tokens-lib :as ctob]
[app.main.data.helpers :as dsh]
- [app.main.data.tokens :as dt]
[app.main.data.workspace.libraries :as dwl]
[app.main.data.workspace.selection :as dws]
- [app.main.ui.workspace.tokens.changes :as wtch]
- [app.main.ui.workspace.tokens.update :as wtu]
+ [app.main.data.workspace.tokens.application :as dwta]
+ [app.main.data.workspace.tokens.library-edit :as dwtl]
+ [app.main.data.workspace.tokens.propagation :as dwtp]
[cljs.test :as t :include-macros true]
[frontend-tests.helpers.pages :as thp]
[frontend-tests.helpers.state :as ths]
@@ -134,10 +134,10 @@
store (ths/setup-store file)
;; ==== Action
- events [(wtch/apply-token {:shape-ids [(cthi/id :frame1)]
+ events [(dwta/apply-token {:shape-ids [(cthi/id :frame1)]
:attributes #{:r1 :r2 :r3 :r4}
:token (toht/get-token file "test-token-2")
- :on-update-shape wtch/update-shape-radius-all})]
+ :on-update-shape dwta/update-shape-radius-all})]
step2 (fn [_]
(let [events2 [(dwl/sync-file (:id file) (:id file))]]
@@ -171,7 +171,7 @@
store (ths/setup-store file)
;; ==== Action
- events [(wtch/unapply-token {:shape-ids [(cthi/id :frame1)]
+ events [(dwta/unapply-token {:shape-ids [(cthi/id :frame1)]
:attributes #{:r1 :r2 :r3 :r4}
:token (toht/get-token file "test-token-1")})]
@@ -203,14 +203,14 @@
store (ths/setup-store file)
;; ==== Action
- events [(dt/set-selected-token-set-name "test-token-set")
- (dt/update-token "test-token-1"
- {:name "test-token-1"
- :type :border-radius
- :value 66})]
+ events [(dwtl/set-selected-token-set-name "test-token-set")
+ (dwtl/update-token "test-token-1"
+ {:name "test-token-1"
+ :type :border-radius
+ :value 66})]
step2 (fn [_]
- (let [events2 [(wtu/update-workspace-tokens)
+ (let [events2 [(dwtp/propagate-workspace-tokens)
(dwl/sync-file (:id file) (:id file))]]
(tohs/run-store-async
store done events2
@@ -242,14 +242,14 @@
store (ths/setup-store file)
;; ==== Action
- events [(wtch/apply-token {:shape-ids [(cthi/id :c-frame1)]
+ events [(dwta/apply-token {:shape-ids [(cthi/id :c-frame1)]
:attributes #{:r1 :r2 :r3 :r4}
:token (toht/get-token file "test-token-2")
- :on-update-shape wtch/update-shape-radius-all})
- (wtch/apply-token {:shape-ids [(cthi/id :frame1)]
+ :on-update-shape dwta/update-shape-radius-all})
+ (dwta/apply-token {:shape-ids [(cthi/id :frame1)]
:attributes #{:r1 :r2 :r3 :r4}
:token (toht/get-token file "test-token-3")
- :on-update-shape wtch/update-shape-radius-all})]
+ :on-update-shape dwta/update-shape-radius-all})]
step2 (fn [_]
(let [events2 [(dwl/sync-file (:id file) (:id file))]]
@@ -283,13 +283,13 @@
store (ths/setup-store file)
;; ==== Action
- events [(wtch/unapply-token {:shape-ids [(cthi/id :c-frame1)]
+ events [(dwta/unapply-token {:shape-ids [(cthi/id :c-frame1)]
:attributes #{:r1 :r2 :r3 :r4}
:token (toht/get-token file "test-token-1")})
- (wtch/apply-token {:shape-ids [(cthi/id :frame1)]
+ (dwta/apply-token {:shape-ids [(cthi/id :frame1)]
:attributes #{:r1 :r2 :r3 :r4}
:token (toht/get-token file "test-token-3")
- :on-update-shape wtch/update-shape-radius-all})]
+ :on-update-shape dwta/update-shape-radius-all})]
step2 (fn [_]
(let [events2 [(dwl/sync-file (:id file) (:id file))]]
@@ -359,28 +359,28 @@
store (ths/setup-store file)
;; ==== Action
- events [(dt/set-selected-token-set-name "test-token-set")
- (dt/update-token "token-radius"
- {:name "token-radius"
- :value 30})
- (dt/update-token "token-rotation"
- {:name "token-rotation"
- :value 45})
- (dt/update-token "token-opacity"
- {:name "token-opacity"
- :value 0.9})
- (dt/update-token "token-stroke-width"
- {:name "token-stroke-width"
- :value 8})
- (dt/update-token "token-color"
- {:name "token-color"
- :value "#ff0000"})
- (dt/update-token "token-dimensions"
- {:name "token-dimensions"
- :value 200})]
+ events [(dwtl/set-selected-token-set-name "test-token-set")
+ (dwtl/update-token "token-radius"
+ {:name "token-radius"
+ :value 30})
+ (dwtl/update-token "token-rotation"
+ {:name "token-rotation"
+ :value 45})
+ (dwtl/update-token "token-opacity"
+ {:name "token-opacity"
+ :value 0.9})
+ (dwtl/update-token "token-stroke-width"
+ {:name "token-stroke-width"
+ :value 8})
+ (dwtl/update-token "token-color"
+ {:name "token-color"
+ :value "#ff0000"})
+ (dwtl/update-token "token-dimensions"
+ {:name "token-dimensions"
+ :value 200})]
step2 (fn [_]
- (let [events2 [(wtu/update-workspace-tokens)
+ (let [events2 [(dwtp/propagate-workspace-tokens)
(dwl/sync-file (:id file) (:id file))]]
(tohs/run-store-async
store done events2
diff --git a/frontend/test/frontend_tests/runner.cljs b/frontend/test/frontend_tests/runner.cljs
index bca0112e19..9799fb6aa6 100644
--- a/frontend/test/frontend_tests/runner.cljs
+++ b/frontend/test/frontend_tests/runner.cljs
@@ -10,9 +10,9 @@
[frontend-tests.logic.groups-test]
[frontend-tests.plugins.context-shapes-test]
[frontend-tests.tokens.logic.token-actions-test]
+ [frontend-tests.tokens.logic.token-data-test]
[frontend-tests.tokens.style-dictionary-test]
[frontend-tests.tokens.token-form-test]
- [frontend-tests.tokens.token-test]
[frontend-tests.util-range-tree-test]
[frontend-tests.util-simple-math-test]
[frontend-tests.util-snap-data-test]))
@@ -39,6 +39,6 @@
'frontend-tests.util-simple-math-test
'frontend-tests.basic-shapes-test
'frontend-tests.tokens.logic.token-actions-test
+ 'frontend-tests.tokens.logic.token-data-test
'frontend-tests.tokens.style-dictionary-test
- 'frontend-tests.tokens.token-test
'frontend-tests.tokens.token-form-test))
diff --git a/frontend/test/frontend_tests/tokens/helpers/state.cljs b/frontend/test/frontend_tests/tokens/helpers/state.cljs
index 25fa2805ba..c5a7f864dc 100644
--- a/frontend/test/frontend_tests/tokens/helpers/state.cljs
+++ b/frontend/test/frontend_tests/tokens/helpers/state.cljs
@@ -1,8 +1,14 @@
+;; 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.tokens.helpers.state
(:require
[app.common.types.tokens-lib :as ctob]
[app.main.data.helpers :as dsh]
- [app.main.ui.workspace.tokens.style-dictionary :as sd]
+ [app.main.data.style-dictionary :as sd]
[beicon.v2.core :as rx]
[potok.v2.core :as ptk]))
diff --git a/frontend/test/frontend_tests/tokens/helpers/tokens.cljs b/frontend/test/frontend_tests/tokens/helpers/tokens.cljs
index eb6c4b7cda..d97089a00d 100644
--- a/frontend/test/frontend_tests/tokens/helpers/tokens.cljs
+++ b/frontend/test/frontend_tests/tokens/helpers/tokens.cljs
@@ -1,8 +1,14 @@
+;; 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.tokens.helpers.tokens
(:require
+ [app.common.files.tokens :as cft]
[app.common.test-helpers.ids-map :as thi]
- [app.common.types.tokens-lib :as ctob]
- [app.main.ui.workspace.tokens.token :as wtt]))
+ [app.common.types.tokens-lib :as ctob]))
(defn get-token [file name]
(some-> (get-in file [:data :tokens-lib])
@@ -14,9 +20,12 @@
(let [first-page-id (get-in file [:data :pages 0])
shape-id (thi/id shape-label)
token (get-token file token-label)
- applied-attributes (wtt/attributes-map attributes token)]
+ applied-attributes (cft/attributes-map attributes token)]
(update-in file [:data
:pages-index first-page-id
:objects shape-id
:applied-tokens]
merge applied-attributes)))
+
+(defn get-tokens-lib [file]
+ (get-in file [:data :tokens-lib]))
\ No newline at end of file
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 b58a271048..8bccd46fb2 100644
--- a/frontend/test/frontend_tests/tokens/logic/token_actions_test.cljs
+++ b/frontend/test/frontend_tests/tokens/logic/token_actions_test.cljs
@@ -1,10 +1,16 @@
+;; 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.tokens.logic.token-actions-test
(:require
[app.common.test-helpers.compositions :as ctho]
[app.common.test-helpers.files :as cthf]
[app.common.test-helpers.shapes :as cths]
[app.common.types.tokens-lib :as ctob]
- [app.main.ui.workspace.tokens.changes :as wtch]
+ [app.main.data.workspace.tokens.application :as dwta]
[cljs.test :as t :include-macros true]
[frontend-tests.helpers.pages :as thp]
[frontend-tests.helpers.state :as ths]
@@ -48,10 +54,10 @@
(let [file (setup-file-with-tokens)
store (ths/setup-store file)
rect-1 (cths/get-shape file :rect-1)
- events [(wtch/apply-token {:shape-ids [(:id rect-1)]
+ events [(dwta/apply-token {:shape-ids [(:id rect-1)]
:attributes #{:r1 :r2 :r3 :r4}
:token (toht/get-token file "borderRadius.md")
- :on-update-shape wtch/update-shape-radius-all})]]
+ :on-update-shape dwta/update-shape-radius-all})]]
(tohs/run-store-async
store done events
(fn [new-state]
@@ -73,14 +79,14 @@
(let [file (setup-file-with-tokens)
store (ths/setup-store file)
rect-1 (cths/get-shape file :rect-1)
- events [(wtch/apply-token {:shape-ids [(:id rect-1)]
+ events [(dwta/apply-token {:shape-ids [(:id rect-1)]
:attributes #{:r1 :r2 :r3 :r4}
:token (toht/get-token file "borderRadius.sm")
- :on-update-shape wtch/update-shape-radius-all})
- (wtch/apply-token {:shape-ids [(:id rect-1)]
+ :on-update-shape dwta/update-shape-radius-all})
+ (dwta/apply-token {:shape-ids [(:id rect-1)]
:attributes #{:r1 :r2 :r3 :r4}
:token (toht/get-token file "borderRadius.md")
- :on-update-shape wtch/update-shape-radius-all})]]
+ :on-update-shape dwta/update-shape-radius-all})]]
(tohs/run-store-async
store done events
(fn [new-state]
@@ -101,17 +107,17 @@
store (ths/setup-store file)
rect-1 (cths/get-shape file :rect-1)
events [;; Apply "borderRadius.sm" to all border radius attributes
- (wtch/apply-token {:attributes #{:r1 :r2 :r3 :r4}
+ (dwta/apply-token {:attributes #{:r1 :r2 :r3 :r4}
:token (toht/get-token file "borderRadius.sm")
:shape-ids [(:id rect-1)]
- :on-update-shape wtch/update-shape-radius-all})
+ :on-update-shape dwta/update-shape-radius-all})
;; Apply single `:r1` attribute to same shape
;; while removing other attributes from the border-radius set
;; but keep `:r4` for testing purposes
- (wtch/apply-token {:attributes #{:r1 :r2 :r3}
+ (dwta/apply-token {:attributes #{:r1 :r2 :r3}
:token (toht/get-token file "borderRadius.md")
:shape-ids [(:id rect-1)]
- :on-update-shape wtch/update-shape-radius-all})]]
+ :on-update-shape dwta/update-shape-radius-all})]]
(tohs/run-store-async
store done events
(fn [new-state]
@@ -133,14 +139,14 @@
store (ths/setup-store file)
rect-1 (cths/get-shape file :rect-1)
rect-2 (cths/get-shape file :rect-2)
- events [(wtch/apply-token {:shape-ids [(:id rect-1)]
+ events [(dwta/apply-token {:shape-ids [(:id rect-1)]
:attributes #{:r3 :r4}
:token (toht/get-token file "borderRadius.sm")
- :on-update-shape wtch/update-shape-radius-for-corners})
- (wtch/apply-token {:shape-ids [(:id rect-2)]
+ :on-update-shape dwta/update-shape-radius-for-corners})
+ (dwta/apply-token {:shape-ids [(:id rect-2)]
:attributes #{:r1 :r2 :r3 :r4}
:token (toht/get-token file "borderRadius.sm")
- :on-update-shape wtch/update-shape-radius-all})]]
+ :on-update-shape dwta/update-shape-radius-all})]]
(tohs/run-store-async
store done events
(fn [new-state]
@@ -185,22 +191,22 @@
store (ths/setup-store file)
rect-1 (cths/get-shape file :rect-1)
rect-2 (cths/get-shape file :rect-2)
- events [(wtch/apply-token {:shape-ids [(:id rect-1)]
+ events [(dwta/apply-token {:shape-ids [(:id rect-1)]
:attributes #{:color}
:token (toht/get-token file "color.primary")
- :on-update-shape wtch/update-fill})
- (wtch/apply-token {:shape-ids [(:id rect-1)]
+ :on-update-shape dwta/update-fill})
+ (dwta/apply-token {:shape-ids [(:id rect-1)]
:attributes #{:stroke-color}
:token (toht/get-token file "color.primary")
- :on-update-shape wtch/update-stroke-color})
- (wtch/apply-token {:shape-ids [(:id rect-2)]
+ :on-update-shape dwta/update-stroke-color})
+ (dwta/apply-token {:shape-ids [(:id rect-2)]
:attributes #{:color}
:token (toht/get-token file "color.secondary")
- :on-update-shape wtch/update-fill})
- (wtch/apply-token {:shape-ids [(:id rect-2)]
+ :on-update-shape dwta/update-fill})
+ (dwta/apply-token {:shape-ids [(:id rect-2)]
:attributes #{:stroke-color}
:token (toht/get-token file "color.secondary")
- :on-update-shape wtch/update-stroke-color})]]
+ :on-update-shape dwta/update-stroke-color})]]
(tohs/run-store-async
store done events
(fn [new-state]
@@ -239,10 +245,10 @@
#(ctob/add-token-in-set % "Set A" (ctob/make-token dimensions-token))))
store (ths/setup-store file)
rect-1 (cths/get-shape file :rect-1)
- events [(wtch/apply-token {:shape-ids [(:id rect-1)]
+ events [(dwta/apply-token {:shape-ids [(:id rect-1)]
:attributes #{:width :height}
:token (toht/get-token file "dimensions.sm")
- :on-update-shape wtch/update-shape-dimensions})]]
+ :on-update-shape dwta/update-shape-dimensions})]]
(tohs/run-store-async
store done events
(fn [new-state]
@@ -272,10 +278,10 @@
store (ths/setup-store file)
frame-1 (cths/get-shape file :frame-1)
frame-2 (cths/get-shape file :frame-2)
- events [(wtch/apply-token {:shape-ids [(:id frame-1) (:id frame-2)]
+ events [(dwta/apply-token {:shape-ids [(:id frame-1) (:id frame-2)]
:attributes #{:padding}
:token (toht/get-token file "padding.sm")
- :on-update-shape wtch/update-layout-padding})]]
+ :on-update-shape dwta/update-layout-padding})]]
(tohs/run-store-async
store done events
(fn [new-state]
@@ -303,10 +309,10 @@
#(ctob/add-token-in-set % "Set A" (ctob/make-token sizing-token))))
store (ths/setup-store file)
rect-1 (cths/get-shape file :rect-1)
- events [(wtch/apply-token {:shape-ids [(:id rect-1)]
+ events [(dwta/apply-token {:shape-ids [(:id rect-1)]
:attributes #{:width :height}
:token (toht/get-token file "sizing.sm")
- :on-update-shape wtch/update-shape-dimensions})]]
+ :on-update-shape dwta/update-shape-dimensions})]]
(tohs/run-store-async
store done events
(fn [new-state]
@@ -344,18 +350,18 @@
rect-1 (cths/get-shape file :rect-1)
rect-2 (cths/get-shape file :rect-2)
rect-3 (cths/get-shape file :rect-3)
- events [(wtch/apply-token {:shape-ids [(:id rect-1)]
+ events [(dwta/apply-token {:shape-ids [(:id rect-1)]
:attributes #{:opacity}
:token (toht/get-token file "opacity.float")
- :on-update-shape wtch/update-opacity})
- (wtch/apply-token {:shape-ids [(:id rect-2)]
+ :on-update-shape dwta/update-opacity})
+ (dwta/apply-token {:shape-ids [(:id rect-2)]
:attributes #{:opacity}
:token (toht/get-token file "opacity.percent")
- :on-update-shape wtch/update-opacity})
- (wtch/apply-token {:shape-ids [(:id rect-3)]
+ :on-update-shape dwta/update-opacity})
+ (dwta/apply-token {:shape-ids [(:id rect-3)]
:attributes #{:opacity}
:token (toht/get-token file "opacity.invalid")
- :on-update-shape wtch/update-opacity})]]
+ :on-update-shape dwta/update-opacity})]]
(tohs/run-store-async
store done events
(fn [new-state]
@@ -388,10 +394,10 @@
#(ctob/add-token-in-set % "Set A" (ctob/make-token rotation-token))))
store (ths/setup-store file)
rect-1 (cths/get-shape file :rect-1)
- events [(wtch/apply-token {:shape-ids [(:id rect-1)]
+ events [(dwta/apply-token {:shape-ids [(:id rect-1)]
:attributes #{:rotation}
:token (toht/get-token file "rotation.medium")
- :on-update-shape wtch/update-rotation})]]
+ :on-update-shape dwta/update-rotation})]]
(tohs/run-store-async
store done events
(fn [new-state]
@@ -419,10 +425,10 @@
store (ths/setup-store file)
rect-with-stroke (cths/get-shape file :rect-1)
rect-without-stroke (cths/get-shape file :rect-2)
- events [(wtch/apply-token {:shape-ids [(:id rect-with-stroke) (:id rect-without-stroke)]
+ events [(dwta/apply-token {:shape-ids [(:id rect-with-stroke) (:id rect-without-stroke)]
:attributes #{:stroke-width}
:token (toht/get-token file "stroke-width.sm")
- :on-update-shape wtch/update-stroke-width})]]
+ :on-update-shape dwta/update-stroke-width})]]
(tohs/run-store-async
store done events
(fn [new-state]
@@ -445,9 +451,9 @@
store (ths/setup-store file)
rect-1 (cths/get-shape file :rect-1)
rect-2 (cths/get-shape file :rect-2)
- events [(wtch/toggle-token {:shapes [rect-1 rect-2]
+ events [(dwta/toggle-token {:shapes [rect-1 rect-2]
:token-type-props {:attributes #{:r1 :r2 :r3 :r4}
- :on-update-shape wtch/update-shape-radius-all}
+ :on-update-shape dwta/update-shape-radius-all}
:token (toht/get-token file "borderRadius.md")})]]
(tohs/run-store-async
store done events
@@ -476,7 +482,7 @@
rect-without-token (cths/get-shape file :rect-2)
rect-with-other-token (cths/get-shape file :rect-3)
- events [(wtch/toggle-token {:shapes [rect-with-token rect-without-token rect-with-other-token]
+ events [(dwta/toggle-token {:shapes [rect-with-token rect-without-token rect-with-other-token]
:token (toht/get-token file "borderRadius.sm")
:token-type-props {:attributes #{:r1 :r2 :r3 :r4}}})]]
(tohs/run-store-async
@@ -509,7 +515,7 @@
rect-without-token (cths/get-shape file :rect-2)
rect-with-other-token-2 (cths/get-shape file :rect-3)
- events [(wtch/toggle-token {:shapes [rect-with-other-token-1 rect-without-token rect-with-other-token-2]
+ events [(dwta/toggle-token {:shapes [rect-with-other-token-1 rect-without-token rect-with-other-token-2]
:token (toht/get-token file "borderRadius.sm")
:token-type-props {:attributes #{:r1 :r2 :r3 :r4}}})]]
(tohs/run-store-async
diff --git a/frontend/test/frontend_tests/tokens/logic/token_data_test.cljs b/frontend/test/frontend_tests/tokens/logic/token_data_test.cljs
new file mode 100644
index 0000000000..0329d05f1f
--- /dev/null
+++ b/frontend/test/frontend_tests/tokens/logic/token_data_test.cljs
@@ -0,0 +1,67 @@
+;; 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.tokens.logic.token-data-test
+ (:require
+ [app.common.test-helpers.files :as cthf]
+ [app.common.types.tokens-lib :as ctob]
+ [app.main.data.workspace.tokens.library-edit :as dwtl]
+ [cljs.test :as t :include-macros true]
+ [frontend-tests.helpers.pages :as thp]
+ [frontend-tests.helpers.state :as ths]
+ [frontend-tests.tokens.helpers.state :as tohs]
+ [frontend-tests.tokens.helpers.tokens :as toht]))
+
+(t/use-fixtures :each
+ {:before thp/reset-idmap!})
+
+(defn setup-file []
+ (cthf/sample-file :file-1 :page-label :page-1))
+
+(defn setup-file-with-token-lib
+ []
+ (-> (setup-file)
+ (assoc-in [:data :tokens-lib]
+ (-> (ctob/make-tokens-lib)
+ (ctob/add-set (ctob/make-token-set :name "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)]]
+
+ (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")]
+
+ (t/testing "Token lib contains two sets"
+ (t/is (= (count sets) 2))
+ (t/is (some? set)))))))))
+
+(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)]]
+
+ (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")]
+
+ (t/testing "Token lib contains one set"
+ (t/is (= (count sets) 1))
+ (t/is (nil? set)))))))))
\ 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 64841fb654..09d298678f 100644
--- a/frontend/test/frontend_tests/tokens/style_dictionary_test.cljs
+++ b/frontend/test/frontend_tests/tokens/style_dictionary_test.cljs
@@ -1,8 +1,14 @@
+;; 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.tokens.style-dictionary-test
(:require
[app.common.transit :as tr]
[app.common.types.tokens-lib :as ctob]
- [app.main.ui.workspace.tokens.style-dictionary :as sd]
+ [app.main.data.style-dictionary :as sd]
[beicon.v2.core :as rx]
[cljs.test :as t :include-macros true]
[promesa.core :as p]))
@@ -133,3 +139,29 @@ color.value tries to reference missing, which is not defined.")))
(fn [err]
(t/is (= :error.import/style-dictionary-reference-errors (:error/code (ex-data err))))
(done))))))))
+
+(t/deftest single-set-legacy-json-decoding
+ (let [decode-single-set-legacy-json #'sd/decode-single-set-legacy-json
+ json {"color" {"red" {"100" {"value" "red"
+ "type" "color"
+ "description" ""}}}}
+ lib (decode-single-set-legacy-json (ctob/ensure-tokens-lib nil) "single_set" json)
+ get-set-token (fn [set-name token-name]
+ (some-> (ctob/get-set lib set-name)
+ (ctob/get-token token-name)))]
+ (t/is (= '("single_set") (ctob/get-ordered-set-names lib)))
+ (t/testing "token added"
+ (t/is (some? (get-set-token "single_set" "color.red.100"))))))
+
+(t/deftest single-set-dtcg-json-decoding
+ (let [decode-single-set-json #'sd/decode-single-set-json
+ json (-> {"color" {"red" {"100" {"$value" "red"
+ "$type" "color"
+ "$description" ""}}}})
+ lib (decode-single-set-json (ctob/ensure-tokens-lib nil) "single_set" json)
+ get-set-token (fn [set-name token-name]
+ (some-> (ctob/get-set lib set-name)
+ (ctob/get-token token-name)))]
+ (t/is (= '("single_set") (ctob/get-ordered-set-names lib)))
+ (t/testing "token added"
+ (t/is (some? (get-set-token "single_set" "color.red.100"))))))
diff --git a/frontend/translations/af.po b/frontend/translations/af.po
index 7efb227dc6..aa638fba3b 100644
--- a/frontend/translations/af.po
+++ b/frontend/translations/af.po
@@ -34,13 +34,13 @@ msgstr "Skep demo rekening"
msgid "auth.create-demo-profile"
msgstr "Wil jy dit net probeer?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Dit is 'n DEMO-diens, MOENIE vir werklike werk gebruik nie, die projekte "
"sal periodiek uitgevee word."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Wagwoord vergeet?"
@@ -52,27 +52,27 @@ msgstr "Volle naam"
msgid "auth.login-here"
msgstr "Meld hier aan"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Meld aan"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -98,7 +98,7 @@ msgstr "Wagwoordherwinningskakel na jou inkassie gestuur."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Het suksesvol by die span aangesluit"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Wagwoord"
@@ -126,11 +126,11 @@ msgstr "Wagwoord vergeet?"
msgid "auth.recovery-submit"
msgstr "Verander jou wagwoord"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Nog nie 'n rekening nie?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Skep 'n rekening"
@@ -143,7 +143,7 @@ msgstr "Skep 'n rekening"
msgid "auth.sidebar-tagline"
msgstr "Die oopbron-oplossing vir ontwerp en prototipering."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Diensbepalings"
@@ -162,7 +162,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:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Publiseer"
@@ -234,7 +234,7 @@ msgstr "Deel prototipes"
msgid "common.share-link.view-all"
msgstr "Kies Alles"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Depubliseer"
@@ -281,7 +281,7 @@ msgstr "Koppelvlak Deurloop"
msgid "dashboard.access-tokens.copied-success"
msgstr "Token gekopieer"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Genereer nuwe token"
@@ -289,11 +289,11 @@ msgstr "Genereer nuwe token"
msgid "dashboard.access-tokens.create.success"
msgstr "Toegangstoken is suksesvol geskep."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Druk die knoppie \"Genereer nuwe token\" om een te genereer."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "Jy het tot dusver geen tokens nie."
@@ -317,23 +317,23 @@ msgstr "90 dae"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Nooit"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Het verval op %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Verval op %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Geen verval datum nie"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Persoonlike toegangstokens"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Persoonlike toegangtokens funksioneer soos 'n alternatief vir ons "
@@ -356,7 +356,7 @@ msgstr "Voeg by as Gedeelde Biblioteek"
msgid "dashboard.change-email"
msgstr "Verander e-pos"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(kopieer)"
diff --git a/frontend/translations/ar.po b/frontend/translations/ar.po
index 1928764b8f..12fb8644f1 100644
--- a/frontend/translations/ar.po
+++ b/frontend/translations/ar.po
@@ -33,11 +33,11 @@ msgstr "إنشاء حساب تجريبي"
msgid "auth.create-demo-profile"
msgstr "ترغب في التجربة فحسب؟"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr "هذه خدمة تجريبية ، لا تستخدمها للعمل الحقيقي ، سيتم مسح المشاريع بشكل دوري."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "هل نسيت كلمة السر؟"
@@ -45,7 +45,7 @@ msgstr "هل نسيت كلمة السر؟"
msgid "auth.fullname"
msgstr "الاسم الكامل"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "قم بتسجيل الدخول إلى حسابي"
@@ -53,31 +53,31 @@ msgstr "قم بتسجيل الدخول إلى حسابي"
msgid "auth.login-here"
msgstr "تسجيل الدخول هنا"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "تسجيل الدخول"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr "Penpot هو أداة تصميم مجانية ومفتوحة المصدر للتعاون بين التصميم والبرمجة"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "Github"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "Gitlabسجل دخولك عن طريق"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "جوجل"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAPسجل دخولك عن طريق"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID سجل دخولك عن طريق"
@@ -101,7 +101,7 @@ msgstr "تم إرسال رمز الاسترداد لاستعادة كلمة ال
msgid "auth.notifications.team-invitation-accepted"
msgstr "تم الانضمام إلى الفريق بنجاح"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "كلمه السر"
@@ -129,11 +129,11 @@ msgstr "نسيت كلمة المرور؟"
msgid "auth.recovery-submit"
msgstr "تغيير كلمة المرور"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "لا تملك حساب بعد؟"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "إنشاء حساب"
@@ -146,7 +146,7 @@ msgstr "إنشاء حساب"
msgid "auth.sidebar-tagline"
msgstr "الحل (مفتوح المصدر) للتصميم والنمذجة."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "شروط الخدمة"
@@ -163,7 +163,7 @@ msgstr "لقد أرسلنا رسالة تحقق إلى بريدك الالكتر
msgid "branding-illustrations-marketing-pieces"
msgstr "...علامة تجارية، رسوم توضيحية، قطع تسويقية، إلخ."
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "أنشر"
@@ -239,7 +239,7 @@ msgstr "مشاركة النماذج"
msgid "common.share-link.view-all"
msgstr "اختر الكل"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "إلغاء النشر"
@@ -289,7 +289,7 @@ msgstr "جولة في الواجهة"
msgid "dashboard.access-tokens.copied-success"
msgstr "الرمز منسوخ"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "قم بإنشاء رمز جديد"
@@ -297,7 +297,7 @@ msgstr "قم بإنشاء رمز جديد"
msgid "dashboard.access-tokens.create.success"
msgstr "تم إنشاء رمز الوصول بنجاح."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "اضغط على الزر \"إنشاء رمز جديد\" لإنشاء واحد."
@@ -309,7 +309,7 @@ msgstr "أضف كمكتبة مشتركة"
msgid "dashboard.change-email"
msgstr "تغيير البريد الإلكتروني"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(نسخة)"
@@ -427,19 +427,19 @@ msgstr "تضمين أصول المكتبة المشتركة في مكتبات ا
msgid "dashboard.export.title"
msgstr "صدر الملفات"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "الخط محذوف"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "الغاء الكل"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "لا يزال ليس لديك خطوط مخصصة مثبتة."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "لم يتم إضافة أي خط"
@@ -449,7 +449,7 @@ msgstr[3] "عدد قليل من الخطوط المضافة"
msgstr[4] "تمت إضافة العديد من الخطوط"
msgstr[5] ""
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -458,20 +458,19 @@ msgstr ""
"عائلة الخطوط على أنها ** عائلة خط واحدة **. يمكنك تحميل الخطوط بالتنسيقات "
"التالية: ** TTF و OTF و WOFF ** (ستحتاج إلى تنسيق واحد فقط)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"يجب عليك فقط تحميل الخطوط التي تمتلكها أو لديك ترخيص لاستخدامها في Penpot. "
-"اكتشف المزيد في قسم حقوق المحتوى في [شروط خدمة Penpot] "
-"(%s). قد ترغب أيضًا في القراءة عن [ترخيص الخطوط] "
-"(2)."
+"اكتشف المزيد في قسم حقوق المحتوى في [شروط خدمة Penpot] (%s). قد ترغب أيضًا "
+"في القراءة عن [ترخيص الخطوط] (2)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "حمل الكل"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -481,7 +480,7 @@ msgstr ""
"، نوصي باستخدام [Transfonter] (https://transfonter.org/) لإنشاء خطوط الويب "
"وإصلاح الأخطاء. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "استيراد ملفات"
@@ -493,11 +492,11 @@ msgstr "لم نستطع استيراد أو إدراج هذا الملف"
msgid "dashboard.import.import-error"
msgstr "حصل خلل خلال إدراج الملف. لم يتم إدراج الملف على البرنامج."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgstr "%s ملف تم ادراجهم بنجاح."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "تحتوي بعض الملفات على كائنات غير صالحة تمت إزالتها."
@@ -537,27 +536,27 @@ msgstr "قم بدعوة للفريق"
msgid "dashboard.leave-team"
msgstr "ترك الفريق"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "المكتبات & القوالب"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "استعرض المزيد منهم وتعلم كيف تساهم"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "حدثت مشكلة في استيراد النموذج. لم يتم استيراد النموذج."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "المكتبات المشتركة"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "تحميل ملفاتك …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "جاري تحميل الخطوط …"
@@ -573,11 +572,11 @@ msgstr "أنقل %s الملفات إلى"
msgid "dashboard.move-to-other-team"
msgstr "الانتقال إلى فريق آخر"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ ملف جديد"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "ملف جديد"
@@ -585,7 +584,7 @@ msgstr "ملف جديد"
msgid "dashboard.new-project"
msgstr "+ مشروع جديد"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "مشروع جديد"
@@ -617,7 +616,7 @@ msgstr "%s الأعضاء"
msgid "dashboard.open-in-new-tab"
msgstr "فتح ملف في علامة تبويب جديدة"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "الخيارات"
@@ -662,7 +661,7 @@ msgstr "حدد لغة واجهة المستخدم"
msgid "dashboard.select-ui-theme"
msgstr "اختر نمطا"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "إظهار كافة الملفات"
@@ -682,7 +681,7 @@ msgstr "تم تكرار ملفك بنجاح"
msgid "dashboard.success-duplicate-project"
msgstr "تم نسخ مشروعك بنجاح"
-#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "تم نقل ملفك بنجاح"
@@ -754,7 +753,7 @@ msgstr "البريد الالكتروني"
msgid "dashboard.your-name"
msgstr "اسمك"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Penpot الخاص بك"
@@ -770,11 +769,11 @@ msgstr "إنتباه"
msgid "ds.component-subtitle"
msgstr "عناصر سيتم تحديثها:"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "إلغاء الأمر"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "حسنا"
@@ -782,7 +781,7 @@ msgstr "حسنا"
msgid "ds.confirm-title"
msgstr "هل أنت متأكد؟"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "موفر المصادقة غير معد ومسجل."
@@ -790,15 +789,15 @@ msgstr "موفر المصادقة غير معد ومسجل."
msgid "errors.auth.unable-to-login"
msgstr "يبدوا أنك غير مصرح لك أو أن الجلسة إنتهت."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "تعذر تحميل الخط٪ s"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "تعذر تحميل الخطوط٪ s"
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "لا يمكن للمتصفح إجراء هذه العملية"
@@ -810,7 +809,7 @@ msgstr "البريد الإلكتروني مستخدم بالفعل"
msgid "errors.email-already-validated"
msgstr "متم التحقق من صحة البريد الإلكتروني"
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "لا يمكنك استخدام بريدك الإلكتروني ككلمة مرور"
@@ -832,7 +831,7 @@ msgstr ""
msgid "errors.feature-not-supported"
msgstr "الميزة '٪ s' غير مدعومة."
-#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "حدث خطأ ما."
@@ -845,8 +844,7 @@ msgstr "لون غير صالح"
msgid "errors.invalid-email"
msgstr "أدخل بريدًا إلكترونيًا صالحًا من فضلك"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "يجب أن يتطابق البريد الإلكتروني للتأكيد"
@@ -862,7 +860,7 @@ msgstr "دعوة غير صالحة"
msgid "errors.invite-invalid.info"
msgstr "هذه الدعوة قد تلغى أو قد تنتهي."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "تم تعطيل مصادقة LDAP."
@@ -894,7 +892,7 @@ msgstr "يجب أن تتطابق كلمة مرور التأكيد"
msgid "errors.password-too-short"
msgstr "يجب ألا تقل كلمة المرور عن 8 أحرف"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "هذا الملف الشخصي محظور"
@@ -948,12 +946,11 @@ msgstr "خطأ غير متوقع في التحقق"
msgid "errors.webhooks.unexpected-status"
msgstr "حالة غير متوقعة٪ s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "يبدو أن اسم المستخدم أو كلمة المرور خاطئة."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "كلمة المرور القديمة غير صحيحة"
@@ -999,11 +996,11 @@ msgstr "هنا للمساعدة في استفساراتك التقنية."
msgid "feedback.twitter-title"
msgstr "رد عنوان تويتر"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "حدث خطأ"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "الضبابية"
@@ -1011,31 +1008,31 @@ msgstr "الضبابية"
msgid "inspect.attributes.blur.value"
msgstr "تفتيش قيمة الطمس"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "تفتيش صفات اللون"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLAتتفتيش صفات اللون"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBAفتش اللون"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "املأ"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "تحميل صورة المصدر"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "ارتفاع"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "عرض"
@@ -1074,11 +1071,11 @@ msgstr "أعلى"
msgid "inspect.attributes.layout.width"
msgstr "عرض"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "ظلل"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "لون الحدّ"
@@ -1115,127 +1112,127 @@ msgstr "صلب"
msgid "inspect.attributes.stroke.width"
msgstr "عرض"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "صياغة الحروف"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "عائلة الخط"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "حجم الخط"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "نوع الخط"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "وزن الخط"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "تباعد الحروف"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "ارتفاع الخط"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "زخرفة النص"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "لا شئ"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "يتوسطه خط"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "مسطر"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "تغيير النص"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "أحرف صغيرة"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "لا شئ"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "حالة العنوان"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "الأحرف الكبيرة"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr "إذا كنت تريد معرفة المزيد عن فحص التصميم ، فتفضل بزيارة مركز مساعدة لPenpot"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "شفرة"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "دائرة"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "مكون"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "منحنى"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "لوح الرسم"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "مجموعة"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "صورة"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "قناع"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s محدد"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "مسار"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "رباعي"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "نص"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "معلومات"
@@ -1247,7 +1244,7 @@ msgstr "الاختصارات"
msgid "labels.accept"
msgstr "إقبل"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "إضافة خط مخصص"
@@ -1255,7 +1252,7 @@ msgstr "إضافة خط مخصص"
msgid "labels.admin"
msgstr "مشرف"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "الكل"
@@ -1277,19 +1274,19 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "مدخل خاطأ"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "الغاء"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "غلق"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "تعليقات"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "مجتمع"
@@ -1297,7 +1294,7 @@ msgstr "مجتمع"
msgid "labels.confirm-password"
msgstr "تأكيد كلمة المرور"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "استمر"
@@ -1309,7 +1306,7 @@ msgstr "تابع مع"
msgid "labels.continue-with-penpot"
msgstr "يمكنك المتابعة مع حساب Penpot"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "انشاء"
@@ -1329,15 +1326,15 @@ msgstr "خطوط مخصصة"
msgid "labels.dashboard"
msgstr "لوحة التحكم"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "حذف"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "حذف التعليق"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "حذف موضوع"
@@ -1349,11 +1346,11 @@ msgstr "حذف الدعوة"
msgid "labels.delete-multi-files"
msgstr "حذف %s ملفات"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "المسودات"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "تعديل"
@@ -1369,7 +1366,7 @@ msgstr "محرر"
msgid "labels.expired-invitation"
msgstr "منتهي الصلاحية"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "استخراج"
@@ -1381,7 +1378,7 @@ msgstr "تعطيل الملاحظات"
msgid "labels.feedback-sent"
msgstr "تم إرسال الملاحظات"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "عائلة الخط"
@@ -1389,19 +1386,19 @@ msgstr "عائلة الخط"
msgid "labels.font-providers"
msgstr "موفري الخط"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "الأنماط"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "الخطوط"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "مستودع Github"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "إعطاء ملاحظات"
@@ -1409,15 +1406,15 @@ msgstr "إعطاء ملاحظات"
msgid "labels.go-back"
msgstr "الرجوع للخلف"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "مركز المساعدة"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "إخفاء التعليقات التي تم حلها"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "الخطوط المتوفرة"
@@ -1437,7 +1434,7 @@ msgstr "الدعوات"
msgid "labels.language"
msgstr "اللغة"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "المكتبات والقوالب"
@@ -1445,7 +1442,7 @@ msgstr "المكتبات والقوالب"
msgid "labels.log-or-sign"
msgstr "تسجيل الدخول أو الاشتراك"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "تسجيل خروج"
@@ -1461,7 +1458,7 @@ msgstr "الأعضاء"
msgid "labels.new-password"
msgstr "كلمة مرور جديدة"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "ليس لديك أي إشعارات تعليق معلقة"
@@ -1483,7 +1480,7 @@ msgstr "قد لا تكون هذه الصفحة موجودة أو ليس لديك
msgid "labels.not-found.main-message"
msgstr "عفواً!"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "0 ملف"
@@ -1546,7 +1543,7 @@ msgstr "الملف الشخصي"
msgid "labels.projects"
msgstr "المشاريع"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "ملاحظات الإصدار"
@@ -1559,7 +1556,7 @@ msgstr "إزالة"
msgid "labels.remove-member"
msgstr "إزالة العضو"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "اعاده تسميه"
@@ -1579,11 +1576,11 @@ msgstr "أعد المحاولة"
msgid "labels.role"
msgstr "دور"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "حفظ"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "البحث عن الخط"
@@ -1615,15 +1612,15 @@ msgstr "مشاركة النموذج الأولي"
msgid "labels.shared-libraries"
msgstr "المكتبات المشتركة"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "إظهار كافة التعليقات"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "قائمة التعليقات"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "إظهار تعليقاتك فقط"
@@ -1631,7 +1628,7 @@ msgstr "إظهار تعليقاتك فقط"
msgid "labels.status"
msgstr "الحالة"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "الدروس"
@@ -1643,15 +1640,15 @@ msgstr "تحديث"
msgid "labels.update-team"
msgstr "تحديث الفريق"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "رفع"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "تحميل الخطوط المخصصة"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "جارٍ الرفع …"
@@ -1659,7 +1656,7 @@ msgstr "جارٍ الرفع …"
msgid "labels.viewer"
msgstr "مشاهد"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "كتابة تعليق جديد"
@@ -1667,7 +1664,7 @@ msgstr "كتابة تعليق جديد"
msgid "labels.you"
msgstr "(أنت)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "حسابك"
@@ -1729,17 +1726,17 @@ msgstr "بحذف حسابك، ستفقد جميع مشاريعك وأرشيفا
msgid "modals.delete-account.title"
msgstr "هل انت متأكد انك تريد حذف حسابك؟"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "حذف المحادثة"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"هل أنت متأكد أنك تريد حذف هذه المحادثة؟ سيتم حذف جميع التعليقات في هذا "
"الموضوع."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "حذف المحادثة"
@@ -1767,29 +1764,29 @@ msgstr "هل تريد بالتأكيد حذف %s من الملفات؟"
msgid "modals.delete-file-multi-confirm.title"
msgstr "حذف %s الملفات"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"هل أنت متأكد أنك تريد حذف نمط هذا الخط؟ لن يتم تحميله إذا تم استخدامه في "
"ملف."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "حذف نمط الخط"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr "هل أنت متأكد أنك تريد حذف هذا الخط؟ لن يتم تحميله إذا تم استخدامه في ملف."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "حذف الخط"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "هل أنت متأكد أنك تريد حذف هذه الصفحة؟"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "حذف الصفحة"
@@ -1944,21 +1941,21 @@ msgstr ""
msgid "modals.update-remote-component-in-bulk.message"
msgstr "تحديث المكونات في مكتبة مشتركة"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "تحديث المكون"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "إلغاﺀ"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
msgid "modals.update-remote-component.hint"
msgstr ""
"أنت على وشك تحديث مكون في مكتبة مشتركة. قد يؤثر هذا على الملفات الأخرى التي "
"تستخدمها."
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "تحديث المكون في المكتبة المشتركة"
@@ -2060,15 +2057,15 @@ msgstr "دعوة مع الدور:"
msgid "onboarding.newsletter.accept"
msgstr "نعم ، اشترك"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr "تم إرسال طلب الاشتراك الخاص بك ، وسوف نرسل لك بريدًا إلكترونيًا لتأكيده."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "سياسة الخصوصية."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "هل تريد تلقي أخبار Penpot؟"
@@ -2118,7 +2115,7 @@ msgstr "Penpotأهلا بك في"
msgid "profile.recovery.go-to-login"
msgstr "اذهب إلى تسجيل الدخول"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "مكرر"
@@ -2288,7 +2285,7 @@ msgstr "أضف جديد"
msgid "shortcuts.cut"
msgstr "إقطع"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "تصغير"
@@ -2380,7 +2377,7 @@ msgstr "وزع أفقيًا"
msgid "shortcuts.hide-ui"
msgstr "إظهار / إخفاء واجهة المستخدم"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "تكبير"
@@ -2568,15 +2565,15 @@ msgstr "كبر المحدد"
msgid "title.dashboard.files"
msgstr "%s - Penpotعنوان ملفات لوحة القيادة"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "مزودي أسلوب الخط - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "أسلوب خط لوحة القيادة - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "برامج ملفات القيادة - %s - Penpot"
@@ -2584,7 +2581,7 @@ msgstr "برامج ملفات القيادة - %s - Penpot"
msgid "title.dashboard.search"
msgstr "البحث - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "المكاتب المقسمة - %s - Penpot"
@@ -2592,7 +2589,7 @@ msgstr "المكاتب المقسمة - %s - Penpot"
msgid "title.default"
msgstr "Penpot - صمم حرية الفرق"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "رموز الوصول للحساب"
@@ -2632,7 +2629,7 @@ msgstr "خطافات الويب - %s - Penpot"
msgid "title.viewer"
msgstr "%s -أسلوب العرض - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s -مساحة العمل Penpot"
@@ -2738,15 +2735,15 @@ msgstr "محاذاة أعلى (%s)"
msgid "workspace.assets.assets"
msgstr "أصول"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "كل الأصول"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "الألوان"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "عناصر"
@@ -2758,15 +2755,15 @@ msgstr "إيجاد مجموعة"
msgid "workspace.assets.create-group-hint"
msgstr "\"ستسمى عناصرك تلقائيا ك\"اسم مجموعة\" \"اسم عنصر"
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "امسح"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "انسخ"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "انسخ الأصل"
@@ -2774,11 +2771,11 @@ msgstr "انسخ الأصل"
msgid "workspace.assets.edit"
msgstr "التحرير"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "رسومات"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "مجموعة"
@@ -2786,23 +2783,19 @@ msgstr "مجموعة"
msgid "workspace.assets.group-name"
msgstr "اسم المجموعة"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "المكتبات"
-
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "المكتبة المحلية"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "الأصل غير موجود"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "افتح ملف المكتب"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "إعادة تسمية"
@@ -2810,7 +2803,7 @@ msgstr "إعادة تسمية"
msgid "workspace.assets.rename-group"
msgstr "إعادة تسمية المجموعة"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "الخث عن أصل"
@@ -2830,7 +2823,7 @@ msgstr[5] ""
msgid "workspace.assets.shared-library"
msgstr "مكتبة مشتركة"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "الطباعة"
@@ -2839,27 +2832,27 @@ msgstr "الطباعة"
msgid "workspace.assets.typography.font-id"
msgstr "أسلوب الخط"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "الحجم"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "البديل"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "اذهب إلى تحرير نوع ملف المكتبة"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "تباعد الحروف"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "طول الخط"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "أسلوب خط النص"
@@ -2867,7 +2860,7 @@ msgstr "أسلوب خط النص"
msgid "workspace.assets.typography.text-styles"
msgstr "أسلوب خط النص"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "تحويل النص"
@@ -2879,11 +2872,11 @@ msgstr "فك التجميع"
msgid "workspace.focus.focus-mode"
msgstr "وضع التركيز"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "تعطيل التركيز"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "تشغيل التركيز"
@@ -3013,33 +3006,32 @@ msgstr "أظهر لوخة أسلوب الخط"
msgid "workspace.header.menu.undo"
msgstr "الإلغاء"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "إعادة ضبط"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "خطأ في حفظ الملف"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "تم الحفظ"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "حفظ الملف"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "تغييرات غير محفوظة"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "وضع العرض (%s)"
-#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "تكبير"
@@ -3051,7 +3043,7 @@ msgstr "مقياس الملأ"
msgid "workspace.header.zoom-fit"
msgstr "تقليص المقياس للتناسب"
-#: src/app/main/ui/workspace/right_header.cljs:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "التكبير لتناسب الجميع"
@@ -3059,7 +3051,7 @@ msgstr "التكبير لتناسب الجميع"
msgid "workspace.header.zoom-full-screen"
msgstr "تكبير الشاشة"
-#: src/app/main/ui/workspace/right_header.cljs:136
+#: src/app/main/ui/workspace/right_header.cljs:104
msgid "workspace.header.zoom-selected"
msgstr "تكبير"
@@ -3072,7 +3064,7 @@ msgstr "تحرير التشبيك"
msgid "workspace.libraries.add"
msgstr "الإضافة"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s الألوان"
@@ -3102,31 +3094,31 @@ msgstr "الألوان المؤخرة"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "RGB مكملات"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "حفظ أسلوب اللون"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "مكتبة الملف"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "المكتبات في هذا الملف"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "المكتبات"
@@ -3135,51 +3127,47 @@ msgstr "المكتبات"
msgid "workspace.libraries.library"
msgstr "المكتبة"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "تحديث المكتبة"
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "لا يوجد مكتبات مشتركة تحتاج إلى تحديث"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "لا يوجد ما يطابق هذا “%s“"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "لا يوجد مكتبات مشتركة"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "البحث في المكتبات المشتركة"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "مكتبات مشتركة"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "كتابات عديدة"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "إلغاء روابط كل الكتابات"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "التحديث"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "رؤية جميع التغييرات"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "التحديثات"
@@ -3199,35 +3187,35 @@ msgstr "تطميس المجموعة"
msgid "workspace.options.blur-options.title.multiple"
msgstr "تطميس المحدد"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "خلفية اللوحة القماشية"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "محتوى المقطع"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "العنصر"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "حاشية"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "النسخ"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "إنشاء حاشية"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "تحرير حاشية"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "أصل"
@@ -3275,7 +3263,7 @@ msgstr "أعلى و أسفل"
msgid "workspace.options.design"
msgstr "تصميم"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "تصدير"
@@ -3284,7 +3272,7 @@ msgstr "تصدير"
msgid "workspace.options.export-multiple"
msgstr "تحديد المصدر"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "لاحقة"
@@ -3292,7 +3280,7 @@ msgstr "لاحقة"
msgid "workspace.options.exporting-complete"
msgstr "تم التصدير"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "جاري التصدير…"
@@ -3422,7 +3410,7 @@ msgstr "ملأ المجموعة"
msgid "workspace.options.group-stroke"
msgstr "ضرب المجموعة"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "طول"
@@ -3732,19 +3720,19 @@ msgstr "الطبقات المحددة"
msgid "workspace.options.layout-item.advanced-ops"
msgstr "خيارات متقدمة"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "أقصى ارتفاع"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "أقصى عرض"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "الحد الأدنو للارتفاع"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "الحد الأدنى للعرض"
@@ -3858,11 +3846,11 @@ msgstr "التباعد بين"
msgid "workspace.options.layout.top"
msgstr "أعلى"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "المزيد من الألوان"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "المزيد من ألوان المكتبة"
@@ -3899,7 +3887,7 @@ msgstr "أعلى الشمال"
msgid "workspace.options.radius-top-right"
msgstr "أعلى اليمين"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "مؤخر"
@@ -3907,11 +3895,11 @@ msgstr "مؤخر"
msgid "workspace.options.retry"
msgstr "أعد المحاولة"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "دوران"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "البخث عن نوع الخط"
@@ -3919,7 +3907,7 @@ msgstr "البخث عن نوع الخط"
msgid "workspace.options.select-a-shape"
msgstr "اختر الشكل أو اللوحة لجر الإتصال الى لوحة أو شكل آخر"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "الألوان المختارة"
@@ -3931,43 +3919,43 @@ msgstr "اختر نوع الملأ"
msgid "workspace.options.selection-stroke"
msgstr "ضرب الإختيار"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "تطميس"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "لون الظل"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "إسقاط الظل"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "التظليل الداخلي"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "الانتشار"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "الظل"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "ظل المجموعة"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "ظلال الإختيار"
@@ -3975,7 +3963,7 @@ msgstr "ظلال الإختيار"
msgid "workspace.options.show-fill-on-export"
msgstr "أظهر في المصدر"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "أظهر في وضع العرض"
@@ -3983,7 +3971,7 @@ msgstr "أظهر في وضع العرض"
msgid "workspace.options.size"
msgstr "مقاس"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "الإعدادات المسبقة للحجم"
@@ -4052,7 +4040,7 @@ msgstr "المثلث"
msgid "workspace.options.stroke-color"
msgstr "لون الضرب"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "عرض الضرب"
@@ -4116,11 +4104,11 @@ msgstr "العرض التلقائي"
msgid "workspace.options.text-options.grow-fixed"
msgstr "مثبت"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "تباعد الحروف"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "ارتفاع الخط"
@@ -4184,15 +4172,15 @@ msgstr "الأحرف الكبيرة"
msgid "workspace.options.use-play-button"
msgstr "استعمل زر التشغيل أعلاه لتشغيل منظر النموذج المبدئي."
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "عرض"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "X محور"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Y محور"
@@ -4236,99 +4224,99 @@ msgstr "فصل العقد (%s)"
msgid "workspace.path.actions.snap-nodes"
msgstr "كسر العقد (%s)"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "إضافة تخطيط الثني"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "إضافة تخطيط التشبيك"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "أرسل الى الخلف"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "أرسل الى الخلف"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "انسخ"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "إنشاء تعليق توضيحي"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "تحديد محتوى اللوحة"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "إنشاء نعصر"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "إنشاء عناصر جديدة"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "قطع"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "حذف"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "حذف المخطط"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "فصل المثال"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "فصل الامثلة"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "الفارق"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "ينسخ"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "تحرير"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "استبعاد"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "تسطيح"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Flip horizontal"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "التوجيه الرئسي"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "بداية المخطط"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "النقل الى الأمام"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "النقل الى الأمام"
@@ -4337,91 +4325,91 @@ msgstr "النقل الى الأمام"
msgid "workspace.shape.menu.go-main"
msgstr "انتقل الى ملف العنصر الأصلي"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "مجموعة"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "إخفاء"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "أظهر أو إخف UI"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "التفاعلات"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "إغلاق"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "قناع"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "معجون"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "طريق"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "إزالة تخطيط المنحنى"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "إعادة ضبط التجاوزات"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "استعادة العنصر الرئيسي"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "اختيار الطبقة"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "العرض"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "العرض في لوحة الاصول"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "أظهر المكون الرئيسي"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "أطهر الصورة المصغرة"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "تعيين كصورة مصغرة"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "تحويل الى المسار"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "فك التجميع"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "اتحاد"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "الغاء القفل"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "كشف القناع"
@@ -4430,7 +4418,7 @@ msgstr "كشف القناع"
msgid "workspace.shape.menu.update-components-in-bulk"
msgstr "تحديث العناصر الرئيسية"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "تحديث العنصر الرئيسي"
@@ -4442,11 +4430,11 @@ msgstr "انهيار الشريط الجانبي"
msgid "workspace.sidebar.expand"
msgstr "توسيع الشريط الجانبي"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "التاريخ"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "الطبقات"
@@ -4478,7 +4466,7 @@ msgstr "بسومات"
msgid "workspace.sidebar.layers.texts"
msgstr "نصوص"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "السمات المستوردةSVG"
@@ -4486,11 +4474,11 @@ msgstr "السمات المستوردةSVG"
msgid "workspace.sidebar.sitemap"
msgstr "صفحات"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "خريطة الموقع"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "أصول"
@@ -4498,35 +4486,35 @@ msgstr "أصول"
msgid "workspace.toolbar.color-palette"
msgstr "لوحة اللون (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "تعليقات (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "منحنى (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "الشكل البيضاوي (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "لوحة (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "صورة (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "تحريك (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "مسار (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "مستطيل (%s)"
@@ -4535,7 +4523,7 @@ msgstr "مستطيل (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "الإختصار (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "نص (%s)"
@@ -4692,19 +4680,19 @@ msgstr "انتهت العملية %s"
msgid "workspace.undo.title"
msgstr "تاريخ"
-#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "رفض"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
msgid "workspace.updates.more-info"
msgstr "مزيد من المعلومات"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
msgid "workspace.updates.there-are-updates"
msgstr "يوجد تحديثات في المكتبة المشتركة"
-#: src/app/main/data/workspace/libraries.cljs:1225
+#: src/app/main/data/workspace/libraries.cljs:1226
msgid "workspace.updates.update"
msgstr "تحديث"
diff --git a/frontend/translations/bn.po b/frontend/translations/bn.po
index 41ebc8f9e1..57032a8517 100644
--- a/frontend/translations/bn.po
+++ b/frontend/translations/bn.po
@@ -29,13 +29,13 @@ msgstr "পাসওয়ার্ড নিশ্চিত করুন"
msgid "auth.create-demo-account"
msgstr "ডেমো অ্যাকাউন্ট তৈরী করুন"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"এটি একটি ডেমো সার্ভিস। প্রয়োজনীয় কোনো কাজে ব্যবহার করবেন না। কিছু সময় পর "
"প্রজেক্টগুলো মুছে ফেলা হবে।"
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "পাসওয়ার্ড ভুলে গেছেন?"
@@ -47,27 +47,27 @@ msgstr "পুরো নাম"
msgid "auth.login-here"
msgstr "এখানে লগিন করুন"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "লগিন"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "গিটহাব"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "গিটল্যাব"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "গুগল"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "ওপেনআইডি"
diff --git a/frontend/translations/ca.po b/frontend/translations/ca.po
index ee9cbd35f4..f7706d45a2 100644
--- a/frontend/translations/ca.po
+++ b/frontend/translations/ca.po
@@ -38,13 +38,13 @@ msgstr "Creeu un compte de prova"
msgid "auth.create-demo-profile"
msgstr "Ho voleu provar?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Aquest és un servei de PROVA. NO L'UTILITZEU en treballs reals, ja que els "
"projectes s'eliminaran periòdicament."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Heu oblidat la contrasenya?"
@@ -56,27 +56,27 @@ msgstr "Nom complet"
msgid "auth.login-here"
msgstr "Inicieu la sessió aquí."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Entra"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -100,7 +100,7 @@ msgstr "S'ha enviat un enllaç de recuperació de contrasenya al vostre correu."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Us heu unit a l'equip correctament"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Contrasenya"
@@ -128,11 +128,11 @@ msgstr "Heu oblidat la contrasenya?"
msgid "auth.recovery-submit"
msgstr "Canvieu la contrasenya"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "No teniu un compte?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Creeu un compte"
@@ -145,7 +145,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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Condicions del servei"
@@ -153,7 +153,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:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Publica"
@@ -225,7 +225,7 @@ msgstr "Compartiu prototips"
msgid "common.share-link.view-all"
msgstr "Selecciona-ho tot"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Despublica"
@@ -299,7 +299,7 @@ msgstr "Afegeix a la biblioteca compartida"
msgid "dashboard.change-email"
msgstr "Canvia el correu"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(còpia)"
@@ -423,25 +423,25 @@ msgstr ""
msgid "dashboard.export.title"
msgstr "Exporta els fitxers"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "S'ha eliminat la tipografia"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Descarta-ho tot"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Encara no teniu cap tipografia personalitzada instal·lada."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "S'ha afegit 1 tipografia"
msgstr[1] "S'han afegit %s tipografies"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -451,21 +451,21 @@ msgstr ""
"sola família tipogràfica**. Podeu pujar tipografies en aquests formats: "
"**TTF, OTF i WOFF** (només en cal un)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Només podeu pujar tipografies de la vostra propietat o de les que tingueu "
"una llicència que us permeti utilitzar-los al Penpot. Teniu més informació "
"a la secció de drets de contingut de les [Condicions del servei del "
-"Penpot](%s). També podeu llegir sobre les "
-"[llicències de les tipografies](https://www.typography.com/faq)."
+"Penpot](%s). També podeu llegir sobre les [llicències de les "
+"tipografies](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Puja-ho tot"
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Importa fitxers de Penpot"
@@ -477,11 +477,11 @@ msgstr "Vaja! No s'ha pogut importar aquest fitxer"
msgid "dashboard.import.import-error"
msgstr "S'ha produït un problema en importar el fitxer i no s'ha importat."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgstr "S'han importat %s fitxers correctament."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Alguns fitxers contenen objectes no vàlids que s'han eliminat."
@@ -521,29 +521,29 @@ msgstr "Convida a l'equip"
msgid "dashboard.leave-team"
msgstr "Abandona l'equip"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Biblioteques i plantilles"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "Explora'n més i coneix com contribuir-hi"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr ""
"Hi ha hagut un problema en importar la plantilla. La plantilla no s'ha "
"importat."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Biblioteques compartides"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "S'estan carregant els fitxers…"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "s'estan carregant les tipografies…"
@@ -559,11 +559,11 @@ msgstr "Mou %s fitxers a"
msgid "dashboard.move-to-other-team"
msgstr "Mou a un altre equip"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Fitxer nou"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Fitxer nou"
@@ -571,7 +571,7 @@ msgstr "Fitxer nou"
msgid "dashboard.new-project"
msgstr "+ Crea un projecte"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Crea un projecte"
@@ -603,7 +603,7 @@ msgstr "%s membres"
msgid "dashboard.open-in-new-tab"
msgstr "Obre el fitxer en una pestanya nova"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Opcions"
@@ -648,7 +648,7 @@ msgstr "Selecciona la llengua de la interfície"
msgid "dashboard.select-ui-theme"
msgstr "Selecciona un tema"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Mostra tots els fitxers"
@@ -668,7 +668,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "S'ha mogut el fitxer"
@@ -724,7 +724,7 @@ msgstr "Correu electrònic"
msgid "dashboard.your-name"
msgstr "Nom"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "El meu Penpot"
@@ -740,11 +740,11 @@ msgstr "Atenció"
msgid "ds.component-subtitle"
msgstr "Components a actualitzar:"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Cancel·la"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "D'acord"
@@ -752,7 +752,7 @@ msgstr "D'acord"
msgid "ds.confirm-title"
msgstr "N'esteu segur?"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "L'autenticació del proveïdor no està configurada."
@@ -760,7 +760,7 @@ msgstr "L'autenticació del proveïdor no està configurada."
msgid "errors.auth.unable-to-login"
msgstr "Sembla que no esteu autenticat o que la sessió ha caducat."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "El vostre navegador no pot fer aquesta operació"
@@ -772,7 +772,7 @@ msgstr "Aquest correu ja està en ús"
msgid "errors.email-already-validated"
msgstr "Aquest correu ja està validat."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "No podeu fer servir l'adreça de correu com a contrasenya"
@@ -784,7 +784,7 @@ msgstr "El correu «%s» té molts informes de retorn permanents."
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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Alguna cosa ha anat malament."
@@ -792,8 +792,7 @@ msgstr "Alguna cosa ha anat malament."
msgid "errors.invalid-color"
msgstr "El color no és vàlid"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "El correu de confirmació ha de coincidir"
@@ -809,7 +808,7 @@ msgstr "Invitació no vàlida"
msgid "errors.invite-invalid.info"
msgstr "Aquesta invitació pot estar cancel·lada o caducada."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "L'autenticació LDAP està inhabilitada."
@@ -843,7 +842,7 @@ msgstr "La contrasenya de confirmació ha de coincidir"
msgid "errors.password-too-short"
msgstr "La contrasenya ha de tenir 8 caràcters com a mínim"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "El perfil està bloquejat"
@@ -881,12 +880,11 @@ msgstr "S'ha produït un error inesperat."
msgid "errors.unexpected-token"
msgstr "Token desconegut"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "El nom d'usuari o la contrasenya sembla incorrecte."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "La contrasenya anterior no és correcta"
@@ -933,11 +931,11 @@ msgstr "Compte per a ajudar amb dubtes tècnics."
msgid "feedback.twitter-title"
msgstr "Compte de X d'ajuda"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "S'ha produït un error"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Difuminat"
@@ -945,31 +943,31 @@ msgstr "Difuminat"
msgid "inspect.attributes.blur.value"
msgstr "Valor"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Emplenat"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Baixa la imatge original"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Alçada"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Amplada"
@@ -1008,11 +1006,11 @@ msgstr "Superior"
msgid "inspect.attributes.layout.width"
msgstr "Amplada"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Ombra"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Traç"
@@ -1049,119 +1047,119 @@ msgstr "Sòlid"
msgid "inspect.attributes.stroke.width"
msgstr "Amplada"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Tipografia"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Família tipogràfica"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Mida de la lletra"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Estil de la lletra"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Espaiat de la lletra"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Alçada de la línia"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Decoració del text"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Cap"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Barrat"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Subratllat"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Transformació del text"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Minúscules"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Cap"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Inicials en majúscules"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Majúscules"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Codi"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Cercle"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Component"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Corba"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Tauler"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Grup"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Imatge"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Màscara"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s seleccionats"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Camí"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Rectangle"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Text"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Informació"
@@ -1173,7 +1171,7 @@ msgstr "Dreceres"
msgid "labels.accept"
msgstr "Acceptar"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Afegeix tipografia"
@@ -1181,7 +1179,7 @@ msgstr "Afegeix tipografia"
msgid "labels.admin"
msgstr "Administració"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Tots"
@@ -1203,19 +1201,19 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Error del servidor (Bad Gateway)"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Cancel·la"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Tanca"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Comentaris"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Comunitat"
@@ -1223,7 +1221,7 @@ msgstr "Comunitat"
msgid "labels.confirm-password"
msgstr "Confirmeu la contrasenya"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Continua"
@@ -1239,7 +1237,7 @@ msgstr "Podeu continuar amb un compte de Penpot"
msgid "labels.copy-invitation-link"
msgstr "Copia l'enllaç"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Crea"
@@ -1259,15 +1257,15 @@ msgstr "Tipografies personalitzades"
msgid "labels.dashboard"
msgstr "Tauler"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Elimina"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Elimina el comentari"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Elimina el fil"
@@ -1279,11 +1277,11 @@ msgstr "Esborra invitació"
msgid "labels.delete-multi-files"
msgstr "Elimina %s fitxers"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Esborranys"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Edita"
@@ -1299,7 +1297,7 @@ msgstr "Editor"
msgid "labels.expired-invitation"
msgstr "Ha caducat"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Exporta"
@@ -1311,7 +1309,7 @@ msgstr "Opinions desactivades"
msgid "labels.feedback-sent"
msgstr "S'ha enviat l'opinió"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Família tipogràfica"
@@ -1319,19 +1317,19 @@ msgstr "Família tipogràfica"
msgid "labels.font-providers"
msgstr "Proveïdors de tipografies"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Estils"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Tipografies"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Repositori Github"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Envia opinions"
@@ -1339,15 +1337,15 @@ msgstr "Envia opinions"
msgid "labels.go-back"
msgstr "Enrere"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Centre d'ajuda"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Amaga els comentaris resolts"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Tipografies instal·lades"
@@ -1369,7 +1367,7 @@ msgstr "Invitacions"
msgid "labels.language"
msgstr "Llengua"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Biblioteques i plantilles"
@@ -1377,7 +1375,7 @@ msgstr "Biblioteques i plantilles"
msgid "labels.log-or-sign"
msgstr "Inicia sessió o registra'm"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Tanca la sessió"
@@ -1393,7 +1391,7 @@ msgstr "Membres"
msgid "labels.new-password"
msgstr "Contrasenya nova"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "No teniu notificacions de comentaris pendents"
@@ -1419,7 +1417,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:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "1 fitxer"
@@ -1470,7 +1468,7 @@ msgstr "Perfil"
msgid "labels.projects"
msgstr "Projectes"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Notes de la versió"
@@ -1488,7 +1486,7 @@ msgstr "Elimina"
msgid "labels.remove-member"
msgstr "Elimina membre"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Canvia el nom"
@@ -1508,15 +1506,15 @@ msgstr "Tornar a intentar-ho"
msgid "labels.role"
msgstr "Rol"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Desa"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "Cerca"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Cerca tipografia"
@@ -1552,15 +1550,15 @@ msgstr "Comparteix prototip"
msgid "labels.shared-libraries"
msgstr "Biblioteques compartides"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Mostra tots els comentaris"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Mostra la llista de comentaris"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Mostra només els meus comentaris"
@@ -1568,7 +1566,7 @@ msgstr "Mostra només els meus comentaris"
msgid "labels.status"
msgstr "Estat"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Tutorials"
@@ -1580,15 +1578,15 @@ msgstr "Actualitza"
msgid "labels.update-team"
msgstr "Actualitza l'equip"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Puja"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Pugeu tipografies personalitzades"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "S'està pujant…"
@@ -1600,7 +1598,7 @@ msgstr "Només lectura"
msgid "labels.viewer"
msgstr "Visor"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Escriu un comentari nou"
@@ -1608,11 +1606,11 @@ msgstr "Escriu un comentari nou"
msgid "labels.you"
msgstr "(jo)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "El meu compte"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "Imatge"
@@ -1681,17 +1679,17 @@ msgstr "Si suprimiu el compte, perdreu tots els vostres projectes i arxius actua
msgid "modals.delete-account.title"
msgstr "Segur que voleu eliminar el compte?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Elimina la conversa"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Segur que voleu eliminar aquesta conversa? S'eliminaran tots els comentaris "
"del fil."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Elimina la conversa"
@@ -1719,31 +1717,31 @@ msgstr "Segur que voleu eliminar %s fitxers?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "S'estan eliminant %s fitxers"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Segur que voleu eliminar aquest estil de lletra? No es carregarà si "
"s'utilitza en un fitxer."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "S'està eliminant l'estil de tipografia"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Segur que voleu eliminar aquesta tipografia? No es carregarà si s'utilitza "
"en un fitxer."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "S'està eliminant la tipografia"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Segur que voleu eliminar la pàgina?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Elimina la pàgina"
@@ -1883,7 +1881,7 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "Ascendeix a propietari"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Publica"
@@ -1920,21 +1918,21 @@ 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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Actualitza"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Cancel·la"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Actualitza un component en una biblioteca compartida"
@@ -1980,17 +1978,17 @@ msgstr "Convida membres"
msgid "onboarding.newsletter.accept"
msgstr "Sí, subscriu-m'hi"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"S'ha enviat la sol·licitud de subscripció. Us enviarem un correu electrònic "
"per confirmar-ho."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Política de privacitat."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Voleu rebre les novetats de Penpot?"
@@ -2014,7 +2012,7 @@ msgstr "Penpot"
msgid "profile.recovery.go-to-login"
msgstr "Vés a l'inici de sessió"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Mixt"
@@ -2184,7 +2182,7 @@ msgstr "Crea nou"
msgid "shortcuts.cut"
msgstr "Retalla"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Disminueix el zoom"
@@ -2276,7 +2274,7 @@ msgstr "Distribueix horitzontalment"
msgid "shortcuts.hide-ui"
msgstr "Mostra/Amaga la interfície"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Amplia"
@@ -2560,15 +2558,15 @@ msgstr "Amplia a la selecció"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Proveïdors de tipografies - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Tipografies - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Projectes - %s - Penpot"
@@ -2576,7 +2574,7 @@ msgstr "Projectes - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Cerca - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Biblioteques compartides - %s - Penpot"
@@ -2616,7 +2614,7 @@ msgstr "Configuració - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Visor - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -2713,15 +2711,15 @@ msgstr "Alinea la part superior (%s)"
msgid "workspace.assets.assets"
msgstr "Recursos"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Tots els recursos"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Colors"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Components"
@@ -2735,11 +2733,11 @@ msgstr ""
"Els elements s'anomenaran automàticament com a \"nom del grup / nom de "
"l'element\""
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Elimina"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Duplica"
@@ -2747,11 +2745,11 @@ msgstr "Duplica"
msgid "workspace.assets.edit"
msgstr "Edita"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Gràfics"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Agrupa"
@@ -2759,19 +2757,15 @@ msgstr "Agrupa"
msgid "workspace.assets.group-name"
msgstr "Nom del grup"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Biblioteques"
-
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "llibreria local"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "No s'han trobat recursos"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Canvia el nom"
@@ -2779,7 +2773,7 @@ msgstr "Canvia el nom"
msgid "workspace.assets.rename-group"
msgstr "Canvia el nom del grup"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Cerca recursos"
@@ -2790,7 +2784,7 @@ msgid_plural "workspace.assets.selected-count"
msgstr[0] "%s element seleccionat"
msgstr[1] "%s elements seleccionats"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Tipografies"
@@ -2799,31 +2793,31 @@ msgstr "Tipografies"
msgid "workspace.assets.typography.font-id"
msgstr "Tipografia"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Mida"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Variant"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Vés al fitxer de la biblioteca d'estils per a editar-lo"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Espaiat de la lletra"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Alçada de la línia"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Transforma el text"
@@ -2835,11 +2829,11 @@ msgstr "Desagrupa"
msgid "workspace.focus.focus-mode"
msgstr "Mode d'enfocament"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Enfocament apagat"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Enfocament actiu"
@@ -2973,29 +2967,28 @@ msgstr "Canvia al mode clar"
msgid "workspace.header.menu.undo"
msgstr "Desfés"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Restableix"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "S'ha produït un error en desar"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Desat"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "S'està desant"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Canvis sense desar"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "Visor (%s)"
@@ -3007,7 +3000,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:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Apropa per a omplir-ho tot"
@@ -3015,7 +3008,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:136
+#: src/app/main/ui/workspace/right_header.cljs:104
msgid "workspace.header.zoom-selected"
msgstr "Apropa la selecció"
@@ -3028,7 +3021,7 @@ msgstr "Fet"
msgid "workspace.libraries.add"
msgstr "Afegeix"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s colors"
@@ -3050,31 +3043,31 @@ msgstr "Colors recents"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "Complementari d'RGB"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Desa l'estil de color"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Biblioteca del fitxer"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "BIBLIOTEQUES EN AQUEST FITXER"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "BIBLIOTEQUES"
@@ -3083,43 +3076,39 @@ msgstr "BIBLIOTEQUES"
msgid "workspace.libraries.library"
msgstr "BIBLIOTECA"
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "No hi ha biblioteques compartides pendents d'actualitzar"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "No s'ha trobat cap coincidència per a “%s“"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "No hi ha biblioteques compartides disponibles"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Cerca biblioteques compartides"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "BIBLIOTEQUES COMPARTIDES"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Diverses tipografies"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Desvincula totes les tipografies"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Actualitza"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "ACTUALITZACIONS"
@@ -3139,15 +3128,15 @@ msgstr "Difuminat del grup"
msgid "workspace.options.blur-options.title.multiple"
msgstr "Difuminat de selecció"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Fons del llenç"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Trunca el contingut"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Component"
@@ -3195,7 +3184,7 @@ msgstr "Superior i inferior"
msgid "workspace.options.design"
msgstr "Disseny"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Exporta"
@@ -3204,11 +3193,11 @@ msgstr "Exporta"
msgid "workspace.options.export-multiple"
msgstr "Exporta la selecció"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
msgid "workspace.options.export-object"
msgstr "Exporta 1 element"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Sufix"
@@ -3216,7 +3205,7 @@ msgstr "Sufix"
msgid "workspace.options.exporting-complete"
msgstr "Exportació completa"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "S'està exportant…"
@@ -3346,7 +3335,7 @@ msgstr "Emplenament del grup"
msgid "workspace.options.group-stroke"
msgstr "Traç del grup"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Altura"
@@ -3728,11 +3717,11 @@ msgstr "espaiat"
msgid "workspace.options.layout.top"
msgstr "Dalt"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Més colors"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Més llibreries de colors"
@@ -3769,7 +3758,7 @@ msgstr "Superior esquerra"
msgid "workspace.options.radius-top-right"
msgstr "Superior dreta"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Recent"
@@ -3777,11 +3766,11 @@ msgstr "Recent"
msgid "workspace.options.retry"
msgstr "Torna-ho a provar"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Rotació"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Cerca tipografia"
@@ -3791,7 +3780,7 @@ 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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Colors seleccionats"
@@ -3803,43 +3792,43 @@ msgstr "Emplenament de selecció"
msgid "workspace.options.selection-stroke"
msgstr "Traç de la selecció"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Difuminat"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Color de l'ombra"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Ombra caiguda"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Ombra interior"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Difusió"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Ombra"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Ombra del grup"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Ombres de selecció"
@@ -3847,7 +3836,7 @@ msgstr "Ombres de selecció"
msgid "workspace.options.show-fill-on-export"
msgstr "Mostra en l'exportació"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Mostra al visor"
@@ -3855,7 +3844,7 @@ msgstr "Mostra al visor"
msgid "workspace.options.size"
msgstr "Mida"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Mides predefinides"
@@ -3904,7 +3893,7 @@ msgstr "Fletxa triangular"
msgid "workspace.options.stroke-color"
msgstr "Color del traç"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Ample del traç"
@@ -3968,11 +3957,11 @@ msgstr "Ample automàtic"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Fix"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Espaiat de la lletra"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Alçada de la línia"
@@ -4038,15 +4027,15 @@ 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:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Ample"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "X"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Y"
@@ -4098,87 +4087,87 @@ msgstr "Obre"
msgid "workspace.plugins.install"
msgstr "Instal·la"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "Envia-ho al fons"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Envia-ho darrere"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Copia"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Selecciona al tauler"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Crea un component"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Crea components múltiples"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Retalla"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Elimina"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Elimina l'inici del flux"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Desconnecta la instància"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Desenganxa les instàncies"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Diferència"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Duplica"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Edita"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Exclou"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Aplana"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Volteja horitzontalment"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Volteja verticalment"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Inici del flux"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Porta-ho endavant"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Porta-ho a primer pla"
@@ -4187,79 +4176,79 @@ msgstr "Porta-ho a primer pla"
msgid "workspace.shape.menu.go-main"
msgstr "Vés al fitxer del component principal"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Agrupa"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Amaga"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Mostra/Amaga la interfície"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Intersecció"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Bloca"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Màscara"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Enganxa"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Camí"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Desfés les modificacions"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Selecciona la capa"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Mostra"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Vés al component principal"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Elimina la miniatura"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Estableix com a miniatura"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Transforma en camí"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Desagrupa"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Unió"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Desbloca"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Desemmascara"
@@ -4268,15 +4257,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:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Actualitza el component principal"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Historial"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Capes"
@@ -4312,7 +4301,7 @@ msgstr "Formes"
msgid "workspace.sidebar.layers.texts"
msgstr "Textos"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Atributs SVG importats"
@@ -4320,11 +4309,11 @@ msgstr "Atributs SVG importats"
msgid "workspace.sidebar.sitemap"
msgstr "Pàgines"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Mapa del lloc"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Recursos"
@@ -4332,35 +4321,35 @@ msgstr "Recursos"
msgid "workspace.toolbar.color-palette"
msgstr "Paleta de colors (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Comentaris (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Corba (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "El·lipse (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Tauler (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Imatge (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Mou (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Camí (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Rectangle (%s)"
@@ -4369,7 +4358,7 @@ msgstr "Rectangle (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Dreceres (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Text (%s)"
@@ -4531,15 +4520,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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Descarta"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
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:1226
msgid "workspace.updates.update"
msgstr "Actualitza"
diff --git a/frontend/translations/cs.po b/frontend/translations/cs.po
index ebf3b792aa..a74450b597 100644
--- a/frontend/translations/cs.po
+++ b/frontend/translations/cs.po
@@ -1,15 +1,15 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2025-01-29 22:23+0000\n"
+"PO-Revision-Date: 2025-03-20 13:42+0000\n"
"Last-Translator: Anonymous \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.10-dev\n"
+"X-Generator: Weblate 5.11-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
@@ -38,13 +38,13 @@ msgstr "Vytvořit demo účet"
msgid "auth.create-demo-profile"
msgstr "Chcete si to jen vyzkoušet?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Toto je DEMO služba, NEPOUŽÍVEJTE ji pro skutečnou práci, projekty budou "
"pravidelně mazány."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Zapomněli jste heslo?"
@@ -52,7 +52,7 @@ msgstr "Zapomněli jste heslo?"
msgid "auth.fullname"
msgstr "Jméno a příjmení"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "Přihlásit se do mého účtu"
@@ -60,33 +60,33 @@ msgstr "Přihlásit se do mého účtu"
msgid "auth.login-here"
msgstr "Přihlaste se zde."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Přihlásit se"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr ""
"Penpot je bezplatný open-source návrhářský nástroj pro spolupráci v oblasti "
"designu a kódu"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -110,7 +110,7 @@ msgstr "Odkaz na obnovení hesla byl zaslán na váš e-mail."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Připojení k týmu proběhlo úspěšně"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Heslo"
@@ -138,19 +138,19 @@ msgstr "Zapomněli jste heslo?"
msgid "auth.recovery-submit"
msgstr "Změnit heslo"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Ještě nemáte účet?"
#: src/app/main/ui/auth/register.cljs:254
msgid "auth.register-account-tagline"
-msgstr "Dejte nám vědět, jak bychom vám měli říkat."
+msgstr "Řekněte nám, jak bychom vám měli říkat."
#: src/app/main/ui/auth/register.cljs:253
msgid "auth.register-account-title"
msgstr "Vaše jméno"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Vytvořit účet"
@@ -175,7 +175,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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Všeobecné podmínky poskytování služeb"
@@ -189,7 +189,7 @@ msgstr ""
msgid "auth.verification-email-sent"
msgstr "Ověřovací e-mail jsme odeslali na adresu"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "Pracovní email"
@@ -198,7 +198,11 @@ msgstr "Pracovní email"
msgid "branding-illustrations-marketing-pieces"
msgstr "...branding, ilustrace, marketing atd."
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/comments.cljs:532
+msgid "comments.mentions.not-found"
+msgstr "Pro @%s nebyli nalezeni žádní lidé"
+
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Zveřejnit"
@@ -271,7 +275,7 @@ msgstr "Sdílet prototypy"
msgid "common.share-link.view-all"
msgstr "Vybrat vše"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Zrušit zveřejnění"
@@ -323,7 +327,7 @@ msgstr "Průvodce rozhraním"
msgid "dashboard.access-tokens.copied-success"
msgstr "Zkopírovaný token"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Generovat nový token"
@@ -331,11 +335,11 @@ msgstr "Generovat nový token"
msgid "dashboard.access-tokens.create.success"
msgstr "Přístupový token byl úspěšně vytvořen."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Pro vygenerování nového tokenu stiskněte tlačítko \"Generovat nový token\"."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "Zatím nemáte žádné tokeny."
@@ -359,23 +363,23 @@ msgstr "90 dní"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Nikdy"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Platnost vypršela %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Platnost vyprší %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Žádné datum vypršení platnosti"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Osobní přístupové tokeny"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Osobní přístupové tokeny fungují jako alternativa k našemu systému "
@@ -390,6 +394,10 @@ msgstr "Platnost tokenu vyprší %s"
msgid "dashboard.access-tokens.token-will-not-expire"
msgstr "Token nemá žádné datum vypršení platnosti"
+#: src/app/main/ui/dashboard/placeholder.cljs:35
+msgid "dashboard.add-file"
+msgstr "Přidat soubor"
+
#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612
msgid "dashboard.add-shared"
msgstr "Přidat jako sdílenou knihovnu"
@@ -398,7 +406,7 @@ msgstr "Přidat jako sdílenou knihovnu"
msgid "dashboard.change-email"
msgstr "Změnit e-mail"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(zkopírovat)"
@@ -434,23 +442,23 @@ msgstr "Duplikovat"
msgid "dashboard.duplicate-multi"
msgstr "Duplikovat %s soubory"
-#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:285
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
msgid "dashboard.empty-placeholder-drafts-subtitle"
msgstr "Jakmile člen projektu vytvoří koncept, zobrazí se zde."
-#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:280
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
msgid "dashboard.empty-placeholder-drafts-title"
msgstr "Zatím žádné koncepty."
-#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:286
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
msgid "dashboard.empty-placeholder-files-subtitle"
msgstr "Jakmile člen projektu vytvoří soubor, zobrazí se zde."
-#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:281
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
msgid "dashboard.empty-placeholder-files-title"
msgstr "Zatím žádné soubory."
-#: src/app/main/ui/dashboard/placeholder.cljs:40
+#: src/app/main/ui/dashboard/placeholder.cljs:77
#, markdown
msgid "dashboard.empty-placeholder-libraries"
msgstr ""
@@ -464,11 +472,11 @@ msgstr ""
"Zde se zobrazí knihovny přidané do projektu. Zkuste své soubory sdílet nebo "
"je přidat z [Knihovny a šablony](https://penpot.app/libraries-templates)."
-#: src/app/main/ui/dashboard/placeholder.cljs:36
+#: src/app/main/ui/dashboard/placeholder.cljs:73
msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role"
msgstr "Zde se zobrazí knihovny přidané do projektu."
-#: src/app/main/ui/dashboard/placeholder.cljs:33
+#: src/app/main/ui/dashboard/placeholder.cljs:70
msgid "dashboard.empty-placeholder-libraries-title"
msgstr "Zatím žádné knihovny."
@@ -562,34 +570,34 @@ msgstr "Zahrnout sdílené položky knihovny do knihoven souborů"
msgid "dashboard.export.title"
msgstr "Exportovat soubory"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Písmo odstraněno"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Odmítnout vše"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Stále nemáte nainstalované žádné vlastní písma."
-#: src/app/main/ui/dashboard/fonts.cljs:448
+#: src/app/main/ui/dashboard/fonts.cljs:450
msgid "dashboard.fonts.empty-placeholder-viewer"
msgstr "Zatím žádná vlastní písma."
-#: src/app/main/ui/dashboard/fonts.cljs:449
+#: src/app/main/ui/dashboard/fonts.cljs:451
msgid "dashboard.fonts.empty-placeholder-viewer-sub"
msgstr "Jakmile člen projektu nahraje vlastní písmo, zobrazí se zde."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "Přidáno 1 písmo"
msgstr[1] "%s písma přidány"
msgstr[2] "%s písem přidáno"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -599,21 +607,20 @@ msgstr ""
"Můžete nahrávat písma v následujících formátech: **TTF, OTF a WOFF** (bude "
"potřeba pouze jeden)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Měli byste nahrávat pouze písma, která vlastníte nebo máte licenci k "
"použití v Penpotu. Další informace najdete v části Obsahová práva "
-"[smluvních podmínek společnosti Penpot](%s). "
-"Můžete si také přečíst o [licencování "
-"písem](https://www.typography.com/faq)."
+"[smluvních podmínek společnosti Penpot](%s). Můžete si také přečíst o "
+"[licencování písem](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Nahrát vše"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -624,7 +631,7 @@ msgstr ""
"[Transfonter](https://transfonter.org/) ke generování webových písem a "
"opravě chyb. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Importovat Penpot soubory"
@@ -636,21 +643,33 @@ msgstr "Ups! Tento soubor se nepodařilo importovat"
msgid "dashboard.import.analyze-error.components-v2"
msgstr "Soubor s aktivovanými komponentami v2, ale tento tým je zatím nepodporuje."
+#: src/app/main/ui/dashboard.cljs:247
+msgid "dashboard.import.bad-url"
+msgstr "Import se nezdařil. Adresa URL šablony je nesprávná"
+
+#: src/app/main/ui/dashboard.cljs:241
+msgid "dashboard.import.error"
+msgstr "Import se nezdařil. Zkuste to prosím znovu"
+
#: src/app/main/ui/dashboard/import.cljs:292
msgid "dashboard.import.import-error"
msgstr "Při importu souboru došlo k problému. Soubor nebyl importován."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgid_plural "dashboard.import.import-message"
msgstr[0] "1 soubor byl úspěšně importován."
msgstr[1] "%s soubory byly úspěšně importovány."
msgstr[2] "%s souborů bylo úspěšně importováno."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Některé soubory obsahovaly neplatné objekty, které byly odstraněny."
+#: src/app/main/ui/dashboard.cljs:248
+msgid "dashboard.import.no-perms"
+msgstr "Nemáte oprávnění k importu do tohoto týmu"
+
#: src/app/main/ui/dashboard/import.cljs:129
msgid "dashboard.import.progress.process-colors"
msgstr "Zpracovávání barev"
@@ -687,27 +706,27 @@ msgstr "Pozvat do týmu"
msgid "dashboard.leave-team"
msgstr "Odejít z týmu"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Knihovny a šablony"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
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:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "Při importu šablony došlo k problému. Šablona nebyla importována."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Knihovny"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "načítání vašich souborů …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "načítání vašich písem …"
@@ -723,11 +742,11 @@ msgstr "Přesunout soubory %s do"
msgid "dashboard.move-to-other-team"
msgstr "Přesunout do jiného týmu"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Nový soubor"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Nový soubor"
@@ -735,7 +754,7 @@ msgstr "Nový soubor"
msgid "dashboard.new-project"
msgstr "+ Nový projekt"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Nový projekt"
@@ -747,7 +766,7 @@ msgstr "Nebyly nalezeny žádné shody pro “%s“"
msgid "dashboard.no-projects-placeholder"
msgstr "Připnuté projekty se zobrazí zde"
-#: src/app/main/ui/dashboard/comments.cljs:84
+#: src/app/main/ui/dashboard/comments.cljs:90
msgid "dashboard.notifications"
msgstr "Oznámení"
@@ -759,6 +778,10 @@ 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:260
+msgid "dashboard.notifications.notifications-saved"
+msgstr "Nastavení oznámení bylo aktualizováno"
+
#: src/app/main/ui/settings/password.cljs:36
msgid "dashboard.notifications.password-saved"
msgstr "Heslo bylo úspěšně uloženo!"
@@ -775,7 +798,7 @@ msgstr "Počet členů: %s"
msgid "dashboard.open-in-new-tab"
msgstr "Otevřít soubor na nové kartě"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Možnosti"
@@ -803,6 +826,18 @@ msgstr "Nyní jste v tomto týmu divákem."
msgid "dashboard.pin-unpin"
msgstr "Připnout/Odepnout"
+#: src/app/main/ui/dashboard.cljs:208
+msgid "dashboard.plugins.bad-url"
+msgstr "Adresa URL pluginu je nesprávná"
+
+#: src/app/main/ui/dashboard.cljs:206
+msgid "dashboard.plugins.parse-error"
+msgstr "Manifest pluginu nelze analyzovat"
+
+#: src/app/main/ui/dashboard.cljs:169
+msgid "dashboard.plugins.try-plugin"
+msgstr "Zkuste plugin: "
+
#: src/app/main/ui/dashboard/projects.cljs:55
msgid "dashboard.projects-title"
msgstr "Projekty"
@@ -840,7 +875,67 @@ msgstr "Vybrat jazyk uživatelského rozhraní"
msgid "dashboard.select-ui-theme"
msgstr "Vyberte téma"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/settings/notifications.cljs:57
+msgid "dashboard.settings.notifications.dashboard-comments.all"
+msgstr "Všechny komentáře, zmínky a odpovědi"
+
+#: src/app/main/ui/settings/notifications.cljs:59
+msgid "dashboard.settings.notifications.dashboard-comments.none"
+msgstr "Žádné"
+
+#: src/app/main/ui/settings/notifications.cljs:58
+msgid "dashboard.settings.notifications.dashboard-comments.partial"
+msgstr "Pouze zmínky a odpovědi"
+
+#: src/app/main/ui/settings/notifications.cljs:54
+msgid "dashboard.settings.notifications.dashboard-comments.title"
+msgstr "Komentáře k souboru"
+
+#: src/app/main/ui/settings/notifications.cljs:53
+msgid "dashboard.settings.notifications.dashboard.title"
+msgstr "Oznámení na hlavním panelu"
+
+#: src/app/main/ui/settings/notifications.cljs:67
+msgid "dashboard.settings.notifications.email-comments.all"
+msgstr "Všechny komentáře, zmínky a odpovědi"
+
+#: src/app/main/ui/settings/notifications.cljs:69
+msgid "dashboard.settings.notifications.email-comments.none"
+msgstr "Žádné"
+
+#: src/app/main/ui/settings/notifications.cljs:68
+msgid "dashboard.settings.notifications.email-comments.partial"
+msgstr "Pouze zmínky a odpovědi"
+
+#: src/app/main/ui/settings/notifications.cljs:64
+msgid "dashboard.settings.notifications.email-comments.title"
+msgstr "Komentáře k souboru"
+
+#: src/app/main/ui/settings/notifications.cljs:76
+msgid "dashboard.settings.notifications.email-invites.all"
+msgstr "Všechny typy pozvánek a žádostí"
+
+#: src/app/main/ui/settings/notifications.cljs:79
+msgid "dashboard.settings.notifications.email-invites.none"
+msgstr "Žádné"
+
+#: src/app/main/ui/settings/notifications.cljs:73
+msgid "dashboard.settings.notifications.email-invites.title"
+msgstr "Pozvánky a žádosti"
+
+#: src/app/main/ui/settings/notifications.cljs:63
+msgid "dashboard.settings.notifications.email.title"
+msgstr "E-mailová upozornění"
+
+#: src/app/main/ui/settings/notifications.cljs:84
+msgid "dashboard.settings.notifications.submit"
+msgstr "Aktualizovat nastavení"
+
+#: src/app/main/ui/settings/notifications.cljs:52
+msgid "dashboard.settings.notifications.title"
+msgstr "Oznámení"
+
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Zobrazit všechny soubory"
@@ -870,7 +965,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Váš soubor byl úspěšně přesunut"
@@ -914,15 +1009,15 @@ msgstr "Zrušit zveřejnění knihovny"
msgid "dashboard.update-settings"
msgstr "Aktualizovat nastavení"
-#: src/app/main/ui/dashboard/sidebar.cljs:969
+#: src/app/main/ui/dashboard/sidebar.cljs:970
msgid "dashboard.upgrade-plan.no-limits"
msgstr "Kreativitě se meze nekladou"
-#: src/app/main/ui/dashboard/sidebar.cljs:968
+#: src/app/main/ui/dashboard/sidebar.cljs:969
msgid "dashboard.upgrade-plan.penpot-free"
msgstr "Penpot Free"
-#: src/app/main/ui/dashboard/sidebar.cljs:971
+#: src/app/main/ui/dashboard/sidebar.cljs:972
msgid "dashboard.upgrade-plan.power-up"
msgstr "Power up"
@@ -981,7 +1076,7 @@ msgstr "E-mail"
msgid "dashboard.your-name"
msgstr "Vaše jméno"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Váš Penpot"
@@ -1001,11 +1096,11 @@ msgstr "Komponenty k aktualizaci:"
msgid "ds.confirm-allow"
msgstr "Povolit"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Zrušit"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "OK"
@@ -1017,7 +1112,7 @@ msgstr "Jste si jisti?"
msgid "errors.auth-provider-not-allowed"
msgstr "Poskytovatel autorizace není pro tento profil povolen"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Zprostředkovatel ověřování není nakonfigurován."
@@ -1025,11 +1120,11 @@ msgstr "Zprostředkovatel ověřování není nakonfigurován."
msgid "errors.auth.unable-to-login"
msgstr "Zdá se, že nejste ověřeni nebo platnost relace vypršela."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "Písmo %s se nepodařilo načíst"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "Písma %s se nepodařilo načíst"
@@ -1037,7 +1132,7 @@ msgstr "Písma %s se nepodařilo načíst"
msgid "errors.cannot-upload"
msgstr "Nelze nahrát soubor médií."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Váš prohlížeč tuto operaci nedokáže provést"
@@ -1049,7 +1144,7 @@ msgstr "Již použitá e-mailová adresa"
msgid "errors.email-already-validated"
msgstr "E-mail byl již ověřen."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Jako heslo nelze použít váš e-mail"
@@ -1096,7 +1191,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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Něco se pokazilo."
@@ -1109,8 +1204,7 @@ msgstr "Chybná barva"
msgid "errors.invalid-email"
msgstr "Zadejte prosím platný email"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "Potvrzovací e-mail se musí shodovat"
@@ -1126,7 +1220,7 @@ msgstr "Neplatná pozvánka"
msgid "errors.invite-invalid.info"
msgstr "Tato pozvánka byla pravděpodobně zrušena nebo vypršela její platnost."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "Ověřování LDAP je vypnuto."
@@ -1158,6 +1252,10 @@ msgstr ""
"Profil, který zvete, má ztlumené e-maily (zprávy o spamu nebo vysoké "
"nedoručitelnosti)."
+#: src/app/main/errors.cljs:228
+msgid "errors.migration-in-progress"
+msgstr "Probíhá migrace"
+
#: src/app/main/ui/settings/password.cljs
#, unused
msgid "errors.password-invalid-confirmation"
@@ -1172,7 +1270,7 @@ msgstr "Heslo by mělo mít nejméně 8 znaků"
msgid "errors.paste-data-validation"
msgstr "Neplatná data ve schránce"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Profil je zablokován"
@@ -1246,12 +1344,11 @@ msgstr "Při ověřování došlo k neočekávané chybě"
msgid "errors.webhooks.unexpected-status"
msgstr "Neočekávaný stav %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "Uživatelské jméno nebo heslo se zdá být chybné."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Staré heslo je nesprávné"
@@ -1299,11 +1396,11 @@ msgstr "Zde vám pomůžeme s vašimi technickými dotazy."
msgid "feedback.twitter-title"
msgstr "Účet podpory na X"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Došlo k chybě"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Rozostření"
@@ -1311,31 +1408,31 @@ msgstr "Rozostření"
msgid "inspect.attributes.blur.value"
msgstr "Hodnota"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Výplň"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Stáhnout zdrojový obrázek"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Výška"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Šířka"
@@ -1374,15 +1471,15 @@ msgstr "Nahoře"
msgid "inspect.attributes.layout.width"
msgstr "Šířka"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Stín"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Velikost a pozice"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Obrys"
@@ -1419,143 +1516,143 @@ msgstr "Plná"
msgid "inspect.attributes.stroke.width"
msgstr "Šířka"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Typografie"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Rodina písem"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Velikost písma"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Styl písma"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Tloušťka písma"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Mezery mezi písmeny"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Výška řádku"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Dekorace textu"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Žádná"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Přeškrtnutí"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Podtržení"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Transformace textu"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Malá písmena"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Žádná"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "První písmena velká"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "Nenastaveno"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Velká písmena"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
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/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Více informací o inspektorovi"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr ""
"Vyberte tvar, tabuli nebo skupinu, abyste mohli zkontrolovat jejich "
"vlastnosti a kód"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Kód"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Kruh"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Komponent"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Křivka"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Tabule"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Skupina"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Obrázek"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Maska"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s vybráno"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Cesta"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Obdélník"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Text"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Informace"
@@ -1575,15 +1672,15 @@ msgstr "Přístupové tokeny"
msgid "labels.active"
msgstr "Aktivní"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.add"
msgstr "Přidat"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Přidat vlastní písmo"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.adding"
msgstr "Přidávání..."
@@ -1595,7 +1692,7 @@ msgstr "Správce"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Vše"
@@ -1617,7 +1714,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Špatná brána"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Zrušit"
@@ -1625,27 +1722,27 @@ msgstr "Zrušit"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Zavřít"
-#: src/app/main/ui/workspace/tokens/sets.cljs:180
+#: src/app/main/ui/workspace/tokens/sets.cljs:219
msgid "labels.collapse"
msgstr "Sbalit"
-#: src/app/main/ui/comments.cljs:812
+#: src/app/main/ui/comments.cljs:881
msgid "labels.comment"
msgstr "Komentář"
-#: src/app/main/ui/comments.cljs:816
+#: src/app/main/ui/comments.cljs:885
msgid "labels.comment.mark-as-solved"
msgstr "Označit jako vyřešené"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Komentáře"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Komunita"
@@ -1653,7 +1750,7 @@ msgstr "Komunita"
msgid "labels.confirm-password"
msgstr "Potvrďte heslo"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Pokračovat"
@@ -1673,7 +1770,7 @@ msgstr "Kopírovat odkaz"
msgid "labels.copyright"
msgstr "Kaleidos @2024"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Vytvořit"
@@ -1693,15 +1790,15 @@ msgstr "Vlastní písma"
msgid "labels.dashboard"
msgstr "Menu"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Smazat"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Smazat komentář"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Smazat vlákno"
@@ -1721,15 +1818,15 @@ msgstr "Vývojář"
msgid "labels.director"
msgstr "Ředitel"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "Zahodit"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Pracovní verze"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Upravit"
@@ -1749,7 +1846,7 @@ msgstr "Událost"
msgid "labels.expired-invitation"
msgstr "Platnost vypršela"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Exportovat"
@@ -1765,7 +1862,7 @@ msgstr "Zpětná vazba byla odeslána"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Rodina písem"
@@ -1773,11 +1870,11 @@ msgstr "Rodina písem"
msgid "labels.font-providers"
msgstr "Poskytovatelé písem"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Styly"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Písma"
@@ -1789,11 +1886,11 @@ msgstr "Zakladatel / viceprezident"
msgid "labels.freelancer"
msgstr "Jsem freelancer"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Úložiště Github"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Poslat zpětnou vazbu"
@@ -1805,19 +1902,23 @@ msgstr "Jít zpět"
msgid "labels.graphic-design"
msgstr "Grafický design"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Centrum nápovědy"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Skrýt vyřešené komentáře"
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:413
+msgid "labels.import"
+msgstr "Import"
+
#: src/app/main/ui/dashboard/team.cljs:1018
msgid "labels.inactive"
msgstr "Neaktivní"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Nainstalovaná písma"
@@ -1843,11 +1944,11 @@ msgstr "Pozvánky"
msgid "labels.language"
msgstr "Jazyk"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Knihovny a šablony"
-#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:114, src/app/main/ui/dashboard/grid.cljs:133, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:53, src/app/main/ui/ds/product/loader.cljs:52, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:126, src/app/main/ui.cljs:67, src/app/main/ui.cljs:105, src/app/main/ui.cljs:124
+#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:115, src/app/main/ui/dashboard/grid.cljs:134, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:98, src/app/main/ui/ds/product/loader.cljs:85, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:118, src/app/main/ui.cljs:66, src/app/main/ui.cljs:104, src/app/main/ui.cljs:123
msgid "labels.loading"
msgstr "Načítání…"
@@ -1859,7 +1960,7 @@ msgstr "Přihlásit se ne registrovat"
msgid "labels.login"
msgstr "Přihlášení"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Odhlásit se"
@@ -1879,11 +1980,11 @@ msgstr "Členové"
msgid "labels.new-password"
msgstr "Nové heslo"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Další"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "Vše je aktuální! Zde se zobrazí upozornění na nové komentáře."
@@ -1907,7 +2008,11 @@ msgstr "Tato stránka možná neexistuje nebo k ní nemáte oprávnění k pří
msgid "labels.not-found.main-message"
msgstr "Ups!"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/settings/sidebar.cljs:99
+msgid "labels.notifications"
+msgstr "Oznámení"
+
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "1 soubor"
@@ -1941,7 +2046,7 @@ msgstr "Staré heslo"
msgid "labels.only-yours"
msgstr "Jen vaše"
-#: src/app/main/ui/comments.cljs:545, src/app/main/ui/comments.cljs:822, src/app/main/ui/comments.cljs:886, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:295, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:324
+#: src/app/main/ui/comments.cljs:891, src/app/main/ui/comments.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:293, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:322
msgid "labels.options"
msgstr "Možnosti"
@@ -1969,7 +2074,7 @@ msgstr "Heslo"
msgid "labels.pending-invitation"
msgstr "Nevyřízený"
-#: src/app/main/ui/comments.cljs:657, src/app/main/ui/comments.cljs:690, src/app/main/ui/comments.cljs:759
+#: src/app/main/ui/comments.cljs:678
msgid "labels.post"
msgstr "Příspěvek"
@@ -1993,7 +2098,7 @@ msgstr "Profil"
msgid "labels.projects"
msgstr "Projekty"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Poznámky k verzi"
@@ -2011,7 +2116,7 @@ msgstr "Odstranit"
msgid "labels.remove-member"
msgstr "Odebrat člena"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Přejmenovat"
@@ -2019,23 +2124,23 @@ msgstr "Přejmenovat"
msgid "labels.rename-team"
msgstr "Přejmenovat tým"
-#: src/app/main/ui/comments.cljs:598
+#: src/app/main/ui/comments.cljs:641
msgid "labels.replies"
msgstr "odpovědi"
-#: src/app/main/ui/comments.cljs:603
+#: src/app/main/ui/comments.cljs:646
msgid "labels.replies.new"
msgstr "nové odpovědi"
-#: src/app/main/ui/comments.cljs:597
+#: src/app/main/ui/comments.cljs:640
msgid "labels.reply"
msgstr "odpověď"
-#: src/app/main/ui/comments.cljs:602
+#: src/app/main/ui/comments.cljs:645
msgid "labels.reply.new"
msgstr "nová odpověď"
-#: src/app/main/ui/comments.cljs:641
+#: src/app/main/ui/comments.cljs:721
msgid "labels.reply.thread"
msgstr "Odpověď"
@@ -2055,15 +2160,15 @@ msgstr "Zkusit znovu"
msgid "labels.role"
msgstr "Role"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Uložit"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "Hledat"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Hledat písmo"
@@ -2087,7 +2192,7 @@ 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:252
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:247
msgid "labels.sets"
msgstr "Sady"
@@ -2107,15 +2212,19 @@ msgstr "Sdílet prototyp"
msgid "labels.shared-libraries"
msgstr "Knihovny"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Zobrazit všechny komentáře"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Zobrazit seznam komentářů"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139
+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
msgid "labels.show-your-comments"
msgstr "Zobrazit pouze vaše komentáře"
@@ -2143,11 +2252,11 @@ msgstr "Vedoucí týmu"
msgid "labels.team-member"
msgstr "Člen týmu"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:183
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:182
msgid "labels.themes"
msgstr "Motivy"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Tutoriály"
@@ -2163,15 +2272,15 @@ msgstr "Aktualizovat"
msgid "labels.update-team"
msgstr "Aktualizovat tým"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Nahrát"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Nahrát vlastní písma"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Nahrávání…"
@@ -2187,7 +2296,7 @@ msgstr "Prohlížeč"
msgid "labels.webhooks"
msgstr "Webhooks"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Napsat nový komentář"
@@ -2195,7 +2304,7 @@ msgstr "Napsat nový komentář"
msgid "labels.you"
msgstr "(vy)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Váš účet"
@@ -2203,23 +2312,23 @@ msgstr "Váš účet"
msgid "labels.youtube"
msgstr "YouTube"
-#: src/app/main/ui/workspace/colorpicker.cljs:477, src/app/main/ui/workspace/colorpicker.cljs:478, src/app/main/ui/workspace/colorpicker.cljs:480
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
msgid "media.choose-image"
msgstr "Vyberte obrázek"
-#: src/app/main/ui/workspace/colorpicker.cljs:245
+#: src/app/main/ui/workspace/colorpicker.cljs:241
msgid "media.gradient"
msgstr "Přechod"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "Obrázek"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:77
+#: src/app/main/ui/inspect/attributes/common.cljs:77
msgid "media.image.short"
msgstr "obr"
-#: src/app/main/ui/workspace/colorpicker.cljs:470
+#: src/app/main/ui/workspace/colorpicker.cljs:467
msgid "media.keep-aspect-ratio"
msgstr "Zachovat poměr stran"
@@ -2237,7 +2346,7 @@ msgstr "Načítání obrázku…"
msgid "media.radial"
msgstr "Radiální"
-#: src/app/main/ui/workspace/colorpicker.cljs:243
+#: src/app/main/ui/workspace/colorpicker.cljs:239
msgid "media.solid"
msgstr "Plná"
@@ -2288,7 +2397,7 @@ msgstr "Změnit e-mail"
msgid "modals.change-email.title"
msgstr "Změňte svůj e-mail"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Kopírovat token"
@@ -2304,7 +2413,7 @@ msgstr "Jméno"
msgid "modals.create-access-token.name.placeholder"
msgstr "Název může pomoci zjistit, k čemu token slouží"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Vytvořit token"
@@ -2328,15 +2437,15 @@ msgstr "Adresa URL datové části"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://example.com/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Smazat token"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "Opravdu chcete tento token smazat?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Smazat token"
@@ -2356,25 +2465,25 @@ msgstr "Odebráním účtu ztratíte všechny své aktuální projekty a archivy
msgid "modals.delete-account.title"
msgstr "Opravdu chcete smazat svůj účet?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Smazat konverzaci"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Opravdu chcete smazat tuto konverzaci? Všechny komentáře v tomto vláknu "
"budou smazány."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Smazat konverzaci"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
msgid "modals.delete-component-annotation.message"
msgstr "Opravdu chcete smazat tuto anotaci?"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Smazat anotaci"
@@ -2402,29 +2511,29 @@ msgstr "Opravdu chcete smazat soubory %s?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Mazání %s souborů"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Opravdu chcete smazat tento styl písma? Pokud je použit v souboru, nenačte "
"se."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Odstranění stylu písma"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr "Opravdu chcete smazat toto písmo? Pokud je použito v souboru, nenačte se."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Mazání písma"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Opravdu chcete smazat tuto stránku?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Smazat stránku"
@@ -2649,15 +2758,15 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "Nový majitel týmu"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Publikovat"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
msgid "modals.publish-empty-library.message"
msgstr "Vaše knihovna je prázdná. Opravdu to chcete publikovat?"
-#: src/app/main/ui/workspace/libraries.cljs:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Publikovat prázdnou knihovnu"
@@ -2715,21 +2824,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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Aktualizovat"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Zrušit"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Aktualizovat komponentu ve sdílené knihovně"
@@ -2887,27 +2996,27 @@ msgstr "Video tutoriály"
msgid "onboarding-v2.before-start.title"
msgstr "Než začnete"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Přihlaste se k odběru novinek Penpot a zůstaňte informováni o pokroku ve "
"vývoji produktu."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr "Zasílejte mi novinky o Penpot (příspěvky na blogu, videonávody, streamy...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Záleží nám na soukromí, zde si můžete přečíst naše "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Budeme vám posílat pouze relevantní e-maily. Z odběru se můžete kdykoli "
"odhlásit pomocí odhlašovacího odkazu v kterémkoli z našich newsletterů."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr "Zasílejte mi aktualizace produktu (nové funkce, verze, opravy...)."
@@ -3003,15 +3112,15 @@ msgstr "Později budete moci vytvořit tým."
msgid "onboarding.newsletter.accept"
msgstr "Ano, přihlásit se k odběru"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr "Vaše žádost k odběru byla odeslána, zašleme vám e-mail pro potvrzení."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Zásady ochrany osobních údajů."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Chcete dostávat novinky Penpot?"
@@ -3204,7 +3313,7 @@ msgstr "Přejít na přihlášení"
msgid "settings.detach"
msgstr "Odpojit"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Smíšený"
@@ -3402,7 +3511,7 @@ msgstr "Vytvořit nový"
msgid "shortcuts.cut"
msgstr "Vyjmout"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Oddálit"
@@ -3502,7 +3611,7 @@ msgstr "Rozložit vodorovně"
msgid "shortcuts.hide-ui"
msgstr "Zobrazit/skrýt uživatelské rozhraní"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Přiblížit"
@@ -3886,15 +3995,15 @@ msgstr "Přiblížit vybrané"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Poskytovatelé písem - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Písma - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Projekty - %s - Penpot"
@@ -3902,7 +4011,7 @@ msgstr "Projekty - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Hledat - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Sdílené knihovny - %s - Penpot"
@@ -3910,7 +4019,7 @@ msgstr "Sdílené knihovny - %s - Penpot"
msgid "title.default"
msgstr "Penpot – Svoboda designu pro týmy"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "Profil – Přístupové tokeny"
@@ -3918,6 +4027,10 @@ msgstr "Profil – Přístupové tokeny"
msgid "title.settings.feedback"
msgstr "Poskytněte zpětnou vazbu – Penpot"
+#: src/app/main/ui/settings/notifications.cljs:45
+msgid "title.settings.notifications"
+msgstr "Upozornění – Penpot"
+
#: src/app/main/ui/settings/options.cljs:76
msgid "title.settings.options"
msgstr "Nastavení - Penpot"
@@ -3950,7 +4063,7 @@ msgstr "Webhooks - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Režim zobrazení - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -4048,7 +4161,7 @@ msgstr "Rozmístit vertikální mezery (%s)"
msgid "workspace.align.vtop"
msgstr "Zarovnat nahoru (%s)"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:174, src/app/main/ui/workspace/sidebar/assets.cljs:179
+#: src/app/main/ui/workspace/sidebar/assets.cljs:171
msgid "workspace.assets.add-library"
msgstr "Přidat knihovnu"
@@ -4057,11 +4170,11 @@ msgstr "Přidat knihovnu"
msgid "workspace.assets.assets"
msgstr "Podklady"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Všechny podklady"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Barvy"
@@ -4069,11 +4182,11 @@ msgstr "Barvy"
msgid "workspace.assets.colors.add-color"
msgstr "Přidat barvu"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Komponenty"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:510
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:520
msgid "workspace.assets.components.add-component"
msgstr "Přidat komponent"
@@ -4087,15 +4200,15 @@ 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:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Delete"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Duplikovat"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "Duplikovat hlavní"
@@ -4103,19 +4216,19 @@ msgstr "Duplikovat hlavní"
msgid "workspace.assets.edit"
msgstr "Upravit"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:195
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
msgid "workspace.assets.filter"
msgstr "Filtr"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Grafika"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:505
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:515
msgid "workspace.assets.grid-view"
msgstr "Zobrazení mřížky"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Skupina"
@@ -4123,27 +4236,23 @@ msgstr "Skupina"
msgid "workspace.assets.group-name"
msgstr "Název skupiny"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Knihovny"
-
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:501
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:511
msgid "workspace.assets.list-view"
msgstr "Zobrazení seznamu"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "místní knihovna"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Nebyly nalezeny žádné podklady"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "Otevřete soubor knihovny"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Přejmenovat"
@@ -4151,7 +4260,7 @@ msgstr "Přejmenovat"
msgid "workspace.assets.rename-group"
msgstr "Přejmenovat skupinu"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Hledat v podkladech"
@@ -4168,18 +4277,18 @@ 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:226
+#: 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:211
+#: src/app/main/ui/workspace/sidebar/assets.cljs:201
msgid "workspace.assets.sort"
msgstr "Seřadit"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Typografie"
@@ -4192,27 +4301,27 @@ msgstr "Přidat typografii"
msgid "workspace.assets.typography.font-id"
msgstr "Písmo"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Velikost"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Varianta"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Chcete-li upravit, přejděte do souboru knihovny stylů"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Mezery mezi písmeny"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Výška řádku"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -4220,7 +4329,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Styly textu"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Transformace textu"
@@ -4228,55 +4337,55 @@ msgstr "Transformace textu"
msgid "workspace.assets.ungroup"
msgstr "Zrušit seskupení"
-#: src/app/main/ui/workspace/context_menu.cljs:748
+#: src/app/main/ui/workspace/context_menu.cljs:764
msgid "workspace.context-menu.grid-cells.area"
msgstr "Vytvořit oblast"
-#: src/app/main/ui/workspace/context_menu.cljs:751
+#: src/app/main/ui/workspace/context_menu.cljs:767
msgid "workspace.context-menu.grid-cells.create-board"
msgstr "Vytvořit tabuli"
-#: src/app/main/ui/workspace/context_menu.cljs:743
+#: src/app/main/ui/workspace/context_menu.cljs:759
msgid "workspace.context-menu.grid-cells.merge"
msgstr "Sloučit buňky"
-#: src/app/main/ui/workspace/context_menu.cljs:706
+#: src/app/main/ui/workspace/context_menu.cljs:722
msgid "workspace.context-menu.grid-track.column.add-after"
msgstr "Přidat 1 sloupec vpravo"
-#: src/app/main/ui/workspace/context_menu.cljs:705
+#: src/app/main/ui/workspace/context_menu.cljs:721
msgid "workspace.context-menu.grid-track.column.add-before"
msgstr "Přidat 1 sloupec vlevo"
-#: src/app/main/ui/workspace/context_menu.cljs:707
+#: src/app/main/ui/workspace/context_menu.cljs:723
msgid "workspace.context-menu.grid-track.column.delete"
msgstr "Smazat sloupec"
-#: src/app/main/ui/workspace/context_menu.cljs:708
+#: src/app/main/ui/workspace/context_menu.cljs:724
msgid "workspace.context-menu.grid-track.column.delete-shapes"
msgstr "Smazat sloupec a tvary"
-#: src/app/main/ui/workspace/context_menu.cljs:704
+#: src/app/main/ui/workspace/context_menu.cljs:720
msgid "workspace.context-menu.grid-track.column.duplicate"
msgstr "Duplikovat sloupec"
-#: src/app/main/ui/workspace/context_menu.cljs:713
+#: src/app/main/ui/workspace/context_menu.cljs:729
msgid "workspace.context-menu.grid-track.row.add-after"
msgstr "Přidat 1 řádek níže"
-#: src/app/main/ui/workspace/context_menu.cljs:712
+#: src/app/main/ui/workspace/context_menu.cljs:728
msgid "workspace.context-menu.grid-track.row.add-before"
msgstr "Přidat 1 řádek výše"
-#: src/app/main/ui/workspace/context_menu.cljs:714
+#: src/app/main/ui/workspace/context_menu.cljs:730
msgid "workspace.context-menu.grid-track.row.delete"
msgstr "Smazat řádek"
-#: src/app/main/ui/workspace/context_menu.cljs:715
+#: src/app/main/ui/workspace/context_menu.cljs:731
msgid "workspace.context-menu.grid-track.row.delete-shapes"
msgstr "Smazat řádek a tvary"
-#: src/app/main/ui/workspace/context_menu.cljs:711
+#: src/app/main/ui/workspace/context_menu.cljs:727
msgid "workspace.context-menu.grid-track.row.duplicate"
msgstr "Duplikovat řádek"
@@ -4284,11 +4393,11 @@ msgstr "Duplikovat řádek"
msgid "workspace.focus.focus-mode"
msgstr "Režim soustředění"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Vypnout režim soustředění"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Zapnout režim soustředění"
@@ -4446,37 +4555,36 @@ msgstr "Přepnout na světlý motiv"
msgid "workspace.header.menu.undo"
msgstr "Zpět"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Resetovat"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Chyba při ukládání"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Uloženo"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Ukládání"
-#: src/app/main/ui/workspace/right_header.cljs:255
+#: src/app/main/ui/workspace/right_header.cljs:221
msgid "workspace.header.share"
msgstr "Sdílet"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Neuložené změny"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
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:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "Přiblížení"
@@ -4488,7 +4596,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:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Přiblížit, aby se vše vešlo"
@@ -4496,19 +4604,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:136
+#: src/app/main/ui/workspace/right_header.cljs:104
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:607
+#: 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:616
msgid "workspace.layout_grid.editor.options.edit-grid"
msgstr "Upravit mřížku"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
msgid "workspace.layout_grid.editor.options.exit"
msgstr "Odejít"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:478
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
msgid "workspace.layout_grid.editor.padding.expand"
msgstr "Zobrazit možnosti mezer uvnitř všech stran"
@@ -4524,7 +4632,7 @@ msgstr "Hotovo"
msgid "workspace.layout_grid.editor.top-bar.locate"
msgstr "Lokalizovat"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1321
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
msgstr "Vyhledat rozložení mřížky"
@@ -4533,7 +4641,7 @@ msgstr "Vyhledat rozložení mřížky"
msgid "workspace.libraries.add"
msgstr "Přidat"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "barvy %s"
@@ -4563,43 +4671,43 @@ msgstr "Nedávné barvy"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "Doplňkové RGB"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Uložit styl barev"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:374
+#: src/app/main/ui/workspace/libraries.cljs:371
msgid "workspace.libraries.empty.add-some"
msgstr "Nebo přidejte některé z těchto:"
-#: src/app/main/ui/workspace/libraries.cljs:368
+#: src/app/main/ui/workspace/libraries.cljs:365
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:372
+#: src/app/main/ui/workspace/libraries.cljs:369
msgid "workspace.libraries.empty.some-templates"
msgstr "nějaké šablony zde"
-#: src/app/main/ui/workspace/libraries.cljs:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Knihovna souborů"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "KNIHOVNY V TOMTO SOUBORU"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "KNIHOVNY"
@@ -4608,71 +4716,64 @@ msgstr "KNIHOVNY"
msgid "workspace.libraries.library"
msgstr "KNIHOVNA"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "AKTUALIZACE KNIHOVNY"
-#: src/app/main/ui/workspace/libraries.cljs:363
+#: src/app/main/ui/workspace/libraries.cljs:360
msgid "workspace.libraries.loading"
msgstr "Načítání…"
#: src/app/main/ui/workspace/libraries.cljs:387
+#, unused
msgid "workspace.libraries.more-templates"
msgstr "Můžete hledat "
-#: src/app/main/ui/workspace/libraries.cljs:391
-msgid "workspace.libraries.more-templates-link"
-msgstr "více šablon zde"
-
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
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:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Nebyly nalezeny žádné shody pro „%s“"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Nejsou k dispozici žádné sdílené knihovny"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Prohledat sdílené knihovny"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "SDÍLENÉ KNIHOVNY"
-#: src/app/main/ui/workspace/libraries.cljs:355
+#: src/app/main/ui/workspace/libraries.cljs:352
msgid "workspace.libraries.shared-library-btn"
msgstr "Připojit knihovnu"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Několik typografií"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Odpojte všechny typografie"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:326
+#: src/app/main/ui/workspace/libraries.cljs:323
msgid "workspace.libraries.unlink-library-btn"
msgstr "Odpojit knihovnu"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Aktualizace"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "zobrazit všechny změny"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "AKTUALIZACE"
@@ -4704,43 +4805,43 @@ msgstr "Rozostření výběru"
msgid "workspace.options.blur-options.toggle-blur"
msgstr "Přepnout rozostření"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Pozadí plátna"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Oříznout obsah"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Komponent"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "Anotace"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "Kopírovat"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "Vytvořte anotaci"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Upravit anotaci"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Hlavní"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:416
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
msgid "workspace.options.component.swap"
msgstr "Vyměnit komponent"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:460
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
msgid "workspace.options.component.swap.empty"
msgstr "V této knihovně zatím nejsou žádné položky"
@@ -4788,7 +4889,7 @@ msgstr "Nahoře a dole"
msgid "workspace.options.design"
msgstr "Design"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Exportovat"
@@ -4797,22 +4898,22 @@ msgstr "Exportovat"
msgid "workspace.options.export-multiple"
msgstr "Exportovat výběr"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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:187
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188
msgid "workspace.options.export.add-export"
msgstr "Přidat export"
-#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:199, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:234
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235
msgid "workspace.options.export.remove-export"
msgstr "Odebrat export"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Přípona"
@@ -4820,7 +4921,7 @@ msgstr "Přípona"
msgid "workspace.options.exporting-complete"
msgstr "Export byl dokončen"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Exportování…"
@@ -4844,6 +4945,10 @@ msgstr "Přidat barvu výplně"
msgid "workspace.options.fill.remove-fill"
msgstr "Odebrat barvu výplně"
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:341
+msgid "workspace.options.fit-content"
+msgstr "Změňte velikost panelu podle obsahu"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182
msgid "workspace.options.flows.add-flow-start"
msgstr "Přidat počáteční bod"
@@ -4970,7 +5075,7 @@ msgstr "Ohraničení skupiny"
msgid "workspace.options.guides.title"
msgstr "Vodící linky"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Výška"
@@ -5293,19 +5398,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:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
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:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Maximální šířka"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
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:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Minimální šířka"
@@ -5419,11 +5524,11 @@ msgstr "místo mezi"
msgid "workspace.options.layout.top"
msgstr "Nahoře"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Více barev"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Více barev knihovny"
@@ -5460,7 +5565,7 @@ msgstr "Nahoře vlevo"
msgid "workspace.options.radius-top-right"
msgstr "Nahoře vpravo"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Nedávné"
@@ -5468,11 +5573,11 @@ msgstr "Nedávné"
msgid "workspace.options.retry"
msgstr "Opakovat"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Otočit"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Hledat písmo"
@@ -5480,7 +5585,7 @@ msgstr "Hledat písmo"
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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Vybrané barvy"
@@ -5492,55 +5597,55 @@ msgstr "Vyplnění výběru"
msgid "workspace.options.selection-stroke"
msgstr "Obrys výběru"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:292
msgid "workspace.options.shadow-options.add-shadow"
msgstr "Přidat stín"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Rozostření"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Barva stínu"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Vržený stín"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Vnitřní stín"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:180, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:318
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
msgid "workspace.options.shadow-options.remove-shadow"
msgstr "Odebrat stín"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Rozpětí"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Stín"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Stín skupiny"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Stiny výběru"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:176
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:144
msgid "workspace.options.shadow-options.toggle-shadow"
msgstr "Přepnout stín"
@@ -5548,7 +5653,7 @@ msgstr "Přepnout stín"
msgid "workspace.options.show-fill-on-export"
msgstr "Zobrazit v exportech"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Zobrazit v režimu zobrazení"
@@ -5556,7 +5661,7 @@ msgstr "Zobrazit v režimu zobrazení"
msgid "workspace.options.size"
msgstr "Velikost"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Předvolby velikosti"
@@ -5625,7 +5730,7 @@ msgstr "Trojúhelník"
msgid "workspace.options.stroke-color"
msgstr "Barva obrysu"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Šířka obrysu"
@@ -5697,11 +5802,11 @@ msgstr "Automatická šířka"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Pevná"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Mezery mezi písmeny"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Výška řádku"
@@ -5765,15 +5870,15 @@ msgstr "Velká písmena"
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:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Šířka"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "X"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Y"
@@ -5948,103 +6053,127 @@ msgstr "PLUGIN '%s' JE NAINSTALOVÁN PRO VAŠEHO UŽIVATELE!"
msgid "workspace.plugins.try-out.try"
msgstr "VYZKOUŠET PLUGIN"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Přidat flexibilní rozložení"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "Přidat rozvržení mřížky"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1004, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1030
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1013, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039
msgid "workspace.shape.menu.add-layout"
msgstr "Přidat rozvržení"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "Poslat na konec"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Poslat dozadu"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Kopírovat"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/context_menu.cljs:204
+msgid "workspace.shape.menu.copy-css"
+msgstr "Kopírovat jako CSS"
+
+#: src/app/main/ui/workspace/context_menu.cljs:206
+msgid "workspace.shape.menu.copy-css-nested"
+msgstr "Kopírovat jako CSS (vnořené vrstvy)"
+
+#: src/app/main/ui/workspace/context_menu.cljs:189
+msgid "workspace.shape.menu.copy-link"
+msgstr "Zkopírovat odkaz do schránky"
+
+#: src/app/main/ui/workspace/context_menu.cljs:202
+msgid "workspace.shape.menu.copy-paste-as"
+msgstr "Kopírovat/Vložit jako..."
+
+#: src/app/main/ui/workspace/context_menu.cljs:214
+msgid "workspace.shape.menu.copy-props"
+msgstr "Kopírovat vlastnosti"
+
+#: src/app/main/ui/workspace/context_menu.cljs:211
+msgid "workspace.shape.menu.copy-text"
+msgstr "Kopírovat jako text"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "Vytvořit anotaci"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Výběr na tabuli"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Vytvořit komponent"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Vytvořte více komponent"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Vyjmout"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Smazat"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Smazat počáteční bod"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Odpojit instanci"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Odpojit instance"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Rozdíl"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Duplikovat"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Upravit"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Vyloučit"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Vyrovnat"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Překlopit vodorovně"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Překlopit svisle"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "začátek"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Posunout dopředu"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Posunout na začátek"
@@ -6053,103 +6182,107 @@ msgstr "Posunout na začátek"
msgid "workspace.shape.menu.go-main"
msgstr "Přejít na hlavní soubor komponentu"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Skupina"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Skrýt"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Zobrazit/skrýt uživatelské rozhraní"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Průnik"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Zamknout"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Maska"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Vložit"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:218
+msgid "workspace.shape.menu.paste-props"
+msgstr "Vlastnosti vložit"
+
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Cesta"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Odstranit flexibilní rozložení"
-#: src/app/main/ui/workspace/context_menu.cljs:531
+#: src/app/main/ui/workspace/context_menu.cljs:535
msgid "workspace.shape.menu.remove-grid"
msgstr "Odebrat rozložení mřížky"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1022
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1031
msgid "workspace.shape.menu.remove-layout"
msgstr "Odebrat rozložení"
-#: src/app/main/ui/workspace/context_menu.cljs:312
+#: src/app/main/ui/workspace/context_menu.cljs:313
msgid "workspace.shape.menu.rename"
msgstr "Přejmenovat"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Obnovit"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Obnovit hlavní komponent"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Vybrat vrstvu"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Zobrazit"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Zobrazit v panelu položek"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Zobrazit hlavní komponent"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Odebrat miniaturu"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Nastavit jako miniaturu"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Transformovat na cestu"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Zrušit seskupení"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Sloučení"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Odemknout"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Zrušit masku"
@@ -6158,7 +6291,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:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Aktualizovat hlavní komponent"
@@ -6170,11 +6303,11 @@ msgstr "Sbalit postranní panel"
msgid "workspace.sidebar.expand"
msgstr "Rozbalit postranní panel"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Historie"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Vrstvy"
@@ -6210,7 +6343,7 @@ msgstr "Tvary"
msgid "workspace.sidebar.layers.texts"
msgstr "Texty"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Importované atributy SVG"
@@ -6222,10 +6355,15 @@ msgstr "Stránky"
msgid "workspace.sidebar.sitemap.add-page"
msgstr "Přidat stránku"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Mapa stránek"
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:47
+#, unused
+msgid "workspace.token-set.not-active"
+msgstr "Sada tokenů není aktivní"
+
#: src/app/main/ui/workspace/tokens/theme_select.cljs:84
msgid "workspace.token.active-themes"
msgstr "%s aktivních motivů"
@@ -6235,31 +6373,43 @@ msgstr "%s aktivních motivů"
msgid "workspace.token.add set"
msgstr "Přidat sadu"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:341
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:136
+msgid "workspace.token.applied-to"
+msgstr "Aplikováno na"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:391
msgid "workspace.token.back-to-themes"
msgstr "Zpět na seznam motivů"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:51
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:54
msgid "workspace.token.create-new-theme"
msgstr "Vytvořte si svůj první motiv hned teď."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:191, src/app/main/ui/workspace/tokens/sidebar.cljs:218
+#: src/app/main/ui/workspace/tokens/sets.cljs:134, src/app/main/ui/workspace/tokens/sidebar.cljs:190
msgid "workspace.token.create-one"
msgstr "Vytvořte si."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159, src/app/main/ui/workspace/tokens/modals/themes.cljs:237
-msgid "workspace.token.create-theme-title"
-msgstr "Vytvořit motiv"
-
-#: src/app/main/ui/workspace/tokens/form.cljs:431
+#: src/app/main/ui/workspace/tokens/form.cljs:492
msgid "workspace.token.create-token"
msgstr "Vytvořte nový %s token"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:151
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:278
+msgid "workspace.token.delete"
+msgstr "Smazat token"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159
msgid "workspace.token.delete-theme-title"
msgstr "Smazat motiv"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:333
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:275
+msgid "workspace.token.duplicate"
+msgstr "Duplikovat token"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:262
+msgid "workspace.token.edit"
+msgstr "Upravit token"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:383
msgid "workspace.token.edit-theme-title"
msgstr "Upravit motiv"
@@ -6267,81 +6417,127 @@ msgstr "Upravit motiv"
msgid "workspace.token.edit-themes"
msgstr "Upravit motivy"
-#: src/app/main/ui/workspace/tokens/form.cljs:430
+#: src/app/main/ui/workspace/tokens/form.cljs:491
msgid "workspace.token.edit-token"
msgstr "Upravit token"
+#: src/app/main/ui/workspace/tokens/form.cljs:544
+msgid "workspace.token.enter-token-description"
+msgstr "Přidejte popis (volitelné)"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:498
+msgid "workspace.token.enter-token-name"
+msgstr "Zadejte název tokenu %s"
+
#: src/app/main/ui/workspace/tokens/sets.cljs
#, unused
msgid "workspace.token.grouping-set-alert"
msgstr "Seskupení sady tokenů zatím není podporováno."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:56
-msgid "workspace.token.new-theme"
-msgstr "Nový motiv"
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:196
+msgid "workspace.token.label.group"
+msgstr "Skupina"
-#: src/app/main/ui/workspace/tokens/theme_select.cljs:88
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:206
+msgid "workspace.token.label.theme"
+msgstr "Téma"
+
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:89
msgid "workspace.token.no-active-theme"
msgstr "Žádný motiv není aktivní"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:146
-msgid "workspace.token.no-sets"
-msgstr "Žádné sady"
+#: src/app/main/ui/workspace/tokens/sets.cljs:110
+msgid "workspace.token.no-permisions-set"
+msgstr "K aktivaci/deaktivaci sad musíte být editor"
-#: src/app/main/ui/workspace/tokens/sets.cljs:401, src/app/main/ui/workspace/tokens/sets.cljs:405
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:199
+msgid "workspace.token.no-permission-themes"
+msgstr "Abyste mohli používat témata, musíte být editor"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:504
msgid "workspace.token.no-sets-create"
msgstr "Zatím nejsou definovány žádné sady. Nejprve si jednu vytvořte."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:215, src/app/main/ui/workspace/tokens/sidebar.cljs:221
+#: src/app/main/ui/workspace/tokens/sets.cljs:131, src/app/main/ui/workspace/tokens/sets.cljs:137
msgid "workspace.token.no-sets-yet"
msgstr "Zatím nejsou žádné sady."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:187
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:186
msgid "workspace.token.no-themes"
msgstr "Nejsou zde žádné motivy."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:47
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:50
msgid "workspace.token.no-themes-currently"
msgstr "Momentálně nemáte žádné motivy."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:137
-msgid "workspace.token.num-sets"
-msgstr "%s sady"
-
-#: src/app/main/ui/workspace/tokens/token_pill.cljs:114
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:122
#, fuzzy
msgid "workspace.token.original-value"
-msgstr "Původní hodnota: "
+msgstr "Původní hodnota: %s"
-#: src/app/main/ui/workspace/tokens/form.cljs:205, src/app/main/ui/workspace/tokens/form.cljs:208, src/app/main/ui/workspace/tokens/token_pill.cljs:115
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:128
+msgid "workspace.token.ref-not-valid"
+msgstr "Reference není platná nebo není v žádné aktivní sadě"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:217, src/app/main/ui/workspace/tokens/form.cljs:221, src/app/main/ui/workspace/tokens/token_pill.cljs:123
#, fuzzy
msgid "workspace.token.resolved-value"
-msgstr "Vyřešená hodnota: "
+msgstr "Vyřešená hodnota: %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:203
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:240
msgid "workspace.token.save-theme"
msgstr "Uložit motiv"
-#: src/app/main/ui/workspace/tokens/sets.cljs:200, src/app/main/ui/workspace/tokens/sets.cljs:305
+#: src/app/main/ui/workspace/tokens/sets.cljs:239, src/app/main/ui/workspace/tokens/sets.cljs:340
msgid "workspace.token.select-set"
msgstr "Vyberte sadu."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:346
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:396
msgid "workspace.token.set-selection-theme"
msgstr ""
"Definujte, jaké sady tokenů by měly být použity jako součást této možnosti "
"motivu:"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs
-#, unused
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:136
msgid "workspace.token.theme-name"
msgstr "Motiv %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:43, src/app/main/ui/workspace/tokens/modals/themes.cljs:88
-msgid "workspace.token.themes"
-msgstr "Motivy"
+#: src/app/main/ui/workspace/tokens/form.cljs:545
+msgid "workspace.token.token-description"
+msgstr "Popis"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/tokens/form.cljs:501
+msgid "workspace.token.token-name"
+msgstr "Jméno"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:59
+msgid "workspace.token.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/form.cljs:526
+msgid "workspace.token.token-value"
+msgstr "Hodnota"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:322
+msgid "workspace.token.tokens-section-title"
+msgstr "TOKENY - %s"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:405
+msgid "workspace.token.tools"
+msgstr "Nástroje"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:131
+msgid "workspace.token.value-not-valid"
+msgstr "Hodnota není platná"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:520
+msgid "workspace.token.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:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Položky"
@@ -6349,39 +6545,39 @@ msgstr "Položky"
msgid "workspace.toolbar.color-palette"
msgstr "Paleta barev (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Komentáře (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Křivka (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Elipsa (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Tabule (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Obrázek (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Přesunout (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Cesta (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:201, src/app/main/ui/workspace/top_toolbar.cljs:202
+#: src/app/main/ui/workspace/top_toolbar.cljs:210, src/app/main/ui/workspace/top_toolbar.cljs:211
msgid "workspace.toolbar.plugins"
msgstr "Pluginy (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Obdélník (%s)"
@@ -6390,7 +6586,7 @@ msgstr "Obdélník (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Zkratky (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Text (%s)"
@@ -6398,7 +6594,7 @@ msgstr "Text (%s)"
msgid "workspace.toolbar.text-palette"
msgstr "Typografie (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:220, src/app/main/ui/workspace/top_toolbar.cljs:221
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
msgid "workspace.toolbar.toggle-toolbar"
msgstr "Přepnout panel nástrojů"
@@ -6556,19 +6752,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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Zrušit"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
msgid "workspace.updates.more-info"
msgstr "Více informací"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
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:1226
msgid "workspace.updates.update"
msgstr "Aktualizace"
@@ -6628,11 +6824,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:284
+#: src/app/main/ui/workspace/sidebar.cljs:285
msgid "workspace.versions.tab.actions"
msgstr "Akce"
-#: src/app/main/ui/workspace/sidebar.cljs:281
+#: src/app/main/ui/workspace/sidebar.cljs:282
msgid "workspace.versions.tab.history"
msgstr "Historie"
diff --git a/frontend/translations/da.po b/frontend/translations/da.po
index 8f37173350..b3638acc19 100644
--- a/frontend/translations/da.po
+++ b/frontend/translations/da.po
@@ -34,13 +34,13 @@ msgstr "Lav demokonto"
msgid "auth.create-demo-profile"
msgstr "Vil du bare prøve det?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Det her er en DEMO service, BRUG IKKE for rigtigt arbejde, projekterne vil "
"blive slettet periodevis."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Glemt adgangskode?"
@@ -52,27 +52,27 @@ msgstr "Fulde Navn"
msgid "auth.login-here"
msgstr "Log på her"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Log på"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "Github"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "Gitlab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -96,7 +96,7 @@ msgstr "Gendannelseslink for adgangskoden er sendt til din indbakke."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Tilsluttet teamet med succes"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Adgangskode"
@@ -120,11 +120,11 @@ msgstr "Glemt adgangskode?"
msgid "auth.recovery-submit"
msgstr "Skift din adgangskode"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Ingen konto?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Opret en konto"
@@ -149,7 +149,7 @@ msgstr "Tilføj som Delt Bibliotek"
msgid "dashboard.change-email"
msgstr "Skift email"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(kopi)"
@@ -173,7 +173,7 @@ msgstr "Dublikér"
msgid "dashboard.duplicate-multi"
msgstr "Dublikér %s filer"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -183,14 +183,13 @@ msgstr ""
"som en **enkelt skrifttypefamilie**. Du kan uploade skrifttyper med "
"følgende formater: **TTF, OTF og WOFF** (kun én er nødvendig)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Du bør kun uploade skrifttyper som du ejer eller har licens til at bruge i "
"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)."
+"Terms of Service] (%s). Du kan også læse om [font licensing](2)."
#: src/app/main/ui/dashboard/team.cljs:116
msgid "dashboard.invite-profile"
@@ -200,11 +199,11 @@ msgstr "Invitér til team"
msgid "dashboard.leave-team"
msgstr "Forlad team"
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Delte Biblioteker"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "indlæser dine filer…"
@@ -220,11 +219,11 @@ msgstr "Flyt %s filer til"
msgid "dashboard.move-to-other-team"
msgstr "Flyt til andet team"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Ny Fil"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Ny Fil"
@@ -232,7 +231,7 @@ msgstr "Ny Fil"
msgid "dashboard.new-project"
msgstr "+ Nyt projekt"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Nyt Projekt"
@@ -301,7 +300,7 @@ msgstr "Vælg UI sprog"
msgid "dashboard.select-ui-theme"
msgstr "Vælg tema"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Vis alle filer"
@@ -321,7 +320,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Din fil er blevet flyttet med succes"
@@ -373,15 +372,15 @@ msgstr "Email"
msgid "dashboard.your-name"
msgstr "Dit navn"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Dit Penpot"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Fortryd"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Ok"
@@ -389,7 +388,7 @@ msgstr "Ok"
msgid "ds.confirm-title"
msgstr "Er du sikker?"
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Din browser kan ikke gøre denne operation"
@@ -401,7 +400,7 @@ msgstr "Genopretningspoletten er ugyldig."
msgid "labels.custom-fonts"
msgstr "Brugerdefinerede skrifttyper"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Skrifttypefamilie"
@@ -409,7 +408,7 @@ msgstr "Skrifttypefamilie"
msgid "labels.font-providers"
msgstr "Skrifttype udbydere"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Skrifttyper"
@@ -417,40 +416,40 @@ msgstr "Skrifttyper"
msgid "labels.go-back"
msgstr "Gå tilbage!"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Installeret skrifttyper"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Søg efter skrifttype"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Upload"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Upload brugerdefinerede skrifttyper"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Uploader..."
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Er du sikker på, at du vil slette denne skrifttype? Den vil ikke indlæse, "
"hvis den bliver brugt i en fil."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Sletter skrifttype"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Skrifttype Udbydere - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Skrifttyper - %s - Penpot"
diff --git a/frontend/translations/de.po b/frontend/translations/de.po
index 6434424778..bf1ae3ed30 100644
--- a/frontend/translations/de.po
+++ b/frontend/translations/de.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2025-01-14 12:00+0000\n"
-"Last-Translator: Stas Haas \n"
+"PO-Revision-Date: 2025-03-20 13:42+0000\n"
+"Last-Translator: Anonymous \n"
"Language-Team: German "
" \n"
"Language: de\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.10-dev\n"
+"X-Generator: Weblate 5.11-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
@@ -38,13 +38,13 @@ msgstr "Ein Demo-Konto erstellen"
msgid "auth.create-demo-profile"
msgstr "Wollen Sie es einfach ausprobieren?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Das ist eine DEMO-VERSION, verwenden Sie es NICHT zum Arbeiten, die "
"Projekte werden regelmäßig gelöscht."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Passwort vergessen?"
@@ -52,7 +52,7 @@ msgstr "Passwort vergessen?"
msgid "auth.fullname"
msgstr "Vollständiger Name"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "In mein Konto einloggen"
@@ -60,33 +60,33 @@ msgstr "In mein Konto einloggen"
msgid "auth.login-here"
msgstr "Hier anmelden."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Anmelden"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr ""
"Penpot ist das kostenlose Open-Source-Design-Tool für die Zusammenarbeit "
"von Design und Code"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -112,7 +112,7 @@ msgstr "Der Link zur Wiederherstellung des Passworts wurde an Ihre E-Mail gesend
msgid "auth.notifications.team-invitation-accepted"
msgstr "Sie sind dem Team beigetreten"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Passwort"
@@ -140,7 +140,7 @@ msgstr "Passwort vergessen?"
msgid "auth.recovery-submit"
msgstr "Passwort ändern"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Noch kein Konto?"
@@ -154,7 +154,7 @@ msgstr ""
msgid "auth.register-account-title"
msgstr "Ihr Name"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Konto erstellen"
@@ -181,7 +181,7 @@ msgstr ""
"Ich stimme den [Nutzungsbedingungen](%s) und der "
"[Datenschutzrichtlinie](%s) zu."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Nutzungsbedingungen"
@@ -195,7 +195,7 @@ msgstr ""
msgid "auth.verification-email-sent"
msgstr "Wir haben eine Bestätigungs-E-Mail gesendet an"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "Geschäftliche E-Mail-Adresse"
@@ -204,7 +204,11 @@ msgstr "Geschäftliche E-Mail-Adresse"
msgid "branding-illustrations-marketing-pieces"
msgstr "...Branding, Illustrationen, Marketingmaterialien, usw."
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/comments.cljs:532
+msgid "comments.mentions.not-found"
+msgstr "Es wurden keine Personen für @%s gefunden"
+
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Veröffentlichen"
@@ -276,7 +280,7 @@ msgstr "Prototypen teilen"
msgid "common.share-link.view-all"
msgstr "Alle auswählen"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Veröffentlichung aufheben"
@@ -330,7 +334,7 @@ msgstr "Benutzeroberfläche erkunden"
msgid "dashboard.access-tokens.copied-success"
msgstr "Token kopiert"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Neues Token generieren"
@@ -338,13 +342,13 @@ msgstr "Neues Token generieren"
msgid "dashboard.access-tokens.create.success"
msgstr "Der Zugangstoken wurde erfolgreich erstellt."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr ""
"Drücken Sie die Schaltfläche \"Neuen Token generieren\", um einen zu "
"generieren."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "Du hast bisher keine Token."
@@ -368,23 +372,23 @@ msgstr "90 Tage"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Nie"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Abgelaufen am %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Läuft ab am %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Kein Ablaufdatum"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Persönliche Zugangstoken"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Persönliche Zugangstoken stellen eine Alternative zu unserem "
@@ -399,6 +403,10 @@ msgstr "Der Token läuft am %s ab"
msgid "dashboard.access-tokens.token-will-not-expire"
msgstr "Der Token hat kein Ablaufdatum"
+#: src/app/main/ui/dashboard/placeholder.cljs:35
+msgid "dashboard.add-file"
+msgstr "Datei hinzufügen"
+
#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612
msgid "dashboard.add-shared"
msgstr "Hinzufügen als gemeinsam genutzte Bibliothek"
@@ -407,7 +415,7 @@ msgstr "Hinzufügen als gemeinsam genutzte Bibliothek"
msgid "dashboard.change-email"
msgstr "E-Mail-Adresse ändern"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(Kopie)"
@@ -443,27 +451,43 @@ msgstr "Duplizieren"
msgid "dashboard.duplicate-multi"
msgstr "%s Dateien duplizieren"
-#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:285
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
msgid "dashboard.empty-placeholder-drafts-subtitle"
msgstr "Sobald ein Projektmitglied einen Entwurf erstellt, wird es hier angezeigt."
-#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:280
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
msgid "dashboard.empty-placeholder-drafts-title"
msgstr "Noch keine Entwürfe vorhanden."
-#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:286
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
msgid "dashboard.empty-placeholder-files-subtitle"
msgstr "Sobald ein Projektmitglied eine Datei erstellt, wird es hier angezeigt."
-#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:281
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
msgid "dashboard.empty-placeholder-files-title"
msgstr "Noch keine Dateien vorhanden."
-#: src/app/main/ui/dashboard/placeholder.cljs:36
+#: src/app/main/ui/dashboard/placeholder.cljs:77
+#, markdown
+msgid "dashboard.empty-placeholder-libraries"
+msgstr ""
+"Die zum Projekt hinzugefügten Bibliotheken werden hier angezeigt. Versuchen "
+"Sie, Ihre Dateien freizugeben oder aus unseren [Bibliotheken & "
+"Vorlagen](https://penpot.app/libraries-templates) hinzuzufügen."
+
+#: src/app/main/ui/dashboard/placeholder.cljs
+#, markdown, unused
+msgid "dashboard.empty-placeholder-libraries-subtitle"
+msgstr ""
+"Die zum Projekt hinzugefügten Bibliotheken werden hier angezeigt. Versuchen "
+"Sie, Ihre Dateien freizugeben oder aus unseren [Bibliotheken & "
+"Vorlagen](https://penpot.app/libraries-templates) hinzuzufügen."
+
+#: src/app/main/ui/dashboard/placeholder.cljs:73
msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role"
msgstr "Bibliotheken, die dem Projekt hinzugefügt wurden, werden hier erscheinen."
-#: src/app/main/ui/dashboard/placeholder.cljs:33
+#: src/app/main/ui/dashboard/placeholder.cljs:70
msgid "dashboard.empty-placeholder-libraries-title"
msgstr "Noch keine Bibliotheken vorhanden."
@@ -558,37 +582,37 @@ msgstr "Assets aus geteilten Bibliotheken in die Dateibibliothek aufnehmen"
msgid "dashboard.export.title"
msgstr "Dateien exportieren"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Schriftart gelöscht"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Alle ablehnen"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr ""
"Die von Ihnen hochgeladenen benutzerdefinierten Schriftarten werden hier "
"angezeigt."
-#: src/app/main/ui/dashboard/fonts.cljs:448
+#: src/app/main/ui/dashboard/fonts.cljs:450
msgid "dashboard.fonts.empty-placeholder-viewer"
msgstr "Noch keine eigenen Schriftarten vorhanden."
-#: src/app/main/ui/dashboard/fonts.cljs:449
+#: src/app/main/ui/dashboard/fonts.cljs:451
msgid "dashboard.fonts.empty-placeholder-viewer-sub"
msgstr ""
"Sobald ein Projektmitglied eine benutzerdefinierte Schriftart hochgeladen "
"hat, wird sie hier angezeigt."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "1 Schriftart hinzugefügt"
msgstr[1] "%s Schriftarten hinzugefügt"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -599,21 +623,21 @@ msgstr ""
"den folgenden Formaten hochladen: **TTF, OTF und WOFF** (nur eine wird "
"benötigt)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Sie sollten nur Schriftarten hochladen, die Sie besitzen oder für die Sie "
"eine Lizenz zur Verwendung in Penpot verfügen. Weitere Informationen finden "
"Sie im Abschnitt über Inhaltsrechte in den [Nutzungsbedingungen von "
-"Penpot](%s). Mehr über die [Lizenzierung von "
-"Schriftarten erfahren Sie hier](https://www.typography.com/faq)."
+"Penpot](%s). Mehr über die [Lizenzierung von Schriftarten erfahren Sie "
+"hier](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Alle hochladen"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -624,7 +648,7 @@ msgstr ""
"empfehlen wir die Verwendung von [Transfonter](https://transfonter.org/), "
"um Webfonts zu generieren und Fehler zu beheben. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Dateien importieren"
@@ -638,20 +662,32 @@ msgstr ""
"Datei mit Komponenten v2 aktiviert, aber dieses Team unterstützt es noch "
"nicht."
+#: src/app/main/ui/dashboard.cljs:247
+msgid "dashboard.import.bad-url"
+msgstr "Der Import ist fehlgeschlagen. Die URL der Vorlage ist falsch"
+
+#: src/app/main/ui/dashboard.cljs:241
+msgid "dashboard.import.error"
+msgstr "Der Import ist fehlgeschlagen. Bitte versuchen Sie es erneut"
+
#: src/app/main/ui/dashboard/import.cljs:292
msgid "dashboard.import.import-error"
msgstr ""
"Beim Importieren der Datei ist ein Fehler aufgetreten. Die Datei wurde "
"nicht importiert."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgstr "%s Dateien wurden erfolgreich importiert."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Einige Dateien enthielten ungültige Objekte, die entfernt wurden."
+#: src/app/main/ui/dashboard.cljs:248
+msgid "dashboard.import.no-perms"
+msgstr "Sie haben nicht die Berechtigung, in dieses Team zu importieren"
+
#: src/app/main/ui/dashboard/import.cljs:129
msgid "dashboard.import.progress.process-colors"
msgstr "Farben werden verarbeitet"
@@ -688,29 +724,29 @@ msgstr "Personen einladen"
msgid "dashboard.leave-team"
msgstr "Team verlassen"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Bibliotheken & Vorlagen"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
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:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr ""
"Beim Importieren der Vorlage ist ein Problem aufgetreten. Die Vorlage wurde "
"nicht importiert."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Gemeinsam genutzte Bibliotheken"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "laden Ihrer Dateien …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "laden Ihrer Schriftarten …"
@@ -726,11 +762,11 @@ msgstr "%s Dateien verschieben"
msgid "dashboard.move-to-other-team"
msgstr "Zu anderem Team verschieben"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Neue Datei"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Neue Datei"
@@ -738,7 +774,7 @@ msgstr "Neue Datei"
msgid "dashboard.new-project"
msgstr "+ Neues Projekt"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Neues Projekt"
@@ -750,7 +786,7 @@ msgstr "Keine Übereinstimmungen für “%s“ gefunden"
msgid "dashboard.no-projects-placeholder"
msgstr "Angeheftete Projekte werden hier angezeigt"
-#: src/app/main/ui/dashboard/comments.cljs:84
+#: src/app/main/ui/dashboard/comments.cljs:90
msgid "dashboard.notifications"
msgstr "Benachrichtigungen"
@@ -762,6 +798,10 @@ 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:260
+msgid "dashboard.notifications.notifications-saved"
+msgstr "Benachrichtigungseinstellungen aktualisiert"
+
#: src/app/main/ui/settings/password.cljs:36
msgid "dashboard.notifications.password-saved"
msgstr "Passwort wurde erfolgreich gespeichert!"
@@ -778,7 +818,7 @@ msgstr "%s Mitglieder"
msgid "dashboard.open-in-new-tab"
msgstr "Datei in neuem Tab öffnen"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Optionen"
@@ -806,6 +846,18 @@ msgstr "Sie sind jetzt ein Zuschauer in diesem Team."
msgid "dashboard.pin-unpin"
msgstr "Anheften/Lösen"
+#: src/app/main/ui/dashboard.cljs:208
+msgid "dashboard.plugins.bad-url"
+msgstr "Die URL des Plugins ist falsch"
+
+#: src/app/main/ui/dashboard.cljs:206
+msgid "dashboard.plugins.parse-error"
+msgstr "Das Plugin-Manifest kann nicht ausgewertet werden"
+
+#: src/app/main/ui/dashboard.cljs:169
+msgid "dashboard.plugins.try-plugin"
+msgstr "Plugin ausprobieren: "
+
#: src/app/main/ui/dashboard/projects.cljs:55
msgid "dashboard.projects-title"
msgstr "Projekte"
@@ -843,7 +895,67 @@ msgstr "Sprache der Benutzeroberfläche auswählen"
msgid "dashboard.select-ui-theme"
msgstr "Theme auswählen"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/settings/notifications.cljs:57
+msgid "dashboard.settings.notifications.dashboard-comments.all"
+msgstr "Alle Kommentare, Erwähnungen und Antworten"
+
+#: src/app/main/ui/settings/notifications.cljs:59
+msgid "dashboard.settings.notifications.dashboard-comments.none"
+msgstr "Keine"
+
+#: src/app/main/ui/settings/notifications.cljs:58
+msgid "dashboard.settings.notifications.dashboard-comments.partial"
+msgstr "Nur Erwähnungen und Antworten"
+
+#: src/app/main/ui/settings/notifications.cljs:54
+msgid "dashboard.settings.notifications.dashboard-comments.title"
+msgstr "Kommentare in der Datei"
+
+#: src/app/main/ui/settings/notifications.cljs:53
+msgid "dashboard.settings.notifications.dashboard.title"
+msgstr "Dashboard Benachrichtigungen"
+
+#: src/app/main/ui/settings/notifications.cljs:67
+msgid "dashboard.settings.notifications.email-comments.all"
+msgstr "Alle Kommentare, Erwähnungen und Antworten"
+
+#: src/app/main/ui/settings/notifications.cljs:69
+msgid "dashboard.settings.notifications.email-comments.none"
+msgstr "Keine"
+
+#: src/app/main/ui/settings/notifications.cljs:68
+msgid "dashboard.settings.notifications.email-comments.partial"
+msgstr "Nur Erwähnungen und Antworten"
+
+#: src/app/main/ui/settings/notifications.cljs:64
+msgid "dashboard.settings.notifications.email-comments.title"
+msgstr "Kommentare in der Datei"
+
+#: src/app/main/ui/settings/notifications.cljs:76
+msgid "dashboard.settings.notifications.email-invites.all"
+msgstr "Alle Arten von Einladungen und Anfragen"
+
+#: src/app/main/ui/settings/notifications.cljs:79
+msgid "dashboard.settings.notifications.email-invites.none"
+msgstr "Keine"
+
+#: src/app/main/ui/settings/notifications.cljs:73
+msgid "dashboard.settings.notifications.email-invites.title"
+msgstr "Einladungen und Anfragen"
+
+#: src/app/main/ui/settings/notifications.cljs:63
+msgid "dashboard.settings.notifications.email.title"
+msgstr "E-Mail-Benachrichtigungen"
+
+#: src/app/main/ui/settings/notifications.cljs:84
+msgid "dashboard.settings.notifications.submit"
+msgstr "Einstellungen aktualisieren"
+
+#: src/app/main/ui/settings/notifications.cljs:52
+msgid "dashboard.settings.notifications.title"
+msgstr "Benachrichtigungen"
+
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Alle Dateien anzeigen"
@@ -871,7 +983,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Ihre Datei wurde erfolgreich verschoben"
@@ -915,10 +1027,18 @@ msgstr "Veröffentlichung der Bibliothek aufheben"
msgid "dashboard.update-settings"
msgstr "Einstellungen aktualisieren"
-#: src/app/main/ui/dashboard/sidebar.cljs:968
+#: src/app/main/ui/dashboard/sidebar.cljs:970
+msgid "dashboard.upgrade-plan.no-limits"
+msgstr "Keine Grenzen für die Kreativität"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:969
msgid "dashboard.upgrade-plan.penpot-free"
msgstr "Penpot Free"
+#: src/app/main/ui/dashboard/sidebar.cljs:972
+msgid "dashboard.upgrade-plan.power-up"
+msgstr "Power up"
+
#: src/app/main/ui/dashboard/team.cljs:909
msgid "dashboard.webhooks.active"
msgstr "Aktiv"
@@ -976,7 +1096,7 @@ msgstr "E-Mail"
msgid "dashboard.your-name"
msgstr "Ihr Name"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Ihr Penpot"
@@ -996,11 +1116,11 @@ msgstr "Zu aktualisierende Komponenten:"
msgid "ds.confirm-allow"
msgstr "Erlauben"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Abbrechen"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Ok"
@@ -1012,7 +1132,7 @@ msgstr "Sind Sie sicher?"
msgid "errors.auth-provider-not-allowed"
msgstr "Auth-Provider für dieses Profil nicht erlaubt"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Authentifizierungsanbieter ist nicht konfiguriert."
@@ -1020,11 +1140,11 @@ msgstr "Authentifizierungsanbieter ist nicht konfiguriert."
msgid "errors.auth.unable-to-login"
msgstr "Anscheinend sind Sie nicht authentifiziert oder die Sitzung ist abgelaufen."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "Die Schriftart %s konnte nicht geladen werden"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "Die Schriftarten %s konnten nicht geladen werden"
@@ -1032,7 +1152,7 @@ msgstr "Die Schriftarten %s konnten nicht geladen werden"
msgid "errors.cannot-upload"
msgstr "Die Mediendatei kann nicht hochgeladen werden."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Ihr Browser kann diese Funktion nicht ausführen"
@@ -1044,7 +1164,7 @@ msgstr "E-Mail-Adresse wird bereits verwendet"
msgid "errors.email-already-validated"
msgstr "E-Mail-Adresse wurde bereits validiert."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Sie können Ihre E-Mail-Adresse nicht als Passwort verwenden"
@@ -1092,7 +1212,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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Etwas ist schief gelaufen."
@@ -1105,8 +1225,7 @@ msgstr "Ungültige Farbe"
msgid "errors.invalid-email"
msgstr "Geben Sie bitte eine gültige E-Mail-Adresse ein"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "Bestätigungs-E-Mail muss übereinstimmen"
@@ -1122,7 +1241,7 @@ msgstr "Einladung ist ungültig"
msgid "errors.invite-invalid.info"
msgstr "Diese Einladung wurde möglicherweise abgebrochen oder ist abgelaufen."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "Die LDAP-Authentifizierung ist deaktiviert."
@@ -1130,6 +1249,12 @@ msgstr "Die LDAP-Authentifizierung ist deaktiviert."
msgid "errors.max-quote-reached"
msgstr "Sie haben das Limit von '%s' erreicht. Kontaktieren Sie den Support."
+#: src/app/main/ui/dashboard/team.cljs:181, src/app/main/ui/onboarding/team_choice.cljs:100
+msgid "errors.maximum-invitations-by-request-reached"
+msgstr ""
+"Die maximale (%s) Anzahl von E-Mails, die in einer einzigen Anfrage "
+"eingeladen werden können, wurde erreicht"
+
#: src/app/main/data/workspace/media.cljs:184
msgid "errors.media-too-large"
msgstr "Das Bild ist zu groß, um eingefügt zu werden."
@@ -1150,6 +1275,10 @@ msgstr ""
"In dem von Ihnen eingeladenen Profil sind E-Mails stummgeschaltet "
"(Spam-Berichte oder hohe Unzustellbarkeitsberichte)."
+#: src/app/main/errors.cljs:228
+msgid "errors.migration-in-progress"
+msgstr "Migration wird durchgeführt"
+
#: src/app/main/ui/settings/password.cljs
#, unused
msgid "errors.password-invalid-confirmation"
@@ -1164,7 +1293,7 @@ msgstr "Das Passwort sollte mindestens 8 Zeichen lang sein"
msgid "errors.paste-data-validation"
msgstr "Ungültige Daten in der Zwischenablage"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Das Profil ist gesperrt"
@@ -1242,12 +1371,11 @@ msgstr "Unerwarteter Fehler bei der Validierung"
msgid "errors.webhooks.unexpected-status"
msgstr "Unerwarteter Status %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "Die E-Mail-Adresse oder das Passwort ist falsch."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Altes Passwort ist falsch"
@@ -1296,11 +1424,11 @@ msgstr "Hier helfen wir Ihnen bei technischen Fragen."
msgid "feedback.twitter-title"
msgstr "X Support-Konto"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Ein Fehler ist aufgetreten"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Weichzeichnen"
@@ -1308,31 +1436,31 @@ msgstr "Weichzeichnen"
msgid "inspect.attributes.blur.value"
msgstr "Wert"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Fläche"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Originalbild herunterladen"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Höhe"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Breite"
@@ -1371,15 +1499,15 @@ msgstr "Oben"
msgid "inspect.attributes.layout.width"
msgstr "Breite"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Schatten"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Größe und Position"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Rahmen"
@@ -1416,143 +1544,143 @@ msgstr "Durchgezogen"
msgid "inspect.attributes.stroke.width"
msgstr "Breite"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Typografie"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Schriftart"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Schriftgröße"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Schriftschnitt"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Strichstärke"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Zeichenabstand"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Zeilenabstand"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Textdekoration"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Keine"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Durchgestrichen"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Unterstrichen"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Texttransformation"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Kleinbuchstaben"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Keine"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Kapitälchen"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "Nicht gesetzt"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Großbuchstaben"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
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/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Weitere Informationen zur Inspektion"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr ""
"Wählen Sie eine Form, ein Board oder eine Gruppe aus, um deren "
"Eigenschaften und Code zu überprüfen"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Code"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Kreis"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Komponente"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Kurve"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Zeichenfläche"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Gruppe"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Bild"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Maske"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s Ausgewählt(e)"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Pfad"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Rechteck"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Text"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Info"
@@ -1572,15 +1700,15 @@ msgstr "Zugangstoken"
msgid "labels.active"
msgstr "Aktiv"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.add"
msgstr "Hinzufügen"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Eigene Schriftart hinzufügen"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.adding"
msgstr "Hinzufügen..."
@@ -1592,7 +1720,7 @@ msgstr "Admin"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Alles"
@@ -1614,7 +1742,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Bad Gateway"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Abbrechen"
@@ -1622,27 +1750,27 @@ msgstr "Abbrechen"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Schließen"
-#: src/app/main/ui/workspace/tokens/sets.cljs:180
+#: src/app/main/ui/workspace/tokens/sets.cljs:219
msgid "labels.collapse"
msgstr "Zusammenklappen"
-#: src/app/main/ui/comments.cljs:812
+#: src/app/main/ui/comments.cljs:881
msgid "labels.comment"
msgstr "Kommentar"
-#: src/app/main/ui/comments.cljs:816
+#: src/app/main/ui/comments.cljs:885
msgid "labels.comment.mark-as-solved"
msgstr "Als gelöst markieren"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Kommentare"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Community"
@@ -1650,7 +1778,7 @@ msgstr "Community"
msgid "labels.confirm-password"
msgstr "Passwort bestätigen"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Weiter"
@@ -1670,7 +1798,7 @@ msgstr "Link kopieren"
msgid "labels.copyright"
msgstr "Kaleidos @2024"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Erstellen"
@@ -1690,15 +1818,15 @@ msgstr "Eigene Schriftarten"
msgid "labels.dashboard"
msgstr "Dashboard"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Löschen"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Kommentar löschen"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Thread löschen"
@@ -1718,15 +1846,15 @@ msgstr "Developer"
msgid "labels.director"
msgstr "Geschäftsführer"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "Verwerfen"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Entwürfe"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Bearbeiten"
@@ -1746,7 +1874,7 @@ msgstr "Veranstaltung"
msgid "labels.expired-invitation"
msgstr "Abgelaufen"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Exportieren"
@@ -1762,7 +1890,7 @@ msgstr "Feedback gesendet"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Schriftfamilie"
@@ -1770,11 +1898,11 @@ msgstr "Schriftfamilie"
msgid "labels.font-providers"
msgstr "Schriftenhersteller"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Stile"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Schriftarten"
@@ -1786,11 +1914,11 @@ msgstr "Gründer/VP"
msgid "labels.freelancer"
msgstr "Ich bin ein Freelancer"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Github-Repository"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Feedback geben"
@@ -1802,19 +1930,23 @@ msgstr "Zurück"
msgid "labels.graphic-design"
msgstr "Grafikdesign"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Hilfezentrum"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Erledigte Kommentare ausblenden"
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:413
+msgid "labels.import"
+msgstr "Importieren"
+
#: src/app/main/ui/dashboard/team.cljs:1018
msgid "labels.inactive"
msgstr "Inaktiv"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Installierte Schriftarten"
@@ -1840,11 +1972,11 @@ msgstr "Einladungen"
msgid "labels.language"
msgstr "Sprache"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Bibliotheken & Vorlagen"
-#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:114, src/app/main/ui/dashboard/grid.cljs:133, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:53, src/app/main/ui/ds/product/loader.cljs:52, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:126, src/app/main/ui.cljs:67, src/app/main/ui.cljs:105, src/app/main/ui.cljs:124
+#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:115, src/app/main/ui/dashboard/grid.cljs:134, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:98, src/app/main/ui/ds/product/loader.cljs:85, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:118, src/app/main/ui.cljs:66, src/app/main/ui.cljs:104, src/app/main/ui.cljs:123
msgid "labels.loading"
msgstr "Laden…"
@@ -1856,7 +1988,7 @@ msgstr "Einloggen oder anmelden"
msgid "labels.login"
msgstr "Anmelden"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Abmelden"
@@ -1876,11 +2008,11 @@ msgstr "Mitglieder"
msgid "labels.new-password"
msgstr "Neues Passwort"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Weiter"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr ""
"Sie sind auf dem neuesten Stand! Neue Benachrichtigungen zu Kommentaren "
@@ -1908,7 +2040,11 @@ msgstr ""
msgid "labels.not-found.main-message"
msgstr "Ups!"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/settings/sidebar.cljs:99
+msgid "labels.notifications"
+msgstr "Benachrichtigungen"
+
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "1 Datei"
@@ -1939,7 +2075,7 @@ msgstr "Altes Passwort"
msgid "labels.only-yours"
msgstr "Nur Ihre"
-#: src/app/main/ui/comments.cljs:545, src/app/main/ui/comments.cljs:822, src/app/main/ui/comments.cljs:886, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:295, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:324
+#: src/app/main/ui/comments.cljs:891, src/app/main/ui/comments.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:293, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:322
msgid "labels.options"
msgstr "Optionen"
@@ -1967,6 +2103,10 @@ msgstr "Passwort"
msgid "labels.pending-invitation"
msgstr "Ausstehend"
+#: src/app/main/ui/comments.cljs:678
+msgid "labels.post"
+msgstr "Versenden"
+
#: src/app/main/ui/onboarding/questions.cljs:51, src/app/main/ui/viewer.cljs:105
msgid "labels.previous"
msgstr "Zurück"
@@ -1987,7 +2127,7 @@ msgstr "Profil"
msgid "labels.projects"
msgstr "Projekte"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Versionshinweise"
@@ -2005,7 +2145,7 @@ msgstr "Entfernen"
msgid "labels.remove-member"
msgstr "Mitglied entfernen"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Umbenennen"
@@ -2013,19 +2153,23 @@ msgstr "Umbenennen"
msgid "labels.rename-team"
msgstr "Team umbenennen"
-#: src/app/main/ui/comments.cljs:598
+#: src/app/main/ui/comments.cljs:641
msgid "labels.replies"
msgstr "Antworten"
-#: src/app/main/ui/comments.cljs:597
+#: src/app/main/ui/comments.cljs:646
+msgid "labels.replies.new"
+msgstr "neue Antworten"
+
+#: src/app/main/ui/comments.cljs:640
msgid "labels.reply"
msgstr "Antwort"
-#: src/app/main/ui/comments.cljs:602
+#: src/app/main/ui/comments.cljs:645
msgid "labels.reply.new"
msgstr "neue Antwort"
-#: src/app/main/ui/comments.cljs:641
+#: src/app/main/ui/comments.cljs:721
msgid "labels.reply.thread"
msgstr "Antwort"
@@ -2045,15 +2189,15 @@ msgstr "Wiederholen"
msgid "labels.role"
msgstr "Rolle"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Speichern"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "Suchen"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Schriftart suchen"
@@ -2077,6 +2221,10 @@ 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:247
+msgid "labels.sets"
+msgstr "Sets"
+
#: src/app/main/ui/dashboard/sidebar.cljs:539, src/app/main/ui/dashboard/team.cljs:95, src/app/main/ui/dashboard/team.cljs:109, src/app/main/ui/settings/options.cljs:80, src/app/main/ui/settings/sidebar.cljs:105
msgid "labels.settings"
msgstr "Einstellungen"
@@ -2093,15 +2241,19 @@ msgstr "Prototyp teilen"
msgid "labels.shared-libraries"
msgstr "Gemeinsam genutzte Bibliotheken"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Alle Kommentare anzeigen"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Kommentarliste anzeigen"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139
+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
msgid "labels.show-your-comments"
msgstr "Nur eigene Kommentare anzeigen"
@@ -2129,11 +2281,11 @@ msgstr "Teamleiter"
msgid "labels.team-member"
msgstr "Teammitglied"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:183
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:182
msgid "labels.themes"
msgstr "Themen"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Tutorials"
@@ -2149,15 +2301,15 @@ msgstr "Aktualisieren"
msgid "labels.update-team"
msgstr "Team aktualisieren"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Hochladen"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Eigene Schriftarten hochladen"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Hochladen…"
@@ -2173,7 +2325,7 @@ msgstr "Zuschauer"
msgid "labels.webhooks"
msgstr "Webhooks"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Neuen Kommentar schreiben"
@@ -2181,7 +2333,7 @@ msgstr "Neuen Kommentar schreiben"
msgid "labels.you"
msgstr "(Sie)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Ihr Konto"
@@ -2189,23 +2341,23 @@ msgstr "Ihr Konto"
msgid "labels.youtube"
msgstr "YouTube"
-#: src/app/main/ui/workspace/colorpicker.cljs:477, src/app/main/ui/workspace/colorpicker.cljs:478, src/app/main/ui/workspace/colorpicker.cljs:480
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
msgid "media.choose-image"
msgstr "Bild auswählen"
-#: src/app/main/ui/workspace/colorpicker.cljs:245
+#: src/app/main/ui/workspace/colorpicker.cljs:241
msgid "media.gradient"
msgstr "Verlauf"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "Bild"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:77
+#: src/app/main/ui/inspect/attributes/common.cljs:77
msgid "media.image.short"
msgstr "img"
-#: src/app/main/ui/workspace/colorpicker.cljs:470
+#: src/app/main/ui/workspace/colorpicker.cljs:467
msgid "media.keep-aspect-ratio"
msgstr "Seitenverhältnis beibehalten"
@@ -2223,7 +2375,7 @@ msgstr "Bild laden…"
msgid "media.radial"
msgstr "Radial"
-#: src/app/main/ui/workspace/colorpicker.cljs:243
+#: src/app/main/ui/workspace/colorpicker.cljs:239
msgid "media.solid"
msgstr "Einfarbig"
@@ -2274,7 +2426,7 @@ msgstr "E-Mail-Adresse ändern"
msgid "modals.change-email.title"
msgstr "Ihre E-Mail-Adresse ändern"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Token kopieren"
@@ -2290,7 +2442,7 @@ msgstr "Name"
msgid "modals.create-access-token.name.placeholder"
msgstr "Durch den Namen kann man erkennen, wofür der Token verwendet wird"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Token erzeugen"
@@ -2314,15 +2466,15 @@ msgstr "Payload-URL"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://example.com/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Token löschen"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "Sind Sie sicher, dass Sie diesen Token löschen möchten?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Token löschen"
@@ -2344,25 +2496,25 @@ msgstr ""
msgid "modals.delete-account.title"
msgstr "Sind Sie sicher, dass Sie Ihr Konto löschen möchten?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Konversation löschen"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Sind Sie sicher, dass Sie diese Konversation löschen möchten? Alle "
"Kommentare in diesem Thread werden gelöscht."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Konversation löschen"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
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:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Anmerkung löschen"
@@ -2390,31 +2542,31 @@ msgstr "Sind Sie sicher, dass Sie %s Dateien löschen möchten?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Lösche %s Dateien"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Sind Sie sicher, dass Sie diesen Schriftschnitt löschen möchten? Sie wird "
"nicht mehr geladen, wenn sie bereits in einer Datei verwendet wird."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Schriftschnitt löschen"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Sind Sie sicher, dass Sie diese Schriftart löschen möchten? Sie wird nicht "
"mehr geladen, wenn sie bereits in einer Datei verwendet wird."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Schriftart löschen"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Sind Sie sicher, dass Sie diese Seite löschen wollen?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Seite löschen"
@@ -2530,6 +2682,12 @@ msgstr ""
"Einige E-Mails stammen von aktuellen Teammitgliedern. Ihre Einladungen "
"werden nicht versendet."
+#: src/app/main/ui/dashboard/team.cljs:216
+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:212
msgid "modals.invite-team-member.title"
msgstr "Mitglieder in das Team einladen"
@@ -2618,17 +2776,17 @@ msgstr "Sind Sie sicher, dass Sie diesen Benutzer zum Eigentümer befördern wol
msgid "modals.promote-owner-confirm.title"
msgstr "Zum Eigentümer befördern"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Veröffentlichen"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
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:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Leere Bibliothek veröffentlichen"
@@ -2685,22 +2843,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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Aktualisieren"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Abbrechen"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Komponente aus einer geteilten Bibliothek aktualiseren"
@@ -2712,26 +2870,80 @@ msgstr "Diese Seite existiert nicht"
msgid "not-found.desc-message.error"
msgstr "404-Fehler"
+#: src/app/main/ui/static.cljs:135
+msgid "not-found.login.free"
+msgstr ""
+"Penpot ist das kostenlose und quelloffene Design-Tool für die "
+"Zusammenarbeit in Design und Code"
+
#: src/app/main/ui/auth/recovery_request.cljs:114
msgid "not-found.login.sent-recovery"
msgstr "Wir haben eine Wiederherstellungs-E-Mail gesendet an"
+#: src/app/main/ui/auth/recovery_request.cljs:116
+msgid "not-found.login.sent-recovery-check"
+msgstr ""
+"Überprüfen Sie Ihre E-Mail und klicken Sie auf den Link, um ein neues "
+"Passwort zu erstellen."
+
#: src/app/main/ui/static.cljs:149
msgid "not-found.login.signup-free"
msgstr "Kostenlos anmelden"
+#: src/app/main/ui/static.cljs:150
+msgid "not-found.login.start-using"
+msgstr "Und starten Sie Penpot in Sekunden!"
+
#: src/app/main/ui/static.cljs:64
msgid "not-found.made-with-love"
msgstr "Mit LIEBE gemacht und Open Source"
+#: src/app/main/ui/static.cljs:291
+msgid "not-found.no-permission.already-requested.file"
+msgstr "Sie haben bereits Zugang zu dieser Datei beantragt."
+
+#: src/app/main/ui/static.cljs:292
+msgid "not-found.no-permission.already-requested.or-others.file"
+msgstr ""
+"Sie haben bereits Zugang zu dieser Datei oder anderen Dateien oder "
+"Projekten dieses Teams beantragt."
+
+#: src/app/main/ui/static.cljs:298
+msgid "not-found.no-permission.already-requested.or-others.project"
+msgstr ""
+"Sie haben bereits Zugang zu diesem Projekt oder anderen Projekten oder "
+"Dateien dieses Teams beantragt."
+
+#: src/app/main/ui/static.cljs:297
+msgid "not-found.no-permission.already-requested.project"
+msgstr "Sie haben bereits Zugang zu diesem Projekt beantragt."
+
#: src/app/main/ui/static.cljs:312, src/app/main/ui/static.cljs:321
msgid "not-found.no-permission.ask"
msgstr "ZUGANG ANFORDERN"
+#: src/app/main/ui/static.cljs:304
+msgid "not-found.no-permission.done.remember"
+msgstr ""
+"Denken Sie daran, dass Sie in das Team eingeladen werden, wenn der "
+"Eigentümer es erlaubt."
+
+#: src/app/main/ui/static.cljs:303
+msgid "not-found.no-permission.done.success"
+msgstr "Ihre Anfrage wurde korrekt abgeschickt!"
+
#: src/app/main/ui/static.cljs:309
msgid "not-found.no-permission.file"
msgstr "Sie haben keinen Zugriff auf diese Datei."
+#: src/app/main/ui/static.cljs:51, src/app/main/ui/static.cljs:287, src/app/main/ui/static.cljs:293, src/app/main/ui/static.cljs:299, src/app/main/ui/static.cljs:305, src/app/main/ui/static.cljs:314, src/app/main/ui/static.cljs:323
+msgid "not-found.no-permission.go-dashboard"
+msgstr "Zu deinem Penpot wechseln"
+
+#: src/app/main/ui/static.cljs:311, src/app/main/ui/static.cljs:320
+msgid "not-found.no-permission.if-approves"
+msgstr "Wenn der Besitzer es zulässt, wirst du in das Team eingeladen."
+
#: src/app/main/ui/static.cljs:249, src/app/main/ui/static.cljs:261
msgid "not-found.no-permission.penpot-file"
msgstr "Penpot-Datei"
@@ -2754,6 +2966,12 @@ msgstr ""
"Um Zugriff auf dieses Projekt zu erhalten, können Sie den Teambesitzer "
"fragen."
+#: src/app/main/data/common.cljs:93
+msgid "notifications.by-code.maintenance"
+msgstr ""
+"Wartungsarbeiten: Wir werden innerhalb von 5 Minuten für eine kurze Wartung "
+"offline sein."
+
#: src/app/main/data/common.cljs:83
msgid "notifications.by-code.upgrade-version"
msgstr "Eine neue Version ist verfügbar, bitte aktualisieren Sie die Seite"
@@ -2811,29 +3029,29 @@ msgstr "Video-Tutorials"
msgid "onboarding-v2.before-start.title"
msgstr "Bevor Sie beginnen"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Um über den Fortschritt der Produktentwicklung und Neuigkeiten auf dem "
"Laufenden zu bleiben, abonnieren Sie den Penpot-Newsletter."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr ""
"Senden Sie mir Neuigkeiten über Penpot (Blogbeiträge, Video-Tutorials, "
"Streamings, ...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Datenschutz ist uns wichtig, hier können Sie das nachlesen "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Wir werden nur relevante E-Mails an Sie senden. Sie können sich jederzeit "
"über den Abmeldelink in jedem unserer Newsletter abmelden."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr ""
"Ich möchte Informationen über Produktaktualisierungen erhalten (neue "
@@ -2932,17 +3150,17 @@ msgstr "Sie können später ein Team erstellen."
msgid "onboarding.newsletter.accept"
msgstr "Ja, abonnieren"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"Ihre Abonnementanfrage wurde gesendet, wir senden Ihnen eine E-Mail zur "
"Bestätigung."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Datenschutzbestimmungen."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Möchten Sie die Penpot-Nachrichten erhalten?"
@@ -3135,7 +3353,7 @@ msgstr "Zur Anmeldung"
msgid "settings.detach"
msgstr "Trennen"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Mehrere"
@@ -3333,7 +3551,7 @@ msgstr "Neues Projekt erstellen"
msgid "shortcuts.cut"
msgstr "Ausschneiden"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Auszoomen"
@@ -3433,7 +3651,7 @@ msgstr "Horizontal verteilen"
msgid "shortcuts.hide-ui"
msgstr "Benutzeroberfläche ein-/ausblenden"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Einzoomen"
@@ -3817,15 +4035,15 @@ msgstr "Zur Auswahl zoomen"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Schriftenhersteller - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Schriftarten - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Projekte - %s - Penpot"
@@ -3833,7 +4051,7 @@ msgstr "Projekte - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Suchen - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Gemeinsam genutzte Bibliotheken - %s - Penpot"
@@ -3841,7 +4059,7 @@ msgstr "Gemeinsam genutzte Bibliotheken - %s - Penpot"
msgid "title.default"
msgstr "Penpot - Gestaltungsfreiheit für Teams"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "Profil - Zugangstokens"
@@ -3849,6 +4067,10 @@ msgstr "Profil - Zugangstokens"
msgid "title.settings.feedback"
msgstr "Feedback geben - Penpot"
+#: src/app/main/ui/settings/notifications.cljs:45
+msgid "title.settings.notifications"
+msgstr "Benachrichtigungen - Penpot"
+
#: src/app/main/ui/settings/options.cljs:76
msgid "title.settings.options"
msgstr "Einstellungen - Penpot"
@@ -3881,7 +4103,7 @@ msgstr "Webhooks - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Ansichtsmodus - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -3981,7 +4203,7 @@ msgstr "Vertikal verteilen (%s)"
msgid "workspace.align.vtop"
msgstr "Oben ausrichten (%s)"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:174, src/app/main/ui/workspace/sidebar/assets.cljs:179
+#: src/app/main/ui/workspace/sidebar/assets.cljs:171
msgid "workspace.assets.add-library"
msgstr "Bibliothek hinzufügen"
@@ -3990,11 +4212,11 @@ msgstr "Bibliothek hinzufügen"
msgid "workspace.assets.assets"
msgstr "Assets"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Alle Assets"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Farben"
@@ -4002,11 +4224,11 @@ msgstr "Farben"
msgid "workspace.assets.colors.add-color"
msgstr "Farbe hinzufügen"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Komponenten"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:510
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:520
msgid "workspace.assets.components.add-component"
msgstr "Komponente hinzufügen"
@@ -4020,15 +4242,15 @@ msgstr ""
"Ihre Elemente werden automatisch nach diesem Schema benannt: \"Gruppenname "
"/ Elementname\""
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Löschen"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Duplizieren"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "Hauptkomponente duplizieren"
@@ -4036,19 +4258,19 @@ msgstr "Hauptkomponente duplizieren"
msgid "workspace.assets.edit"
msgstr "Bearbeiten"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:195
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
msgid "workspace.assets.filter"
msgstr "Filtern"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Grafiken"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:505
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:515
msgid "workspace.assets.grid-view"
msgstr "Rasteransicht"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Gruppieren"
@@ -4056,27 +4278,23 @@ msgstr "Gruppieren"
msgid "workspace.assets.group-name"
msgstr "Name der Gruppe"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Bibliotheken"
-
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:501
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:511
msgid "workspace.assets.list-view"
msgstr "Listenansicht"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "lokale Bibliothek"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Keine Assets gefunden"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "Bibliotheksdatei öffnen"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Umbenennen"
@@ -4084,7 +4302,7 @@ msgstr "Umbenennen"
msgid "workspace.assets.rename-group"
msgstr "Gruppe umbenennen"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Assets suchen"
@@ -4100,46 +4318,50 @@ msgstr[1] "%s Elemente ausgewählt"
msgid "workspace.assets.shared-library"
msgstr "Geteilte Bibliothek"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:226
+#: 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:211
+#: src/app/main/ui/workspace/sidebar/assets.cljs:201
msgid "workspace.assets.sort"
msgstr "Sortieren"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Textstile"
+#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404
+msgid "workspace.assets.typography.add-typography"
+msgstr "Typografie hinzufügen"
+
#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs
#, unused
msgid "workspace.assets.typography.font-id"
msgstr "Schriftart"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Größe"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Variante"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Wechseln Sie zur Stilbibliotheksdatei, um sie zu bearbeiten"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Zeichenabstand"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Zeilenabstand"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -4147,7 +4369,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Textstile"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Texttransformation"
@@ -4155,55 +4377,55 @@ msgstr "Texttransformation"
msgid "workspace.assets.ungroup"
msgstr "Gruppierung aufheben"
-#: src/app/main/ui/workspace/context_menu.cljs:748
+#: src/app/main/ui/workspace/context_menu.cljs:764
msgid "workspace.context-menu.grid-cells.area"
msgstr "Bereich erstellen"
-#: src/app/main/ui/workspace/context_menu.cljs:751
+#: src/app/main/ui/workspace/context_menu.cljs:767
msgid "workspace.context-menu.grid-cells.create-board"
msgstr "Board erstellen"
-#: src/app/main/ui/workspace/context_menu.cljs:743
+#: src/app/main/ui/workspace/context_menu.cljs:759
msgid "workspace.context-menu.grid-cells.merge"
msgstr "Zellen zusammenführen"
-#: src/app/main/ui/workspace/context_menu.cljs:706
+#: src/app/main/ui/workspace/context_menu.cljs:722
msgid "workspace.context-menu.grid-track.column.add-after"
msgstr "1 Spalte rechts einfügen"
-#: src/app/main/ui/workspace/context_menu.cljs:705
+#: src/app/main/ui/workspace/context_menu.cljs:721
msgid "workspace.context-menu.grid-track.column.add-before"
msgstr "1 Spalte links einfügen"
-#: src/app/main/ui/workspace/context_menu.cljs:707
+#: src/app/main/ui/workspace/context_menu.cljs:723
msgid "workspace.context-menu.grid-track.column.delete"
msgstr "Spalte löschen"
-#: src/app/main/ui/workspace/context_menu.cljs:708
+#: src/app/main/ui/workspace/context_menu.cljs:724
msgid "workspace.context-menu.grid-track.column.delete-shapes"
msgstr "Spalte und Formen löschen"
-#: src/app/main/ui/workspace/context_menu.cljs:704
+#: src/app/main/ui/workspace/context_menu.cljs:720
msgid "workspace.context-menu.grid-track.column.duplicate"
msgstr "Spalte duplizieren"
-#: src/app/main/ui/workspace/context_menu.cljs:713
+#: src/app/main/ui/workspace/context_menu.cljs:729
msgid "workspace.context-menu.grid-track.row.add-after"
msgstr "1 Zeile unterhalb einfügen"
-#: src/app/main/ui/workspace/context_menu.cljs:712
+#: src/app/main/ui/workspace/context_menu.cljs:728
msgid "workspace.context-menu.grid-track.row.add-before"
msgstr "1 Zeile oberhalb einfügen"
-#: src/app/main/ui/workspace/context_menu.cljs:714
+#: src/app/main/ui/workspace/context_menu.cljs:730
msgid "workspace.context-menu.grid-track.row.delete"
msgstr "Zeile löschen"
-#: src/app/main/ui/workspace/context_menu.cljs:715
+#: src/app/main/ui/workspace/context_menu.cljs:731
msgid "workspace.context-menu.grid-track.row.delete-shapes"
msgstr "Zeile und Formen löschen"
-#: src/app/main/ui/workspace/context_menu.cljs:711
+#: src/app/main/ui/workspace/context_menu.cljs:727
msgid "workspace.context-menu.grid-track.row.duplicate"
msgstr "Zeile duplizieren"
@@ -4211,11 +4433,11 @@ msgstr "Zeile duplizieren"
msgid "workspace.focus.focus-mode"
msgstr "Fokus-Modus"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Fokus aus"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Fokus an"
@@ -4317,6 +4539,10 @@ msgstr "Datei"
msgid "workspace.header.menu.option.help-info"
msgstr "Hilfe und Infos"
+#: src/app/main/ui/workspace/main_menu.cljs:910
+msgid "workspace.header.menu.option.power-up"
+msgstr "Verstärken Sie Ihren Plan"
+
#: src/app/main/ui/workspace/main_menu.cljs:877
msgid "workspace.header.menu.option.preferences"
msgstr "Einstellungen"
@@ -4369,37 +4595,36 @@ msgstr "Zum hellen Theme wechseln"
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:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Zurücksetzen"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Fehler beim Speichern"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Gespeichert"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Speichern"
-#: src/app/main/ui/workspace/right_header.cljs:255
+#: src/app/main/ui/workspace/right_header.cljs:221
msgid "workspace.header.share"
msgstr "Teilen"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Ungespeicherte Änderungen"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "Ansichtsmodus (%s)"
-#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "Vergrößern"
@@ -4411,7 +4636,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:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Passend zoomen"
@@ -4419,19 +4644,19 @@ msgstr "Passend zoomen"
msgid "workspace.header.zoom-full-screen"
msgstr "Vollbild"
-#: src/app/main/ui/workspace/right_header.cljs:136
+#: src/app/main/ui/workspace/right_header.cljs:104
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:607
+#: 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:616
msgid "workspace.layout_grid.editor.options.edit-grid"
msgstr "Grid bearbeiten"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
msgid "workspace.layout_grid.editor.options.exit"
msgstr "Beenden"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:478
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
msgid "workspace.layout_grid.editor.padding.expand"
msgstr "4-seitige Abstandsoptionen anzeigen"
@@ -4447,7 +4672,7 @@ msgstr "Fertig"
msgid "workspace.layout_grid.editor.top-bar.locate"
msgstr "Lokalisieren"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1321
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
msgstr "Grid-Layout lokalisieren"
@@ -4456,7 +4681,7 @@ msgstr "Grid-Layout lokalisieren"
msgid "workspace.libraries.add"
msgstr "Hinzufügen"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s Farben"
@@ -4486,31 +4711,43 @@ msgstr "Aktuelle Farben"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "RGB-komplementär"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Farbstil speichern"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:371
+msgid "workspace.libraries.empty.add-some"
+msgstr "Oder probieren Sie einige von diesen aus:"
+
+#: src/app/main/ui/workspace/libraries.cljs:365
+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
+msgid "workspace.libraries.empty.some-templates"
+msgstr "einige Vorlagen sind hier"
+
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Dateibibliothek"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "BIBLIOTHEKEN IN DIESER DATEI"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "BIBLIOTHEKEN"
@@ -4519,69 +4756,66 @@ msgstr "BIBLIOTHEKEN"
msgid "workspace.libraries.library"
msgstr "BIBLIOTHEK"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "AKTUALISIERUNGEN DER BIBLIOTHEK"
-#: src/app/main/ui/workspace/libraries.cljs:363
+#: src/app/main/ui/workspace/libraries.cljs:360
msgid "workspace.libraries.loading"
msgstr "Laden…"
-#: src/app/main/ui/workspace/libraries.cljs:391
-msgid "workspace.libraries.more-templates-link"
-msgstr "weitere Vorlagen sind hier"
+#: src/app/main/ui/workspace/libraries.cljs:387
+#, unused
+msgid "workspace.libraries.more-templates"
+msgstr "Sie können Folgendes suchen "
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
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:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Keine Übereinstimmungen für “%s“ gefunden"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Es sind keine gemeinsam genutzte Bibliotheken verfügbar"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Suche nach gemeinsam genutzten Bibliotheken"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "GEMEINSAM GENUTZTE BIBLIOTHEKEN"
-#: src/app/main/ui/workspace/libraries.cljs:355
+#: src/app/main/ui/workspace/libraries.cljs:352
msgid "workspace.libraries.shared-library-btn"
msgstr "Bibliothek verknüpfen"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Mehrere Textstile"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Verknüpfung aller Textstile aufheben"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:326
+#: src/app/main/ui/workspace/libraries.cljs:323
msgid "workspace.libraries.unlink-library-btn"
msgstr "Bibliothek trennen"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Aktualisieren"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "alle Änderungen anzeigen"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "AKTUALISIERUNG"
@@ -4609,43 +4843,47 @@ msgstr "Gruppe weichzeichnen"
msgid "workspace.options.blur-options.title.multiple"
msgstr "Auswahl weichzeichnen"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:108
+msgid "workspace.options.blur-options.toggle-blur"
+msgstr "Weichzeichnen ein -und aufblenden"
+
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Hintergrundfarbe"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Inhalt beschneiden"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Komponente"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "Anmerkung"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "Kopie"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "Eine Anmerkung erstellen"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Eine Anmerkung bearbeiten"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Hauptkomponente"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:416
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
msgid "workspace.options.component.swap"
msgstr "Komponente austauschen"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:460
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
msgid "workspace.options.component.swap.empty"
msgstr "Es gibt noch keine Assets in dieser Bibliothek"
@@ -4693,7 +4931,7 @@ msgstr "Oben & Unten"
msgid "workspace.options.design"
msgstr "Design"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Exportieren"
@@ -4702,13 +4940,21 @@ msgstr "Exportieren"
msgid "workspace.options.export-multiple"
msgstr "Auswahl exportieren"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188
+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
+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
msgid "workspace.options.export.suffix"
msgstr "Suffix"
@@ -4716,7 +4962,7 @@ msgstr "Suffix"
msgid "workspace.options.exporting-complete"
msgstr "Export abgeschlossen"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Exportiere…"
@@ -4736,6 +4982,14 @@ msgstr "Fläche"
msgid "workspace.options.fill.add-fill"
msgstr "Füllfarbe hinzufügen"
+#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:164
+msgid "workspace.options.fill.remove-fill"
+msgstr "Füllung entfernen"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:341
+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
msgid "workspace.options.flows.add-flow-start"
msgstr "Flow-Startpunkt hinzufügen"
@@ -4753,6 +5007,10 @@ msgstr "Flow-Startpunkt"
msgid "workspace.options.flows.flow-starts"
msgstr "Flow-Startpunkte"
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154
+msgid "workspace.options.flows.remove-flow"
+msgstr "Flow entfernen"
+
#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31
msgid "workspace.options.grid.auto"
msgstr "Automatisch"
@@ -4854,11 +5112,23 @@ msgstr "Gruppe füllen"
msgid "workspace.options.group-stroke"
msgstr "Gruppe einrahmen"
+#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323
+msgid "workspace.options.guides.add-guide"
+msgstr "Hilfslinie hinzufügen"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187
+msgid "workspace.options.guides.remove-guide"
+msgstr "Hilfslinie entfernen"
+
#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320
msgid "workspace.options.guides.title"
msgstr "Hilfslinien"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183
+msgid "workspace.options.guides.toggle-guide"
+msgstr "Hilfslinie ein -und ausblenden"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Höhe"
@@ -5084,6 +5354,15 @@ msgstr "Bei gedrückter Maustaste"
msgid "workspace.options.interactions"
msgstr "Interaktionen"
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735
+msgid "workspace.options.interactions.add-interaction"
+msgstr "Interaktion hinzufügen"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
+#, unused
+msgid "workspace.options.interactions.remove-interaction"
+msgstr "Interaktion entfernen"
+
#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152
msgid "workspace.options.layer-options.blend-mode.color"
msgstr "Farbe"
@@ -5163,24 +5442,28 @@ msgstr "Ebenen gruppieren"
msgid "workspace.options.layer-options.title.multiple"
msgstr "Ausgewählte Ebenen"
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:197
+msgid "workspace.options.layer-options.toggle-layer"
+msgstr "Sichtbarkeit der Ebene ein- und ausschalten"
+
#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs
#, unused
msgid "workspace.options.layout-item.advanced-ops"
msgstr "Erweiterte Optionen"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Max.Höhe"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Max.Breite"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Min.Höhe"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Min.Breite"
@@ -5294,11 +5577,11 @@ msgstr "Abstand zwischen"
msgid "workspace.options.layout.top"
msgstr "Oben"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Weitere Farben"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Weitere Bibliotheksfarben"
@@ -5335,7 +5618,15 @@ msgstr "Oben links"
msgid "workspace.options.radius-top-right"
msgstr "Oben rechts"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135
+msgid "workspace.options.radius.hide-all-corners"
+msgstr "Unabhängige Ecken einklappen"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136
+msgid "workspace.options.radius.show-single-corners"
+msgstr "Unabhängige Ecken anzeigen"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Aktuell"
@@ -5343,11 +5634,11 @@ msgstr "Aktuell"
msgid "workspace.options.retry"
msgstr "Wiederholen"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Drehung"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Schriftart suchen"
@@ -5357,7 +5648,7 @@ 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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Ausgewählte Farben"
@@ -5369,59 +5660,63 @@ msgstr "Auswahl füllen"
msgid "workspace.options.selection-stroke"
msgstr "Auswahl einrahmen"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:292
msgid "workspace.options.shadow-options.add-shadow"
msgstr "Schatten hinzufügen"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Weichzeichnen"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Schattenfarbe"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Schlagschatten"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Schatten nach innen"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:180, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:318
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
msgid "workspace.options.shadow-options.remove-shadow"
msgstr "Schatten entfernen"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Streuung"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Schatten"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Gruppe schattieren"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Auswahl schattieren"
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:144
+msgid "workspace.options.shadow-options.toggle-shadow"
+msgstr "Schatten ein- und ausblenden"
+
#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:193
msgid "workspace.options.show-fill-on-export"
msgstr "In Exporten anzeigen"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Im Ansichtsmodus anzeigen"
@@ -5429,7 +5724,7 @@ msgstr "Im Ansichtsmodus anzeigen"
msgid "workspace.options.size"
msgstr "Größe"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Größenvoreinstellungen"
@@ -5498,7 +5793,7 @@ msgstr "Dreieck"
msgid "workspace.options.stroke-color"
msgstr "Konturfarbe"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Konturbreite"
@@ -5570,11 +5865,11 @@ msgstr "Automatische Breite"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Feste Größe"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Zeichenabstand"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Zeilenabstand"
@@ -5640,15 +5935,15 @@ msgstr ""
"Verwenden Sie die Wiedergabetaste in der Kopfzeile, um die Prototypansicht "
"zu wechseln."
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Breite"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "X-Achse"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Y-Achse"
@@ -5709,6 +6004,10 @@ msgstr "Noch keine Plugins installiert"
msgid "workspace.plugins.error.manifest"
msgstr "Das Plugin-Manifest ist falsch."
+#: src/app/main/data/plugins.cljs:86, src/app/main/ui/workspace/main_menu.cljs:743, src/app/main/ui/workspace/plugins.cljs:82
+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:192
msgid "workspace.plugins.error.url"
msgstr "Das Plugin existiert nicht oder die URL ist nicht korrekt."
@@ -5729,6 +6028,28 @@ msgstr "Plugin-Manager"
msgid "workspace.plugins.menu.title"
msgstr "Plugins"
+#: src/app/main/ui/workspace/plugins.cljs:372
+msgid "workspace.plugins.permissions-update.title"
+msgstr "DIESES PLUGIN AKTUALISIEREN"
+
+#: src/app/main/ui/workspace/plugins.cljs:376
+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:283
+msgid "workspace.plugins.permissions.allow-download"
+msgstr "Starten von Dateidownloads."
+
+#: src/app/main/ui/workspace/plugins.cljs:276
+msgid "workspace.plugins.permissions.comment-read"
+msgstr "Ihre Kommentare und Antworten lesen."
+
+#: src/app/main/ui/workspace/plugins.cljs:270
+msgid "workspace.plugins.permissions.comment-write"
+msgstr "Ihre Kommentare lesen und ändern und in Ihrem Namen antworten."
+
#: src/app/main/ui/workspace/plugins.cljs:243
msgid "workspace.plugins.permissions.content-read"
msgstr "Lesen des Inhalts von Dateien, auf die Benutzer Zugriff haben."
@@ -5749,6 +6070,10 @@ msgstr "Lesen Ihrer Bibliotheken und Assets."
msgid "workspace.plugins.permissions.library-write"
msgstr "Lesen und Ändern Ihrer Bibliotheken und Assets."
+#: src/app/main/ui/workspace/plugins.cljs:316
+msgid "workspace.plugins.permissions.title"
+msgstr "'%s' PLUGIN BENÖTIGT ZUGRIFF AUF:"
+
#: src/app/main/ui/workspace/plugins.cljs:250
msgid "workspace.plugins.permissions.user-read"
msgstr "Lesen der Profil-Informationen des aktuellen Benutzers."
@@ -5773,107 +6098,146 @@ msgstr "Plugin wurde korrekt geladen."
msgid "workspace.plugins.title"
msgstr "Plugins"
+#: src/app/main/ui/workspace/plugins.cljs:436
+msgid "workspace.plugins.try-out.cancel"
+msgstr "NICHT JETZT"
+
+#: src/app/main/ui/workspace/plugins.cljs:429
+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:425
+msgid "workspace.plugins.try-out.title"
+msgstr "'%s' PLUGIN IST FÜR IHREN BENUTZER INSTALLIERT!"
+
#: src/app/main/ui/workspace/plugins.cljs:442
msgid "workspace.plugins.try-out.try"
msgstr "PLUGIN TESTEN"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Flex-Layout hinzufügen"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "Grid-Layout hinzufügen"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1004, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1030
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1013, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039
msgid "workspace.shape.menu.add-layout"
msgstr "Layout hinzufügen"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "In den Hintergrund"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Eins nach hinten"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Kopieren"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/context_menu.cljs:204
+msgid "workspace.shape.menu.copy-css"
+msgstr "Als CSS kopieren"
+
+#: src/app/main/ui/workspace/context_menu.cljs:206
+msgid "workspace.shape.menu.copy-css-nested"
+msgstr "Als CSS kopieren (verschachtelte Ebenen)"
+
+#: src/app/main/ui/workspace/context_menu.cljs:189
+msgid "workspace.shape.menu.copy-link"
+msgstr "Link in die Zwischenablage kopieren"
+
+#: src/app/main/ui/workspace/context_menu.cljs:202
+msgid "workspace.shape.menu.copy-paste-as"
+msgstr "Kopieren/Einfügen als ..."
+
+#: src/app/main/ui/workspace/context_menu.cljs:214
+msgid "workspace.shape.menu.copy-props"
+msgstr "Eigenschaften kopieren"
+
+#: src/app/main/ui/workspace/context_menu.cljs:211
+msgid "workspace.shape.menu.copy-text"
+msgstr "Als Text kopieren"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "Anmerkung erstellen"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Auswahl auf Zeichenfläche"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Komponente erstellen"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Mehrere Komponenten erstellen"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Ausschneiden"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Löschen"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Startpunkt löschen"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Instanz trennen"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Instanzen trennen"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Subtrahieren"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Duplizieren"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Bearbeiten"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Ausschließen"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Pfade reduzieren"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Horizontal spiegeln"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Vertikal spiegeln"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Startpunkt"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Eins nach vorne"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "In den Vordergrund"
@@ -5882,103 +6246,107 @@ msgstr "In den Vordergrund"
msgid "workspace.shape.menu.go-main"
msgstr "Zur Hauptkomponentendatei wechseln"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Gruppieren"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Ausblenden"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Benutzeroberfläche ein-/ausblenden"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Überlappen"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Sperren"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Maskieren"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Einfügen"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:218
+msgid "workspace.shape.menu.paste-props"
+msgstr "Eigenschaften einfügen"
+
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Pfad"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Flex-Layout entfernen"
-#: src/app/main/ui/workspace/context_menu.cljs:531
+#: src/app/main/ui/workspace/context_menu.cljs:535
msgid "workspace.shape.menu.remove-grid"
msgstr "Grid-Layout entfernen"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1022
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1031
msgid "workspace.shape.menu.remove-layout"
msgstr "Layout entfernen"
-#: src/app/main/ui/workspace/context_menu.cljs:312
+#: src/app/main/ui/workspace/context_menu.cljs:313
msgid "workspace.shape.menu.rename"
msgstr "Umbenennen"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Änderungen zurücksetzen"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Hauptkomponente wiederherstellen"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Ebene auswählen"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Anzeigen"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Im Assets-Panel anzeigen"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Hauptkomponente anzeigen"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Vorschaubild entfernen"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Als Vorschaubild festlegen"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "In Pfade umwandeln"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Gruppierung aufheben"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Hinzufügen"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Entsperren"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Maske entfernen"
@@ -5987,7 +6355,7 @@ msgstr "Maske entfernen"
msgid "workspace.shape.menu.update-components-in-bulk"
msgstr "Hauptkomponenten aktualisieren"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Hauptkomponente aktualisieren"
@@ -5999,11 +6367,11 @@ msgstr "Seitenleiste ausblenden"
msgid "workspace.sidebar.expand"
msgstr "Seitenleiste einblenden"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Verlauf"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Ebenen"
@@ -6039,7 +6407,7 @@ msgstr "Formen"
msgid "workspace.sidebar.layers.texts"
msgstr "Texte"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Importierte SVG-Attribute"
@@ -6051,23 +6419,61 @@ msgstr "Seiten"
msgid "workspace.sidebar.sitemap.add-page"
msgstr "Seite hinzufügen"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Sitemap"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:191, src/app/main/ui/workspace/tokens/sidebar.cljs:218
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:47
+#, unused
+msgid "workspace.token-set.not-active"
+msgstr "Token-Set ist nicht aktiv"
+
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:84
+msgid "workspace.token.active-themes"
+msgstr "%s aktive Themes"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs
+#, unused
+msgid "workspace.token.add set"
+msgstr "Set hinzufügen"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:136
+msgid "workspace.token.applied-to"
+msgstr "Angewandt auf"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:391
+msgid "workspace.token.back-to-themes"
+msgstr "Zurück zur Themen-Liste"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:54
+msgid "workspace.token.create-new-theme"
+msgstr "Erstellen Sie jetzt Ihr erstes Theme."
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:134, src/app/main/ui/workspace/tokens/sidebar.cljs:190
msgid "workspace.token.create-one"
msgstr "Ein neues erstellen."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159, src/app/main/ui/workspace/tokens/modals/themes.cljs:237
-msgid "workspace.token.create-theme-title"
-msgstr "Theme erstellen"
+#: src/app/main/ui/workspace/tokens/form.cljs:492
+msgid "workspace.token.create-token"
+msgstr "Neues %s Token erstellen"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:151
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:278
+msgid "workspace.token.delete"
+msgstr "Token löschen"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159
msgid "workspace.token.delete-theme-title"
msgstr "Theme löschen"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:333
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:275
+msgid "workspace.token.duplicate"
+msgstr "Token duplizieren"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:262
+msgid "workspace.token.edit"
+msgstr "Token bearbeiten"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:383
msgid "workspace.token.edit-theme-title"
msgstr "Theme bearbeiten"
@@ -6075,36 +6481,129 @@ msgstr "Theme bearbeiten"
msgid "workspace.token.edit-themes"
msgstr "Themes bearbeiten"
-#: src/app/main/ui/workspace/tokens/form.cljs:430
+#: src/app/main/ui/workspace/tokens/form.cljs:491
msgid "workspace.token.edit-token"
msgstr "Token bearbeiten"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:56
-msgid "workspace.token.new-theme"
-msgstr "Neues Theme"
+#: src/app/main/ui/workspace/tokens/form.cljs:544
+msgid "workspace.token.enter-token-description"
+msgstr "Eine Beschreibung hinzufügen (optional)"
-#: src/app/main/ui/workspace/tokens/theme_select.cljs:88
+#: src/app/main/ui/workspace/tokens/form.cljs:498
+msgid "workspace.token.enter-token-name"
+msgstr "%s Token-Name eingeben"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs
+#, unused
+msgid "workspace.token.grouping-set-alert"
+msgstr "Die Gruppierung von Token-Sets wird noch nicht unterstützt."
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:196
+msgid "workspace.token.label.group"
+msgstr "Gruppe"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:206
+msgid "workspace.token.label.theme"
+msgstr "Theme"
+
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:89
msgid "workspace.token.no-active-theme"
msgstr "Kein Theme aktiviert"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:187
+#: src/app/main/ui/workspace/tokens/sets.cljs:110
+msgid "workspace.token.no-permisions-set"
+msgstr "Sie müssen ein Redakteur sein, um Sets zu aktivieren / deaktivieren"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:199
+msgid "workspace.token.no-permission-themes"
+msgstr "Sie müssen ein Redakteur sein, um Themes zu verwenden"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:504
+msgid "workspace.token.no-sets-create"
+msgstr "Es sind noch keine Sets definiert. Erstellen Sie zuerst eines."
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:131, src/app/main/ui/workspace/tokens/sets.cljs:137
+msgid "workspace.token.no-sets-yet"
+msgstr "Es sind noch keine Sets vorhanden."
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:186
msgid "workspace.token.no-themes"
msgstr "Es gibt keine Themes."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:203
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:50
+msgid "workspace.token.no-themes-currently"
+msgstr "Sie haben derzeit keine Themes."
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:122
+#, fuzzy
+msgid "workspace.token.original-value"
+msgstr "Ursprünglicher Wert: %s"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:128
+msgid "workspace.token.ref-not-valid"
+msgstr "Referenz ist ungültig oder befindet sich nicht in einem aktiven Set"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:217, src/app/main/ui/workspace/tokens/form.cljs:221, src/app/main/ui/workspace/tokens/token_pill.cljs:123
+#, fuzzy
+msgid "workspace.token.resolved-value"
+msgstr "Aufgelöster Wert: %s"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:240
msgid "workspace.token.save-theme"
msgstr "Theme speichern"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs
-#, unused
+#: src/app/main/ui/workspace/tokens/sets.cljs:239, src/app/main/ui/workspace/tokens/sets.cljs:340
+msgid "workspace.token.select-set"
+msgstr "Set auswählen."
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:396
+msgid "workspace.token.set-selection-theme"
+msgstr ""
+"Legen Sie fest, welche Token-Sets als Teil dieser Theme-Option verwendet "
+"werden sollen:"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:136
msgid "workspace.token.theme-name"
msgstr "Theme %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:43, src/app/main/ui/workspace/tokens/modals/themes.cljs:88
-msgid "workspace.token.themes"
-msgstr "Themes"
+#: src/app/main/ui/workspace/tokens/form.cljs:545
+msgid "workspace.token.token-description"
+msgstr "Beschreibung"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/tokens/form.cljs:501
+msgid "workspace.token.token-name"
+msgstr "Name"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:59
+msgid "workspace.token.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/form.cljs:526
+msgid "workspace.token.token-value"
+msgstr "Wert"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:322
+msgid "workspace.token.tokens-section-title"
+msgstr "TOKENS - %s"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:405
+msgid "workspace.token.tools"
+msgstr "Werkzeuge"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:131
+msgid "workspace.token.value-not-valid"
+msgstr "Der Wert ist nicht gültig"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:520
+msgid "workspace.token.warning-name-change"
+msgstr ""
+"Die Umbenennung dieses Tokens macht jeden Verweis auf seinen alten Namen "
+"kaputt."
+
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Assets"
@@ -6112,39 +6611,39 @@ msgstr "Assets"
msgid "workspace.toolbar.color-palette"
msgstr "Farbpalette (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Kommentare (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Stift (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Ellipse (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Zeichenfläche (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Bild (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Verschieben (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Pfad (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:201, src/app/main/ui/workspace/top_toolbar.cljs:202
+#: src/app/main/ui/workspace/top_toolbar.cljs:210, src/app/main/ui/workspace/top_toolbar.cljs:211
msgid "workspace.toolbar.plugins"
msgstr "Plugins (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Rechteck (%s)"
@@ -6153,7 +6652,7 @@ msgstr "Rechteck (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Tastaturkürzel (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Text (%s)"
@@ -6161,7 +6660,7 @@ msgstr "Text (%s)"
msgid "workspace.toolbar.text-palette"
msgstr "Typografien (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:220, src/app/main/ui/workspace/top_toolbar.cljs:221
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
msgid "workspace.toolbar.toggle-toolbar"
msgstr "Werkzeugleiste ein- und ausblenden"
@@ -6319,19 +6818,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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Ignorieren"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
msgid "workspace.updates.more-info"
msgstr "Mehr Info"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
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:1226
msgid "workspace.updates.update"
msgstr "Aktualisieren"
@@ -6355,14 +6854,65 @@ msgstr "Version wiederherstellen"
msgid "workspace.versions.button.save"
msgstr "Version speichern"
+#: src/app/main/ui/workspace/sidebar/versions.cljs:336
+msgid "workspace.versions.empty"
+msgstr "Es sind noch keine Versionen vorhanden"
+
+#: src/app/main/ui/ds/product/autosaved_milestone.cljs:53
+msgid "workspace.versions.expand-snapshot"
+msgstr "Schnappschüsse erweitern"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:309
+msgid "workspace.versions.filter.all"
+msgstr "Alle Versionen"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:308
+msgid "workspace.versions.filter.label"
+msgstr "Versionen filtern"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:310
+msgid "workspace.versions.filter.mine"
+msgstr "Meine Versionen"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:316
+msgid "workspace.versions.filter.user"
+msgstr "%s Versionen"
+
#: src/app/main/ui/workspace/sidebar/versions.cljs:322
msgid "workspace.versions.loading"
msgstr "Laden..."
-#: src/app/main/ui/workspace/sidebar.cljs:281
+#: src/app/main/ui/workspace/sidebar/versions.cljs:259
+msgid "workspace.versions.restore-warning"
+msgstr "Möchten Sie diese Version wiederherstellen?"
+
+#, unused
+msgid "workspace.versions.snapshot-menu"
+msgstr "Schnappschuss-Menü öffnen"
+
+#: src/app/main/ui/workspace/sidebar.cljs:285
+msgid "workspace.versions.tab.actions"
+msgstr "Aktionen"
+
+#: src/app/main/ui/workspace/sidebar.cljs:282
msgid "workspace.versions.tab.history"
msgstr "Verlauf"
+#: src/app/main/ui/ds/product/autosaved_milestone.cljs:67, src/app/main/ui/ds/product/user_milestone.cljs:74
+msgid "workspace.versions.version-menu"
+msgstr "Version-Menü öffnen"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:365
+#, markdown
+msgid "workspace.versions.warning.subtext"
+msgstr ""
+"Wenn Sie diese Grenze erhöhen möchten, schreiben Sie uns an "
+"[support@penpot.app](%s)"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:361
+msgid "workspace.versions.warning.text"
+msgstr "Automatisch gespeicherte Versionen werden für %s Tage aufbewahrt."
+
#, unused
msgid "workspace.viewport.click-to-close-path"
msgstr "Klicken Sie, um den Pfad zu schließen"
diff --git a/frontend/translations/el.po b/frontend/translations/el.po
index f8df639a7e..638fca8927 100644
--- a/frontend/translations/el.po
+++ b/frontend/translations/el.po
@@ -34,13 +34,13 @@ msgstr "Δημιουργία επίδειξης λογαριασμού"
msgid "auth.create-demo-profile"
msgstr "Θέλετε να το δοκιμάσετε;"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Αυτή είναι μια υπηρεσία DEMO, ΜΗ ΧΡΗΣΙΜΟΠΟΙΕΙΤΕ για πραγματική εργασία, τα "
"έργα θα σβήνονται περιοδικά."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Ξεχάσατε τον κωδικό;"
@@ -52,23 +52,23 @@ msgstr "Πλήρες όνομα"
msgid "auth.login-here"
msgstr "Συνδεθείτε εδώ"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Συνδεθείτε"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
@@ -94,7 +94,7 @@ msgstr ""
msgid "auth.notifications.team-invitation-accepted"
msgstr "Μπήκατε στην ομάδα"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Κωδικός "
@@ -118,11 +118,11 @@ msgstr "Ξεχάσατε τον κωδικό σας;"
msgid "auth.recovery-submit"
msgstr "Αλλάξτε τον κωδικό σας"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Δεν έχετε λογαριασμό;"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Δημιουργία λογαριασμού"
@@ -147,7 +147,7 @@ msgstr "Προσθήκη ως Κοινόχρηστη βιβλιοθήκη"
msgid "dashboard.change-email"
msgstr "Αλλαγή email"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(Αντίγραφο)"
@@ -175,11 +175,11 @@ msgstr "Πρόσκληση στην ομάδα"
msgid "dashboard.leave-team"
msgstr "Αφήστε την ομάδα"
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Κοινόχρηστες βιβλιοθήκες"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "φόρτωση των αρχείων σας …"
@@ -191,7 +191,7 @@ msgstr "Μετακίνηση"
msgid "dashboard.move-to-other-team"
msgstr "Μετακίνηση σε άλλη ομάδα"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "Νεο αρχείο"
@@ -264,7 +264,7 @@ msgstr "Αλλάξτε τη γλώσσα διεπαφής"
msgid "dashboard.select-ui-theme"
msgstr "Επιλέξτε ένα θέμα"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Εμφάνιση όλων των αρχείων"
@@ -284,7 +284,7 @@ msgstr "Το έργο σας έχει αναπαραχθεί με επιτυχί
msgid "dashboard.success-duplicate-project"
msgstr "Το έργο σας έχει αναπαραχθεί με επιτυχία"
-#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Το έργο σας μετακινήθηκε με επιτυχία"
@@ -332,15 +332,15 @@ msgstr "Email"
msgid "dashboard.your-name"
msgstr "Το όνομα σου"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Το Penpot σας"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "ακύρωση"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Ok"
@@ -348,7 +348,7 @@ msgstr "Ok"
msgid "ds.confirm-title"
msgstr "Είσαι σίγουρος;"
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Το πρόγραμμα περιήγησής σας δεν μπορεί να εκτελέσει αυτήν τη λειτουργία"
@@ -364,12 +364,11 @@ msgstr "Αυτό το email έχει ήδη επικυρωθεί."
msgid "errors.email-has-permanent-bounces"
msgstr "Το email «%s» έχει πολλές μόνιμες αναφορές αναπήδησης."
-#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Έχει συμβεί κάτι λάθος."
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "Το email επιβεβαίωσης πρέπει να ταιριάζει"
@@ -377,7 +376,7 @@ msgstr "Το email επιβεβαίωσης πρέπει να ταιριάζει
msgid "errors.invalid-recovery-token"
msgstr "Ο κωδικός ανάκτησης δεν είναι έγκυρος."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "Ο έλεγχος ταυτότητας LDAP είναι απενεργοποιημένος."
@@ -423,12 +422,11 @@ msgstr "Προέκυψε ένα μη αναμενόμενο σφάλμα."
msgid "errors.unexpected-token"
msgstr "Άγνωστο διακριτικό"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "Το όνομα χρήστη ή ο κωδικός πρόσβασης φαίνεται να είναι λάθος."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Ο παλιός κωδικός πρόσβασης είναι λάθος "
@@ -451,11 +449,11 @@ msgstr ""
msgid "feedback.title"
msgstr "Email"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Παρουσιάστηκε σφάλμα"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Θολούρα"
@@ -463,31 +461,31 @@ msgstr "Θολούρα"
msgid "inspect.attributes.blur.value"
msgstr "αξία"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Γέμισμα"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Λήψη εικόνας πηγής"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Υψος"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Πλάτος"
@@ -526,11 +524,11 @@ msgstr "Πάνω"
msgid "inspect.attributes.layout.width"
msgstr "Πλάτος"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Σκιά "
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "περίγραμμα"
@@ -567,111 +565,111 @@ msgstr "Στερεός"
msgid "inspect.attributes.stroke.width"
msgstr "Πλάτος"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Τυπογραφία"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Οικογένεια γραμματοσειρών"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Μέγεθος γραμματοσειράς"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Στυλ γραμματοσειράς"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Διάστημα γραμμάτων"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Ύψος γραμμής"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Διακόσμηση κειμένου"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Κανένα"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "διαγραφή"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "υπογράμμιση"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Μετασχηματισμός κειμένου"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Πεζά γράμματα"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Κανένα"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Πρώτα κεφαλαία"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Κεφαλαία γράμματα"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Κώδικας"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Κύκλος"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Κυρτότητα"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Τραπέζι εργασίας"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Ομάδα"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Εικόνα"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s Επιλεγμένα"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Σχέδιο"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Ορθωγώνιο"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Κείμενο"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Πληροφορίες"
@@ -683,7 +681,7 @@ msgstr "Αποδέχομαι"
msgid "labels.admin"
msgstr "Διαχειριστής"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Ολα"
@@ -697,11 +695,11 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Bad Gateway"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "ακύρωση"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Σχόλια"
@@ -717,23 +715,23 @@ msgstr "Δημιουργήστε μια νέα ομάδα"
msgid "labels.dashboard"
msgstr "πίνακας"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Διαγραφή"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Διαγραφή σχολίου"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Διαγραφή νήματος"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Πρόχειρα"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Edit"
@@ -749,7 +747,7 @@ msgstr "Τα σχόλια απενεργοποιήθηκαν"
msgid "labels.feedback-sent"
msgstr "Εστάλη γνώμη"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Δώστε μας τη γνώμη σας"
@@ -757,7 +755,7 @@ msgstr "Δώστε μας τη γνώμη σας"
msgid "labels.go-back"
msgstr "Πίσω"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Απόκρυψη επιλυμένων σχολίων"
@@ -775,7 +773,7 @@ msgstr "Εσωτερικό σφάλμα"
msgid "labels.language"
msgstr "Γλώσσα"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Αποσύνδεση"
@@ -787,7 +785,7 @@ msgstr "Μέλη"
msgid "labels.new-password"
msgstr "Νέος κωδικός πρόσβασης"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "Δεν έχετε εκκρεμείς ειδοποιήσεις σχολίων"
@@ -802,7 +800,7 @@ msgstr ""
msgid "labels.not-found.main-message"
msgstr "Ωχ"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "1 αρχείο"
@@ -844,7 +842,7 @@ msgstr "Εργα"
msgid "labels.remove"
msgstr "Διαγραφή"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Μετονομασία"
@@ -860,7 +858,7 @@ msgstr "Ξαναδοκιμάσετε"
msgid "labels.role"
msgstr "Ρόλος"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Αποθηκεύση"
@@ -892,11 +890,11 @@ msgstr "Μοιραστείτε το link"
msgid "labels.shared-libraries"
msgstr "Κοινόχρηστες βιβλιοθήκες"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Εμφάνιση όλων των σχολίων"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Εμφάνιση μόνο των δικών σας σχολίων"
@@ -912,7 +910,7 @@ msgstr "Ενημερώστε τον εξοπλισμό"
msgid "labels.viewer"
msgstr "Θεατής"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Γράψτε ένα νέο σχόλιο"
@@ -975,17 +973,17 @@ msgstr ""
msgid "modals.delete-account.title"
msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε το λογαριασμό σας;"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Διαγραφή συζήτησης"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Είστε σίγουροι ότι θέλετε να διαγράψετε αυτήν τη συνομιλία; Όλα τα σχόλια "
"σε αυτό το νήμα θα διαγραφούν."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Διαγραφή συζήτησης"
@@ -1001,11 +999,11 @@ msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετ
msgid "modals.delete-file-confirm.title"
msgstr "Διαγραφή αρχείου"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή τη σελίδα;"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Διαγραφή σελίδας"
@@ -1108,21 +1106,21 @@ msgstr ""
msgid "modals.remove-shared-confirm.message"
msgstr "Καταργήστε το “%s” ως Κοινόχρηστη βιβλιοθήκη"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Ενημέρωση στοιχείου"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Ακύρωση"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
msgid "modals.update-remote-component.hint"
msgstr ""
"Πρόκειται να ενημερώσετε ένα στοιχείο σε μια κοινόχρηστη βιβλιοθήκη. Αυτό "
"μπορεί να επηρεάσει άλλα αρχεία που το χρησιμοποιούν."
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Ενημερώστε ένα στοιχείο σε μια κοινόχρηστη βιβλιοθήκη"
@@ -1148,7 +1146,7 @@ msgstr "Το email επαλήθευσης εστάλη στο %s. Ελέγξτε
msgid "profile.recovery.go-to-login"
msgstr "Μεταβείτε στη σύνδεση"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Μικτός "
@@ -1221,23 +1219,23 @@ msgstr "Ευθυγραμμίστε την κορυφή (%s)"
msgid "workspace.assets.assets"
msgstr "Περιουσιακά στοιχεία"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Όλα τα περιουσιακά στοιχεία"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Χρώματα"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Συστατικά"
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Διαγραφή"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Αντιγραφή"
@@ -1245,27 +1243,23 @@ msgstr "Αντιγραφή"
msgid "workspace.assets.edit"
msgstr "Επεξεργασία"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Γραφικά"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Βιβλιοθήκες"
-
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Δεν βρέθηκαν στοιχεία"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Μετονομασία"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Αναζήτηση στοιχείων"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Τυπογραφίες"
@@ -1274,31 +1268,31 @@ msgstr "Τυπογραφίες"
msgid "workspace.assets.typography.font-id"
msgstr "Γραμματοσειρά"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Μέγεθος"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Παραλαγή"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Μεταβείτε στο αρχείο βιβλιοθήκης στυλ για επεξεργασία"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Διάστημα γραμμάτων"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Υψος γραμμής"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Μετασχηματισμός κειμένου"
@@ -1338,25 +1332,24 @@ msgstr "Εμφάνιση παλέτας χρωμάτων"
msgid "workspace.header.menu.show-rules"
msgstr "Εμφάνιση κανόνες"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Σφάλμα κατά την αποθήκευση"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Αποθηκεύτηκε"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Aποθήκευση "
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Μη αποθηκευμένες αλλαγές"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "Λειτουργία προβολής (%s)"
@@ -1365,7 +1358,7 @@ msgstr "Λειτουργία προβολής (%s)"
msgid "workspace.libraries.add"
msgstr "Προσθήκη"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s χρώματα"
@@ -1377,27 +1370,27 @@ msgstr "Βιβλιοθήκη αρχείων"
msgid "workspace.libraries.colors.recent-colors"
msgstr "Πρόσφατα χρώματα"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Αποθηκεύστε το στυλ χρώματος"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Βιβλιοθήκη αρχείων"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "ΒΙΒΛΙΟΘΗΚΕΣ ΣΕ ΑΥΤΟ ΤΟ ΑΡΧΕΙΟ"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "ΒΙΒΛΙΟΘΗΚΕΣ"
@@ -1406,43 +1399,39 @@ msgstr "ΒΙΒΛΙΟΘΗΚΕΣ"
msgid "workspace.libraries.library"
msgstr "ΒΙΒΛΙΟΘΗΚΗ"
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "Δεν υπάρχουν κοινόχρηστες βιβλιοθήκες που χρειάζονται ενημέρωση"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Δεν βρίσκεται «%s»"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Δεν υπάρχουν διαθέσιμες κοινόχρηστες βιβλιοθήκες"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Αναζήτηση σε κοινόχρηστες βιβλιοθήκες"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "Κοινόχρηστες βιβλιοθήκες"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Πολλαπλές τυπογραφίες"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Αποσύνδεση όλων των τυπογραφιών"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Ενημέρωση"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "ΕΝΗΜΕΡΩΣΕΙΣ"
@@ -1458,11 +1447,11 @@ msgstr "Θολούρα της ομάδας"
msgid "workspace.options.blur-options.title.multiple"
msgstr "Θόλωμα επιλογής"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Χρώμα του φόντου"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Συστατικό"
@@ -1470,19 +1459,19 @@ msgstr "Συστατικό"
msgid "workspace.options.design"
msgstr "Σχέδιο"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Εξαγωγή"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
msgid "workspace.options.export-object"
msgstr "Εξαγωγή σχήματος"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Κατάληξη"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Εξαγωγή ..."
@@ -1674,7 +1663,7 @@ msgstr "Πρωτότυπο"
msgid "workspace.options.radius"
msgstr "Ακτίνα κύκλου"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Περιστροφή"
@@ -1692,39 +1681,39 @@ msgstr "Συμπλήρωση επιλογής"
msgid "workspace.options.selection-stroke"
msgstr "Επιλογή διαδρομής"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Θολούρα"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Σκίαση"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Εσωτερική σκιά"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "Χ"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Υ"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Διάχυση"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Σκιά"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Ομαδική σκιά"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Επιλογή σκιών"
@@ -1732,7 +1721,7 @@ msgstr "Επιλογή σκιών"
msgid "workspace.options.size"
msgstr "Μέγεθος"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Προεπιλογές μεγέθους"
@@ -1792,11 +1781,11 @@ msgstr "Αυτόματο πλάτος"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Σταθερός"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Διάστημα γραμμάτων"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Υψος γραμμής"
@@ -1862,107 +1851,107 @@ msgstr ""
"Χρησιμοποιήστε το κουμπί αναπαραγωγής στην κεφαλίδα για να εκτελέσετε την "
"προβολή πρωτοτύπου."
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "Αποστολή προς τα πίσω"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Αποστολή προς τα πίσω"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "αντίγραφο"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Δημιουργία στοιχείου"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Αποκοπή"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Διαγραφή"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Αποσύνδεση παρουσίας"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Αντίγραφο"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Επεξεργασία"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Αναστρέψτε οριζόντια"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Αναστροφή κάθετου"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Φέρτε μπροστά"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Φέρτε μπροστά"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Ομάδα"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Κρύβω"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Κλείδωμα"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Μάσκα"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Επικόλληση"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Επαναφορά παρακάμψεων"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "προβολή"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Κατάργηση ομάδας"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Ξεκλείδωμα"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Ανακάλυψη"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Ιστορικό"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "στρώσεις"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Εισαγόμενα χαρακτηριστικά SVG"
@@ -1970,11 +1959,11 @@ msgstr "Εισαγόμενα χαρακτηριστικά SVG"
msgid "workspace.sidebar.sitemap"
msgstr "Σελίδες"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Χάρτης ιστοτόπου"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Στοιχεία"
@@ -1982,39 +1971,39 @@ msgstr "Στοιχεία"
msgid "workspace.toolbar.color-palette"
msgstr "Παλέτα χρωμάτων (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Σχόλια (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Στροφή (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Έλλειψη (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Artboard (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Εικόνα (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr ""
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Path (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Ορθογώνιο (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Κείμενο (%s)"
@@ -2163,15 +2152,15 @@ msgstr "Λειτουργία άνω του %s"
msgid "workspace.undo.title"
msgstr "Ιστορία"
-#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Παράβλεψη"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
msgid "workspace.updates.there-are-updates"
msgstr "Υπάρχουν ενημερώσεις σε κοινόχρηστες βιβλιοθήκες"
-#: src/app/main/data/workspace/libraries.cljs:1225
+#: src/app/main/data/workspace/libraries.cljs:1226
msgid "workspace.updates.update"
msgstr "Ενημέρωση"
diff --git a/frontend/translations/en.po b/frontend/translations/en.po
index 3ac5cb4a32..679a703e32 100644
--- a/frontend/translations/en.po
+++ b/frontend/translations/en.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"PO-Revision-Date: 2025-01-29 22:23+0000\n"
"Last-Translator: Anonymous \n"
-"Language-Team: English \n"
+"Language-Team: English "
+" \n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
@@ -11,10 +11,6 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.10-dev\n"
-#: src/app/main/data/common.cljs:87
-msgid "labels.refresh"
-msgstr "Refresh"
-
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
msgstr "Already have an account?"
@@ -40,13 +36,13 @@ msgstr "Create demo account"
msgid "auth.create-demo-profile"
msgstr "Just wanna try it?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"This is a DEMO service, DO NOT USE for real work, the projects will be "
"periodically wiped."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Forgot password?"
@@ -54,7 +50,7 @@ msgstr "Forgot password?"
msgid "auth.fullname"
msgstr "Full Name"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "Log into my account"
@@ -62,31 +58,31 @@ msgstr "Log into my account"
msgid "auth.login-here"
msgstr "Login here."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Login"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr "Penpot is the free open-source design tool for Design and Code collaboration"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -110,7 +106,7 @@ msgstr "Password recovery link sent to your inbox."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Joined the team successfully"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Password"
@@ -138,7 +134,7 @@ msgstr "Forgot password?"
msgid "auth.recovery-submit"
msgstr "Change your password"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "No account yet?"
@@ -150,7 +146,7 @@ msgstr "Let us know what we should call you on the dashboard and in emails."
msgid "auth.register-account-title"
msgstr "Your name"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Create an account"
@@ -174,7 +170,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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Terms of service"
@@ -188,7 +184,7 @@ msgstr ""
msgid "auth.verification-email-sent"
msgstr "We've sent a verification email to"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "Work email"
@@ -197,11 +193,11 @@ msgstr "Work email"
msgid "branding-illustrations-marketing-pieces"
msgstr "...branding, illustrations, marketing pieces, etc."
-#: src/app/main/ui/comments.cljs:504
+#: src/app/main/ui/comments.cljs:532
msgid "comments.mentions.not-found"
msgstr "No people found for @%s"
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Publish"
@@ -273,7 +269,7 @@ msgstr "Share prototypes"
msgid "common.share-link.view-all"
msgstr "Select All"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Unpublish"
@@ -327,7 +323,7 @@ msgstr "Interface Walkthrough"
msgid "dashboard.access-tokens.copied-success"
msgstr "Copied token"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Generate new token"
@@ -335,11 +331,11 @@ msgstr "Generate new token"
msgid "dashboard.access-tokens.create.success"
msgstr "Access token created successfully."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Press the button \"Generate new token\" to generate one."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "You have no tokens so far."
@@ -363,23 +359,23 @@ msgstr "90 days"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Never"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Expired on %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Expires on %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "No expiration date"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Personal access tokens"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Personal access tokens function like an alternative to our login/password "
@@ -394,7 +390,7 @@ msgstr "The token will expire on %s"
msgid "dashboard.access-tokens.token-will-not-expire"
msgstr "The token has no expiration date"
-#: src/app/main/ui/dashboard/placeholder.cljs:54
+#: src/app/main/ui/dashboard/placeholder.cljs:35
msgid "dashboard.add-file"
msgstr "Add file"
@@ -406,7 +402,7 @@ msgstr "Add as Shared Library"
msgid "dashboard.change-email"
msgstr "Change email"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:508
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(copy)"
@@ -442,23 +438,23 @@ msgstr "Duplicate"
msgid "dashboard.duplicate-multi"
msgstr "Duplicate %s files"
-#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:285
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
msgid "dashboard.empty-placeholder-drafts-subtitle"
msgstr "Once a project member creates a draft, it will be displayed here."
-#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:280
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
msgid "dashboard.empty-placeholder-drafts-title"
msgstr "No drafts yet."
-#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:286
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
msgid "dashboard.empty-placeholder-files-subtitle"
msgstr "Once a project member creates a file, it will be displayed here."
-#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:281
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
msgid "dashboard.empty-placeholder-files-title"
msgstr "No files yet."
-#: src/app/main/ui/dashboard/placeholder.cljs:43
+#: src/app/main/ui/dashboard/placeholder.cljs:77
#, markdown
msgid "dashboard.empty-placeholder-libraries"
msgstr ""
@@ -474,14 +470,42 @@ msgstr ""
"add from our [Libraries & "
"templates](https://penpot.app/libraries-templates)."
-#: src/app/main/ui/dashboard/placeholder.cljs:39
+#: src/app/main/ui/dashboard/placeholder.cljs:73
msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role"
msgstr "Libraries added to the project will appear here."
-#: src/app/main/ui/dashboard/placeholder.cljs:36
+#: src/app/main/ui/dashboard/placeholder.cljs:70
msgid "dashboard.empty-placeholder-libraries-title"
msgstr "No libraries yet."
+#: src/app/main/ui/dashboard/placeholder.cljs:44
+msgid "dashboard.empty-project.add-library"
+msgstr "Add a Library or a Template"
+
+#: src/app/main/ui/dashboard/placeholder.cljs:36, src/app/main/ui/dashboard/placeholder.cljs:90
+msgid "dashboard.empty-project.create"
+msgstr "Create new file"
+
+#: src/app/main/ui/dashboard/placeholder.cljs:45
+msgid "dashboard.empty-project.explore"
+msgstr "Explore some to add"
+
+#: src/app/main/ui/dashboard/placeholder.cljs:43
+msgid "dashboard.empty-project.go-to-libraries"
+msgstr "Go to Libraries and Templates"
+
+#: src/app/main/ui/dashboard/placeholder.cljs:39, src/app/main/ui/dashboard/placeholder.cljs:40
+msgid "dashboard.empty-project.import"
+msgstr "Import a file"
+
+#: src/app/main/ui/dashboard/placeholder.cljs:41
+msgid "dashboard.empty-project.import-penpot"
+msgstr "Import a .penpot file"
+
+#: src/app/main/ui/dashboard/placeholder.cljs:37
+msgid "dashboard.empty-project.start"
+msgstr "Start building amazing stuff"
+
#: src/app/main/ui/dashboard/file_menu.cljs:249, src/app/main/ui/dashboard/file_menu.cljs:254
msgid "dashboard.export-binary-multi"
msgstr "Download %s Penpot files (.penpot)"
@@ -572,33 +596,33 @@ msgstr "Include shared library assets in file libraries"
msgid "dashboard.export.title"
msgstr "Export files"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Missing font"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Dismiss all"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Custom fonts you upload will appear here."
-#: src/app/main/ui/dashboard/fonts.cljs:448
+#: src/app/main/ui/dashboard/fonts.cljs:450
msgid "dashboard.fonts.empty-placeholder-viewer"
msgstr "No custom fonts yet."
-#: src/app/main/ui/dashboard/fonts.cljs:449
+#: src/app/main/ui/dashboard/fonts.cljs:451
msgid "dashboard.fonts.empty-placeholder-viewer-sub"
msgstr "Once a project member uploads a custom font, it will be displayed here."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "1 font added"
msgstr[1] "%s fonts added"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -608,20 +632,20 @@ msgstr ""
"upload fonts with the following formats: **TTF, OTF and WOFF** (only one "
"will be needed)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"You should only upload fonts you own or have license to use in Penpot. Find "
-"out more in the Content rights section of [Penpot's Terms of "
-"Service](%s). You also might want to read about "
-"[font licensing](https://www.typography.com/faq)."
+"out more in the Content rights section of [Penpot's Terms of Service](%s). "
+"You also might want to read about [font "
+"licensing](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Upload all"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -632,7 +656,7 @@ msgstr ""
"using [Transfonter](https://transfonter.org/) to generate webfonts and fix "
"errors. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Import Penpot files"
@@ -644,11 +668,11 @@ msgstr "Oops! We couldn't import this file"
msgid "dashboard.import.analyze-error.components-v2"
msgstr "File with components v2 activated but this team doesn't support it yet."
-#: src/app/main/ui/dashboard.cljs:248
+#: src/app/main/ui/dashboard.cljs:247
msgid "dashboard.import.bad-url"
msgstr "Import failed. The template URL is incorrect"
-#: src/app/main/ui/dashboard.cljs:242
+#: src/app/main/ui/dashboard.cljs:241
msgid "dashboard.import.error"
msgstr "Import failed. Please try again"
@@ -656,17 +680,17 @@ msgstr "Import failed. Please try again"
msgid "dashboard.import.import-error"
msgstr "There was a problem importing the file. The file wasn't imported."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgid_plural "dashboard.import.import-message"
msgstr[0] "1 file has been imported successfully."
msgstr[1] "%s files have been imported successfully."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Some files containted invalid objects that have been removed."
-#: src/app/main/ui/dashboard.cljs:249
+#: src/app/main/ui/dashboard.cljs:248
msgid "dashboard.import.no-perms"
msgstr "You don’t have permission to import to this team"
@@ -706,30 +730,38 @@ msgstr "Invite people"
msgid "dashboard.leave-team"
msgstr "Leave team"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Libraries & Templates"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:257
+msgid "dashboard.libraries-and-templates.description"
+msgstr "Here you have some Libraries and templates you can add to your project"
+
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "Explore more of them and know how to contribute"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "There was a problem importing the template. The template wasn't imported."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Libraries"
-#: src/app/main/ui/dashboard/placeholder.cljs:64
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "loading your files …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "loading your fonts …"
+#: src/app/main/data/comments.cljs:472
+msgid "dashboard.mark-all-as-read.success"
+msgstr "Marked all notifications as read"
+
#: src/app/main/ui/dashboard/file_menu.cljs:291, src/app/main/ui/dashboard/project_menu.cljs:101
msgid "dashboard.move-to"
msgstr "Move to"
@@ -742,11 +774,11 @@ msgstr "Move %s files to"
msgid "dashboard.move-to-other-team"
msgstr "Move to other team"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ New File"
-#: src/app/main/data/dashboard.cljs:483, src/app/main/data/dashboard.cljs:592
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "New File"
@@ -754,31 +786,10 @@ msgstr "New File"
msgid "dashboard.new-project"
msgstr "+ New project"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:595
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "New Project"
-msgid "dashboard.empty-project.create"
-msgstr "Create new file"
-
-msgid "dashboard.empty-project.start"
-msgstr "Start building amazing stuff"
-
-msgid "dashboard.empty-project.import"
-msgstr "Import a file"
-
-msgid "dashboard.empty-project.import-penpot"
-msgstr "Import a .penpot file"
-
-msgid "dashboard.empty-project.add-library"
-msgstr "Add a Library or a Template"
-
-msgid "dashboard.empty-project.explore"
-msgstr "Explore some to add"
-
-msgid "dashboard.empty-project.go-to-libraries"
-msgstr "Go to Libraries and Templates"
-
#: src/app/main/ui/dashboard/search.cljs:77
msgid "dashboard.no-matches-for"
msgstr "No matches found for “%s“"
@@ -787,7 +798,7 @@ msgstr "No matches found for “%s“"
msgid "dashboard.no-projects-placeholder"
msgstr "Pinned projects will appear here"
-#: src/app/main/ui/dashboard/comments.cljs:84
+#: src/app/main/ui/dashboard/comments.cljs:90
msgid "dashboard.notifications"
msgstr "Notifications"
@@ -799,7 +810,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/ui/settings/notifications.cljs:42
+#: src/app/main/data/profile.cljs:260
msgid "dashboard.notifications.notifications-saved"
msgstr "Notification settings updated"
@@ -819,7 +830,7 @@ msgstr "%s members"
msgid "dashboard.open-in-new-tab"
msgstr "Open file in a new tab"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Options"
@@ -847,15 +858,15 @@ msgstr "You are now a viewer on this team."
msgid "dashboard.pin-unpin"
msgstr "Pin/Unpin"
-#: src/app/main/ui/dashboard.cljs:212
+#: src/app/main/ui/dashboard.cljs:208
msgid "dashboard.plugins.bad-url"
msgstr "The plugin URL is incorrect"
-#: src/app/main/ui/dashboard.cljs:210
+#: src/app/main/ui/dashboard.cljs:206
msgid "dashboard.plugins.parse-error"
msgstr "Cannot parser the plugin manifest"
-#: src/app/main/ui/dashboard.cljs:173
+#: src/app/main/ui/dashboard.cljs:169
msgid "dashboard.plugins.try-plugin"
msgstr "Try plugin: "
@@ -896,67 +907,67 @@ msgstr "Select UI language"
msgid "dashboard.select-ui-theme"
msgstr "Select theme"
-#: src/app/main/ui/settings/notifications.cljs:76
+#: src/app/main/ui/settings/notifications.cljs:57
msgid "dashboard.settings.notifications.dashboard-comments.all"
msgstr "All comments, mentions and replies"
-#: src/app/main/ui/settings/notifications.cljs:78
+#: src/app/main/ui/settings/notifications.cljs:59
msgid "dashboard.settings.notifications.dashboard-comments.none"
msgstr "None"
-#: src/app/main/ui/settings/notifications.cljs:77
+#: src/app/main/ui/settings/notifications.cljs:58
msgid "dashboard.settings.notifications.dashboard-comments.partial"
msgstr "Only mentions and replies"
-#: src/app/main/ui/settings/notifications.cljs:73
+#: src/app/main/ui/settings/notifications.cljs:54
msgid "dashboard.settings.notifications.dashboard-comments.title"
msgstr "File comments"
-#: src/app/main/ui/settings/notifications.cljs:72
+#: src/app/main/ui/settings/notifications.cljs:53
msgid "dashboard.settings.notifications.dashboard.title"
msgstr "Dashboard Notifications"
-#: src/app/main/ui/settings/notifications.cljs:86
+#: src/app/main/ui/settings/notifications.cljs:67
msgid "dashboard.settings.notifications.email-comments.all"
msgstr "All comments, mentions and replies"
-#: src/app/main/ui/settings/notifications.cljs:88
+#: src/app/main/ui/settings/notifications.cljs:69
msgid "dashboard.settings.notifications.email-comments.none"
msgstr "None"
-#: src/app/main/ui/settings/notifications.cljs:87
+#: src/app/main/ui/settings/notifications.cljs:68
msgid "dashboard.settings.notifications.email-comments.partial"
msgstr "Only mentions and replies"
-#: src/app/main/ui/settings/notifications.cljs:83
+#: src/app/main/ui/settings/notifications.cljs:64
msgid "dashboard.settings.notifications.email-comments.title"
msgstr "File comments"
-#: src/app/main/ui/settings/notifications.cljs:95
+#: src/app/main/ui/settings/notifications.cljs:76
msgid "dashboard.settings.notifications.email-invites.all"
msgstr "All types of invites and requests"
-#: src/app/main/ui/settings/notifications.cljs:98
+#: src/app/main/ui/settings/notifications.cljs:79
msgid "dashboard.settings.notifications.email-invites.none"
msgstr "None"
-#: src/app/main/ui/settings/notifications.cljs:92
+#: src/app/main/ui/settings/notifications.cljs:73
msgid "dashboard.settings.notifications.email-invites.title"
msgstr "Invites and requests"
-#: src/app/main/ui/settings/notifications.cljs:82
+#: src/app/main/ui/settings/notifications.cljs:63
msgid "dashboard.settings.notifications.email.title"
msgstr "Email Notifications"
-#: src/app/main/ui/settings/notifications.cljs:103
+#: src/app/main/ui/settings/notifications.cljs:84
msgid "dashboard.settings.notifications.submit"
msgstr "Update settings"
-#: src/app/main/ui/settings/notifications.cljs:71
+#: src/app/main/ui/settings/notifications.cljs:52
msgid "dashboard.settings.notifications.title"
msgstr "Notifications"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Show all files"
@@ -984,7 +995,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Your file has been moved successfully"
@@ -1008,6 +1019,10 @@ msgstr "Team members"
msgid "dashboard.team-projects"
msgstr "Team projects"
+#: src/app/main/ui/dashboard/templates.cljs:133
+msgid "dashboard.template.add-to-project"
+msgstr "Add to your project"
+
#: src/app/main/ui/settings/options.cljs:57
msgid "dashboard.theme-change"
msgstr "UI theme"
@@ -1028,18 +1043,56 @@ msgstr "Unpublish Library"
msgid "dashboard.update-settings"
msgstr "Update settings"
-#: src/app/main/ui/dashboard/sidebar.cljs:969
+#: src/app/main/ui/dashboard/sidebar.cljs:970
msgid "dashboard.upgrade-plan.no-limits"
msgstr "No limits on creativity"
-#: src/app/main/ui/dashboard/sidebar.cljs:968
+#: src/app/main/ui/dashboard/sidebar.cljs:969
msgid "dashboard.upgrade-plan.penpot-free"
msgstr "Penpot Free"
-#: src/app/main/ui/dashboard/sidebar.cljs:971
+#: src/app/main/ui/dashboard/sidebar.cljs:972
msgid "dashboard.upgrade-plan.power-up"
msgstr "Power up"
+msgid "subscription.dashboard.power-up.professional.top-title"
+msgstr "Professional plan"
+
+#, markdown
+msgid "subscription.dashboard.power-up.professional.bottom-description"
+msgstr "Get extra editors and storage, file backup and more with the **Unlimited plan**"
+
+msgid "subscription.dashboard.power-up.unlimited-plan"
+msgstr "Unlimited plan"
+
+msgid "subscription.dashboard.power-up.unlimited.top-description"
+msgstr "Extra editors, storage and autosaved version, file backup and more."
+
+#, markdown
+msgid "subscription.dashboard.power-up.unlimited.bottom-description"
+msgstr "Get advanced security, activity logs, dedicated support and more with **Enterprise plan**"
+
+msgid "subscription.dashboard.power-up.enterprise-plan"
+msgstr "Enterprise plan"
+
+msgid "subscription.dashboard.power-up.unlimited.cta"
+msgstr "Take a look"
+
+msgid "subscription.dashboard.power-up.enterprise.description"
+msgstr "Advanced security, activity logs, dedicated support and more."
+
+msgid "subscription.dashboard.power-up.trial.top-title"
+msgstr "Unlimited plan (trial)"
+
+msgid "subscription.dashboard.power-up.trial.top-description"
+msgstr "Extra editors, storage and autosaved version, file backup and more."
+
+msgid "subscription.dashboard.power-up.trial.bottom-description"
+msgstr "Enjoying your trial? Unlock full access forever."
+
+msgid "subscription.dashboard.power-up.subscribe"
+msgstr "Subscribe"
+
#: src/app/main/ui/dashboard/team.cljs:909
msgid "dashboard.webhooks.active"
msgstr "Is active"
@@ -1095,7 +1148,7 @@ msgstr "Email"
msgid "dashboard.your-name"
msgstr "Your name"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Your Penpot"
@@ -1115,11 +1168,11 @@ msgstr "Components to update:"
msgid "ds.confirm-allow"
msgstr "Allow"
-#: src/app/main/ui/comments.cljs:629, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Cancel"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Ok"
@@ -1131,7 +1184,7 @@ msgstr "Are you sure?"
msgid "errors.auth-provider-not-allowed"
msgstr "Auth provider not allowed for this profile"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Authentication provider not configured."
@@ -1139,11 +1192,11 @@ msgstr "Authentication provider not configured."
msgid "errors.auth.unable-to-login"
msgstr "Looks like you are not authenticated or session expired."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "The font %s could not be loaded"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "The fonts %s could not be loaded"
@@ -1151,32 +1204,18 @@ msgstr "The fonts %s could not be loaded"
msgid "errors.cannot-upload"
msgstr "Cannot upload the media file."
-#: src/app/main/ui/comments.cljs:689
+#: src/app/main/ui/comments.cljs:729, src/app/main/ui/comments.cljs:760, src/app/main/ui/comments.cljs:826
msgid "errors.character-limit-exceeded"
msgstr "Character limit exceeded"
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Your browser cannot do this operation"
-#: src/app/main/data/tokens.cljs:199
+#: src/app/main/data/tokens.cljs:246
msgid "errors.drop-token-set-parent-to-child"
msgstr "Cannot drop a parent set to an own child path."
-msgid "errors.token-set-already-exists"
-msgstr "A set with the same name already exists"
-
-msgid "errors.token-theme-already-exists"
-msgstr "Theme Option with the same name exists"
-
-#: src/app/main/data/tokens.cljs:198
-msgid "errors.token-set-exists-on-drop"
-msgstr "Cannot complete drop, a set with same name already exists at path."
-
-#: src/app/main/data/tokens.cljs:294
-msgid "workspace.token.duplicate-suffix"
-msgstr "copy"
-
#: src/app/main/ui/auth/verify_token.cljs:84, src/app/main/ui/settings/change_email.cljs:29
msgid "errors.email-already-exists"
msgstr "Email already used"
@@ -1185,7 +1224,7 @@ msgstr "Email already used"
msgid "errors.email-already-validated"
msgstr "Email already validated."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "You can't use your email as password"
@@ -1220,6 +1259,10 @@ msgstr "Must contain at most 1 characters."
msgid "errors.field-min-length"
msgstr "Must contain at least 1 character."
+#: src/app/util/forms.cljs:61
+msgid "errors.field-missing"
+msgstr "Empty field"
+
#: 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
msgid "errors.field-not-all-whitespace"
@@ -1232,7 +1275,19 @@ 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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
+msgid "errors.deprecated"
+msgstr "Sorry! This is an old file that uses a deprecated type of Penpot assets and you can't open it."
+
+msgid "errors.deprecated.contact.before"
+msgstr "Although Penpot no longer support this type of Assets, you can"
+
+msgid "errors.deprecated.contact.text"
+msgstr "contact us"
+
+msgid "errors.deprecated.contact.after"
+msgstr "so we can help you."
+
+#: 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Something wrong has happened."
@@ -1240,25 +1295,16 @@ msgstr "Something wrong has happened."
msgid "errors.invalid-color"
msgstr "Invalid color"
-#: src/app/util/forms.cljs
+#: src/app/util/forms.cljs:35, src/app/util/forms.cljs:84
msgid "errors.invalid-data"
msgstr "Invalid data"
-#: src/app/util/forms.cljs
-msgid "errors.field-missing"
-msgstr "Empty field"
-
-#: src/app/util/forms.cljs
-msgid "errors.invalid-text"
-msgstr "Invalid text"
-
#: src/app/main/ui/auth/register.cljs, src/app/main/ui/auth/login.cljs, src/app/main/ui/auth/recovery_request.cljs
#, unused
msgid "errors.invalid-email"
msgstr "Enter a valid email please"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "Confirmation email must match"
@@ -1266,6 +1312,11 @@ msgstr "Confirmation email must match"
msgid "errors.invalid-recovery-token"
msgstr "The recovery token is invalid."
+#: src/app/util/forms.cljs
+#, unused
+msgid "errors.invalid-text"
+msgstr "Invalid text"
+
#: src/app/main/ui/static.cljs:69
msgid "errors.invite-invalid"
msgstr "Invite invalid"
@@ -1274,7 +1325,7 @@ msgstr "Invite invalid"
msgid "errors.invite-invalid.info"
msgstr "This invite might be canceled or may be expired."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "LDAP authentication is disabled."
@@ -1322,7 +1373,7 @@ msgstr "Password should at least be 8 characters"
msgid "errors.paste-data-validation"
msgstr "Invalid data in clipboard"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "The profile is blocked"
@@ -1350,6 +1401,22 @@ msgstr "The member you try to assign does not exist."
msgid "errors.team-leave.owner-cant-leave"
msgstr "Owner can't leave team, you must reassign the owner role."
+#: src/app/main/data/tokens.cljs:150, src/app/main/data/tokens.cljs:180
+msgid "errors.token-set-already-exists"
+msgstr "A set with the same name already exists"
+
+#: src/app/main/data/tokens.cljs:
+msgid "errors.token-set-doesnt-exists"
+msgstr "Can't duplicate an unkown set"
+
+#: src/app/main/data/tokens.cljs:245
+msgid "errors.token-set-exists-on-drop"
+msgstr "Cannot complete drop, a set with same name already exists at path."
+
+#: src/app/main/data/tokens.cljs:79
+msgid "errors.token-theme-already-exists"
+msgstr "Theme Option with the same name exists"
+
#: src/app/main/data/media.cljs:71
msgid "errors.unexpected-error"
msgstr "An unexpected error occurred."
@@ -1394,12 +1461,11 @@ msgstr "Unexpected error on validating"
msgid "errors.webhooks.unexpected-status"
msgstr "Unexpected status %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "Email or password is incorrect."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Old password is incorrect"
@@ -1447,11 +1513,11 @@ msgstr "Here to help with your technical queries."
msgid "feedback.twitter-title"
msgstr "X support account"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "An error has occurred"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Blur"
@@ -1459,31 +1525,31 @@ msgstr "Blur"
msgid "inspect.attributes.blur.value"
msgstr "Value"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Fill"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Download source image"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Height"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Width"
@@ -1522,25 +1588,15 @@ msgstr "Top"
msgid "inspect.attributes.layout.width"
msgstr "Width"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Shadow"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Size and position"
-#: src/app/main/ui/viewer/inspect/attributes/variant.cljs:40
-msgid "inspect.attributes.variant.variant"
-msgstr "Variant properties"
-
-msgid "inspect.attributes.variant.component"
-msgstr "Component properties"
-
-msgid "inspect.attributes.variant.copy"
-msgstr "Copy properties"
-
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Stroke"
@@ -1577,142 +1633,165 @@ msgstr "Solid"
msgid "inspect.attributes.stroke.width"
msgstr "Width"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Typography"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Font Family"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Font Size"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Font Style"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Font Weight"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Letter Spacing"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Line Height"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Text Decoration"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "None"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Strikethrough"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Underline"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Text Transform"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Lower Case"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "None"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Title Case"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "Unset"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Upper Case"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/attributes/variant.cljs:44
+msgid "inspect.attributes.variant"
+msgstr "Variant properties"
+
+msgid "inspect.attributes.variants"
+msgstr "Variants properties"
+
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr "If you want to know more about design inspect visit Penpot's help center"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "More info about inspect"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr "Select a shape, board or group to inspect their properties and code"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:61
+msgid "inspect.subtitle.copy"
+msgstr "Copy"
+
+#: src/app/main/ui/inspect/right_sidebar.cljs:57
+msgid "inspect.subtitle.main"
+msgstr "Main component"
+
+#: src/app/main/ui/inspect/right_sidebar.cljs:59
+msgid "inspect.subtitle.variant"
+msgstr "Variant"
+
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Code"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Circle"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Component"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Curve"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Board"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Group"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Image"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Mask"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s Selected"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Path"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Rectangle"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Text"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Info"
+#: src/app/main/ui/dashboard/comments.cljs:95
+msgid "label.mark-all-as-read"
+msgstr "Mark all as read"
+
#: src/app/main/ui/workspace/main_menu.cljs:162
msgid "label.shortcuts"
msgstr "Shortcuts"
@@ -1729,31 +1808,15 @@ msgstr "Access tokens"
msgid "labels.active"
msgstr "Active"
-#: src/app/main/ui/dashboard/templates.cljs
-msgid "labels.show"
-msgstr "Show"
-
-#: src/app/main/ui/dashboard/templates.cljs
-msgid "labels.hide"
-msgstr "Hide"
-
-#: src/app/main/ui/dashboard/templates.cljs
-msgid "dashboard.libraries-and-templates.description"
-msgstr "Here you have some Libraries and templates you can add to your project"
-
-#: src/app/main/ui/dashboard/templates.cljs
-msgid "dashboard.template.add-to-project"
-msgstr "Add to your project"
-
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.add"
msgstr "Add"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Add custom font"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.adding"
msgstr "Adding..."
@@ -1765,7 +1828,7 @@ msgstr "Admin"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:64, src/app/main/ui/workspace/tokens/context_menu.cljs:102, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "All"
@@ -1787,7 +1850,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Bad Gateway"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Cancel"
@@ -1795,27 +1858,27 @@ msgstr "Cancel"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Close"
-#: src/app/main/ui/workspace/tokens/sets.cljs:180
+#: src/app/main/ui/workspace/tokens/sets.cljs:219
msgid "labels.collapse"
msgstr "Collapse"
-#: src/app/main/ui/comments.cljs:825
+#: src/app/main/ui/comments.cljs:881
msgid "labels.comment"
msgstr "Comment"
-#: src/app/main/ui/comments.cljs:829
+#: src/app/main/ui/comments.cljs:885
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:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Comments"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Community"
@@ -1823,7 +1886,7 @@ msgstr "Community"
msgid "labels.confirm-password"
msgstr "Confirm password"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Continue"
@@ -1835,11 +1898,7 @@ msgstr "Continue with"
msgid "labels.continue-with-penpot"
msgstr "You can continue with a Penpot account"
-#: src/app/main/ui/dashboard/team.cljs:683
-msgid "labels.copy-invitation-link"
-msgstr "Copy link"
-
-#: src/app/main/ui/components/copy_button.cljs:42
+#: src/app/main/ui/components/copy_button.cljs:41
msgid "labels.copy"
msgstr "Copy"
@@ -1847,11 +1906,15 @@ msgstr "Copy"
msgid "labels.copy-color"
msgstr "Copy color"
+#: src/app/main/ui/dashboard/team.cljs:683
+msgid "labels.copy-invitation-link"
+msgstr "Copy link"
+
#: src/app/main/ui/static.cljs:62
msgid "labels.copyright"
msgstr "Kaleidos @2024"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Create"
@@ -1871,15 +1934,19 @@ msgstr "Custom fonts"
msgid "labels.dashboard"
msgstr "Dashboard"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Delete"
-#: src/app/main/ui/comments.cljs:920
+#: src/app/main/ui/workspace/tokens/sets_context_menu.cljs
+msgid "labels.duplicate"
+msgstr "Duplicate"
+
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Delete comment"
-#: src/app/main/ui/comments.cljs:843
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Delete thread"
@@ -1899,18 +1966,21 @@ msgstr "Development"
msgid "labels.director"
msgstr "Director"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "Discard"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Drafts"
-#: src/app/main/ui/comments.cljs:916, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Edit"
+msgid "labels.error"
+msgstr "Error"
+
#, unused
msgid "labels.edit-file"
msgstr "Edit file"
@@ -1927,14 +1997,10 @@ msgstr "Event"
msgid "labels.expired-invitation"
msgstr "Expired"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Export"
-#: src/app/main/ui/exports/assets.cljs:177
-msgid "labels.import"
-msgstr "Import"
-
#: src/app/main/ui/settings/feedback.cljs:48
msgid "labels.feedback-disabled"
msgstr "Feedback disabled"
@@ -1947,7 +2013,7 @@ msgstr "Feedback sent"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Font Family"
@@ -1955,11 +2021,11 @@ msgstr "Font Family"
msgid "labels.font-providers"
msgstr "Font providers"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Styles"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Fonts"
@@ -1971,11 +2037,11 @@ msgstr "CEO or Founder"
msgid "labels.freelancer"
msgstr "Freelancer"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Github repository"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Give feedback"
@@ -1987,15 +2053,19 @@ msgstr "Go back"
msgid "labels.graphic-design"
msgstr "Graphic design"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Help Center"
-#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/dashboard/templates.cljs:90
+msgid "labels.hide"
+msgstr "Hide"
+
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Hide resolved comments"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:355
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:413
msgid "labels.import"
msgstr "Import"
@@ -2003,7 +2073,7 @@ msgstr "Import"
msgid "labels.inactive"
msgstr "Inactive"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Installed fonts"
@@ -2029,11 +2099,11 @@ msgstr "Invitations"
msgid "labels.language"
msgstr "Language"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Libraries & Templates"
-#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:114, src/app/main/ui/dashboard/grid.cljs:133, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:62, src/app/main/ui/ds/product/loader.cljs:52, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:126, src/app/main/ui.cljs:67, src/app/main/ui.cljs:105, src/app/main/ui.cljs:124
+#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:115, src/app/main/ui/dashboard/grid.cljs:134, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:98, src/app/main/ui/ds/product/loader.cljs:85, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:118, src/app/main/ui.cljs:66, src/app/main/ui.cljs:104, src/app/main/ui.cljs:123
msgid "labels.loading"
msgstr "Loading…"
@@ -2045,7 +2115,7 @@ msgstr "Log in or sign up"
msgid "labels.login"
msgstr "Login"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Logout"
@@ -2061,7 +2131,7 @@ msgstr "Member"
msgid "labels.members"
msgstr "Members"
-#: src/app/main/ui/comments.cljs:558
+#: src/app/main/ui/comments.cljs:583
msgid "labels.mention"
msgstr "Mention"
@@ -2069,11 +2139,11 @@ msgstr "Mention"
msgid "labels.new-password"
msgstr "New password"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Next"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "You're all caught up! New comment notifications will appear here."
@@ -2082,9 +2152,8 @@ msgid "labels.no-invitations"
msgstr "No pending invitations."
#: src/app/main/ui/dashboard/team.cljs:742
-#, markdown
-msgid "labels.no-invitations-hint"
-msgstr "Click the **Invite people** button to invite people to this team."
+msgid "labels.no-invitations-gather-people"
+msgstr "Gather your people and build great things together."
#: src/app/main/ui/static.cljs
#, unused
@@ -2099,7 +2168,7 @@ msgstr "Oops!"
msgid "labels.notifications"
msgstr "Notifications"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "1 file"
@@ -2130,7 +2199,7 @@ msgstr "Old password"
msgid "labels.only-yours"
msgstr "Only yours"
-#: src/app/main/ui/comments.cljs:545, src/app/main/ui/comments.cljs:835, src/app/main/ui/comments.cljs:899, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:295, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:324
+#: src/app/main/ui/comments.cljs:891, src/app/main/ui/comments.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:293, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:322
msgid "labels.options"
msgstr "Options"
@@ -2158,7 +2227,7 @@ msgstr "Password"
msgid "labels.pending-invitation"
msgstr "Pending"
-#: src/app/main/ui/comments.cljs:635
+#: src/app/main/ui/comments.cljs:678
msgid "labels.post"
msgstr "Post"
@@ -2182,7 +2251,11 @@ msgstr "Profile"
msgid "labels.projects"
msgstr "Projects"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/data/common.cljs:87
+msgid "labels.refresh"
+msgstr "Refresh"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Release notes"
@@ -2200,7 +2273,7 @@ msgstr "Remove"
msgid "labels.remove-member"
msgstr "Remove member"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Rename"
@@ -2208,23 +2281,23 @@ msgstr "Rename"
msgid "labels.rename-team"
msgstr "Rename team"
-#: src/app/main/ui/comments.cljs:598
+#: src/app/main/ui/comments.cljs:641
msgid "labels.replies"
msgstr "replies"
-#: src/app/main/ui/comments.cljs:603
+#: src/app/main/ui/comments.cljs:646
msgid "labels.replies.new"
msgstr "new replies"
-#: src/app/main/ui/comments.cljs:597
+#: src/app/main/ui/comments.cljs:640
msgid "labels.reply"
msgstr "reply"
-#: src/app/main/ui/comments.cljs:602
+#: src/app/main/ui/comments.cljs:645
msgid "labels.reply.new"
msgstr "new reply"
-#: src/app/main/ui/comments.cljs:673
+#: src/app/main/ui/comments.cljs:721
msgid "labels.reply.thread"
msgstr "Reply"
@@ -2244,15 +2317,15 @@ msgstr "Retry"
msgid "labels.role"
msgstr "Role"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Save"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "Search"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Search font"
@@ -2276,7 +2349,7 @@ 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:252
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:247
msgid "labels.sets"
msgstr "Sets"
@@ -2284,6 +2357,9 @@ msgstr "Sets"
msgid "labels.settings"
msgstr "Settings"
+msgid "subscription.labels"
+msgstr "Subscription"
+
#: src/app/main/ui/viewer/header.cljs:206
msgid "labels.share"
msgstr "Share"
@@ -2296,7 +2372,11 @@ msgstr "Share prototype"
msgid "labels.shared-libraries"
msgstr "Libraries"
-#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/dashboard/templates.cljs:86
+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
msgid "labels.show-all-comments"
msgstr "Show all comments"
@@ -2304,11 +2384,11 @@ msgstr "Show all comments"
msgid "labels.show-comments-list"
msgstr "Show comments list"
-#: src/app/main/ui/workspace/comments.cljs:66, src/app/main/ui/workspace/comments.cljs:136
+#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139
msgid "labels.show-mentions"
msgstr "Show only your mentions"
-#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Show only your comments"
@@ -2336,14 +2416,18 @@ msgstr "Team Leader"
msgid "labels.team-member"
msgstr "Team member"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:183
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:182
msgid "labels.themes"
msgstr "Themes"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Tutorials"
+#: src/app/main/ui/workspace/tokens/errors.cljs:49
+msgid "labels.unknown-error"
+msgstr "Unknown error"
+
#: src/app/main/ui/dashboard/file_menu.cljs:264
msgid "labels.unpublish-multi-files"
msgstr "Unpublish %s files"
@@ -2356,15 +2440,15 @@ msgstr "Update"
msgid "labels.update-team"
msgstr "Update team"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Upload"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Upload custom fonts"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Uploading…"
@@ -2380,7 +2464,7 @@ msgstr "Viewer"
msgid "labels.webhooks"
msgstr "Webhooks"
-#: src/app/main/ui/comments.cljs:764
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Write new comment"
@@ -2388,7 +2472,7 @@ msgstr "Write new comment"
msgid "labels.you"
msgstr "(you)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Your account"
@@ -2396,27 +2480,103 @@ msgstr "Your account"
msgid "labels.youtube"
msgstr "YouTube"
-#: src/app/main/ui/workspace/tokens/errors.cljs
-msgid "labels.unknown-error"
-msgstr "Unknown error"
+#: 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."
-#: src/app/main/ui/workspace/colorpicker.cljs:477, src/app/main/ui/workspace/colorpicker.cljs:478, src/app/main/ui/workspace/colorpicker.cljs:480
+#: src/app/main/ui/ds/product/loader.cljs:20
+msgid "loader.tips.01.title"
+msgstr "Reusable Components"
+
+#: src/app/main/ui/ds/product/loader.cljs:23
+msgid "loader.tips.02.message"
+msgstr "Work with your team live, share feedback instantly."
+
+#: src/app/main/ui/ds/product/loader.cljs:22
+msgid "loader.tips.02.title"
+msgstr "Real-time Collaboration"
+
+#: src/app/main/ui/ds/product/loader.cljs:25
+msgid "loader.tips.03.message"
+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"
+
+#: src/app/main/ui/ds/product/loader.cljs:27
+msgid "loader.tips.04.message"
+msgstr "Get CSS and SVG code directly from your designs."
+
+#: src/app/main/ui/ds/product/loader.cljs:26
+msgid "loader.tips.04.title"
+msgstr "Export to Code"
+
+#: src/app/main/ui/ds/product/loader.cljs:29
+msgid "loader.tips.05.message"
+msgstr "Share assets and styles to maintain consistency."
+
+#: src/app/main/ui/ds/product/loader.cljs:28
+msgid "loader.tips.05.title"
+msgstr "Design Libraries"
+
+#: src/app/main/ui/ds/product/loader.cljs:31
+msgid "loader.tips.06.message"
+msgstr "Bring your ideas to life with animations and transitions."
+
+#: src/app/main/ui/ds/product/loader.cljs:30
+msgid "loader.tips.06.title"
+msgstr "Interactive Prototypes"
+
+#: src/app/main/ui/ds/product/loader.cljs:33
+msgid "loader.tips.07.message"
+msgstr "Penpot uses SVG and CSS for seamless development."
+
+#: src/app/main/ui/ds/product/loader.cljs:32
+msgid "loader.tips.07.title"
+msgstr "Web-Standard Formats"
+
+#: src/app/main/ui/ds/product/loader.cljs:35
+msgid "loader.tips.08.message"
+msgstr "Speed up your workflow with handy shortcuts like Shift + A for Auto Layout."
+
+#: src/app/main/ui/ds/product/loader.cljs:34
+msgid "loader.tips.08.title"
+msgstr "Keyboard Shortcuts"
+
+#: src/app/main/ui/ds/product/loader.cljs:37
+msgid "loader.tips.09.message"
+msgstr "Choose the theme that suits your style."
+
+#: src/app/main/ui/ds/product/loader.cljs:36
+msgid "loader.tips.09.title"
+msgstr "Dark & Light Mode"
+
+#: src/app/main/ui/ds/product/loader.cljs:39
+msgid "loader.tips.10.message"
+msgstr "Extend Penpot with community-built plugins for extra functionality."
+
+#: src/app/main/ui/ds/product/loader.cljs:38
+msgid "loader.tips.10.title"
+msgstr "Plugins Support"
+
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
msgid "media.choose-image"
msgstr "Choose image"
-#: src/app/main/ui/workspace/colorpicker.cljs:245
+#: src/app/main/ui/workspace/colorpicker.cljs:241
msgid "media.gradient"
msgstr "Gradient"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "Image"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:77
+#: src/app/main/ui/inspect/attributes/common.cljs:77
msgid "media.image.short"
msgstr "img"
-#: src/app/main/ui/workspace/colorpicker.cljs:470
+#: src/app/main/ui/workspace/colorpicker.cljs:467
msgid "media.keep-aspect-ratio"
msgstr "Keep aspect ratio"
@@ -2434,7 +2594,7 @@ msgstr "Loading image…"
msgid "media.radial"
msgstr "Radial"
-#: src/app/main/ui/workspace/colorpicker.cljs:243
+#: src/app/main/ui/workspace/colorpicker.cljs:239
msgid "media.solid"
msgstr "Solid"
@@ -2483,7 +2643,7 @@ msgstr "Change email"
msgid "modals.change-email.title"
msgstr "Change your email"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Copy token"
@@ -2499,7 +2659,7 @@ msgstr "Name"
msgid "modals.create-access-token.name.placeholder"
msgstr "The name can help to know what's the token for"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Create token"
@@ -2523,15 +2683,15 @@ msgstr "Payload URL"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://example.com/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Delete token"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "Are you sure you want to delete this token?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Delete token"
@@ -2551,25 +2711,25 @@ msgstr "By removing your account you’ll lose all your current projects and arc
msgid "modals.delete-account.title"
msgstr "Are you sure you want to delete your account?"
-#: src/app/main/ui/comments.cljs:813
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Delete conversation"
-#: src/app/main/ui/comments.cljs:812
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Are you sure you want to delete this conversation? All comments in this "
"thread will be deleted."
-#: src/app/main/ui/comments.cljs:811
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Delete conversation"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
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:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Delete annotation"
@@ -2597,31 +2757,31 @@ msgstr "Are you sure you want to delete %s files?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Deleting %s files"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Are you sure you want to delete this font style? It will not load if is "
"used in a file."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Deleting font style"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Are you sure you want to delete this font? It will not load if is used in a "
"file."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Deleting font"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Are you sure you want to delete this page?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Delete page"
@@ -2835,15 +2995,15 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "New team owner"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Publish"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
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:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Publish empty library"
@@ -2898,21 +3058,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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Update"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Cancel"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Update a component in a shared library"
@@ -3072,27 +3232,27 @@ msgstr "Video tutorials"
msgid "onboarding-v2.before-start.title"
msgstr "Before you start"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Subscribe to the Penpot newsletter to stay up to date with the product "
"development progress and news."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr "Send me news about Penpot (blog posts, video tutorials, streamings...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "We care about privacy, here you can read our "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"We will only send relevant emails to you. You can unsubscribe at any time "
"via the unsubscribe link in any of our newsletters."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr "Send me product updates (new features, releases, fixes...)."
@@ -3189,17 +3349,17 @@ msgstr "You will be able to create a team later."
msgid "onboarding.newsletter.accept"
msgstr "Yes, subscribe"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"Your subscription request has been sent, we will send you an email to "
"confirm it."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Privacy Policy."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Want to receive Penpot news?"
@@ -3392,7 +3552,7 @@ msgstr "Go to login"
msgid "settings.detach"
msgstr "Detach"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, 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:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Mixed"
@@ -3579,6 +3739,7 @@ msgid "shortcuts.copy-link"
msgstr "Copy link"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106
+#, unused
msgid "shortcuts.copy-props"
msgstr "Copy properties"
@@ -3594,7 +3755,7 @@ msgstr "Create new"
msgid "shortcuts.cut"
msgstr "Cut"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Zoom out"
@@ -3694,7 +3855,7 @@ msgstr "Distribute horizontally"
msgid "shortcuts.hide-ui"
msgstr "Show / Hide UI"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Zoom in"
@@ -3871,10 +4032,12 @@ msgid "shortcuts.paste"
msgstr "Paste"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111
+#, unused
msgid "shortcuts.paste-props"
msgstr "Paste properties"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:604
+#, unused
msgid "shortcuts.plugins"
msgstr "Plugins manager"
@@ -4086,15 +4249,15 @@ msgstr "Zoom to selected"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Font Providers - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Fonts - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Projects - %s - Penpot"
@@ -4102,7 +4265,7 @@ msgstr "Projects - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Search - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Shared Libraries - %s - Penpot"
@@ -4110,7 +4273,7 @@ msgstr "Shared Libraries - %s - Penpot"
msgid "title.default"
msgstr "Penpot - Design Freedom for Teams"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "Profile - Access tokens"
@@ -4118,7 +4281,7 @@ msgstr "Profile - Access tokens"
msgid "title.settings.feedback"
msgstr "Give feedback - Penpot"
-#: src/app/main/ui/settings/notifications.cljs:64
+#: src/app/main/ui/settings/notifications.cljs:45
msgid "title.settings.notifications"
msgstr "Notifications - Penpot"
@@ -4134,6 +4297,75 @@ msgstr "Password - Penpot"
msgid "title.settings.profile"
msgstr "Profile - Penpot"
+msgid "subscription.settings.section-plan"
+msgstr "Your subscription"
+
+msgid "subscription.settings.other-plans"
+msgstr "Other penpot plans"
+
+msgid "subscription.settings.professional"
+msgstr "Professional"
+
+msgid "subscription.settings.unlimited"
+msgstr "Unlimited"
+
+msgid "subscription.settings.unlimited-trial"
+msgstr "Unlimited (trial)"
+
+msgid "subscription.settings.enterprise"
+msgstr "Enterprise"
+
+msgid "subscription.settings.support-us-since"
+msgstr "You support us since %s"
+
+msgid "subscription.settings.member-since"
+msgstr "Penpot member since %s"
+
+msgid "subscription.settings.price-editor-month"
+msgstr "editor per month"
+
+msgid "subscription.settings.price-organization-month"
+msgstr "organization per month"
+
+msgid "subscription.settings.professional.projects-files"
+msgstr "Unlimited projects, files and drafts"
+
+msgid "subscription.settings.professional.teams-editors"
+msgstr "Unlimited teams of up to 8 editors"
+
+msgid "subscription.settings.professional.storage"
+msgstr "10GB of storage and 7-day autosave versions"
+
+msgid "subscription.settings.benefits.all-professional-benefits"
+msgstr "All Professional plan benefits and:"
+
+msgid "subscription.settings.benefits.all-unlimited-benefits"
+msgstr "All Unlimited plan benefits and:"
+
+msgid "subscription.settings.unlimited.teams"
+msgstr "Unlimited teams, no matter your team size"
+
+msgid "subscription.settings.unlimited.bill"
+msgstr "Capped monthly bill"
+
+msgid "subscription.settings.unlimited.storage"
+msgstr "25GB of storage and 30-day autosave versions and file backup"
+
+msgid "subscription.settings.ulimited.try-it-free"
+msgstr "Try it free for 14 days"
+
+msgid "subscription.settings.manage-your-subscription"
+msgstr "Manage your subscription"
+
+msgid "subscription.settings.enterprise.support"
+msgstr "Dedicated support"
+
+msgid "subscription.settings.enterprise.security"
+msgstr "Advanced security"
+
+msgid "subscription.settings.enterprise.logs"
+msgstr "Activity logs"
+
#: src/app/main/ui/dashboard/team.cljs:779
msgid "title.team-invitations"
msgstr "Invitations - %s - Penpot"
@@ -4154,7 +4386,7 @@ msgstr "Webhooks - %s - Penpot"
msgid "title.viewer"
msgstr "%s - View mode - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -4254,23 +4486,20 @@ msgstr "Distribute vertical spacing (%s)"
msgid "workspace.align.vtop"
msgstr "Align top (%s)"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:174, src/app/main/ui/workspace/sidebar/assets.cljs:179
+#: src/app/main/ui/workspace/sidebar/assets.cljs:171
msgid "workspace.assets.add-library"
msgstr "Add library"
-msgid "workspace.assets.manage-library"
-msgstr "Manage library"
-
#: src/app/main/ui/workspace/sidebar/assets.cljs
#, unused
msgid "workspace.assets.assets"
msgstr "Assets"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "All assets"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Colors"
@@ -4278,14 +4507,17 @@ msgstr "Colors"
msgid "workspace.assets.colors.add-color"
msgstr "Add color"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Components"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:510
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:520
msgid "workspace.assets.components.add-component"
msgstr "Add component"
+msgid "workspace.assets.components.num-variants"
+msgstr "%s Variants"
+
#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:127
msgid "workspace.assets.create-group"
msgstr "Create a group"
@@ -4294,15 +4526,15 @@ msgstr "Create a group"
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:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Delete"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Duplicate"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "Duplicate main"
@@ -4310,19 +4542,19 @@ msgstr "Duplicate main"
msgid "workspace.assets.edit"
msgstr "Edit"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:195
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
msgid "workspace.assets.filter"
msgstr "Filter"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Graphics"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:505
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:515
msgid "workspace.assets.grid-view"
msgstr "Grid view"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Group"
@@ -4330,23 +4562,27 @@ msgstr "Group"
msgid "workspace.assets.group-name"
msgstr "Group name"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:501
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:511
msgid "workspace.assets.list-view"
msgstr "List view"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "local library"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets.cljs:176
+msgid "workspace.assets.manage-library"
+msgstr "Manage library"
+
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "No assets found"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "Open library file"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Rename"
@@ -4354,7 +4590,7 @@ msgstr "Rename"
msgid "workspace.assets.rename-group"
msgstr "Rename group"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Search assets"
@@ -4370,17 +4606,17 @@ msgstr[1] "%s items selected"
msgid "workspace.assets.shared-library"
msgstr "Shared library"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:226
+#: 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:211
+#: src/app/main/ui/workspace/sidebar/assets.cljs:201
msgid "workspace.assets.sort"
msgstr "Sort"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Typographies"
@@ -4393,27 +4629,27 @@ msgstr "Add typography"
msgid "workspace.assets.typography.font-id"
msgstr "Font"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Size"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Variant"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Go to style library file to edit"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Letter Spacing"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Line Height"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -4421,7 +4657,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Text styles"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Text Transform"
@@ -4429,55 +4665,55 @@ msgstr "Text Transform"
msgid "workspace.assets.ungroup"
msgstr "Ungroup"
-#: src/app/main/ui/workspace/context_menu.cljs:748
+#: src/app/main/ui/workspace/context_menu.cljs:764
msgid "workspace.context-menu.grid-cells.area"
msgstr "Create area"
-#: src/app/main/ui/workspace/context_menu.cljs:751
+#: src/app/main/ui/workspace/context_menu.cljs:767
msgid "workspace.context-menu.grid-cells.create-board"
msgstr "Create board"
-#: src/app/main/ui/workspace/context_menu.cljs:743
+#: src/app/main/ui/workspace/context_menu.cljs:759
msgid "workspace.context-menu.grid-cells.merge"
msgstr "Merge cells"
-#: src/app/main/ui/workspace/context_menu.cljs:706
+#: src/app/main/ui/workspace/context_menu.cljs:722
msgid "workspace.context-menu.grid-track.column.add-after"
msgstr "Add 1 column to the right"
-#: src/app/main/ui/workspace/context_menu.cljs:705
+#: src/app/main/ui/workspace/context_menu.cljs:721
msgid "workspace.context-menu.grid-track.column.add-before"
msgstr "Add 1 column to the left"
-#: src/app/main/ui/workspace/context_menu.cljs:707
+#: src/app/main/ui/workspace/context_menu.cljs:723
msgid "workspace.context-menu.grid-track.column.delete"
msgstr "Delete column"
-#: src/app/main/ui/workspace/context_menu.cljs:708
+#: src/app/main/ui/workspace/context_menu.cljs:724
msgid "workspace.context-menu.grid-track.column.delete-shapes"
msgstr "Delete column and shapes"
-#: src/app/main/ui/workspace/context_menu.cljs:704
+#: src/app/main/ui/workspace/context_menu.cljs:720
msgid "workspace.context-menu.grid-track.column.duplicate"
msgstr "Duplicate column"
-#: src/app/main/ui/workspace/context_menu.cljs:713
+#: src/app/main/ui/workspace/context_menu.cljs:729
msgid "workspace.context-menu.grid-track.row.add-after"
msgstr "Add 1 row below"
-#: src/app/main/ui/workspace/context_menu.cljs:712
+#: src/app/main/ui/workspace/context_menu.cljs:728
msgid "workspace.context-menu.grid-track.row.add-before"
msgstr "Add 1 row above"
-#: src/app/main/ui/workspace/context_menu.cljs:714
+#: src/app/main/ui/workspace/context_menu.cljs:730
msgid "workspace.context-menu.grid-track.row.delete"
msgstr "Delete row"
-#: src/app/main/ui/workspace/context_menu.cljs:715
+#: src/app/main/ui/workspace/context_menu.cljs:731
msgid "workspace.context-menu.grid-track.row.delete-shapes"
msgstr "Delete row and shapes"
-#: src/app/main/ui/workspace/context_menu.cljs:711
+#: src/app/main/ui/workspace/context_menu.cljs:727
msgid "workspace.context-menu.grid-track.row.duplicate"
msgstr "Duplicate row"
@@ -4485,11 +4721,11 @@ msgstr "Duplicate row"
msgid "workspace.focus.focus-mode"
msgstr "Focus mode"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Focus off"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Focus on"
@@ -4647,37 +4883,36 @@ msgstr "Switch to light theme"
msgid "workspace.header.menu.undo"
msgstr "Undo"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Reset"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Error on saving"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Saved"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Saving"
-#: src/app/main/ui/workspace/right_header.cljs:255
+#: src/app/main/ui/workspace/right_header.cljs:221
msgid "workspace.header.share"
msgstr "Share"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Unsaved changes"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "View mode (%s)"
-#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "Zoom"
@@ -4689,7 +4924,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:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Zoom to fit all"
@@ -4697,46 +4932,46 @@ msgstr "Zoom to fit all"
msgid "workspace.header.zoom-full-screen"
msgstr "Full screen"
-#: src/app/main/ui/workspace/right_header.cljs:136
+#: src/app/main/ui/workspace/right_header.cljs:104
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:607
+#: 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:616
msgid "workspace.layout_grid.editor.options.edit-grid"
msgstr "Edit grid"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
msgid "workspace.layout_grid.editor.options.exit"
msgstr "Exit"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:478
-msgid "workspace.layout_grid.editor.padding.expand"
-msgstr "Show 4 sided padding options"
-
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:337
-msgid "workspace.layout_grid.editor.padding.vertical"
-msgstr "Vertical padding"
-
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:351
-msgid "workspace.layout_grid.editor.padding.horizontal"
-msgstr "Horizontal padding"
-
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:396
-msgid "workspace.layout_grid.editor.padding.top"
-msgstr "Top padding"
-
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:411
-msgid "workspace.layout_grid.editor.padding.right"
-msgstr "Right padding"
-
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:426, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:432
msgid "workspace.layout_grid.editor.padding.bottom"
msgstr "Bottom padding"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:439
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
+msgid "workspace.layout_grid.editor.padding.expand"
+msgstr "Show 4 sided padding options"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:351, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:358
+msgid "workspace.layout_grid.editor.padding.horizontal"
+msgstr "Horizontal padding"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:447
msgid "workspace.layout_grid.editor.padding.left"
msgstr "Left padding"
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:411, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:417
+msgid "workspace.layout_grid.editor.padding.right"
+msgstr "Right padding"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:396, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:402
+msgid "workspace.layout_grid.editor.padding.top"
+msgstr "Top padding"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:337, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:343
+msgid "workspace.layout_grid.editor.padding.vertical"
+msgstr "Vertical padding"
+
#: src/app/main/ui/workspace/viewport/grid_layout_editor.cljs:59
msgid "workspace.layout_grid.editor.title"
msgstr "Editing grid"
@@ -4749,7 +4984,7 @@ msgstr "Done"
msgid "workspace.layout_grid.editor.top-bar.locate"
msgstr "Locate"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1321
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
msgstr "Locate grid layout"
@@ -4758,7 +4993,7 @@ msgstr "Locate grid layout"
msgid "workspace.libraries.add"
msgstr "Add"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s colors"
@@ -4788,43 +5023,43 @@ msgstr "Recent colors"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "RGB Complementary"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Save color style"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:374
+#: src/app/main/ui/workspace/libraries.cljs:371
msgid "workspace.libraries.empty.add-some"
msgstr "Or add some of these to try:"
-#: src/app/main/ui/workspace/libraries.cljs:368
+#: src/app/main/ui/workspace/libraries.cljs:365
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:372
+#: src/app/main/ui/workspace/libraries.cljs:369
msgid "workspace.libraries.empty.some-templates"
msgstr "some templates in here"
-#: src/app/main/ui/workspace/libraries.cljs:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "File library"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: src/app/main/ui/workspace/libraries.cljs:103, src/app/main/ui/workspace/libraries.cljs:128
msgid "workspace.libraries.graphics"
msgstr "%s graphics"
-#: src/app/main/ui/workspace/libraries.cljs:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "LIBRARIES IN THIS FILE"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "LIBRARIES"
@@ -4833,63 +5068,64 @@ msgstr "LIBRARIES"
msgid "workspace.libraries.library"
msgstr "LIBRARY"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "LIBRARY UPDATES"
-#: src/app/main/ui/workspace/libraries.cljs:363
+#: src/app/main/ui/workspace/libraries.cljs:360
msgid "workspace.libraries.loading"
msgstr "Loading…"
#: src/app/main/ui/workspace/libraries.cljs:387
+#, unused
msgid "workspace.libraries.more-templates"
msgstr "You can look for "
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "There are no Shared Libraries that need update"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "No matches found for “%s“"
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Search shared libraries"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "SHARED LIBRARIES"
-#: src/app/main/ui/workspace/libraries.cljs:355
+#: src/app/main/ui/workspace/libraries.cljs:352
msgid "workspace.libraries.shared-library-btn"
msgstr "Connect library"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Multiple typographies"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Unlink all typographies"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:326
+#: src/app/main/ui/workspace/libraries.cljs:323
msgid "workspace.libraries.unlink-library-btn"
msgstr "Disconnect library"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Update"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "see all changes"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "UPDATES"
@@ -4925,39 +5161,39 @@ msgstr "Toggle blur"
msgid "workspace.options.canvas-background"
msgstr "Canvas background"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Clip content"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Component"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "Annotation"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "Copy"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "Create an annotation"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Edit an annotation"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Main"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:416
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
msgid "workspace.options.component.swap"
msgstr "Swap component"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:460
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
msgid "workspace.options.component.swap.empty"
msgstr "There are no assets in this library yet"
@@ -5005,7 +5241,7 @@ msgstr "Top & Bottom"
msgid "workspace.options.design"
msgstr "Design"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Export"
@@ -5014,21 +5250,21 @@ msgstr "Export"
msgid "workspace.options.export-multiple"
msgstr "Export selection"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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:187
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188
msgid "workspace.options.export.add-export"
msgstr "Add export"
-#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:199, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:234
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235
msgid "workspace.options.export.remove-export"
msgstr "Remove export"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Suffix"
@@ -5036,7 +5272,7 @@ msgstr "Suffix"
msgid "workspace.options.exporting-complete"
msgstr "Export complete"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Exporting…"
@@ -5060,7 +5296,7 @@ msgstr "Add fill color"
msgid "workspace.options.fill.remove-fill"
msgstr "Remove fill"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:343, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:344
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:341
msgid "workspace.options.fit-content"
msgstr "Resize board to fit content"
@@ -5202,7 +5438,7 @@ msgstr "Guides"
msgid "workspace.options.guides.toggle-guide"
msgstr "Toggle guide"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Height"
@@ -5525,19 +5761,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:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Max.Height"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Max.Width"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Min.Height"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Min.Width"
@@ -5700,7 +5936,7 @@ msgstr "Collapse independent radius"
msgid "workspace.options.radius.show-single-corners"
msgstr "Show independent radius"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Recent"
@@ -5708,11 +5944,11 @@ msgstr "Recent"
msgid "workspace.options.retry"
msgstr "Retry"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Rotation"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Search font"
@@ -5736,7 +5972,7 @@ msgstr "Selection stroke"
msgid "workspace.options.shadow-options.add-shadow"
msgstr "Add shadow"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Blur"
@@ -5752,11 +5988,11 @@ msgstr "Drop shadow"
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Inner shadow"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
@@ -5764,7 +6000,7 @@ msgstr "Y"
msgid "workspace.options.shadow-options.remove-shadow"
msgstr "Remove shadow"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Spread"
@@ -5788,7 +6024,7 @@ msgstr "Toggle shadow"
msgid "workspace.options.show-fill-on-export"
msgstr "Show in exports"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Show in view mode"
@@ -5796,7 +6032,7 @@ msgstr "Show in view mode"
msgid "workspace.options.size"
msgstr "Size"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Size presets"
@@ -5937,11 +6173,11 @@ msgstr "Auto width"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Fixed"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Letter Spacing"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Line height"
@@ -6005,15 +6241,15 @@ msgstr "Uppercase"
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:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Width"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "X axis"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Y axis"
@@ -6189,136 +6425,135 @@ msgstr "'%s' PLUGIN IS INSTALLED FOR YOUR USER!"
msgid "workspace.plugins.try-out.try"
msgstr "TRY PLUGIN"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Add flex layout"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "Add grid layout"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1004, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1030
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1013, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039
msgid "workspace.shape.menu.add-layout"
msgstr "Add layout"
-#: src/app/main/ui/workspace/context_menu.cljs:265
-msgid "workspace.shape.menu.back"
-msgstr "Send to back"
-
-#: src/app/main/ui/workspace/context_menu.cljs:262
-msgid "workspace.shape.menu.backward"
-msgstr "Send backward"
-
-#: src/app/main/ui/workspace/context_menu.cljs:185
-msgid "workspace.shape.menu.copy"
-msgstr "Copy"
-
-#: src/app/main/ui/workspace/context_menu.cljs:203
-msgid "workspace.shape.menu.copy-css"
-msgstr "Copy as CSS"
-
-#: src/app/main/ui/workspace/context_menu.cljs:205
-msgid "workspace.shape.menu.copy-css-nested"
-msgstr "Copy as CSS (nested layers)"
-
-#: src/app/main/ui/workspace/context_menu.cljs:188
-msgid "workspace.shape.menu.copy-link"
-msgstr "Copy link"
-
-#: src/app/main/ui/workspace/context_menu.cljs:201
-msgid "workspace.shape.menu.copy-paste-as"
-msgstr "Copy/Paste as ..."
-
-#: src/app/main/ui/workspace/context_menu.cljs:213
-msgid "workspace.shape.menu.copy-props"
-msgstr "Copy properties"
-
-#: src/app/main/ui/workspace/context_menu.cljs:210
-msgid "workspace.shape.menu.copy-text"
-msgstr "Copy as text"
-
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
-msgid "workspace.shape.menu.create-annotation"
-msgstr "Create annotation"
-
-#: src/app/main/ui/workspace/context_menu.cljs:364
-msgid "workspace.shape.menu.create-artboard-from-selection"
-msgstr "Selection to board"
-
-#: src/app/main/ui/workspace/context_menu.cljs:561
-msgid "workspace.shape.menu.create-component"
-msgstr "Create component"
-
+#: src/app/main/ui/workspace/context_menu.cljs:587, src/app/main/ui/workspace/sidebar/assets/common.cljs:475, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:771
msgid "workspace.shape.menu.add-variant"
msgstr "Create variant"
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:769
msgid "workspace.shape.menu.add-variant-property"
msgstr "Add new property"
-msgid "workspace.shape.menu.remove-variant-property"
-msgstr "Remove property"
+#: src/app/main/ui/workspace/context_menu.cljs:266
+msgid "workspace.shape.menu.back"
+msgstr "Send to back"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:263
+msgid "workspace.shape.menu.backward"
+msgstr "Send backward"
+
+#: src/app/main/ui/workspace/context_menu.cljs:186
+msgid "workspace.shape.menu.copy"
+msgstr "Copy"
+
+#: src/app/main/ui/workspace/context_menu.cljs:204
+msgid "workspace.shape.menu.copy-css"
+msgstr "Copy as CSS"
+
+#: src/app/main/ui/workspace/context_menu.cljs:206
+msgid "workspace.shape.menu.copy-css-nested"
+msgstr "Copy as CSS (nested layers)"
+
+#: src/app/main/ui/workspace/context_menu.cljs:189
+msgid "workspace.shape.menu.copy-link"
+msgstr "Copy link"
+
+#: src/app/main/ui/workspace/context_menu.cljs:202
+msgid "workspace.shape.menu.copy-paste-as"
+msgstr "Copy/Paste as ..."
+
+#: src/app/main/ui/workspace/context_menu.cljs:214
+msgid "workspace.shape.menu.copy-props"
+msgstr "Copy properties"
+
+#: src/app/main/ui/workspace/context_menu.cljs:211
+msgid "workspace.shape.menu.copy-text"
+msgstr "Copy as text"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
+msgid "workspace.shape.menu.create-annotation"
+msgstr "Create annotation"
+
+#: src/app/main/ui/workspace/context_menu.cljs:366
+msgid "workspace.shape.menu.create-artboard-from-selection"
+msgstr "Selection to board"
+
+#: src/app/main/ui/workspace/context_menu.cljs:568
+msgid "workspace.shape.menu.create-component"
+msgstr "Create component"
+
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Create multiple components"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Cut"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Delete"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Delete flow start"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Detach instance"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Detach instances"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Difference"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Duplicate"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Edit"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Exclude"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Flatten"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Flip horizontal"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Flip vertical"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Flow start"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Bring forward"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Bring to front"
@@ -6327,107 +6562,111 @@ msgstr "Bring to front"
msgid "workspace.shape.menu.go-main"
msgstr "Go to main component file"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Group"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Hide"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Show / Hide UI"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Intersection"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Lock"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Mask"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Paste"
-#: src/app/main/ui/workspace/context_menu.cljs:217
+#: src/app/main/ui/workspace/context_menu.cljs:218
msgid "workspace.shape.menu.paste-props"
msgstr "Paste properties"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Path"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Remove flex layout"
-#: src/app/main/ui/workspace/context_menu.cljs:531
+#: src/app/main/ui/workspace/context_menu.cljs:535
msgid "workspace.shape.menu.remove-grid"
msgstr "Remove grid layout"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1022
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1031
msgid "workspace.shape.menu.remove-layout"
msgstr "Remove layout"
-#: src/app/main/ui/workspace/context_menu.cljs:312
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:856
+msgid "workspace.shape.menu.remove-variant-property"
+msgstr "Remove property"
+
+#: src/app/main/ui/workspace/context_menu.cljs:313
msgid "workspace.shape.menu.rename"
msgstr "Rename"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Reset overrides"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Restore main component"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Select layer"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Show"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Show in assets panel"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Show main component"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Remove thumbnail"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Set as thumbnail"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Transform to path"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Ungroup"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Union"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Unlock"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Unmask"
@@ -6436,7 +6675,7 @@ msgstr "Unmask"
msgid "workspace.shape.menu.update-components-in-bulk"
msgstr "Update main components"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Update main component"
@@ -6448,11 +6687,11 @@ msgstr "Collapse sidebar"
msgid "workspace.sidebar.expand"
msgstr "Expand sidebar"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "History"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Layers"
@@ -6488,7 +6727,7 @@ msgstr "Shapes"
msgid "workspace.sidebar.layers.texts"
msgstr "Texts"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Imported SVG Attributes"
@@ -6500,7 +6739,7 @@ msgstr "Pages"
msgid "workspace.sidebar.sitemap.add-page"
msgstr "Add page"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Sitemap"
@@ -6518,83 +6757,63 @@ msgstr "%s active themes"
msgid "workspace.token.add set"
msgstr "Add set"
-#: src/app/main/ui/workspace/tokens/token_pill.cljs:128
-msgid "workspace.token.applied-to"
-msgstr "Applied to"
-
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:341
-msgid "workspace.token.back-to-themes"
-msgstr "Back to theme list"
-
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:51
-msgid "workspace.token.create-new-theme"
-msgstr "Create your first theme now."
-
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:191, src/app/main/ui/workspace/tokens/sidebar.cljs:218
-msgid "workspace.token.create-one"
-msgstr "Create one."
-
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159, src/app/main/ui/workspace/tokens/modals/themes.cljs:237
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:63, src/app/main/ui/workspace/tokens/modals/themes.cljs:170, src/app/main/ui/workspace/tokens/modals/themes.cljs:279
msgid "workspace.token.add-new-theme"
msgstr "Add new theme"
-#: src/app/main/ui/workspace/tokens/form.cljs:431
-msgid "workspace.token.create-token"
-msgstr "Create new %s token"
+#: src/app/main/ui/workspace/tokens/sets_context_menu.cljs:54
+msgid "workspace.token.add-set-to-group"
+msgstr "Add set to this group"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:234
-msgid "workspace.token.delete"
-msgstr "Delete token"
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:136
+msgid "workspace.token.applied-to"
+msgstr "Applied to"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:151
-msgid "workspace.token.delete-theme-title"
-msgstr "Delete theme"
-
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:231
-msgid "workspace.token.duplicate"
-msgstr "Duplicate token"
-
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:235
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:257
msgid "workspace.token.axis"
msgstr "Axis"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:235
-msgid "workspace.token.size"
-msgstr "Size"
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:391
+msgid "workspace.token.back-to-themes"
+msgstr "Back to theme list"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:235
-msgid "workspace.token.min-size"
-msgstr "Min. size"
-
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:235
-msgid "workspace.token.max-size"
-msgstr "Max. size"
-
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:235
-msgid "workspace.token.gaps"
-msgstr "Gaps"
-
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:235
-msgid "workspace.token.paddings"
-msgstr "Paddings"
-
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:235
-msgid "workspace.token.margins"
-msgstr "Margins"
-
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:235
-msgid "workspace.token.radius"
-msgstr "Radius"
-
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:235
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:241
msgid "workspace.token.color"
msgstr "Color"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:218
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:54
+msgid "workspace.token.create-new-theme"
+msgstr "Create your first theme now."
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:134, src/app/main/ui/workspace/tokens/sidebar.cljs:190
+msgid "workspace.token.create-one"
+msgstr "Create one."
+
+#: src/app/main/ui/workspace/tokens/form.cljs:492
+msgid "workspace.token.create-token"
+msgstr "Create new %s token"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:278
+msgid "workspace.token.delete"
+msgstr "Delete token"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159
+msgid "workspace.token.delete-theme-title"
+msgstr "Delete theme"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:275
+msgid "workspace.token.duplicate"
+msgstr "Duplicate token"
+
+#: src/app/main/data/tokens.cljs:386
+msgid "workspace.token.duplicate-suffix"
+msgstr "copy"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:262
msgid "workspace.token.edit"
msgstr "Edit token"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:333
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:383
msgid "workspace.token.edit-theme-title"
msgstr "Edit theme"
@@ -6602,72 +6821,68 @@ msgstr "Edit theme"
msgid "workspace.token.edit-themes"
msgstr "Edit themes"
-#: src/app/main/ui/workspace/tokens/form.cljs:430
+#: src/app/main/ui/workspace/tokens/form.cljs:491
msgid "workspace.token.edit-token"
msgstr "Edit token"
-#: src/app/main/ui/workspace/tokens/form.cljs:481
+#: src/app/main/ui/workspace/tokens/form.cljs:544
msgid "workspace.token.enter-token-description"
msgstr "Add a description (optional)"
-#: src/app/main/ui/workspace/tokens/form.cljs:437
+#: src/app/main/ui/workspace/tokens/form.cljs:498
msgid "workspace.token.enter-token-name"
msgstr "Enter %s token name"
-#: src/app/main/ui/workspace/tokens/form.cljs:463
-msgid "workspace.token.token-value-enter"
-msgstr "Enter a value or alias with {alias}"
+#: src/app/main/ui/workspace/tokens/errors.cljs:9
+msgid "workspace.token.error-parse"
+msgstr "Import Error: Could not parse JSON."
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:197
+msgid "workspace.token.gaps"
+msgstr "Gaps"
+
+#: src/app/main/ui/workspace/tokens/style_dictionary.cljs
+#, unused
+msgid "workspace.token.generic-error"
+msgstr "Error: "
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:109
+msgid "workspace.token.group-name"
+msgstr "Group name"
#: src/app/main/ui/workspace/tokens/sets.cljs
#, unused
msgid "workspace.token.grouping-set-alert"
msgstr "Token Set grouping is not supported yet."
-#: src/app/main/ui/workspace/tokens/sets_context_menu.cljs
-msgid "workspace.token.add-set-to-group"
-msgstr "Add set to this group"
-
-#: src/app/main/ui/workspace/tokens/style_dictionary.cljs
-msgid "workspace.token.generic-error"
-msgstr "Error: "
-
-#: src/app/main/ui/workspace/tokens/style_dictionary.cljs
-msgid "workspace.token.reference-error"
-msgstr "Reference Errors: "
-
-#: src/app/main/ui/workspace/tokens/style_dictionary.cljs
-msgid "workspace.token.token-not-resolved"
-msgstr "Could not resolve reference token with the name: %s"
-
-#: src/app/main/ui/workspace/tokens/errors.cljs
-msgid "workspace.token.error-parse"
-msgstr "Import Error: Could not parse JSON."
-
-#: src/app/main/ui/workspace/tokens/errors.cljs
-msgid "workspace.token.invalid-json"
-msgstr "Import Error: Invalid token data in JSON."
-
-#: src/app/main/ui/workspace/tokens/errors.cljs
+#: src/app/main/ui/workspace/tokens/errors.cljs:17, src/app/main/ui/workspace/tokens/errors.cljs:21
msgid "workspace.token.import-error"
msgstr "Import Error:"
-#: src/app/main/ui/workspace/tokens/errors.cljs
-msgid "workspace.token.self-reference"
-msgstr "Token has self reference"
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:414, src/app/main/ui/workspace/tokens/sidebar.cljs:415
+msgid "workspace.token.import-tooltip"
+msgstr "Importing a JSON file will override all your current tokens, sets and themes"
-#: src/app/main/ui/workspace/tokens/errors.cljs
+#: src/app/main/ui/workspace/tokens/errors.cljs:29
msgid "workspace.token.invalid-color"
msgstr "Invalid color value: %s"
-#: src/app/main/ui/workspace/tokens/errors.cljs
-msgid "workspace.token.missing-references"
-msgstr "Missing token references: "
+#: src/app/main/ui/workspace/tokens/errors.cljs:13
+msgid "workspace.token.invalid-json"
+msgstr "Import Error: Invalid token data in JSON."
-#: src/app/main/ui/workspace/tokens/errors.cljs
-msgid "workspace.token.number-too-large"
-msgstr "Invalid token value. The resolved value is too large: %s"
+#: src/app/main/ui/workspace/tokens/errors.cljs:16
+msgid "workspace.token.invalid-json-token-name"
+msgstr "Import Error: Invalid token name in in JSON."
-#: src/app/main/ui/workspace/tokens/errors.cljs
+#: src/app/main/ui/workspace/tokens/errors.cljs:18
+msgid "workspace.token.invalid-json-token-name-detail"
+msgstr ""
+"\"%s\" 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/errors.cljs:41, src/app/main/ui/workspace/tokens/errors.cljs:45
msgid "workspace.token.invalid-value"
msgstr "Invalid token value: %s"
@@ -6679,153 +6894,207 @@ msgstr "Opacity must be between 0 and 100% or 0 and 1 (e.g. 50% or 0.5)."
msgid "workspace.token.stroke-width-range"
msgstr "Stroke width must be greater than or equal to 0."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:179
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:196
msgid "workspace.token.label.group"
msgstr "Group"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:179
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:197
msgid "workspace.token.label.group-optional"
msgstr "Optional"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:191
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:199
msgid "workspace.token.label.group-placeholder"
msgstr "Add group (i.e. Mode)"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:187
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:206
msgid "workspace.token.label.theme"
msgstr "Theme"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:200
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:208
msgid "workspace.token.label.theme-placeholder"
msgstr "Add a theme (i.e. Light)"
-#: src/app/main/ui/workspace/tokens/theme_select.cljs:88
-msgid "workspace.token.no-active-theme"
-msgstr "No theme active"
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:189
+msgid "workspace.token.margins"
+msgstr "Margins"
-#: src/app/main/ui/workspace/tokens/sets.cljs:91
-msgid "workspace.token.set-edit-placeholder"
-msgstr "Enter name (use '/' for groups)"
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:222
+msgid "workspace.token.max-size"
+msgstr "Max. size"
-#: src/app/main/ui/workspace/tokens/sets.cljs:103
-msgid "workspace.token.no-permisions-set"
-msgstr "You need to be an editor to activate / deactivate sets"
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:216
+msgid "workspace.token.min-size"
+msgstr "Min. size"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:200
-msgid "workspace.token.no-permission-themes"
-msgstr "You need to be an editor to use themes"
+#: src/app/main/ui/workspace/tokens/errors.cljs:37
+msgid "workspace.token.missing-references"
+msgstr "Missing token references: "
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:154
msgid "workspace.token.no-active-sets"
msgstr "No active sets"
-#: src/app/main/ui/workspace/tokens/sets.cljs:401, src/app/main/ui/workspace/tokens/sets.cljs:405
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:89
+msgid "workspace.token.no-active-theme"
+msgstr "No theme active"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:110
+msgid "workspace.token.no-permisions-set"
+msgstr "You need to be an editor to activate / deactivate sets"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:199
+msgid "workspace.token.no-permission-themes"
+msgstr "You need to be an editor to use themes"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:504
msgid "workspace.token.no-sets-create"
msgstr "There are no sets defined yet. Create one first."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:215, src/app/main/ui/workspace/tokens/sidebar.cljs:221
+#: src/app/main/ui/workspace/tokens/sets.cljs:131, src/app/main/ui/workspace/tokens/sets.cljs:137
msgid "workspace.token.no-sets-yet"
msgstr "There are no sets yet."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:187
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:186
msgid "workspace.token.no-themes"
msgstr "There are no themes."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:47
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:50
msgid "workspace.token.no-themes-currently"
msgstr "You currently have no themes."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:137
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:153
msgid "workspace.token.num-active-sets"
msgstr "%s active sets"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:147
-msgid "workspace.token.sets-hint"
-msgstr "Edit theme and manage sets"
+#: src/app/main/ui/workspace/tokens/errors.cljs:33
+msgid "workspace.token.number-too-large"
+msgstr "Invalid token value. The resolved value is too large: %s"
-#: src/app/main/ui/workspace/tokens/token_pill.cljs:114
+#: src/app/main/ui/workspace/tokens/errors.cljs:45
+msgid "workspace.token.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/token_pill.cljs:122
#, fuzzy
msgid "workspace.token.original-value"
msgstr "Original value: %s"
-#: src/app/main/ui/workspace/tokens/token_pill.cljs:120
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:177
+msgid "workspace.token.paddings"
+msgstr "Paddings"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:237
+msgid "workspace.token.radius"
+msgstr "Radius"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:128
msgid "workspace.token.ref-not-valid"
msgstr "Reference is not valid or is not in any active set"
-#: src/app/main/ui/workspace/tokens/form.cljs:205, src/app/main/ui/workspace/tokens/form.cljs:208, src/app/main/ui/workspace/tokens/token_pill.cljs:115
+#: src/app/main/ui/workspace/tokens/style_dictionary.cljs
+#, unused
+msgid "workspace.token.reference-error"
+msgstr "Reference Errors: "
+
+#: src/app/main/ui/workspace/tokens/form.cljs:217, src/app/main/ui/workspace/tokens/form.cljs:221, src/app/main/ui/workspace/tokens/token_pill.cljs:123
#, fuzzy
msgid "workspace.token.resolved-value"
msgstr "Resolved value: %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:203
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:240
msgid "workspace.token.save-theme"
msgstr "Save theme"
-#: src/app/main/ui/workspace/tokens/sets.cljs:200, src/app/main/ui/workspace/tokens/sets.cljs:305
+#: src/app/main/ui/workspace/tokens/sets.cljs:239, src/app/main/ui/workspace/tokens/sets.cljs:340
msgid "workspace.token.select-set"
msgstr "Select set."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:346
+#: src/app/main/ui/workspace/tokens/errors.cljs:25
+msgid "workspace.token.self-reference"
+msgstr "Token has self reference"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:98
+msgid "workspace.token.set-edit-placeholder"
+msgstr "Enter name (use '/' for groups)"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:396
msgid "workspace.token.set-selection-theme"
msgstr "Define what token sets should be used as part of this theme option:"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs
-#, unused
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:148
+msgid "workspace.token.sets-hint"
+msgstr "Edit theme and manage sets"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:210
+msgid "workspace.token.size"
+msgstr "Size"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:136
msgid "workspace.token.theme-name"
msgstr "Theme %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:43, src/app/main/ui/workspace/tokens/modals/themes.cljs:88
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:101
+msgid "workspace.token.themes-description"
+msgstr ""
+"Here you can manage your themes, enable / disable them and configure its "
+"active sets."
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:46, src/app/main/ui/workspace/tokens/modals/themes.cljs:99
msgid "workspace.token.themes-list"
msgstr "Themes list"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:45, src/app/main/ui/workspace/tokens/modals/themes.cljs:91
-msgid "workspace.token.themes-description"
-msgstr "Here you can manage your themes, enable / disable them and configure its active sets."
-
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:112
-msgid "workspace.token.group-name"
-msgstr "Group name"
-
-#: src/app/main/ui/workspace/tokens/form.cljs:482
+#: src/app/main/ui/workspace/tokens/form.cljs:545
msgid "workspace.token.token-description"
msgstr "Description"
-#: src/app/main/ui/workspace/tokens/form.cljs:440
+#: src/app/main/ui/workspace/tokens/form.cljs:501
msgid "workspace.token.token-name"
msgstr "Name"
-#: src/app/main/ui/workspace/tokens/form.cljs:56
+#: src/app/main/ui/workspace/tokens/form.cljs:59
msgid "workspace.token.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/form.cljs:464
+#: src/app/main/ui/workspace/tokens/style_dictionary.cljs:259
+msgid "workspace.token.token-not-resolved"
+msgstr "Could not resolve reference token with the name: %s"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:526
msgid "workspace.token.token-value"
msgstr "Value"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:279
+#: src/app/main/ui/workspace/tokens/form.cljs:525
+msgid "workspace.token.token-value-enter"
+msgstr "Enter a value or alias with {alias}"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:322
msgid "workspace.token.tokens-section-title"
msgstr "TOKENS - %s"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:348
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:345
+msgid "workspace.token.inactive-set"
+msgstr "Inactive"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:340
+msgid "workspace.token.inactive-set-description"
+msgstr "This set is not active. Change theme or activate this set to see changes in the viewport"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:405
msgid "workspace.token.tools"
msgstr "Tools"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:415
-msgid "workspace.token.import-tooltip"
-msgstr "Importing a JSON file will override all your current tokens, sets and themes"
-
-#: src/app/main/ui/workspace/tokens/token_pill.cljs:123
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:131
msgid "workspace.token.value-not-valid"
msgstr "The value is not valid"
-#: src/app/main/ui/workspace/tokens/form.cljs:458
+#: src/app/main/ui/workspace/tokens/form.cljs:520
msgid "workspace.token.warning-name-change"
msgstr "Renaming this token will break any reference to its old name."
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Assets"
@@ -6833,43 +7102,43 @@ msgstr "Assets"
msgid "workspace.toolbar.color-palette"
msgstr "Color Palette (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Comments (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Curve (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Ellipse (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:128, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Board (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:128, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:131
msgid "workspace.toolbar.frame-first-time"
msgstr "Create board. Click and drag to define its size. (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Image (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Move (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Path (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:201, src/app/main/ui/workspace/top_toolbar.cljs:202
+#: src/app/main/ui/workspace/top_toolbar.cljs:210, src/app/main/ui/workspace/top_toolbar.cljs:211
msgid "workspace.toolbar.plugins"
msgstr "Plugins (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Rectangle (%s)"
@@ -6878,7 +7147,7 @@ msgstr "Rectangle (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Shortcuts (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Text (%s)"
@@ -6886,7 +7155,7 @@ msgstr "Text (%s)"
msgid "workspace.toolbar.text-palette"
msgstr "Typographies (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:220, src/app/main/ui/workspace/top_toolbar.cljs:221
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
msgid "workspace.toolbar.toggle-toolbar"
msgstr "Toggle toolbar"
@@ -7044,19 +7313,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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Dismiss"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
msgid "workspace.updates.more-info"
msgstr "More info"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
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:1226
msgid "workspace.updates.update"
msgstr "Update"
@@ -7116,11 +7385,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:284
+#: src/app/main/ui/workspace/sidebar.cljs:285
msgid "workspace.versions.tab.actions"
msgstr "Actions"
-#: src/app/main/ui/workspace/sidebar.cljs:281
+#: src/app/main/ui/workspace/sidebar.cljs:282
msgid "workspace.versions.tab.history"
msgstr "History"
@@ -7143,68 +7412,14 @@ msgstr "Autosaved versions will be kept for %s days."
msgid "workspace.viewport.click-to-close-path"
msgstr "Click to close the path"
-msgid "dashboard.mark-all-as-read.success"
-msgstr "Marked all notifications as read"
+msgid "workspace.notification-pill.detail"
+msgstr "Details"
-msgid "label.mark-all-as-read"
-msgstr "Mark all as read"
+msgid "dashboard.import.import-error.disclaimer"
+msgstr "Not all files have been imported"
-msgid "loader.tips.01.title"
-msgstr "Reusable Components"
+msgid "dashboard.import.import-error.message1"
+msgstr "The following files have errors:"
-msgid "loader.tips.01.message"
-msgstr "Keep your designs consistent and easy to update across projects."
-
-msgid "loader.tips.02.title"
-msgstr "Real-time Collaboration"
-
-msgid "loader.tips.02.message"
-msgstr "Work with your team live, share feedback instantly."
-
-msgid "loader.tips.03.title"
-msgstr "Auto Layout like CSS"
-
-msgid "loader.tips.03.message"
-msgstr "Design flexibly with familiar CSS-like layout controls."
-
-msgid "loader.tips.04.title"
-msgstr "Export to Code"
-
-msgid "loader.tips.04.message"
-msgstr "Get CSS and SVG code directly from your designs."
-
-msgid "loader.tips.05.title"
-msgstr "Design Libraries"
-
-msgid "loader.tips.05.message"
-msgstr "Share assets and styles to maintain consistency."
-
-msgid "loader.tips.06.title"
-msgstr "Interactive Prototypes"
-
-msgid "loader.tips.06.message"
-msgstr "Bring your ideas to life with animations and transitions."
-
-msgid "loader.tips.07.title"
-msgstr "Web-Standard Formats"
-
-msgid "loader.tips.07.message"
-msgstr "Penpot uses SVG and CSS for seamless development."
-
-msgid "loader.tips.08.title"
-msgstr "Keyboard Shortcuts"
-
-msgid "loader.tips.08.message"
-msgstr "Speed up your workflow with handy shortcuts like Shift + A for Auto Layout."
-
-msgid "loader.tips.09.title"
-msgstr "Dark & Light Mode"
-
-msgid "loader.tips.09.message"
-msgstr "Choose the theme that suits your style."
-
-msgid "loader.tips.10.title"
-msgstr "Plugins Support"
-
-msgid "loader.tips.10.message"
-msgstr "Extend Penpot with community-built plugins for extra functionality."
+msgid "dashboard.import.import-error.message2"
+msgstr "Files with errors will not be uploaded."
diff --git a/frontend/translations/es.po b/frontend/translations/es.po
index b88dcc9b09..f9a319e923 100644
--- a/frontend/translations/es.po
+++ b/frontend/translations/es.po
@@ -2,8 +2,8 @@ msgid ""
msgstr ""
"PO-Revision-Date: 2025-01-29 22:23+0000\n"
"Last-Translator: Anonymous \n"
-"Language-Team: Spanish \n"
+"Language-Team: Spanish "
+" \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
@@ -38,13 +38,13 @@ msgstr "Crear cuenta de prueba"
msgid "auth.create-demo-profile"
msgstr "¿Quieres probar?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Este es un servicio de DEMOSTRACIÓN. NO USAR para trabajo real, los "
"proyectos serán borrados periodicamente."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "¿Olvidaste tu contraseña?"
@@ -52,7 +52,7 @@ msgstr "¿Olvidaste tu contraseña?"
msgid "auth.fullname"
msgstr "Nombre completo"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "Entrar en mi cuenta"
@@ -60,33 +60,33 @@ msgstr "Entrar en mi cuenta"
msgid "auth.login-here"
msgstr "Inicia sesión aquí."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Entrar"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr ""
"Penpot es la herramienta de diseño libre y open-source para la colaboración "
"entre Diseño y Código"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -112,7 +112,7 @@ msgstr "Hemos enviado a tu buzón un enlace para recuperar tu contraseña."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Te uniste al equipo"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Contraseña"
@@ -140,7 +140,7 @@ msgstr "¿Olvidaste tu contraseña?"
msgid "auth.recovery-submit"
msgstr "Cambiar tu contraseña"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "¿No tienes una cuenta?"
@@ -152,7 +152,7 @@ msgstr "Cuéntanos cómo quieres que nos dirijamos a tí."
msgid "auth.register-account-title"
msgstr "Tu nombre"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Crear una cuenta"
@@ -177,7 +177,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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Términos de servicio"
@@ -191,7 +191,7 @@ msgstr ""
msgid "auth.verification-email-sent"
msgstr "Hemos enviado un email de verificación a"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "Correo electrónico"
@@ -200,11 +200,11 @@ msgstr "Correo electrónico"
msgid "branding-illustrations-marketing-pieces"
msgstr "diseño de marca, ilustraciones, piezas de marketing..."
-#: src/app/main/ui/comments.cljs:504
+#: src/app/main/ui/comments.cljs:532
msgid "comments.mentions.not-found"
msgstr "No se encuentra miembros con @%s"
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Publicar"
@@ -276,7 +276,7 @@ msgstr "Compartir prototipos"
msgid "common.share-link.view-all"
msgstr "Selecctionar todas"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Despublicar"
@@ -330,7 +330,7 @@ msgstr "Recorrido por el interfaz"
msgid "dashboard.access-tokens.copied-success"
msgstr "Token copiado"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Generar nuevo token"
@@ -338,11 +338,11 @@ msgstr "Generar nuevo token"
msgid "dashboard.access-tokens.create.success"
msgstr "Access token creado con éxito."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Pulsa el botón \"Generar nuevo token\" para generar uno."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "Todavía no tienes ningún token."
@@ -366,23 +366,23 @@ msgstr "90 días"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Nunca"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Expiró el %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Expira el %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Sin fecha de expiración"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Access tokens personales"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Los access tokens personales funcionan como una alternativa a nuestro "
@@ -397,7 +397,7 @@ msgstr "El token expirará el %s"
msgid "dashboard.access-tokens.token-will-not-expire"
msgstr "El token no tiene fecha de expiración"
-#: src/app/main/ui/dashboard/placeholder.cljs:48
+#: src/app/main/ui/dashboard/placeholder.cljs:35
msgid "dashboard.add-file"
msgstr "Añadir archivo"
@@ -409,7 +409,7 @@ msgstr "Añadir como Biblioteca Compartida"
msgid "dashboard.change-email"
msgstr "Cambiar correo"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(copia)"
@@ -445,23 +445,23 @@ msgstr "Duplicar"
msgid "dashboard.duplicate-multi"
msgstr "Duplicar %s archivos"
-#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:285
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
msgid "dashboard.empty-placeholder-drafts-subtitle"
msgstr "Cuando un miembro del equipo cree algún borrador, este aparecerá aquí."
-#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:280
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
msgid "dashboard.empty-placeholder-drafts-title"
msgstr "Aún no hay borradores."
-#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:286
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
msgid "dashboard.empty-placeholder-files-subtitle"
msgstr "Cuando un miembro del equipo cree algún archivo, este aparecerá aquí."
-#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:281
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
msgid "dashboard.empty-placeholder-files-title"
msgstr "Aún no hay archivos."
-#: src/app/main/ui/dashboard/placeholder.cljs:40
+#: src/app/main/ui/dashboard/placeholder.cljs:77
#, markdown
msgid "dashboard.empty-placeholder-libraries"
msgstr ""
@@ -477,14 +477,42 @@ msgstr ""
"alguna plantilla ve a [Bibliotecas y "
"plantillas](https://penpot.app/libraries-templates)."
-#: src/app/main/ui/dashboard/placeholder.cljs:36
+#: src/app/main/ui/dashboard/placeholder.cljs:73
msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role"
msgstr "Las bibliotecas añadidas al proyecto aparecerán aquí."
-#: src/app/main/ui/dashboard/placeholder.cljs:33
+#: src/app/main/ui/dashboard/placeholder.cljs:70
msgid "dashboard.empty-placeholder-libraries-title"
msgstr "Aún no existen librerías compartidas."
+#: src/app/main/ui/dashboard/placeholder.cljs:44
+msgid "dashboard.empty-project.add-library"
+msgstr "Añade una Biblioteca o Plantilla"
+
+#: src/app/main/ui/dashboard/placeholder.cljs:36, src/app/main/ui/dashboard/placeholder.cljs:90
+msgid "dashboard.empty-project.create"
+msgstr "Crear un nuevo archivo"
+
+#: src/app/main/ui/dashboard/placeholder.cljs:45
+msgid "dashboard.empty-project.explore"
+msgstr "Explora algunas para añadir"
+
+#: src/app/main/ui/dashboard/placeholder.cljs:43
+msgid "dashboard.empty-project.go-to-libraries"
+msgstr "Ir a Bibliotecas y Plantillas"
+
+#: src/app/main/ui/dashboard/placeholder.cljs:39, src/app/main/ui/dashboard/placeholder.cljs:40
+msgid "dashboard.empty-project.import"
+msgstr "Importa un fichero"
+
+#: src/app/main/ui/dashboard/placeholder.cljs:41
+msgid "dashboard.empty-project.import-penpot"
+msgstr "Importa un fichero .penpot"
+
+#: src/app/main/ui/dashboard/placeholder.cljs:37
+msgid "dashboard.empty-project.start"
+msgstr "Empieza a crear cosas increíbles"
+
#: src/app/main/ui/dashboard/file_menu.cljs:249, src/app/main/ui/dashboard/file_menu.cljs:254
msgid "dashboard.export-binary-multi"
msgstr "Descargar %s archivos Penpot (.penpot)"
@@ -575,35 +603,35 @@ msgstr "Incluir librerias compartidas dentro de las librerias del fichero"
msgid "dashboard.export.title"
msgstr "Exportar ficheros"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Fuente no encontrada"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Ignorar todas"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Las fuentes personalizadas que subas aparecerán aquí."
-#: src/app/main/ui/dashboard/fonts.cljs:448
+#: src/app/main/ui/dashboard/fonts.cljs:450
msgid "dashboard.fonts.empty-placeholder-viewer"
msgstr "Aún no hay fuentes personalizadas."
-#: src/app/main/ui/dashboard/fonts.cljs:449
+#: src/app/main/ui/dashboard/fonts.cljs:451
msgid "dashboard.fonts.empty-placeholder-viewer-sub"
msgstr ""
"Cuando un miembro del equipo suba una fuente personalizada, esta aparecerá "
"aquí."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "1 fuente añadida"
msgstr[1] "%s fuentes añadidas"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -613,22 +641,21 @@ msgstr ""
"como una **única familia de fuentes**. Se pueden cargar fuentes con los "
"siguientes formatos: **TTF, OTF and WOFF** (con uno es suficiente)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Sólo deberías cargar fuentes que te pertenecen o de las que tienes una "
"licencia que te permita usarlas en Penpot. Encuentra más información en la "
-"sección de Derechos de Contenido: [Penpot's Terms of "
-"Service](%s). También te puede interesar leer "
-"más sobre licencias tipográficas: [font "
+"sección de Derechos de Contenido: [Penpot's Terms of Service](%s). También "
+"te puede interesar leer más sobre licencias tipográficas: [font "
"licensing](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Cargar todas"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -639,7 +666,7 @@ msgstr ""
"[Transfonter](https://transfonter.org/) para generar fuentes web y corregir "
"posibles errores."
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Importar archivos Penpot"
@@ -653,11 +680,11 @@ msgstr ""
"Fichero exportado con componentes-v2 pero el equipo actual no lo soporta "
"aún."
-#: src/app/main/ui/dashboard.cljs:248
+#: src/app/main/ui/dashboard.cljs:247
msgid "dashboard.import.bad-url"
msgstr "La importación ha fallado. La URL de la plantilla es incorrecta"
-#: src/app/main/ui/dashboard.cljs:242
+#: src/app/main/ui/dashboard.cljs:241
msgid "dashboard.import.error"
msgstr "La importación ha fallado. Intentalo de nuevo, por favor"
@@ -665,17 +692,17 @@ msgstr "La importación ha fallado. Intentalo de nuevo, por favor"
msgid "dashboard.import.import-error"
msgstr "Hubo un problema importando el fichero. No ha podido ser importado."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgid_plural "dashboard.import.import-message"
msgstr[0] "1 fichero se ha importado correctamente."
msgstr[1] "%s ficheros se han importado correctamente."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Algunos ficheros contenían objetos erroneos que no han sido importados."
-#: src/app/main/ui/dashboard.cljs:249
+#: src/app/main/ui/dashboard.cljs:248
msgid "dashboard.import.no-perms"
msgstr "No tienes permisos para importar en este equipo"
@@ -715,30 +742,38 @@ msgstr "Invitar a la gente"
msgid "dashboard.leave-team"
msgstr "Abandonar equipo"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Bibliotecas y plantillas"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:257
+msgid "dashboard.libraries-and-templates.description"
+msgstr "Aquí tienes algunas Bibliotecas y plantillas que puedes añadir a tu proyecto"
+
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "Explora más y descubre cómo contribuir"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "Hubo un problema importando la plantilla. No ha podido ser importada."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Bibliotecas"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "cargando tus ficheros …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "cargando tus fuentes …"
+#: src/app/main/data/comments.cljs:472
+msgid "dashboard.mark-all-as-read.success"
+msgstr "Se han marcado todas las noficaciones como leídas"
+
#: src/app/main/ui/dashboard/file_menu.cljs:291, src/app/main/ui/dashboard/project_menu.cljs:101
msgid "dashboard.move-to"
msgstr "Mover a"
@@ -751,11 +786,11 @@ msgstr "Mover %s archivos a"
msgid "dashboard.move-to-other-team"
msgstr "Mover a otro equipo"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Nuevo Archivo"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Nuevo Archivo"
@@ -763,31 +798,10 @@ msgstr "Nuevo Archivo"
msgid "dashboard.new-project"
msgstr "+ Nuevo proyecto"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Nuevo Proyecto"
-msgid "dashboard.empty-project.create"
-msgstr "Crear un nuevo archivo"
-
-msgid "dashboard.empty-project.start"
-msgstr "Empieza a crear cosas increíbles"
-
-msgid "dashboard.empty-project.import"
-msgstr "Importa un fichero"
-
-msgid "dashboard.empty-project.import-penpot"
-msgstr "Importa un fichero .penpot"
-
-msgid "dashboard.empty-project.add-library"
-msgstr "Añade una Biblioteca o Plantilla"
-
-msgid "dashboard.empty-project.explore"
-msgstr "Explora algunas para añadir"
-
-msgid "dashboard.empty-project.go-to-libraries"
-msgstr "Ir a Bibliotecas y Plantillas"
-
#: src/app/main/ui/dashboard/search.cljs:77
msgid "dashboard.no-matches-for"
msgstr "No se encuentra “%s“"
@@ -796,7 +810,7 @@ msgstr "No se encuentra “%s“"
msgid "dashboard.no-projects-placeholder"
msgstr "Los proyectos fijados aparecerán aquí"
-#: src/app/main/ui/dashboard/comments.cljs:84
+#: src/app/main/ui/dashboard/comments.cljs:90
msgid "dashboard.notifications"
msgstr "Notificaciones"
@@ -808,7 +822,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/ui/settings/notifications.cljs:42
+#: src/app/main/data/profile.cljs:260
msgid "dashboard.notifications.notifications-saved"
msgstr "Configuración de notificaciones actualizada"
@@ -828,7 +842,7 @@ msgstr "%s integrantes"
msgid "dashboard.open-in-new-tab"
msgstr "Abrir en una pestaña nueva"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Opciones"
@@ -856,15 +870,15 @@ msgstr "Ahora eres lector del equipo."
msgid "dashboard.pin-unpin"
msgstr "Anclar/Desanclar"
-#: src/app/main/ui/dashboard.cljs:212
+#: src/app/main/ui/dashboard.cljs:208
msgid "dashboard.plugins.bad-url"
msgstr "La URL de la extensión es incorrecta"
-#: src/app/main/ui/dashboard.cljs:210
+#: src/app/main/ui/dashboard.cljs:206
msgid "dashboard.plugins.parse-error"
msgstr "No se puede analizar el manifiest de la extensión"
-#: src/app/main/ui/dashboard.cljs:173
+#: src/app/main/ui/dashboard.cljs:169
msgid "dashboard.plugins.try-plugin"
msgstr "Prueba la extensión: "
@@ -905,67 +919,67 @@ msgstr "Cambiar el idioma de la interfaz"
msgid "dashboard.select-ui-theme"
msgstr "Selecciona un tema"
-#: src/app/main/ui/settings/notifications.cljs:76
+#: src/app/main/ui/settings/notifications.cljs:57
msgid "dashboard.settings.notifications.dashboard-comments.all"
msgstr "Todos los comentarios, menciones y respuestas"
-#: src/app/main/ui/settings/notifications.cljs:78
+#: src/app/main/ui/settings/notifications.cljs:59
msgid "dashboard.settings.notifications.dashboard-comments.none"
msgstr "Ninguna"
-#: src/app/main/ui/settings/notifications.cljs:77
+#: src/app/main/ui/settings/notifications.cljs:58
msgid "dashboard.settings.notifications.dashboard-comments.partial"
msgstr "Sólo menciones y respuestas"
-#: src/app/main/ui/settings/notifications.cljs:73
+#: src/app/main/ui/settings/notifications.cljs:54
msgid "dashboard.settings.notifications.dashboard-comments.title"
msgstr "Comentarios de ficheros"
-#: src/app/main/ui/settings/notifications.cljs:72
+#: src/app/main/ui/settings/notifications.cljs:53
msgid "dashboard.settings.notifications.dashboard.title"
msgstr "Notificaciones en el panel"
-#: src/app/main/ui/settings/notifications.cljs:86
+#: src/app/main/ui/settings/notifications.cljs:67
msgid "dashboard.settings.notifications.email-comments.all"
msgstr "Todos los comentarios, menciones y respuestas"
-#: src/app/main/ui/settings/notifications.cljs:88
+#: src/app/main/ui/settings/notifications.cljs:69
msgid "dashboard.settings.notifications.email-comments.none"
msgstr "Ninguna"
-#: src/app/main/ui/settings/notifications.cljs:87
+#: src/app/main/ui/settings/notifications.cljs:68
msgid "dashboard.settings.notifications.email-comments.partial"
msgstr "Sólo menciones y respuestas"
-#: src/app/main/ui/settings/notifications.cljs:83
+#: src/app/main/ui/settings/notifications.cljs:64
msgid "dashboard.settings.notifications.email-comments.title"
msgstr "Comentarios de ficheros"
-#: src/app/main/ui/settings/notifications.cljs:95
+#: src/app/main/ui/settings/notifications.cljs:76
msgid "dashboard.settings.notifications.email-invites.all"
msgstr "Todas las invitaciones y solicitudes"
-#: src/app/main/ui/settings/notifications.cljs:98
+#: src/app/main/ui/settings/notifications.cljs:79
msgid "dashboard.settings.notifications.email-invites.none"
msgstr "Ninguna"
-#: src/app/main/ui/settings/notifications.cljs:92
+#: src/app/main/ui/settings/notifications.cljs:73
msgid "dashboard.settings.notifications.email-invites.title"
msgstr "Invitaciones y solicitudes"
-#: src/app/main/ui/settings/notifications.cljs:82
+#: src/app/main/ui/settings/notifications.cljs:63
msgid "dashboard.settings.notifications.email.title"
msgstr "Notificaciones de correo electrónico"
-#: src/app/main/ui/settings/notifications.cljs:103
+#: src/app/main/ui/settings/notifications.cljs:84
msgid "dashboard.settings.notifications.submit"
msgstr "Actualizar configuración"
-#: src/app/main/ui/settings/notifications.cljs:71
+#: src/app/main/ui/settings/notifications.cljs:52
msgid "dashboard.settings.notifications.title"
msgstr "Notificaciones"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Ver todos los archivos"
@@ -993,7 +1007,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Tu archivo ha sido movido con éxito"
@@ -1017,6 +1031,10 @@ msgstr "Integrantes del equipo"
msgid "dashboard.team-projects"
msgstr "Proyectos del equipo"
+#: src/app/main/ui/dashboard/templates.cljs:133
+msgid "dashboard.template.add-to-project"
+msgstr "Añadir a tu proyecto"
+
#: src/app/main/ui/settings/options.cljs:57
msgid "dashboard.theme-change"
msgstr "Tema visual"
@@ -1037,18 +1055,56 @@ msgstr "Despublicar Biblioteca"
msgid "dashboard.update-settings"
msgstr "Actualizar opciones"
-#: src/app/main/ui/dashboard/sidebar.cljs:969
+#: src/app/main/ui/dashboard/sidebar.cljs:970
msgid "dashboard.upgrade-plan.no-limits"
msgstr "Sin límites a la creatividad"
-#: src/app/main/ui/dashboard/sidebar.cljs:968
+#: src/app/main/ui/dashboard/sidebar.cljs:969
msgid "dashboard.upgrade-plan.penpot-free"
msgstr "Penpot Gratis"
-#: src/app/main/ui/dashboard/sidebar.cljs:971
+#: src/app/main/ui/dashboard/sidebar.cljs:972
msgid "dashboard.upgrade-plan.power-up"
msgstr "Mejora"
+msgid "subscription.dashboard.power-up.professional.top-title"
+msgstr "Plan Professional"
+
+#, markdown
+msgid "subscription.dashboard.power-up.professional.bottom-description"
+msgstr "Consigue editores y almacenamiento adicionales, copias de seguridad de archivos y mucho más con el **Plan ilimitado**"
+
+msgid "subscription.dashboard.power-up.unlimited-plan"
+msgstr "Plan ilimitado"
+
+msgid "subscription.dashboard.power-up.unlimited.top-description"
+msgstr "Editores adicionales, almacenamiento y versión autoguardada, copia de seguridad de archivos y mucho más."
+
+#, markdown
+msgid "subscription.dashboard.power-up.unlimited.bottom-description"
+msgstr "Obtenga seguridad avanzada, registros de actividad, asistencia dedicada y mucho más con el **Plan de empresa**"
+
+msgid "subscription.dashboard.power-up.enterprise-plan"
+msgstr "Plan Enterprise"
+
+msgid "subscription.dashboard.power-up.unlimited.cta"
+msgstr "Echa un vistazo"
+
+msgid "subscription.dashboard.power-up.enterprise.description"
+msgstr "Seguridad avanzada, registros de actividad, asistencia dedicada y mucho más."
+
+msgid "subscription.dashboard.power-up.trial.top-title"
+msgstr "Plan Unlimited (Prueba)"
+
+msgid "subscription.dashboard.power-up.trial.top-description"
+msgstr "Editores adicionales, almacenamiento y versión autoguardada, copia de seguridad de archivos y mucho más."
+
+msgid "subscription.dashboard.power-up.trial.bottom-description"
+msgstr "¿Disfrutas de la prueba? Desbloquea el acceso completo para siempre."
+
+msgid "subscription.dashboard.power-up.subscribe"
+msgstr "Suscríbete"
+
#: src/app/main/ui/dashboard/team.cljs:909
msgid "dashboard.webhooks.active"
msgstr "Activo"
@@ -1104,7 +1160,7 @@ msgstr "Correo"
msgid "dashboard.your-name"
msgstr "Tu nombre"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Tu Penpot"
@@ -1124,11 +1180,11 @@ msgstr "Componentes a actualizar:"
msgid "ds.confirm-allow"
msgstr "Permitir"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Cancelar"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Ok"
@@ -1140,7 +1196,7 @@ msgstr "¿Está Seguro?"
msgid "errors.auth-provider-not-allowed"
msgstr "El proveedor de autenticación no permitido para este perfil de usuario"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Proveedor de autenticación no configurado."
@@ -1148,11 +1204,11 @@ msgstr "Proveedor de autenticación no configurado."
msgid "errors.auth.unable-to-login"
msgstr "Parece que no has iniciado sesión, o la sesión ha expirado."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "No se ha podido cargar la fuente %s"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "No se han podido cargar las fuentes %s"
@@ -1160,11 +1216,11 @@ msgstr "No se han podido cargar las fuentes %s"
msgid "errors.cannot-upload"
msgstr "No se puede cargar el archivo multimedia."
-#: src/app/main/ui/comments.cljs:689
+#: src/app/main/ui/comments.cljs:729, src/app/main/ui/comments.cljs:760, src/app/main/ui/comments.cljs:826
msgid "errors.character-limit-exceeded"
msgstr "Se ha superado el límite de caracteres"
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Tu navegador no puede realizar esta operación"
@@ -1176,7 +1232,7 @@ msgstr "Este correo ya está en uso"
msgid "errors.email-already-validated"
msgstr "Este correo ya está validado."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "No puedes usar tu correo electrónico como contraseña"
@@ -1211,6 +1267,10 @@ msgstr "Debe contener como máximo 1 caracter."
msgid "errors.field-min-length"
msgstr "Debe contener como mínimo 1 caracter."
+#: src/app/util/forms.cljs:61
+msgid "errors.field-missing"
+msgstr "Campo vacio"
+
#: 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
msgid "errors.field-not-all-whitespace"
@@ -1223,7 +1283,19 @@ 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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
+msgid "errors.deprecated"
+msgstr "¡Lo sentimos! Este es un fichero antiguo que utiliza un tipo de recurso de Penpot obsoleto, y no puedes abrirlo."
+
+msgid "errors.deprecated.contact.before"
+msgstr "Aunque Penpot ya no da soporte a este tipo de Recursos, puedes"
+
+msgid "errors.deprecated.contact.text"
+msgstr "contactar con nosotros"
+
+msgid "errors.deprecated.contact.after"
+msgstr "para que podamos ayudarte."
+
+#: 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Ha ocurrido algún error."
@@ -1231,25 +1303,16 @@ msgstr "Ha ocurrido algún error."
msgid "errors.invalid-color"
msgstr "Color no válido"
-#: src/app/util/forms.cljs
+#: src/app/util/forms.cljs:35, src/app/util/forms.cljs:84
msgid "errors.invalid-data"
msgstr "Datos no válidos"
-#: src/app/util/forms.cljs
-msgid "errors.field-missing"
-msgstr "Campo vacio"
-
-#: src/app/util/forms.cljs
-msgid "errors.invalid-text"
-msgstr "Texto no válido"
-
#: src/app/main/ui/auth/register.cljs, src/app/main/ui/auth/login.cljs, src/app/main/ui/auth/recovery_request.cljs
#, unused
msgid "errors.invalid-email"
msgstr "Por favor, escribe un email válido"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "El correo de confirmación debe coincidir"
@@ -1257,6 +1320,11 @@ msgstr "El correo de confirmación debe coincidir"
msgid "errors.invalid-recovery-token"
msgstr "El código de recuperación no es válido."
+#: src/app/util/forms.cljs
+#, unused
+msgid "errors.invalid-text"
+msgstr "Texto no válido"
+
#: src/app/main/ui/static.cljs:69
msgid "errors.invite-invalid"
msgstr "Invitación inválida"
@@ -1265,7 +1333,7 @@ msgstr "Invitación inválida"
msgid "errors.invite-invalid.info"
msgstr "Esta invitación puede haber sido cancelada o ha expirado."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "La autheticacion via LDAP esta deshabilitada."
@@ -1317,7 +1385,7 @@ msgstr "La contraseña debe tener 8 caracteres como mínimo"
msgid "errors.paste-data-validation"
msgstr "Datos inválidos en el portapapeles"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "El perfil esta blockeado"
@@ -1351,6 +1419,24 @@ msgstr ""
"El propietario no puede salir del equipo, tienes que asignar la propiedad a "
"otra persona."
+#: src/app/main/data/tokens.cljs:150, src/app/main/data/tokens.cljs:180
+msgid "errors.token-set-already-exists"
+msgstr "Ya existe un set con el mismo nombre"
+
+#: src/app/main/data/tokens.cljs:
+msgid "errors.token-set-doesnt-exists"
+msgstr "No se puede duplicar un set que no existe."
+
+#: src/app/main/data/tokens.cljs:245
+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/tokens.cljs:79
+msgid "errors.token-theme-already-exists"
+msgstr "Ya existe un theme con este nombre"
+
#: src/app/main/data/media.cljs:71
msgid "errors.unexpected-error"
msgstr "Ha ocurrido un error inesperado."
@@ -1395,12 +1481,11 @@ msgstr "Error inesperado al validar"
msgid "errors.webhooks.unexpected-status"
msgstr "Estado inesperado %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "El email o la contraseña son incorrectos."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "La contraseña anterior no es correcta"
@@ -1449,11 +1534,11 @@ msgstr "Cuenta habilitada para responder todas tus dudas técnicas."
msgid "feedback.twitter-title"
msgstr "Cuenta de X para soporte"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Ha ocurrido un error"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Desenfocado"
@@ -1461,31 +1546,31 @@ msgstr "Desenfocado"
msgid "inspect.attributes.blur.value"
msgstr "Valor"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Relleno"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Descargar imagen original"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Altura"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Ancho"
@@ -1524,25 +1609,15 @@ msgstr "Arriba"
msgid "inspect.attributes.layout.width"
msgstr "Ancho"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Sombra"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Tamaño y posición"
-#: src/app/main/ui/viewer/inspect/attributes/variant.cljs:40
-msgid "inspect.attributes.variant.variant"
-msgstr "Propiedades de la variante"
-
-msgid "inspect.attributes.variant.component"
-msgstr "Propiedades del componente"
-
-msgid "inspect.attributes.variant.copy"
-msgstr "Propiedades de la copia"
-
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Borde"
@@ -1579,144 +1654,167 @@ msgstr "Sólido"
msgid "inspect.attributes.stroke.width"
msgstr "Ancho"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Tipografía"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Familia tipográfica"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Tamaño de fuente"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Estilo de fuente"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Grosor de fuente"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Espaciado de letras"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Interlineado"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Decoración de texto"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Ninguna"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Tachar"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Subrayar"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Transformación de texto"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Minúsculas"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Ninguna"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Primera en mayúscula"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "Sin asignar"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Mayúsculas"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/attributes/variant.cljs:44
+msgid "inspect.attributes.variant"
+msgstr "Propiedades de la variante"
+
+msgid "inspect.attributes.variants"
+msgstr "Propiedades de las variantes"
+
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
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/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Más información sobre la inspección"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr "Elige una forma, tablero o grupo para inspeccionar sus propiedades y código"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:61
+msgid "inspect.subtitle.copy"
+msgstr "Copia"
+
+#: src/app/main/ui/inspect/right_sidebar.cljs:57
+msgid "inspect.subtitle.main"
+msgstr "Componente principal"
+
+#: src/app/main/ui/inspect/right_sidebar.cljs:59
+msgid "inspect.subtitle.variant"
+msgstr "Variante"
+
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Código"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Círculo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Componente"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Curva"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Mesa de trabajo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Grupo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Imagen"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Máscara"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s Seleccionado"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Trazado"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Rectángulo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Texto"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Información"
+#: src/app/main/ui/dashboard/comments.cljs:95
+msgid "label.mark-all-as-read"
+msgstr "Marcar todo como leído"
+
#: src/app/main/ui/workspace/main_menu.cljs:162
msgid "label.shortcuts"
msgstr "Atajos de teclado"
@@ -1733,15 +1831,15 @@ msgstr "Access tokens"
msgid "labels.active"
msgstr "Activo"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.add"
msgstr "Añadir"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Añadir fuente personalizada"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.adding"
msgstr "Añadiendo..."
@@ -1753,7 +1851,7 @@ msgstr "Administración"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Todo"
@@ -1775,7 +1873,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Error del servidor (Bad Gateway)"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Cancelar"
@@ -1783,27 +1881,27 @@ msgstr "Cancelar"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Cerrar"
-#: src/app/main/ui/workspace/tokens/sets.cljs:180
+#: src/app/main/ui/workspace/tokens/sets.cljs:219
msgid "labels.collapse"
msgstr "Colapsar"
-#: src/app/main/ui/comments.cljs:812
+#: src/app/main/ui/comments.cljs:881
msgid "labels.comment"
msgstr "Comentario"
-#: src/app/main/ui/comments.cljs:816
+#: src/app/main/ui/comments.cljs:885
msgid "labels.comment.mark-as-solved"
msgstr "Marcar como resuelto"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Comentarios"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Comunidad"
@@ -1811,7 +1909,7 @@ msgstr "Comunidad"
msgid "labels.confirm-password"
msgstr "Confirmar contraseña"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Continuar"
@@ -1823,11 +1921,7 @@ msgstr "Continúa con"
msgid "labels.continue-with-penpot"
msgstr "Puedes continuar con una cuenta de Penpot"
-#: src/app/main/ui/dashboard/team.cljs:683
-msgid "labels.copy-invitation-link"
-msgstr "Copiar enlace"
-
-#: src/app/main/ui/components/copy_button.cljs:42
+#: src/app/main/ui/components/copy_button.cljs:41
msgid "labels.copy"
msgstr "Copiar"
@@ -1835,11 +1929,15 @@ msgstr "Copiar"
msgid "labels.copy-color"
msgstr "Copiar color"
+#: src/app/main/ui/dashboard/team.cljs:683
+msgid "labels.copy-invitation-link"
+msgstr "Copiar enlace"
+
#: src/app/main/ui/static.cljs:62
msgid "labels.copyright"
msgstr "Kaleidos @2024"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Crear"
@@ -1859,15 +1957,19 @@ msgstr "Fuentes personalizadas"
msgid "labels.dashboard"
msgstr "Panel"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Borrar"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/workspace/tokens/sets_context_menu.cljs
+msgid "labels.duplicate"
+msgstr "Duplicar"
+
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Eliminar comentario"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Eliminar hilo"
@@ -1887,18 +1989,21 @@ msgstr "Desarrollo"
msgid "labels.director"
msgstr "Director"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "Descartar"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Borradores"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Editar"
+msgid "labels.error"
+msgstr "Error"
+
#, unused
msgid "labels.edit-file"
msgstr "Editar archivo"
@@ -1915,7 +2020,7 @@ msgstr "Evento"
msgid "labels.expired-invitation"
msgstr "Expirada"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Exportar"
@@ -1931,7 +2036,7 @@ msgstr "Opinión enviada"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Familia de fuente"
@@ -1939,11 +2044,11 @@ msgstr "Familia de fuente"
msgid "labels.font-providers"
msgstr "Proveedores de fuentes"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Estilos"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Fuentes"
@@ -1955,11 +2060,11 @@ msgstr "CEO o Fundador"
msgid "labels.freelancer"
msgstr "Autónomo"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Repositorio de Github"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Danos tu opinión"
@@ -1971,15 +2076,19 @@ msgstr "Volver"
msgid "labels.graphic-design"
msgstr "Diseño gráfico"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Centro de ayuda"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/dashboard/templates.cljs:90
+msgid "labels.hide"
+msgstr "Ocultar"
+
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Ocultar comentarios resueltos"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:355
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:413
msgid "labels.import"
msgstr "Importar"
@@ -1987,7 +2096,7 @@ msgstr "Importar"
msgid "labels.inactive"
msgstr "Inactivo"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Fuentes instaladas"
@@ -2013,11 +2122,11 @@ msgstr "Invitaciones"
msgid "labels.language"
msgstr "Idioma"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Bibliotecas y Plantillas"
-#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:114, src/app/main/ui/dashboard/grid.cljs:133, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:53, src/app/main/ui/ds/product/loader.cljs:52, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:126, src/app/main/ui.cljs:67, src/app/main/ui.cljs:105, src/app/main/ui.cljs:124
+#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:115, src/app/main/ui/dashboard/grid.cljs:134, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:98, src/app/main/ui/ds/product/loader.cljs:85, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:118, src/app/main/ui.cljs:66, src/app/main/ui.cljs:104, src/app/main/ui.cljs:123
msgid "labels.loading"
msgstr "Cargando…"
@@ -2029,7 +2138,7 @@ msgstr "Entra o regístrate"
msgid "labels.login"
msgstr "Entrar"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Salir"
@@ -2045,7 +2154,7 @@ msgstr "Integrante"
msgid "labels.members"
msgstr "Integrantes"
-#: src/app/main/ui/comments.cljs:558
+#: src/app/main/ui/comments.cljs:583
msgid "labels.mention"
msgstr "Mencionar"
@@ -2053,11 +2162,11 @@ msgstr "Mencionar"
msgid "labels.new-password"
msgstr "Nueva contraseña"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Siguiente"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "¡Ya estás al día! Nuevas notificaciones de comentarios aparecerán aquí."
@@ -2066,9 +2175,8 @@ msgid "labels.no-invitations"
msgstr "No hay invitaciones pendientes."
#: src/app/main/ui/dashboard/team.cljs:742
-#, markdown
-msgid "labels.no-invitations-hint"
-msgstr "Pulsa el botón 'Invitar al equipo' para añadir más integrantes al equipo."
+msgid "labels.no-invitations-gather-people"
+msgstr "Reúne a tu gente y construid juntos grandes cosas."
#: src/app/main/ui/static.cljs
#, unused
@@ -2083,7 +2191,7 @@ msgstr "¡Uy!"
msgid "labels.notifications"
msgstr "Notificaciones"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "1 archivo"
@@ -2114,7 +2222,7 @@ msgstr "Contraseña anterior"
msgid "labels.only-yours"
msgstr "Sólo los tuyos"
-#: src/app/main/ui/comments.cljs:545, src/app/main/ui/comments.cljs:822, src/app/main/ui/comments.cljs:886, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:295, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:324
+#: src/app/main/ui/comments.cljs:891, src/app/main/ui/comments.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:293, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:322
msgid "labels.options"
msgstr "Opciones"
@@ -2142,7 +2250,7 @@ msgstr "Contraseña"
msgid "labels.pending-invitation"
msgstr "Pendiente"
-#: src/app/main/ui/comments.cljs:657, src/app/main/ui/comments.cljs:690, src/app/main/ui/comments.cljs:759
+#: src/app/main/ui/comments.cljs:678
msgid "labels.post"
msgstr "Publicar"
@@ -2166,7 +2274,7 @@ msgstr "Perfil"
msgid "labels.projects"
msgstr "Proyectos"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Notas de versión"
@@ -2184,7 +2292,7 @@ msgstr "Quitar"
msgid "labels.remove-member"
msgstr "Eliminar integrante"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Renombrar"
@@ -2192,23 +2300,23 @@ msgstr "Renombrar"
msgid "labels.rename-team"
msgstr "Renombra el equipo"
-#: src/app/main/ui/comments.cljs:598
+#: src/app/main/ui/comments.cljs:641
msgid "labels.replies"
msgstr "respuestas"
-#: src/app/main/ui/comments.cljs:603
+#: src/app/main/ui/comments.cljs:646
msgid "labels.replies.new"
msgstr "nuevas respuestas"
-#: src/app/main/ui/comments.cljs:597
+#: src/app/main/ui/comments.cljs:640
msgid "labels.reply"
msgstr "respuesta"
-#: src/app/main/ui/comments.cljs:602
+#: src/app/main/ui/comments.cljs:645
msgid "labels.reply.new"
msgstr "nueva respuesta"
-#: src/app/main/ui/comments.cljs:641
+#: src/app/main/ui/comments.cljs:721
msgid "labels.reply.thread"
msgstr "Responder"
@@ -2228,15 +2336,15 @@ msgstr "Reintentar"
msgid "labels.role"
msgstr "Rol"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Guardar"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "Buscar"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Buscar fuente"
@@ -2260,7 +2368,7 @@ 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:252
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:247
msgid "labels.sets"
msgstr "Sets"
@@ -2268,6 +2376,9 @@ msgstr "Sets"
msgid "labels.settings"
msgstr "Configuración"
+msgid "subscription.labels"
+msgstr "Suscripción"
+
#: src/app/main/ui/viewer/header.cljs:206
msgid "labels.share"
msgstr "Compartir"
@@ -2280,19 +2391,23 @@ msgstr "Compartir prototipo"
msgid "labels.shared-libraries"
msgstr "Bibliotecas"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/dashboard/templates.cljs:86
+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
msgid "labels.show-all-comments"
msgstr "Mostrar todos los comentarios"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Mostrar lista de comentarios"
-#: src/app/main/ui/workspace/comments.cljs:66, src/app/main/ui/workspace/comments.cljs:136
+#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139
msgid "labels.show-mentions"
msgstr "Mostrar sólo tus menciones"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Mostrar sólo tus comentarios"
@@ -2320,14 +2435,18 @@ msgstr "Líder de equipo"
msgid "labels.team-member"
msgstr "Miembro de equipo"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:183
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:182
msgid "labels.themes"
msgstr "Temas"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Tutoriales"
+#: src/app/main/ui/workspace/tokens/errors.cljs:49
+msgid "labels.unknown-error"
+msgstr "Error desconocido"
+
#: src/app/main/ui/dashboard/file_menu.cljs:264
msgid "labels.unpublish-multi-files"
msgstr "Despublicar %s archivos"
@@ -2340,15 +2459,15 @@ msgstr "Actualizar"
msgid "labels.update-team"
msgstr "Actualiza el equipo"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Cargar"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Cargar fuente"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Subiendo…"
@@ -2364,7 +2483,7 @@ msgstr "Lector"
msgid "labels.webhooks"
msgstr "Webhooks"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Escribir un nuevo comentario"
@@ -2372,7 +2491,7 @@ msgstr "Escribir un nuevo comentario"
msgid "labels.you"
msgstr "(tú)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Tu cuenta"
@@ -2380,27 +2499,109 @@ msgstr "Tu cuenta"
msgid "labels.youtube"
msgstr "YouTube"
-#: src/app/main/ui/workspace/tokens/errors.cljs
-msgid "labels.unknown-error"
-msgstr "Error desconocido"
+#: src/app/main/ui/ds/product/loader.cljs:21
+msgid "loader.tips.01.message"
+msgstr ""
+"Mantén tus diseños consistentes y fáciles de actualizar en todos los "
+"proyectos."
-#: src/app/main/ui/workspace/colorpicker.cljs:477, src/app/main/ui/workspace/colorpicker.cljs:478, src/app/main/ui/workspace/colorpicker.cljs:480
+#: src/app/main/ui/ds/product/loader.cljs:20
+msgid "loader.tips.01.title"
+msgstr "Componentes Reutilizables"
+
+#: src/app/main/ui/ds/product/loader.cljs:23
+msgid "loader.tips.02.message"
+msgstr "Trabaja con tu equipo en vivo, comparte feedback al instante."
+
+#: src/app/main/ui/ds/product/loader.cljs:22
+msgid "loader.tips.02.title"
+msgstr "Colaboración en Tiempo Real"
+
+#: src/app/main/ui/ds/product/loader.cljs:25
+msgid "loader.tips.03.message"
+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"
+
+#: src/app/main/ui/ds/product/loader.cljs:27
+msgid "loader.tips.04.message"
+msgstr "Obtén código CSS y SVG directamente de tus diseños."
+
+#: src/app/main/ui/ds/product/loader.cljs:26
+msgid "loader.tips.04.title"
+msgstr "Exportar a Código"
+
+#: src/app/main/ui/ds/product/loader.cljs:29
+msgid "loader.tips.05.message"
+msgstr "Comparte recursos y estilos para mantener la consistencia."
+
+#: src/app/main/ui/ds/product/loader.cljs:28
+msgid "loader.tips.05.title"
+msgstr "Bibliotecas de Diseño"
+
+#: src/app/main/ui/ds/product/loader.cljs:31
+msgid "loader.tips.06.message"
+msgstr "Da vida a tus ideas con animaciones y transiciones."
+
+#: src/app/main/ui/ds/product/loader.cljs:30
+msgid "loader.tips.06.title"
+msgstr "Prototipos Interactivos"
+
+#: src/app/main/ui/ds/product/loader.cljs:33
+msgid "loader.tips.07.message"
+msgstr "Penpot usa SVG y CSS para un desarrollo sin problemas."
+
+#: src/app/main/ui/ds/product/loader.cljs:32
+msgid "loader.tips.07.title"
+msgstr "Formatos Web Estándar"
+
+#: src/app/main/ui/ds/product/loader.cljs:35
+msgid "loader.tips.08.message"
+msgstr ""
+"Acelera tu flujo de trabajo con atajos útiles como Shift + A para Auto "
+"Layout."
+
+#: src/app/main/ui/ds/product/loader.cljs:34
+msgid "loader.tips.08.title"
+msgstr "Atajos de Teclado"
+
+#: src/app/main/ui/ds/product/loader.cljs:37
+msgid "loader.tips.09.message"
+msgstr "Elige el tema que mejor se adapte a tu estilo."
+
+#: src/app/main/ui/ds/product/loader.cljs:36
+msgid "loader.tips.09.title"
+msgstr "Modo Claro y Oscuro"
+
+#: src/app/main/ui/ds/product/loader.cljs:39
+msgid "loader.tips.10.message"
+msgstr ""
+"Extiende Penpot con plugins creados por la comunidad para funcionalidad "
+"extra."
+
+#: src/app/main/ui/ds/product/loader.cljs:38
+msgid "loader.tips.10.title"
+msgstr "Soporte de Plugins"
+
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
msgid "media.choose-image"
msgstr "Elegir imagen"
-#: src/app/main/ui/workspace/colorpicker.cljs:245
+#: src/app/main/ui/workspace/colorpicker.cljs:241
msgid "media.gradient"
msgstr "Gradiente"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "Imagen"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:77
+#: src/app/main/ui/inspect/attributes/common.cljs:77
msgid "media.image.short"
msgstr "img"
-#: src/app/main/ui/workspace/colorpicker.cljs:470
+#: src/app/main/ui/workspace/colorpicker.cljs:467
msgid "media.keep-aspect-ratio"
msgstr "Mantener la proporción"
@@ -2418,7 +2619,7 @@ msgstr "Cargando imagen…"
msgid "media.radial"
msgstr "Radial"
-#: src/app/main/ui/workspace/colorpicker.cljs:243
+#: src/app/main/ui/workspace/colorpicker.cljs:239
msgid "media.solid"
msgstr "Sólido"
@@ -2467,7 +2668,7 @@ msgstr "Cambiar correo"
msgid "modals.change-email.title"
msgstr "Cambiar tu correo"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Copiar token"
@@ -2483,7 +2684,7 @@ msgstr "Nombre"
msgid "modals.create-access-token.name.placeholder"
msgstr "El nombre te pude ayudar a saber para qué se utiliza el token"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Crear token"
@@ -2507,15 +2708,15 @@ msgstr "Payload URL"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://example.com/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Borrar token"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "¿Seguro que deseas borrar este token?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Borrar token"
@@ -2535,25 +2736,25 @@ msgstr "Si borras tu cuenta perderás todos tus proyectos y archivos."
msgid "modals.delete-account.title"
msgstr "¿Seguro que quieres borrar tu cuenta?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Eliminar conversación"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"¿Seguro que quieres eliminar esta conversación? Todos los comentarios en "
"este hilo serán eliminados."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Eliminar conversación"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
msgid "modals.delete-component-annotation.message"
msgstr "¿Seguro que quieres borrar esta nota?"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Borrar nota"
@@ -2581,31 +2782,31 @@ msgstr "¿Seguro que quieres borrar %s archivos?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Borrando %s archivos"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Estas seguro de querer eliminar esta estilo de fuente? Dejara de cargar si "
"es usada en algun fichero."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Eliminando estilo de fuente"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"¿Seguro que quieres eliminar esta fuente? Si está siendo usada en algún "
"fichero no se cargará."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Eliminando fuente"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "¿Seguro que quieres borrar esta página?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Borrar página"
@@ -2819,15 +3020,15 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "Nueva propiedad del equipo"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Publicar"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
msgid "modals.publish-empty-library.message"
msgstr "Tu biblioteca está vacía. ¿Seguro que quieres publicarla?"
-#: src/app/main/ui/workspace/libraries.cljs:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Publicar biblioteca vacía"
@@ -2882,21 +3083,21 @@ msgstr ""
msgid "modals.update-remote-component-in-bulk.message"
msgstr "Actualizar componentes en biblioteca"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Actualizar"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Cancelar"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Actualizar un componente en biblioteca"
@@ -3058,30 +3259,30 @@ msgstr "Tutoriales de video"
msgid "onboarding-v2.before-start.title"
msgstr "Antes de comenzar"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Suscríbete a la newsletter de Penpot para estar al día de los progresos del "
"producto y noticias."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr ""
"Quiero recibir noticias sobre Penpot (artículos del blog, vídeo tutoriales, "
"directos...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Nos importa la privacidad, aquí puedes leer nuestra "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Sólo te enviaremos emails relevantes para ti. Puedes desuscribirte en "
"cualquier momento usando el vínculo de desuscripción en cualquiera de "
"nuestras newsletters."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr ""
"Quiero recibir información sobre actualizaciones del producto (nuevas "
@@ -3179,17 +3380,17 @@ msgstr "Podrás crear un equipo después."
msgid "onboarding.newsletter.accept"
msgstr "Si, suscribirme"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"Tu solicitud de suscripción ha sido enviada, te haremos una confirmación a "
"tu email."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Política de Privacidad."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "¿Quieres recibir noticias sobre Penpot?"
@@ -3209,51 +3410,6 @@ msgstr "Estoy echando un vistazo"
msgid "onboarding.questions.reasons.fit"
msgstr "Estoy buscando una herramienta que se ajuste a mis necesidades"
-#: src/app/main/ui/onboarding/questions.cljs:113
-msgid "onboarding.questions.lets-get-started"
-msgstr "¡Empecemos!"
-
-#: src/app/main/ui/dashboard/templates.cljs
-msgid "labels.show"
-msgstr "Mostrar"
-
-#: src/app/main/ui/dashboard/templates.cljs
-msgid "labels.hide"
-msgstr "Ocultar"
-
-#: src/app/main/ui/dashboard/templates.cljs
-msgid "dashboard.libraries-and-templates.description"
-msgstr "Aquí tienes algunas Bibliotecas y plantillas que puedes añadir a tu proyecto"
-
-#: src/app/main/ui/dashboard/templates.cljs
-msgid "dashboard.template.add-to-project"
-msgstr "Añadir a tu proyecto"
-
-#: src/app/main/ui/dashboard/templates.cljs
-msgid "labels.add"
-msgstr "Añadir"
-
-#: src/app/main/ui/dashboard/templates.cljs
-msgid "labels.add-to-your-project"
-msgstr "Añadir a tu proyecto"
-
-#: src/app/main/ui/dashboard/templates.cljs
-msgid "labels.show-hide"
-msgstr "Mostrar/Ocultar"
-
-#: src/app/main/ui/dashboard/templates.cljs
-msgid "labels.show"
-msgstr "Mostrar"
-
-#: src/app/main/ui/dashboard/templates.cljs
-msgid "labels.hide"
-msgstr "Ocultar"
-
-#: src/app/main/ui/dashboard/templates.cljs
-msgid "dashboard.libraries-and-templates.description"
-msgstr "Aquí tienes algunas Bibliotecas y plantillas que puedes añadir a tu proyecto"
-msgstr "Averiguar si Penpot es una buena opción para mi equipo"
-
#: src/app/main/ui/onboarding/questions.cljs:97
msgid "onboarding.questions.reasons.testing"
msgstr "Probar antes de self-hosting"
@@ -3423,7 +3579,7 @@ msgstr "Ir al login"
msgid "settings.detach"
msgstr "Desacoplar"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Varios"
@@ -3609,6 +3765,11 @@ msgstr "Copiar"
msgid "shortcuts.copy-link"
msgstr "Copiar enlace"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106
+#, unused
+msgid "shortcuts.copy-props"
+msgstr "Copiar propiedades"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95
msgid "shortcuts.create-component"
msgstr "Crear componente"
@@ -3621,7 +3782,7 @@ msgstr "Crear nuevo"
msgid "shortcuts.cut"
msgstr "Cortar"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Reducir zoom"
@@ -3721,7 +3882,7 @@ msgstr "Distribuir horizontalmente"
msgid "shortcuts.hide-ui"
msgstr "Mostrar/ocultar interfaz"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Aumentar zoom"
@@ -3897,6 +4058,16 @@ msgstr " o "
msgid "shortcuts.paste"
msgstr "Pegar"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111
+#, unused
+msgid "shortcuts.paste-props"
+msgstr "Pegar propiedades"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:604
+#, unused
+msgid "shortcuts.plugins"
+msgstr "Gestor de extensiones"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165
msgid "shortcuts.prev-frame"
msgstr "Tablero anterior"
@@ -4061,18 +4232,6 @@ msgstr "Mostrar/ocultar paleta de textos"
msgid "shortcuts.toggle-theme"
msgstr "Cambiar tema"
-#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:604
-msgid "shortcuts.plugins"
-msgstr "Gestor de extensiones"
-
-#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106
-msgid "shortcuts.copy-props"
-msgstr "Copiar propiedades"
-
-#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111
-msgid "shortcuts.paste-props"
-msgstr "Pegar propiedades"
-
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205
msgid "shortcuts.toggle-visibility"
msgstr "Mostrar/ocultar elemento"
@@ -4117,15 +4276,15 @@ msgstr "Zoom a selección"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Proveedores de fuentes - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Fuentes - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Proyectos - %s - Penpot"
@@ -4133,7 +4292,7 @@ msgstr "Proyectos - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Buscar - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Bibliotecas Compartidas - %s - Penpot"
@@ -4141,7 +4300,7 @@ msgstr "Bibliotecas Compartidas - %s - Penpot"
msgid "title.default"
msgstr "Penpot - Diseño Libre para Equipos"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "Perfil - Access tokens"
@@ -4149,7 +4308,7 @@ msgstr "Perfil - Access tokens"
msgid "title.settings.feedback"
msgstr "Danos tu opinión - Penpot"
-#: src/app/main/ui/settings/notifications.cljs:64
+#: src/app/main/ui/settings/notifications.cljs:45
msgid "title.settings.notifications"
msgstr "Notificaciones - Penpot"
@@ -4165,6 +4324,72 @@ msgstr "Contraseña - Penpot"
msgid "title.settings.profile"
msgstr "Perfil - Penpot"
+msgid "subscription.settings.section-plan"
+msgstr "Tu suscripción"
+
+msgid "subscription.settings.other-plans"
+msgstr "Otros planes de penpot"
+
+msgid "subscription.settings.professional"
+msgstr "Professional"
+
+msgid "subscription.settings.unlimited"
+msgstr "Unlimited"
+
+msgid "subscription.settings.enterprise"
+msgstr "Enterprise"
+
+msgid "subscription.settings.support-us-since"
+msgstr "Nos apoyas desde %s"
+
+msgid "subscription.settings.member-since"
+msgstr "Miembro de penpot desde %s"
+
+msgid "subscription.settings.price-editor-month"
+msgstr "editor por mes"
+
+msgid "subscription.settings.price-organization-month"
+msgstr "organización por mes"
+
+msgid "subscription.settings.professional.projects-files"
+msgstr "Proyectos, archivos y borradores ilimitados"
+
+msgid "subscription.settings.professional.teams-editors"
+msgstr "Equipos ilimitados de hasta 8 redactores"
+
+msgid "subscription.settings.professional.storage"
+msgstr "10 GB de almacenamiento y versiones de autoguardado de 7 días"
+
+msgid "subscription.settings.benefits.all-professional-benefits"
+msgstr "Todas las prestaciones del plan Professional y:"
+
+msgid "subscription.settings.benefits.all-unlimited-benefits"
+msgstr "Todas las prestaciones del plan Unlimited y:"
+
+msgid "subscription.settings.unlimited.teams"
+msgstr "Equipos ilimitados, independientemente de su tamaño"
+
+msgid "subscription.settings.unlimited.bill"
+msgstr "Factura mensual limitada"
+
+msgid "subscription.settings.unlimited.storage"
+msgstr "25 GB de almacenamiento y 30 días de autoguardado de versiones y copias de seguridad de archivos"
+
+msgid "subscription.settings.ulimited.try-it-free"
+msgstr "Pruébalo gratis durante 14 días"
+
+msgid "subscription.settings.manage-your-subscription"
+msgstr "Gestionar tu suscripción"
+
+msgid "subscription.settings.enterprise.support"
+msgstr "Apoyo específico"
+
+msgid "subscription.settings.enterprise.security"
+msgstr "Seguridad avanzada"
+
+msgid "subscription.settings.enterprise.logs"
+msgstr "Registros de actividad"
+
#: src/app/main/ui/dashboard/team.cljs:779
msgid "title.team-invitations"
msgstr "Invitaciones - %s - Penpot"
@@ -4185,7 +4410,7 @@ msgstr "Webhooks - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Modo de visualización - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -4285,23 +4510,20 @@ msgstr "Distribuir espacio vertical (%s)"
msgid "workspace.align.vtop"
msgstr "Alinear arriba (%s)"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:174, src/app/main/ui/workspace/sidebar/assets.cljs:179
+#: src/app/main/ui/workspace/sidebar/assets.cljs:171
msgid "workspace.assets.add-library"
msgstr "Añadir biblioteca"
-msgid "workspace.assets.manage-library"
-msgstr "Gestionar biblioteca"
-
#: src/app/main/ui/workspace/sidebar/assets.cljs
#, unused
msgid "workspace.assets.assets"
msgstr "Recursos"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Todos"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Colores"
@@ -4309,14 +4531,17 @@ msgstr "Colores"
msgid "workspace.assets.colors.add-color"
msgstr "Añadir color"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Componentes"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:510
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:520
msgid "workspace.assets.components.add-component"
msgstr "Añadir componente"
+msgid "workspace.assets.components.num-variants"
+msgstr "%s Variantes"
+
#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:127
msgid "workspace.assets.create-group"
msgstr "Crear un grupo"
@@ -4327,15 +4552,15 @@ msgstr ""
"Tus elementos se renombrarán automáticamente a \"nombre grupo / nombre "
"elemento\""
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Borrar"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Duplicar"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "Duplicar principal"
@@ -4343,19 +4568,19 @@ msgstr "Duplicar principal"
msgid "workspace.assets.edit"
msgstr "Editar"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:195
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
msgid "workspace.assets.filter"
msgstr "Filtrar"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Gráficos"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:505
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:515
msgid "workspace.assets.grid-view"
msgstr "Ver como rejilla"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Agrupar"
@@ -4363,23 +4588,27 @@ msgstr "Agrupar"
msgid "workspace.assets.group-name"
msgstr "Nombre del grupo"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:501
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:511
msgid "workspace.assets.list-view"
msgstr "Ver como lista"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "biblioteca local"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets.cljs:176
+msgid "workspace.assets.manage-library"
+msgstr "Gestionar biblioteca"
+
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "No se encontraron recursos"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "Abrir el fichero de la biblioteca"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Renombrar"
@@ -4387,7 +4616,7 @@ msgstr "Renombrar"
msgid "workspace.assets.rename-group"
msgstr "Renombrar grupo"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Buscar recursos"
@@ -4403,17 +4632,17 @@ msgstr[1] "%s elementos seleccionados"
msgid "workspace.assets.shared-library"
msgstr "Biblioteca compartida"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:226
+#: 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:211
+#: src/app/main/ui/workspace/sidebar/assets.cljs:201
msgid "workspace.assets.sort"
msgstr "Ordenar"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Tipografías"
@@ -4426,27 +4655,27 @@ msgstr "Añadir tipografía"
msgid "workspace.assets.typography.font-id"
msgstr "Fuente"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Tamaño"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Variante"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Ir al archivo de la biblioteca del estilo para editar"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Interletrado"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Interlineado"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -4454,7 +4683,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Estilos de texto"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Transformar texto"
@@ -4462,55 +4691,55 @@ msgstr "Transformar texto"
msgid "workspace.assets.ungroup"
msgstr "Desagrupar"
-#: src/app/main/ui/workspace/context_menu.cljs:748
+#: src/app/main/ui/workspace/context_menu.cljs:764
msgid "workspace.context-menu.grid-cells.area"
msgstr "Crear area"
-#: src/app/main/ui/workspace/context_menu.cljs:751
+#: src/app/main/ui/workspace/context_menu.cljs:767
msgid "workspace.context-menu.grid-cells.create-board"
msgstr "Crear tablero"
-#: src/app/main/ui/workspace/context_menu.cljs:743
+#: src/app/main/ui/workspace/context_menu.cljs:759
msgid "workspace.context-menu.grid-cells.merge"
msgstr "Fusionar celdas"
-#: src/app/main/ui/workspace/context_menu.cljs:706
+#: src/app/main/ui/workspace/context_menu.cljs:722
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:705
+#: src/app/main/ui/workspace/context_menu.cljs:721
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:707
+#: src/app/main/ui/workspace/context_menu.cljs:723
msgid "workspace.context-menu.grid-track.column.delete"
msgstr "Borrar columna"
-#: src/app/main/ui/workspace/context_menu.cljs:708
+#: src/app/main/ui/workspace/context_menu.cljs:724
msgid "workspace.context-menu.grid-track.column.delete-shapes"
msgstr "Borrar columna con el contenido"
-#: src/app/main/ui/workspace/context_menu.cljs:704
+#: src/app/main/ui/workspace/context_menu.cljs:720
msgid "workspace.context-menu.grid-track.column.duplicate"
msgstr "Duplicar columna"
-#: src/app/main/ui/workspace/context_menu.cljs:713
+#: src/app/main/ui/workspace/context_menu.cljs:729
msgid "workspace.context-menu.grid-track.row.add-after"
msgstr "Añadir 1 fila debajo"
-#: src/app/main/ui/workspace/context_menu.cljs:712
+#: src/app/main/ui/workspace/context_menu.cljs:728
msgid "workspace.context-menu.grid-track.row.add-before"
msgstr "Añadir 1 fila encima"
-#: src/app/main/ui/workspace/context_menu.cljs:714
+#: src/app/main/ui/workspace/context_menu.cljs:730
msgid "workspace.context-menu.grid-track.row.delete"
msgstr "Borrar fila"
-#: src/app/main/ui/workspace/context_menu.cljs:715
+#: src/app/main/ui/workspace/context_menu.cljs:731
msgid "workspace.context-menu.grid-track.row.delete-shapes"
msgstr "Borrar fila con el contenido"
-#: src/app/main/ui/workspace/context_menu.cljs:711
+#: src/app/main/ui/workspace/context_menu.cljs:727
msgid "workspace.context-menu.grid-track.row.duplicate"
msgstr "Duplicar fila"
@@ -4518,11 +4747,11 @@ msgstr "Duplicar fila"
msgid "workspace.focus.focus-mode"
msgstr "Modo foco"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Desactivar modo foco"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Activar modo foco"
@@ -4680,37 +4909,36 @@ msgstr "Cambiar a tema claro"
msgid "workspace.header.menu.undo"
msgstr "Deshacer"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Restablecer"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Error al guardar"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Guardado"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Guardando"
-#: src/app/main/ui/workspace/right_header.cljs:255
+#: src/app/main/ui/workspace/right_header.cljs:221
msgid "workspace.header.share"
msgstr "Compartir"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Cambios sin guardar"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
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:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "Zoom"
@@ -4722,7 +4950,7 @@ msgstr "Escalar para rellenar"
msgid "workspace.header.zoom-fit"
msgstr "Escalar para ajustar"
-#: src/app/main/ui/workspace/right_header.cljs:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Zoom abarcar todo"
@@ -4730,46 +4958,46 @@ msgstr "Zoom abarcar todo"
msgid "workspace.header.zoom-full-screen"
msgstr "Pantalla completa"
-#: src/app/main/ui/workspace/right_header.cljs:136
+#: src/app/main/ui/workspace/right_header.cljs:104
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:607
+#: 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:616
msgid "workspace.layout_grid.editor.options.edit-grid"
msgstr "Editar rejilla"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
msgid "workspace.layout_grid.editor.options.exit"
msgstr "Salir"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:478
-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:337
-msgid "workspace.layout_grid.editor.padding.vertical"
-msgstr "Padding vertical"
-
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:351
-msgid "workspace.layout_grid.editor.padding.horizontal"
-msgstr "Padding horizontal"
-
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:396
-msgid "workspace.layout_grid.editor.padding.top"
-msgstr "Padding superior"
-
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:411
-msgid "workspace.layout_grid.editor.padding.right"
-msgstr "Padding derecho"
-
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:426, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:432
msgid "workspace.layout_grid.editor.padding.bottom"
msgstr "Padding inferior"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:439
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
+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:351, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:358
+msgid "workspace.layout_grid.editor.padding.horizontal"
+msgstr "Padding horizontal"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:447
msgid "workspace.layout_grid.editor.padding.left"
msgstr "Padding izquierdo"
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:411, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:417
+msgid "workspace.layout_grid.editor.padding.right"
+msgstr "Padding derecho"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:396, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:402
+msgid "workspace.layout_grid.editor.padding.top"
+msgstr "Padding superior"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:337, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:343
+msgid "workspace.layout_grid.editor.padding.vertical"
+msgstr "Padding vertical"
+
#: src/app/main/ui/workspace/viewport/grid_layout_editor.cljs:59
msgid "workspace.layout_grid.editor.title"
msgstr "Editando rejilla"
@@ -4782,7 +5010,7 @@ msgstr "Hecho"
msgid "workspace.layout_grid.editor.top-bar.locate"
msgstr "Mostrar"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1321
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
msgstr "Mostrar grid layout"
@@ -4791,7 +5019,7 @@ msgstr "Mostrar grid layout"
msgid "workspace.libraries.add"
msgstr "Añadir"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s colores"
@@ -4821,43 +5049,43 @@ msgstr "Colores recientes"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "RGB Complementario"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Guardar estilo de color"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:374
+#: src/app/main/ui/workspace/libraries.cljs:371
msgid "workspace.libraries.empty.add-some"
msgstr "O añadir algunas de éstas para probar:"
-#: src/app/main/ui/workspace/libraries.cljs:368
+#: src/app/main/ui/workspace/libraries.cljs:365
msgid "workspace.libraries.empty.no-libraries"
msgstr "No hay Bibliotecas Compartidas en tu equipo, puedes buscar"
-#: src/app/main/ui/workspace/libraries.cljs:372
+#: src/app/main/ui/workspace/libraries.cljs:369
msgid "workspace.libraries.empty.some-templates"
msgstr "algunas plantillas aquí"
-#: src/app/main/ui/workspace/libraries.cljs:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Biblioteca del archivo"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "BIBLIOTECAS EN ESTE ARCHIVO"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "BIBLIOTECAS"
@@ -4866,63 +5094,64 @@ msgstr "BIBLIOTECAS"
msgid "workspace.libraries.library"
msgstr "BIBLIOTECA"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "ACTUALIZACIONES DE BIBLIOTECAS"
-#: src/app/main/ui/workspace/libraries.cljs:363
+#: src/app/main/ui/workspace/libraries.cljs:360
msgid "workspace.libraries.loading"
msgstr "Cargando…"
#: src/app/main/ui/workspace/libraries.cljs:387
+#, unused
msgid "workspace.libraries.more-templates"
msgstr "Puedes buscar "
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "No hay bibliotecas que necesiten ser actualizadas"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "No se encuentra “%s“"
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Buscar bibliotecas compartidas"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "BIBLIOTECAS COMPARTIDAS"
-#: src/app/main/ui/workspace/libraries.cljs:355
+#: src/app/main/ui/workspace/libraries.cljs:352
msgid "workspace.libraries.shared-library-btn"
msgstr "Conectar biblioteca"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Varias tipografías"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Desvincular todas las tipografías"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: src/app/main/ui/workspace/libraries.cljs:109, src/app/main/ui/workspace/libraries.cljs:136
msgid "workspace.libraries.typography"
msgstr "%s tipografías"
-#: src/app/main/ui/workspace/libraries.cljs:326
+#: src/app/main/ui/workspace/libraries.cljs:323
msgid "workspace.libraries.unlink-library-btn"
msgstr "Desconectar biblioteca"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Actualizar"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "ver todos los cambios"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "ACTUALIZACIONES"
@@ -4954,43 +5183,43 @@ msgstr "Desenfoque de la selección"
msgid "workspace.options.blur-options.toggle-blur"
msgstr "Mostrar/ocultar desenfoque"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Color de fondo"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Truncar contenido"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Componente"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "Nota"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "Copia"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "Crear una nota"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Editar una nota"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Principal"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:416
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
msgid "workspace.options.component.swap"
msgstr "Intercambiar componente"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:460
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
msgid "workspace.options.component.swap.empty"
msgstr "Aún no hay recursos en esta biblioteca"
@@ -5038,7 +5267,7 @@ msgstr "Arriba y Abajo"
msgid "workspace.options.design"
msgstr "Diseño"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Exportar"
@@ -5047,21 +5276,21 @@ msgstr "Exportar"
msgid "workspace.options.export-multiple"
msgstr "Exportar selección"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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:187
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188
msgid "workspace.options.export.add-export"
msgstr "Añadir exportación"
-#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:199, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:234
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235
msgid "workspace.options.export.remove-export"
msgstr "Eliminar exportación"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Sufijo"
@@ -5069,7 +5298,7 @@ msgstr "Sufijo"
msgid "workspace.options.exporting-complete"
msgstr "Exportación completa"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Exportando…"
@@ -5093,7 +5322,7 @@ msgstr "Añadir color de relleno"
msgid "workspace.options.fill.remove-fill"
msgstr "Eliminar relleno"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:343, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:344
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:341
msgid "workspace.options.fit-content"
msgstr "Redimensionar para ajustar al contenido"
@@ -5235,7 +5464,7 @@ msgstr "Guías"
msgid "workspace.options.guides.toggle-guide"
msgstr "Mostrar/ocultar guía"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Altura"
@@ -5558,19 +5787,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:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Altura.Max"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Ancho.Max"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Altura.Min"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Ancho.Min"
@@ -5684,11 +5913,11 @@ msgstr "espaciar"
msgid "workspace.options.layout.top"
msgstr "Arriba"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Más colores"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Más colores de la biblioteca"
@@ -5733,7 +5962,7 @@ msgstr "Colapsar radios individuales"
msgid "workspace.options.radius.show-single-corners"
msgstr "Mostrar radios individuales"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Recientes"
@@ -5741,11 +5970,11 @@ msgstr "Recientes"
msgid "workspace.options.retry"
msgstr "Reintentar"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Rotación"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Buscar fuente"
@@ -5755,7 +5984,7 @@ 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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Colores seleccionados"
@@ -5767,55 +5996,55 @@ msgstr "Relleno de selección"
msgid "workspace.options.selection-stroke"
msgstr "Borde de selección"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:292
msgid "workspace.options.shadow-options.add-shadow"
msgstr "Añadir sombra"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Desenfoque"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Color de sombra"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Sombra arrojada"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Sombra interior"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:180, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:318
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
msgid "workspace.options.shadow-options.remove-shadow"
msgstr "Eliminar sombra"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Difusión"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Sombra"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Sombra del grupo"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Sombras de la seleccíón"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:176
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:144
msgid "workspace.options.shadow-options.toggle-shadow"
msgstr "Mostrar/ocultar sombra"
@@ -5823,7 +6052,7 @@ msgstr "Mostrar/ocultar sombra"
msgid "workspace.options.show-fill-on-export"
msgstr "Mostrar al exportar"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Mostrar en modo visualización"
@@ -5831,7 +6060,7 @@ msgstr "Mostrar en modo visualización"
msgid "workspace.options.size"
msgstr "Tamaño"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Tamaños predefinidos"
@@ -5900,7 +6129,7 @@ msgstr "Triángulo"
msgid "workspace.options.stroke-color"
msgstr "Color del trazo"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Ancho del trazo"
@@ -5972,11 +6201,11 @@ msgstr "Ancho automático"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Fijo"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Espaciado entre letras"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Altura de línea"
@@ -6040,15 +6269,15 @@ msgstr "Mayúsculas"
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:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Ancho"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "eje X"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "eje Y"
@@ -6226,137 +6455,135 @@ msgstr "¡LA EXTENSIÓN '%s' HA SIDO INSTALADA PARA TU USUARIO!"
msgid "workspace.plugins.try-out.try"
msgstr "PROBAR PLUGIN"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Añadir flex layout"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "Añadir grid layout"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1004, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1030
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1013, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039
msgid "workspace.shape.menu.add-layout"
msgstr "Añadir layout"
-#: src/app/main/ui/workspace/context_menu.cljs:265
-msgid "workspace.shape.menu.back"
-msgstr "Enviar al fondo"
-
-#: src/app/main/ui/workspace/context_menu.cljs:262
-msgid "workspace.shape.menu.backward"
-msgstr "Enviar atrás"
-
-#: src/app/main/ui/workspace/context_menu.cljs:185
-msgid "workspace.shape.menu.copy"
-msgstr "Copiar"
-
-#: src/app/main/ui/workspace/context_menu.cljs:203
-msgid "workspace.shape.menu.copy-css"
-msgstr "Copiar como CSS"
-
-#: src/app/main/ui/workspace/context_menu.cljs:205
-msgid "workspace.shape.menu.copy-css-nested"
-msgstr "Copiar como CSS (capas anidadas)"
-
-#: src/app/main/ui/workspace/context_menu.cljs:188
-msgid "workspace.shape.menu.copy-link"
-msgstr "Copiar enlace"
-
-#: src/app/main/ui/workspace/context_menu.cljs:201
-msgid "workspace.shape.menu.copy-paste-as"
-msgstr "Copiar/Pegar como ..."
-
-#: src/app/main/ui/workspace/context_menu.cljs:213
-msgid "workspace.shape.menu.copy-props"
-msgstr "Copiar propiedades"
-
-#: src/app/main/ui/workspace/context_menu.cljs:210
-msgid "workspace.shape.menu.copy-text"
-msgstr "Copiar como texto"
-
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
-msgid "workspace.shape.menu.create-annotation"
-msgstr "Crear una nota"
-
-#: src/app/main/ui/workspace/context_menu.cljs:364
-msgid "workspace.shape.menu.create-artboard-from-selection"
-msgstr "Tablero de selección"
-
-#: src/app/main/ui/workspace/context_menu.cljs:561
-msgid "workspace.shape.menu.create-component"
-msgstr "Crear componente"
-
+#: src/app/main/ui/workspace/context_menu.cljs:587, src/app/main/ui/workspace/sidebar/assets/common.cljs:475, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:771
msgid "workspace.shape.menu.add-variant"
msgstr "Crear variante"
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:769
msgid "workspace.shape.menu.add-variant-property"
msgstr "Añadir nueva propiedad"
-msgid "workspace.shape.menu.remove-variant-property"
-msgstr "Eliminar propiedad"
+#: src/app/main/ui/workspace/context_menu.cljs:266
+msgid "workspace.shape.menu.back"
+msgstr "Enviar al fondo"
+#: src/app/main/ui/workspace/context_menu.cljs:263
+msgid "workspace.shape.menu.backward"
+msgstr "Enviar atrás"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:186
+msgid "workspace.shape.menu.copy"
+msgstr "Copiar"
+
+#: src/app/main/ui/workspace/context_menu.cljs:204
+msgid "workspace.shape.menu.copy-css"
+msgstr "Copiar como CSS"
+
+#: src/app/main/ui/workspace/context_menu.cljs:206
+msgid "workspace.shape.menu.copy-css-nested"
+msgstr "Copiar como CSS (capas anidadas)"
+
+#: src/app/main/ui/workspace/context_menu.cljs:189
+msgid "workspace.shape.menu.copy-link"
+msgstr "Copiar enlace"
+
+#: src/app/main/ui/workspace/context_menu.cljs:202
+msgid "workspace.shape.menu.copy-paste-as"
+msgstr "Copiar/Pegar como ..."
+
+#: src/app/main/ui/workspace/context_menu.cljs:214
+msgid "workspace.shape.menu.copy-props"
+msgstr "Copiar propiedades"
+
+#: src/app/main/ui/workspace/context_menu.cljs:211
+msgid "workspace.shape.menu.copy-text"
+msgstr "Copiar como texto"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
+msgid "workspace.shape.menu.create-annotation"
+msgstr "Crear una nota"
+
+#: src/app/main/ui/workspace/context_menu.cljs:366
+msgid "workspace.shape.menu.create-artboard-from-selection"
+msgstr "Tablero de selección"
+
+#: src/app/main/ui/workspace/context_menu.cljs:568
+msgid "workspace.shape.menu.create-component"
+msgstr "Crear componente"
+
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Crear múltiples componentes"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Cortar"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Eliminar"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Eliminar inicio de flujo"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Desacoplar instancia"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Desacoplar instancias"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Diferencia"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Duplicar"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Editar"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Exclusión"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Aplanar"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Voltear horizontal"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Voltear vertical"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Inicio de flujo"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Mover hacia delante"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Mover al frente"
@@ -6365,107 +6592,111 @@ msgstr "Mover al frente"
msgid "workspace.shape.menu.go-main"
msgstr "Ir al archivo del componente principal"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Agrupar"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Ocultar"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Mostrar/Ocultar Interfaz"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Intersección"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Bloquear"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Crear máscara"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Pegar"
-#: src/app/main/ui/workspace/context_menu.cljs:217
+#: src/app/main/ui/workspace/context_menu.cljs:218
msgid "workspace.shape.menu.paste-props"
msgstr "Pegar propiedades"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Ruta"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Eliminar flex layout"
-#: src/app/main/ui/workspace/context_menu.cljs:531
+#: src/app/main/ui/workspace/context_menu.cljs:535
msgid "workspace.shape.menu.remove-grid"
msgstr "Eliminar grid layout"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1022
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1031
msgid "workspace.shape.menu.remove-layout"
msgstr "Eliminar layout"
-#: src/app/main/ui/workspace/context_menu.cljs:312
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:856
+msgid "workspace.shape.menu.remove-variant-property"
+msgstr "Eliminar propiedad"
+
+#: src/app/main/ui/workspace/context_menu.cljs:313
msgid "workspace.shape.menu.rename"
msgstr "Renombrar"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Deshacer modificaciones"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Restaurar componente principal"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Seleccionar capa"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Mostrar"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Ver en el panel de recursos"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Ver componente principal"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Quitar miniatura"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Poner como miniatura"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Convertir en vector"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Desagrupar"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Unión"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Desbloquear"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Quitar máscara"
@@ -6474,7 +6705,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:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Actualizar componente principal"
@@ -6486,11 +6717,11 @@ msgstr "Cerrar barra lateral"
msgid "workspace.sidebar.expand"
msgstr "Abrir barra lateral"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Historial"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Capas"
@@ -6526,7 +6757,7 @@ msgstr "Formas"
msgid "workspace.sidebar.layers.texts"
msgstr "Textos"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Atributos del SVG Importado"
@@ -6538,7 +6769,7 @@ msgstr "Páginas"
msgid "workspace.sidebar.sitemap.add-page"
msgstr "Añadir página"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Mapa del sitio"
@@ -6556,47 +6787,55 @@ msgstr "%s temas activos"
msgid "workspace.token.add set"
msgstr "Añadir set"
-#: src/app/main/ui/workspace/tokens/token_pill.cljs:128
-msgid "workspace.token.applied-to"
-msgstr "Aplicado a"
-
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:341
-msgid "workspace.token.back-to-themes"
-msgstr "Volver al listado de temas"
-
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:51
-msgid "workspace.token.create-new-theme"
-msgstr "Crea un nuevo tema ahora."
-
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:191, src/app/main/ui/workspace/tokens/sidebar.cljs:218
-msgid "workspace.token.create-one"
-msgstr "Crear uno."
-
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159, src/app/main/ui/workspace/tokens/modals/themes.cljs:237
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:63, src/app/main/ui/workspace/tokens/modals/themes.cljs:170, src/app/main/ui/workspace/tokens/modals/themes.cljs:279
msgid "workspace.token.add-new-theme"
msgstr "Añadir nuevo tema"
-#: src/app/main/ui/workspace/tokens/form.cljs:431
+#: src/app/main/ui/workspace/tokens/sets_context_menu.cljs:54
+msgid "workspace.token.add-set-to-group"
+msgstr "Añadir un set a este grupo"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:136
+msgid "workspace.token.applied-to"
+msgstr "Aplicado a"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:391
+msgid "workspace.token.back-to-themes"
+msgstr "Volver al listado de temas"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:54
+msgid "workspace.token.create-new-theme"
+msgstr "Crea un nuevo tema ahora."
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:134, src/app/main/ui/workspace/tokens/sidebar.cljs:190
+msgid "workspace.token.create-one"
+msgstr "Crear uno."
+
+#: src/app/main/ui/workspace/tokens/form.cljs:492
msgid "workspace.token.create-token"
msgstr "Crear un token de %s"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:228
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:278
msgid "workspace.token.delete"
msgstr "Eliminar token"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:151
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159
msgid "workspace.token.delete-theme-title"
msgstr "Borrar theme"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:225
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:275
msgid "workspace.token.duplicate"
msgstr "Duplicar token"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:212
+#: src/app/main/data/tokens.cljs:386
+msgid "workspace.token.duplicate-suffix"
+msgstr "copiar"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:262
msgid "workspace.token.edit"
msgstr "Editar token"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:333
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:383
msgid "workspace.token.edit-theme-title"
msgstr "Editar tema"
@@ -6604,72 +6843,64 @@ msgstr "Editar tema"
msgid "workspace.token.edit-themes"
msgstr "Editar temas"
-#: src/app/main/ui/workspace/tokens/form.cljs:430
+#: src/app/main/ui/workspace/tokens/form.cljs:491
msgid "workspace.token.edit-token"
msgstr "Editar token"
-#: src/app/main/ui/workspace/tokens/form.cljs:481
+#: src/app/main/ui/workspace/tokens/form.cljs:544
msgid "workspace.token.enter-token-description"
msgstr "Añade una Descripción (opcional)"
-#: src/app/main/ui/workspace/tokens/form.cljs:437
+#: src/app/main/ui/workspace/tokens/form.cljs:498
msgid "workspace.token.enter-token-name"
msgstr "Introduce un nombre para el token %s"
-#: src/app/main/ui/workspace/tokens/form.cljs:463
-msgid "workspace.token.token-value-enter"
-msgstr "Introduce un valor o un alias usando {alias}"
+#: src/app/main/ui/workspace/tokens/errors.cljs:9
+msgid "workspace.token.error-parse"
+msgstr "Error al importar: No se pudo procesar el JSON."
+
+#: src/app/main/ui/workspace/tokens/style_dictionary.cljs
+#, unused
+msgid "workspace.token.generic-error"
+msgstr "Error: "
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:109
+msgid "workspace.token.group-name"
+msgstr "Nombre del grupo"
#: src/app/main/ui/workspace/tokens/sets.cljs
#, unused
msgid "workspace.token.grouping-set-alert"
msgstr "La agrupación de sets aun no está soportada."
-#: src/app/main/ui/workspace/tokens/sets_context_menu.cljs
-msgid "workspace.token.add-set-to-group"
-msgstr "Añadir un set a este grupo"
-
-#: src/app/main/ui/workspace/tokens/style_dictionary.cljs
-msgid "workspace.token.generic-error"
-msgstr "Error: "
-
-#: src/app/main/ui/workspace/tokens/style_dictionary.cljs
-msgid "workspace.token.reference-error"
-msgstr "Errores en referencias: "
-
-#: src/app/main/ui/workspace/tokens/style_dictionary.cljs
-msgid "workspace.token.token-not-resolved"
-msgstr "No se pudo resolver el token de referencia con el nombre: %s"
-
-#: src/app/main/ui/workspace/tokens/errors.cljs
-msgid "workspace.token.error-parse"
-msgstr "Error al importar: No se pudo procesar el JSON."
-
-#: src/app/main/ui/workspace/tokens/errors.cljs
-msgid "workspace.token.invalid-json"
-msgstr "Error al importar: Datos de token no válidos en JSON."
-
-#: src/app/main/ui/workspace/tokens/errors.cljs
+#: src/app/main/ui/workspace/tokens/errors.cljs:17, src/app/main/ui/workspace/tokens/errors.cljs:21
msgid "workspace.token.import-error"
msgstr "Error al importar:"
-#: src/app/main/ui/workspace/tokens/errors.cljs
-msgid "workspace.token.self-reference"
-msgstr "El token tiene una autoreferencia"
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:414, src/app/main/ui/workspace/tokens/sidebar.cljs:415
+msgid "workspace.token.import-tooltip"
+msgstr "Al importar un fichero JSON sobreescribirás todos tus tokens, sets y themes"
-#: src/app/main/ui/workspace/tokens/errors.cljs
+#: src/app/main/ui/workspace/tokens/errors.cljs:29
msgid "workspace.token.invalid-color"
msgstr "Valor de color no válido: %s"
-#: src/app/main/ui/workspace/tokens/errors.cljs
-msgid "workspace.token.missing-references"
-msgstr "Referéncias de tokens no encontradas:"
+#: src/app/main/ui/workspace/tokens/errors.cljs:13
+msgid "workspace.token.invalid-json"
+msgstr "Error al importar: Datos de token no válidos en JSON."
-#: src/app/main/ui/workspace/tokens/errors.cljs
-msgid "workspace.token.number-too-large"
-msgstr "Valor de token no valido. El valor resuelto es muy grande: %s"
+#: src/app/main/ui/workspace/tokens/errors.cljs:16
+msgid "workspace.token.invalid-json-token-name"
+msgstr "Error al importar: Nombre de token no válido en JSON."
-#: src/app/main/ui/workspace/tokens/errors.cljs
+#: src/app/main/ui/workspace/tokens/errors.cljs:18
+msgid "workspace.token.invalid-json-token-name-detail"
+msgstr ""
+"\"%s\" no es un nombre de token válido.\n"
+"Los nombres de token solo pueden contener letras y dígitos separados por "
+"caracteres . y no pueden empezar con un signo $."
+
+#: src/app/main/ui/workspace/tokens/errors.cljs:41, src/app/main/ui/workspace/tokens/errors.cljs:45
msgid "workspace.token.invalid-value"
msgstr "Valor de token no válido: %s"
@@ -6681,138 +6912,168 @@ msgstr "La opacidad debe estar entre 0 y 100% o 0 y 1 (p.e. 50% o 0.5)."
msgid "workspace.token.stroke-width-range"
msgstr "Stroke width debe ser mayor o igual a 0."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:179
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:196
msgid "workspace.token.label.group"
msgstr "Grupo"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:179
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:197
msgid "workspace.token.label.group-optional"
msgstr "Opcional"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:191
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:199
msgid "workspace.token.label.group-placeholder"
msgstr "Añade un grupo (p. ej. Modo)"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:187
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:206
msgid "workspace.token.label.theme"
msgstr "Tema"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:200
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:208
msgid "workspace.token.label.theme-placeholder"
msgstr "Añade un Tema (p. ej. Claro)"
-#: src/app/main/ui/workspace/tokens/theme_select.cljs:88
-msgid "workspace.token.no-active-theme"
-msgstr "No hay temas activos"
+#: src/app/main/ui/workspace/tokens/errors.cljs:37
+msgid "workspace.token.missing-references"
+msgstr "Referéncias de tokens no encontradas:"
-#: src/app/main/ui/workspace/tokens/sets.cljs:91
-msgid "workspace.token.set-edit-placeholder"
-msgstr "Añade un nombre - usa '/' para grupos"
-
-#: src/app/main/ui/workspace/tokens/sets.cljs:103
-msgid "workspace.token.no-permisions-set"
-msgstr "Debes ser editor para activar / desactivar sets"
-
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:200
-msgid "workspace.token.no-permission-themes"
-msgstr "Debes ser editor para usar temas"
-
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:154
msgid "workspace.token.no-active-sets"
msgstr "No hay sets activos"
-#: src/app/main/ui/workspace/tokens/sets.cljs:401, src/app/main/ui/workspace/tokens/sets.cljs:405
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:89
+msgid "workspace.token.no-active-theme"
+msgstr "No hay temas activos"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:110
+msgid "workspace.token.no-permisions-set"
+msgstr "Debes ser editor para activar / desactivar sets"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:199
+msgid "workspace.token.no-permission-themes"
+msgstr "Debes ser editor para usar temas"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:504
msgid "workspace.token.no-sets-create"
msgstr "Aun no hay sets definidos. Crea uno primero"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:187
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:186
msgid "workspace.token.no-themes"
msgstr "No hay temas."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:47
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:50
msgid "workspace.token.no-themes-currently"
msgstr "Actualmente no existen temas."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:137
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:153
msgid "workspace.token.num-active-sets"
msgstr "%s sets activos"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:147
-msgid "workspace.token.sets-hint"
-msgstr "Editar tema y gestionar sets"
+#: src/app/main/ui/workspace/tokens/errors.cljs:33
+msgid "workspace.token.number-too-large"
+msgstr "Valor de token no valido. El valor resuelto es muy grande: %s"
-#: src/app/main/ui/workspace/tokens/token_pill.cljs:114
+#: src/app/main/ui/workspace/tokens/errors.cljs:45
+msgid "workspace.token.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/token_pill.cljs:122
#, fuzzy
msgid "workspace.token.original-value"
msgstr "Valor original: %s"
-#: src/app/main/ui/workspace/tokens/token_pill.cljs:120
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:128
msgid "workspace.token.ref-not-valid"
msgstr "La referencia no es válida o no se encuentra en ningún set activo."
-#: src/app/main/ui/workspace/tokens/form.cljs:205, src/app/main/ui/workspace/tokens/form.cljs:208, src/app/main/ui/workspace/tokens/token_pill.cljs:115
+#: src/app/main/ui/workspace/tokens/style_dictionary.cljs
+#, unused
+msgid "workspace.token.reference-error"
+msgstr "Errores en referencias: "
+
+#: src/app/main/ui/workspace/tokens/form.cljs:217, src/app/main/ui/workspace/tokens/form.cljs:221, src/app/main/ui/workspace/tokens/token_pill.cljs:123
#, fuzzy
msgid "workspace.token.resolved-value"
msgstr "Valor resuelto: %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:203
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:240
msgid "workspace.token.save-theme"
msgstr "Guardar tema"
-#: src/app/main/ui/workspace/tokens/sets.cljs:200, src/app/main/ui/workspace/tokens/sets.cljs:305
+#: src/app/main/ui/workspace/tokens/sets.cljs:239, src/app/main/ui/workspace/tokens/sets.cljs:340
msgid "workspace.token.select-set"
msgstr "Selecciona set"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:346
+#: src/app/main/ui/workspace/tokens/errors.cljs:25
+msgid "workspace.token.self-reference"
+msgstr "El token tiene una autoreferencia"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:98
+msgid "workspace.token.set-edit-placeholder"
+msgstr "Añade un nombre - usa '/' para grupos"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:396
msgid "workspace.token.set-selection-theme"
msgstr "Define que sets de tokens deberian formar parte de este tema:"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs
-#, unused
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:148
+msgid "workspace.token.sets-hint"
+msgstr "Editar tema y gestionar sets"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:136
msgid "workspace.token.theme-name"
msgstr "Tema %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:43, src/app/main/ui/workspace/tokens/modals/themes.cljs:88
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:101
+msgid "workspace.token.themes-description"
+msgstr ""
+"Aquí puedes gestionar tus temas, activarlos / desactivarlos y configurar "
+"los sets activos en cada uno."
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:46, src/app/main/ui/workspace/tokens/modals/themes.cljs:99
msgid "workspace.token.themes-list"
msgstr "Lista de temas"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:45, src/app/main/ui/workspace/tokens/modals/themes.cljs:91
-msgid "workspace.token.themes-description"
-msgstr "Aquí puedes gestionar tus temas, activarlos / desactivarlos y configurar los sets activos en cada uno."
-
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:112
-msgid "workspace.token.group-name"
-msgstr "Nombre del grupo"
-
-#: src/app/main/ui/workspace/tokens/form.cljs:482
+#: src/app/main/ui/workspace/tokens/form.cljs:545
msgid "workspace.token.token-description"
msgstr "Descripción"
-#: src/app/main/ui/workspace/tokens/form.cljs:440
+#: src/app/main/ui/workspace/tokens/form.cljs:501
msgid "workspace.token.token-name"
msgstr "Nombre"
-#: src/app/main/ui/workspace/tokens/form.cljs:464
+#: src/app/main/ui/workspace/tokens/style_dictionary.cljs:259
+msgid "workspace.token.token-not-resolved"
+msgstr "No se pudo resolver el token de referencia con el nombre: %s"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:526
msgid "workspace.token.token-value"
msgstr "Valor"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:348
+#: src/app/main/ui/workspace/tokens/form.cljs:525
+msgid "workspace.token.token-value-enter"
+msgstr "Introduce un valor o un alias usando {alias}"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:345
+msgid "workspace.token.inactive-set"
+msgstr "Inactivo"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:340
+msgid "workspace.token.inactive-set-description"
+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/sidebar.cljs:405
msgid "workspace.token.tools"
msgstr "Herramientas"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:415
-msgid "workspace.token.import-tooltip"
-msgstr "Al importar un fichero JSON sobreescribirás todos tus tokens, sets y themes"
-
-#: src/app/main/ui/workspace/tokens/token_pill.cljs:123
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:131
msgid "workspace.token.value-not-valid"
msgstr "El valor no es válido"
-#: src/app/main/ui/workspace/tokens/form.cljs:458
+#: src/app/main/ui/workspace/tokens/form.cljs:520
msgid "workspace.token.warning-name-change"
msgstr "Al renombrar este token se romperán las referencias al nombre anterior"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Recursos"
@@ -6820,43 +7081,43 @@ msgstr "Recursos"
msgid "workspace.toolbar.color-palette"
msgstr "Paleta de colores (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Comentarios (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Curva (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Elipse (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:128, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Tablero (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:128, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:131
msgid "workspace.toolbar.frame-first-time"
msgstr "Crear tablero. Click y arrastrar para definir el tamaño. (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Imagen (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Mover (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Ruta (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:201, src/app/main/ui/workspace/top_toolbar.cljs:202
+#: src/app/main/ui/workspace/top_toolbar.cljs:210, src/app/main/ui/workspace/top_toolbar.cljs:211
msgid "workspace.toolbar.plugins"
msgstr "Extensiones (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Rectángulo (%s)"
@@ -6865,7 +7126,7 @@ msgstr "Rectángulo (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Atajos de teclado (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Texto (%s)"
@@ -6873,7 +7134,7 @@ msgstr "Texto (%s)"
msgid "workspace.toolbar.text-palette"
msgstr "Tipografías (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:220, src/app/main/ui/workspace/top_toolbar.cljs:221
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
msgid "workspace.toolbar.toggle-toolbar"
msgstr "Alternar barra de herramientas"
@@ -7031,19 +7292,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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Ignorar"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
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:1220
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:1226
msgid "workspace.updates.update"
msgstr "Actualizar"
@@ -7103,11 +7364,11 @@ msgstr "¿Quieres restaurar esta versión?"
msgid "workspace.versions.snapshot-menu"
msgstr "Abrir menu de versiones"
-#: src/app/main/ui/workspace/sidebar.cljs:284
+#: src/app/main/ui/workspace/sidebar.cljs:285
msgid "workspace.versions.tab.actions"
msgstr "Acciones"
-#: src/app/main/ui/workspace/sidebar.cljs:281
+#: src/app/main/ui/workspace/sidebar.cljs:282
msgid "workspace.versions.tab.history"
msgstr "Histórico"
@@ -7128,81 +7389,14 @@ msgstr "Los autoguardados duran %s días."
msgid "workspace.viewport.click-to-close-path"
msgstr "Pulsar para cerrar la ruta"
-msgid "dashboard.mark-all-as-read.success"
-msgstr "Se han marcado todas las noficaciones como leídas"
+msgid "workspace.notification-pill.detail"
+msgstr "Detalles"
-msgid "label.mark-all-as-read"
-msgstr "Marcar todo como leído"
+msgid "dashboard.import.import-error.disclaimer"
+msgstr "No todos los ficheros han sido importados"
-msgid "workspace.versions.tab.actions"
-msgstr "Acciones"
+msgid "dashboard.import.import-error.message1"
+msgstr "Estos ficheros tienen errores:"
-msgid "loader.tips.01.title"
-msgstr "Componentes Reutilizables"
-
-msgid "loader.tips.01.message"
-msgstr "Mantén tus diseños consistentes y fáciles de actualizar en todos los proyectos."
-
-msgid "loader.tips.02.title"
-msgstr "Colaboración en Tiempo Real"
-
-msgid "loader.tips.02.message"
-msgstr "Trabaja con tu equipo en vivo, comparte feedback al instante."
-
-msgid "loader.tips.03.title"
-msgstr "Auto Layout como CSS"
-
-msgid "loader.tips.03.message"
-msgstr "Diseña de forma flexible con controles de diseño similares a CSS."
-
-msgid "loader.tips.04.title"
-msgstr "Exportar a Código"
-
-msgid "loader.tips.04.message"
-msgstr "Obtén código CSS y SVG directamente de tus diseños."
-
-msgid "loader.tips.05.title"
-msgstr "Bibliotecas de Diseño"
-
-msgid "loader.tips.05.message"
-msgstr "Comparte recursos y estilos para mantener la consistencia."
-
-msgid "loader.tips.06.title"
-msgstr "Prototipos Interactivos"
-
-msgid "loader.tips.06.message"
-msgstr "Da vida a tus ideas con animaciones y transiciones."
-
-msgid "loader.tips.07.title"
-msgstr "Formatos Web Estándar"
-
-msgid "loader.tips.07.message"
-msgstr "Penpot usa SVG y CSS para un desarrollo sin problemas."
-
-msgid "loader.tips.08.title"
-msgstr "Atajos de Teclado"
-
-msgid "loader.tips.08.message"
-msgstr "Acelera tu flujo de trabajo con atajos útiles como Shift + A para Auto Layout."
-
-msgid "loader.tips.09.title"
-msgstr "Modo Claro y Oscuro"
-
-msgid "loader.tips.09.message"
-msgstr "Elige el tema que mejor se adapte a tu estilo."
-
-msgid "loader.tips.10.title"
-msgstr "Soporte de Plugins"
-
-msgid "loader.tips.10.message"
-msgstr "Extiende Penpot con plugins creados por la comunidad para funcionalidad extra."
-
-msgid "errors.token-set-already-exists"
-msgstr "Ya existe un set con el mismo nombre"
-
-msgid "errors.token-theme-already-exists"
-msgstr "Ya existe un theme con este nombre"
-
-#: src/app/main/data/tokens.cljs:198
-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."
+msgid "dashboard.import.import-error.message2"
+msgstr "Los ficheros con error no serán importados."
diff --git a/frontend/translations/es_419.po b/frontend/translations/es_419.po
index 2073959ce3..357f49b69c 100644
--- a/frontend/translations/es_419.po
+++ b/frontend/translations/es_419.po
@@ -34,13 +34,13 @@ msgstr "Crear cuenta demo"
msgid "auth.create-demo-profile"
msgstr "¿Solo quieres probarlo?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Este es un servicio DEMO, NO LO UTILICE para trabajos reales, los proyectos "
"se borrarán periódicamente."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "¿Has olvidado tu contraseña?"
@@ -52,27 +52,27 @@ msgstr "Nombre completo"
msgid "auth.login-here"
msgstr "Inicie sesión aquí"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Iniciar sesión"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "Open ID"
@@ -98,7 +98,7 @@ msgstr ""
msgid "auth.notifications.team-invitation-accepted"
msgstr "Se unió al equipo con éxito"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Contraseña"
@@ -126,11 +126,11 @@ msgstr "¿Has olvidado tu contraseña?"
msgid "auth.recovery-submit"
msgstr "cambia tu contraseña"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "¿No tienes cuenta aún?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Crea una cuenta"
@@ -143,7 +143,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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Términos de servicio"
@@ -162,7 +162,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:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Publicar"
@@ -234,7 +234,7 @@ msgstr "Compartir prototipos"
msgid "common.share-link.view-all"
msgstr "Seleccionar todo"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Despublicar"
@@ -288,7 +288,7 @@ msgstr "Tutorial de la interfaz"
msgid "dashboard.access-tokens.copied-success"
msgstr "Token copiado"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Generar nuevo token"
@@ -296,11 +296,11 @@ msgstr "Generar nuevo token"
msgid "dashboard.access-tokens.create.success"
msgstr "Token de acceso creado correctamente."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Presione el botón \"Generar nuevo token\" para generar uno."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "No tienes tokens hasta el momento."
@@ -324,23 +324,23 @@ msgstr "90 días"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Nunca"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Expirado el %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Vence el %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Sin fecha de vencimiento"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Tokens de acceso personal"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Los tokens de acceso personal funcionan como una alternativa a nuestro "
@@ -363,7 +363,7 @@ msgstr "Agregar como biblioteca compartida"
msgid "dashboard.change-email"
msgstr "Cambiar el correo electrónico"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(copiar)"
@@ -501,27 +501,27 @@ msgstr "Invitar a la gente"
msgid "dashboard.leave-team"
msgstr "dejar el equipo"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Bibliotecas y plantillas"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "Explore más de ellos y sepa cómo contribuir"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "Hubo un problema al importar la plantilla. La plantilla no fue importada."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Bibliotecas"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "cargando tus archivos…"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "cargando tus fuentes…"
@@ -537,11 +537,11 @@ msgstr "Mover %s archivos a"
msgid "dashboard.move-to-other-team"
msgstr "Pasar a otro equipo"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Nuevo archivo"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Archivo nuevo"
@@ -549,7 +549,7 @@ msgstr "Archivo nuevo"
msgid "dashboard.new-project"
msgstr "+ Nuevo proyecto"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Nuevo proyecto"
diff --git a/frontend/translations/eu.po b/frontend/translations/eu.po
index fae56a29ed..7f63c84ced 100644
--- a/frontend/translations/eu.po
+++ b/frontend/translations/eu.po
@@ -34,13 +34,13 @@ msgstr "Sortu probak egiteko kontua"
msgid "auth.create-demo-profile"
msgstr "Probatu egin nahi al duzu?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Hau PROBAK EGITEKO zerbitzua da. EZ ERABILI benetako lana egiteko, hemengo "
"proiektuak noizean behin ezabatu egingo dira."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Pasahitza ahaztu duzu?"
@@ -52,27 +52,27 @@ msgstr "Izen osoa"
msgid "auth.login-here"
msgstr "Sartu"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Sartu"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -96,7 +96,7 @@ msgstr "Eposta mezu bat bidali dizugu zure pasahitza berreskuratzeko."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Taldera ondo gehitu zara"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Pasahitza"
@@ -124,11 +124,11 @@ msgstr "Pasahitza ahaztu duzu?"
msgid "auth.recovery-submit"
msgstr "Aldatu pasahitza"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Ez duzu konturik?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Sortu kontua"
@@ -141,7 +141,7 @@ msgstr "Sortu kontua"
msgid "auth.sidebar-tagline"
msgstr "Diseinuak eta prototipoak egiteko kode irekiko soluzioa."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Zerbitzuaren erabilpen-baldintzak"
@@ -149,7 +149,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:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Argitaratu"
@@ -219,7 +219,7 @@ msgstr "Partekatu prototipoak"
msgid "common.share-link.view-all"
msgstr "Aukeratu guztiak"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Argitaraketa atzera bota"
@@ -277,7 +277,7 @@ msgstr "Gehitu partekatutako liburutegi bezala"
msgid "dashboard.change-email"
msgstr "Eposta aldatu"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(kopia)"
@@ -397,25 +397,25 @@ msgstr "Sartu partekatutako liburutegiak fitxategiaren liburutegietan"
msgid "dashboard.export.title"
msgstr "Esportatu fitxategiak"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Letra-tipoa ondo ezabatu da"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Baztertu guztiak"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Ez duzu pertsonalizatutako letra-tiporik."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "Letra-tipo 1 gehitu da"
msgstr[1] "%s letra-tipo gehitu dira"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -425,22 +425,21 @@ msgstr ""
"honetako letra-tipoak kargatu daitezke: **TTF, OTF and WOFF** (batekin "
"nahikoa da)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Zureak diren edo Penpoten erabiltzeko lizentzia duzun letra-tipoak bakarrik "
"kargatu ditzakezu. Informazio gehiago lortzeko irakurri Edukiaren "
-"eskubideen atala: [Penpoten erabilpen "
-"baldintzak](%s). Letra-tipoen lizentzien "
-"inguruan irakurtzea ere interesgarria izan daiteke: [letra-tipoen "
-"lizentziak](https://www.typography.com/faq)."
+"eskubideen atala: [Penpoten erabilpen baldintzak](%s). Letra-tipoen "
+"lizentzien inguruan irakurtzea ere interesgarria izan daiteke: "
+"[letra-tipoen lizentziak](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Kargatu guztiak"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -450,7 +449,7 @@ msgstr ""
"dezakezu. Gainera, weberako letra-tipoak sortzeko "
"[Transfonter](https://transfonter.org/) erabiltzea gomendatzen dugu. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Inportatu Penpot fitxategiak"
@@ -462,11 +461,11 @@ msgstr "Ezin izan dugu fitxategia inportatu"
msgid "dashboard.import.import-error"
msgstr "Errorea gertatu da fitxategia inportatzean. Ezin izan da inportatu."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgstr "%s fitxategi ondo inportatu dira."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Fitxategi batzuk inportatu ez diren objektu akasdunak dituzte."
@@ -506,27 +505,27 @@ msgstr "Gonbidatu taldera"
msgid "dashboard.leave-team"
msgstr "Utzi taldea"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Liburutegi eta txantiloiak"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "Gehiago ikusi eta ikasi nola lagundu"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "Arazo bat egon da txantiloia inportatzean. Ezin izan da inportatu."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Partekatutako liburutegiak"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "zure fitxategiak kargatzen…"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "zure letra-tipoak kargatzen…"
@@ -542,11 +541,11 @@ msgstr "Mugitu %s fitxategi"
msgid "dashboard.move-to-other-team"
msgstr "Mugitu beste talde batera"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Fitxategi berria"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Fitxategi berria"
@@ -554,7 +553,7 @@ msgstr "Fitxategi berria"
msgid "dashboard.new-project"
msgstr "+ Proiektu berria"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Proiektu berria"
@@ -586,7 +585,7 @@ msgstr "%s kide"
msgid "dashboard.open-in-new-tab"
msgstr "Ireki fitxa berrian"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Aukerak"
@@ -631,7 +630,7 @@ msgstr "Aldatu hizkuntza"
msgid "dashboard.select-ui-theme"
msgstr "Aukeratu gaia"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Ikusi fitxategi guztiak"
@@ -651,7 +650,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Zure fitxategia ondo mugitu da"
@@ -745,7 +744,7 @@ msgstr "Eposta"
msgid "dashboard.your-name"
msgstr "Izena"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Zure Penpot"
@@ -761,11 +760,11 @@ msgstr "Oharra"
msgid "ds.component-subtitle"
msgstr "Eguneratzeko dauden osagaiak:"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Utzi"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Ados"
@@ -773,7 +772,7 @@ msgstr "Ados"
msgid "ds.confirm-title"
msgstr "Ziur?"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Saioa hasteko hornitzailea ez dago konfiguratuta."
@@ -781,15 +780,15 @@ msgstr "Saioa hasteko hornitzailea ez dago konfiguratuta."
msgid "errors.auth.unable-to-login"
msgstr "Badirudi ez zarela sartu edo zure saioa iraungi egin dela."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "Ezin izan da %s letra-tipoa kargatu"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "Ezin izan dira %s letra-tipoak kargatu"
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Zure nabigatzaileak ezin du hori egin"
@@ -801,7 +800,7 @@ msgstr "Eposta helbide hori erabilita dago"
msgid "errors.email-already-validated"
msgstr "Eposta helbide hori egiaztatuta dago."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Ezin duzu zure eposta helbidea pasahitz gisa erabiliz"
@@ -826,7 +825,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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Erroreren bat gertatu da."
@@ -839,8 +838,7 @@ msgstr "Kolorea ez da zuzena"
msgid "errors.invalid-email"
msgstr "Mesedez, idatzi eposta helbide zuzen bat"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "Egiaztapenereko epostak bat etorri behar du aurrekoarekin"
@@ -856,7 +854,7 @@ msgstr "Gonbidapena ez da zuzena"
msgid "errors.invite-invalid.info"
msgstr "Gonbidapen hau bertan behera utzi dute edo iraungi egin da."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "LDAP bidez sartzea desgaituta dago."
@@ -894,7 +892,7 @@ msgstr "Pasahitzaren egiaztapenak bat etorri behar du aurrekoarekin"
msgid "errors.password-too-short"
msgstr "Pasahitzak gutxienez 8 karaktere izan behar ditu"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Profila blokeatuta dago"
@@ -958,12 +956,11 @@ msgstr "Errore ezezaguna balidazioan"
msgid "errors.webhooks.unexpected-status"
msgstr "Espero ez zen egoera %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "Izena edo pasahitza ez dira zuzenak."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Aurreko pasahitza ez da zuzena"
@@ -1009,11 +1006,11 @@ msgstr "Zure zalantza teknikoak erantzuteko kontua."
msgid "feedback.twitter-title"
msgstr "Laguntzarako X kontua"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Errore bat gertatu da"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Desenfokatuta"
@@ -1021,31 +1018,31 @@ msgstr "Desenfokatuta"
msgid "inspect.attributes.blur.value"
msgstr "Balioa"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Betegarria"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Deskargatu jatorrizko irudia"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Altuera"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Zabalera"
@@ -1084,15 +1081,15 @@ msgstr "Goian"
msgid "inspect.attributes.layout.width"
msgstr "Zabalera"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Itzala"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Tamaina eta posizioa"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Ertza"
@@ -1129,139 +1126,139 @@ msgstr "Solidoa"
msgid "inspect.attributes.stroke.width"
msgstr "Zabalera"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Letra-tipo"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Letra-tipo familia"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Letra-tipoaren tamaina"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Letra-tipoaren estiloa"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Letra tipoaren lodiera"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Hizkien tartea"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Lerroartea"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Testuaren apainketa"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Bat ere ez"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Marratu"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Azpimarratu"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Testua eraldatu"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Letra xeheak"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Bat ere ez"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Lehenengoa letra larriz"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Letra larriz"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr ""
"Diseinua ikuskatzeari buruz gehiago jakin nahi baduzu zoaz Penpoten "
"laguntza zentrora"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Informazio gehiago ikuskatzeari buruz"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr ""
"Aukeratu forma bat, taula bat edo talde bat beren propietateak eta kodea "
"ikuskatzeko"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Kodea"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Borobila"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Osagaia"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Kurba"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Mahaigaina"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Taldea"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Irudia"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Maskara"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s aukeratuta"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Trazadura"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Laukia"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Testua"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Informazioa"
@@ -1277,7 +1274,7 @@ msgstr "Onartu"
msgid "labels.active"
msgstr "Aktibo"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Gehitu letra-tipo pertsonalizatua"
@@ -1285,7 +1282,7 @@ msgstr "Gehitu letra-tipo pertsonalizatua"
msgid "labels.admin"
msgstr "Kudeaketa"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Guztia"
@@ -1307,19 +1304,19 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Zerbitzariaren errorea (Bad Gateway)"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Utzi"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Itxi"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Iruzkinak"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Komunitatea"
@@ -1327,7 +1324,7 @@ msgstr "Komunitatea"
msgid "labels.confirm-password"
msgstr "Berretsi pasahitza"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Jarraitu"
@@ -1343,7 +1340,7 @@ msgstr "Penpot kontu batekin jarraitu dezakezu"
msgid "labels.copy-invitation-link"
msgstr "Kopiatu esteka"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Sortu"
@@ -1363,15 +1360,15 @@ msgstr "Pertsonalizatutako letra-tipoak"
msgid "labels.dashboard"
msgstr "Lanlekua"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Ezabatu"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Ezabatu iruzkina"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Ezabatu haria"
@@ -1383,11 +1380,11 @@ msgstr "Ezabatu gonbidapena"
msgid "labels.delete-multi-files"
msgstr "Ezabatu %s fitxategi"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Zirriborroak"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Editatu"
@@ -1403,7 +1400,7 @@ msgstr "Edizioa"
msgid "labels.expired-invitation"
msgstr "Iraungita"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Esportatu"
@@ -1415,7 +1412,7 @@ msgstr "Iritziak jasotzeko osagaia desgaituta dago"
msgid "labels.feedback-sent"
msgstr "Iritzia ondo bidali da"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Letra-tipo familia"
@@ -1423,19 +1420,19 @@ msgstr "Letra-tipo familia"
msgid "labels.font-providers"
msgstr "Letra-tipo hornitzaileak"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Estiloak"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Letra-tipoak"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "GitHubeko errepositorioa"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Eman zure iritzia"
@@ -1443,11 +1440,11 @@ msgstr "Eman zure iritzia"
msgid "labels.go-back"
msgstr "Itzuli"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Laguntza zentroa"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Ezkutatu ebatzitzako iruzkinak"
@@ -1455,7 +1452,7 @@ msgstr "Ezkutatu ebatzitzako iruzkinak"
msgid "labels.inactive"
msgstr "Inaktibo"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Instalatutako letra-tipoak"
@@ -1477,7 +1474,7 @@ msgstr "Gonbidapenak"
msgid "labels.language"
msgstr "Hizkuntzak"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Liburutegi eta Txantiloiak"
@@ -1485,7 +1482,7 @@ msgstr "Liburutegi eta Txantiloiak"
msgid "labels.log-or-sign"
msgstr "Sartu edo eman izena"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Irten"
@@ -1501,7 +1498,7 @@ msgstr "Kideak"
msgid "labels.new-password"
msgstr "Pasahitz berria"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "Ez duzu iruzkinen inguruko jakinarazpenik."
@@ -1523,7 +1520,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:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "Fitxategi 1"
@@ -1574,7 +1571,7 @@ msgstr "Profila"
msgid "labels.projects"
msgstr "Proiektuak"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Bertsioaren oharrak"
@@ -1592,7 +1589,7 @@ msgstr "Kendu"
msgid "labels.remove-member"
msgstr "Kendu kidea"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Berrizendatu"
@@ -1612,11 +1609,11 @@ msgstr "Berriz saiatu"
msgid "labels.role"
msgstr "Rola"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Gorde"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Bilatu letra-tipoa"
@@ -1648,15 +1645,15 @@ msgstr "Partekatu prototipoa"
msgid "labels.shared-libraries"
msgstr "Partekatutako liburutegiak"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Erakutsi iruzkin guztiak"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Erakutsi iruzkinen zerrenda"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Erakutsi zure iruzkinak bakarrik"
@@ -1664,7 +1661,7 @@ msgstr "Erakutsi zure iruzkinak bakarrik"
msgid "labels.status"
msgstr "Egoera"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Tutorialak"
@@ -1680,15 +1677,15 @@ msgstr "Eguneratu"
msgid "labels.update-team"
msgstr "Eguneratu taldea"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Kargatu"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Kargatu letra-tipoa"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Kargatzen…"
@@ -1704,7 +1701,7 @@ msgstr "Bistarazlea"
msgid "labels.webhooks"
msgstr "Webhookak"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Idatzi iruzkin berria"
@@ -1712,7 +1709,7 @@ msgstr "Idatzi iruzkin berria"
msgid "labels.you"
msgstr "(zu)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "zure kontua"
@@ -1794,17 +1791,17 @@ msgstr ""
msgid "modals.delete-account.title"
msgstr "Zure kontua benetan ezabatu nahi duzu?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Ezabatu elkarrizketa"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Benetan elkarrizketa hau ezabatu nahi al duzu? Iruzkin guztiak ezabatu "
"egingo dira."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Ezabatu elkarrizketa"
@@ -1832,31 +1829,31 @@ msgstr "Benetan %s fitxategi ezabatu egin nahi dituzu?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "%s fitxategi ezabatzen"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Benetan letra-tipo estilo hau ezabatu egin nahi duzu? Ez da kargatuko "
"fitxategiren baten erabiltzen baduzu."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Letra-tipo estiloa ezabatzen"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Benetan letra-tipo hau ezabatu egin nahi duzu? Ez da kargatuko fitxategiren "
"baten erabiltzen baduzu."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Letra-tipoa ezabatzen"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Benetan orrialde hau ezabatu egin nahi duzu?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Ezabatu orrialdea"
@@ -2067,21 +2064,21 @@ msgstr ""
msgid "modals.update-remote-component-in-bulk.message"
msgstr "Eguneratu liburutegiaren osagaiak"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Eguneratu"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Utzi"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Eguneratu liburutegiaren osagaia"
@@ -2135,30 +2132,30 @@ msgstr "Bideo tutorialak"
msgid "onboarding-v2.before-start.title"
msgstr "Hasi aurretik"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Harpidetu Penpoten buletinera produktuaren garapenaren inguruko albisteak "
"ezagutzeko."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr ""
"Bidali Penpoti buruzko albisteak (blogeko artikuluak, bideo-tutorialak, "
"zuzenekoak...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Zure pribatutasuna zaintzen dugu, hemen irakurri dezakezu gure "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Zuretzat garrantzitsuak diren mezuak bakarrik bidaliko dizkizugu. "
"Harpidetza zuk nahi duzunean eten dezakezu buletinean dagoen esteka "
"erabiliz."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr ""
"Bidali produktuaren eguneraketak (ezaugarri berriak, bertsioak, "
@@ -2220,17 +2217,17 @@ msgstr "Gonbidatu rol honekin:"
msgid "onboarding.newsletter.accept"
msgstr "Bai, harpidetu"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"Zure harpidetza eskaera ondo bidali du, berrespen mezu bat jasoko duzu zure "
"helbidean."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Pribatutasun politika."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Penpoti buruzko albisteak jaso nahi dituzu?"
@@ -2280,7 +2277,7 @@ msgstr "Penpot"
msgid "profile.recovery.go-to-login"
msgstr "Sartu"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Batzuk"
@@ -2466,7 +2463,7 @@ msgstr "Sortu berria"
msgid "shortcuts.cut"
msgstr "Moztu"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Jaitsi zooma"
@@ -2566,7 +2563,7 @@ msgstr "Banatu horizontalki"
msgid "shortcuts.hide-ui"
msgstr "Erakutsi/ezkutatu interfazea"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Zooma handitu"
@@ -2898,15 +2895,15 @@ msgstr "Zooma aukeraketara"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Letra-tipoen hornitzaileak - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Letra-tipoak - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Proiektuak - %s - Penpot"
@@ -2914,7 +2911,7 @@ msgstr "Proiektuak - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Bilatu - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Partekatutako liburutegiak - %s - Penpot"
@@ -2958,7 +2955,7 @@ msgstr "Webhookak - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Ikusteko modua - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -3063,15 +3060,15 @@ msgstr "Lerrokatu goian (%s)"
msgid "workspace.assets.assets"
msgstr "Baliabideak"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Guztiak"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Koloreak"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Osagaiak"
@@ -3085,15 +3082,15 @@ msgstr ""
"Zure elementuak berrizendatu egingo dira: \"taldearen izena / elementuaren "
"izena\""
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Ezabatu"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Bikoiztu"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "Bikoiztu nagusia"
@@ -3101,11 +3098,11 @@ msgstr "Bikoiztu nagusia"
msgid "workspace.assets.edit"
msgstr "Editatu"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Grafikoak"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Taldekatu"
@@ -3113,19 +3110,15 @@ msgstr "Taldekatu"
msgid "workspace.assets.group-name"
msgstr "Taldearen izena"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Liburutegiak"
-
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "liburutegi lokala"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Ez da baliabiderik aurkitu"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Izena aldatu"
@@ -3133,7 +3126,7 @@ msgstr "Izena aldatu"
msgid "workspace.assets.rename-group"
msgstr "Berrizendatu taldea"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Bilatu baliabideak"
@@ -3144,7 +3137,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:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Letra-tipoak"
@@ -3153,27 +3146,27 @@ msgstr "Letra-tipoak"
msgid "workspace.assets.typography.font-id"
msgstr "Letra-tipoak"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Tamaina"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Aldaerak"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Joan estilo liburutegiaren fitxategira editatzeko"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Hizkien tartea"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Lerroaren altuera"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -3181,7 +3174,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Testuen estiloak"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Testua eraldatu"
@@ -3193,11 +3186,11 @@ msgstr "Banatu"
msgid "workspace.focus.focus-mode"
msgstr "Foku-modua"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Fokua kendu"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Fokua gehitu"
@@ -3323,29 +3316,28 @@ msgstr "Erakutsi letra-tipoen paleta"
msgid "workspace.header.menu.undo"
msgstr "Desegin"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Berrezarri"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Errorea gordetzean"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Gordeta"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Gordetzen"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Gorde gabeko aldaketak"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "Ikusteko modua (%s)"
@@ -3357,7 +3349,7 @@ msgstr "Bete - Eskala betetzeko"
msgid "workspace.header.zoom-fit"
msgstr "Egokitu - Eskalatu egokitzeko"
-#: src/app/main/ui/workspace/right_header.cljs:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Zoom dena ikusteko"
@@ -3365,7 +3357,7 @@ msgstr "Zoom dena ikusteko"
msgid "workspace.header.zoom-full-screen"
msgstr "Pantaila osoa"
-#: src/app/main/ui/workspace/right_header.cljs:136
+#: src/app/main/ui/workspace/right_header.cljs:104
msgid "workspace.header.zoom-selected"
msgstr "Zooma aukeraketara"
@@ -3374,7 +3366,7 @@ msgstr "Zooma aukeraketara"
msgid "workspace.libraries.add"
msgstr "Gehitu"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s kolore"
@@ -3396,31 +3388,31 @@ msgstr "Azken koloreak"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "RGB Osagarria"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Gorde kolorearen estiloa"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Fitxategien liburutegia"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "FITXATEGI HONETAKO LIBURUTEGIAK"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "LIBURUTEGIAK"
@@ -3429,43 +3421,39 @@ msgstr "LIBURUTEGIAK"
msgid "workspace.libraries.library"
msgstr "LIBURUTEGIA"
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "Ez dago eguneraketa behar duen partekatutako liburutegirik"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Ez da ezer aurkitu bilaketa honentzat: \"%s\""
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Ez dago partekatutako liburutegirik"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Bilatu partekatutako liburutegiak"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "Partekatutako liburutegiak"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Letra-tipo anitz"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Kendu esteka letra-tipo guztiei"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Eguneratu"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "EGUNERAKETAK"
@@ -3485,15 +3473,15 @@ msgstr "Taldea lausotu"
msgid "workspace.options.blur-options.title.multiple"
msgstr "Aukeraketa lausotu"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Mihisearen atzeko planoa"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Edukia aukeratu"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Osagaia"
@@ -3541,7 +3529,7 @@ msgstr "Goian eta behean"
msgid "workspace.options.design"
msgstr "Diseinua"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Esportatu"
@@ -3550,13 +3538,13 @@ msgstr "Esportatu"
msgid "workspace.options.export-multiple"
msgstr "Esportatu aukeraketa"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Aurrizkia"
@@ -3564,7 +3552,7 @@ msgstr "Aurrizkia"
msgid "workspace.options.exporting-complete"
msgstr "Esportazioa osatu da"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Esportazen…"
@@ -3694,7 +3682,7 @@ msgstr "Taldea bete"
msgid "workspace.options.group-stroke"
msgstr "Taldea trazatu"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Altuera"
@@ -4004,19 +3992,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:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Gehieneko altuera"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Gehieneko zabalera"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Gutxieneko altuera"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Gutxieneko zabalera"
@@ -4130,11 +4118,11 @@ msgstr "Tarteko espazioa"
msgid "workspace.options.layout.top"
msgstr "Goian"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Kolore gehiago"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Liburutegiko kolore gehiago"
@@ -4171,7 +4159,7 @@ msgstr "Goian ezkerrean"
msgid "workspace.options.radius-top-right"
msgstr "Goian eskuman"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Azkenak"
@@ -4179,11 +4167,11 @@ msgstr "Azkenak"
msgid "workspace.options.retry"
msgstr "Berriz saiatu"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Biraketa"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Bilatu letra-tipoa"
@@ -4193,7 +4181,7 @@ 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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Aukeratutako koloreak"
@@ -4205,43 +4193,43 @@ msgstr "Aukeraketa bete"
msgid "workspace.options.selection-stroke"
msgstr "Aukeraketa trazatu"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Lausotu"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Itzalaren kolorea"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Kendu itzala"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Barruko itzala"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Banatu"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Itzala"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Taldearen itzala"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Aukeraketaren itzalak"
@@ -4249,7 +4237,7 @@ msgstr "Aukeraketaren itzalak"
msgid "workspace.options.show-fill-on-export"
msgstr "Erakutsi esportazioan"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Erakutsi ikusteko moduan"
@@ -4257,7 +4245,7 @@ msgstr "Erakutsi ikusteko moduan"
msgid "workspace.options.size"
msgstr "Tamaina"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Aurredefinitutako tamaina"
@@ -4306,7 +4294,7 @@ msgstr "Hiruki gezia"
msgid "workspace.options.stroke-color"
msgstr "Trazuaren kolorea"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Marraren zabalera"
@@ -4370,11 +4358,11 @@ msgstr "Zabalera automatikoa"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Finkoa"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Hizkien tartea"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Lerroaren altuera"
@@ -4438,15 +4426,15 @@ msgstr "Letra larriak"
msgid "workspace.options.use-play-button"
msgstr "Erabili goiburuko play botoia prototipoa ikusteko."
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Zabalera"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "X"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Y"
@@ -4490,87 +4478,87 @@ msgstr "Banatu nodoak (%s)"
msgid "workspace.path.actions.snap-nodes"
msgstr "Atxikitu nodoak (%s)"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Gehitu flex diseinua"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "Atzera bota"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Atzera bidali"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Kopiatu"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Aukeraketa arbelera"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Sortu osagaia"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Ebaki"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Ezabatu"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Ezabatu fluxuaren hasiera"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Askatu instantzia"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Askatu instantziak"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Diferentzia"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Bikoiztu"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Editatu"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Baztertu"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Lautu"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Irauli horizontalki"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Irauli bertikalki"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Fluxuaren hasiera"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Ekarri aurrera"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Ekarri aurrera"
@@ -4579,91 +4567,91 @@ msgstr "Ekarri aurrera"
msgid "workspace.shape.menu.go-main"
msgstr "Joan osagai nagusiaren fitxategira"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Taldea"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Ezkutatu"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Erakutsi/Ezkuatu interfazea"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Ebakidura"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Blokeatu"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Maskara aplikatu"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Itsatsi"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Bidea"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Ezabatu flex diseinua"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Berrezarri gainidazketak"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Berrezarri osagai nagusia"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Aukeratu geruza"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Erakutsi"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Ikusi baliabideen panelean"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Erakutsi osagai nagusia"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Ezabatu iruditxoa"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Ezarri iruditxo gisa"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Eraldatu bidera"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Banatu"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Batu"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Desblokeatu"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Desegin maskara"
@@ -4672,7 +4660,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:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Eguneratu osagai nagusia"
@@ -4684,11 +4672,11 @@ msgstr "Itxi alboko barra"
msgid "workspace.sidebar.expand"
msgstr "Ireki alboko barra"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Historikoa"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Geruzak"
@@ -4724,7 +4712,7 @@ msgstr "Formak"
msgid "workspace.sidebar.layers.texts"
msgstr "Testuak"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Inportatutako SVG atributuak"
@@ -4732,11 +4720,11 @@ msgstr "Inportatutako SVG atributuak"
msgid "workspace.sidebar.sitemap"
msgstr "Orrialdeak"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Web mapa"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Baliabideak"
@@ -4744,35 +4732,35 @@ msgstr "Baliabideak"
msgid "workspace.toolbar.color-palette"
msgstr "Kolore paleta (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Iruzkinak (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Kurba (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Elipsea (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Arbela (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Irudia (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Mugitu (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Bidea (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Laukia (%s)"
@@ -4781,7 +4769,7 @@ msgstr "Laukia (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Lasterteklak (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Testua (%s)"
@@ -4934,15 +4922,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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Baztertu"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
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:1226
msgid "workspace.updates.update"
msgstr "Eguneratu"
diff --git a/frontend/translations/fa.po b/frontend/translations/fa.po
index 85d6fabd6d..e1889182ad 100644
--- a/frontend/translations/fa.po
+++ b/frontend/translations/fa.po
@@ -38,13 +38,13 @@ msgstr "ایجاد حساب دمو"
msgid "auth.create-demo-profile"
msgstr "فقط میخواهید آن را امتحان کنید؟"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"این یک سرویس آزمایشی است، برای کار واقعی استفاده نکنید، پروژهها به صورت "
"دورهای پاک میشوند."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "کلمهعبور را فراموش کردهاید؟"
@@ -52,7 +52,7 @@ msgstr "کلمهعبور را فراموش کردهاید؟"
msgid "auth.fullname"
msgstr "نام کامل"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "ورود به حسابِ من"
@@ -60,33 +60,33 @@ msgstr "ورود به حسابِ من"
msgid "auth.login-here"
msgstr "ورود از اینجا."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "ورود"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr ""
"Penpot یک ابزار طراحی و همکاری در کد نویسی است که رایگان و کد آن متن باز "
"است."
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "گیتهاب"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "گیتلب"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "گوگل"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -110,7 +110,7 @@ msgstr "لینک بازیابی رمزعبور به صندوق ورودی شما
msgid "auth.notifications.team-invitation-accepted"
msgstr "با موفقیت به تیم پیوست"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "کلمهعبور"
@@ -138,7 +138,7 @@ msgstr "رمزعبور را فراموش کردهاید؟"
msgid "auth.recovery-submit"
msgstr "رمزعبور خود را تغییر دهید"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "هنوز حسابی ندارید؟"
@@ -150,7 +150,7 @@ msgstr "اطلاع دهید که شما را با چه نامی در ایمیل
msgid "auth.register-account-title"
msgstr "نام شما"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "ایجاد حسابکاربری"
@@ -176,7 +176,7 @@ msgstr ""
"من با قوانین و مقررات این سرویس و چگونگی مراقبت از اطلاعات شخصی در این "
"سرویس را قبول میکنم."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "شرایط استفاده از خدمات"
@@ -191,11 +191,11 @@ msgstr ""
msgid "auth.verification-email-sent"
msgstr "ما یک ایمیل تأیید ارسال کردیم به"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "ایمیلِ کار"
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "انتشار"
@@ -267,7 +267,7 @@ msgstr "اشتراکگذاری پروتوتایپها"
msgid "common.share-link.view-all"
msgstr "انتخاب همه"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "لغو انتشار"
@@ -319,7 +319,7 @@ msgstr "گذری در رابط کاربریِ برنامه"
msgid "dashboard.access-tokens.copied-success"
msgstr "توکن دسترسی با موفقیت کپی شد"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "ایجاد توکن دسترسی جدید"
@@ -327,11 +327,11 @@ msgstr "ایجاد توکن دسترسی جدید"
msgid "dashboard.access-tokens.create.success"
msgstr "توکن دسترسی با موفقیت ایجاد شد."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "برای ایجاد توکن دسترسی جدید دکمه «ایجاد توکن دسترسی جدید» توکن را کلیک کنید."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "شما تا به حال هیچ توکن دسترسی نداشتید."
@@ -355,23 +355,23 @@ msgstr "۹۰ روز"
msgid "dashboard.access-tokens.expiration-never"
msgstr "هیچ گاه (بدون تاریخ انقضا)"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "تاریخ انقضای توکن دسترسی %s بوده"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "تاریخ انقضا %s میباشد"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "بدون تاریخ انقضا"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "توکنِ دسترسیِ شخصی"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"توکن های دسترسی شخصی میتوانند به عنوان جایگزینی به جای رمز عبور و نام "
@@ -393,7 +393,7 @@ msgstr "افزودن بهعنوان کتابخانه مشترک"
msgid "dashboard.change-email"
msgstr "تغییر ایمیل"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(کپی)"
@@ -515,25 +515,25 @@ msgstr "داراییهای کتابخانه مشترک را در کتابخا
msgid "dashboard.export.title"
msgstr "خروجی از فایلها"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "فونت حذف شد"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "ردکردن همه"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "شما هنوز هیچ فونت سفارشیای نصب نکردهاید."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "۱ فونت اضافه شد"
msgstr[1] "%s فونت اضافه شد"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -543,20 +543,20 @@ msgstr ""
"فرمتهای زیر بارگذاری کنید: **TTF، OTF و WOFF** (فقط یکی مورد نیاز خواهد "
"بود)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"شما فقط باید فونتهایی را که مالک آنها هستید یا مجوز استفاده از آنها را در "
-"Penpot دارید آپلود کنید. در بخش حقوق محتوا [شرایط خدمات Penpot] "
-"(%s) اطلاعات بیشتری کسب کنید. همچنین ممکن است "
-"بخواهید درباره [مجوز فونت] (https://www.typography.com/faq) مطالعه کنید."
+"Penpot دارید آپلود کنید. در بخش حقوق محتوا [شرایط خدمات Penpot] (%s) "
+"اطلاعات بیشتری کسب کنید. همچنین ممکن است بخواهید درباره [مجوز فونت] "
+"(https://www.typography.com/faq) مطالعه کنید."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "آپلود همه"
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "ایمپورت کردن فایلهای پنپات"
@@ -568,11 +568,11 @@ msgstr "اوه! ما نتوانستیم این فایل را ایمپورت کن
msgid "dashboard.import.import-error"
msgstr "مشکلی در ایمپورت کردن فایل وجود داشت. فایل ایمپورت نشد."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgstr "فایلهای %s با موفقیت ایمپورت شد."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "برخی از فایلها حاوی آبجکتهای نامعتبر بودند که حذف شدهاند."
@@ -612,27 +612,27 @@ msgstr "دعوت به تیم"
msgid "dashboard.leave-team"
msgstr "خروج از تیم"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "کتابخانهها و قالبها"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "بیشتر آنها را کاوش کنید و بدانید که چگونه مشارکت کنید"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "مشکلی در ایمپورت کردن قالب وجود داشت. قالب ایمپورت نشد."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "کتابخانههای مشترک"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "در حال بارگذاری فایلهای شما …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "در حال بارگیری فونتهای شما …"
@@ -648,11 +648,11 @@ msgstr "انتقال فایلهای %s به"
msgid "dashboard.move-to-other-team"
msgstr "انتقال به تیم دیگر"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ فایل جدید"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "فایل جدید"
@@ -660,7 +660,7 @@ msgstr "فایل جدید"
msgid "dashboard.new-project"
msgstr "+ پروژه جدید"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "پروژه جدید"
@@ -692,7 +692,7 @@ msgstr "اعضای %s"
msgid "dashboard.open-in-new-tab"
msgstr "باز کردن فایل در تب جدید"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "گزینهها"
@@ -737,7 +737,7 @@ msgstr "زبان رابط کاربری را انتخاب کنید"
msgid "dashboard.select-ui-theme"
msgstr "انتخاب تم"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "نمایش همه فایلها"
@@ -757,7 +757,7 @@ msgstr "فایل شما با موفقیت duplicate شد"
msgid "dashboard.success-duplicate-project"
msgstr "پروژه شما با موفقیت duplicate شد"
-#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "فایل شما با موفقیت منتقل شد"
@@ -813,7 +813,7 @@ msgstr "ایمیل"
msgid "dashboard.your-name"
msgstr "نام شما"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "پنپات شما"
@@ -829,11 +829,11 @@ msgstr "توجه"
msgid "ds.component-subtitle"
msgstr "کامپوننتها برای بهروزرسانی:"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "لغو"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "بله"
@@ -841,7 +841,7 @@ msgstr "بله"
msgid "ds.confirm-title"
msgstr "مطمئنی؟"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "ارائه دهنده احراز هویت پیکربندی نشده است."
@@ -849,15 +849,15 @@ msgstr "ارائه دهنده احراز هویت پیکربندی نشده اس
msgid "errors.auth.unable-to-login"
msgstr "به نظر میرسد شما احراز هویت نشدهاید یا جلسه منقضی شده است."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "فونت %s بارگیری نشد"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "فونتهای %s بارگیری نشدند"
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "مرورگر شما نمیتواند این عملیات را انجام دهد"
@@ -869,11 +869,11 @@ msgstr "ایمیل قبلا استفاده شده است"
msgid "errors.email-already-validated"
msgstr "ایمیل قبلاً تأیید شده است."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "شما نمیتوانید از ایمیل خود به عنوان رمزعبور استفاده کنید"
-#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "اشتباهی رخ داده است."
@@ -881,8 +881,7 @@ msgstr "اشتباهی رخ داده است."
msgid "errors.invalid-color"
msgstr "رنگ نامعتبر"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "ایمیل تأیید باید مطابقت داشته باشد"
@@ -898,7 +897,7 @@ msgstr "دعوت نامعتبر"
msgid "errors.invite-invalid.info"
msgstr "این دعوت ممکن است لغو یا منقضی شده باشد."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "احراز هویت LDAP غیرفعال است."
@@ -924,7 +923,7 @@ msgstr "رمزعبور تأیید باید مطابقت داشته باشد"
msgid "errors.password-too-short"
msgstr "رمزعبور باید حداقل 8 کاراکتر باشد"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "پروفایل مسدود شده"
@@ -952,12 +951,11 @@ msgstr "یک خطای غیرمنتظره رخ داد."
msgid "errors.unexpected-token"
msgstr "توکن ناشناخته"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "به نظر میرسد نامکاربری یا رمزعبور اشتباه است."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "رمزعبور قدیمی اشتباه است"
@@ -1005,11 +1003,11 @@ msgstr "اینجا برای کمک به سوالات فنی شما."
msgid "feedback.twitter-title"
msgstr "حساب پشتیبانی در توییتر"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "خطایی رخ داده است"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "محو"
@@ -1017,31 +1015,31 @@ msgstr "محو"
msgid "inspect.attributes.blur.value"
msgstr "مقدار"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "پر"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "دانلود تصویر منبع"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "ارتفاع"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "عرض"
@@ -1080,11 +1078,11 @@ msgstr "بالا"
msgid "inspect.attributes.layout.width"
msgstr "عرض"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "سایه"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "استروک"
@@ -1121,107 +1119,107 @@ msgstr "جامد"
msgid "inspect.attributes.stroke.width"
msgstr "عرض"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "تایپوگرافی"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "خانواده فونت"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "اندازه فونت"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "استایل فونت"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "فاصله بین حروف"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "ارتفاع خط"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "هیچیک"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "خطزیر"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "تبدیل متن"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "حروف کوچک"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "هیچیک"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "حروف بزرگ"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "کد"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "دایره"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "کامپوننت"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "منحنی"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "آرتبرد"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "گروه"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "تصویر"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "ماسک"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s انتخاب شد"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "مسیر"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "مستطیل"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "متن"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "اطلاعات"
@@ -1233,7 +1231,7 @@ msgstr "میانبرها"
msgid "labels.accept"
msgstr "تایید"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "اضافه کردن فونت سفارشی"
@@ -1241,7 +1239,7 @@ msgstr "اضافه کردن فونت سفارشی"
msgid "labels.admin"
msgstr "مدیر"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "همه"
@@ -1259,19 +1257,19 @@ msgstr ""
"به نظر میرسد باید کمی صبر کنید و دوباره تلاش کنید; ما در حال انجام تعمیرات "
"کوچک روی سرورهای خود هستیم."
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "لغو"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "بستن"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "نظرات"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "انجمن"
@@ -1279,7 +1277,7 @@ msgstr "انجمن"
msgid "labels.confirm-password"
msgstr "تایید رمزعبور"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "ادامه"
@@ -1291,7 +1289,7 @@ msgstr "ادامه دادن با"
msgid "labels.continue-with-penpot"
msgstr "شما میتوانید با یک حساب Penpot ادامه دهید"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "ایجاد"
@@ -1311,15 +1309,15 @@ msgstr "فونتهای سفارشی"
msgid "labels.dashboard"
msgstr "داشبورد"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "حذف"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "حذف نظر"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "حذف موضوع"
@@ -1331,11 +1329,11 @@ msgstr "حذف دعوت"
msgid "labels.delete-multi-files"
msgstr "حذف فایلهای %s"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "پیشنویسها"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "ویرایش"
@@ -1351,7 +1349,7 @@ msgstr "ویرایشگر"
msgid "labels.expired-invitation"
msgstr "منقضی شده"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "اکسپورت"
@@ -1363,7 +1361,7 @@ msgstr "بازخورد غیرفعال شد"
msgid "labels.feedback-sent"
msgstr "بازخورد ارسال شد"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "خانواده فونت"
@@ -1371,19 +1369,19 @@ msgstr "خانواده فونت"
msgid "labels.font-providers"
msgstr "ارائهدهندگان فونت"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "استایلها"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "فونتها"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "مخزن Github"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "بازخورد بده"
@@ -1391,15 +1389,15 @@ msgstr "بازخورد بده"
msgid "labels.go-back"
msgstr "برگرد"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "مرکز کمک"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "پنهان کردن نظرات حل شده"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "فونتهای نصبشده"
@@ -1421,7 +1419,7 @@ msgstr "دعوتنامهها"
msgid "labels.language"
msgstr "زبان"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "کتابخانهها و قالبها"
@@ -1429,7 +1427,7 @@ msgstr "کتابخانهها و قالبها"
msgid "labels.log-or-sign"
msgstr "ورود یا ثبت نام"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "خروج"
@@ -1445,7 +1443,7 @@ msgstr "اعضا"
msgid "labels.new-password"
msgstr "رمزعبور جدید"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "هیچ اعلان نظر معلقی ندارید"
@@ -1467,7 +1465,7 @@ msgstr "ممکن است این صفحه وجود نداشته باشد یا شم
msgid "labels.not-found.main-message"
msgstr "اوپس!"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "۱ فایل"
@@ -1518,7 +1516,7 @@ msgstr "پروفایل"
msgid "labels.projects"
msgstr "پروژهها"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "یادداشتهای انتشار"
@@ -1531,7 +1529,7 @@ msgstr "حذف"
msgid "labels.remove-member"
msgstr "حذف عضو"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "تغییرنام"
@@ -1551,11 +1549,11 @@ msgstr "امتحان دوباره"
msgid "labels.role"
msgstr "نقش"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "ذخیره"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "جستجوی فونت"
@@ -1587,15 +1585,15 @@ msgstr "به اشتراک گذاشتن پروتوتایپ"
msgid "labels.shared-libraries"
msgstr "کتابخانههای مشترک"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "نمایش همه نظرات"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "نمایش لیست نظرات"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "فقط نظرات خودتان را نشان دهید"
@@ -1603,7 +1601,7 @@ msgstr "فقط نظرات خودتان را نشان دهید"
msgid "labels.status"
msgstr "وضعیت"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "آموزشها"
@@ -1615,15 +1613,15 @@ msgstr "بهروزرسانی"
msgid "labels.update-team"
msgstr "بروزرسانی تیم"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "بارگذاری"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "آپلود فونتهای سفارشی"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "درحال بارگذاری…"
@@ -1631,7 +1629,7 @@ msgstr "درحال بارگذاری…"
msgid "labels.viewer"
msgstr "بیننده"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "نظر جدید بنویس"
@@ -1639,7 +1637,7 @@ msgstr "نظر جدید بنویس"
msgid "labels.you"
msgstr "(شما)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "حساب شما"
@@ -1699,17 +1697,17 @@ msgstr ""
msgid "modals.delete-account.title"
msgstr "آیا مطمئن هستید که میخواهید حساب خود را حذف کنید؟"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "حذف مکالمه"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"آیا مطمئنید که میخواهید این مکالمه را حذف کنید؟ تمامی نظرات این تاپیک حذف "
"خواهد شد."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "حذف مکالمه"
@@ -1737,31 +1735,31 @@ msgstr "آیا مطمئن هستید که میخواهید فایلهای
msgid "modals.delete-file-multi-confirm.title"
msgstr "در حال حذف %s فایلها"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"آیا مطمئن هستید که میخواهید این سبک فونت را حذف کنید؟ اگر در یک فایل "
"استفاده شود، بارگیری نمیشود."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "درحال حذف استایل فونت"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"آیا مطمئن هستید که میخواهید این فونت را حذف کنید؟ اگر در یک فایل استفاده "
"شود، بارگیری نمیشود."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "درحال حذف فونت"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "آیا مطمئن هستید که میخواهید این صفحه را حذف کنید؟"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "حذف صفحه"
@@ -1907,11 +1905,11 @@ msgstr ""
"پس از حذف بهعنوان کتابخانه مشترک، کتابخانه فایل این فایل برای استفاده در "
"بین بقیه فایلهای شما در دسترس نخواهد بود."
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "بهروزرسانی"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "لغو"
@@ -1939,7 +1937,7 @@ msgstr "پس از نامگذاری تیم خود، میتوانید افرا
msgid "onboarding.welcome.alt"
msgstr "Penpot"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "مخلوط"
@@ -2079,11 +2077,11 @@ msgstr "توزیع به صورت عمودی"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "فونتها - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "پروژهها - %s - Penpot"
@@ -2091,7 +2089,7 @@ msgstr "پروژهها - %s - Penpot"
msgid "title.dashboard.search"
msgstr "جستجو - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "کتابخانههای مشترک - %s - پنپات"
@@ -2131,7 +2129,7 @@ msgstr "تنظیمات - %s - پنپات"
msgid "title.viewer"
msgstr "%s - حالت مشاهده - پنپات"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -2224,15 +2222,15 @@ msgstr "توزیع فاصله عمودی (%s)"
msgid "workspace.assets.assets"
msgstr "داراییها"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "تمام داراییها"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "رنگها"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "کامپوننتها"
@@ -2244,11 +2242,11 @@ msgstr "ایجاد یک گروه"
msgid "workspace.assets.create-group-hint"
msgstr "آیتمهای شما به طور خودکار به عنوان \"نام گروه / نام آیتم\" نامگذاری میشوند"
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "حذف"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "تکثیر"
@@ -2256,23 +2254,19 @@ msgstr "تکثیر"
msgid "workspace.assets.edit"
msgstr "ویرایش"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "گرافیک"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "گروه"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "کتابخانهها"
-
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "تغییرنام"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "تایپوگرافیها"
@@ -2281,19 +2275,19 @@ msgstr "تایپوگرافیها"
msgid "workspace.assets.typography.font-id"
msgstr "فونت"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "اندازه"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "گونه"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "مثال"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "تبدیل متن"
@@ -2329,25 +2323,24 @@ msgstr "بازدید"
msgid "workspace.header.menu.show-textpalette"
msgstr "نمایش پالت فونتها"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "بازنشانی"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "خطا در ذخیره"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "ذخیرهشد"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "ذخیرهکردن"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "تغییرات ذخیره نشده"
@@ -2361,15 +2354,15 @@ msgstr "افزودن"
msgid "workspace.libraries.colors.hsv"
msgstr "HSV"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "ذخیره استایل رنگ"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "کتابخانهها"
@@ -2378,27 +2371,23 @@ msgstr "کتابخانهها"
msgid "workspace.libraries.library"
msgstr "کتابخانه"
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "هیچ کتابخانه مشترکی وجود ندارد که نیاز به بهروزرسانی داشته باشد"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "هیچ کتابخانه مشترکی در دسترس نیست"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "جستجوی کتابخانههای مشترک"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "کتابخانههای مشترک"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "بهروزرسانی"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "بهروزرسانیها"
@@ -2406,7 +2395,7 @@ msgstr "بهروزرسانیها"
msgid "workspace.options.blur-options.title"
msgstr "محو"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "کامپوننت"
@@ -2442,15 +2431,15 @@ msgstr "بالا"
msgid "workspace.options.design"
msgstr "طراحی"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "اکسپورت"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "پسوند"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "درحال گرفتن خروجی…"
@@ -2534,7 +2523,7 @@ msgstr "ردیفها"
msgid "workspace.options.grid.square"
msgstr "مربع"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "بلندی"
@@ -2682,7 +2671,7 @@ msgstr "پروتوتایپ"
msgid "workspace.options.radius"
msgstr "گردی"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "اخیر"
@@ -2690,7 +2679,7 @@ msgstr "اخیر"
msgid "workspace.options.retry"
msgstr "تلاش دوباره"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "چرخش"
@@ -2698,19 +2687,19 @@ msgstr "چرخش"
msgid "workspace.options.select-a-shape"
msgstr "یک شکل، برد یا گروه را برای کشیدن اتصال به تابلوی دیگر انتخاب کنید."
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "محو"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "سایه"
@@ -2790,11 +2779,11 @@ msgstr "عرض خودکار"
msgid "workspace.options.text-options.grow-fixed"
msgstr "درست شد"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "فاصله بین حروف"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "ارتفاع خط"
@@ -2845,15 +2834,15 @@ msgstr "حروف بزرگ"
msgid "workspace.options.use-play-button"
msgstr "از دکمه پخش در هدر برای اجرای نمای پروتوتایپ استفاده کنید."
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "پهنا"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "X"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Y"
@@ -2873,63 +2862,63 @@ msgstr "ادغام گرهها (%s)"
msgid "workspace.path.actions.move-nodes"
msgstr "انتقال گرهها (%s)"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "فرستادن به پشت"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "فرستادن به عقب"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "کپی"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "ایجاد کامپوننت"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "برش"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "حذف"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "تفاوت"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "تکرار"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "ویزایش"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "صاف"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "حرکت افقی"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "چرخش عمودی"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "شروع فلو"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "جلو بیاورید"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "به جلو بیاورید"
@@ -2938,83 +2927,83 @@ msgstr "به جلو بیاورید"
msgid "workspace.shape.menu.go-main"
msgstr "به فایل کامپوننت اصلی بروید"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "گروه"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "مخفی"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "نمایش/پنهان کردن رابط کاربری"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "تقاطع"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "قفل"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "ماسک"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "چسباندن"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "مسیر"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "بازیابی کامپوننت اصلی"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "انتخاب لایه"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "نمایش"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "نمایش در پنل دارایی"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "نمایش کامپوننت اصلی"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "حذف تصویر کوچک"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "تنظیم بعنوان تصویر کوچک"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "تبدیل به مسیر"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "حذف گروه"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "متحد"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "بازکردن قفل"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "حذف ماسک"
@@ -3023,7 +3012,7 @@ msgstr "حذف ماسک"
msgid "workspace.shape.menu.update-components-in-bulk"
msgstr "بهروزرسانی کامپوننتهای اصلی"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "بهروزرسانی کامپوننت اصلی"
@@ -3031,11 +3020,11 @@ msgstr "بهروزرسانی کامپوننت اصلی"
msgid "workspace.sidebar.expand"
msgstr "گسترش نوار کناری"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "تاریخچه"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "لایهها"
@@ -3071,7 +3060,7 @@ msgstr "شکلها"
msgid "workspace.sidebar.layers.texts"
msgstr "متنها"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "ویژگیهای SVG ایمپورت شد"
@@ -3079,11 +3068,11 @@ msgstr "ویژگیهای SVG ایمپورت شد"
msgid "workspace.sidebar.sitemap"
msgstr "صفحات"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "نقشه سایت"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "داراییها"
@@ -3091,35 +3080,35 @@ msgstr "داراییها"
msgid "workspace.toolbar.color-palette"
msgstr "پالت رنگ (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "نظرات (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "منحنی (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "بیضی (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "آرتبورد (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "تصویر (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "انتقال (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "مسیر (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "مستطیل (%s)"
@@ -3128,7 +3117,7 @@ msgstr "مستطیل (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "میانبرها (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "متن (%s)"
@@ -3277,15 +3266,15 @@ msgstr "عملیات بیشاز %s"
msgid "workspace.undo.title"
msgstr "تاریخچه"
-#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "رد"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
msgid "workspace.updates.there-are-updates"
msgstr "بهروزرسانی در کتابخانههای مشترک وجود دارد"
-#: src/app/main/data/workspace/libraries.cljs:1225
+#: src/app/main/data/workspace/libraries.cljs:1226
msgid "workspace.updates.update"
msgstr "بهروزرسانی"
diff --git a/frontend/translations/fin_FI.po b/frontend/translations/fin_FI.po
index c0f75bb7d4..0421b4baa2 100644
--- a/frontend/translations/fin_FI.po
+++ b/frontend/translations/fin_FI.po
@@ -34,13 +34,13 @@ msgstr "Luo testikäyttäjä"
msgid "auth.create-demo-profile"
msgstr "Haluatko vain kokeilla?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Tämä on DEMO versio, ÄLÄ KÄYTÄ oikeaan työhön, projektit tullaan määräajoin "
"poistamaan."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Unohditko salasanasi?"
@@ -52,27 +52,27 @@ msgstr "Koko nimi"
msgid "auth.login-here"
msgstr "Kirjaudu sisään"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Kirjaudu"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -96,7 +96,7 @@ msgstr "Salasanan vaihtoon tarvittava linkki lähetetty sähköpostiisi."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Ryhmään liittyminen onnistui"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Salasana"
@@ -124,11 +124,11 @@ msgstr "Unohtuiko salasana?"
msgid "auth.recovery-submit"
msgstr "Vaihda salasanasi"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Ei käyttäjää?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Luo uusi käyttäjä"
@@ -141,7 +141,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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Käyttöehdot"
@@ -149,7 +149,7 @@ msgstr "Käyttöehdot"
msgid "auth.verification-email-sent"
msgstr "Lähetimme vahvistussähköpostin osoitteeseen"
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Julkaise"
@@ -221,7 +221,7 @@ msgstr "Jaa prototyypit"
msgid "common.share-link.view-all"
msgstr "Valitse kaikki"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Peruuta julkaisu"
diff --git a/frontend/translations/fo.po b/frontend/translations/fo.po
index f7bc78b2ad..5b5ae4a5cb 100644
--- a/frontend/translations/fo.po
+++ b/frontend/translations/fo.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2024-06-17 08:07+0000\n"
-"Last-Translator: Anonymous \n"
+"PO-Revision-Date: 2025-03-16 23:01+0000\n"
+"Last-Translator: Tummas Jóhan Sigvardsen \n"
"Language-Team: Faroese "
" \n"
"Language: fo\n"
@@ -9,12 +9,16 @@ 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.6-dev\n"
+"X-Generator: Weblate 5.11-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
msgstr "Hevur tú longu ein brúkara?"
+#: src/app/main/ui/auth/recovery_request.cljs:113, src/app/main/ui/auth/register.cljs:274
+msgid "auth.check-mail"
+msgstr "Kanna tín teldupost"
+
#: src/app/main/ui/auth/register.cljs:277
msgid "auth.check-your-email"
msgstr ""
@@ -34,13 +38,13 @@ msgstr "Stovna royndarkonto"
msgid "auth.create-demo-profile"
msgstr "Vilt tú royna tað?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Hetta er ein ROYNDAR tænasta, IKKI BRÚKA til veruligt arbeiði, "
"verkætlanirnar verða slettaðar regluliga."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Gloymt loyniorðið?"
@@ -48,31 +52,41 @@ msgstr "Gloymt loyniorðið?"
msgid "auth.fullname"
msgstr "Fullfíggja navn"
+#: src/app/main/ui/auth/login.cljs:282
+msgid "auth.login-account-title"
+msgstr "Rita inn á mína konto"
+
#: src/app/main/ui/auth/register.cljs:137, src/app/main/ui/static.cljs:158, src/app/main/ui/viewer/login.cljs:101
msgid "auth.login-here"
-msgstr "Innrita her"
+msgstr "Innrita her."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Rita inn"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:285
+msgid "auth.login-tagline"
+msgstr ""
+"Penpot er eitt ókeypis formgevingstól við opnari keldukotu, at nýta til "
+"Formgávu og Forritanar samstarv"
+
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -98,7 +112,7 @@ msgstr "Leinkjan til at endurseta títt loyniorð er send til tín postkassa."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Sameinaðan í toymið var væleydnað"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Loyniorð"
@@ -126,19 +140,41 @@ msgstr "Gloymt loyniorð?"
msgid "auth.recovery-submit"
msgstr "Broyt títt loyniorð"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Onga konto enn?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/register.cljs:254
+msgid "auth.register-account-tagline"
+msgstr ""
+"Latið okkum frætta, hvat vit skulu navngeva teg á okkara yvirlitsskýggja og "
+"í teldupostum."
+
+#: src/app/main/ui/auth/register.cljs:253
+msgid "auth.register-account-title"
+msgstr "Navn títt"
+
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Stovna konto"
+#: src/app/main/ui/auth/register.cljs:124
+msgid "auth.register-tagline"
+msgstr ""
+"Við einari ókeypis Penpot konto, kanst tú upprætta óavmarkaðar bólkar og "
+"samstarva við aðrar sniðgevar og forritara á so nógvum projektum, ið tygum "
+"lystur. "
+
#: src/app/main/ui/auth/register.cljs:122
msgid "auth.register-title"
msgstr "Stovna eina konto"
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth.cljs
+#, unused
+msgid "auth.sidebar-tagline"
+msgstr "Loysnin við opnari keldukotu, at formgeva og frumsniða."
+
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Treytir"
@@ -146,7 +182,7 @@ msgstr "Treytir"
msgid "auth.verification-email-sent"
msgstr "Vit hava sent ein váttanar teldupost til"
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Gev út"
@@ -218,7 +254,7 @@ msgstr "Deil frumsnið"
msgid "common.share-link.view-all"
msgstr "Vel alt"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Angra útgevan"
@@ -269,7 +305,7 @@ msgstr "Legg afturat sum Deilt Savn"
msgid "dashboard.change-email"
msgstr "Broyt teldupost"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(avrita)"
@@ -349,25 +385,25 @@ msgstr "Útflyt deild søvn"
msgid "dashboard.export.title"
msgstr "Útflyt fílur"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Stavsniði er strika"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Tú hevur enn onki serstavsnið innlagt."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "1 stavsnið lagt afturat"
msgstr[1] "% stavsnið løgd afturat"
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Legg øll afturat"
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Innflyt Penpot fílur"
@@ -381,7 +417,7 @@ msgstr ""
"Har kom ein trupulleiki, tá vit royndu at innflyta fíluna. Fílan var ikki "
"innflutt."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgstr "% fílur eru innfluttir."
@@ -421,11 +457,11 @@ msgstr "Bjóða við í toymi"
msgid "dashboard.leave-team"
msgstr "Far úr toymu"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "lesur tínar fílur inn…"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "lesur tíni stavsnið inn…"
@@ -441,11 +477,11 @@ msgstr "Flyt %s fílur til"
msgid "dashboard.move-to-other-team"
msgstr "Flyt til eitt annað toymi"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Nýggja fílu"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Nýggja fílu"
@@ -453,7 +489,7 @@ msgstr "Nýggja fílu"
msgid "dashboard.new-project"
msgstr "+ Nýggj verkætlan"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Nýggj verkætlan"
@@ -485,7 +521,7 @@ msgstr "%s limir"
msgid "dashboard.open-in-new-tab"
msgstr "Lat fílu upp í nýggjum skiljiblaði"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Valmøguleikar"
@@ -530,7 +566,7 @@ msgstr "Vel mál til takførisflatu"
msgid "dashboard.select-ui-theme"
msgstr "Vel tema"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Vís allar fílurnar"
@@ -542,7 +578,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Tín fíla er flutt"
@@ -582,11 +618,11 @@ msgstr "Skriva fyri at leita eftir úrslitum"
msgid "ds.alert-ok"
msgstr "Ókey"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Ókey"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Vangamyndin er stongd"
@@ -598,7 +634,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:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "1 fíla"
diff --git a/frontend/translations/fr.po b/frontend/translations/fr.po
index 42a3462790..62c0f98645 100644
--- a/frontend/translations/fr.po
+++ b/frontend/translations/fr.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2024-09-04 10:09+0000\n"
-"Last-Translator: Unreal Vision \n"
+"PO-Revision-Date: 2025-03-16 23:01+0000\n"
+"Last-Translator: Louis Chance \n"
"Language-Team: French "
" \n"
"Language: fr\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.7.2-rc\n"
+"X-Generator: Weblate 5.11-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
@@ -38,13 +38,13 @@ msgstr "Créer un compte de démonstration"
msgid "auth.create-demo-profile"
msgstr "Vous voulez juste essayer ?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Il s’agit d’un service de DÉMONSTRATION, NE L'UTILISEZ PAS pour du vrai "
"travail, les projets seront périodiquement supprimés."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Mot de passe oublié ?"
@@ -52,7 +52,7 @@ msgstr "Mot de passe oublié ?"
msgid "auth.fullname"
msgstr "Nom complet"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "Connexion à mon compte"
@@ -60,33 +60,33 @@ msgstr "Connexion à mon compte"
msgid "auth.login-here"
msgstr "Connectez-vous ici."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Se connecter"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr ""
"Penpot est l'outil de design libre et open-source pour la collaboration "
"entre Design et Développement"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -110,7 +110,7 @@ msgstr "Lien de récupération de mot de passe envoyé."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Vous avez rejoint l’équipe avec succès"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Mot de passe"
@@ -138,7 +138,7 @@ msgstr "Mot de passe oublié ?"
msgid "auth.recovery-submit"
msgstr "Changez votre mot de passe"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Pas encore de compte ?"
@@ -152,7 +152,7 @@ msgstr ""
msgid "auth.register-account-title"
msgstr "Votre nom"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Créer un compte"
@@ -179,7 +179,7 @@ msgstr ""
"J'accepte les [termes du service](%s) et la [politique de "
"confidentialité](%s)."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Conditions générales d'utilisation"
@@ -193,7 +193,7 @@ msgstr ""
msgid "auth.verification-email-sent"
msgstr "Nous avons envoyé un e-mail de vérification à"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "Email professionnel"
@@ -202,7 +202,11 @@ msgstr "Email professionnel"
msgid "branding-illustrations-marketing-pieces"
msgstr "...image de marque, illustrations, supports marketing, etc."
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/comments.cljs:532
+msgid "comments.mentions.not-found"
+msgstr "Aucun membre trouvé avec @%s"
+
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Publier"
@@ -274,7 +278,7 @@ msgstr "Partager les prototypes"
msgid "common.share-link.view-all"
msgstr "Tout sélectionner"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Dépublier"
@@ -326,7 +330,7 @@ msgstr "Démonstration de l'interface"
msgid "dashboard.access-tokens.copied-success"
msgstr "Jeton copié"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Générer un nouveau jeton"
@@ -334,11 +338,11 @@ msgstr "Générer un nouveau jeton"
msgid "dashboard.access-tokens.create.success"
msgstr "Jeton d'accès créé avec succès."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Pressez le bouton \"Générer un nouveau jeton\" pour en générer un."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "Vous n'avez pas encore de jeton."
@@ -362,23 +366,23 @@ msgstr "90 jours"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Jamais"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "A expiré le %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Expire le %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Aucune date d'expiration"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Jetons d'accès personnels"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Les jetons d'accès personnels fonctionnent comme une alternative à notre "
@@ -393,6 +397,10 @@ msgstr "Le jeton expirera le %s"
msgid "dashboard.access-tokens.token-will-not-expire"
msgstr "Le jeton n'a pas de date d'expiration"
+#: src/app/main/ui/dashboard/placeholder.cljs:35
+msgid "dashboard.add-file"
+msgstr "Ajouter un fichier"
+
#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612
msgid "dashboard.add-shared"
msgstr "Ajouter une Bibliothèque Partagée"
@@ -401,7 +409,7 @@ msgstr "Ajouter une Bibliothèque Partagée"
msgid "dashboard.change-email"
msgstr "Changer l'adresse e‑mail"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(copie)"
@@ -409,6 +417,10 @@ msgstr "(copie)"
msgid "dashboard.create-new-team"
msgstr "+ Créer une nouvelle équipe"
+#: src/app/main/ui/workspace/main_menu.cljs:623
+msgid "dashboard.create-version-menu"
+msgstr "Sauvegarder cette version"
+
#: src/app/main/ui/components/context_menu_a11y.cljs:282, src/app/main/ui/dashboard/sidebar.cljs:659
msgid "dashboard.default-team-name"
msgstr "Votre Penpot"
@@ -433,6 +445,22 @@ msgstr "Dupliquer"
msgid "dashboard.duplicate-multi"
msgstr "Dupliquer %s fichiers"
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
+msgid "dashboard.empty-placeholder-drafts-subtitle"
+msgstr "Lorsqu'un membre de l'équipe aura créé un brouillon, il sera affiché ici."
+
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
+msgid "dashboard.empty-placeholder-drafts-title"
+msgstr "Aucun brouillon pour l'instant."
+
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
+msgid "dashboard.empty-placeholder-files-subtitle"
+msgstr "Lorsqu'un membre de l'équipe aura créé un fichier, il sera affiché ici."
+
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
+msgid "dashboard.empty-placeholder-files-title"
+msgstr "Aucun fichier pour l'instant."
+
#: src/app/main/ui/dashboard/file_menu.cljs:249, src/app/main/ui/dashboard/file_menu.cljs:254
msgid "dashboard.export-binary-multi"
msgstr "Télécharger %s fichiers Penpot (.penpot)"
@@ -529,25 +557,25 @@ msgstr ""
msgid "dashboard.export.title"
msgstr "Exporter les fichiers"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Police supprimée"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Tout ignorer"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Les polices personnalisées installées apparaîtront ici."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "1 police ajoutée"
msgstr[1] "%s polices ajoutées"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -557,21 +585,21 @@ msgstr ""
"**une seule famille de polices**. Vous pouvez télécharger les polices au "
"formats suivants : **TTF, OTF et WOFF** (un seul format est nécessaire)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Ne téléchargez que des polices que vous possédez ou dont la license vous "
"permet de les utiliser dans Penpot. Vous trouverez plus d'informations dans "
"la section Propriété des Contenus des [conditions générales d'utilisation "
-"de Penpot](%s). Vous pouvez également vous "
-"renseigner sur les [licenses de polices](https://www.typography.com/faq)."
+"de Penpot](%s). Vous pouvez également vous renseigner sur les [licenses de "
+"polices](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Uploader tout"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -583,7 +611,7 @@ msgstr ""
"recommandons d'utiliser [Transfonter](https://transfonter.org/) pour "
"générer des polices web et corriger les erreurs. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Importer fichiers"
@@ -603,13 +631,13 @@ msgstr ""
"Un problème est survenu lors de l'importation du fichier. Le fichier n'a "
"pas été importé."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgid_plural "dashboard.import.import-message"
msgstr[0] "1 fichier a été importé avec succès."
msgstr[1] "%s fichiers ont été importés avec succès."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Certains fichiers contenaient des objets invalides qui ont été enlevés."
@@ -649,29 +677,29 @@ msgstr "Inviter des personnes"
msgid "dashboard.leave-team"
msgstr "Quitter l’équipe"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Bibliothèques et Modèles"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "En explorez plus et découvrir comment contribuer"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
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 "
"pas importé."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Bibliothèques Partagées"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "chargement de vos fichiers…"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "chargement de vos polices…"
@@ -687,11 +715,11 @@ msgstr "Déplacer %s fichiers vers"
msgid "dashboard.move-to-other-team"
msgstr "Déplacer vers une autre équipe"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Nouveau fichier"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Nouveau fichier"
@@ -699,7 +727,7 @@ msgstr "Nouveau fichier"
msgid "dashboard.new-project"
msgstr "+ Nouveau projet"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Nouveau projet"
@@ -731,7 +759,7 @@ msgstr "%s membres"
msgid "dashboard.open-in-new-tab"
msgstr "Ouvrir fichier dans un nouvel onglet"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Options"
@@ -776,7 +804,7 @@ msgstr "Sélectionnez la langue de l’interface"
msgid "dashboard.select-ui-theme"
msgstr "Sélectionnez un thème"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Voir tous les fichiers"
@@ -800,7 +828,7 @@ msgstr[1] "Vos fichiers ont été dupliqués avec succès"
msgid "dashboard.success-duplicate-project"
msgstr "Votre projet a été dupliqué avec succès"
-#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Votre fichier a été déplacé avec succès"
@@ -896,7 +924,7 @@ msgstr "E‑mail"
msgid "dashboard.your-name"
msgstr "Votre nom complet"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Votre Penpot"
@@ -912,11 +940,11 @@ msgstr "Attention"
msgid "ds.component-subtitle"
msgstr "Composants à mettre à jour :"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Annuler"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Ok"
@@ -928,7 +956,7 @@ msgstr "Êtes‑vous sûr ?"
msgid "errors.auth-provider-not-allowed"
msgstr "Le fournisseur d'authentification n'est pas autorisé pour ce profil"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Fournisseur d'authentification non configuré."
@@ -936,11 +964,11 @@ msgstr "Fournisseur d'authentification non configuré."
msgid "errors.auth.unable-to-login"
msgstr "Il semblerait que vous n'êtes pas authentifié ou que votre session a expiré."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "La police %s n'a pas pu être chargée"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "Les polices %s n'ont pas pu être chargées"
@@ -948,7 +976,7 @@ msgstr "Les polices %s n'ont pas pu être chargées"
msgid "errors.cannot-upload"
msgstr "Impossible de télécharger le fichier média."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Votre navigateur ne peut pas effectuer cette opération"
@@ -960,7 +988,7 @@ msgstr "Adresse e‑mail déjà utilisée"
msgid "errors.email-already-validated"
msgstr "Adresse e‑mail déjà validée."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Vous ne pouvez pas utiliser votre adresse e-mail comme mot de passe"
@@ -993,7 +1021,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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Un problème s’est produit."
@@ -1006,8 +1034,7 @@ msgstr "Couleur invalide"
msgid "errors.invalid-email"
msgstr "Veuillez entrer une adresse mail valide"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "L’adresse e‑mail de confirmation doit correspondre"
@@ -1023,7 +1050,7 @@ msgstr "Invitation invalide"
msgid "errors.invite-invalid.info"
msgstr "Cette invitation est peut-être été annulée ou a expiré."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "Authentification LDAP désactivée."
@@ -1067,7 +1094,7 @@ msgstr "Le mot de passe doit contenir au moins 8 caractères"
msgid "errors.paste-data-validation"
msgstr "Données du presse-papier invalides"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Le profil est bloqué"
@@ -1145,12 +1172,11 @@ msgstr "Erreur inattendue lors de la validation"
msgid "errors.webhooks.unexpected-status"
msgstr "Statut inattendu %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "E-mail ou mot de passe incorrect."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "L’ancien mot de passe est incorrect"
@@ -1199,11 +1225,11 @@ msgstr "Nous sommes là pour répondre à vos questions techniques."
msgid "feedback.twitter-title"
msgstr "Compte d’assistance X"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Une erreur s’est produite"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Flou"
@@ -1211,31 +1237,31 @@ msgstr "Flou"
msgid "inspect.attributes.blur.value"
msgstr "Valeur"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Remplir"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Télécharger l’image source"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Hauteur"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Largeur"
@@ -1274,15 +1300,15 @@ msgstr "Haut"
msgid "inspect.attributes.layout.width"
msgstr "Largeur"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Ombre"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Taille et position"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Contour"
@@ -1319,141 +1345,141 @@ msgstr "Solide"
msgid "inspect.attributes.stroke.width"
msgstr "Épaisseur"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Typographie"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Police de caractères"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Taille de police"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Style de police"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Graisse de la police"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Interlettrage"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Interlignage"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Décoration de texte"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Aucune"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Barré"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Soulignage"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Transformation de texte"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Minuscule"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Aucune"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Premières Lettres en Capitales"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "Non assigné"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Capitales"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr "Pour en savoir plus sur l'inspection, visitez le centre d'aide de Penpot"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Plus d'informations sur l'inspection"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr ""
"Sélectionnez une forme, un plan de travail ou un groupe pour inspecter "
"leurs propriétés et le code"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Code"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Cercle"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Composant"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Courbe"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Plan de travail"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Groupe"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Image"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Masque"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s Sélectionné"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Chemin"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Rectangle"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Texte"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Information"
@@ -1473,7 +1499,7 @@ msgstr "Jetons d'accès"
msgid "labels.active"
msgstr "Activé"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Ajouter police personnalisée"
@@ -1485,7 +1511,7 @@ msgstr "Administration"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Tous"
@@ -1507,7 +1533,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Bad Gateway"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Annuler"
@@ -1515,15 +1541,15 @@ msgstr "Annuler"
msgid "labels.canva"
msgstr "Canevas"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Fermer"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Commentaires"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Communauté"
@@ -1531,7 +1557,7 @@ msgstr "Communauté"
msgid "labels.confirm-password"
msgstr "Confirmer le mot de passe"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Continuer"
@@ -1547,7 +1573,7 @@ msgstr "Vous pouvez continuer avec un compte Penpot"
msgid "labels.copy-invitation-link"
msgstr "Copier le lien"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Créer"
@@ -1567,15 +1593,15 @@ msgstr "Polices personnalisées"
msgid "labels.dashboard"
msgstr "Tableau de bord"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Supprimer"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Supprimer le commentaire"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Supprimer le fil"
@@ -1595,15 +1621,15 @@ msgstr "Développeur"
msgid "labels.director"
msgstr "Directeur"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "Rejeter"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Brouillons"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Modifier"
@@ -1623,7 +1649,7 @@ msgstr "Évènement"
msgid "labels.expired-invitation"
msgstr "Expirée"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Exporter"
@@ -1639,7 +1665,7 @@ msgstr "Avis envoyé"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Famille de polices"
@@ -1647,11 +1673,11 @@ msgstr "Famille de polices"
msgid "labels.font-providers"
msgstr "Fournisseurs de polices"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Styles"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Polices"
@@ -1663,11 +1689,11 @@ msgstr "Fondateur/Direction"
msgid "labels.freelancer"
msgstr "Je suis freelance"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Dépôt GitHub"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Donnez votre avis"
@@ -1679,11 +1705,11 @@ msgstr "Retour"
msgid "labels.graphic-design"
msgstr "Designer graphique"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Centre d'aide"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Masquer les commentaires résolus"
@@ -1691,7 +1717,7 @@ msgstr "Masquer les commentaires résolus"
msgid "labels.inactive"
msgstr "Inactif"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Polices installées"
@@ -1717,7 +1743,7 @@ msgstr "Invitations"
msgid "labels.language"
msgstr "Langue"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Bibliothèques et modèles"
@@ -1725,7 +1751,7 @@ msgstr "Bibliothèques et modèles"
msgid "labels.log-or-sign"
msgstr "Se connecter ou s'inscrire"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Se déconnecter"
@@ -1745,11 +1771,11 @@ msgstr "Membres"
msgid "labels.new-password"
msgstr "Nouveau mot de passe"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Suivant"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "Vous n’avez aucune notification de commentaire en attente."
@@ -1775,7 +1801,7 @@ msgstr ""
msgid "labels.not-found.main-message"
msgstr "Oups !"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "1 fichier"
@@ -1846,7 +1872,7 @@ msgstr "Profil"
msgid "labels.projects"
msgstr "Projets"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Notes de version"
@@ -1864,7 +1890,7 @@ msgstr "Retirer"
msgid "labels.remove-member"
msgstr "Retirer le membre"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Renommer"
@@ -1884,15 +1910,15 @@ msgstr "Réessayer"
msgid "labels.role"
msgstr "Rôle"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Enregistrer"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "Rechercher"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Rechercher une police"
@@ -1932,15 +1958,15 @@ msgstr "Partager le prototype"
msgid "labels.shared-libraries"
msgstr "Bibliothèques Partagées"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Afficher tous les commentaires"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Afficher la liste des commentaires"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Afficher uniquement vos commentaires"
@@ -1968,7 +1994,7 @@ msgstr "Chef de projet"
msgid "labels.team-member"
msgstr "Membre d'une équipe"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Tutoriels"
@@ -1984,15 +2010,15 @@ msgstr "Actualiser"
msgid "labels.update-team"
msgstr "Mettre à jour l'équipe"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Télécharger"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Télécharger des polices personnalisées"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Téléchargement…"
@@ -2008,7 +2034,7 @@ msgstr "Spectateur"
msgid "labels.webhooks"
msgstr "Webhooks"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Écrire un nouveau commentaire"
@@ -2016,7 +2042,7 @@ msgstr "Écrire un nouveau commentaire"
msgid "labels.you"
msgstr "(vous)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Votre compte"
@@ -2024,23 +2050,23 @@ msgstr "Votre compte"
msgid "labels.youtube"
msgstr "YouTube"
-#: src/app/main/ui/workspace/colorpicker.cljs:477, src/app/main/ui/workspace/colorpicker.cljs:478, src/app/main/ui/workspace/colorpicker.cljs:480
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
msgid "media.choose-image"
msgstr "Choisir image"
-#: src/app/main/ui/workspace/colorpicker.cljs:245
+#: src/app/main/ui/workspace/colorpicker.cljs:241
msgid "media.gradient"
msgstr "Dégradé"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "Image"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:77
+#: src/app/main/ui/inspect/attributes/common.cljs:77
msgid "media.image.short"
msgstr "img"
-#: src/app/main/ui/workspace/colorpicker.cljs:470
+#: src/app/main/ui/workspace/colorpicker.cljs:467
msgid "media.keep-aspect-ratio"
msgstr "Conserver le ratio"
@@ -2058,7 +2084,7 @@ msgstr "Chargement de l’image…"
msgid "media.radial"
msgstr "Radial"
-#: src/app/main/ui/workspace/colorpicker.cljs:243
+#: src/app/main/ui/workspace/colorpicker.cljs:239
msgid "media.solid"
msgstr "Solide"
@@ -2110,7 +2136,7 @@ msgstr "Changer adresse e‑mail"
msgid "modals.change-email.title"
msgstr "Changez votre adresse e‑mail"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Copier le jeton"
@@ -2126,7 +2152,7 @@ msgstr "Nom"
msgid "modals.create-access-token.name.placeholder"
msgstr "Le nom aide à savoir comment le jeton sera utilisé"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Créer un jeton"
@@ -2150,15 +2176,15 @@ msgstr "URL de charge utile"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://example.com/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Supprimer le jeton"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "Confirmez-vous que vous souhaitez supprimer ce jeton ?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Supprimer le jeton"
@@ -2180,25 +2206,25 @@ msgstr ""
msgid "modals.delete-account.title"
msgstr "Êtes‑vous sûr de vouloir supprimer votre compte ?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Supprimer la conversation"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Êtes‑vous sûr de vouloir supprimer cette conversation ? Tous les "
"commentaires de ce fil seront supprimés."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Supprimer une conversation"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
msgid "modals.delete-component-annotation.message"
msgstr "Confirmez-vous vouloir supprimer cette note ?"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Supprimer la note"
@@ -2226,31 +2252,31 @@ msgstr "Êtes-vous sûr de vouloir supprimer %s fichiers ?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Suppression de %s fichiers"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Êtes-vous sûr de vouloir supprimer ce style de police ? Il ne sera pas "
"chargé si il est utilisé dans un fichier."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Suppression du style de police"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Êtes-vous sûr de vouloir supprimer cette police ? Elle ne se chargera pas "
"si elle est utilisée dans un fichier."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Suppression de la police"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Êtes‑vous sûr de vouloir supprimer cette page ?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Supprimer une page"
@@ -2454,15 +2480,15 @@ msgstr "Êtes‑vous sûr de vouloir promouvoir cette personne propriétaire ?
msgid "modals.promote-owner-confirm.title"
msgstr "Promouvoir propriétaire"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Publier"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
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:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Publier la bibliothèque vide"
@@ -2517,21 +2543,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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Actualiser le composant"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Annuler"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Actualiser le composant d’une bibliothèque"
@@ -2592,30 +2618,30 @@ msgstr "Tutoriels videos"
msgid "onboarding-v2.before-start.title"
msgstr "Avant de démarrer"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Abonnez-vous à la newsletter de Penpot pour être tenu informé du "
"développement du produit et de notre actualité."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr ""
"Envoyez-moi des nouvelles de Penpot (articles de blog, tutoriels vidéo, "
"streamings...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Nous nous soucions de la vie privée, vous pouvez lire ici notre "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Nous ne vous enverrons que des e-mails pertinents. Vous pouvez vous "
"désabonner à tout moment via votre profil d’utilisateur ou via le lien de "
"désabonnement dans l’une de nos newsletters."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr ""
"Envoyez-moi les mises à jour du produit (nouvelles fonctionnalités, "
@@ -2718,15 +2744,15 @@ msgstr "Vous pourrez créer une équipe plus tard."
msgid "onboarding.newsletter.accept"
msgstr "Oui, s'abonner"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr "Demande d'abonnement envoyé, vous allez recevoir un e-mail de confirmation."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Politique de confidentialité."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Vous souhaitez recevoir les actualités de Penpot ?"
@@ -2907,7 +2933,7 @@ msgstr "Aller à la page de connexion"
msgid "settings.detach"
msgstr "Détacher"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Divers"
@@ -3097,7 +3123,7 @@ msgstr "Créer"
msgid "shortcuts.cut"
msgstr "Couper"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Dézoomer"
@@ -3197,7 +3223,7 @@ msgstr "Répartir horizontalement"
msgid "shortcuts.hide-ui"
msgstr "Afficher/masquer l'interface utilisateur"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Zoom avant"
@@ -3577,15 +3603,15 @@ msgstr "Zoomer sur la sélection"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Fournisseurs de polices - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Polices - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Projets - %s - Penpot"
@@ -3593,7 +3619,7 @@ msgstr "Projets - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Rechercher - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Bibliothèques Partagées - %s - Penpot"
@@ -3601,7 +3627,7 @@ msgstr "Bibliothèques Partagées - %s - Penpot"
msgid "title.default"
msgstr "Penpot - Liberté de conception pour les équipes"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "Profil - Jetons d'accès"
@@ -3641,7 +3667,7 @@ msgstr "Webhooks - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Mode spectateur - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -3746,15 +3772,15 @@ msgstr "Aligner en haut (%s)"
msgid "workspace.assets.assets"
msgstr "Ressources"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Toutes"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Couleurs"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Composants"
@@ -3768,15 +3794,15 @@ msgstr ""
"Vos éléments seront automatiquement nommées comme tels : « nom du groupe / "
"nom de l'élément »"
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Supprimer"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Dupliquer"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "Dupliquer le principal"
@@ -3784,15 +3810,15 @@ msgstr "Dupliquer le principal"
msgid "workspace.assets.edit"
msgstr "Modifier"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:195
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
msgid "workspace.assets.filter"
msgstr "Filtrer"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Graphiques"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Grouper"
@@ -3800,23 +3826,19 @@ msgstr "Grouper"
msgid "workspace.assets.group-name"
msgstr "Nom du groupe"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Bibliothèques"
-
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "Bibliothèque locale"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Aucune ressource trouvée"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "Ouvrir le fichier de la bibliothèque"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Renommer"
@@ -3824,7 +3846,7 @@ msgstr "Renommer"
msgid "workspace.assets.rename-group"
msgstr "Renommer le groupe"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Chercher des ressources"
@@ -3840,17 +3862,17 @@ 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:226
+#: 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:211
+#: src/app/main/ui/workspace/sidebar/assets.cljs:201
msgid "workspace.assets.sort"
msgstr "Trier"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Typographies"
@@ -3859,27 +3881,27 @@ msgstr "Typographies"
msgid "workspace.assets.typography.font-id"
msgstr "Police"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Taille"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Variante"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Accéder au fichier de bibliothèque de styles à modifier"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Interlettrage"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Interlignage"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -3887,7 +3909,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Styles de texte"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Transformer le texte"
@@ -3895,55 +3917,55 @@ msgstr "Transformer le texte"
msgid "workspace.assets.ungroup"
msgstr "Dissocier"
-#: src/app/main/ui/workspace/context_menu.cljs:748
+#: src/app/main/ui/workspace/context_menu.cljs:764
msgid "workspace.context-menu.grid-cells.area"
msgstr "Créer une zone"
-#: src/app/main/ui/workspace/context_menu.cljs:751
+#: src/app/main/ui/workspace/context_menu.cljs:767
msgid "workspace.context-menu.grid-cells.create-board"
msgstr "Créer un tableau"
-#: src/app/main/ui/workspace/context_menu.cljs:743
+#: src/app/main/ui/workspace/context_menu.cljs:759
msgid "workspace.context-menu.grid-cells.merge"
msgstr "Fusionner les cellules"
-#: src/app/main/ui/workspace/context_menu.cljs:706
+#: src/app/main/ui/workspace/context_menu.cljs:722
msgid "workspace.context-menu.grid-track.column.add-after"
msgstr "Ajouter une colonne à droite"
-#: src/app/main/ui/workspace/context_menu.cljs:705
+#: src/app/main/ui/workspace/context_menu.cljs:721
msgid "workspace.context-menu.grid-track.column.add-before"
msgstr "Ajouter une colonne à gauche"
-#: src/app/main/ui/workspace/context_menu.cljs:707
+#: src/app/main/ui/workspace/context_menu.cljs:723
msgid "workspace.context-menu.grid-track.column.delete"
msgstr "Supprimer la colonne"
-#: src/app/main/ui/workspace/context_menu.cljs:708
+#: src/app/main/ui/workspace/context_menu.cljs:724
msgid "workspace.context-menu.grid-track.column.delete-shapes"
msgstr "Supprimer la colonne et le contenu"
-#: src/app/main/ui/workspace/context_menu.cljs:704
+#: src/app/main/ui/workspace/context_menu.cljs:720
msgid "workspace.context-menu.grid-track.column.duplicate"
msgstr "Dupliquer la colonne"
-#: src/app/main/ui/workspace/context_menu.cljs:713
+#: src/app/main/ui/workspace/context_menu.cljs:729
msgid "workspace.context-menu.grid-track.row.add-after"
msgstr "Ajouter une rangée en-dessous"
-#: src/app/main/ui/workspace/context_menu.cljs:712
+#: src/app/main/ui/workspace/context_menu.cljs:728
msgid "workspace.context-menu.grid-track.row.add-before"
msgstr "Ajouter une rangée au-dessus"
-#: src/app/main/ui/workspace/context_menu.cljs:714
+#: src/app/main/ui/workspace/context_menu.cljs:730
msgid "workspace.context-menu.grid-track.row.delete"
msgstr "Supprimer la rangée"
-#: src/app/main/ui/workspace/context_menu.cljs:715
+#: src/app/main/ui/workspace/context_menu.cljs:731
msgid "workspace.context-menu.grid-track.row.delete-shapes"
msgstr "Supprimer la rangée et son contenu"
-#: src/app/main/ui/workspace/context_menu.cljs:711
+#: src/app/main/ui/workspace/context_menu.cljs:727
msgid "workspace.context-menu.grid-track.row.duplicate"
msgstr "Dupliquer la rangée"
@@ -3951,11 +3973,11 @@ msgstr "Dupliquer la rangée"
msgid "workspace.focus.focus-mode"
msgstr "Mode focus"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Focus désactivé"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Focus activé"
@@ -4109,33 +4131,32 @@ msgstr "Basculer vers le thème clair"
msgid "workspace.header.menu.undo"
msgstr "Annuler"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Réinitialiser"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Erreur d’enregistrement"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Enregistré"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Enregistrement"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Modifications non sauvegardées"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "Mode spectateur (%s)"
-#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "Zoom"
@@ -4147,7 +4168,7 @@ msgstr "Remplir l’écran"
msgid "workspace.header.zoom-fit"
msgstr "Ajuster à l’écran"
-#: src/app/main/ui/workspace/right_header.cljs:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Zoomer pour montrer tous les éléments"
@@ -4155,19 +4176,19 @@ 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:136
+#: src/app/main/ui/workspace/right_header.cljs:104
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:607
+#: 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:616
msgid "workspace.layout_grid.editor.options.edit-grid"
msgstr "Éditer la grille"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
msgid "workspace.layout_grid.editor.options.exit"
msgstr "Quitter"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:478
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
msgid "workspace.layout_grid.editor.padding.expand"
msgstr "Montrer les options de marge intérieure sur les 4 côtés"
@@ -4183,7 +4204,7 @@ msgstr "Fait"
msgid "workspace.layout_grid.editor.top-bar.locate"
msgstr "Montrer"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1321
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
msgstr "Montrer la disposition en grille"
@@ -4192,7 +4213,7 @@ msgstr "Montrer la disposition en grille"
msgid "workspace.libraries.add"
msgstr "Ajouter"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s couleurs"
@@ -4222,31 +4243,31 @@ msgstr "Couleurs récentes"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "Complémentaire en RVB"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RVBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Enregistrer le style de couleur"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Bibliothèque du fichier"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "BIBLIOTHÈQUES DANS CE FICHIER"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "BIBLIOTHÈQUES"
@@ -4255,63 +4276,59 @@ msgstr "BIBLIOTHÈQUES"
msgid "workspace.libraries.library"
msgstr "BIBLIOTHÈQUE"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "MISES À JOUR DE LA BIBLIOTHÈQUE"
-#: src/app/main/ui/workspace/libraries.cljs:363
+#: src/app/main/ui/workspace/libraries.cljs:360
msgid "workspace.libraries.loading"
msgstr "Chargement…"
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
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:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Aucune correspondance pour « %s »"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Aucune Bibliothèque Partagée disponible"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Rechercher des Bibliothèques Partagées"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "BIBLIOTHÈQUES PARTAGÉES"
-#: src/app/main/ui/workspace/libraries.cljs:355
+#: src/app/main/ui/workspace/libraries.cljs:352
msgid "workspace.libraries.shared-library-btn"
msgstr "Connecter librairie"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Plusieurs typographies"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Dissocier toutes les typographies"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:326
+#: src/app/main/ui/workspace/libraries.cljs:323
msgid "workspace.libraries.unlink-library-btn"
msgstr "Déconnecter librairie"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Actualiser"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "Voir tous les changements"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "MISES À JOUR"
@@ -4331,43 +4348,43 @@ msgstr "Flou de groupe"
msgid "workspace.options.blur-options.title.multiple"
msgstr "Flou de sélection"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Couleur de fond du canvas"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Tronquer le contenu"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Composant"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "Note"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "Copier"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "Créer une note"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Éditer une note"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Principal"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:416
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
msgid "workspace.options.component.swap"
msgstr "Échanger composant"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:460
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
msgid "workspace.options.component.swap.empty"
msgstr "Cette librairie ne contient aucun élément pour le moment"
@@ -4415,7 +4432,7 @@ msgstr "Haut & bas"
msgid "workspace.options.design"
msgstr "Conception"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Export"
@@ -4424,13 +4441,13 @@ msgstr "Export"
msgid "workspace.options.export-multiple"
msgstr "Exporter la sélection"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Suffixe"
@@ -4438,7 +4455,7 @@ msgstr "Suffixe"
msgid "workspace.options.exporting-complete"
msgstr "L'export est terminé"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Exportation…"
@@ -4576,7 +4593,7 @@ msgstr "Contour de groupe"
msgid "workspace.options.guides.title"
msgstr "Guides"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Hauteur"
@@ -4886,19 +4903,19 @@ msgstr "Calques sélectionnés"
msgid "workspace.options.layout-item.advanced-ops"
msgstr "Options avancées"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Hauteur max"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Largeur max"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Hauteur min"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Largeur min"
@@ -5012,11 +5029,11 @@ msgstr "espace entre"
msgid "workspace.options.layout.top"
msgstr "En haut"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Plus de couleurs"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Plus de couleurs de la bibliothèque"
@@ -5053,7 +5070,7 @@ msgstr "En haut à gauche"
msgid "workspace.options.radius-top-right"
msgstr "En haut à droite"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Récentes"
@@ -5061,11 +5078,11 @@ msgstr "Récentes"
msgid "workspace.options.retry"
msgstr "Réessayer"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Rotation"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Rechercher une police"
@@ -5075,7 +5092,7 @@ 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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Couleurs sélectionnées"
@@ -5087,43 +5104,43 @@ msgstr "Remplissage de sélection"
msgid "workspace.options.selection-stroke"
msgstr "Contour de sélection"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Flou"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Couleur de l'ombre"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Ombre portée"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Ombre intérieure"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Diffusion"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Ombre"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Ombre de groupe"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Ombres de la sélection"
@@ -5131,7 +5148,7 @@ msgstr "Ombres de la sélection"
msgid "workspace.options.show-fill-on-export"
msgstr "Afficher à l'export"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Montrer en mode spectateur"
@@ -5139,7 +5156,7 @@ msgstr "Montrer en mode spectateur"
msgid "workspace.options.size"
msgstr "Taille"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Tailles prédéfinies"
@@ -5208,7 +5225,7 @@ msgstr "Triangle"
msgid "workspace.options.stroke-color"
msgstr "Couleur du tracé"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Largeur du tracé"
@@ -5272,11 +5289,11 @@ msgstr "Largeur automatique"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Fixe"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Interlettrage"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Interlignage"
@@ -5342,15 +5359,15 @@ 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:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Largeur"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "Axe X"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Axe Y"
@@ -5438,99 +5455,99 @@ msgstr "Extension correctement chargée."
msgid "workspace.plugins.title"
msgstr "Extensions"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Ajouter flex layout"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "Ajouter disposition en grille"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "Envoyer au fond"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Éloigner"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Copier"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "Créer une note"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
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:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Créer un composant"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Créer plusieurs composants"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Couper"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Supprimer"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Supprimer le départ du flux"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Détacher l’instance"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Détacher les instances"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Différence"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Dupliquer"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Modifier"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Exclure"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Aplatir"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Retourner horizontalement"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Retourner verticalement"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Départ du flux"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Avancer"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Amener au premier plan"
@@ -5539,95 +5556,95 @@ msgstr "Amener au premier plan"
msgid "workspace.shape.menu.go-main"
msgstr "Aller au fichier du composant principal"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Groupe"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Masquer"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Montrer/Masquer l'interface"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Intersection"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Bloquer"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Masque"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Coller"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Chemin"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Retirer flex layout"
-#: src/app/main/ui/workspace/context_menu.cljs:531
+#: src/app/main/ui/workspace/context_menu.cljs:535
msgid "workspace.shape.menu.remove-grid"
msgstr "Supprimer la disposition en grille"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Annuler les modifications"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Rétablir le composant principal"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Sélectionner le calque"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Montrer"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Afficher dans le panneau des ressources"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Afficher le composant principal"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Retirer la miniature"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Définir comme miniature"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Transformer en chemin"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Dégrouper"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Union"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Débloquer"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Supprimer le masque"
@@ -5636,7 +5653,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:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Actualiser le composant principal"
@@ -5648,11 +5665,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:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Historique"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Calques"
@@ -5688,7 +5705,7 @@ msgstr "Formes"
msgid "workspace.sidebar.layers.texts"
msgstr "Textes"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Attributs SVG importés"
@@ -5696,11 +5713,11 @@ msgstr "Attributs SVG importés"
msgid "workspace.sidebar.sitemap"
msgstr "Pages"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Plan du site"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Ressources"
@@ -5708,35 +5725,35 @@ msgstr "Ressources"
msgid "workspace.toolbar.color-palette"
msgstr "Palette de couleurs (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Commentaires (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Courbe (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Ellipse (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Plan de travail (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Image (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Déplacer (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Chemin (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Rectangle (%s)"
@@ -5745,7 +5762,7 @@ msgstr "Rectangle (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Raccourcis (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Texte (%s)"
@@ -5753,7 +5770,7 @@ msgstr "Texte (%s)"
msgid "workspace.toolbar.text-palette"
msgstr "Polices (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:220, src/app/main/ui/workspace/top_toolbar.cljs:221
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
msgid "workspace.toolbar.toggle-toolbar"
msgstr "Activer/Désactiver la barre d'outils"
@@ -5911,19 +5928,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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Ignorer"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
msgid "workspace.updates.more-info"
msgstr "Plus d'information"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
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:1226
msgid "workspace.updates.update"
msgstr "Actualiser"
diff --git a/frontend/translations/gl.po b/frontend/translations/gl.po
index 85ae1b4efb..9300a8fc6b 100644
--- a/frontend/translations/gl.po
+++ b/frontend/translations/gl.po
@@ -34,13 +34,13 @@ msgstr "Crear unha conta de proba"
msgid "auth.create-demo-profile"
msgstr "Queres probar?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Este é un servizo de DEMOSTRACIÓN. NON O UTILICES para traballos reais, os "
"proxectos eliminanse periódicamente."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Esqueciches o teu contrasinal?"
@@ -52,27 +52,27 @@ msgstr "Nome completo"
msgid "auth.login-here"
msgstr "Entra aquí"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Entrar"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "Gitlab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -96,7 +96,7 @@ msgstr "Enviouse ó teu correo electrónico un enlace co que recuperar o contras
msgid "auth.notifications.team-invitation-accepted"
msgstr "Unícheste ao equipo"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Contrasinal"
@@ -124,11 +124,11 @@ msgstr "Esqueceches o teu contrasinal?"
msgid "auth.recovery-submit"
msgstr "Cambiar o teu contrasinal"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Ainda non tes unha conta?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Crea unha conta"
@@ -141,7 +141,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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Condicións de servizo"
@@ -149,7 +149,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:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Publicar"
@@ -221,7 +221,7 @@ msgstr "Compartir prototipos"
msgid "common.share-link.view-all"
msgstr "Seleccionar todas"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Cancelar publicación"
@@ -275,7 +275,7 @@ msgstr "Engadir como Biblioteca Compartida"
msgid "dashboard.change-email"
msgstr "Cambiar correo electrónico"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(copia)"
@@ -397,25 +397,25 @@ msgstr "Incluir os recursos de bibliotecas compartidas na biblioteca do ficheiro
msgid "dashboard.export.title"
msgstr "Exportar ficheiros"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Fonte eliminada"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Desbotar todas"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Aínda non instalaches as túas propas fontes."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "Engadiuse 1 fonte"
msgstr[1] "Engadíronse % fontes"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -425,20 +425,20 @@ msgstr ""
"Podes cargar fontes cos seguintes formatos: **TTF, OFT e WOFF** (só se "
"precisa un)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Só debes cargar fontes da túa propiedade ou das que teñas licenza para usar "
"en Penpot. Atopa máis información na sección de dereitos de contido nas "
-"[Condicións do servizo de Penpot](%s). Podes ler "
-"máis sobre [licenzas de fontes](https://www.typography.com/faq)."
+"[Condicións do servizo de Penpot](%s). Podes ler máis sobre [licenzas de "
+"fontes](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Cargar todas"
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Importar archivos de Penpot"
@@ -450,11 +450,11 @@ msgstr "Vaia! Non se puido importar o ficheiro"
msgid "dashboard.import.import-error"
msgstr "Houbo un problema ao importar o ficheiro. Non se puido importar o ficheiro."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgstr "% ficheiros importáronse correctamente."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Algúns ficheiros contiñan obxectos non válidos que foron eliminados."
@@ -494,27 +494,27 @@ msgstr "Invitar ao equipo"
msgid "dashboard.leave-team"
msgstr "Abandonar o equipo"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Bibliotecas e Modelos"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "Explora máis e descubre como contribuír"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "Ocorreu un problema ao importar o modelo. Non se importou o modelo."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Bibliotecas compartidas"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "cargando os teus ficheiros …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "cargando as túas fontes …"
@@ -530,11 +530,11 @@ msgstr "Mover % ficheiros a"
msgid "dashboard.move-to-other-team"
msgstr "Mover a outro equipo"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Novo ficheiro"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Novo ficheiro"
@@ -542,7 +542,7 @@ msgstr "Novo ficheiro"
msgid "dashboard.new-project"
msgstr "+ Novo proxecto"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Novo proxecto"
@@ -574,7 +574,7 @@ msgstr "%s integrantes"
msgid "dashboard.open-in-new-tab"
msgstr "Abrir ficheiro nunha nova lapela"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Opcións"
@@ -615,7 +615,7 @@ msgstr "Escolle idioma da interface"
msgid "dashboard.select-ui-theme"
msgstr "Escolle un tema"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Mostra todos os ficheiros"
@@ -635,7 +635,7 @@ msgstr "Duplicouse o ficheiro"
msgid "dashboard.success-duplicate-project"
msgstr "Duplicouse o proxecto"
-#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Moveuse o ficheiro"
@@ -691,7 +691,7 @@ msgstr "Correo electrónico"
msgid "dashboard.your-name"
msgstr "Nome"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "O teu Penpot"
@@ -707,11 +707,11 @@ msgstr "Atención"
msgid "ds.component-subtitle"
msgstr "Compoñentes para actualizar:"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Cancelar"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Ok"
@@ -719,7 +719,7 @@ msgstr "Ok"
msgid "ds.confirm-title"
msgstr "Seguro?"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Provedor de autenticación non configurado."
@@ -739,7 +739,7 @@ msgstr "Asunto"
msgid "feedback.title"
msgstr "Correo electrónico"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Desenfoque"
@@ -747,27 +747,27 @@ msgstr "Desenfoque"
msgid "inspect.attributes.blur.value"
msgstr "Valor"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Recheo"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Altura"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Ancho"
@@ -806,11 +806,11 @@ msgstr "Enriba"
msgid "inspect.attributes.layout.width"
msgstr "Ancho"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Sombra"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Bordo"
@@ -847,75 +847,75 @@ msgstr "Sólido"
msgid "inspect.attributes.stroke.width"
msgstr "Ancho"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Tipografía"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Ningunha"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Riscar"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Suliñar"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Ningunha"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Código"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Círculo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Compoñente"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Curva"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "taboleiro"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Grupo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Imaxe"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Máscara"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Trazado"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Rectángulo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Texto"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Información"
@@ -931,7 +931,7 @@ msgstr "Aceptar"
msgid "labels.admin"
msgstr "Administración"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Todo"
@@ -943,23 +943,23 @@ msgstr "e"
msgid "labels.back"
msgstr "Volver"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Cancelar"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Pechar"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Comentarios"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Continuar"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Crear"
@@ -967,15 +967,15 @@ msgstr "Crear"
msgid "labels.dashboard"
msgstr "Panel"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Eliminar"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Borradores"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Editar"
@@ -987,15 +987,15 @@ msgstr "Editor"
msgid "labels.expired-invitation"
msgstr "Caducada"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Exportar"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Estilos"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Fontes"
@@ -1007,7 +1007,7 @@ msgstr "Invitacións"
msgid "labels.language"
msgstr "Lingua"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Pechar sesión"
@@ -1048,7 +1048,7 @@ msgstr "Proxectos"
msgid "labels.remove"
msgstr "Retirar"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Mudar o nome"
@@ -1060,7 +1060,7 @@ msgstr "Volver tentar"
msgid "labels.role"
msgstr "Rol"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Gardar"
@@ -1084,7 +1084,7 @@ msgstr "Bibliotecas"
msgid "labels.status"
msgstr "Estado"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Titoriales"
@@ -1092,11 +1092,11 @@ msgstr "Titoriales"
msgid "labels.update"
msgstr "Actualizar"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Cargar"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Cargando…"
@@ -1108,11 +1108,11 @@ msgstr "Visor"
msgid "labels.you"
msgstr "(ti)"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Actualizar"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Cancelar"
@@ -1292,19 +1292,19 @@ msgstr "Mapa do sitio"
msgid "workspace.assets.assets"
msgstr "Recursos"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Cores"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Compoñentes"
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Eliminar"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Duplicar"
@@ -1312,23 +1312,19 @@ msgstr "Duplicar"
msgid "workspace.assets.edit"
msgstr "Editar"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Gráficos"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Agrupar"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Bibliotecas"
-
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Mudar o nome"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Tipografías"
@@ -1337,15 +1333,15 @@ msgstr "Tipografías"
msgid "workspace.assets.typography.font-id"
msgstr "Fonte"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Tamaño"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Variante"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -1369,16 +1365,15 @@ msgstr "Ficheiro"
msgid "workspace.header.menu.option.preferences"
msgstr "Preferencias"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Restablecer"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Gardado"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Gardando"
@@ -1392,11 +1387,11 @@ msgstr "Engadir"
msgid "workspace.libraries.colors.hsv"
msgstr "HSV"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "BIBLIOTECAS"
@@ -1405,11 +1400,11 @@ msgstr "BIBLIOTECAS"
msgid "workspace.libraries.library"
msgstr "BIBLIOTECA"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Actualizar"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "Actualizacións"
@@ -1417,7 +1412,7 @@ msgstr "Actualizacións"
msgid "workspace.options.blur-options.title"
msgstr "Desenfoque"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Compoñente"
@@ -1457,7 +1452,7 @@ msgstr "Enriba e Embaixo"
msgid "workspace.options.design"
msgstr "Deseño"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Exportar"
@@ -1466,13 +1461,13 @@ msgstr "Exportar"
msgid "workspace.options.export-multiple"
msgstr "Exportar selección"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Sufixo"
@@ -1480,7 +1475,7 @@ msgstr "Sufixo"
msgid "workspace.options.exporting-complete"
msgstr "Exportación completada"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Exportando…"
@@ -1584,7 +1579,7 @@ msgstr "Centro"
msgid "workspace.options.text-options.none"
msgstr "Nada"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Editar"
diff --git a/frontend/translations/ha.po b/frontend/translations/ha.po
index b3bb5faee1..0932edb1de 100644
--- a/frontend/translations/ha.po
+++ b/frontend/translations/ha.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2024-08-11 20:09+0000\n"
-"Last-Translator: Alhassan Atama \n"
+"PO-Revision-Date: 2025-03-20 13:42+0000\n"
+"Last-Translator: Anonymous \n"
"Language-Team: Hausa "
" \n"
"Language: ha\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.7-dev\n"
+"X-Generator: Weblate 5.11-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
@@ -34,13 +34,13 @@ msgstr "qirqiri taskar gwaji"
msgid "auth.create-demo-profile"
msgstr "ka na son gwadawa ne kawai?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"wannan aikin gwaji ne kawai,kar ka yi amfani da shi a aikin gaske,lokaci "
"zuwa lokaci za ya ringa vacewa ne."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "ka manta lambar tsaro?"
@@ -52,27 +52,27 @@ msgstr "cikakken suna"
msgid "auth.login-here"
msgstr "shiga nan"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "shiga ciki"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "matattarar manazarta"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "wurin nazari"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Gugul"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "shaidar buxewa"
@@ -96,7 +96,7 @@ msgstr "an aika maka da saqon matakan da za a bi domin dawo da lambar tsaronka."
msgid "auth.notifications.team-invitation-accepted"
msgstr "ka zama dan tawaga"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "lambar tsaro"
@@ -125,7 +125,7 @@ msgstr "qirqiri sabon kundi"
msgid "auth.sidebar-tagline"
msgstr "samun hanyar magance matsalar zane-zane."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "dokokin aiki"
@@ -144,7 +144,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:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "wallafawa"
@@ -214,7 +214,7 @@ msgstr "fenfot"
msgid "common.share-link.view-all"
msgstr "zavi duka"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "maras wallafa"
@@ -264,7 +264,7 @@ msgstr "ma'aunin karvuwar aiki"
msgid "dashboard.access-tokens.copied-success"
msgstr "kwafar lambar tsaro"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "samo sabuwar lambar tsaro"
@@ -272,13 +272,13 @@ msgstr "samo sabuwar lambar tsaro"
msgid "dashboard.access-tokens.create.success"
msgstr "ka sami lambar tsaron da aka yi."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr ""
"danna maddanin qasa\"danna qasa\n"
"emo sabuwar lambar tsaro\" samar da wani."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "ba ka da wasu lambobin tsaro yanzu."
@@ -302,23 +302,23 @@ msgstr "kwanaki 90"
msgid "dashboard.access-tokens.expiration-never"
msgstr "bai yiwuwa"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "gama aiki kan %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "gama aiki kan %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "ba lokacin daina amfani"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "mallakar lambobin shiga na sirri"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"lambarka ta shiga na a matsayin zabin hanyar shiga/lambar tsaronmuza a iya "
@@ -340,7 +340,7 @@ msgstr "tura tamkar fenfot"
msgid "dashboard.change-email"
msgstr "canza imel"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(kwafi)"
@@ -456,25 +456,25 @@ msgstr "tura taska ya qunshi bayanan da ke cikin kundin taskoki"
msgid "dashboard.export.title"
msgstr "fitar da kundayr"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "rashin font"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "goge duka"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "fonts da ka xora nan za ya bayyana."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "an qara font 1"
msgstr[1] "%s an qara fonts da yawa"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -483,7 +483,7 @@ msgstr ""
"kasawa**gwaurayen font**. Za ka iya xora font ta waxannan hanyoyin: **TTF, "
"OTF and WOFF** (xaya kawai ake buqata)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
@@ -492,11 +492,11 @@ msgstr ""
"fpntaiki](https://fenfot.app/dokoki.html). Za ka so bayani game "
"da[ffonts](https://www.rubutu.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "xora duka"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -506,7 +506,7 @@ msgstr ""
"mun aminta da amfani da [taransifota](https://taransifota.org/) domin samo "
"webfonts da adana kurakurai. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "shigo da kundin fenfot"
@@ -518,13 +518,13 @@ msgstr "kash! mun gaza shigo da kundinka"
msgid "dashboard.import.import-error"
msgstr "akwi matsala a kundin. ba a shio da kundin ba."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgid_plural "dashboard.import.import-message"
msgstr[0] "an shigar kundi 1."
msgstr[1] "%s kundaye sun shiga."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "wasu kundayen na dauke da abubuwan da ba su da amfani."
@@ -564,27 +564,27 @@ msgstr "neman mutane"
msgid "dashboard.leave-team"
msgstr "fita tawaga"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "taska da shaidar kamfanoni"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
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:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "akwai matsala wurin shigo da fejin talla. fejin tallar ba ya xauko."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "taskoki"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "aikin dora kundaye …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "xora abin adonka …"
@@ -600,11 +600,11 @@ msgstr "tura %s kundaye a"
msgid "dashboard.move-to-other-team"
msgstr "tura ma sauran tawaga"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ sabon kundi"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "sabon kundi"
@@ -612,7 +612,7 @@ msgstr "sabon kundi"
msgid "dashboard.new-project"
msgstr "+ sabon aiki"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "sabon aiki"
@@ -644,7 +644,7 @@ msgstr "%s memba"
msgid "dashboard.open-in-new-tab"
msgstr "buxe kundi a sabon wurin buxewa"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "zavi"
@@ -689,7 +689,7 @@ msgstr "zavavven harshen UI"
msgid "dashboard.select-ui-theme"
msgstr "zaven batu"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "duk kundaye"
@@ -713,7 +713,7 @@ msgstr[1] "an kwafi kundayenka"
msgid "dashboard.success-duplicate-project"
msgstr "an kwafi aikinka"
-#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "an tura aikinka"
@@ -807,7 +807,7 @@ msgstr "imel"
msgid "dashboard.your-name"
msgstr "sunanka"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "fenfot na ka"
@@ -823,11 +823,11 @@ msgstr "natsu"
msgid "ds.component-subtitle"
msgstr "zamanantar da sassa:"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "goge"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "haka"
@@ -835,7 +835,7 @@ msgstr "haka"
msgid "ds.confirm-title"
msgstr "ka tabbata?"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "manhajar tantancewar ba ta tsaru ba."
@@ -843,11 +843,11 @@ msgstr "manhajar tantancewar ba ta tsaru ba."
msgid "errors.auth.unable-to-login"
msgstr "lokacin ya qare ko ba a tantance ka ba."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "ba za a iya xora fonts %s ba"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "ba za a iya xora fonts %s ba"
@@ -855,7 +855,7 @@ msgstr "ba za a iya xora fonts %s ba"
msgid "errors.cannot-upload"
msgstr "kasa xora xan aiken kundi."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "manhajar binciken nan ba ta iya yin wannan aikin"
@@ -867,7 +867,7 @@ msgstr "an yi amfani da imel"
msgid "errors.email-already-validated"
msgstr "an farfaxo da imel."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "ba za ka iya amfani da imel ba a matsayin lambar tsaro ba"
@@ -889,7 +889,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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "wata matsala ta faru."
@@ -902,8 +902,7 @@ msgstr "launin bai yi ba"
msgid "errors.invalid-email"
msgstr "sanya imel mai amfani"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "tabbata imel xinka ya yi daidai"
@@ -919,7 +918,7 @@ msgstr "gaiyar ba ta yi ba"
msgid "errors.invite-invalid.info"
msgstr "za a iya soke gayyata ko ta ki aiki."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "LDAP ya gaza tantancewa."
@@ -953,7 +952,7 @@ msgstr "tabbata labar tsaro ta yi daidai"
msgid "errors.password-too-short"
msgstr "lambar tsaro dole ta kai yawan alamu 8"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "bayanan a rufe suke"
@@ -1013,12 +1012,11 @@ msgstr "matsalar da ba zata ba lokacin farfaxowa"
msgid "errors.webhooks.unexpected-status"
msgstr "matsayin da ba zato %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "kuskuren imel ko lambar tsaro."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "tsohuwar lambar tsaro ba daidai ba ce"
@@ -1066,11 +1064,11 @@ msgstr "tambayoyin da ke buqatar amsa."
msgid "feedback.twitter-title"
msgstr "wurin karvar qorafin tiwita"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "afkuwar matsala"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "xige-xige"
@@ -1078,31 +1076,31 @@ msgstr "xige-xige"
msgid "inspect.attributes.blur.value"
msgstr "muhimmanci"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "cika"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "sauke hanyar hoto"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "tsawo"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "faxi"
@@ -1141,15 +1139,15 @@ msgstr "sama"
msgid "inspect.attributes.layout.width"
msgstr "fadi"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "inuwa"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "wurin daxa girma"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "yankewa"
@@ -1186,135 +1184,135 @@ msgstr "tauri"
msgid "inspect.attributes.stroke.width"
msgstr "fadi"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "tsara rubutu"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "gidan salo"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "girman salo"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "tsarin salo"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "kaurin salon"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "tazarar harafi"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "tsawon layi"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "kwalliyar rubutu"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "babu"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "zana layi tsakiyar rubutu"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "jan layi"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "masarrafin rubu,manya ko qanana"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "qananan baqaqe"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "babu"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "yadda ake rubuta batu"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "manyan baqaqe"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr "domin neman qarin bayani game da fenfot a tuntubi sashen agaji"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "qarin bayani a fagen lura"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr "zabar zubi, hukumar masu sa ido akan bangarorinsu da lambobinsu"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "lamba"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "da'ira"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "bangare"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "lankwasa"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "hukuma"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "qungiya"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "hoto"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "marfi"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s zavavve"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "hanya"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "rektangul"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "rubutu"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "bayani"
@@ -1334,7 +1332,7 @@ msgstr "lambobi masu xauke da bayani"
msgid "labels.active"
msgstr "mai amfani"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "inganta font"
@@ -1346,7 +1344,7 @@ msgstr "shugaba"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "duk"
@@ -1368,7 +1366,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "akwai matsala"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "sokewa"
@@ -1376,15 +1374,15 @@ msgstr "sokewa"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "rufewa"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "yabo"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "matattara"
@@ -1392,7 +1390,7 @@ msgstr "matattara"
msgid "labels.confirm-password"
msgstr "tabbatar da lambar tsaro"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "ci gaba"
@@ -1408,7 +1406,7 @@ msgstr "za ka iya ci gaba a idanka na fenfot"
msgid "labels.copy-invitation-link"
msgstr "kwafar hanya"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "yi"
@@ -1428,15 +1426,15 @@ msgstr "kwalliya da fenfot"
msgid "labels.dashboard"
msgstr "dashbod"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "goge"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "goge yabo"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "goge rubutu"
@@ -1452,15 +1450,15 @@ msgstr "goge %s kundaye"
msgid "labels.developer"
msgstr "ma su qirqira"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "vatar"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "adana"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "gyara"
@@ -1476,7 +1474,7 @@ msgstr "maigyara"
msgid "labels.expired-invitation"
msgstr "daina aiki"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "fitarwa"
@@ -1492,7 +1490,7 @@ msgstr "aika bayani"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "ire-iren font"
@@ -1500,11 +1498,11 @@ msgstr "ire-iren font"
msgid "labels.font-providers"
msgstr "ma su fenfot"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "salo"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Font"
@@ -1516,11 +1514,11 @@ msgstr "mawallafi/VP"
msgid "labels.freelancer"
msgstr "ni mai zaman kansa ne"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "taskar rubuce-rubuce"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "bada bayani"
@@ -1528,11 +1526,11 @@ msgstr "bada bayani"
msgid "labels.go-back"
msgstr "koma baya"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "sashen taimako"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "voye saqon da aka buxa"
@@ -1540,7 +1538,7 @@ msgstr "voye saqon da aka buxa"
msgid "labels.inactive"
msgstr "maras amfani"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "sanya fenfot"
@@ -1566,7 +1564,7 @@ msgstr "gayyata"
msgid "labels.language"
msgstr "harshe"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "taskoki & allunan talla"
@@ -1574,7 +1572,7 @@ msgstr "taskoki & allunan talla"
msgid "labels.log-or-sign"
msgstr "yi ko shiga"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "fita"
@@ -1594,11 +1592,11 @@ msgstr "mambobi"
msgid "labels.new-password"
msgstr "sabuwar lambar tsaro"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "na gaba"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "an dakatar da kai duka! Alamar sabon sharhi za ta fito nan."
@@ -1620,7 +1618,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:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "kundi 1"
@@ -1683,7 +1681,7 @@ msgstr "kundi"
msgid "labels.projects"
msgstr "aiyuka"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "bayar da bayani"
@@ -1701,7 +1699,7 @@ msgstr "cire"
msgid "labels.remove-member"
msgstr "cire mamba"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "sake suna"
@@ -1721,11 +1719,11 @@ msgstr "sake gwadawa"
msgid "labels.role"
msgstr "matsayi"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "ajiye"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "neman font"
@@ -1761,15 +1759,15 @@ msgstr "tura manhajar rubutu"
msgid "labels.shared-libraries"
msgstr "taskoki"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "fito da yabo"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "jerin ire-iren yabo"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "bayyana na ka ra’ayin"
@@ -1789,7 +1787,7 @@ msgstr "daraja"
msgid "labels.student-teacher"
msgstr "malami ko dalibi"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "koyarwa"
@@ -1805,15 +1803,15 @@ msgstr "sabunta"
msgid "labels.update-team"
msgstr "sabunta tawaga"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "xorawa"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Upload custom fonts"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "ana dorawa…"
@@ -1829,7 +1827,7 @@ msgstr "ma su kallo"
msgid "labels.webhooks"
msgstr "Webhooks"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "rubuta s abon yabo"
@@ -1837,7 +1835,7 @@ msgstr "rubuta s abon yabo"
msgid "labels.you"
msgstr "(kai)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "fagenka"
@@ -1891,7 +1889,7 @@ msgstr "sake imel"
msgid "modals.change-email.title"
msgstr "sake imel xinka"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "kwafar kyauta"
@@ -1907,7 +1905,7 @@ msgstr "suna"
msgid "modals.create-access-token.name.placeholder"
msgstr "sunan zai iya taimakawa wajen sanin menene alama"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "yi sabuwar alama"
@@ -1931,15 +1929,15 @@ msgstr "farashin URL"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://misali.com/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "goge alama"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "ka tabbata kana son goge wannan alamar?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "goge alama"
@@ -1959,23 +1957,23 @@ msgstr "idan ka cire asusunka za ka iya rasa aikin da ka kammala."
msgid "modals.delete-account.title"
msgstr "ka tabbata ka na son goge asusunka?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "goge fira"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr "ka tabbata ka na son goge fira? duk sharhi a nan za a goge matsaloli."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "goge tattaunawa"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
msgid "modals.delete-component-annotation.message"
msgstr "ka tabbata kana son goge wannan bayanin?"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "goge bayani"
@@ -2003,31 +2001,31 @@ msgstr "ka tabbata kana son goge %s kundaye?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "gogewa %s kundaye"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"ka tabbata kana son goge wannan salon font din? ba zai xoru ba idan an yi "
"amfani da shi a kundi."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "goge salon font"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"ka tabbata kana son goge wannan font xin ? ba zai yi aiki ba idan an yi "
"amfani da shi a kundi."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "goge font"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "ka tabbata kana son goge wannan shafin?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "goge shafi"
@@ -2215,15 +2213,15 @@ msgstr "kai ke da wannan tawagar yanzu. ka tabbata kana son yin %s sabon mai taw
msgid "modals.promote-owner-confirm.title"
msgstr "mallakar tawaga"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "wallafa"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
msgid "modals.publish-empty-library.message"
msgstr "ba komai a taskarka. ka na son wallafa ta?"
-#: src/app/main/ui/workspace/libraries.cljs:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "wallafa taska maras komai"
@@ -2273,21 +2271,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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "sabunta"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "soke"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "sabunta sashe a babbar taska"
@@ -2343,27 +2341,27 @@ msgstr "koyarwa ta hoto mai motsi"
msgid "onboarding-v2.before-start.title"
msgstr "kafin ka fara"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"domin jin daxin fenfot , sai ka biya kuxi domin labarai da ci gaban da ake "
"samu."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr "aiko man da bayanin fenfot (rubutun blog, bidiyon koyarwa, kallo...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "mu na kula da sirri, a nan za ka karanta na mu "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"za mu aika maka da imel mai amfani. za ka iya biya a kowane lokaci za ka "
"iya ta kowace hanyar biyanmu."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr "aiko man da sabbin abubuwan da aka yi (sabbib fasali, fitowa, gyara...)."
@@ -2423,17 +2421,17 @@ msgstr "gayyata tare da bayar da matsayi:"
msgid "onboarding.newsletter.accept"
msgstr "haka, za a biya"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"an aika maka da saqon buqatar biya, za mu aika maka da saqon imel tabbatar "
"da shi."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "dokoki."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "ka buqatar labaran fenfot?"
@@ -2519,7 +2517,7 @@ msgstr "je ka hanyar shiga"
msgid "settings.detach"
msgstr "cire"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "gauraya"
@@ -2705,7 +2703,7 @@ msgstr "samar da sabo abu"
msgid "shortcuts.cut"
msgstr "cire"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "fito da shi waje"
@@ -2805,7 +2803,7 @@ msgstr "raba ta tsaye"
msgid "shortcuts.hide-ui"
msgstr "fito / boye UI"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "zuko ciki"
@@ -3157,15 +3155,15 @@ msgstr "Zuko wanda aka zaba"
msgid "title.dashboard.files"
msgstr "%s - Tukunyar aje biro"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "samar da jerin harufa - %s - Mazubin biruka"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "jerin harufa - %s - Mazubin biruka"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "tsare tsare - %s - Mazubin biruka"
@@ -3173,7 +3171,7 @@ msgstr "tsare tsare - %s - Mazubin biruka"
msgid "title.dashboard.search"
msgstr "nema - %s - Mazubin biruka"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Rababban dakin karatu- %s - Mazubin biruka"
@@ -3181,7 +3179,7 @@ msgstr "Rababban dakin karatu- %s - Mazubin biruka"
msgid "title.default"
msgstr "Mazubin biruka - Tsara yanci ga tawaga"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "karin bayani - Shiga alama"
@@ -3221,7 +3219,7 @@ msgstr "gidan yanar gizo - %s - Mazubin biruka"
msgid "title.viewer"
msgstr "%s - duba kumburi - Mazubin biruka"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Mazubin biruka"
@@ -3326,15 +3324,15 @@ msgstr "Daidaita sama(%s)"
msgid "workspace.assets.assets"
msgstr "kadara"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "duka kadara"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "kala"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Bangarori"
@@ -3346,15 +3344,15 @@ msgstr "kirkiri rukuni"
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:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "goge"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "maimaita"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "maimaita ainihin"
@@ -3362,11 +3360,11 @@ msgstr "maimaita ainihin"
msgid "workspace.assets.edit"
msgstr "tace"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "zane zane"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "rukuni"
@@ -3374,23 +3372,19 @@ msgstr "rukuni"
msgid "workspace.assets.group-name"
msgstr "sunan kungiya"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "dakunan karatu"
-
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "dakin karatun gida"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "ba'a samu kadara ba"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "bude fiyal din dakin karatu"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "sake suna"
@@ -3398,7 +3392,7 @@ msgstr "sake suna"
msgid "workspace.assets.rename-group"
msgstr "sake sunan kungiyar"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "nemo kadarar"
@@ -3414,7 +3408,7 @@ msgstr[1] "%s zababbun abubuwan"
msgid "workspace.assets.shared-library"
msgstr "rababben dakin karatu"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "rubutun rubutu"
@@ -3423,27 +3417,27 @@ msgstr "rubutun rubutu"
msgid "workspace.assets.typography.font-id"
msgstr "tsarin haruffa"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "girma"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "bambanci"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "tafi zuwa salon dakin karatu don a tace"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "fili a tsakanin haruffa"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "tsawon layi"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -3451,7 +3445,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "salon rubutu"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "canja rubutu"
@@ -3463,11 +3457,11 @@ msgstr "kashe daga kungiya"
msgid "workspace.focus.focus-mode"
msgstr "tsarin maida hankali"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "karka maida hankali"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "maida hankali"
@@ -3597,33 +3591,32 @@ msgstr "Nuna launukan tsarin rubutu"
msgid "workspace.header.menu.undo"
msgstr "Cire"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Kara saitawa"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "an samu kuskure wajen adanawa"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "An adana"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Adanawa"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Canja canjan da ba'a adana ba"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "yanayin kallo (%s)"
-#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "Zuko"
@@ -3635,7 +3628,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:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "zuko yayi daidai da ko'ina"
@@ -3643,7 +3636,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:136
+#: src/app/main/ui/workspace/right_header.cljs:104
msgid "workspace.header.zoom-selected"
msgstr "zuko zababbe"
@@ -3656,7 +3649,7 @@ msgstr "tace akwati"
msgid "workspace.libraries.add"
msgstr "tarawa"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s kala"
@@ -3686,31 +3679,31 @@ msgstr "kalar yanzu"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "Jituwar RGB"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Adana salon kala"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Ma'adanar fiyal"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "Ma'adana a wanna fiyal"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "ma'adanai"
@@ -3719,51 +3712,47 @@ msgstr "ma'adanai"
msgid "workspace.libraries.library"
msgstr "ma'adana"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "sabunta ma'adana"
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "Babu rabben ma'adanai da suke bukatar sabuntawa"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Babu daidaituwa da aka samu na “%s“"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Babu rababbun ma'adanai wanda aka samu"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Duba rabbaun ma'adanai"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "Rabban ma'adanai"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Rubutun rubutu dayawa"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Cire mahadar duka rabutun rubutu"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Sabuntawa"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "Aga duka canjin"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "sabuntawa"
@@ -3783,35 +3772,35 @@ msgstr "rukuni"
msgid "workspace.options.blur-options.title.multiple"
msgstr "zabin dishi dishi"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "bayan zane"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Matse abun ciki"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Bangarori"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "Yin sharhin rubutu"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "Kwafa"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "Kirkiri sharhin rubuta"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Tace sharhin rubutu"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Ainahin"
@@ -3859,7 +3848,7 @@ msgstr "sama & kasa"
msgid "workspace.options.design"
msgstr "zane"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "fitarwa"
@@ -3868,13 +3857,13 @@ msgstr "fitarwa"
msgid "workspace.options.export-multiple"
msgstr "Fitar da zababbun"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Kari na bayan baki"
@@ -3882,7 +3871,7 @@ msgstr "Kari na bayan baki"
msgid "workspace.options.exporting-complete"
msgstr "An gama fitarwa"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Ana fitarwa"
@@ -4012,7 +4001,7 @@ msgstr "Cika rukuni"
msgid "workspace.options.group-stroke"
msgstr "Ja layi a rukuni"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Tsawo"
@@ -4322,19 +4311,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:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "tsawo mafi yawa"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "fadi mafi yawa"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "tsawo mafi kankanta"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "fadi mafi kankanta"
@@ -4448,11 +4437,11 @@ msgstr "sarari tsakani"
msgid "workspace.options.layout.top"
msgstr "sama"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "kaloli masu yawa"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Ma'ajiyar kaloli masu yawa"
@@ -4489,7 +4478,7 @@ msgstr "saman hagu"
msgid "workspace.options.radius-top-right"
msgstr "saman dama"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "da dimi dimi"
@@ -4497,11 +4486,11 @@ msgstr "da dimi dimi"
msgid "workspace.options.retry"
msgstr "sake"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "juyawa"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "nemo jerin harufa"
@@ -4509,7 +4498,7 @@ msgstr "nemo jerin harufa"
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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "zababbabbin kaloli"
@@ -4521,43 +4510,43 @@ msgstr "cika zabi"
msgid "workspace.options.selection-stroke"
msgstr "gigciye zabi"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "dishi dishi"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "inuwar kala"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "ajiye inuwa"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Inuwar ciki"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "bazu"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "inuwa"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "rukunin inuwa"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "inuwar zabi"
@@ -4565,7 +4554,7 @@ msgstr "inuwar zabi"
msgid "workspace.options.show-fill-on-export"
msgstr "fito da shi a ga"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "fito da kaurin sosai"
@@ -4573,7 +4562,7 @@ msgstr "fito da kaurin sosai"
msgid "workspace.options.size"
msgstr "girma"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "yanayin girman yanayin"
@@ -4642,7 +4631,7 @@ msgstr "Triangle"
msgid "workspace.options.stroke-color"
msgstr "gigciye kalar"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "gigciye fadin"
@@ -4706,11 +4695,11 @@ msgstr "sarrafaffen fadi"
msgid "workspace.options.text-options.grow-fixed"
msgstr "dasa"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "tazarar harafi"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "tsahon layi"
@@ -4774,15 +4763,15 @@ msgstr "yanayin sama"
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:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "fadi"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "X layi"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Y layi"
@@ -4826,99 +4815,99 @@ msgstr "raba kauri (%s)"
msgid "workspace.path.actions.snap-nodes"
msgstr "tsinke kauri (%s)"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "kara sassaukan tsarit"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "kara akwatin tsari"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "tura zuwa baya"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "tura zuwa baya"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "kwafi"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "kirkiri hoto mai motsi"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "zababban allo"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "kirkiri abubuwa"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "kirkiri abubuwa da yawa"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "cire"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "goge"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "goge kwararar farko"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "raba yanayin abin"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "raba yanayin abin"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "bambanci"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "maimaita"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "tace"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "kebe"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "mikad da abu"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "kifa ta tsaye"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "kifa ta kwance"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "fara malala"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "kawo ta gaba"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "kawo zuwa gaba"
@@ -4927,91 +4916,91 @@ msgstr "kawo zuwa gaba"
msgid "workspace.shape.menu.go-main"
msgstr "tafi ainihin wurin fal"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "rukuni"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "boye"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "nuna / boye UI"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "mahada"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "kulle"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "takunkumik"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "manna"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "hanya"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "cire sassaukan tsari"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "sake saita sokewa"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "saita ainihin wurin"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "zabi shimfida"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "nuna"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "nuna ta kusuwar kadara"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "nuna ainihin wurin"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "cire girman babban danyatsa"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "kara kamar girman babban yatsa"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "sauya zuwa hanya"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "raba rukunin"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "hadakan"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "bude"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "bude takunkumi"
@@ -5020,7 +5009,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:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "sabunta ainihin wurin"
@@ -5032,11 +5021,11 @@ msgstr "ruguza a'ajiyar bayani"
msgid "workspace.sidebar.expand"
msgstr "kara yankin ma'agiyar bayani"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "labari"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "shafi"
@@ -5072,7 +5061,7 @@ msgstr "Siffa"
msgid "workspace.sidebar.layers.texts"
msgstr "rubutu"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "shigo da shi SVG halaye"
@@ -5080,11 +5069,11 @@ msgstr "shigo da shi SVG halaye"
msgid "workspace.sidebar.sitemap"
msgstr "shafi"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "taswirar wuri"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "kadara"
@@ -5092,35 +5081,35 @@ msgstr "kadara"
msgid "workspace.toolbar.color-palette"
msgstr "farantin kala (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "ra'ayi (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "kwana(%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "siffar kwai (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "allo (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "hoto (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "motsa (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "hanya (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Rectangle (%s)"
@@ -5129,7 +5118,7 @@ msgstr "Rectangle (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "yanke (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "rubutu (%s)"
@@ -5282,19 +5271,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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "watsar"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
msgid "workspace.updates.more-info"
msgstr "bayanai masu yawa"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
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:1226
msgid "workspace.updates.update"
msgstr "sabintawas"
diff --git a/frontend/translations/he.po b/frontend/translations/he.po
index b999d5c2b7..d3a941aa06 100644
--- a/frontend/translations/he.po
+++ b/frontend/translations/he.po
@@ -1,16 +1,16 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2025-01-29 22:23+0000\n"
+"PO-Revision-Date: 2025-03-20 13:42+0000\n"
"Last-Translator: Anonymous \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.10-dev\n"
+"X-Generator: Weblate 5.11-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
@@ -37,11 +37,11 @@ msgstr "יצירת חשבון הדגמה"
msgid "auth.create-demo-profile"
msgstr "מעניין אותך רק להתנסות?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr "זה שירות ניסיוני, לא להשתמש בו לעבודה אמתית, המיזמים יימחקו מדי פעם בפעם."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "שכחת סיסמה?"
@@ -49,7 +49,7 @@ msgstr "שכחת סיסמה?"
msgid "auth.fullname"
msgstr "שם מלא"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "כניסה לחשבון שלי"
@@ -57,31 +57,31 @@ msgstr "כניסה לחשבון שלי"
msgid "auth.login-here"
msgstr "כניסה מכאן."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "כניסה"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr "Penpot הוא כלי בקוד פתוח לשיתוף עיצוב וקוד"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID Connect"
@@ -105,7 +105,7 @@ msgstr "קישור לשחזור סיסמה נשלח לתיבת הדוא״ל הנ
msgid "auth.notifications.team-invitation-accepted"
msgstr "הצטרפת לצוות בהצלחה"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "סיסמה"
@@ -133,7 +133,7 @@ msgstr "שכחת סיסמה?"
msgid "auth.recovery-submit"
msgstr "החלפת הסיסמה שלך"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "אין לך חשבון עדיין?"
@@ -145,7 +145,7 @@ msgstr "איך נפנה אליך בלוח הבקרה ובהודעות בדוא״
msgid "auth.register-account-title"
msgstr "השם שלך"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "יצירת חשבון"
@@ -169,7 +169,7 @@ msgstr "הפתרון בקוד פתוח לעיצוב ויצירת אבטיפוס.
msgid "auth.terms-and-privacy-agreement"
msgstr "[תנאי השירות](%s) ו[מדיניות הפרטיות](%s) מקובלים עליי."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "תנאי השירות"
@@ -181,7 +181,7 @@ msgstr "יצירת חשבון חדש מהווה את הסכמתך לתנאי ה
msgid "auth.verification-email-sent"
msgstr "שלחנו הודעת דוא״ל לאימות אל"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "דוא״ל עבודה"
@@ -190,11 +190,11 @@ msgstr "דוא״ל עבודה"
msgid "branding-illustrations-marketing-pieces"
msgstr "…מיתוג, איורים, חומרים שיווקיים ועוד."
-#: src/app/main/ui/comments.cljs:504
+#: src/app/main/ui/comments.cljs:532
msgid "comments.mentions.not-found"
msgstr "לא נמצאו אנשים עבור @%s"
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "פרסום"
@@ -266,7 +266,7 @@ msgstr "שיתוף אבות טיפוס"
msgid "common.share-link.view-all"
msgstr "בחירה בהכול"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "ביטול פרסום"
@@ -316,7 +316,7 @@ msgstr "סיור בנבכי מנשק המשתמש"
msgid "dashboard.access-tokens.copied-success"
msgstr "האסימון הועתק"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "יצירת אסימון חדש"
@@ -324,11 +324,11 @@ msgstr "יצירת אסימון חדש"
msgid "dashboard.access-tokens.create.success"
msgstr "אסימון הגישה נוצר בהצלחה."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "נא ללחוץ על הכפתור „יצירת אסימון חדש” כדי ליצור אחד חדש."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "אין לך אסימונים עדיין."
@@ -352,23 +352,23 @@ msgstr "90 יום"
msgid "dashboard.access-tokens.expiration-never"
msgstr "לעולם לא"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "התוקף פג ב־%s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "התוקף יפוג ב־%s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "אין תאריך תפוגה"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "אסימוני כניסה אישיים"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"אסימוני גישה אישיים הם דרך חלופית למערכת אימות הכניסה/סיסמה שלנו ומאפשרים "
@@ -382,6 +382,10 @@ msgstr "האסימון יפוג ב־%s"
msgid "dashboard.access-tokens.token-will-not-expire"
msgstr "לאסימון אין תאריך תפוגה"
+#: src/app/main/ui/dashboard/placeholder.cljs:35
+msgid "dashboard.add-file"
+msgstr "הוספת קובץ"
+
#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612
msgid "dashboard.add-shared"
msgstr "הוספת ספריה משותפת"
@@ -390,7 +394,7 @@ msgstr "הוספת ספריה משותפת"
msgid "dashboard.change-email"
msgstr "החלפת דוא״ל"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(עותק)"
@@ -426,23 +430,23 @@ msgstr "שכפול"
msgid "dashboard.duplicate-multi"
msgstr "שכפול %s קבצים"
-#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:285
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
msgid "dashboard.empty-placeholder-drafts-subtitle"
msgstr "כשאחד או אחת מחברי הצוות יוצרים טיוטה, היא תוצג כאן."
-#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:280
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
msgid "dashboard.empty-placeholder-drafts-title"
msgstr "אין טיוטות עדיין."
-#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:286
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
msgid "dashboard.empty-placeholder-files-subtitle"
msgstr "כשחבר או חברה במיזם יוצרים קובץ, הוא יופיע כאן."
-#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:281
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
msgid "dashboard.empty-placeholder-files-title"
msgstr "אין קבצים עדיין."
-#: src/app/main/ui/dashboard/placeholder.cljs:40
+#: src/app/main/ui/dashboard/placeholder.cljs:77
#, markdown
msgid "dashboard.empty-placeholder-libraries"
msgstr ""
@@ -456,11 +460,11 @@ msgstr ""
"ספריות שנוספו למיזם תופענה כאן. כדאי לנסות לשתף את הקבצים שלך או להוסיף "
"מ[הספריות והתבניות](https://penpot.app/libraries-templates) שלנו."
-#: src/app/main/ui/dashboard/placeholder.cljs:36
+#: src/app/main/ui/dashboard/placeholder.cljs:73
msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role"
msgstr "ספריות שנוספו למיזם תופענה כאן."
-#: src/app/main/ui/dashboard/placeholder.cljs:33
+#: src/app/main/ui/dashboard/placeholder.cljs:70
msgid "dashboard.empty-placeholder-libraries-title"
msgstr "אין ספריות עדיין."
@@ -546,27 +550,27 @@ msgstr "לכלול משאבי ספריה משותפת בספריות הקבצי
msgid "dashboard.export.title"
msgstr "ייצוא קבצים"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "הגופן נמחק"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "להתעלם מהכול"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "גופנים שהעלית יופיעו כאן."
-#: src/app/main/ui/dashboard/fonts.cljs:448
+#: src/app/main/ui/dashboard/fonts.cljs:450
msgid "dashboard.fonts.empty-placeholder-viewer"
msgstr "אין גופנים מותאמים אישית עדיין."
-#: src/app/main/ui/dashboard/fonts.cljs:449
+#: src/app/main/ui/dashboard/fonts.cljs:451
msgid "dashboard.fonts.empty-placeholder-viewer-sub"
msgstr "לאחר העלאת גופן בהתאמה אישית על ידי חברים, הוא יוצג כאן."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "נוסף גופן"
@@ -574,7 +578,7 @@ msgstr[1] "נוספו 2 גופנים"
msgstr[2] "נוספו %s גופנים"
msgstr[3] "נוספו %s גופנים"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -583,20 +587,19 @@ msgstr ""
"גופנים יחידה**. ניתן להעלות גופנים מהסוגים הבאים: **TTF, OTF ו־WOFF** (אחד "
"הסוגים יספיק)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"עליך להעלות גופנים בבעלותך או שיש לך רישיון להשתמש בהם ב־Penpot. ניתן למצוא "
-"על כך מידע נוסף בסעיף זכויות התוכן של [תנאי השירות של "
-"Penpot](%s). אפשר גם לקרוא גם על [רישוי "
-"גופנים](https://www.typography.com/faq)."
+"על כך מידע נוסף בסעיף זכויות התוכן של [תנאי השירות של Penpot](%s). אפשר גם "
+"לקרוא גם על [רישוי גופנים](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "להעלות הכול"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -605,7 +608,7 @@ msgstr ""
"[זה]](https://vertical-metrics.netlify.app/). בנוסף, המלצתנו היא להשתמש "
"ב־[Transfonter](https://transfonter.org/) כדי לייצר גופני רשת ולתקן שגיאות. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "ייבוא קובצי Penpot"
@@ -617,11 +620,11 @@ msgstr "אופס! לא הצלחנו לייבא את הקובץ הזה"
msgid "dashboard.import.analyze-error.components-v2"
msgstr "קובץ עם רכיבים בגרסה 2 מופעל אך הצוות הזה לא תומך בזה עדיין."
-#: src/app/main/ui/dashboard.cljs:248
+#: src/app/main/ui/dashboard.cljs:247
msgid "dashboard.import.bad-url"
msgstr "הייבוא נכשל. כתובת התבנית שגויה"
-#: src/app/main/ui/dashboard.cljs:242
+#: src/app/main/ui/dashboard.cljs:241
msgid "dashboard.import.error"
msgstr "הייבוא נכשל. נא לנסות שוב"
@@ -629,7 +632,7 @@ msgstr "הייבוא נכשל. נא לנסות שוב"
msgid "dashboard.import.import-error"
msgstr "אירעה תקלה בייבוא הקובץ. הוא לא ייובא."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgid_plural "dashboard.import.import-message"
msgstr[0] "קובץ יובא בהצלחה."
@@ -637,11 +640,11 @@ msgstr[1] "%s קבצים יובאו בהצלחה."
msgstr[2] "%s קבצים יובאו בהצלחה."
msgstr[3] "%s קבצים יובאו בהצלחה."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "חלק מהקבצים הכילו פריטים שגויים שהוסרו."
-#: src/app/main/ui/dashboard.cljs:249
+#: src/app/main/ui/dashboard.cljs:248
msgid "dashboard.import.no-perms"
msgstr "אין לך הרשאה לייבא לצוות הזה"
@@ -681,27 +684,27 @@ msgstr "הזמנת אנשים"
msgid "dashboard.leave-team"
msgstr "עזיבת הצוות"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "ספריות ותבניות"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "עיון ביותר כאלה והסברים כיצד לתרום להן"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "אירעה שגיאה בייבוא התבנית והיא לא ייובאה."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "ספריות משותפות"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "הקבצים שלך נטענים…"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "הגופנים שלך נטענים…"
@@ -717,11 +720,11 @@ msgstr "העברה של %s קבצים אל"
msgid "dashboard.move-to-other-team"
msgstr "העברה לצוות אחר"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ קובץ חדש"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "קובץ חדש"
@@ -729,7 +732,7 @@ msgstr "קובץ חדש"
msgid "dashboard.new-project"
msgstr "+ מיזם חדש"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "מיזם חדש"
@@ -741,7 +744,7 @@ msgstr "לא נמצאו תוצאות לחיפוש אחר „%s”"
msgid "dashboard.no-projects-placeholder"
msgstr "מיזמים נעוצים יופיעו כאן"
-#: src/app/main/ui/dashboard/comments.cljs:84
+#: src/app/main/ui/dashboard/comments.cljs:90
msgid "dashboard.notifications"
msgstr "התראות"
@@ -753,7 +756,7 @@ msgstr "כתובת הדוא״ל שלך עודכנה בהצלחה"
msgid "dashboard.notifications.email-verified-successfully"
msgstr "כתובת הדוא״ל שלך אומתה בהצלחה"
-#: src/app/main/ui/settings/notifications.cljs:42
+#: src/app/main/data/profile.cljs:260
msgid "dashboard.notifications.notifications-saved"
msgstr "הגדרות ההתראות עודכנו"
@@ -773,7 +776,7 @@ msgstr "%s חברים"
msgid "dashboard.open-in-new-tab"
msgstr "פתיחת קובץ בלשונית חדשה"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "אפשרויות"
@@ -801,15 +804,15 @@ msgstr "מונית לצפות בצוות הזה."
msgid "dashboard.pin-unpin"
msgstr "נעיצה/שחרור"
-#: src/app/main/ui/dashboard.cljs:212
+#: src/app/main/ui/dashboard.cljs:208
msgid "dashboard.plugins.bad-url"
msgstr "כתובת התוסף שגויה"
-#: src/app/main/ui/dashboard.cljs:210
+#: src/app/main/ui/dashboard.cljs:206
msgid "dashboard.plugins.parse-error"
msgstr "לא ניתן לפענח את המניפסט/מצהר של התוסף"
-#: src/app/main/ui/dashboard.cljs:173
+#: src/app/main/ui/dashboard.cljs:169
msgid "dashboard.plugins.try-plugin"
msgstr "התנסות התוסף: "
@@ -850,67 +853,67 @@ msgstr "בחירת שפת מנשק משתמש"
msgid "dashboard.select-ui-theme"
msgstr "בחירת ערכת עיצוב"
-#: src/app/main/ui/settings/notifications.cljs:76
+#: src/app/main/ui/settings/notifications.cljs:57
msgid "dashboard.settings.notifications.dashboard-comments.all"
msgstr "כל ההערות, האזכורים והתגובות"
-#: src/app/main/ui/settings/notifications.cljs:78
+#: src/app/main/ui/settings/notifications.cljs:59
msgid "dashboard.settings.notifications.dashboard-comments.none"
msgstr "אין"
-#: src/app/main/ui/settings/notifications.cljs:77
+#: src/app/main/ui/settings/notifications.cljs:58
msgid "dashboard.settings.notifications.dashboard-comments.partial"
msgstr "אזכורים ותגובות בלבד"
-#: src/app/main/ui/settings/notifications.cljs:73
+#: src/app/main/ui/settings/notifications.cljs:54
msgid "dashboard.settings.notifications.dashboard-comments.title"
msgstr "הערות קובץ"
-#: src/app/main/ui/settings/notifications.cljs:72
+#: src/app/main/ui/settings/notifications.cljs:53
msgid "dashboard.settings.notifications.dashboard.title"
msgstr "התראות לוח בקרה"
-#: src/app/main/ui/settings/notifications.cljs:86
+#: src/app/main/ui/settings/notifications.cljs:67
msgid "dashboard.settings.notifications.email-comments.all"
msgstr "כל ההערות, האזכורים והתגובות"
-#: src/app/main/ui/settings/notifications.cljs:88
+#: src/app/main/ui/settings/notifications.cljs:69
msgid "dashboard.settings.notifications.email-comments.none"
msgstr "אין"
-#: src/app/main/ui/settings/notifications.cljs:87
+#: src/app/main/ui/settings/notifications.cljs:68
msgid "dashboard.settings.notifications.email-comments.partial"
msgstr "אזכורים ותגובות בלבד"
-#: src/app/main/ui/settings/notifications.cljs:83
+#: src/app/main/ui/settings/notifications.cljs:64
msgid "dashboard.settings.notifications.email-comments.title"
msgstr "הערות קובץ"
-#: src/app/main/ui/settings/notifications.cljs:95
+#: src/app/main/ui/settings/notifications.cljs:76
msgid "dashboard.settings.notifications.email-invites.all"
msgstr "כל סוגי ההזמנות והבקשות"
-#: src/app/main/ui/settings/notifications.cljs:98
+#: src/app/main/ui/settings/notifications.cljs:79
msgid "dashboard.settings.notifications.email-invites.none"
msgstr "אין"
-#: src/app/main/ui/settings/notifications.cljs:92
+#: src/app/main/ui/settings/notifications.cljs:73
msgid "dashboard.settings.notifications.email-invites.title"
msgstr "הזמנות ובקשות"
-#: src/app/main/ui/settings/notifications.cljs:82
+#: src/app/main/ui/settings/notifications.cljs:63
msgid "dashboard.settings.notifications.email.title"
msgstr "התראות דוא״ל"
-#: src/app/main/ui/settings/notifications.cljs:103
+#: src/app/main/ui/settings/notifications.cljs:84
msgid "dashboard.settings.notifications.submit"
msgstr "עדכון הגדרות"
-#: src/app/main/ui/settings/notifications.cljs:71
+#: src/app/main/ui/settings/notifications.cljs:52
msgid "dashboard.settings.notifications.title"
msgstr "התראות"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "הצגת כל הקבצים"
@@ -942,7 +945,7 @@ msgstr[3] "הקבצים שלך שוכפלו בהצלחה"
msgid "dashboard.success-duplicate-project"
msgstr "המיזם שלך שוכפל בהצלחה"
-#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "הקובץ שלך הועבר בהצלחה"
@@ -986,15 +989,15 @@ msgstr "ביטול פרסום ספרייה"
msgid "dashboard.update-settings"
msgstr "עדכון הגדרות"
-#: src/app/main/ui/dashboard/sidebar.cljs:969
+#: src/app/main/ui/dashboard/sidebar.cljs:970
msgid "dashboard.upgrade-plan.no-limits"
msgstr "ללא מגבלות על יצירתיות"
-#: src/app/main/ui/dashboard/sidebar.cljs:968
+#: src/app/main/ui/dashboard/sidebar.cljs:969
msgid "dashboard.upgrade-plan.penpot-free"
msgstr "Penpot חינמי"
-#: src/app/main/ui/dashboard/sidebar.cljs:971
+#: src/app/main/ui/dashboard/sidebar.cljs:972
msgid "dashboard.upgrade-plan.power-up"
msgstr "חיזוק"
@@ -1052,7 +1055,7 @@ msgstr "דוא״ל"
msgid "dashboard.your-name"
msgstr "שמך"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "ה־Penpot שלך"
@@ -1072,11 +1075,11 @@ msgstr "רכיבים לעדכון:"
msgid "ds.confirm-allow"
msgstr "לאפשר"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "ביטול"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "אישור"
@@ -1088,7 +1091,7 @@ msgstr "להמשיך?"
msgid "errors.auth-provider-not-allowed"
msgstr "ספק האימות לא מורשה לפרופיל הזה"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "לא מוגדר ספק אימות."
@@ -1096,11 +1099,11 @@ msgstr "לא מוגדר ספק אימות."
msgid "errors.auth.unable-to-login"
msgstr "נראה שלא עברת אימות או שתוקף ההפעלה פג."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "לא ניתן לטעון את הגופן %s"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "לא ניתן לטעון את הגופנים %s"
@@ -1108,7 +1111,7 @@ msgstr "לא ניתן לטעון את הגופנים %s"
msgid "errors.cannot-upload"
msgstr "לא ניתן להעלות את קובץ המדיה."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "הדפדפן שלך לא יכול לבצע את הפעולה הזאת"
@@ -1120,7 +1123,7 @@ msgstr "כתובת הדוא״ל כבר בשימוש"
msgid "errors.email-already-validated"
msgstr "כתובת הדוא״ל כבר אומתה."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "אין לך אפשרות להשתמש בכתובת הדוא״ל שלך כסיסמה"
@@ -1166,7 +1169,7 @@ msgstr ""
"נראה שאין התאמ בין היכולות הפעילות לבין הקובץ שניסית לפתוח. יש להחיל הסבות "
"עבור ‚%s’ לפני שיתאפשר לפתוח את הקובץ הזה."
-#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "קרה משהו לא טוב."
@@ -1179,8 +1182,7 @@ msgstr "צבע שגוי"
msgid "errors.invalid-email"
msgstr "נא למלא כתובת דוא״ל תקפה בבקשה"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "כתובת הדוא״ל לאימות חייבת להיות תואמת"
@@ -1196,7 +1198,7 @@ msgstr "ההזמנה שגויה"
msgid "errors.invite-invalid.info"
msgstr "ההזמנה כנראה בוטלה או שתוקפה פג."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "אימות מול LDAP הושבת."
@@ -1242,7 +1244,7 @@ msgstr "הסיסמה חייבת להיות באורך 8 תווים לפחות"
msgid "errors.paste-data-validation"
msgstr "נתונים שגויים בלוח הגזירים"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "הפרופיל חסום"
@@ -1314,12 +1316,11 @@ msgstr "שגיאה לא צפויה בעת תיקוף"
msgid "errors.webhooks.unexpected-status"
msgstr "המצב %s לא צפוי"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "כתובת הדוא״ל או הסיסמה שגויים."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "הסיסמה הישנה שגויה"
@@ -1365,11 +1366,11 @@ msgstr "כאן כדי לסייע בסוגיות טכניות."
msgid "feedback.twitter-title"
msgstr "חשבון תמיכה ב־X"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "אירעה שגיאה"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "טשטוש"
@@ -1377,31 +1378,31 @@ msgstr "טשטוש"
msgid "inspect.attributes.blur.value"
msgstr "ערך"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "הקסדצימלי"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "מילוי"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "הורדת תמונת מקור"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "גובה"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "רוחב"
@@ -1440,15 +1441,15 @@ msgstr "עליון"
msgid "inspect.attributes.layout.width"
msgstr "רוחב"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "צל"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "גודל ומיקום"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "מתאר"
@@ -1485,139 +1486,139 @@ msgstr "אחיד"
msgid "inspect.attributes.stroke.width"
msgstr "רוחב"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "טיפוגרפיה"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "משפחת גופנים"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "גודל גופן"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "סגנון גופן"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "משקל גופן"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "ריווח תווים"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "גובה שורה"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "עיטור טקסט"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "ללא"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "קו חוצה"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "קו תחתי"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "התמרת טקסט"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "אותיות קטנות"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "ללא"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "ראשונות גדולות"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "ביטול הגדרה"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "אותיות גדולות"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr "למידע נוסף על חקירת עיצוב אפשר לבקר במרכז העזרה של Penpot"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "מידע נוסף על חקירה"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr "ניתן לבחור צורה, לוח או קבוצה ולראות את המאפיינים והקוד שלהם"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "קוד"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "עיגול"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "רכיב"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "עיקול"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "לוח"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "קבוצה"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "תמונה"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "מסכה"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s נבחרו"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "נתיב"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "מרובע"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "טקסט"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "מידע"
@@ -1637,15 +1638,15 @@ msgstr "אסימוני גישה"
msgid "labels.active"
msgstr "פעיל"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.add"
msgstr "הוספה"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "הוספת גופן משלך"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.adding"
msgstr "מתווסף…"
@@ -1657,7 +1658,7 @@ msgstr "ניהול"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "הכול"
@@ -1679,7 +1680,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "שער גישה שגוי"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "ביטול"
@@ -1687,27 +1688,27 @@ msgstr "ביטול"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "סגירה"
-#: src/app/main/ui/workspace/tokens/sets.cljs:180
+#: src/app/main/ui/workspace/tokens/sets.cljs:219
msgid "labels.collapse"
msgstr "צמצום"
-#: src/app/main/ui/comments.cljs:812
+#: src/app/main/ui/comments.cljs:881
msgid "labels.comment"
msgstr "הערה"
-#: src/app/main/ui/comments.cljs:816
+#: src/app/main/ui/comments.cljs:885
msgid "labels.comment.mark-as-solved"
msgstr "סימון כפתור"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "הערות"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "קהילה"
@@ -1715,7 +1716,7 @@ msgstr "קהילה"
msgid "labels.confirm-password"
msgstr "אישור סיסמה"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "להמשיך"
@@ -1735,7 +1736,7 @@ msgstr "העתקת קישור"
msgid "labels.copyright"
msgstr "Kaleidos @2024"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "יצירה"
@@ -1755,15 +1756,15 @@ msgstr "גופנים משלך"
msgid "labels.dashboard"
msgstr "לוח בקרה"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "מחיקה"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "מחיקת הערה"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "מחיקת שרשור"
@@ -1783,15 +1784,15 @@ msgstr "פיתוח"
msgid "labels.director"
msgstr "הנהלה בכירה"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "התעלמות"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "טיוטות"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "עריכה"
@@ -1811,7 +1812,7 @@ msgstr "אירוע"
msgid "labels.expired-invitation"
msgstr "התוקף פג"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "ייצוא"
@@ -1827,7 +1828,7 @@ msgstr "המשוב נשלח"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "משפחת גופנים"
@@ -1835,11 +1836,11 @@ msgstr "משפחת גופנים"
msgid "labels.font-providers"
msgstr "ספקי גופנים"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "סגנונות"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "גופנים"
@@ -1851,11 +1852,11 @@ msgstr "מייסד/סגן נשיא"
msgid "labels.freelancer"
msgstr "יש לי עסק משלי"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "מאגר GitHub"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "הגשת משוב"
@@ -1867,15 +1868,15 @@ msgstr "חזרה"
msgid "labels.graphic-design"
msgstr "עיצוב גרפי"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "מרכז העזרה"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "הסתרת הערות שנפתרו"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:355
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:413
msgid "labels.import"
msgstr "ייבוא"
@@ -1883,7 +1884,7 @@ msgstr "ייבוא"
msgid "labels.inactive"
msgstr "בלתי פעיל"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "גופנים מותקנים"
@@ -1909,11 +1910,11 @@ msgstr "הזמנות"
msgid "labels.language"
msgstr "שפה"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "ספריות ותבניות"
-#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:114, src/app/main/ui/dashboard/grid.cljs:133, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:53, src/app/main/ui/ds/product/loader.cljs:52, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:126, src/app/main/ui.cljs:67, src/app/main/ui.cljs:105, src/app/main/ui.cljs:124
+#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:115, src/app/main/ui/dashboard/grid.cljs:134, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:98, src/app/main/ui/ds/product/loader.cljs:85, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:118, src/app/main/ui.cljs:66, src/app/main/ui.cljs:104, src/app/main/ui.cljs:123
msgid "labels.loading"
msgstr "בטעינה…"
@@ -1925,7 +1926,7 @@ msgstr "כניסה או הרשמה"
msgid "labels.login"
msgstr "כניסה"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "יציאה"
@@ -1945,11 +1946,11 @@ msgstr "חברים"
msgid "labels.new-password"
msgstr "סיסמה חדשה"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "הבאה"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "עברת על הכול! התראות על הערות חדשות תופענה כאן."
@@ -1975,7 +1976,7 @@ msgstr "אופס!"
msgid "labels.notifications"
msgstr "התראות"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "קובץ"
@@ -2012,7 +2013,7 @@ msgstr "סיסמה ישנה"
msgid "labels.only-yours"
msgstr "שלך בלבד"
-#: src/app/main/ui/comments.cljs:545, src/app/main/ui/comments.cljs:822, src/app/main/ui/comments.cljs:886, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:295, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:324
+#: src/app/main/ui/comments.cljs:891, src/app/main/ui/comments.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:293, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:322
msgid "labels.options"
msgstr "אפשרויות"
@@ -2040,7 +2041,7 @@ msgstr "סיסמה"
msgid "labels.pending-invitation"
msgstr "בהמתנה"
-#: src/app/main/ui/comments.cljs:657, src/app/main/ui/comments.cljs:690, src/app/main/ui/comments.cljs:759
+#: src/app/main/ui/comments.cljs:678
msgid "labels.post"
msgstr "רשומה"
@@ -2064,7 +2065,7 @@ msgstr "פרופיל"
msgid "labels.projects"
msgstr "מיזמים"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "הודעות מהדורה"
@@ -2082,7 +2083,7 @@ msgstr "הסרה"
msgid "labels.remove-member"
msgstr "הסרת חבר"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "שינוי שם"
@@ -2090,23 +2091,23 @@ msgstr "שינוי שם"
msgid "labels.rename-team"
msgstr "שינוי שם לצוות"
-#: src/app/main/ui/comments.cljs:598
+#: src/app/main/ui/comments.cljs:641
msgid "labels.replies"
msgstr "תגובות"
-#: src/app/main/ui/comments.cljs:603
+#: src/app/main/ui/comments.cljs:646
msgid "labels.replies.new"
msgstr "תגובות חדשות"
-#: src/app/main/ui/comments.cljs:597
+#: src/app/main/ui/comments.cljs:640
msgid "labels.reply"
msgstr "תגובה"
-#: src/app/main/ui/comments.cljs:602
+#: src/app/main/ui/comments.cljs:645
msgid "labels.reply.new"
msgstr "תגובה חדשה"
-#: src/app/main/ui/comments.cljs:641
+#: src/app/main/ui/comments.cljs:721
msgid "labels.reply.thread"
msgstr "תגובה"
@@ -2126,15 +2127,15 @@ msgstr "ניסיון חוזר"
msgid "labels.role"
msgstr "תפקיד"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "שמירה"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "חיפוש"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "חיפוש גופן"
@@ -2158,7 +2159,7 @@ msgstr "אנחנו בהפוגת תחזוקה מתוכננת של המערכות
msgid "labels.service-unavailable.main-message"
msgstr "השירות אינו זמין"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:252
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:247
msgid "labels.sets"
msgstr "סדרות"
@@ -2178,19 +2179,19 @@ msgstr "שיתוף אבטיפוס"
msgid "labels.shared-libraries"
msgstr "ספריות משותפות"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "הצגת כל ההערות"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "הצגת רשימת הערות"
-#: src/app/main/ui/workspace/comments.cljs:66, src/app/main/ui/workspace/comments.cljs:136
+#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139
msgid "labels.show-mentions"
msgstr "הצגת האזכורים שלך בלבד"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "הצגת ההערות שלך בלבד"
@@ -2218,11 +2219,11 @@ msgstr "מוביל או מובילת צוות"
msgid "labels.team-member"
msgstr "חבר או חברת צוות"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:183
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:182
msgid "labels.themes"
msgstr "ערכות עיצוב"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "מדריכים"
@@ -2238,15 +2239,15 @@ msgstr "עדכון"
msgid "labels.update-team"
msgstr "עדכון צוות"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "העלאה"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "העלאת גופנים משלך"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "מתבצעת העלאה…"
@@ -2262,7 +2263,7 @@ msgstr "מציג"
msgid "labels.webhooks"
msgstr "התליות"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "כתיבת הערה חדשה"
@@ -2270,7 +2271,7 @@ msgstr "כתיבת הערה חדשה"
msgid "labels.you"
msgstr "(אני)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "החשבון שלך"
@@ -2278,23 +2279,23 @@ msgstr "החשבון שלך"
msgid "labels.youtube"
msgstr "YouTube"
-#: src/app/main/ui/workspace/colorpicker.cljs:477, src/app/main/ui/workspace/colorpicker.cljs:478, src/app/main/ui/workspace/colorpicker.cljs:480
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
msgid "media.choose-image"
msgstr "בחירת תמונה"
-#: src/app/main/ui/workspace/colorpicker.cljs:245
+#: src/app/main/ui/workspace/colorpicker.cljs:241
msgid "media.gradient"
msgstr "מדרג"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "תמונה"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:77
+#: src/app/main/ui/inspect/attributes/common.cljs:77
msgid "media.image.short"
msgstr "תמונה"
-#: src/app/main/ui/workspace/colorpicker.cljs:470
+#: src/app/main/ui/workspace/colorpicker.cljs:467
msgid "media.keep-aspect-ratio"
msgstr "שמירה על יחס גובה־רוחב"
@@ -2312,7 +2313,7 @@ msgstr "התמונה נטענת…"
msgid "media.radial"
msgstr "מעגלי"
-#: src/app/main/ui/workspace/colorpicker.cljs:243
+#: src/app/main/ui/workspace/colorpicker.cljs:239
msgid "media.solid"
msgstr "אחיד"
@@ -2360,7 +2361,7 @@ msgstr "החלפת כתובת דוא״ל"
msgid "modals.change-email.title"
msgstr "החלפת כתובת הדוא״ל שלך"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "העתקת אסימון"
@@ -2376,7 +2377,7 @@ msgstr "שם"
msgid "modals.create-access-token.name.placeholder"
msgstr "השם יכול לסייע לך להבין למה מיועד האסימון"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "יצירת אסימון"
@@ -2400,15 +2401,15 @@ msgstr "כתובת מטען"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://example.com/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "מחיקת אסימון"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "למחוק את האסימון הזה?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "מחיקת אסימון"
@@ -2428,23 +2429,23 @@ msgstr "הסרת החשבון שלך תוביל לאיבוד כל המיזמים
msgid "modals.delete-account.title"
msgstr "למחוק את החשבון שלך?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "מחיקת דיון"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr "למחוק את הדיון הזה? כל התגובות בשרשור תימחקנה."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "מחיקת דיון"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
msgid "modals.delete-component-annotation.message"
msgstr "למחוק את הסימון הזה?"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "מחיקת סימון"
@@ -2472,27 +2473,27 @@ msgstr "למחוק %s קבצים?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "%s קבצים נמחקים"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr "למחוק את סגנון הגופן הזה? הוא לא ייטען אם נעשה בו שימוש בקובץ."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "סגנון גופן נמחק"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr "למחוק את הגופן הזה? הוא לא ייטען אם נעשה בו שימוש בקובץ."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "גופן נמחק"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "למחוק את העמוד הזה?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "מחיקת עמוד"
@@ -2710,15 +2711,15 @@ msgstr "הצוות הזה הוא כרגע בבעלותך. להפוך את %s ל
msgid "modals.promote-owner-confirm.title"
msgstr "בעלים חדשים לצוות"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "פרסום"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
msgid "modals.publish-empty-library.message"
msgstr "הספרייה שלך ריקה. לפרסם אותה בכל זאת?"
-#: src/app/main/ui/workspace/libraries.cljs:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "פרסום ספרייה ריקה"
@@ -2779,21 +2780,21 @@ msgstr ""
msgid "modals.update-remote-component-in-bulk.message"
msgstr "עדכון רכיבים בספרייה משותפת"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "עדכון"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "ביטול"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
msgid "modals.update-remote-component.hint"
msgstr ""
"פעולה זו תעדכן רכיב בספריה משותפת. זה עשוי להשפיע על הקבצים האחרים שמשתמשים "
"בה."
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "עדכון רכיב בספריה משותפת"
@@ -2945,27 +2946,27 @@ msgstr "מדריכים מצולמים"
msgid "onboarding-v2.before-start.title"
msgstr "לפני שמתחילים"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"ניתן להירשם לרשימת הדיוור של Penpot כדי להתעדכן בתהליך פיתוח המוצר ובחדשות "
"נוספות."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr "נא לשלוח לי חדשות על Penpot (בלוגים, מדריכים מצולמים, שידורים…)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "אכפת לנו מפרטיות, כאן ניתן לקרוא את "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"אנו נשלח לך בדוא״ל רק הודעות שרלוונטיות לך. אפשר לבטל את המינוי דרך כפתור "
"ביטול המינוי בכל אחת מהודעות הדיוור שלנו."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr "נא לשלוח לי עדכונים על המוצר (יכולות חדשות, מהדורות, תיקונים…)."
@@ -3059,15 +3060,15 @@ msgstr "אפשר ליצור צוות בהמשך."
msgid "onboarding.newsletter.accept"
msgstr "כן, להירשם"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr "בקשת המינוי שלך נשלחה, נשלח לך הודעה בדוא״ל כדי לאשר אותה."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "מדיניות פרטיות."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "מעניין אותך לקבל חדשות על Penpot?"
@@ -3260,7 +3261,7 @@ msgstr "מעבר למסך הכניסה"
msgid "settings.detach"
msgstr "ניתוק"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "מעורב"
@@ -3458,7 +3459,7 @@ msgstr "יצירת חדש"
msgid "shortcuts.cut"
msgstr "גזירה"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "התרחקות"
@@ -3558,7 +3559,7 @@ msgstr "פיזור אופקית"
msgid "shortcuts.hide-ui"
msgstr "הצגת/הסתרת מנשק משתמש"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "התקרבות"
@@ -3942,15 +3943,15 @@ msgstr "התמקדות על הנבחר"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "ספקי גופנים - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "גופנים - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "מיזמים - %s - Penpot"
@@ -3958,7 +3959,7 @@ msgstr "מיזמים - %s - Penpot"
msgid "title.dashboard.search"
msgstr "חיפוש - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "ספריות משותפות - %s - Penpot"
@@ -3966,7 +3967,7 @@ msgstr "ספריות משותפות - %s - Penpot"
msgid "title.default"
msgstr "Penpot - חופש עיצובי לצוותים"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "פרופיל - אסימוני גישה"
@@ -3974,7 +3975,7 @@ msgstr "פרופיל - אסימוני גישה"
msgid "title.settings.feedback"
msgstr "הגשת משוב - Penpot"
-#: src/app/main/ui/settings/notifications.cljs:64
+#: src/app/main/ui/settings/notifications.cljs:45
msgid "title.settings.notifications"
msgstr "התראות - Penpot"
@@ -4010,7 +4011,7 @@ msgstr "התליות - %s - Penpot"
msgid "title.viewer"
msgstr "%s - מצב תצוגה - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -4110,7 +4111,7 @@ msgstr "(%s) פיזור בריווח אנכי"
msgid "workspace.align.vtop"
msgstr "(%s) יישור למעלה"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:174, src/app/main/ui/workspace/sidebar/assets.cljs:179
+#: src/app/main/ui/workspace/sidebar/assets.cljs:171
msgid "workspace.assets.add-library"
msgstr "הוספת ספרייה"
@@ -4119,11 +4120,11 @@ msgstr "הוספת ספרייה"
msgid "workspace.assets.assets"
msgstr "משאבים"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "כל המשאבים"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "צבעים"
@@ -4131,11 +4132,11 @@ msgstr "צבעים"
msgid "workspace.assets.colors.add-color"
msgstr "הוספת צבע"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "רכיבים"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:510
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:520
msgid "workspace.assets.components.add-component"
msgstr "הוספת רכיב"
@@ -4147,15 +4148,15 @@ msgstr "יצירת קבוצה"
msgid "workspace.assets.create-group-hint"
msgstr "הפריטים שלך יקבלו אוטומטית שם בסגנון „שם קבוצה / שם פריט”"
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "מחיקה"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "שכפול"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "שכפול הראשי"
@@ -4163,19 +4164,19 @@ msgstr "שכפול הראשי"
msgid "workspace.assets.edit"
msgstr "עריכה"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:195
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
msgid "workspace.assets.filter"
msgstr "סינון"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "גרפיקה"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:505
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:515
msgid "workspace.assets.grid-view"
msgstr "תצוגת טבלה"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "קבוצה"
@@ -4183,27 +4184,23 @@ msgstr "קבוצה"
msgid "workspace.assets.group-name"
msgstr "שם קבוצה"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "ספריות"
-
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:501
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:511
msgid "workspace.assets.list-view"
msgstr "תצוגת רשימה"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "ספרייה מקומית"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "לא נמצאו משאבים"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "פתיחת קובץ ספרייה"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "שינוי שם"
@@ -4211,7 +4208,7 @@ msgstr "שינוי שם"
msgid "workspace.assets.rename-group"
msgstr "שינוי שם קבוצה"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "חיפוש במשאבים"
@@ -4229,7 +4226,7 @@ msgstr[3] "%s פריטים נבחרו"
msgid "workspace.assets.shared-library"
msgstr "ספרייה משותפת"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:226
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:235
msgid "workspace.assets.sidebar.components"
msgid_plural "workspace.assets.sidebar.components"
msgstr[0] "רכיב"
@@ -4237,11 +4234,11 @@ msgstr[1] "שני רכיבים"
msgstr[2] "%s רכיבים"
msgstr[3] "%s רכיבים"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:211
+#: src/app/main/ui/workspace/sidebar/assets.cljs:201
msgid "workspace.assets.sort"
msgstr "מיון"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "טיפוגרפיות"
@@ -4254,27 +4251,27 @@ msgstr "הוספת טיפוגרפיה"
msgid "workspace.assets.typography.font-id"
msgstr "גופן"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "גודל"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "הגוון"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "מעבר לקובץ ספריית סגנון כדי לערוך"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "ריווח תווים"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "גובה שורה"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "שצ"
@@ -4282,7 +4279,7 @@ msgstr "שצ"
msgid "workspace.assets.typography.text-styles"
msgstr "סגנונות טקסט"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "התמרת טקסט"
@@ -4290,55 +4287,55 @@ msgstr "התמרת טקסט"
msgid "workspace.assets.ungroup"
msgstr "פירוק קבוצה"
-#: src/app/main/ui/workspace/context_menu.cljs:748
+#: src/app/main/ui/workspace/context_menu.cljs:764
msgid "workspace.context-menu.grid-cells.area"
msgstr "יצירת שטח"
-#: src/app/main/ui/workspace/context_menu.cljs:751
+#: src/app/main/ui/workspace/context_menu.cljs:767
msgid "workspace.context-menu.grid-cells.create-board"
msgstr "יצירת לוח"
-#: src/app/main/ui/workspace/context_menu.cljs:743
+#: src/app/main/ui/workspace/context_menu.cljs:759
msgid "workspace.context-menu.grid-cells.merge"
msgstr "מיזוג תאים"
-#: src/app/main/ui/workspace/context_menu.cljs:706
+#: src/app/main/ui/workspace/context_menu.cljs:722
msgid "workspace.context-menu.grid-track.column.add-after"
msgstr "הוספת עמודה מימין"
-#: src/app/main/ui/workspace/context_menu.cljs:705
+#: src/app/main/ui/workspace/context_menu.cljs:721
msgid "workspace.context-menu.grid-track.column.add-before"
msgstr "הוספת עמודה משמאל"
-#: src/app/main/ui/workspace/context_menu.cljs:707
+#: src/app/main/ui/workspace/context_menu.cljs:723
msgid "workspace.context-menu.grid-track.column.delete"
msgstr "מחיקת עמודה"
-#: src/app/main/ui/workspace/context_menu.cljs:708
+#: src/app/main/ui/workspace/context_menu.cljs:724
msgid "workspace.context-menu.grid-track.column.delete-shapes"
msgstr "מחיקת עמודה וצורות"
-#: src/app/main/ui/workspace/context_menu.cljs:704
+#: src/app/main/ui/workspace/context_menu.cljs:720
msgid "workspace.context-menu.grid-track.column.duplicate"
msgstr "שכפול עמודה"
-#: src/app/main/ui/workspace/context_menu.cljs:713
+#: src/app/main/ui/workspace/context_menu.cljs:729
msgid "workspace.context-menu.grid-track.row.add-after"
msgstr "הוספת שורה מתחת"
-#: src/app/main/ui/workspace/context_menu.cljs:712
+#: src/app/main/ui/workspace/context_menu.cljs:728
msgid "workspace.context-menu.grid-track.row.add-before"
msgstr "הוספת שורה למעלה"
-#: src/app/main/ui/workspace/context_menu.cljs:714
+#: src/app/main/ui/workspace/context_menu.cljs:730
msgid "workspace.context-menu.grid-track.row.delete"
msgstr "מחיקת שורה"
-#: src/app/main/ui/workspace/context_menu.cljs:715
+#: src/app/main/ui/workspace/context_menu.cljs:731
msgid "workspace.context-menu.grid-track.row.delete-shapes"
msgstr "מחיקת שורה וצורות"
-#: src/app/main/ui/workspace/context_menu.cljs:711
+#: src/app/main/ui/workspace/context_menu.cljs:727
msgid "workspace.context-menu.grid-track.row.duplicate"
msgstr "שכפול שורה"
@@ -4346,11 +4343,11 @@ msgstr "שכפול שורה"
msgid "workspace.focus.focus-mode"
msgstr "מצב מיקוד"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "מיקוד כבוי"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "מיקוד פעיל"
@@ -4508,37 +4505,36 @@ msgstr "החלפה לערכת עיצוב בהירה"
msgid "workspace.header.menu.undo"
msgstr "החזרה"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "איפוס"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "שגיאה בשמירה"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "נשמר"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "בשמירה"
-#: src/app/main/ui/workspace/right_header.cljs:255
+#: src/app/main/ui/workspace/right_header.cljs:221
msgid "workspace.header.share"
msgstr "שיתוף"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "שינויים שלא נשמרו"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "מצב תצוגה (%s)"
-#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "תקריב"
@@ -4550,7 +4546,7 @@ msgstr "מילוי - שינוי גודל כדי למלא"
msgid "workspace.header.zoom-fit"
msgstr "התאמה - שינוי גודל כדי להתאים"
-#: src/app/main/ui/workspace/right_header.cljs:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "כיוון תקריב כדי להציג הכול"
@@ -4558,19 +4554,19 @@ msgstr "כיוון תקריב כדי להציג הכול"
msgid "workspace.header.zoom-full-screen"
msgstr "מסך מלא"
-#: src/app/main/ui/workspace/right_header.cljs:136
+#: src/app/main/ui/workspace/right_header.cljs:104
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:607
+#: 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:616
msgid "workspace.layout_grid.editor.options.edit-grid"
msgstr "עריכת רשת"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
msgid "workspace.layout_grid.editor.options.exit"
msgstr "יציאה מהמערכת"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:478
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
msgid "workspace.layout_grid.editor.padding.expand"
msgstr "הצגת אפשרויות ריפוד עם 4 צדדים"
@@ -4586,7 +4582,7 @@ msgstr "בוצע"
msgid "workspace.layout_grid.editor.top-bar.locate"
msgstr "איתור"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1321
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
msgstr "איתור פריסת הרשת"
@@ -4595,7 +4591,7 @@ msgstr "איתור פריסת הרשת"
msgid "workspace.libraries.add"
msgstr "הוספה"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s צבעים"
@@ -4625,43 +4621,43 @@ msgstr "צבעים אחרונים"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "RGB משלים"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "שמירת סגנון צבע"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:374
+#: src/app/main/ui/workspace/libraries.cljs:371
msgid "workspace.libraries.empty.add-some"
msgstr "או להוסיף כמה מאלה לניסיון:"
-#: src/app/main/ui/workspace/libraries.cljs:368
+#: src/app/main/ui/workspace/libraries.cljs:365
msgid "workspace.libraries.empty.no-libraries"
msgstr "אין ספריות משותפות בצוות שלך, אפשר לחפש אחר"
-#: src/app/main/ui/workspace/libraries.cljs:372
+#: src/app/main/ui/workspace/libraries.cljs:369
msgid "workspace.libraries.empty.some-templates"
msgstr "כל מיני תבניות כאן"
-#: src/app/main/ui/workspace/libraries.cljs:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "ספריית קבצים"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "ספריות בקובץ הזה"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "ספריות"
@@ -4670,71 +4666,64 @@ msgstr "ספריות"
msgid "workspace.libraries.library"
msgstr "ספרייה"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "עדכוני ספרייה"
-#: src/app/main/ui/workspace/libraries.cljs:363
+#: src/app/main/ui/workspace/libraries.cljs:360
msgid "workspace.libraries.loading"
msgstr "בטעינה…"
#: src/app/main/ui/workspace/libraries.cljs:387
+#, unused
msgid "workspace.libraries.more-templates"
msgstr "אפשר לחפש "
-#: src/app/main/ui/workspace/libraries.cljs:391
-msgid "workspace.libraries.more-templates-link"
-msgstr "תבניות נוספות כאן"
-
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "אין ספריות משותפות שדורשות עדכון"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "לא נמצאו תוצאות לחיפוש אחר „%s”"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "אין ספריות משותפות זמינות"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "חיפוש בספריות המשותפות"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "ספריות משותפות"
-#: src/app/main/ui/workspace/libraries.cljs:355
+#: src/app/main/ui/workspace/libraries.cljs:352
msgid "workspace.libraries.shared-library-btn"
msgstr "חיבור ספרייה"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "מגוון טיפוגרפיות"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "ניתוק כל הטיפוגרפיות"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:326
+#: src/app/main/ui/workspace/libraries.cljs:323
msgid "workspace.libraries.unlink-library-btn"
msgstr "ניתוק ספרייה"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "עדכון"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "הצגת כל השינויים"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "עדכונים"
@@ -4766,43 +4755,43 @@ msgstr "טשטוש בחירה"
msgid "workspace.options.blur-options.toggle-blur"
msgstr "החלת/הסרת טשטוש"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "רקע משטח ציור"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "חיתוך התוכן"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "רכיב"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "הסבר"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "העתקה"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "יצירת הסבר"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "עריכת הסבר"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "ראשי"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:416
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
msgid "workspace.options.component.swap"
msgstr "החלפת רכיב"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:460
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
msgid "workspace.options.component.swap.empty"
msgstr "עדיין אין נכסים בתיקייה הזאת"
@@ -4850,7 +4839,7 @@ msgstr "עליון ותחתון"
msgid "workspace.options.design"
msgstr "עיצוב"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "ייצוא"
@@ -4859,7 +4848,7 @@ msgstr "ייצוא"
msgid "workspace.options.export-multiple"
msgstr "ייצוא הבחירה"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
msgid "workspace.options.export-object"
msgid_plural "workspace.options.export-object"
msgstr[0] "ייצוא רכיב"
@@ -4867,15 +4856,15 @@ msgstr[1] "ייצוא %s רכיבים"
msgstr[2] "ייצוא %s רכיבים"
msgstr[3] "ייצוא %s רכיבים"
-#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:187
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188
msgid "workspace.options.export.add-export"
msgstr "הוספת ייצוא"
-#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:199, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:234
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235
msgid "workspace.options.export.remove-export"
msgstr "הסרת ייצוא"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "סיומת"
@@ -4883,7 +4872,7 @@ msgstr "סיומת"
msgid "workspace.options.exporting-complete"
msgstr "הייצוא הושלם"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "מתבצע ייצוא…"
@@ -4907,6 +4896,10 @@ msgstr "הוספת צבע מילוי"
msgid "workspace.options.fill.remove-fill"
msgstr "הסרת מילוי"
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:341
+msgid "workspace.options.fit-content"
+msgstr "שינוי גודל הלוח כדי שיתאים לתוכן"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182
msgid "workspace.options.flows.add-flow-start"
msgstr "הוספת תחילת זרימה"
@@ -5045,7 +5038,7 @@ msgstr "קווים מנחים"
msgid "workspace.options.guides.toggle-guide"
msgstr "הצגת/הסתרת קו מנחה"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "גובה"
@@ -5368,19 +5361,19 @@ msgstr "הצגת/הסתרת שכבה"
msgid "workspace.options.layout-item.advanced-ops"
msgstr "אפשרויות מתקדמות"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "גובה מר."
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "רוחב מר."
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "גובה מז."
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "רוחב מז."
@@ -5494,11 +5487,11 @@ msgstr "רווח בין לבין"
msgid "workspace.options.layout.top"
msgstr "עליון"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "צבעים נוספים"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "צבעי ספרייה נוספים"
@@ -5543,7 +5536,7 @@ msgstr "צמצום רדיוס עצמאי"
msgid "workspace.options.radius.show-single-corners"
msgstr "הצגת רדיוס עצמאי"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "אחרונים"
@@ -5551,11 +5544,11 @@ msgstr "אחרונים"
msgid "workspace.options.retry"
msgstr "לנסות שוב"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "סיבוב"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "חיפוש גופן"
@@ -5563,7 +5556,7 @@ msgstr "חיפוש גופן"
msgid "workspace.options.select-a-shape"
msgstr "נא לבחור צורה, לוח או קבוצה כדי לגרור חיבור ללוח אחר."
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "צבעים נבחרים"
@@ -5575,55 +5568,55 @@ msgstr "מילוי בחירה"
msgid "workspace.options.selection-stroke"
msgstr "מתאר בחירה"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:292
msgid "workspace.options.shadow-options.add-shadow"
msgstr "הוספת הצללה"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "טשטוש"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "צבע הצללה"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "הטלת צל"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "צל פנימי"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:180, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:318
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
msgid "workspace.options.shadow-options.remove-shadow"
msgstr "הסרת הצללה"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "פיזור"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "צל"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "צל של קבוצה"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "צללים של בחירה"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:176
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:144
msgid "workspace.options.shadow-options.toggle-shadow"
msgstr "הצגת/הסתרת הצללה"
@@ -5631,7 +5624,7 @@ msgstr "הצגת/הסתרת הצללה"
msgid "workspace.options.show-fill-on-export"
msgstr "הצגה בייצואים"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "להציג במצב הצגה"
@@ -5639,7 +5632,7 @@ msgstr "להציג במצב הצגה"
msgid "workspace.options.size"
msgstr "גודל"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "תבניות גודל"
@@ -5708,7 +5701,7 @@ msgstr "משולש"
msgid "workspace.options.stroke-color"
msgstr "צבע מתאר"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "עובי מתאר"
@@ -5780,11 +5773,11 @@ msgstr "רוחב אוטומטי"
msgid "workspace.options.text-options.grow-fixed"
msgstr "קבוע"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "ריווח תווים"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "גובה שורה"
@@ -5848,15 +5841,15 @@ msgstr "אותיות גדולות"
msgid "workspace.options.use-play-button"
msgstr "ניתן להשתמש בכפתור הנגינה שבכותרת כדי להריץ את תצוגת האבטיפוס."
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "עובי"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "ציר X"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "ציר Y"
@@ -6030,123 +6023,127 @@ msgstr "תוסף ‚%s’ מותקן למשתמש שלך!"
msgid "workspace.plugins.try-out.try"
msgstr "התנסות בתוסף"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "הוספת פריסת flex"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "הוספת פריסת רשת"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1004, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1030
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1013, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039
msgid "workspace.shape.menu.add-layout"
msgstr "הוספת פריסה"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "הרחקה"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "הרחקה לאחור"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "העתקה"
-#: src/app/main/ui/workspace/context_menu.cljs:203
+#: src/app/main/ui/workspace/context_menu.cljs:204
msgid "workspace.shape.menu.copy-css"
msgstr "העתקה כ־CSS"
-#: src/app/main/ui/workspace/context_menu.cljs:205
+#: src/app/main/ui/workspace/context_menu.cljs:206
msgid "workspace.shape.menu.copy-css-nested"
msgstr "העתקה כ־CSS (שכבות מקוננות)"
-#: src/app/main/ui/workspace/context_menu.cljs:188
+#: src/app/main/ui/workspace/context_menu.cljs:189
msgid "workspace.shape.menu.copy-link"
msgstr "העתקת קישור ללוח הגזירים"
-#: src/app/main/ui/workspace/context_menu.cljs:201
+#: src/app/main/ui/workspace/context_menu.cljs:202
msgid "workspace.shape.menu.copy-paste-as"
msgstr "העתקה/הדבקה בתור…"
-#: src/app/main/ui/workspace/context_menu.cljs:213
+#: src/app/main/ui/workspace/context_menu.cljs:214
msgid "workspace.shape.menu.copy-props"
msgstr "העתקת מאפיינים"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/context_menu.cljs:211
+msgid "workspace.shape.menu.copy-text"
+msgstr "העתקה כטקסט"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "יצירת הסבר"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "בחירה ללוח"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "יצירת רכיב"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "יצירת מגוון רכיבים"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "גזירה"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "מחיקה"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "מחיקת התחלת זרימה"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "ניתוק מופע"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "הפרדת מופעים"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "הבדל"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "שכפול"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "עריכה"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "החרגה"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "שיטוח"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "היפוך אופקי"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "היפוך אנכי"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "התחלת זרימה"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "קידום"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "קידום לחזית"
@@ -6155,107 +6152,107 @@ msgstr "קידום לחזית"
msgid "workspace.shape.menu.go-main"
msgstr "מעבר לקובץ הרכיב הראשי"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "קבוצה"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "הסתרה"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "הצגת/הסתרת מנשק משתמש"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "הצלבה"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "נעילה"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "מסכה"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "הדבקה"
-#: src/app/main/ui/workspace/context_menu.cljs:217
+#: src/app/main/ui/workspace/context_menu.cljs:218
msgid "workspace.shape.menu.paste-props"
msgstr "הדבקת מאפיינים"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "נתיב"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "הסרת פריסת flex"
-#: src/app/main/ui/workspace/context_menu.cljs:531
+#: src/app/main/ui/workspace/context_menu.cljs:535
msgid "workspace.shape.menu.remove-grid"
msgstr "הסרת פריסת רשת"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1022
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1031
msgid "workspace.shape.menu.remove-layout"
msgstr "הסרת פריסה"
-#: src/app/main/ui/workspace/context_menu.cljs:312
+#: src/app/main/ui/workspace/context_menu.cljs:313
msgid "workspace.shape.menu.rename"
msgstr "שינוי שם"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "איפוס מעקפים"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "שחזור הרכיב הראשי"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "בחירת שכבה"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "הצגה"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "הצגה בלוח משאבים"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "הצגת הרכיב הראשי"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "הסרת התמונה הממוזערת"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "הגדרה כתמונה ממוזערת"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "המרה לנתיב"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "פירוק קבוצה"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "איחוד"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "שחרור נעילה"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "ביטול מסכה"
@@ -6264,7 +6261,7 @@ msgstr "ביטול מסכה"
msgid "workspace.shape.menu.update-components-in-bulk"
msgstr "עדכון הרכיבים הראשיים"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "עדכון הרכיב הראשי"
@@ -6276,11 +6273,11 @@ msgstr "צמצום סרגל צד"
msgid "workspace.sidebar.expand"
msgstr "הרחבת סרגל צד"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "היסטוריה"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "שכבות"
@@ -6316,7 +6313,7 @@ msgstr "צורות"
msgid "workspace.sidebar.layers.texts"
msgstr "טקסטים"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "מאפייני SVG יובאו"
@@ -6328,7 +6325,7 @@ msgstr "עמודים"
msgid "workspace.sidebar.sitemap.add-page"
msgstr "הוספת עמוד"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "מפת אתר"
@@ -6346,43 +6343,43 @@ msgstr "%s ערכות עיצוב פעילות"
msgid "workspace.token.add set"
msgstr "הוספת סדרה"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:341
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:136
+msgid "workspace.token.applied-to"
+msgstr "חל על"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:391
msgid "workspace.token.back-to-themes"
msgstr "חזרה לרשימת ערכות העיצוב"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:51
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:54
msgid "workspace.token.create-new-theme"
msgstr "אפשר ליצור את ערכת העיצוב הראשונה שלך עכשיו."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:191, src/app/main/ui/workspace/tokens/sidebar.cljs:218
+#: src/app/main/ui/workspace/tokens/sets.cljs:134, src/app/main/ui/workspace/tokens/sidebar.cljs:190
msgid "workspace.token.create-one"
msgstr "ליצור אחד."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159, src/app/main/ui/workspace/tokens/modals/themes.cljs:237
-msgid "workspace.token.create-theme-title"
-msgstr "יצירת ערכת עיצוב"
-
-#: src/app/main/ui/workspace/tokens/form.cljs:431
+#: src/app/main/ui/workspace/tokens/form.cljs:492
msgid "workspace.token.create-token"
msgstr "יצירת אסימון %s חדש"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:228
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:278
msgid "workspace.token.delete"
msgstr "מחיקת אסימון"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:151
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159
msgid "workspace.token.delete-theme-title"
msgstr "מחיקת ערכת עיצוב"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:225
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:275
msgid "workspace.token.duplicate"
msgstr "שכפול אסימון"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:212
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:262
msgid "workspace.token.edit"
msgstr "עריכת אסימון"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:333
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:383
msgid "workspace.token.edit-theme-title"
msgstr "עריכת ערכת עיצוב"
@@ -6390,15 +6387,15 @@ msgstr "עריכת ערכת עיצוב"
msgid "workspace.token.edit-themes"
msgstr "עריכת ערכות עיצוב"
-#: src/app/main/ui/workspace/tokens/form.cljs:430
+#: src/app/main/ui/workspace/tokens/form.cljs:491
msgid "workspace.token.edit-token"
msgstr "עריכת אסימון"
-#: src/app/main/ui/workspace/tokens/form.cljs:481
+#: src/app/main/ui/workspace/tokens/form.cljs:544
msgid "workspace.token.enter-token-description"
msgstr "הוספת תיאור (רשות)"
-#: src/app/main/ui/workspace/tokens/form.cljs:437
+#: src/app/main/ui/workspace/tokens/form.cljs:498
msgid "workspace.token.enter-token-name"
msgstr "נא למלא את שם האסימון %s"
@@ -6407,86 +6404,108 @@ msgstr "נא למלא את שם האסימון %s"
msgid "workspace.token.grouping-set-alert"
msgstr "אין עדיין תמיכה בקיבוץ סדרות אסימונים."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:56
-msgid "workspace.token.new-theme"
-msgstr "ערכת עיצוב חדשה"
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:196
+msgid "workspace.token.label.group"
+msgstr "קבוצה"
-#: src/app/main/ui/workspace/tokens/theme_select.cljs:88
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:206
+msgid "workspace.token.label.theme"
+msgstr "ערכת עיצוב"
+
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:89
msgid "workspace.token.no-active-theme"
msgstr "אין ערכת עיצוב פעילה"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:146
-msgid "workspace.token.no-sets"
-msgstr "אין סדרות"
+#: src/app/main/ui/workspace/tokens/sets.cljs:110
+msgid "workspace.token.no-permisions-set"
+msgstr "נדרשות הרשאות עריכה כדי להפעיל / להשבית סדרות"
-#: src/app/main/ui/workspace/tokens/sets.cljs:401, src/app/main/ui/workspace/tokens/sets.cljs:405
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:199
+msgid "workspace.token.no-permission-themes"
+msgstr "נדרשות הרשאות עריכה כדי להשתמש בערכות עיצוב"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:504
msgid "workspace.token.no-sets-create"
msgstr "עדיין לא מוגדרות סדרות. נא ליצור אחת קודם."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:215, src/app/main/ui/workspace/tokens/sidebar.cljs:221
+#: src/app/main/ui/workspace/tokens/sets.cljs:131, src/app/main/ui/workspace/tokens/sets.cljs:137
msgid "workspace.token.no-sets-yet"
msgstr "אין סדרות עדיין."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:187
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:186
msgid "workspace.token.no-themes"
msgstr "אין ערכות עיצוב."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:47
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:50
msgid "workspace.token.no-themes-currently"
msgstr "אין לך ערכות עיצוב עדיין."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:137
-msgid "workspace.token.num-sets"
-msgstr "%s סדרות"
-
-#: src/app/main/ui/workspace/tokens/token_pill.cljs:114
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:122
#, fuzzy
msgid "workspace.token.original-value"
-msgstr "ערך מקורי: "
+msgstr "ערך מקורי: %s"
-#: src/app/main/ui/workspace/tokens/form.cljs:205, src/app/main/ui/workspace/tokens/form.cljs:208, src/app/main/ui/workspace/tokens/token_pill.cljs:115
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:128
+msgid "workspace.token.ref-not-valid"
+msgstr "ההפניה לא תקפה או שאינה באף סדרה פעילה"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:217, src/app/main/ui/workspace/tokens/form.cljs:221, src/app/main/ui/workspace/tokens/token_pill.cljs:123
#, fuzzy
msgid "workspace.token.resolved-value"
-msgstr "ערך פתור: "
+msgstr "ערך פתור: %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:203
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:240
msgid "workspace.token.save-theme"
msgstr "שמירת ערכת עיצוב"
-#: src/app/main/ui/workspace/tokens/sets.cljs:200, src/app/main/ui/workspace/tokens/sets.cljs:305
+#: src/app/main/ui/workspace/tokens/sets.cljs:239, src/app/main/ui/workspace/tokens/sets.cljs:340
msgid "workspace.token.select-set"
msgstr "בחירה ערכה."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:346
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:396
msgid "workspace.token.set-selection-theme"
msgstr "נא להגדיר באילו סדרות אסימונים להשתמש כחלק מאפשרות ערכת העיצוב הזאת:"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs
-#, unused
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:136
msgid "workspace.token.theme-name"
msgstr "ערכת עיצוב %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:43, src/app/main/ui/workspace/tokens/modals/themes.cljs:88
-msgid "workspace.token.themes"
-msgstr "ערכות עיצוב"
-
-#: src/app/main/ui/workspace/tokens/form.cljs:482
+#: src/app/main/ui/workspace/tokens/form.cljs:545
msgid "workspace.token.token-description"
msgstr "תיאור"
-#: src/app/main/ui/workspace/tokens/form.cljs:440
+#: src/app/main/ui/workspace/tokens/form.cljs:501
msgid "workspace.token.token-name"
msgstr "שם"
-#: src/app/main/ui/workspace/tokens/form.cljs:464
+#: src/app/main/ui/workspace/tokens/form.cljs:59
+msgid "workspace.token.token-name-validation-error"
+msgstr ""
+" הוא לא שם תקף לאסימון.\n"
+"שמות אסימונים אמורים להכיל אותיות וספרות בלבד עם תווי ‚.’ מפרידים ביניהם "
+"ואסור לו להתחיל ב־$."
+
+#: src/app/main/ui/workspace/tokens/form.cljs:526
msgid "workspace.token.token-value"
msgstr "ערך"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:348
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:322
+msgid "workspace.token.tokens-section-title"
+msgstr "אסימונים - %s"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:405
msgid "workspace.token.tools"
msgstr "כלים"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:131
+msgid "workspace.token.value-not-valid"
+msgstr "הערך לא תקף"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:520
+msgid "workspace.token.warning-name-change"
+msgstr "שינוי שם האסימון הזה יפגע בכל הפניה לשם הישן שלו."
+
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "משאבים"
@@ -6494,39 +6513,39 @@ msgstr "משאבים"
msgid "workspace.toolbar.color-palette"
msgstr "ערכת צבעים (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "הערות (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "עיקול (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "אליפסה (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "לוח (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "תמונה (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "העברה (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "נתיב (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:201, src/app/main/ui/workspace/top_toolbar.cljs:202
+#: src/app/main/ui/workspace/top_toolbar.cljs:210, src/app/main/ui/workspace/top_toolbar.cljs:211
msgid "workspace.toolbar.plugins"
msgstr "תוספים (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "ריבוע (%s)"
@@ -6535,7 +6554,7 @@ msgstr "ריבוע (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "קיצורי דרך (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "טקסט (%s)"
@@ -6543,7 +6562,7 @@ msgstr "טקסט (%s)"
msgid "workspace.toolbar.text-palette"
msgstr "טיפוגרפיות (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:220, src/app/main/ui/workspace/top_toolbar.cljs:221
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
msgid "workspace.toolbar.toggle-toolbar"
msgstr "הצגת/הסתרת סרגל כלים"
@@ -6701,19 +6720,19 @@ msgstr "פעולה על %s"
msgid "workspace.undo.title"
msgstr "היסטוריה"
-#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "התעלמות"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
msgid "workspace.updates.more-info"
msgstr "מידע נוסף"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
msgid "workspace.updates.there-are-updates"
msgstr "יש עדכונים בספריות המשותפות"
-#: src/app/main/data/workspace/libraries.cljs:1225
+#: src/app/main/data/workspace/libraries.cljs:1226
msgid "workspace.updates.update"
msgstr "עדכון"
@@ -6773,11 +6792,11 @@ msgstr "לשחזר את הגרסה הזאת?"
msgid "workspace.versions.snapshot-menu"
msgstr "פתיחת תפריט תמונת מצב"
-#: src/app/main/ui/workspace/sidebar.cljs:284
+#: src/app/main/ui/workspace/sidebar.cljs:285
msgid "workspace.versions.tab.actions"
msgstr "פעולות"
-#: src/app/main/ui/workspace/sidebar.cljs:281
+#: src/app/main/ui/workspace/sidebar.cljs:282
msgid "workspace.versions.tab.history"
msgstr "היסטוריה"
diff --git a/frontend/translations/hr.po b/frontend/translations/hr.po
index 7a769729f5..036089cf21 100644
--- a/frontend/translations/hr.po
+++ b/frontend/translations/hr.po
@@ -1,6 +1,6 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2024-06-17 08:07+0000\n"
+"PO-Revision-Date: 2025-03-20 13:42+0000\n"
"Last-Translator: Anonymous \n"
"Language-Team: Croatian "
" \n"
@@ -10,12 +10,16 @@ msgstr ""
"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.6-dev\n"
+"X-Generator: Weblate 5.11-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
msgstr "Već imaš račun?"
+#: src/app/main/ui/auth/recovery_request.cljs:113, src/app/main/ui/auth/register.cljs:274
+msgid "auth.check-mail"
+msgstr "Provjerite e-poštu"
+
#: src/app/main/ui/auth/register.cljs:277
msgid "auth.check-your-email"
msgstr "Provjeri svoj e-mail i klikni na vezu da potvrdiš i počneš koristiti Penpot."
@@ -33,13 +37,13 @@ msgstr "Kreiraj demo račun"
msgid "auth.create-demo-profile"
msgstr "Samo želiš isprobati?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Ovo je DEMO usluga. NEMOJ KORISTITI za pravi rad. Projekti će se povremeno "
"brisati."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Zaboravljena lozinka?"
@@ -47,31 +51,39 @@ msgstr "Zaboravljena lozinka?"
msgid "auth.fullname"
msgstr "Puno ime"
+#: src/app/main/ui/auth/login.cljs:282
+msgid "auth.login-account-title"
+msgstr "Prijavite se na svoj račun"
+
#: src/app/main/ui/auth/register.cljs:137, src/app/main/ui/static.cljs:158, src/app/main/ui/viewer/login.cljs:101
msgid "auth.login-here"
-msgstr "Prijavi se ovdje"
+msgstr "Prijavi se ovdje."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Prijava"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:285
+msgid "auth.login-tagline"
+msgstr "Penpot je besplatan alat otvorenog koda za dizajn i suradnju na kodu"
+
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -95,7 +107,7 @@ msgstr "Veza za oporavak lozinke poslana je u tvoj inbox."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Uspješno pridružen/a timu"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Lozinka"
@@ -123,14 +135,29 @@ msgstr "Zaboravljena lozinka?"
msgid "auth.recovery-submit"
msgstr "Promjeni lozinku"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Još nemaš račun?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/register.cljs:254
+msgid "auth.register-account-tagline"
+msgstr "Recite nam kako bismo Vas trebali zvati na nadzornoj ploči i u e-porukama."
+
+#: src/app/main/ui/auth/register.cljs:253
+msgid "auth.register-account-title"
+msgstr "Vaše ime"
+
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Stvori račun"
+#: src/app/main/ui/auth/register.cljs:124
+msgid "auth.register-tagline"
+msgstr ""
+"S besplatnim Penpot računom možete stvoriti neograničen broj timova i "
+"surađivati s drugim dizajnerima i programerima na koliko god želite "
+"projekata. "
+
#: src/app/main/ui/auth/register.cljs:122
msgid "auth.register-title"
msgstr "Stvori račun"
@@ -140,15 +167,39 @@ msgstr "Stvori račun"
msgid "auth.sidebar-tagline"
msgstr "Open Source rješenje za dizajn i izradu prototipova."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:157
+#, markdown
+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:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Uvjeti pružanja usluge"
+#, unused
+msgid "auth.terms-privacy-agreement"
+msgstr ""
+"Prilikom kreiranja novog računa, pristajete našim uvjetima pružanja usluge "
+"i politici privatnosti."
+
#: src/app/main/ui/auth/register.cljs:275
msgid "auth.verification-email-sent"
msgstr "Poslali smo e-mail za potvrdu na"
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+msgid "auth.work-email"
+msgstr "Poslovna e-pošta"
+
+#: src/app/main/ui/onboarding/questions.cljs
+#, unused
+msgid "branding-illustrations-marketing-pieces"
+msgstr "...branding, ilustracije, marketinški dijelovi, itd."
+
+#: src/app/main/ui/comments.cljs:532
+msgid "comments.mentions.not-found"
+msgstr "Nisu pronađene osobe za @%s"
+
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Objavi"
@@ -221,7 +272,7 @@ msgstr "Podijeli prototip"
msgid "common.share-link.view-all"
msgstr "Označi sve"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Poništi objavu"
@@ -269,6 +320,81 @@ msgstr "Započni obilazak"
msgid "dasboard.walkthrough-hero.title"
msgstr "Pregledaj sučelje"
+#: src/app/main/ui/settings/access_tokens.cljs:104
+msgid "dashboard.access-tokens.copied-success"
+msgstr "Token je kopiran"
+
+#: src/app/main/ui/settings/access_tokens.cljs:190
+msgid "dashboard.access-tokens.create"
+msgstr "Generirajte novi token"
+
+#: src/app/main/ui/settings/access_tokens.cljs:65
+msgid "dashboard.access-tokens.create.success"
+msgstr "Pristupni token uspješno je kreiran."
+
+#: src/app/main/ui/settings/access_tokens.cljs:288
+msgid "dashboard.access-tokens.empty.add-one"
+msgstr "Pritisnite gumb \"Generiraj novi token\" da biste ga generirali."
+
+#: src/app/main/ui/settings/access_tokens.cljs:287
+msgid "dashboard.access-tokens.empty.no-access-tokens"
+msgstr "Za sada nemate token."
+
+#: src/app/main/ui/settings/access_tokens.cljs:136
+msgid "dashboard.access-tokens.expiration-180-days"
+msgstr "180 dana"
+
+#: src/app/main/ui/settings/access_tokens.cljs:133
+msgid "dashboard.access-tokens.expiration-30-days"
+msgstr "30 dana"
+
+#: src/app/main/ui/settings/access_tokens.cljs:134
+msgid "dashboard.access-tokens.expiration-60-days"
+msgstr "60 dana"
+
+#: src/app/main/ui/settings/access_tokens.cljs:135
+msgid "dashboard.access-tokens.expiration-90-days"
+msgstr "90 dana"
+
+#: src/app/main/ui/settings/access_tokens.cljs:132
+msgid "dashboard.access-tokens.expiration-never"
+msgstr "Nikada"
+
+#: src/app/main/ui/settings/access_tokens.cljs:270
+msgid "dashboard.access-tokens.expired-on"
+msgstr "Isteklo %s"
+
+#: src/app/main/ui/settings/access_tokens.cljs:271
+msgid "dashboard.access-tokens.expires-on"
+msgstr "Istječe %s"
+
+#: src/app/main/ui/settings/access_tokens.cljs:269
+msgid "dashboard.access-tokens.no-expiration"
+msgstr "Nema roka isteka"
+
+#: src/app/main/ui/settings/access_tokens.cljs:185
+msgid "dashboard.access-tokens.personal"
+msgstr "Osobni pristupni tokeni"
+
+#: src/app/main/ui/settings/access_tokens.cljs:186
+msgid "dashboard.access-tokens.personal.description"
+msgstr ""
+"Osobni tokeni za pristup funkcioniraju kao alternativa našem sustavu "
+"provjere autentičnosti prijave/lozinke i mogu se koristiti kako bi se "
+"aplikaciji omogućio pristup internom Penpot API-ju"
+
+#: src/app/main/ui/settings/access_tokens.cljs:143
+msgid "dashboard.access-tokens.token-will-expire"
+msgstr "Token će isteći %s"
+
+#: src/app/main/ui/settings/access_tokens.cljs:144
+msgid "dashboard.access-tokens.token-will-not-expire"
+msgstr "Token nema datum isteka"
+
+#: src/app/main/ui/dashboard/placeholder.cljs:35
+msgid "dashboard.add-file"
+msgstr "Dodaj datoteku"
+
#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612
msgid "dashboard.add-shared"
msgstr "Dodaj kao zajedničku biblioteku"
@@ -277,7 +403,7 @@ msgstr "Dodaj kao zajedničku biblioteku"
msgid "dashboard.change-email"
msgstr "Promijeni e-mail"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(kopiraj)"
@@ -285,6 +411,10 @@ msgstr "(kopiraj)"
msgid "dashboard.create-new-team"
msgstr "+ Kreiraj novi tim"
+#: src/app/main/ui/workspace/main_menu.cljs:623
+msgid "dashboard.create-version-menu"
+msgstr "Prikvači ovu verziju"
+
#: src/app/main/ui/components/context_menu_a11y.cljs:282, src/app/main/ui/dashboard/sidebar.cljs:659
msgid "dashboard.default-team-name"
msgstr "Tvoj Penpot"
@@ -309,13 +439,53 @@ msgstr "Kopija"
msgid "dashboard.duplicate-multi"
msgstr "Kopiraj %s datoteka"
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
+msgid "dashboard.empty-placeholder-drafts-subtitle"
+msgstr "Nakon što član projekta izradi nacrt, on će se prikazati ovdje."
+
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
+msgid "dashboard.empty-placeholder-drafts-title"
+msgstr "Još nema nacrta."
+
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
+msgid "dashboard.empty-placeholder-files-subtitle"
+msgstr "Nakon što član projekta stvori datoteku, ona će se prikazati ovdje."
+
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
+msgid "dashboard.empty-placeholder-files-title"
+msgstr "Još nema datoteka."
+
+#: src/app/main/ui/dashboard/placeholder.cljs:77
+#, markdown
+msgid "dashboard.empty-placeholder-libraries"
+msgstr ""
+"Ovdje će se pojaviti biblioteke dodane projektu. Pokušajte podijeliti svoje "
+"datoteke ili ih dodajte iz naših [biblioteka i "
+"predložaka](https://penpot.app/libraries-templates)."
+
+#: src/app/main/ui/dashboard/placeholder.cljs
+#, markdown, unused
+msgid "dashboard.empty-placeholder-libraries-subtitle"
+msgstr ""
+"Ovdje će se pojaviti biblioteke dodane projektu. Pokušajte podijeliti svoje "
+"datoteke ili ih dodajte iz naših [biblioteka i "
+"predložaka](https://penpot.app/libraries-templates)."
+
+#: src/app/main/ui/dashboard/placeholder.cljs:73
+msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role"
+msgstr "Ovdje će se pojaviti biblioteke dodane projektu."
+
+#: src/app/main/ui/dashboard/placeholder.cljs:70
+msgid "dashboard.empty-placeholder-libraries-title"
+msgstr "Još nema biblioteka."
+
#: src/app/main/ui/dashboard/file_menu.cljs:249, src/app/main/ui/dashboard/file_menu.cljs:254
msgid "dashboard.export-binary-multi"
msgstr "Preuzmi %s Penpot datoteke (.penpot)"
#: src/app/main/ui/workspace/main_menu.cljs:676
msgid "dashboard.export-frames"
-msgstr "Izvezi artboard u PDF…"
+msgstr "Izvezi artboard u PDF"
#: src/app/main/ui/exports/assets.cljs:199
msgid "dashboard.export-frames.title"
@@ -399,26 +569,34 @@ msgstr "Uključi stavke zajedničke biblioteke u biblioteke datoteka"
msgid "dashboard.export.title"
msgstr "Izvezi datoteke"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Font izbrisan"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Odbaci sve"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Još uvijek nemaš instalirane custom fontove."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:450
+msgid "dashboard.fonts.empty-placeholder-viewer"
+msgstr "Još nema prilagođenih fontova."
+
+#: src/app/main/ui/dashboard/fonts.cljs:451
+msgid "dashboard.fonts.empty-placeholder-viewer-sub"
+msgstr "Nakon što član projekta prenese prilagođeni font, on će se prikazati ovdje."
+
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "1 font dodan"
msgstr[1] "%s fontova dodano"
msgstr[2] "%s fontova dodano"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -427,20 +605,31 @@ msgstr ""
"će grupirani kao **jedan font**. Možeš učitati fontove sa sljedećim "
"formatima: **TTF, OTF i WOFF** (biti će potreban samo jedan)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Možeš učitavati samo fontove koje posjeduješ ili imaš licencu za korištenje "
"u Penpotu. Saznaj više u odjeljku Prava na sadržaj [Penpotovih uvjeta "
-"pružanja usluge](%s). Također možeš pročitati o "
-"[licenciranju fontova](https://www.typography.com/faq)."
+"pružanja usluge](%s). Također možeš pročitati o [licenciranju "
+"fontova](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Učitaj sve"
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/fonts.cljs:193
+#, markdown
+msgid "dashboard.fonts.warning-text"
+msgstr ""
+"Otkrili smo mogući problem u vašim fontovima povezan s vertikalnom metrikom "
+"za različite operativne sustave. Kako biste to provjerili, možete koristiti "
+"usluge okomite metrike fonta poput "
+"[ove](https://vertical-metrics.netlify.app/). Osim toga, preporučujemo "
+"korištenje [Transfonter](https://transfonter.org/) za generiranje "
+"web-fontova i ispravljanje pogrešaka. "
+
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Uvezi Penpot datoteke"
@@ -448,18 +637,30 @@ msgstr "Uvezi Penpot datoteke"
msgid "dashboard.import.analyze-error"
msgstr "Ups! Nismo mogli uvesti ovu datoteku"
+#, unused
+msgid "dashboard.import.analyze-error.components-v2"
+msgstr "Datoteka s komponentama v2 je aktivirana, ali je ovaj tim još ne podržava."
+
+#: src/app/main/ui/dashboard.cljs:247
+msgid "dashboard.import.bad-url"
+msgstr "Uvoz nije uspio. URL predloška nije točan"
+
+#: src/app/main/ui/dashboard.cljs:241
+msgid "dashboard.import.error"
+msgstr "Uvoz nije uspio. Molimo pokušajte ponovo"
+
#: src/app/main/ui/dashboard/import.cljs:292
msgid "dashboard.import.import-error"
msgstr "Došlo je do problema pri uvozu datoteke. Datoteka nije uvezena."
-#: src/app/main/ui/dashboard/import.cljs:466
-msgid "dashboard.import.import-message"
-msgstr "%s datoteka je uspješno uvezeno."
-
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Neke su datoteke sadržavale nevažeće objekte koji su uklonjeni."
+#: src/app/main/ui/dashboard.cljs:248
+msgid "dashboard.import.no-perms"
+msgstr "Nemate dopuštenje za uvoz u ovaj tim"
+
#: src/app/main/ui/dashboard/import.cljs:129
msgid "dashboard.import.progress.process-colors"
msgstr "Obrada boja"
@@ -496,27 +697,27 @@ msgstr "Pozovi u tim"
msgid "dashboard.leave-team"
msgstr "Napusti tim"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Biblioteke i predlošci"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "Istraži više njih i saznaj kako doprinijeti"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "Došlo je do problema prilikom uvoza predloška. Predložak nije uvezen."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Biblioteke"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "učitavanje tvojih datoteka…"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "učitavanje tvojih fontova…"
@@ -532,11 +733,11 @@ msgstr "Premijesti %s datoteke u"
msgid "dashboard.move-to-other-team"
msgstr "Premijesti u drugi tim"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Nova datoteka"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Nova datoteka"
@@ -544,7 +745,7 @@ msgstr "Nova datoteka"
msgid "dashboard.new-project"
msgstr "+ Novi projekt"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Novi projekt"
@@ -556,6 +757,10 @@ msgstr "Nisu pronađeni rezultati za “%s”"
msgid "dashboard.no-projects-placeholder"
msgstr "Prikvačeni projekti pojavit će se ovdje"
+#: src/app/main/ui/dashboard/comments.cljs:90
+msgid "dashboard.notifications"
+msgstr "Obavijesti"
+
#: src/app/main/ui/auth/verify_token.cljs:34
msgid "dashboard.notifications.email-changed-successfully"
msgstr "Tvoja e-mail adresa je uspješno ažurirana"
@@ -564,10 +769,18 @@ 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:260
+msgid "dashboard.notifications.notifications-saved"
+msgstr "Postavke obavijesti ažurirane"
+
#: src/app/main/ui/settings/password.cljs:36
msgid "dashboard.notifications.password-saved"
msgstr "Lozinka je uspješno spremljena!"
+#: src/app/main/ui/dashboard/comments.cljs:44
+msgid "dashboard.notifications.view"
+msgstr "Pregledajte obavijesti"
+
#: src/app/main/ui/dashboard/team.cljs:1133
msgid "dashboard.num-of-members"
msgstr "%s članova"
@@ -576,7 +789,7 @@ msgstr "%s članova"
msgid "dashboard.open-in-new-tab"
msgstr "Otvori datoteku u novoj kartici"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Mogućnosti"
@@ -584,10 +797,38 @@ msgstr "Mogućnosti"
msgid "dashboard.password-change"
msgstr "Promjeni lozinku"
+#: src/app/main/data/common.cljs:209
+msgid "dashboard.permissions-change.admin"
+msgstr "Sada ste administrator ovog tima."
+
+#: src/app/main/data/common.cljs:208
+msgid "dashboard.permissions-change.editor"
+msgstr "Sada ste urednik u ovom timu."
+
+#: src/app/main/data/common.cljs:210
+msgid "dashboard.permissions-change.owner"
+msgstr "Sada ste vlasnik ovog tima."
+
+#: src/app/main/data/common.cljs:207
+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
msgid "dashboard.pin-unpin"
msgstr "Prikvači/Otkvači"
+#: src/app/main/ui/dashboard.cljs:208
+msgid "dashboard.plugins.bad-url"
+msgstr "URL dodatka nije točan"
+
+#: src/app/main/ui/dashboard.cljs:206
+msgid "dashboard.plugins.parse-error"
+msgstr "Nije moguće analizirati manifest dodatka"
+
+#: src/app/main/ui/dashboard.cljs:169
+msgid "dashboard.plugins.try-plugin"
+msgstr "Isprobajte dodatak: "
+
#: src/app/main/ui/dashboard/projects.cljs:55
msgid "dashboard.projects-title"
msgstr "Projekti"
@@ -601,6 +842,10 @@ msgstr "Želiš li ukloniti svoj račun?"
msgid "dashboard.remove-shared"
msgstr "Ukloni kao zajedničku biblioteku"
+#: src/app/main/data/common.cljs:242
+msgid "dashboard.removed-from-team"
+msgstr "Niste više dio tima \"%s\"."
+
#: src/app/main/ui/settings/profile.cljs:78
msgid "dashboard.save-settings"
msgstr "Spremi postavke"
@@ -621,27 +866,83 @@ msgstr "Odaberite jezik korisničkog sučelja"
msgid "dashboard.select-ui-theme"
msgstr "Odaberi temu"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/settings/notifications.cljs:57
+msgid "dashboard.settings.notifications.dashboard-comments.all"
+msgstr "Svi komentari, spominjanja i odgovori"
+
+#: src/app/main/ui/settings/notifications.cljs:59
+msgid "dashboard.settings.notifications.dashboard-comments.none"
+msgstr "Nijedan"
+
+#: src/app/main/ui/settings/notifications.cljs:58
+msgid "dashboard.settings.notifications.dashboard-comments.partial"
+msgstr "Samo spominjanja i odgovori"
+
+#: src/app/main/ui/settings/notifications.cljs:54
+msgid "dashboard.settings.notifications.dashboard-comments.title"
+msgstr "Komentari datoteke"
+
+#: src/app/main/ui/settings/notifications.cljs:53
+msgid "dashboard.settings.notifications.dashboard.title"
+msgstr "Obavijesti nadzorne ploče"
+
+#: src/app/main/ui/settings/notifications.cljs:67
+msgid "dashboard.settings.notifications.email-comments.all"
+msgstr "Svi komentari, spominjanja i odgovori"
+
+#: src/app/main/ui/settings/notifications.cljs:69
+msgid "dashboard.settings.notifications.email-comments.none"
+msgstr "Nijedan"
+
+#: src/app/main/ui/settings/notifications.cljs:68
+msgid "dashboard.settings.notifications.email-comments.partial"
+msgstr "Samo spominjanja i odgovori"
+
+#: src/app/main/ui/settings/notifications.cljs:64
+msgid "dashboard.settings.notifications.email-comments.title"
+msgstr "Komentari datoteke"
+
+#: src/app/main/ui/settings/notifications.cljs:76
+msgid "dashboard.settings.notifications.email-invites.all"
+msgstr "Sve vrste pozivnica i zahtjeva"
+
+#: src/app/main/ui/settings/notifications.cljs:79
+msgid "dashboard.settings.notifications.email-invites.none"
+msgstr "Nijedan"
+
+#: src/app/main/ui/settings/notifications.cljs:73
+msgid "dashboard.settings.notifications.email-invites.title"
+msgstr "Pozivi i zahtjevi"
+
+#: src/app/main/ui/settings/notifications.cljs:63
+msgid "dashboard.settings.notifications.email.title"
+msgstr "Obavijesti e-poštom"
+
+#: src/app/main/ui/settings/notifications.cljs:84
+msgid "dashboard.settings.notifications.submit"
+msgstr "Ažurirajte postavke"
+
+#: src/app/main/ui/settings/notifications.cljs:52
+msgid "dashboard.settings.notifications.title"
+msgstr "Obavijesti"
+
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Prikaži sve datoteke"
-#: src/app/main/ui/dashboard/file_menu.cljs:97
-msgid "dashboard.success-delete-file"
-msgstr "Tvoja datoteka je uspješno izbrisana"
+#: src/app/main/ui/workspace/main_menu.cljs:630
+msgid "dashboard.show-version-history"
+msgstr "Povijest verzija"
#: src/app/main/ui/dashboard/project_menu.cljs:61
msgid "dashboard.success-delete-project"
msgstr "Tvoj projekt je uspješno izbrisan"
-#: src/app/main/ui/dashboard/file_menu.cljs:92
-msgid "dashboard.success-duplicate-file"
-msgstr "Tvoja datoteka je uspješno duplicirana"
-
#: src/app/main/ui/dashboard/project_menu.cljs:34
msgid "dashboard.success-duplicate-project"
msgstr "Tvoj projekt je uspješno dupliciran"
-#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Tvoja datoteka je uspješno premještena"
@@ -685,6 +986,61 @@ msgstr "Poništi objavu biblioteke"
msgid "dashboard.update-settings"
msgstr "Ažuriraj postavke"
+#: src/app/main/ui/dashboard/sidebar.cljs:970
+msgid "dashboard.upgrade-plan.no-limits"
+msgstr "Kreativnost nema ograničenja"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:969
+msgid "dashboard.upgrade-plan.penpot-free"
+msgstr "Penpot Free"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:972
+msgid "dashboard.upgrade-plan.power-up"
+msgstr "Power up"
+
+#: src/app/main/ui/dashboard/team.cljs:909
+msgid "dashboard.webhooks.active"
+msgstr "Aktivno"
+
+#: src/app/main/ui/dashboard/team.cljs:910
+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:954
+msgid "dashboard.webhooks.cant-edit"
+msgstr "Možete samo brisati ili mijenjati webhookove koje ste sami izradili."
+
+#: src/app/main/ui/dashboard/team.cljs:900
+msgid "dashboard.webhooks.content-type"
+msgstr "Vrsta sadržaja"
+
+#: src/app/main/ui/dashboard/team.cljs:933
+msgid "dashboard.webhooks.create"
+msgstr "Stvorite webhook"
+
+#: src/app/main/ui/dashboard/team.cljs:824
+msgid "dashboard.webhooks.create.success"
+msgstr "Webhook je uspješno stvoren."
+
+#: src/app/main/ui/dashboard/team.cljs:930
+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:1059
+msgid "dashboard.webhooks.empty.add-one"
+msgstr "Pritisnite gumb \"Dodaj webhook\" da biste ga dodali."
+
+#: src/app/main/ui/dashboard/team.cljs:1058
+msgid "dashboard.webhooks.empty.no-webhooks"
+msgstr "Do sada nije izrađen nijedan webhook."
+
+#, unused
+msgid "dashboard.webhooks.update.success"
+msgstr "Webhook je uspješno ažuriran."
+
#: src/app/main/ui/settings.cljs:33
msgid "dashboard.your-account-title"
msgstr "Tvoj korisnički račun"
@@ -697,7 +1053,7 @@ msgstr "E-mail"
msgid "dashboard.your-name"
msgstr "Ime"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Tvoj Penpot"
@@ -713,11 +1069,15 @@ msgstr "Pažnja"
msgid "ds.component-subtitle"
msgstr "Komponente za ažuriranje:"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/workspace/plugins.cljs:336, src/app/main/ui/workspace/plugins.cljs:390
+msgid "ds.confirm-allow"
+msgstr "Dopusti"
+
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Poništi"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "U redu"
@@ -725,7 +1085,11 @@ msgstr "U redu"
msgid "ds.confirm-title"
msgstr "Jesi li siguran/na?"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/data/auth.cljs:314
+msgid "errors.auth-provider-not-allowed"
+msgstr "Davatelj autentifikacije nije dopušten za ovaj profil"
+
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Pružatelj autentifikacije nije konfiguriran."
@@ -733,7 +1097,19 @@ msgstr "Pružatelj autentifikacije nije konfiguriran."
msgid "errors.auth.unable-to-login"
msgstr "Čini se da nisi autentificiran/a ili je sesija istekla."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
+msgid "errors.bad-font"
+msgstr "Font %s nije moguće učitati"
+
+#: src/app/main/data/fonts.cljs:191
+msgid "errors.bad-font-plural"
+msgstr "Fontovi %s nisu mogli biti učitani"
+
+#: src/app/main/data/workspace/media.cljs:198
+msgid "errors.cannot-upload"
+msgstr "Nije moguće učitati medijsku datoteku."
+
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Tvoj preglednik ne može izvršiti ovu operaciju"
@@ -745,10 +1121,14 @@ msgstr "E-mail se već koristi"
msgid "errors.email-already-validated"
msgstr "E-mail je već potvrđen."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Ne možeš koristiti svoj e-mail kao lozinku"
+#: src/app/main/data/auth.cljs:316, src/app/main/ui/auth/register.cljs:54
+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:57, src/app/main/ui/auth/register.cljs:60, src/app/main/ui/dashboard/team.cljs:620, 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."
@@ -757,7 +1137,38 @@ msgstr "E-pmail «%s» ima mnogo trajnih izvješća o odbijanju."
msgid "errors.email-spam-or-permanent-bounces"
msgstr "E-mail «%s» je prijavljen kao neželjena pošta ili je trajno odbijen."
-#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
+#: src/app/main/errors.cljs:242
+msgid "errors.feature-mismatch"
+msgstr ""
+"Čini se da otvarate datoteku koja ima omogućenu značajku '%s', ali je "
+"trenutna verzija penpota ne podržava ili je onemogućena."
+
+#: src/app/main/errors.cljs:246, src/app/main/errors.cljs:260
+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."
+
+#: 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
+msgid "errors.field-not-all-whitespace"
+msgstr "Ime mora sadržavati neki znak osim razmaka."
+
+#: src/app/main/errors.cljs:238
+msgid "errors.file-feature-mismatch"
+msgstr ""
+"Čini se da postoji neusklađenost između omogućenih značajki i značajki "
+"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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Dogodilo se nešto loše."
@@ -765,8 +1176,12 @@ msgstr "Dogodilo se nešto loše."
msgid "errors.invalid-color"
msgstr "Pogrešna boja"
-#: src/app/main/ui/settings/change_email.cljs
+#: src/app/main/ui/auth/register.cljs, src/app/main/ui/auth/login.cljs, src/app/main/ui/auth/recovery_request.cljs
#, unused
+msgid "errors.invalid-email"
+msgstr "Unesite valjanu e-poštu"
+
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "E-mail za potvrdu mora odgovarati"
@@ -782,10 +1197,18 @@ msgstr "Pogrešna pozivnica"
msgid "errors.invite-invalid.info"
msgstr "Ova pozivnica je možda otkazana ili je istekla."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "Onemogućena je LDAP provjera autentičnosti."
+#: src/app/main/errors.cljs:254, src/app/main/ui/dashboard/team.cljs:185, src/app/main/ui/onboarding/team_choice.cljs:104
+msgid "errors.max-quote-reached"
+msgstr "Dosegli ste kvotu '%s'. Kontaktirajte podršku."
+
+#: src/app/main/ui/dashboard/team.cljs:181, src/app/main/ui/onboarding/team_choice.cljs:100
+msgid "errors.maximum-invitations-by-request-reached"
+msgstr "Dosegnut je najveći (%s) broj e-pošta koje se mogu pozvati u jednom zahtjevu"
+
#: src/app/main/data/workspace/media.cljs:184
msgid "errors.media-too-large"
msgstr "Slika je prevelika za umetanje."
@@ -804,6 +1227,10 @@ msgstr ""
"Profil koji pozivaš ima isključen e-email (izvješća o neželjenoj pošti ili "
"veliki broj odbijanja)."
+#: src/app/main/errors.cljs:228
+msgid "errors.migration-in-progress"
+msgstr "Migracija u tijeku"
+
#: src/app/main/ui/settings/password.cljs
#, unused
msgid "errors.password-invalid-confirmation"
@@ -814,6 +1241,14 @@ msgstr "Lozinka za potvrdu mora odgovarati"
msgid "errors.password-too-short"
msgstr "Lozinka mora sadržavati najmanje 8 znakova"
+#: src/app/main/errors.cljs:137
+msgid "errors.paste-data-validation"
+msgstr "Nevažeći podaci u međuspremniku"
+
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
+msgid "errors.profile-blocked"
+msgstr "Profil je blokiran"
+
#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:176, src/app/main/ui/dashboard/team.cljs:611, src/app/main/ui/onboarding/team_choice.cljs:96, src/app/main/ui/settings/change_email.cljs:33
msgid "errors.profile-is-muted"
msgstr ""
@@ -824,6 +1259,10 @@ msgstr ""
msgid "errors.registration-disabled"
msgstr "Registracija je trenutno onemogućena."
+#: src/app/main/errors.cljs:233
+msgid "errors.team-feature-mismatch"
+msgstr "Otkrivena nekompatibilna značajka '%s'"
+
#: src/app/main/ui/dashboard/sidebar.cljs:374, src/app/main/ui/dashboard/team.cljs:387
msgid "errors.team-leave.insufficient-members"
msgstr "Nedovoljno članova za napuštanje tima, vjerojatno ga želiš izbrisati."
@@ -844,12 +1283,47 @@ msgstr "Došlo je do neočekivane pogreške."
msgid "errors.unexpected-token"
msgstr "Nepoznati token"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#, unused
+msgid "errors.validation"
+msgstr "Pogreška provjere valjanosti"
+
+#: src/app/main/errors.cljs:250
+msgid "errors.version-not-supported"
+msgstr "Datoteka ima nekompatibilan broj verzije"
+
+#: src/app/main/ui/dashboard/team.cljs:844
+msgid "errors.webhooks.connection"
+msgstr "Pogreška veze, URL nije dostupan"
+
+#: src/app/main/ui/dashboard/team.cljs:838
+msgid "errors.webhooks.invalid-uri"
+msgstr "URL ne prolazi provjeru valjanosti."
+
+#: src/app/main/ui/dashboard/team.cljs:998
+msgid "errors.webhooks.last-delivery"
+msgstr "Zadnja dostava nije bila uspješna."
+
+#: src/app/main/ui/dashboard/team.cljs:840, src/app/main/ui/dashboard/team.cljs:1001
+msgid "errors.webhooks.ssl-validation"
+msgstr "Pogreška pri SSL provjeri valjanosti."
+
+#: src/app/main/ui/dashboard/team.cljs:842
+msgid "errors.webhooks.timeout"
+msgstr "Istek vremena"
+
+#: src/app/main/ui/dashboard/team.cljs:836
+msgid "errors.webhooks.unexpected"
+msgstr "Neočekivana pogreška prilikom provjere"
+
+#: src/app/main/ui/dashboard/team.cljs:846, src/app/main/ui/dashboard/team.cljs:1004
+msgid "errors.webhooks.unexpected-status"
+msgstr "Neočekivani status %s"
+
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "Čini se da su korisničko ime ili lozinka pogrešni."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Stara lozinka je netočna"
@@ -895,11 +1369,11 @@ msgstr "Ovdje za pomoć za tvoje tehničke upite."
msgid "feedback.twitter-title"
msgstr "X korisnički račun za podršku"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Došlo je do pogreške"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Zamućenje"
@@ -907,31 +1381,31 @@ msgstr "Zamućenje"
msgid "inspect.attributes.blur.value"
msgstr "Vrijednost"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Ispuna"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Preuzmi izvornu sliku"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Visina"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Širina"
@@ -970,11 +1444,15 @@ msgstr "Vrh"
msgid "inspect.attributes.layout.width"
msgstr "Širina"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Sjena"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
+msgid "inspect.attributes.size"
+msgstr "Veličina i položaj"
+
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Potez"
@@ -1011,119 +1489,141 @@ msgstr "Solidan"
msgid "inspect.attributes.stroke.width"
msgstr "Širina"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Tipografija"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Font"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Veličina fonta"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Stil fonta"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:118
+msgid "inspect.attributes.typography.font-weight"
+msgstr "Težina fonta"
+
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Razmak između slova"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Visina linije"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Dekoracija teksta"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Nikakav"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Precrtano"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Podcrtano"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Transformiraj tekst"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Mala slova"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Nikakav"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Velika i mala slova"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:164
+msgid "inspect.attributes.typography.text-transform.unset"
+msgstr "Nepostavljeno"
+
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Velika slova"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
+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:166
+msgid "inspect.empty.more-info"
+msgstr "Više informacija o inspekciji"
+
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
+msgid "inspect.empty.select"
+msgstr "Odaberite oblik, ploču ili grupu da provjerite njihova svojstva i kod"
+
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Kod"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Krug"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Komponenta"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Krivulja"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Ploča"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Grupa"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Slika"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Maska"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s Označeno"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Path"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Pravokutnik"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Tekst"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Informacija"
@@ -1135,15 +1635,35 @@ msgstr "Prečaci"
msgid "labels.accept"
msgstr "Prihvati"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/settings/sidebar.cljs:112
+msgid "labels.access-tokens"
+msgstr "Pristupni tokeni"
+
+#: src/app/main/ui/dashboard/team.cljs:1017
+msgid "labels.active"
+msgstr "Aktivan"
+
+#: src/app/main/ui/workspace/libraries.cljs:176
+msgid "labels.add"
+msgstr "Dodati"
+
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Dodajte custom font"
+#: src/app/main/ui/workspace/libraries.cljs:176
+msgid "labels.adding"
+msgstr "Dodavanje..."
+
#: src/app/main/ui/dashboard/team.cljs:128, src/app/main/ui/dashboard/team.cljs:313, src/app/main/ui/dashboard/team.cljs:554, src/app/main/ui/dashboard/team.cljs:584, src/app/main/ui/onboarding/team_choice.cljs:66
msgid "labels.admin"
msgstr "Administrator"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/onboarding/questions.cljs:169
+msgid "labels.adobe-xd"
+msgstr "Adobe XD"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Sve"
@@ -1165,19 +1685,35 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Loš Gateway"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Odbaci"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/onboarding/questions.cljs:171
+msgid "labels.canva"
+msgstr "Canva"
+
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Zatvori"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/workspace/tokens/sets.cljs:219
+msgid "labels.collapse"
+msgstr "Sažmi"
+
+#: src/app/main/ui/comments.cljs:881
+msgid "labels.comment"
+msgstr "Komentar"
+
+#: src/app/main/ui/comments.cljs:885
+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
msgid "labels.comments"
msgstr "Komentari"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Zajenica"
@@ -1185,7 +1721,7 @@ msgstr "Zajenica"
msgid "labels.confirm-password"
msgstr "Potvrdi lozinku"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Nastavi"
@@ -1197,7 +1733,15 @@ msgstr "Nastavi sa"
msgid "labels.continue-with-penpot"
msgstr "Možeš nastaviti s Penpot računom"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/dashboard/team.cljs:683
+msgid "labels.copy-invitation-link"
+msgstr "Kopiraj vezu"
+
+#: src/app/main/ui/static.cljs:62
+msgid "labels.copyright"
+msgstr "Kaleidos @2024"
+
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Kreiraj"
@@ -1217,15 +1761,15 @@ msgstr "Custom fontovi"
msgid "labels.dashboard"
msgstr "Nadzorna ploča"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Izbriši"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Izbriši komentar"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Izbriši thread"
@@ -1237,11 +1781,23 @@ msgstr "Izbriši pozivnicu"
msgid "labels.delete-multi-files"
msgstr "Izbriši %s datoteka"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/onboarding/questions.cljs:246
+msgid "labels.developer"
+msgstr "Razvoj"
+
+#: src/app/main/ui/onboarding/questions.cljs:260
+msgid "labels.director"
+msgstr "Direktor"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
+msgid "labels.discard"
+msgstr "Odbaciti"
+
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Nacrti"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Uredi"
@@ -1253,11 +1809,15 @@ msgstr "Uredi datoteku"
msgid "labels.editor"
msgstr "Urednik"
+#: src/app/main/ui/onboarding/questions.cljs:404
+msgid "labels.event"
+msgstr "Događaj"
+
#: src/app/main/ui/dashboard/team.cljs:705
msgid "labels.expired-invitation"
msgstr "Isteklo"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Izvezi"
@@ -1269,7 +1829,11 @@ msgstr "Povratne informacije onemogućene"
msgid "labels.feedback-sent"
msgstr "Povratne informacije poslane"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/onboarding/questions.cljs:165
+msgid "labels.figma"
+msgstr "Figma"
+
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Font"
@@ -1277,19 +1841,27 @@ msgstr "Font"
msgid "labels.font-providers"
msgstr "Pružatelji fontova"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Stilovi"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Fontovi"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/onboarding/questions.cljs:259
+msgid "labels.founder"
+msgstr "CEO ili osnivač"
+
+#: src/app/main/ui/onboarding/questions.cljs:258
+msgid "labels.freelancer"
+msgstr "Freelancer"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Github repozitorij"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Daj povratnu informaciju"
@@ -1297,15 +1869,27 @@ msgstr "Daj povratnu informaciju"
msgid "labels.go-back"
msgstr "Povratak"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/onboarding/questions.cljs:248
+msgid "labels.graphic-design"
+msgstr "Grafički dizajn"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Centar za pomoć"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Sakrij riješene komentare"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:413
+msgid "labels.import"
+msgstr "Uvoz"
+
+#: src/app/main/ui/dashboard/team.cljs:1018
+msgid "labels.inactive"
+msgstr "Neaktivan"
+
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Instalirani fontovi"
@@ -1319,6 +1903,10 @@ msgstr ""
msgid "labels.internal-error.main-message"
msgstr "Interna pogreška"
+#: src/app/main/ui/onboarding/questions.cljs:173
+msgid "labels.invision"
+msgstr "InVision"
+
#: src/app/main/ui/dashboard/sidebar.cljs:525, src/app/main/ui/dashboard/team.cljs:96, src/app/main/ui/dashboard/team.cljs:104, src/app/main/ui/dashboard/team.cljs:760
msgid "labels.invitations"
msgstr "Pozivnice"
@@ -1327,18 +1915,30 @@ msgstr "Pozivnice"
msgid "labels.language"
msgstr "Jezik"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Biblioteke i predlošci"
+#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:115, src/app/main/ui/dashboard/grid.cljs:134, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:98, src/app/main/ui/ds/product/loader.cljs:85, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:118, src/app/main/ui.cljs:66, src/app/main/ui.cljs:104, src/app/main/ui.cljs:123
+msgid "labels.loading"
+msgstr "Učitavanje…"
+
#: src/app/main/ui/viewer/header.cljs:210
msgid "labels.log-or-sign"
msgstr "Prijava ili registracija"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/static.cljs:56, src/app/main/ui/static.cljs:134
+msgid "labels.login"
+msgstr "Prijava"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Odjava"
+#: src/app/main/ui/onboarding/questions.cljs:249
+msgid "labels.marketing"
+msgstr "Marketing"
+
#: src/app/main/ui/dashboard/team.cljs:506
msgid "labels.member"
msgstr "Član"
@@ -1351,9 +1951,13 @@ msgstr "Članovi"
msgid "labels.new-password"
msgstr "Nova lozinka"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, 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
msgid "labels.no-comments-available"
-msgstr "Nemaš obavijesti o komentarima na čekanju"
+msgstr "Nemaš obavijesti o komentarima na čekanju."
#: src/app/main/ui/dashboard/team.cljs:740
msgid "labels.no-invitations"
@@ -1373,7 +1977,11 @@ msgstr "Ova stranica možda ne postoji ili nemaš dopuštenja za pristup."
msgid "labels.not-found.main-message"
msgstr "Ups!"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/settings/sidebar.cljs:99
+msgid "labels.notifications"
+msgstr "Obavijesti"
+
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "1 datoteka"
@@ -1394,6 +2002,10 @@ msgstr[0] "1 projekt"
msgstr[1] "%s projekata"
msgstr[2] "%s projekata"
+#, unused
+msgid "labels.ok"
+msgstr "Ok"
+
#: src/app/main/ui/settings/password.cljs:77
msgid "labels.old-password"
msgstr "Stara lozinka"
@@ -1403,10 +2015,22 @@ msgstr "Stara lozinka"
msgid "labels.only-yours"
msgstr "Samo tvoj"
+#: src/app/main/ui/comments.cljs:891, src/app/main/ui/comments.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:293, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:322
+msgid "labels.options"
+msgstr "Mogućnosti"
+
#, unused
msgid "labels.or"
msgstr "ili"
+#: src/app/main/ui/onboarding/questions.cljs:140, src/app/main/ui/onboarding/questions.cljs:209, src/app/main/ui/onboarding/questions.cljs:298, src/app/main/ui/onboarding/questions.cljs:312, src/app/main/ui/onboarding/questions.cljs:383, src/app/main/ui/onboarding/questions.cljs:439
+msgid "labels.other"
+msgstr "Ostalo (navesti)"
+
+#: src/app/main/ui/onboarding/questions.cljs:100, src/app/main/ui/onboarding/questions.cljs:175, src/app/main/ui/onboarding/questions.cljs:251, src/app/main/ui/onboarding/questions.cljs:261, src/app/main/ui/onboarding/questions.cljs:351, src/app/main/ui/onboarding/questions.cljs:408
+msgid "labels.other-short"
+msgstr "Ostalo"
+
#: src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:553, src/app/main/ui/dashboard/team.cljs:1128
msgid "labels.owner"
msgstr "Vlasnik"
@@ -1419,6 +2043,22 @@ msgstr "Lozinka"
msgid "labels.pending-invitation"
msgstr "U tijeku"
+#: src/app/main/ui/comments.cljs:678
+msgid "labels.post"
+msgstr "Objaviti"
+
+#: src/app/main/ui/onboarding/questions.cljs:51, src/app/main/ui/viewer.cljs:105
+msgid "labels.previous"
+msgstr "Prethodno"
+
+#: src/app/main/ui/onboarding/questions.cljs:245
+msgid "labels.product-design"
+msgstr "Dizajn proizvoda ili UX"
+
+#: src/app/main/ui/onboarding/questions.cljs:250
+msgid "labels.product-management"
+msgstr "Upravljanje proizvodima"
+
#: src/app/main/ui/settings/profile.cljs:128, src/app/main/ui/settings/sidebar.cljs:89
msgid "labels.profile"
msgstr "Profil"
@@ -1427,10 +2067,15 @@ msgstr "Profil"
msgid "labels.projects"
msgstr "Projekti"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Release notes"
+#: src/app/main/ui/workspace.cljs
+#, unused
+msgid "labels.reload-file"
+msgstr "Ponovno učitaj datoteku"
+
#: src/app/main/ui/workspace/libraries.cljs, src/app/main/ui/dashboard/team.cljs
#, unused
msgid "labels.remove"
@@ -1440,7 +2085,7 @@ msgstr "Ukloni"
msgid "labels.remove-member"
msgstr "Ukloni člana"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Preimenuj"
@@ -1448,10 +2093,34 @@ msgstr "Preimenuj"
msgid "labels.rename-team"
msgstr "Preimenuj tim"
+#: src/app/main/ui/comments.cljs:641
+msgid "labels.replies"
+msgstr "odgovori"
+
+#: src/app/main/ui/comments.cljs:646
+msgid "labels.replies.new"
+msgstr "novi odgovori"
+
+#: src/app/main/ui/comments.cljs:640
+msgid "labels.reply"
+msgstr "odgovor"
+
+#: src/app/main/ui/comments.cljs:645
+msgid "labels.reply.new"
+msgstr "novi odgovor"
+
+#: src/app/main/ui/comments.cljs:721
+msgid "labels.reply.thread"
+msgstr "Odgovor"
+
#: src/app/main/ui/dashboard/team.cljs:686
msgid "labels.resend-invitation"
msgstr "Ponovno pošalji pozivnicu"
+#: src/app/main/ui/workspace/sidebar/versions.cljs:133, src/app/main/ui/workspace/sidebar/versions.cljs:263
+msgid "labels.restore"
+msgstr "Vratiti"
+
#: src/app/main/ui/static.cljs:342, src/app/main/ui/static.cljs:351, src/app/main/ui/static.cljs:428
msgid "labels.retry"
msgstr "Pokušaj ponovo"
@@ -1460,14 +2129,22 @@ msgstr "Pokušaj ponovo"
msgid "labels.role"
msgstr "Uloga"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Spremi"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
+msgid "labels.search"
+msgstr "Pretraživanje"
+
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Pretraži font"
+#: src/app/main/ui/onboarding/questions.cljs:85, src/app/main/ui/onboarding/questions.cljs:244, src/app/main/ui/onboarding/questions.cljs:255, src/app/main/ui/onboarding/questions.cljs:265
+msgid "labels.select-option"
+msgstr "Odaberite opciju"
+
#: src/app/main/ui/settings/feedback.cljs:79
msgid "labels.send"
msgstr "Pošalji"
@@ -1484,10 +2161,18 @@ 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:247
+msgid "labels.sets"
+msgstr "Skupovi"
+
#: src/app/main/ui/dashboard/sidebar.cljs:539, src/app/main/ui/dashboard/team.cljs:95, src/app/main/ui/dashboard/team.cljs:109, src/app/main/ui/settings/options.cljs:80, src/app/main/ui/settings/sidebar.cljs:105
msgid "labels.settings"
msgstr "Postavke"
+#: src/app/main/ui/viewer/header.cljs:206
+msgid "labels.share"
+msgstr "Dijeliti"
+
#, unused
msgid "labels.share-prototype"
msgstr "Podijeli prototip"
@@ -1496,26 +2181,58 @@ msgstr "Podijeli prototip"
msgid "labels.shared-libraries"
msgstr "Bibiloteke"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Prikaži sve komentare"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Prikaži listu komentara"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139
+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
msgid "labels.show-your-comments"
msgstr "Prikaži samo tvoje komentare"
+#: src/app/main/ui/onboarding/questions.cljs:167
+msgid "labels.sketch"
+msgstr "Skica"
+
+#: src/app/main/ui/onboarding/questions.cljs:56
+msgid "labels.start"
+msgstr "Start"
+
#: src/app/main/ui/dashboard/team.cljs:762
msgid "labels.status"
msgstr "Status"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/onboarding/questions.cljs:247
+msgid "labels.student-teacher"
+msgstr "Učenik ili učitelj"
+
+#: src/app/main/ui/onboarding/questions.cljs:256
+msgid "labels.team-leader"
+msgstr "Voditelj tima"
+
+#: src/app/main/ui/onboarding/questions.cljs:257
+msgid "labels.team-member"
+msgstr "Član tima"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:182
+msgid "labels.themes"
+msgstr "Teme"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Upute"
+#: src/app/main/ui/dashboard/file_menu.cljs:264
+msgid "labels.unpublish-multi-files"
+msgstr "Poništi objavu datoteka %s"
+
#: src/app/main/ui/settings/profile.cljs:111
msgid "labels.update"
msgstr "Ažuriraj"
@@ -1524,23 +2241,31 @@ msgstr "Ažuriraj"
msgid "labels.update-team"
msgstr "Ažuriraj tim"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Prenesi"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Prenesi custom fontove"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Prijenos…"
+#: src/app/main/ui/workspace/sidebar/sitemap.cljs:246
+msgid "labels.view-only"
+msgstr "Samo pogled"
+
#: src/app/main/ui/dashboard/team.cljs:125, src/app/main/ui/dashboard/team.cljs:307, src/app/main/ui/dashboard/team.cljs:556, src/app/main/ui/dashboard/team.cljs:592, src/app/main/ui/onboarding/team_choice.cljs:64
msgid "labels.viewer"
msgstr "Promatrač"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/dashboard/sidebar.cljs:532, src/app/main/ui/dashboard/team.cljs:97, src/app/main/ui/dashboard/team.cljs:107, src/app/main/ui/dashboard/team.cljs:928
+msgid "labels.webhooks"
+msgstr "Webhookovi"
+
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Napiši novi komentar"
@@ -1548,14 +2273,59 @@ msgstr "Napiši novi komentar"
msgid "labels.you"
msgstr "(ti)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Tvoj korisnički račun"
+#: src/app/main/ui/onboarding/questions.cljs:403
+msgid "labels.youtube"
+msgstr "YouTube"
+
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
+msgid "media.choose-image"
+msgstr "Odaberite sliku"
+
+#: src/app/main/ui/workspace/colorpicker.cljs:241
+msgid "media.gradient"
+msgstr "Gradijent"
+
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+msgid "media.image"
+msgstr "Slika"
+
+#: src/app/main/ui/inspect/attributes/common.cljs:77
+msgid "media.image.short"
+msgstr "slika"
+
+#: src/app/main/ui/workspace/colorpicker.cljs:467
+msgid "media.keep-aspect-ratio"
+msgstr "Zadrži omjer slike"
+
+#: src/app/main/ui/workspace/colorpicker.cljs:228
+#, unused
+msgid "media.linear"
+msgstr "Linearno"
+
#: src/app/main/data/media.cljs:49, src/app/main/data/workspace/media.cljs:222, src/app/main/data/workspace/media.cljs:460
msgid "media.loading"
msgstr "Učitavanje slike…"
+#: src/app/main/ui/workspace/colorpicker.cljs:229
+#, unused
+msgid "media.radial"
+msgstr "Radijalno"
+
+#: src/app/main/ui/workspace/colorpicker.cljs:239
+msgid "media.solid"
+msgstr "Čvrsto"
+
+#: src/app/main/data/common.cljs:134
+msgid "modals.add-shared-confirm-empty.hint"
+msgstr ""
+"Vaša biblioteka je prazna. Nakon dodavanja kao dijeljene biblioteke, "
+"sredstva koja stvorite bit će dostupna za korištenje među ostalim "
+"datotekama. Jeste li sigurni da je želite objaviti?"
+
#: src/app/main/data/common.cljs:136
msgid "modals.add-shared-confirm.accept"
msgstr "Dodaj kao zajedničku biblioteku"
@@ -1596,6 +2366,58 @@ msgstr "Promijeni e-mail"
msgid "modals.change-email.title"
msgstr "Promijeni svoj e-mail"
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
+msgid "modals.create-access-token.copy-token"
+msgstr "Kopiraj token"
+
+#: src/app/main/ui/settings/access_tokens.cljs:131
+msgid "modals.create-access-token.expiration-date.label"
+msgstr "Rok trajanja"
+
+#: src/app/main/ui/settings/access_tokens.cljs:125
+msgid "modals.create-access-token.name.label"
+msgstr "Ime"
+
+#: src/app/main/ui/settings/access_tokens.cljs:127
+msgid "modals.create-access-token.name.placeholder"
+msgstr "Ime može pomoći da se zna čemu služi token"
+
+#: src/app/main/ui/settings/access_tokens.cljs:179
+msgid "modals.create-access-token.submit-label"
+msgstr "Stvori token"
+
+#: src/app/main/ui/settings/access_tokens.cljs:112
+msgid "modals.create-access-token.title"
+msgstr "Generirajte pristupni token"
+
+#: src/app/main/ui/dashboard/team.cljs:921
+msgid "modals.create-webhook.submit-label"
+msgstr "Izradi webhook"
+
+#: src/app/main/ui/dashboard/team.cljs:886
+msgid "modals.create-webhook.title"
+msgstr "Izradi webhook"
+
+#: src/app/main/ui/dashboard/team.cljs:897
+msgid "modals.create-webhook.url.label"
+msgstr "URL tereta"
+
+#: src/app/main/ui/dashboard/team.cljs:898
+msgid "modals.create-webhook.url.placeholder"
+msgstr "https://primjer.com/postreceive"
+
+#: src/app/main/ui/settings/access_tokens.cljs:259
+msgid "modals.delete-acces-token.accept"
+msgstr "Izbriši token"
+
+#: src/app/main/ui/settings/access_tokens.cljs:258
+msgid "modals.delete-acces-token.message"
+msgstr "Jeste li sigurni da želite izbrisati ovaj token?"
+
+#: src/app/main/ui/settings/access_tokens.cljs:257
+msgid "modals.delete-acces-token.title"
+msgstr "Izbriši token"
+
#: src/app/main/ui/settings/delete_account.cljs:59
msgid "modals.delete-account.cancel"
msgstr "Otkaži i zadrži moj račun"
@@ -1612,20 +2434,28 @@ msgstr "Uklanjanjem računa izgubit ćeš sve svoje trenutne projekte i arhive."
msgid "modals.delete-account.title"
msgstr "Jeste li siguran/na da želiš izbrisati svoj račun?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Obriši razgovor"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Jesi li siguran/na da želiš izbrisati ovaj razgovor? Svi komentari u ovoj "
"temi biti će izbrisani."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Izbriši razgovor"
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
+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:146
+msgid "modals.delete-component-annotation.title"
+msgstr "Izbriši bilješku"
+
#: src/app/main/ui/dashboard/file_menu.cljs:124
msgid "modals.delete-file-confirm.accept"
msgstr "Izbriši datoteku"
@@ -1650,31 +2480,31 @@ msgstr "Jesi li siguran/na da želiš izbrisati %s datoteke?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Brisanje %s datoteka"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Jesi li siguran/na da želiš izbrisati ovaj stil fonta? Neće se učitati ako "
"se koristi u datoteci."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Brisanje fonta"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Jesi li siguran/na da želiš izbrisati ovaj font? Neće se učitati ako se "
"koristi u datoteci."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Brisanje fonta"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Jesi li siguran/na da želiš izbrisati ovu stranicu?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Brisanje stranice"
@@ -1697,6 +2527,20 @@ msgstr[0] "Izbriši datoteku"
msgstr[1] "Izbriši datoteke"
msgstr[2] "Izbriši datoteke"
+#: src/app/main/ui/delete_shared.cljs:55
+msgid "modals.delete-shared-confirm.activated.no-files-message"
+msgid_plural "modals.delete-shared-confirm.activated.no-files-message"
+msgstr[0] "Nije aktivirana ni u jednoj datoteci."
+msgstr[1] "Nisu aktivirane ni u jednoj datoteci."
+msgstr[2] "Nisu aktivirane ni u jednoj datoteci."
+
+#: src/app/main/ui/delete_shared.cljs:57
+msgid "modals.delete-shared-confirm.activated.scd-message"
+msgid_plural "modals.delete-shared-confirm.activated.scd-message"
+msgstr[0] "Ova biblioteka je aktivirana ovdje: "
+msgstr[1] "Ove biblioteke su aktivirana ovdje: "
+msgstr[2] "Ove biblioteke su aktivirana ovdje: "
+
#: src/app/main/ui/delete_shared.cljs:46
msgid "modals.delete-shared-confirm.message"
msgid_plural "modals.delete-shared-confirm.message"
@@ -1737,6 +2581,39 @@ msgstr "Jesi li siguran/na da želiš izbrisati ovog člana iz tima?"
msgid "modals.delete-team-member-confirm.title"
msgstr "Brisanje člana tima"
+#: src/app/main/ui/delete_shared.cljs:59
+msgid "modals.delete-unpublish-shared-confirm.activated.hint"
+msgid_plural "modals.delete-unpublish-shared-confirm.activated.hint"
+msgstr[0] ""
+"Sredstva koja su već korištena u ovoj datoteci ostat će ondje (nijedan "
+"dizajn neće biti pokvaren)."
+msgstr[1] ""
+"Sredstva koja su već korištena u tim datotekama ostat će ondje (nijedan "
+"dizajn neće biti pokvaren)."
+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:991
+msgid "modals.delete-webhook.accept"
+msgstr "Izbriši webhook"
+
+#: src/app/main/ui/dashboard/team.cljs:990
+msgid "modals.delete-webhook.message"
+msgstr "Jeste li sigurni da želite izbrisati ovaj webhook?"
+
+#: src/app/main/ui/dashboard/team.cljs:989
+msgid "modals.delete-webhook.title"
+msgstr "Brisanje webhooka"
+
+#: src/app/main/ui/dashboard/team.cljs:920
+msgid "modals.edit-webhook.submit-label"
+msgstr "Uredi webhook"
+
+#: src/app/main/ui/dashboard/team.cljs:885
+msgid "modals.edit-webhook.title"
+msgstr "Uredi webhook"
+
#: src/app/main/ui/dashboard/team.cljs:243
msgid "modals.invite-member-confirm.accept"
msgstr "Pošalji pozivnicu"
@@ -1745,6 +2622,18 @@ msgstr "Pošalji pozivnicu"
msgid "modals.invite-member.emails"
msgstr "E-mail, odvojeno zarezom"
+#: src/app/main/ui/dashboard/team.cljs:223
+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:216
+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:212
msgid "modals.invite-team-member.title"
msgstr "Pozovi članove u tim"
@@ -1759,6 +2648,12 @@ msgstr ""
msgid "modals.leave-and-close-confirm.message"
msgstr "Jesi li siguran/na da želiš napustiti tim %s?"
+#: src/app/main/ui/dashboard/change_owner.cljs:56
+msgid "modals.leave-and-reassign.forbidden"
+msgstr ""
+"Ne možete napustiti tim ako nema drugog člana kojeg možete promovirati u "
+"vlasnika. Možda želite izbrisati tim."
+
#: src/app/main/ui/dashboard/change_owner.cljs:52
msgid "modals.leave-and-reassign.hint1"
msgstr ""
@@ -1789,9 +2684,30 @@ msgstr "Jesi li siguran/na da želiš napustiti ovaj tim?"
msgid "modals.leave-confirm.title"
msgstr "Napuštanje tima"
+#: src/app/main/ui/delete_shared.cljs:53
+msgid "modals.move-shared-confirm.accept"
+msgid_plural "modals.move-shared-confirm.accept"
+msgstr[0] "Premjestiti"
+msgstr[1] "Premjestiti"
+msgstr[2] "Premjestiti"
+
+#: src/app/main/ui/delete_shared.cljs:48
+msgid "modals.move-shared-confirm.message"
+msgid_plural "modals.move-shared-confirm.message"
+msgstr[0] "Jeste li sigurni da želite premjestiti ovu biblioteku?"
+msgstr[1] "Jeste li sigurni da želite premjestiti ove biblioteke?"
+msgstr[2] "Jeste li sigurni da želite premjestiti ove biblioteke?"
+
+#: src/app/main/ui/delete_shared.cljs:43
+msgid "modals.move-shared-confirm.title"
+msgid_plural "modals.move-shared-confirm.title"
+msgstr[0] "Premjesti biblioteku"
+msgstr[1] "Premjesti biblioteke"
+msgstr[2] "Premjesti biblioteke"
+
#: src/app/main/ui/workspace/main_menu.cljs:271, src/app/main/ui/workspace/nudge.cljs:47
msgid "modals.nudge-title"
-msgstr "Nudge amount"
+msgstr "Pomakni za"
#: src/app/main/ui/dashboard/team.cljs:374
msgid "modals.promote-owner-confirm.accept"
@@ -1813,6 +2729,18 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "Novi vlasnik tima"
+#: src/app/main/ui/workspace/libraries.cljs:270
+msgid "modals.publish-empty-library.accept"
+msgstr "Objavi"
+
+#: src/app/main/ui/workspace/libraries.cljs:269
+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
+msgid "modals.publish-empty-library.title"
+msgstr "Objavi praznu biblioteku"
+
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
#, unused
msgid "modals.remove-shared-confirm.accept"
@@ -1835,10 +2763,6 @@ msgstr "Ukloni “%s” kao zajedničku biblioteku"
msgid "modals.small-nudge"
msgstr "Mali pomak"
-#: src/app/main/ui/delete_shared.cljs:52
-msgid "modals.unpublish-shared-confirm.accept"
-msgstr "Poništi objavu"
-
#: src/app/main/ui/delete_shared.cljs:47
msgid "modals.unpublish-shared-confirm.message"
msgid_plural "modals.unpublish-shared-confirm.message"
@@ -1865,28 +2789,140 @@ 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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Ažuriraj"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Poništi"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Ažuriraj komponentu u zajedničkoj biblioteci"
+#: src/app/main/ui/static.cljs:331
+msgid "not-found.desc-message.doesnt-exist"
+msgstr "Ova stranica ne postoji"
+
+#: src/app/main/ui/static.cljs:330
+msgid "not-found.desc-message.error"
+msgstr "404 greška"
+
+#: src/app/main/ui/static.cljs:135
+msgid "not-found.login.free"
+msgstr ""
+"Penpot je besplatni dizajnerski alat otvorenog koda za suradnju između "
+"dizajna i koda"
+
+#: src/app/main/ui/auth/recovery_request.cljs:114
+msgid "not-found.login.sent-recovery"
+msgstr "Poslali smo e-poštu za oporavak na"
+
+#: src/app/main/ui/auth/recovery_request.cljs:116
+msgid "not-found.login.sent-recovery-check"
+msgstr "Provjerite svoju e-poštu i kliknite na vezu za stvaranje nove lozinke."
+
+#: src/app/main/ui/static.cljs:149
+msgid "not-found.login.signup-free"
+msgstr "Prijavite se besplatno"
+
+#: src/app/main/ui/static.cljs:150
+msgid "not-found.login.start-using"
+msgstr "I počnite koristiti Penpot za nekoliko sekundi!"
+
+#: src/app/main/ui/static.cljs:64
+msgid "not-found.made-with-love"
+msgstr "Napravljeno s LJUBAVLJU i otvorenim kodom"
+
+#: src/app/main/ui/static.cljs:291
+msgid "not-found.no-permission.already-requested.file"
+msgstr "Već ste zatražili pristup ovoj datoteci."
+
+#: src/app/main/ui/static.cljs:292
+msgid "not-found.no-permission.already-requested.or-others.file"
+msgstr ""
+"Već ste zatražili pristup ovoj datoteci ili drugim datotekama ili "
+"projektima ovog tima."
+
+#: src/app/main/ui/static.cljs:298
+msgid "not-found.no-permission.already-requested.or-others.project"
+msgstr ""
+"Već ste zatražili pristup ovom projektu ili drugim projektima ili "
+"datotekama ovog tima."
+
+#: src/app/main/ui/static.cljs:297
+msgid "not-found.no-permission.already-requested.project"
+msgstr "Već ste zatražili pristup ovom projektu."
+
+#: src/app/main/ui/static.cljs:312, src/app/main/ui/static.cljs:321
+msgid "not-found.no-permission.ask"
+msgstr "ZATRAŽITE PRISTUP"
+
+#: src/app/main/ui/static.cljs:304
+msgid "not-found.no-permission.done.remember"
+msgstr "Zapamtite da ćete biti pozvani u tim ako vlasnik to dopusti."
+
+#: src/app/main/ui/static.cljs:303
+msgid "not-found.no-permission.done.success"
+msgstr "Vaš zahtjev je ispravno poslan!"
+
+#: src/app/main/ui/static.cljs:309
+msgid "not-found.no-permission.file"
+msgstr "Nemate pristup ovoj datoteci."
+
+#: src/app/main/ui/static.cljs:51, src/app/main/ui/static.cljs:287, src/app/main/ui/static.cljs:293, src/app/main/ui/static.cljs:299, src/app/main/ui/static.cljs:305, src/app/main/ui/static.cljs:314, src/app/main/ui/static.cljs:323
+msgid "not-found.no-permission.go-dashboard"
+msgstr "Idite na svoj Penpot"
+
+#: src/app/main/ui/static.cljs:311, src/app/main/ui/static.cljs:320
+msgid "not-found.no-permission.if-approves"
+msgstr "Ako vlasnik to dopusti, bit ćete pozvani u tim."
+
+#: src/app/main/ui/static.cljs:249, src/app/main/ui/static.cljs:261
+msgid "not-found.no-permission.penpot-file"
+msgstr "Penpot datoteka"
+
+#: src/app/main/ui/static.cljs:286, src/app/main/ui/static.cljs:318
+msgid "not-found.no-permission.project"
+msgstr "Nemate pristup ovom projektu."
+
+#: src/app/main/ui/static.cljs:248, src/app/main/ui/static.cljs:259
+msgid "not-found.no-permission.project-name"
+msgstr "PROJEKT"
+
+#: src/app/main/ui/static.cljs:310
+msgid "not-found.no-permission.you-can-ask.file"
+msgstr "Za pristup ovoj datoteci možete pitati vlasnika tima."
+
+#: src/app/main/ui/static.cljs:319
+msgid "not-found.no-permission.you-can-ask.project"
+msgstr "Za pristup ovom projektu možete pitati vlasnika tima."
+
+#: src/app/main/data/common.cljs:93
+msgid "notifications.by-code.maintenance"
+msgstr ""
+"Pauza za održavanje: usluga će biti nedostupna zbog kratkog održavanja u "
+"roku od 5 minuta."
+
+#: src/app/main/data/common.cljs:83
+msgid "notifications.by-code.upgrade-version"
+msgstr "Dostupna je nova verzija, molimo osvježite stranicu"
+
#: src/app/main/ui/dashboard/team.cljs:164, src/app/main/ui/dashboard/team.cljs:636
msgid "notifications.invitation-email-sent"
msgstr "Pozivnica je uspješno poslana"
+#: src/app/main/ui/dashboard/team.cljs:657
+msgid "notifications.invitation-link-copied"
+msgstr "Veza pozivnice je kopirana"
+
#: src/app/main/ui/settings/delete_account.cljs:24
msgid "notifications.profile-deletion-not-allowed"
msgstr ""
@@ -1929,6 +2965,30 @@ msgstr "Video tutorijali"
msgid "onboarding-v2.before-start.title"
msgstr "Prije nego počneš"
+#: src/app/main/ui/onboarding/newsletter.cljs:68
+msgid "onboarding-v2.newsletter.desc"
+msgstr ""
+"Pretplatite se na Penpot newsletter kako biste bili u tijeku s napretkom "
+"razvoja proizvoda i novostima."
+
+#: src/app/main/ui/onboarding/newsletter.cljs:88
+msgid "onboarding-v2.newsletter.news"
+msgstr "Šaljite mi vijesti o Penpotu (objave na blogu, video upute, prijenose...)."
+
+#: src/app/main/ui/onboarding/newsletter.cljs:96
+msgid "onboarding-v2.newsletter.privacy1"
+msgstr "Stalo nam je do privatnosti, ovdje možete pročitati naše "
+
+#: src/app/main/ui/onboarding/newsletter.cljs:102
+msgid "onboarding-v2.newsletter.privacy2"
+msgstr ""
+"Poslat ćemo vam samo relevantne e-poruke. Pretplatu se možete odjaviti u "
+"bilo kojem trenutku putem poveznice za odjavu u bilo kojem od naših brošura."
+
+#: src/app/main/ui/onboarding/newsletter.cljs:76
+msgid "onboarding-v2.newsletter.updates"
+msgstr "Šalji mi ažuriranja proizvoda (nove značajke, izdanja, popravke...)."
+
#, unused
msgid "onboarding-v2.welcome.desc1"
msgstr ""
@@ -1959,6 +3019,26 @@ msgstr "Vodič za doprinos"
msgid "onboarding-v2.welcome.title"
msgstr "Dobrodošli u Penpot!"
+#: src/app/main/ui/onboarding/team_choice.cljs:254
+msgid "onboarding.choice.team-up.continue-creating-team"
+msgstr "Nastavite sa stvaranjem tima"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:264
+msgid "onboarding.choice.team-up.continue-without-a-team"
+msgstr "Nastavi bez tima"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:193
+msgid "onboarding.choice.team-up.create-team-and-invite"
+msgstr "Stvorite tim i pozovite"
+
+#, unused
+msgid "onboarding.choice.team-up.create-team-and-send-invites"
+msgstr "Stvorite tim i pošaljite pozivnice"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:197
+msgid "onboarding.choice.team-up.create-team-and-send-invites-description"
+msgstr "Moći ćete pozvati kasnije"
+
#: src/app/main/ui/onboarding/team_choice.cljs:240
msgid "onboarding.choice.team-up.create-team-desc"
msgstr "Nakon što imenuješ svoj tim, moći ćeš pozvati ljude da se pridruže."
@@ -1967,6 +3047,14 @@ msgstr "Nakon što imenuješ svoj tim, moći ćeš pozvati ljude da se pridruže
msgid "onboarding.choice.team-up.create-team-placeholder"
msgstr "Unesi naziv tima"
+#: src/app/main/ui/onboarding/team_choice.cljs:194
+msgid "onboarding.choice.team-up.create-team-without-invite"
+msgstr "Stvorite tim"
+
+#, unused
+msgid "onboarding.choice.team-up.create-team-without-inviting"
+msgstr "Stvorite tim bez pozivanja"
+
#: src/app/main/ui/dashboard/projects.cljs:95, src/app/main/ui/onboarding/team_choice.cljs:159
msgid "onboarding.choice.team-up.invite-members"
msgstr "Pozovi članove"
@@ -1981,22 +3069,165 @@ msgstr ""
msgid "onboarding.choice.team-up.roles"
msgstr "Pozovi s ulogom:"
+#: src/app/main/ui/onboarding/team_choice.cljs:257
+msgid "onboarding.choice.team-up.start-without-a-team"
+msgstr "Počnite bez tima"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:259
+msgid "onboarding.choice.team-up.start-without-a-team-description"
+msgstr "Kasnije ćete moći stvoriti tim."
+
#, unused
msgid "onboarding.newsletter.accept"
msgstr "Da, pretplati se"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr "Tvoj zahtjev za pretplatu je poslan, poslat ćemo ti e-mail da ga potvrdiš."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Politika privatnosti."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Želiš primati Penpot novostii?"
+#: src/app/main/ui/onboarding/questions.cljs:113
+msgid "onboarding.questions.lets-get-started"
+msgstr "Započnimo!"
+
+#: src/app/main/ui/onboarding/questions.cljs:94
+msgid "onboarding.questions.reasons.alternative"
+msgstr "Tražite alternativu za Figmu, XD itd"
+
+#: src/app/main/ui/onboarding/questions.cljs:88
+msgid "onboarding.questions.reasons.exploring"
+msgstr "Samo istražujem"
+
+#: src/app/main/ui/onboarding/questions.cljs:91
+msgid "onboarding.questions.reasons.fit"
+msgstr "Pregledavam je li Penpot dobar za moj tim"
+
+#: src/app/main/ui/onboarding/questions.cljs:97
+msgid "onboarding.questions.reasons.testing"
+msgstr "Testiranje prije samostalnog hostinga"
+
+#: src/app/main/ui/onboarding/questions.cljs:407
+msgid "onboarding.questions.referer.article"
+msgstr "Članak (blog, post, brošura)"
+
+#: src/app/main/ui/onboarding/questions.cljs:405
+msgid "onboarding.questions.referer.search"
+msgstr "Tražilica (Google, Yahoo, Bing)"
+
+#: src/app/main/ui/onboarding/questions.cljs:406
+msgid "onboarding.questions.referer.social"
+msgstr "Društveni mreže (X, Linkedin, FB, itd.)"
+
+#: src/app/main/ui/onboarding/questions.cljs:349
+msgid "onboarding.questions.start-with.code"
+msgstr "Generiranje stvarnog koda iz dizajna"
+
+#: src/app/main/ui/onboarding/questions.cljs:347
+msgid "onboarding.questions.start-with.ds"
+msgstr "Stvaranje sustava dizajna"
+
+#: src/app/main/ui/onboarding/questions.cljs:345
+msgid "onboarding.questions.start-with.prototyping"
+msgstr "Prototipiranje"
+
+#: src/app/main/ui/onboarding/questions.cljs:341
+msgid "onboarding.questions.start-with.ui"
+msgstr "Dizajnirajte UI/UX aplikacije"
+
+#: src/app/main/ui/onboarding/questions.cljs:343
+msgid "onboarding.questions.start-with.wireframing"
+msgstr "Wireframing"
+
+#: src/app/main/ui/onboarding/questions.cljs:121
+msgid "onboarding.questions.step1.question1"
+msgstr "Za što ćete koristiti Penpot?"
+
+#: src/app/main/ui/onboarding/questions.cljs:128
+msgid "onboarding.questions.step1.question2"
+msgstr "Što Vas danas dovodi u Penpot?"
+
+#: src/app/main/ui/onboarding/questions.cljs:117
+msgid "onboarding.questions.step1.subtitle"
+msgstr ""
+"Recite nam nešto o sebi kako biste nam pomogli da Penpot radi za Vas. Vaši "
+"odgovori pomoći će nam da odredimo prioritet novih značajki i uputit će Vas "
+"u pravom smjeru za početak."
+
+#: src/app/main/ui/onboarding/questions.cljs:115
+msgid "onboarding.questions.step1.title"
+msgstr "Pomozite nam da Vas upoznamo"
+
+#: src/app/main/ui/onboarding/questions.cljs:196
+msgid "onboarding.questions.step2.title"
+msgstr "Koji od ovih alata najviše koristite?"
+
+#: src/app/main/ui/onboarding/questions.cljs:289
+msgid "onboarding.questions.step3.question1"
+msgstr "Kakvim se poslom bavite?"
+
+#: src/app/main/ui/onboarding/questions.cljs:303
+msgid "onboarding.questions.step3.question2"
+msgstr "Koja je Vaša uloga?"
+
+#: src/app/main/ui/onboarding/questions.cljs:317
+msgid "onboarding.questions.step3.question3"
+msgstr "Kolika je veličina Vaše tvrtke?"
+
+#: src/app/main/ui/onboarding/questions.cljs:287
+msgid "onboarding.questions.step3.title"
+msgstr "Recite nam nešto o svom poslu"
+
+#: src/app/main/ui/onboarding/questions.cljs:370
+msgid "onboarding.questions.step4.title"
+msgstr "Gdje biste željeli započeti?"
+
+#: src/app/main/ui/onboarding/questions.cljs:428
+msgid "onboarding.questions.step5.title"
+msgstr "Kako ste čuli za Penpot?"
+
+#: src/app/main/ui/onboarding/questions.cljs:268
+msgid "onboarding.questions.team-size.11-30"
+msgstr "11-30"
+
+#: src/app/main/ui/onboarding/questions.cljs:269
+msgid "onboarding.questions.team-size.2-10"
+msgstr "2-10"
+
+#: src/app/main/ui/onboarding/questions.cljs:267
+msgid "onboarding.questions.team-size.31-50"
+msgstr "31-50"
+
+#: src/app/main/ui/onboarding/questions.cljs:270
+msgid "onboarding.questions.team-size.freelancer"
+msgstr "Ja sam freelancer"
+
+#: src/app/main/ui/onboarding/questions.cljs:266
+msgid "onboarding.questions.team-size.more-than-50"
+msgstr "Više od 50"
+
+#: src/app/main/ui/onboarding/questions.cljs:271
+msgid "onboarding.questions.team-size.personal-project"
+msgstr "Radim na osobnom projektu"
+
+#: src/app/main/ui/onboarding/questions.cljs:80
+msgid "onboarding.questions.use.education"
+msgstr "Obrazovanje"
+
+#: src/app/main/ui/onboarding/questions.cljs:81
+msgid "onboarding.questions.use.personal"
+msgstr "Osobno"
+
+#: src/app/main/ui/onboarding/questions.cljs:79
+msgid "onboarding.questions.use.work"
+msgstr "Posao"
+
#: src/app/main/ui/onboarding/team_choice.cljs:238
msgid "onboarding.team-modal.create-team"
msgstr "Kreiraj tim"
@@ -2027,6 +3258,10 @@ msgstr "Neograničen broj članova"
msgid "onboarding.team-modal.create-team-feature-5"
msgstr "100% besplatno!"
+#: src/app/main/ui/onboarding/team_choice.cljs:32
+msgid "onboarding.team-modal.team-definition"
+msgstr "Što je tim?"
+
#: src/app/main/ui/onboarding/templates.cljs:78
msgid "onboarding.templates.subtitle"
msgstr "Evo nekoliko predložaka."
@@ -2043,10 +3278,22 @@ msgstr "Penpot"
msgid "profile.recovery.go-to-login"
msgstr "Idi na prijavu"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:223
+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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Izmješano"
+#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:270
+msgid "settings.remove-color"
+msgstr "Uklonite boju"
+
+#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:275
+msgid "settings.select-this-color"
+msgstr "Odaberite stavke koristeći ovaj stil"
+
# SECTIONS
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415
msgid "shortcut-section.basics"
@@ -2107,12 +3354,16 @@ msgstr "Paneli"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66
msgid "shortcut-subsection.path-editor"
-msgstr "Paths"
+msgstr "Putanje"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67
msgid "shortcut-subsection.shape"
msgstr "Oblici"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68
+msgid "shortcut-subsection.text-editor"
+msgstr "Tekstovi"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69
msgid "shortcut-subsection.tools"
msgstr "Alati"
@@ -2137,10 +3388,18 @@ msgstr "Dodaj čvor"
msgid "shortcuts.align-bottom"
msgstr "Poravnaj dno"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75
+msgid "shortcuts.align-center"
+msgstr "Poravnajte središte"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76
msgid "shortcuts.align-hcenter"
msgstr "Poravnaj sredinu vodoravno"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77
+msgid "shortcuts.align-justify"
+msgstr "Poravnajte obostrano"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78
msgid "shortcuts.align-left"
msgstr "Poravnaj lijevo"
@@ -2161,6 +3420,10 @@ msgstr "Poravnaj sredinu okomito"
msgid "shortcuts.artboard-selection"
msgstr "Kreiraj ploču iz odabira"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83
+msgid "shortcuts.bold"
+msgstr "Uključi/isključi podebljano"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84
msgid "shortcuts.bool-difference"
msgstr "Boolean razlika"
@@ -2201,6 +3464,10 @@ msgstr "Obriši povrat"
msgid "shortcuts.copy"
msgstr "Kopiraj"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94
+msgid "shortcuts.copy-link"
+msgstr "Kopiraj vezu u međuspremnik"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95
msgid "shortcuts.create-component"
msgstr "Kreiraj komponentu"
@@ -2213,7 +3480,7 @@ msgstr "Kreiraj novo"
msgid "shortcuts.cut"
msgstr "Izreži"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Zoom out"
@@ -2281,6 +3548,14 @@ msgstr "Okreni vodoravno"
msgid "shortcuts.flip-vertical"
msgstr "Okreni okomito"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115
+msgid "shortcuts.font-size-dec"
+msgstr "Smanji veličinu fonta"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116
+msgid "shortcuts.font-size-inc"
+msgstr "Povećaj veličinu fonta"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117
msgid "shortcuts.go-to-drafts"
msgstr "Idi na nacrte"
@@ -2305,7 +3580,7 @@ msgstr "Distribuiraj vodoravno"
msgid "shortcuts.hide-ui"
msgstr "Prikaži/sakrij UI"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Zoom in"
@@ -2313,10 +3588,34 @@ msgstr "Zoom in"
msgid "shortcuts.insert-image"
msgstr "Umetni sliku"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125
+msgid "shortcuts.italic"
+msgstr "Prebaci kurziv"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126
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
msgid "shortcuts.make-corner"
msgstr "Izradi rub"
@@ -2433,6 +3732,10 @@ msgstr "Idi na odjeljak s komentarima"
msgid "shortcuts.open-dashboard"
msgstr "Idi na nadzornu ploču"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160
+msgid "shortcuts.open-inspect"
+msgstr "Idite na odjeljak pregleda preglednika"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161
msgid "shortcuts.open-interactions"
msgstr "Idi na odjeljak interakcija"
@@ -2461,10 +3764,18 @@ msgstr "Prethodna ploča"
msgid "shortcuts.redo"
msgstr "Ponovi"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167
+msgid "shortcuts.rename"
+msgstr "Preimenujte"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168
msgid "shortcuts.reset-zoom"
msgstr "Resetiraj zoom"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169
+msgid "shortcuts.scale"
+msgstr "Skalirajte"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170
msgid "shortcuts.search-placeholder"
msgstr "Pretraži prečace"
@@ -2473,6 +3784,18 @@ msgstr "Pretraži prečace"
msgid "shortcuts.select-all"
msgstr "Označi sve"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172
+msgid "shortcuts.select-next"
+msgstr "Odaberite sljedeći sloj"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173
+msgid "shortcuts.select-parent-layer"
+msgstr "Odaberite nadređeni sloj"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174
+msgid "shortcuts.select-prev"
+msgstr "Odaberite prethodni sloj"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175
msgid "shortcuts.separate-nodes"
msgstr "Posebni čvorovi"
@@ -2505,6 +3828,22 @@ msgstr "Počni mjerenje"
msgid "shortcuts.stop-measure"
msgstr "Zaustavi mjerenje"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183
+msgid "shortcuts.text-align-center"
+msgstr "Poravnajte središte"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184
+msgid "shortcuts.text-align-justify"
+msgstr "Poravnajte obostrano"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185
+msgid "shortcuts.text-align-left"
+msgstr "Poravnajte lijevo"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186
+msgid "shortcuts.text-align-right"
+msgstr "Poravnajte desno"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187
msgid "shortcuts.thumbnail-set"
msgstr "Postavi sličice"
@@ -2533,6 +3872,10 @@ msgstr "Promijena fokus moda"
msgid "shortcuts.toggle-fullscreen"
msgstr "Promijeni cijeli zaslon"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193
+msgid "shortcuts.toggle-guides"
+msgstr "Prikaži / Sakrij vodiče"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194
msgid "shortcuts.toggle-history"
msgstr "Promijena povijesti"
@@ -2541,6 +3884,14 @@ msgstr "Promijena povijesti"
msgid "shortcuts.toggle-layers"
msgstr "Promijena layera"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196
+msgid "shortcuts.toggle-layout-flex"
+msgstr "Dodavanje/uklanjanje flex rasporeda"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197
+msgid "shortcuts.toggle-layout-grid"
+msgstr "Dodaj/ukloni grid raspored"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198
msgid "shortcuts.toggle-lock"
msgstr "Zaključaj odabrano"
@@ -2549,10 +3900,26 @@ msgstr "Zaključaj odabrano"
msgid "shortcuts.toggle-lock-size"
msgstr "Zaključaj proporcije"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200
+msgid "shortcuts.toggle-rulers"
+msgstr "Prikaži / Sakrij ravnala"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201
+msgid "shortcuts.toggle-snap-guides"
+msgstr "Pričvrstite na vodilice"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202
+msgid "shortcuts.toggle-snap-ruler-guide"
+msgstr "Pričvrstite na vodilice ravnala"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203
msgid "shortcuts.toggle-textpalette"
msgstr "Promijeni paletu teksta"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204
+msgid "shortcuts.toggle-theme"
+msgstr "Promjena teme"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205
msgid "shortcuts.toggle-visibility"
msgstr "Promijeni vidljivost"
@@ -2561,9 +3928,13 @@ msgstr "Promijeni vidljivost"
msgid "shortcuts.toggle-zoom-style"
msgstr "Promijeni stil zooma"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207
+msgid "shortcuts.underline"
+msgstr "Uključi podcrtavanje"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208
msgid "shortcuts.undo"
-msgstr "Undo"
+msgstr "Poništi"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209
msgid "shortcuts.ungroup"
@@ -2577,6 +3948,14 @@ msgstr "Makni masku"
msgid "shortcuts.v-distribute"
msgstr "Distribuiraj okomito"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212
+msgid "shortcuts.zoom-lense-decrease"
+msgstr "Smanjenje zuma objektiva"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213
+msgid "shortcuts.zoom-lense-increase"
+msgstr "Povećanje zuma objektiva"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214
msgid "shortcuts.zoom-selected"
msgstr "Zoomiraj na selektirano"
@@ -2585,15 +3964,15 @@ msgstr "Zoomiraj na selektirano"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Dobavljači fontova - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Fontovi - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Projekti - %s - Penpot"
@@ -2601,7 +3980,7 @@ msgstr "Projekti - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Traži - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Zajedničke biblioteke - %s - Penpot"
@@ -2609,10 +3988,18 @@ msgstr "Zajedničke biblioteke - %s - Penpot"
msgid "title.default"
msgstr "Penpot - Sloboda dizajna za timove"
+#: src/app/main/ui/settings/access_tokens.cljs:280
+msgid "title.settings.access-tokens"
+msgstr "Profil - Pristupni tokeni"
+
#: src/app/main/ui/settings/feedback.cljs:107
msgid "title.settings.feedback"
msgstr "Pošalji povratnu informaciju - Penpot"
+#: src/app/main/ui/settings/notifications.cljs:45
+msgid "title.settings.notifications"
+msgstr "Obavijesti - Penpot"
+
#: src/app/main/ui/settings/options.cljs:76
msgid "title.settings.options"
msgstr "Postavke - Penpot"
@@ -2637,11 +4024,15 @@ msgstr "Članovi - %s - Penpot"
msgid "title.team-settings"
msgstr "Postavke - %s - Penpot"
+#: src/app/main/ui/dashboard/team.cljs:1043
+msgid "title.team-webhooks"
+msgstr "Webhookovi - %s - Penpot"
+
#: src/app/main/ui/viewer.cljs:423
msgid "title.viewer"
msgstr "%s - Način prikaza - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -2677,6 +4068,10 @@ msgstr "Ne prikazuj interakcije"
msgid "viewer.header.fullscreen"
msgstr "Cijeli zaslon"
+#: src/app/main/ui/viewer/header.cljs:352
+msgid "viewer.header.inspect-section"
+msgstr "Pregledaj (%s)"
+
#: src/app/main/ui/viewer/interactions.cljs:288
msgid "viewer.header.interactions"
msgstr "Interakcije"
@@ -2701,6 +4096,10 @@ msgstr "Prikaži interakcije na klik"
msgid "viewer.header.sitemap"
msgstr "Sitemap"
+#: src/app/main/ui/dashboard/team.cljs:997
+msgid "webhooks.last-delivery.success"
+msgstr "Zadnja isporuka bila je uspješna."
+
#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:58
msgid "workspace.align.hcenter"
msgstr "Poravnaj vodoravno u sredinu (%s)"
@@ -2733,23 +4132,35 @@ msgstr "Distribuiraj okomiti razmak (%s)"
msgid "workspace.align.vtop"
msgstr "Poravnaj gore (%s)"
+#: src/app/main/ui/workspace/sidebar/assets.cljs:171
+msgid "workspace.assets.add-library"
+msgstr "Dodaj biblioteku"
+
#: src/app/main/ui/workspace/sidebar/assets.cljs
#, unused
msgid "workspace.assets.assets"
msgstr "Stavke"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Sve stavke"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Boje"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:494
+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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Komponente"
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:520
+msgid "workspace.assets.components.add-component"
+msgstr "Dodajte komponentu"
+
#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:127
msgid "workspace.assets.create-group"
msgstr "Kreiraj grupu"
@@ -2758,23 +4169,35 @@ msgstr "Kreiraj grupu"
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:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Izbriši"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Dupliciraj"
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
+msgid "workspace.assets.duplicate-main"
+msgstr "Dupliciraj glavni"
+
#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:246, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438
msgid "workspace.assets.edit"
msgstr "Uredi"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
+msgid "workspace.assets.filter"
+msgstr "Filter"
+
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Grafika"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:515
+msgid "workspace.assets.grid-view"
+msgstr "Grid prikaz"
+
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Grupa"
@@ -2782,19 +4205,23 @@ msgstr "Grupa"
msgid "workspace.assets.group-name"
msgstr "Ime grupe"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Biblioteke"
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:511
+msgid "workspace.assets.list-view"
+msgstr "Popisni prikaz"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "lokalna biblioteka"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Nisu pronađene stavke"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
+msgid "workspace.assets.open-library"
+msgstr "Otvori datoteku biblioteke"
+
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Preimenuj"
@@ -2802,7 +4229,7 @@ msgstr "Preimenuj"
msgid "workspace.assets.rename-group"
msgstr "Preimenuj grupu"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Pretraži stavke"
@@ -2814,40 +4241,64 @@ msgstr[0] "%s odabrana stavka"
msgstr[1] "%s odabranih stavki"
msgstr[2] "%s odabranih stavki"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: src/app/main/ui/workspace/sidebar/assets.cljs
+#, unused
+msgid "workspace.assets.shared-library"
+msgstr "Zajednička biblioteka"
+
+#: 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:201
+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:160
msgid "workspace.assets.typography"
msgstr "Tipografija"
+#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404
+msgid "workspace.assets.typography.add-typography"
+msgstr "Dodajte tipografiju"
+
#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs
#, unused
msgid "workspace.assets.typography.font-id"
msgstr "Font"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Veličina"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Varijanta"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Idi na datoteku biblioteke stilova za uređivanje"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Razmak između slova"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Visina linije"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#, unused
+msgid "workspace.assets.typography.text-styles"
+msgstr "Stilovi teksta"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Transformiraj tekst"
@@ -2855,15 +4306,67 @@ msgstr "Transformiraj tekst"
msgid "workspace.assets.ungroup"
msgstr "Razgrupiraj"
+#: src/app/main/ui/workspace/context_menu.cljs:764
+msgid "workspace.context-menu.grid-cells.area"
+msgstr "Stvorite područje"
+
+#: src/app/main/ui/workspace/context_menu.cljs:767
+msgid "workspace.context-menu.grid-cells.create-board"
+msgstr "Napravi ploču"
+
+#: src/app/main/ui/workspace/context_menu.cljs:759
+msgid "workspace.context-menu.grid-cells.merge"
+msgstr "Spoji ćelije"
+
+#: src/app/main/ui/workspace/context_menu.cljs:722
+msgid "workspace.context-menu.grid-track.column.add-after"
+msgstr "Dodajte 1 stupac desno"
+
+#: src/app/main/ui/workspace/context_menu.cljs:721
+msgid "workspace.context-menu.grid-track.column.add-before"
+msgstr "Dodajte 1 stupac lijevo"
+
+#: src/app/main/ui/workspace/context_menu.cljs:723
+msgid "workspace.context-menu.grid-track.column.delete"
+msgstr "Izbriši stupac"
+
+#: src/app/main/ui/workspace/context_menu.cljs:724
+msgid "workspace.context-menu.grid-track.column.delete-shapes"
+msgstr "Izbriši stupac i oblike"
+
+#: src/app/main/ui/workspace/context_menu.cljs:720
+msgid "workspace.context-menu.grid-track.column.duplicate"
+msgstr "Dupliciraj stupac"
+
+#: src/app/main/ui/workspace/context_menu.cljs:729
+msgid "workspace.context-menu.grid-track.row.add-after"
+msgstr "Dodajte 1 red ispod"
+
+#: src/app/main/ui/workspace/context_menu.cljs:728
+msgid "workspace.context-menu.grid-track.row.add-before"
+msgstr "Dodajte 1 red iznad"
+
+#: src/app/main/ui/workspace/context_menu.cljs:730
+msgid "workspace.context-menu.grid-track.row.delete"
+msgstr "Izbriši red"
+
+#: src/app/main/ui/workspace/context_menu.cljs:731
+msgid "workspace.context-menu.grid-track.row.delete-shapes"
+msgstr "Izbrišite red i oblike"
+
+#: src/app/main/ui/workspace/context_menu.cljs:727
+msgid "workspace.context-menu.grid-track.row.duplicate"
+msgstr "Dupliciraj redak"
+
#: src/app/main/ui/workspace/sidebar/layers.cljs:528
msgid "workspace.focus.focus-mode"
msgstr "Fokus mode"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Fokus isključen"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Fokus uključen"
@@ -2883,6 +4386,10 @@ msgstr "Radijalni gradijent"
msgid "workspace.header.menu.disable-dynamic-alignment"
msgstr "Onemogući dinamičko poravnanje"
+#: src/app/main/ui/workspace/main_menu.cljs:197
+msgid "workspace.header.menu.disable-scale-content"
+msgstr "Onemogući proporcionalno mjerilo"
+
#: src/app/main/ui/workspace/header.cljs
#, unused
msgid "workspace.header.menu.disable-scale-text"
@@ -2896,10 +4403,18 @@ msgstr "Onemogući \"snap to guides\""
msgid "workspace.header.menu.disable-snap-pixel-grid"
msgstr "Onemogući \"snap to pixel\""
+#: src/app/main/ui/workspace/main_menu.cljs:212
+msgid "workspace.header.menu.disable-snap-ruler-guides"
+msgstr "Onemogući spajanje na vodilice ravnala"
+
#: src/app/main/ui/workspace/main_menu.cljs:244
msgid "workspace.header.menu.enable-dynamic-alignment"
msgstr "Omogući dinamičko poravnanje"
+#: src/app/main/ui/workspace/main_menu.cljs:198
+msgid "workspace.header.menu.enable-scale-content"
+msgstr "Omogući proporcionalno mjerilo"
+
#: src/app/main/ui/workspace/header.cljs
#, unused
msgid "workspace.header.menu.enable-scale-text"
@@ -2907,16 +4422,24 @@ msgstr "Omogući skaliranje teksta"
#: src/app/main/ui/workspace/main_menu.cljs:229
msgid "workspace.header.menu.enable-snap-guides"
-msgstr "Snap to guides"
+msgstr "Pričvrstite na vodilice"
#: src/app/main/ui/workspace/main_menu.cljs:259
msgid "workspace.header.menu.enable-snap-pixel-grid"
msgstr "Omogući \"snap to pixel\""
+#: src/app/main/ui/workspace/main_menu.cljs:213
+msgid "workspace.header.menu.enable-snap-ruler-guides"
+msgstr "Pričvrstite na vodilice ravnala"
+
#: src/app/main/ui/workspace/main_menu.cljs:388
msgid "workspace.header.menu.hide-artboard-names"
msgstr "Sakrij nazive ploča"
+#: src/app/main/ui/workspace/main_menu.cljs:342
+msgid "workspace.header.menu.hide-guides"
+msgstr "Sakrij vodiče"
+
#: src/app/main/ui/workspace/main_menu.cljs:359
msgid "workspace.header.menu.hide-palette"
msgstr "Sakrij paletu boja"
@@ -2945,6 +4468,10 @@ msgstr "Datoteka"
msgid "workspace.header.menu.option.help-info"
msgstr "Pomoć i informacije"
+#: src/app/main/ui/workspace/main_menu.cljs:910
+msgid "workspace.header.menu.option.power-up"
+msgstr "Ojačajte svoj plan"
+
#: src/app/main/ui/workspace/main_menu.cljs:877
msgid "workspace.header.menu.option.preferences"
msgstr "Preferencije"
@@ -2953,6 +4480,10 @@ msgstr "Preferencije"
msgid "workspace.header.menu.option.view"
msgstr "Pregled"
+#: src/app/main/ui/workspace/main_menu.cljs:471
+msgid "workspace.header.menu.redo"
+msgstr "Ponovi"
+
#: src/app/main/ui/workspace/main_menu.cljs:442
msgid "workspace.header.menu.select-all"
msgstr "Odaberi sve"
@@ -2961,6 +4492,10 @@ msgstr "Odaberi sve"
msgid "workspace.header.menu.show-artboard-names"
msgstr "Prikaži nazive ploča"
+#: src/app/main/ui/workspace/main_menu.cljs:343
+msgid "workspace.header.menu.show-guides"
+msgstr "Prikaži vodiče"
+
#: src/app/main/ui/workspace/main_menu.cljs:360
msgid "workspace.header.menu.show-palette"
msgstr "Prikaži paletu boja"
@@ -2977,32 +4512,51 @@ msgstr "Prikaži \"rules\""
msgid "workspace.header.menu.show-textpalette"
msgstr "Prikaži paletu fontova"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/workspace/main_menu.cljs:284
+msgid "workspace.header.menu.toggle-dark-theme"
+msgstr "Prebacite se na tamnu temu"
+
+#: src/app/main/ui/workspace/main_menu.cljs:283
+msgid "workspace.header.menu.toggle-light-theme"
+msgstr "Prebaci na svijetlu temu"
+
+#: src/app/main/ui/workspace/main_menu.cljs:457
+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
msgid "workspace.header.reset-zoom"
msgstr "Resetiraj"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Greška kod spremanja"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Spremljeno"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Spremanje"
+#: src/app/main/ui/workspace/right_header.cljs:221
+msgid "workspace.header.share"
+msgstr "Podijeli"
+
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Nespremljene izmijene"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
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
+msgid "workspace.header.zoom"
+msgstr "Zum"
+
#: src/app/main/ui/viewer/header.cljs:109
msgid "workspace.header.zoom-fill"
msgstr "Ispuna - Skaliraj za popunjavanje"
@@ -3011,7 +4565,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:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Zumiraj da stane sve"
@@ -3019,19 +4573,55 @@ msgstr "Zumiraj da stane sve"
msgid "workspace.header.zoom-full-screen"
msgstr "Cijeli ekran"
-#: src/app/main/ui/workspace/right_header.cljs:136
+#: src/app/main/ui/workspace/right_header.cljs:104
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:616
+msgid "workspace.layout_grid.editor.options.edit-grid"
+msgstr "Uredi grid"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
+msgid "workspace.layout_grid.editor.options.exit"
+msgstr "Izlaz"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
+msgid "workspace.layout_grid.editor.padding.expand"
+msgstr "Prikaži 4-strane opcije podstava"
+
+#: src/app/main/ui/workspace/viewport/grid_layout_editor.cljs:59
+msgid "workspace.layout_grid.editor.title"
+msgstr "Mreža za uređivanje"
+
+#: src/app/main/ui/workspace/viewport/grid_layout_editor.cljs:65
+msgid "workspace.layout_grid.editor.top-bar.done"
+msgstr "Gotovo"
+
+#: src/app/main/ui/workspace/viewport/grid_layout_editor.cljs:62
+msgid "workspace.layout_grid.editor.top-bar.locate"
+msgstr "Pronađi"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
+msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
+msgstr "Pronađite grid raspored"
+
#: src/app/main/ui/workspace/libraries.cljs
#, unused
msgid "workspace.libraries.add"
msgstr "Dodaj"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: 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:141
+msgid "workspace.libraries.colors.empty-palette"
+msgstr "U vašoj biblioteci još nema stilova boja"
+
+#: src/app/main/ui/workspace/text_palette.cljs:161
+msgid "workspace.libraries.colors.empty-typography-palette"
+msgstr "U vašoj biblioteci još nema stilova tipografije"
+
#: 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 datoteka"
@@ -3050,31 +4640,43 @@ msgstr "Nedavno korištene boje"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "RGB komplementarno"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Spremi u stil boja"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:371
+msgid "workspace.libraries.empty.add-some"
+msgstr "Ili dodajte neke od ovih za isprobavanje:"
+
+#: src/app/main/ui/workspace/libraries.cljs:365
+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
+msgid "workspace.libraries.empty.some-templates"
+msgstr "neki predlošci ovdje"
+
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Biblioteka datoteka"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "BIBLIOTEKE U OVOJ DATOTECI"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "BIBLIOTEKE"
@@ -3083,43 +4685,64 @@ msgstr "BIBLIOTEKE"
msgid "workspace.libraries.library"
msgstr "BIBLIOTEKA"
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:467
+msgid "workspace.libraries.library-updates"
+msgstr "AŽURIRANJE KNJIŽNICE"
+
+#: src/app/main/ui/workspace/libraries.cljs:360
+msgid "workspace.libraries.loading"
+msgstr "Učitavanje…"
+
+#: src/app/main/ui/workspace/libraries.cljs:387
+#, unused
+msgid "workspace.libraries.more-templates"
+msgstr "Možete tražiti "
+
+#: src/app/main/ui/workspace/libraries.cljs:465
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:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Nisu pronađeni rezultati za “%s”"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Nema dostupnih zajedničkih biblioteka"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Pretraži zajedničke biblioteke"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "ZAJEDNIČKE BIBLIOTEKE"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:352
+msgid "workspace.libraries.shared-library-btn"
+msgstr "Povežite biblioteku"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Višestruke tipografije"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Prekini vezu svih tipografija"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:503
+#: src/app/main/ui/workspace/libraries.cljs:323
+msgid "workspace.libraries.unlink-library-btn"
+msgstr "Odspojite biblioteku"
+
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Ažuriranje"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:563
+msgid "workspace.libraries.update.see-all-changes"
+msgstr "vidjeti sve promjene"
+
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "AŽURIRANJA"
@@ -3127,6 +4750,14 @@ msgstr "AŽURIRANJA"
msgid "workspace.options.add-interaction"
msgstr "Klikni gumb + za dodavanje interakcija."
+#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91
+msgid "workspace.options.blur-options.add-blur"
+msgstr "Dodajte zamućenje"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:112
+msgid "workspace.options.blur-options.remove-blur"
+msgstr "Ukloni zamućenje"
+
#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:87, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:105
msgid "workspace.options.blur-options.title"
msgstr "Zamuti"
@@ -3139,18 +4770,50 @@ msgstr "Grupiraj zamućenje"
msgid "workspace.options.blur-options.title.multiple"
msgstr "Odabir zamućenja"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:108
+msgid "workspace.options.blur-options.toggle-blur"
+msgstr "Uključi/isključi zamućenje"
+
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Pozadina canvasa"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Isjeci sadržaj"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Komponenta"
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
+msgid "workspace.options.component.annotation"
+msgstr "Bilješka"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
+msgid "workspace.options.component.copy"
+msgstr "Kopirati"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
+msgid "workspace.options.component.create-annotation"
+msgstr "Napravite bilješku"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
+msgid "workspace.options.component.edit-annotation"
+msgstr "Uredite bilješku"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
+msgid "workspace.options.component.main"
+msgstr "Glavni"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
+msgid "workspace.options.component.swap"
+msgstr "Zamijenite komponentu"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
+msgid "workspace.options.component.swap.empty"
+msgstr "U ovoj biblioteci još nema sredstava"
+
#: src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:163
msgid "workspace.options.constraints"
msgstr "Ograničenja"
@@ -3195,7 +4858,7 @@ msgstr "Vrh i dno"
msgid "workspace.options.design"
msgstr "Dizajn"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Izvoz"
@@ -3204,14 +4867,22 @@ msgstr "Izvoz"
msgid "workspace.options.export-multiple"
msgstr "Izvezi selektirano"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188
+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
+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
msgid "workspace.options.export.suffix"
msgstr "Sufiks"
@@ -3219,7 +4890,7 @@ msgstr "Sufiks"
msgid "workspace.options.exporting-complete"
msgstr "Izvoz završen"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Izvoz…"
@@ -3235,10 +4906,26 @@ msgstr "Izvoz neočekivano spor"
msgid "workspace.options.fill"
msgstr "Ispuni"
+#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:151
+msgid "workspace.options.fill.add-fill"
+msgstr "Dodajte boju ispune"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:164
+msgid "workspace.options.fill.remove-fill"
+msgstr "Ukloni ispunu"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:341
+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
msgid "workspace.options.flows.add-flow-start"
msgstr "Dodaj početak flowa"
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178
+msgid "workspace.options.flows.flow"
+msgstr "Tok"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
#, unused
msgid "workspace.options.flows.flow-start"
@@ -3248,6 +4935,10 @@ msgstr "Početak toka"
msgid "workspace.options.flows.flow-starts"
msgstr "Flow započinje"
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154
+msgid "workspace.options.flows.remove-flow"
+msgstr "Uklonite tok"
+
#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31
msgid "workspace.options.grid.auto"
msgstr "Auto"
@@ -3272,7 +4963,7 @@ msgstr "Kolumne"
#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263
msgid "workspace.options.grid.params.gutter"
-msgstr "Gutter"
+msgstr "Oluk"
#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250
msgid "workspace.options.grid.params.height"
@@ -3339,7 +5030,7 @@ msgstr "Redovi"
#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158
msgid "workspace.options.grid.square"
-msgstr "Pravokutnik"
+msgstr "Kvadrat"
#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:50
msgid "workspace.options.group-fill"
@@ -3349,10 +5040,30 @@ msgstr "Popunjavanje grupe"
msgid "workspace.options.group-stroke"
msgstr "Grupni potez"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323
+msgid "workspace.options.guides.add-guide"
+msgstr "Dodajte vodilicu"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187
+msgid "workspace.options.guides.remove-guide"
+msgstr "Uklonite vodilicu"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320
+msgid "workspace.options.guides.title"
+msgstr "Vodilice"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183
+msgid "workspace.options.guides.toggle-guide"
+msgstr "Uključi/isključi vodilicu"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Visina"
+#: src/app/main/ui/workspace/sidebar/options.cljs:193, src/app/main/ui/workspace/sidebar/options.cljs:196
+msgid "workspace.options.inspect"
+msgstr "Pregledati"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474
msgid "workspace.options.interaction-action"
msgstr "Akcija"
@@ -3381,6 +5092,10 @@ msgstr "Gurni"
msgid "workspace.options.interaction-animation-slide"
msgstr "Slide"
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397
+msgid "workspace.options.interaction-auto"
+msgstr "auto"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610
msgid "workspace.options.interaction-background"
msgstr "Dodajte pozadinsko preklapanje"
@@ -3531,6 +5246,10 @@ msgstr "Sačuvaj položaj scrolanja"
msgid "workspace.options.interaction-prev-screen"
msgstr "Prethodni ekran"
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521
+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
msgid "workspace.options.interaction-self"
msgstr "sebe"
@@ -3563,6 +5282,15 @@ msgstr "Dok pritisneš"
msgid "workspace.options.interactions"
msgstr "Interakcije"
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735
+msgid "workspace.options.interactions.add-interaction"
+msgstr "Dodajte interakciju"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
+#, unused
+msgid "workspace.options.interactions.remove-interaction"
+msgstr "Ukloni interakciju"
+
#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152
msgid "workspace.options.layer-options.blend-mode.color"
msgstr "Boja"
@@ -3630,7 +5358,7 @@ msgstr "Nježno svjetlo"
#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs
#, unused
msgid "workspace.options.layer-options.title"
-msgstr "Layer"
+msgstr "Sloj"
#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs
#, unused
@@ -3642,24 +5370,28 @@ msgstr "Grupiraj layere"
msgid "workspace.options.layer-options.title.multiple"
msgstr "Označeni layeri"
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:197
+msgid "workspace.options.layer-options.toggle-layer"
+msgstr "Uključi/isključi vidljivost sloja"
+
#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs
#, unused
msgid "workspace.options.layout-item.advanced-ops"
msgstr "Napredne opcije"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Max.visina"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Max.širina"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Min.visina"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Min.širina"
@@ -3688,6 +5420,26 @@ msgstr "Minimalna širina"
msgid "workspace.options.layout.bottom"
msgstr "Dno"
+#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
+#, unused
+msgid "workspace.options.layout.direction.column"
+msgstr "Stupac"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
+#, unused
+msgid "workspace.options.layout.direction.column-reverse"
+msgstr "Obrnuti stupac"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
+#, unused
+msgid "workspace.options.layout.direction.row"
+msgstr "Red"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
+#, unused
+msgid "workspace.options.layout.direction.row-reverse"
+msgstr "Obrnuti red"
+
#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
#, unused
msgid "workspace.options.layout.gap"
@@ -3753,11 +5505,11 @@ msgstr "prostor između"
msgid "workspace.options.layout.top"
msgstr "Vrh"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Više boja"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Više boja iz biblioteke"
@@ -3794,7 +5546,15 @@ msgstr "Gore lijevo"
msgid "workspace.options.radius-top-right"
msgstr "Gore desno"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135
+msgid "workspace.options.radius.hide-all-corners"
+msgstr "Sažmi neovisni radijus"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136
+msgid "workspace.options.radius.show-single-corners"
+msgstr "Prikaži neovisni radijus"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Nedavni"
@@ -3802,11 +5562,11 @@ msgstr "Nedavni"
msgid "workspace.options.retry"
msgstr "Pokušaj ponovo"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Rotacija"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Pretraži font"
@@ -3814,7 +5574,7 @@ msgstr "Pretraži font"
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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Odabrane boje"
@@ -3826,51 +5586,63 @@ msgstr "Ispuna odabira"
msgid "workspace.options.selection-stroke"
msgstr "Potez selektirano"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:292
+msgid "workspace.options.shadow-options.add-shadow"
+msgstr "Dodajte sjenu"
+
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Zamućeno"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Boja sjene"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Spusti sjenu"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Unutarnja sjena"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
+msgid "workspace.options.shadow-options.remove-shadow"
+msgstr "Ukloni sjenu"
+
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Proširi"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Sjena"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Grupiraj sjenu"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Odabir sjena"
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:144
+msgid "workspace.options.shadow-options.toggle-shadow"
+msgstr "Uključi/isključi sjenu"
+
#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:193
msgid "workspace.options.show-fill-on-export"
msgstr "Prikaži u izvozu"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Prikaži u načinu pregleda"
@@ -3878,7 +5650,7 @@ msgstr "Prikaži u načinu pregleda"
msgid "workspace.options.size"
msgstr "Veličina"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Unaprijed postavljena veličina"
@@ -3891,46 +5663,70 @@ 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
+msgid "workspace.options.stroke-cap.circle-marker-short"
+msgstr "Krug"
+
#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs
#, unused
msgid "workspace.options.stroke-cap.diamond-marker"
msgstr "Dijamantni marker"
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132
+msgid "workspace.options.stroke-cap.diamond-marker-short"
+msgstr "Dijamant"
+
#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs
#, unused
msgid "workspace.options.stroke-cap.line-arrow"
msgstr "Strelica linije"
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128
+msgid "workspace.options.stroke-cap.line-arrow-short"
+msgstr "Strelica"
+
#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126
msgid "workspace.options.stroke-cap.none"
msgstr "Nijedan"
#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134
msgid "workspace.options.stroke-cap.round"
-msgstr "Krug"
+msgstr "Okruglo"
#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135
msgid "workspace.options.stroke-cap.square"
-msgstr "Pravokutnik"
+msgstr "Kvadrat"
#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs
#, unused
msgid "workspace.options.stroke-cap.square-marker"
-msgstr "Pravokutni marker"
+msgstr "Kvadratni marker"
+
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130
+msgid "workspace.options.stroke-cap.square-marker-short"
+msgstr "Pravokutnik"
#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs
#, unused
msgid "workspace.options.stroke-cap.triangle-arrow"
msgstr "Trokutna strelica"
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129
+msgid "workspace.options.stroke-cap.triangle-arrow-short"
+msgstr "Trokut"
+
#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:192
msgid "workspace.options.stroke-color"
msgstr "Boja poteza"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Širina poteza"
+#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:171
+msgid "workspace.options.stroke.add-stroke"
+msgstr "Dodajte boju poteza"
+
#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89
msgid "workspace.options.stroke.center"
msgstr "Sredina"
@@ -3955,6 +5751,10 @@ msgstr "Miješano"
msgid "workspace.options.stroke.outer"
msgstr "Vani"
+#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:184
+msgid "workspace.options.stroke.remove-stroke"
+msgstr "Uklonite potez"
+
#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105
msgid "workspace.options.stroke.solid"
msgstr "Čvrsto"
@@ -3991,11 +5791,11 @@ msgstr "Automatska širina"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Popravljeno"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Razmak između slova"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Visina linije"
@@ -4059,15 +5859,15 @@ msgstr "Velika slova"
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:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Širina"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
-msgstr "X"
+msgstr "X os"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Y"
@@ -4111,83 +5911,260 @@ msgstr "Odvoji čvorove(%s)"
msgid "workspace.path.actions.snap-nodes"
msgstr "Priključi čvorove (%s)"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/plugins.cljs:83
+msgid "workspace.plugins.button-open"
+msgstr "Otvoriti"
+
+#: src/app/main/ui/workspace/plugins.cljs:202
+#, markdown
+msgid "workspace.plugins.discover"
+msgstr "Otkrijte [više dodataka](%s)"
+
+#: src/app/main/ui/workspace/plugins.cljs:209
+msgid "workspace.plugins.empty-plugins"
+msgstr "Još nema instaliranih dodataka"
+
+#: src/app/main/ui/workspace/plugins.cljs:196
+msgid "workspace.plugins.error.manifest"
+msgstr "Manifest dodatka nije točan."
+
+#: src/app/main/data/plugins.cljs:86, src/app/main/ui/workspace/main_menu.cljs:743, src/app/main/ui/workspace/plugins.cljs:82
+msgid "workspace.plugins.error.need-editor"
+msgstr "Morate biti urednik da biste koristili ovaj dodatak"
+
+#: src/app/main/ui/workspace/plugins.cljs:192
+msgid "workspace.plugins.error.url"
+msgstr "Dodatak ne postoji ili URL nije točan."
+
+#: src/app/main/ui/workspace/plugins.cljs:188
+msgid "workspace.plugins.install"
+msgstr "Instalirati"
+
+#: src/app/main/ui/workspace/plugins.cljs:218
+msgid "workspace.plugins.installed-plugins"
+msgstr "Instalirani dodaci"
+
+#: src/app/main/ui/workspace/main_menu.cljs:698
+msgid "workspace.plugins.menu.plugins-manager"
+msgstr "Upravitelj dodataka"
+
+#: src/app/main/ui/workspace/main_menu.cljs:889
+msgid "workspace.plugins.menu.title"
+msgstr "Dodaci"
+
+#: src/app/main/ui/workspace/plugins.cljs:372
+msgid "workspace.plugins.permissions-update.title"
+msgstr "AŽURIRAJTE OVAJ DODATAK"
+
+#: src/app/main/ui/workspace/plugins.cljs:376
+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:283
+msgid "workspace.plugins.permissions.allow-download"
+msgstr "Pokrenite preuzimanje datoteka."
+
+#: src/app/main/ui/workspace/plugins.cljs:276
+msgid "workspace.plugins.permissions.comment-read"
+msgstr "Pročitajte svoje komentare i odgovore."
+
+#: src/app/main/ui/workspace/plugins.cljs:270
+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:243
+msgid "workspace.plugins.permissions.content-read"
+msgstr "Pročitajte sadržaj datoteka kojima korisnici imaju pristup."
+
+#: src/app/main/ui/workspace/plugins.cljs:237
+msgid "workspace.plugins.permissions.content-write"
+msgstr "Čitajte i mijenjajte sadržaj datoteka kojima korisnici imaju pristup."
+
+#: src/app/main/ui/workspace/plugins.cljs:323
+msgid "workspace.plugins.permissions.disclaimer"
+msgstr ""
+"Imajte na umu da je ovaj dodatak izradila vanjska strana, stoga provjerite "
+"vjerujete li mu prije nego što odobrite pristup. Privatnost i sigurnost "
+"vaših podataka važni su nam. Ako imate bilo kakvih nedoumica, obratite se "
+"podršci."
+
+#: src/app/main/ui/workspace/plugins.cljs:263
+msgid "workspace.plugins.permissions.library-read"
+msgstr "Čitajte svoje biblioteke i stavke."
+
+#: src/app/main/ui/workspace/plugins.cljs:257
+msgid "workspace.plugins.permissions.library-write"
+msgstr "Čitajte i mijenjajte svoje biblioteke i stavke."
+
+#: src/app/main/ui/workspace/plugins.cljs:316
+msgid "workspace.plugins.permissions.title"
+msgstr "'%s' DODATAK ŽELI PRISTUP:"
+
+#: src/app/main/ui/workspace/plugins.cljs:250
+msgid "workspace.plugins.permissions.user-read"
+msgstr "Pročitajte informacije o profilu trenutnog korisnika."
+
+#: src/app/main/ui/workspace/plugins.cljs:214
+msgid "workspace.plugins.plugin-list-link"
+msgstr "Popis dodataka"
+
+#: src/app/main/ui/workspace/plugins.cljs:86
+msgid "workspace.plugins.remove-plugin"
+msgstr "Ukloni dodatak"
+
+#: src/app/main/ui/workspace/plugins.cljs:183
+msgid "workspace.plugins.search-placeholder"
+msgstr "Napišite URL dodatka"
+
+#, unused
+msgid "workspace.plugins.success"
+msgstr "Dodatak je ispravno učitan."
+
+#: src/app/main/ui/workspace/plugins.cljs:177
+msgid "workspace.plugins.title"
+msgstr "Dodaci"
+
+#: src/app/main/ui/workspace/plugins.cljs:436
+msgid "workspace.plugins.try-out.cancel"
+msgstr "NE SADA"
+
+#: src/app/main/ui/workspace/plugins.cljs:429
+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:425
+msgid "workspace.plugins.try-out.title"
+msgstr "'%s' PLUGIN JE INSTALIRAN ZA VAŠEG KORISNIKA!"
+
+#: src/app/main/ui/workspace/plugins.cljs:442
+msgid "workspace.plugins.try-out.try"
+msgstr "PROBAJTE DODATAK"
+
+#: src/app/main/ui/workspace/context_menu.cljs:542
+msgid "workspace.shape.menu.add-flex"
+msgstr "Dodajte flex raspored"
+
+#: src/app/main/ui/workspace/context_menu.cljs:546
+msgid "workspace.shape.menu.add-grid"
+msgstr "Dodajte grid raspored"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1013, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039
+msgid "workspace.shape.menu.add-layout"
+msgstr "Dodajte raspored"
+
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "Pošalji natrag"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Pošalji u pozadinu"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Kopiraj"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:204
+msgid "workspace.shape.menu.copy-css"
+msgstr "Kopiraj kao CSS"
+
+#: src/app/main/ui/workspace/context_menu.cljs:206
+msgid "workspace.shape.menu.copy-css-nested"
+msgstr "Kopiraj kao CSS (ugniježđeni slojevi)"
+
+#: src/app/main/ui/workspace/context_menu.cljs:189
+msgid "workspace.shape.menu.copy-link"
+msgstr "Kopiraj vezu u međuspremnik"
+
+#: src/app/main/ui/workspace/context_menu.cljs:202
+msgid "workspace.shape.menu.copy-paste-as"
+msgstr "Kopiraj/zalijepi kao..."
+
+#: src/app/main/ui/workspace/context_menu.cljs:214
+msgid "workspace.shape.menu.copy-props"
+msgstr "Kopiraj svojstva"
+
+#: src/app/main/ui/workspace/context_menu.cljs:211
+msgid "workspace.shape.menu.copy-text"
+msgstr "Kopiraj kao tekst"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
+msgid "workspace.shape.menu.create-annotation"
+msgstr "Napravite bilješku"
+
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Odabir na ploču"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Kreiraj komponentu"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:572
+msgid "workspace.shape.menu.create-multiple-components"
+msgstr "Stvorite više komponenti"
+
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Izreži"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Izbriši"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Izbriši početak flowa"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Odvoji instancu"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Odvoji instance"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Razlika"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Dupliciraj"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Uredi"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Izuzmi"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Spljošti"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Okreni vodoravno"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Okreni okomito"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Početak flowa"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Postavi ispred"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Postavi naprijed"
@@ -4196,83 +6173,107 @@ msgstr "Postavi naprijed"
msgid "workspace.shape.menu.go-main"
msgstr "Idi na datoteku glavne komponente"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Grupiraj"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Sakrij"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Prikaži/sakrij korisničko sučelje"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Presjek"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Zaključaj"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Maskiraj"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Zalijepi"
-#: src/app/main/ui/workspace/context_menu.cljs:424
-msgid "workspace.shape.menu.path"
-msgstr "Path"
+#: src/app/main/ui/workspace/context_menu.cljs:218
+msgid "workspace.shape.menu.paste-props"
+msgstr "Svojstva lijepljenja"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/context_menu.cljs:426
+msgid "workspace.shape.menu.path"
+msgstr "Putanja"
+
+#: src/app/main/ui/workspace/context_menu.cljs:532
+msgid "workspace.shape.menu.remove-flex"
+msgstr "Uklonite flex raspored"
+
+#: src/app/main/ui/workspace/context_menu.cljs:535
+msgid "workspace.shape.menu.remove-grid"
+msgstr "Uklonite grid raspored"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1031
+msgid "workspace.shape.menu.remove-layout"
+msgstr "Uklonite raspored"
+
+#: src/app/main/ui/workspace/context_menu.cljs:313
+msgid "workspace.shape.menu.rename"
+msgstr "Preimenovati"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Poništi overrides"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Vrati glavnu komponentu"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Označi layer"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Prikaži"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
+msgid "workspace.shape.menu.show-in-assets"
+msgstr "Prikaži na ploči stavki"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Prikaži glavnu komponentu"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Ukloni sličicu"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Postavi kao sličicu"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Transformiraj u path"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Razgrupiraj"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Unija"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Otključaj"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Ukloni masku"
@@ -4281,15 +6282,23 @@ 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:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Ažuriraj glavnu komponentu"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/components/tab_container.cljs:52, src/app/main/ui/workspace/sidebar.cljs:51
+msgid "workspace.sidebar.collapse"
+msgstr "Sažmi bočnu traku"
+
+#: src/app/main/ui/workspace/sidebar/collapsable_button.cljs:25, src/app/main/ui/workspace/sidebar/collapsable_button.cljs:29
+msgid "workspace.sidebar.expand"
+msgstr "Proširi bočnu traku"
+
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Povijest"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Layeri"
@@ -4325,7 +6334,7 @@ msgstr "Oblici"
msgid "workspace.sidebar.layers.texts"
msgstr "Tekstovi"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Uvezeni SVG atributi"
@@ -4333,11 +6342,193 @@ msgstr "Uvezeni SVG atributi"
msgid "workspace.sidebar.sitemap"
msgstr "Stranice"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249
+msgid "workspace.sidebar.sitemap.add-page"
+msgstr "Dodaj stranicu"
+
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Sitemap"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:47
+#, unused
+msgid "workspace.token-set.not-active"
+msgstr "Skup tokena nije aktivan"
+
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:84
+msgid "workspace.token.active-themes"
+msgstr "%s aktivnih tema"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs
+#, unused
+msgid "workspace.token.add set"
+msgstr "Dodaj skup"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:136
+msgid "workspace.token.applied-to"
+msgstr "Primijenjeno na"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:391
+msgid "workspace.token.back-to-themes"
+msgstr "Povratak na popis tema"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:54
+msgid "workspace.token.create-new-theme"
+msgstr "Stvorite svoju prvu temu sada."
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:134, src/app/main/ui/workspace/tokens/sidebar.cljs:190
+msgid "workspace.token.create-one"
+msgstr "Stvorite jedan."
+
+#: src/app/main/ui/workspace/tokens/form.cljs:492
+msgid "workspace.token.create-token"
+msgstr "Stvorite novi %s token"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:278
+msgid "workspace.token.delete"
+msgstr "Izbriši token"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159
+msgid "workspace.token.delete-theme-title"
+msgstr "Izbriši temu"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:275
+msgid "workspace.token.duplicate"
+msgstr "Udvostručite token"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:262
+msgid "workspace.token.edit"
+msgstr "Uredite token"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:383
+msgid "workspace.token.edit-theme-title"
+msgstr "Uredite temu"
+
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:72
+msgid "workspace.token.edit-themes"
+msgstr "Uredite teme"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:491
+msgid "workspace.token.edit-token"
+msgstr "Uredite token"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:544
+msgid "workspace.token.enter-token-description"
+msgstr "Dodajte opis (nije obavezno)"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:498
+msgid "workspace.token.enter-token-name"
+msgstr "Unesite %s naziv tokena"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs
+#, unused
+msgid "workspace.token.grouping-set-alert"
+msgstr "Grupiranje skupa tokena još nije podržano."
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:196
+msgid "workspace.token.label.group"
+msgstr "Grupa"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:206
+msgid "workspace.token.label.theme"
+msgstr "Tema"
+
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:89
+msgid "workspace.token.no-active-theme"
+msgstr "Nema aktivnih tema"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:110
+msgid "workspace.token.no-permisions-set"
+msgstr "Za aktiviranje/deaktiviranje skupova morate biti urednik"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:199
+msgid "workspace.token.no-permission-themes"
+msgstr "Morate biti urednik da biste koristili teme"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:504
+msgid "workspace.token.no-sets-create"
+msgstr "Još nema definiranih skupova. Prvo stvorite jedan."
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:131, src/app/main/ui/workspace/tokens/sets.cljs:137
+msgid "workspace.token.no-sets-yet"
+msgstr "Još nema skupova."
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:186
+msgid "workspace.token.no-themes"
+msgstr "Nema tema."
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:50
+msgid "workspace.token.no-themes-currently"
+msgstr "Trenutno nemate nijednu temu."
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:122
+#, fuzzy
+msgid "workspace.token.original-value"
+msgstr "Izvorna vrijednost: %s"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:128
+msgid "workspace.token.ref-not-valid"
+msgstr "Referenca nije važeća ili nije ni u jednom aktivnom skupu"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:217, src/app/main/ui/workspace/tokens/form.cljs:221, src/app/main/ui/workspace/tokens/token_pill.cljs:123
+#, fuzzy
+msgid "workspace.token.resolved-value"
+msgstr "Riješena vrijednost: %s"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:240
+msgid "workspace.token.save-theme"
+msgstr "Spremi temu"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:239, src/app/main/ui/workspace/tokens/sets.cljs:340
+msgid "workspace.token.select-set"
+msgstr "Odaberite skup."
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:396
+msgid "workspace.token.set-selection-theme"
+msgstr ""
+"Definirajte koji se skupovi tokena trebaju koristiti kao dio ove opcije "
+"teme:"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:136
+msgid "workspace.token.theme-name"
+msgstr "Tema %s"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:545
+msgid "workspace.token.token-description"
+msgstr "Opis"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:501
+msgid "workspace.token.token-name"
+msgstr "Ime"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:59
+msgid "workspace.token.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/form.cljs:526
+msgid "workspace.token.token-value"
+msgstr "Vrijednost"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:322
+msgid "workspace.token.tokens-section-title"
+msgstr "TOKENI - %s"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:405
+msgid "workspace.token.tools"
+msgstr "Alati"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:131
+msgid "workspace.token.value-not-valid"
+msgstr "Vrijednost nije važeća"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:520
+msgid "workspace.token.warning-name-change"
+msgstr "Preimenovanje ovog tokena prekinut će sve reference na njegov stari naziv."
+
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Stavke"
@@ -4345,35 +6536,39 @@ msgstr "Stavke"
msgid "workspace.toolbar.color-palette"
msgstr "Paleta boja (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Komentari (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Krivulja (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Elipsa (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Ploča (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Slika (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Premijesti (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
-msgstr "Path (%s)"
+msgstr "Putanja (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:210, src/app/main/ui/workspace/top_toolbar.cljs:211
+msgid "workspace.toolbar.plugins"
+msgstr "Dodaci (%s)"
+
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Pravokutnik (%s)"
@@ -4382,7 +6577,7 @@ msgstr "Pravokutnik (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Prečaci (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Tekst (%s)"
@@ -4390,6 +6585,19 @@ msgstr "Tekst (%s)"
msgid "workspace.toolbar.text-palette"
msgstr "Tipografija (%s)"
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
+msgid "workspace.toolbar.toggle-toolbar"
+msgstr "Uključi/isključi alatnu traku"
+
+#: src/app/main/ui/workspace/viewport/top_bar.cljs:39
+msgid "workspace.top-bar.read-only.done"
+msgstr "Gotovo"
+
+#: src/app/main/ui/workspace/viewport/top_bar.cljs:36
+#, markdown
+msgid "workspace.top-bar.view-only"
+msgstr "**Provjera koda** (samo pregled)"
+
#: src/app/main/ui/workspace/sidebar/history.cljs:331
msgid "workspace.undo.empty"
msgstr "Do sada nema promjena povijesti"
@@ -4444,7 +6652,7 @@ msgstr "stranice"
#: src/app/main/ui/workspace/sidebar/history.cljs:118
msgid "workspace.undo.entry.multiple.path"
-msgstr "paths"
+msgstr "putanje"
#: src/app/main/ui/workspace/sidebar/history.cljs:119
msgid "workspace.undo.entry.multiple.rect"
@@ -4508,7 +6716,7 @@ msgstr "stranica"
#: src/app/main/ui/workspace/sidebar/history.cljs:133
msgid "workspace.undo.entry.single.path"
-msgstr "path"
+msgstr "putanja"
#: src/app/main/ui/workspace/sidebar/history.cljs:134
msgid "workspace.undo.entry.single.rect"
@@ -4535,18 +6743,99 @@ 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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Odbaci"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1222
+msgid "workspace.updates.more-info"
+msgstr "Više informacija"
+
+#: src/app/main/data/workspace/libraries.cljs:1220
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:1226
msgid "workspace.updates.update"
msgstr "Ažuriraj"
+#: src/app/main/ui/workspace/sidebar/versions.cljs:184
+msgid "workspace.versions.autosaved.entry"
+msgstr "%s automatski spremljene verzije"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:182
+msgid "workspace.versions.autosaved.version"
+msgstr "Automatski spremljeno %s"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:203
+msgid "workspace.versions.button.pin"
+msgstr "Zakačiti verziju"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:198
+msgid "workspace.versions.button.restore"
+msgstr "Vrati verziju"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:327, src/app/main/ui/workspace/sidebar/versions.cljs:329
+msgid "workspace.versions.button.save"
+msgstr "Spremi verziju"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:336
+msgid "workspace.versions.empty"
+msgstr "Još nema verzija"
+
+#: src/app/main/ui/ds/product/autosaved_milestone.cljs:53
+msgid "workspace.versions.expand-snapshot"
+msgstr "Proširi snimke"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:309
+msgid "workspace.versions.filter.all"
+msgstr "Sve verzije"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:308
+msgid "workspace.versions.filter.label"
+msgstr "Filtar verzija"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:310
+msgid "workspace.versions.filter.mine"
+msgstr "Moje verzije"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:316
+msgid "workspace.versions.filter.user"
+msgstr "%s verzije"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:322
+msgid "workspace.versions.loading"
+msgstr "Učitavanje..."
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:259
+msgid "workspace.versions.restore-warning"
+msgstr "Želite li vratiti ovu verziju?"
+
+#, unused
+msgid "workspace.versions.snapshot-menu"
+msgstr "Otvaranje izbornika snimke"
+
+#: src/app/main/ui/workspace/sidebar.cljs:285
+msgid "workspace.versions.tab.actions"
+msgstr "Akcije"
+
+#: src/app/main/ui/workspace/sidebar.cljs:282
+msgid "workspace.versions.tab.history"
+msgstr "Povijest"
+
+#: src/app/main/ui/ds/product/autosaved_milestone.cljs:67, src/app/main/ui/ds/product/user_milestone.cljs:74
+msgid "workspace.versions.version-menu"
+msgstr "Otvori izbornik verzije"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:365
+#, markdown
+msgid "workspace.versions.warning.subtext"
+msgstr "Ako želite povećati ovo ograničenje, pišite nam na [support@penpot.app](%s)"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:361
+msgid "workspace.versions.warning.text"
+msgstr "Automatski spremljene verzije čuvat će se %s dana."
+
#, unused
msgid "workspace.viewport.click-to-close-path"
msgstr "Pritisni da zatvoriš path"
diff --git a/frontend/translations/id.po b/frontend/translations/id.po
index aa7f54db3c..d44da78636 100644
--- a/frontend/translations/id.po
+++ b/frontend/translations/id.po
@@ -1,15 +1,15 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2025-01-29 22:23+0000\n"
+"PO-Revision-Date: 2025-03-20 13:42+0000\n"
"Last-Translator: Anonymous \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.10-dev\n"
+"X-Generator: Weblate 5.11-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
@@ -38,13 +38,13 @@ msgstr "Buat akun demo"
msgid "auth.create-demo-profile"
msgstr "Hanya ingin mencobanya?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Ini layanan DEMO, JANGAN GUNAKAN untuk pekerjaan nyata, proyek-proyek ini "
"akan di hapus secara berkala."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Lupa kata sandi?"
@@ -52,7 +52,7 @@ msgstr "Lupa kata sandi?"
msgid "auth.fullname"
msgstr "Nama Lengkap"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "Masuk ke akun saya"
@@ -60,33 +60,33 @@ msgstr "Masuk ke akun saya"
msgid "auth.login-here"
msgstr "Masuk di sini."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Masuk"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr ""
"Penpot adalah peralatan desain bebas & bersumber terbuka untuk kolaborasi "
"Desain dan Kode"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID Connect"
@@ -110,7 +110,7 @@ msgstr "Tautan pemulihan kata sandi telah dikirim ke kotak masuk Anda."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Berhasil bergabung ke tim"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Kata sandi"
@@ -138,7 +138,7 @@ msgstr "Lupa kata sandi?"
msgid "auth.recovery-submit"
msgstr "Ubah kata sandi Anda"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Belum punya akun?"
@@ -152,7 +152,7 @@ msgstr ""
msgid "auth.register-account-title"
msgstr "Nama Anda"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Buat akun baru"
@@ -177,7 +177,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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Kebijakan layanan"
@@ -191,7 +191,7 @@ msgstr ""
msgid "auth.verification-email-sent"
msgstr "Kami telah mengirimkan surel verifikasi ke"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "Surel kerja"
@@ -200,11 +200,11 @@ msgstr "Surel kerja"
msgid "branding-illustrations-marketing-pieces"
msgstr "...pencitraan merek, ilustrasi, bagian pemasaran, dll."
-#: src/app/main/ui/comments.cljs:504
+#: src/app/main/ui/comments.cljs:532
msgid "comments.mentions.not-found"
msgstr "Tidak ada orang yang ditemukan untuk @%s"
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Terbitkan"
@@ -275,7 +275,7 @@ msgstr "Bagikan prototipe"
msgid "common.share-link.view-all"
msgstr "Pilih Semua"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Batalkan penerbitan"
@@ -329,7 +329,7 @@ msgstr "Panduan Antarmuka"
msgid "dashboard.access-tokens.copied-success"
msgstr "Token disalin"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Buat token baru"
@@ -337,11 +337,11 @@ msgstr "Buat token baru"
msgid "dashboard.access-tokens.create.success"
msgstr "Token akses berhasil dibuat."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Tekan tombol \"Buat token baru\" untuk membuat token."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "Anda belum memiliki token."
@@ -365,23 +365,23 @@ msgstr "90 hari"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Tidak pernah"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Telah kedaluwarsa pada %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Kedaluwarsa pada %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Tidak ada tanggal kedaluwarsa"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Token akses pribadi"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Token akses pribadi berfungsi sebagai alternatif sistem autentikasi nama "
@@ -396,6 +396,10 @@ msgstr "Token akan kedaluwarsa pada %s"
msgid "dashboard.access-tokens.token-will-not-expire"
msgstr "Token tidak memiliki tanggal kedaluwarsa"
+#: src/app/main/ui/dashboard/placeholder.cljs:35
+msgid "dashboard.add-file"
+msgstr "Tambahkan berkas"
+
#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612
msgid "dashboard.add-shared"
msgstr "Tambahkan sebagai Pustaka Bersama"
@@ -404,7 +408,7 @@ msgstr "Tambahkan sebagai Pustaka Bersama"
msgid "dashboard.change-email"
msgstr "Ubah surel"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(salin)"
@@ -440,23 +444,23 @@ msgstr "Duplikasi"
msgid "dashboard.duplicate-multi"
msgstr "Gandakan % berkas"
-#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:285
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
msgid "dashboard.empty-placeholder-drafts-subtitle"
msgstr "Ketika anggota proyek membuat draf, itu akan ditampilkan di sini."
-#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:280
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
msgid "dashboard.empty-placeholder-drafts-title"
msgstr "Belum ada draf."
-#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:286
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
msgid "dashboard.empty-placeholder-files-subtitle"
msgstr "Ketika anggota proyek membuat berkas, itu akan ditampilkan di sini."
-#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:281
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
msgid "dashboard.empty-placeholder-files-title"
msgstr "Belum ada berkas."
-#: src/app/main/ui/dashboard/placeholder.cljs:40
+#: src/app/main/ui/dashboard/placeholder.cljs:77
#, markdown
msgid "dashboard.empty-placeholder-libraries"
msgstr ""
@@ -472,11 +476,11 @@ msgstr ""
"berkas Anda atau tambahkan dari [Pustaka dan tempat] "
"(https://penpot.app/libraries-templates) kami."
-#: src/app/main/ui/dashboard/placeholder.cljs:36
+#: src/app/main/ui/dashboard/placeholder.cljs:73
msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role"
msgstr "Pustaka yang ditambahkan ke proyek akan muncul di sini."
-#: src/app/main/ui/dashboard/placeholder.cljs:33
+#: src/app/main/ui/dashboard/placeholder.cljs:70
msgid "dashboard.empty-placeholder-libraries-title"
msgstr "Belum ada pustaka."
@@ -568,32 +572,32 @@ msgstr "Termasuk aset pustaka terbagi dalam pustaka berkas"
msgid "dashboard.export.title"
msgstr "Ekspor berkas"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Fon dihapus"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Abaikan semua"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Fon khusus yang Anda unggah akan muncul di sini."
-#: src/app/main/ui/dashboard/fonts.cljs:448
+#: src/app/main/ui/dashboard/fonts.cljs:450
msgid "dashboard.fonts.empty-placeholder-viewer"
msgstr "Belum ada fon kustom."
-#: src/app/main/ui/dashboard/fonts.cljs:449
+#: src/app/main/ui/dashboard/fonts.cljs:451
msgid "dashboard.fonts.empty-placeholder-viewer-sub"
msgstr "Ketika anggota proyek mengunggah fon kustom, itu akan ditampilkan di sini."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "%s fon ditambahkan"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -603,21 +607,20 @@ msgstr ""
"fon tunggal**. Anda dapat mengunggah fon dengan format berikut: **TTF, OTF, "
"dan WOFF** (hanya satu yang diperlukan)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Anda seharusnya hanya mengunggah fon yang Anda miliki atau memiliki izin "
"untuk menggunakannya dalam Penpot. Ketahui lebih lanjut dalam bagian Hak "
-"konten (Content rights) dari [Ketentuan Layanan "
-"Penpot](%s). Anda mungkin juga ingin membaca "
-"tentang [lisensi fon](https://www.typography.com/faq)."
+"konten (Content rights) dari [Ketentuan Layanan Penpot](%s). Anda mungkin "
+"juga ingin membaca tentang [lisensi fon](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Unggah semua"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -628,7 +631,7 @@ msgstr ""
"menyarankan menggunakan [Transfonter](https://transfonter.org/) untuk "
"membuat fon web dan memperbaiki kesalahan. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Impor berkas Penpot"
@@ -640,11 +643,11 @@ msgstr "Aduh! Kami tidak dapat mengimpor berkas ini"
msgid "dashboard.import.analyze-error.components-v2"
msgstr "Berkas dengan komponen v2 diaktifkan tetapi tim ini belum mendukungnya."
-#: src/app/main/ui/dashboard.cljs:248
+#: src/app/main/ui/dashboard.cljs:247
msgid "dashboard.import.bad-url"
msgstr "Pengimporan gagal. URL templat salah"
-#: src/app/main/ui/dashboard.cljs:242
+#: src/app/main/ui/dashboard.cljs:241
msgid "dashboard.import.error"
msgstr "Pengimporan gagal. Silakan coba lagi"
@@ -652,15 +655,15 @@ msgstr "Pengimporan gagal. Silakan coba lagi"
msgid "dashboard.import.import-error"
msgstr "Terdapat masalah saat mengimpor berkas. Berkasnya tidak terimpor."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgstr "%s berkas telah berhasil diimpor."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Beberapa berkas berisi objek yang tidak valid yang telah dihapus."
-#: src/app/main/ui/dashboard.cljs:249
+#: src/app/main/ui/dashboard.cljs:248
msgid "dashboard.import.no-perms"
msgstr "Anda tidak memiliki perizinan untuk mengimpor ke tim ini"
@@ -700,27 +703,27 @@ msgstr "Undang orang"
msgid "dashboard.leave-team"
msgstr "Tinggalkan tim"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Pustaka & Template"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "Jelajahi lebih banyak dan pelajari cara berkontribusi"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "Terjadi masalah saat mengimpor template. Template tidak diimpor."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Pustaka"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "memuat berkas Anda …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "memuat fon Anda …"
@@ -736,11 +739,11 @@ msgstr "Pindahkan %s berkas ke"
msgid "dashboard.move-to-other-team"
msgstr "Pindahkan ke tim lain"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Buat Berkas"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Berkas Baru"
@@ -748,7 +751,7 @@ msgstr "Berkas Baru"
msgid "dashboard.new-project"
msgstr "+ Buat Proyek"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Proyek Baru"
@@ -760,7 +763,7 @@ msgstr "Tidak ada hasil yang ditemukan untuk “%s”"
msgid "dashboard.no-projects-placeholder"
msgstr "Proyek yang disemat akan muncul di sini"
-#: src/app/main/ui/dashboard/comments.cljs:84
+#: src/app/main/ui/dashboard/comments.cljs:90
msgid "dashboard.notifications"
msgstr "Notifikasi"
@@ -772,7 +775,7 @@ msgstr "Alamat surel Anda berhasil diperbarui"
msgid "dashboard.notifications.email-verified-successfully"
msgstr "Alamat surel Anda berhasil diverifikasi"
-#: src/app/main/ui/settings/notifications.cljs:42
+#: src/app/main/data/profile.cljs:260
msgid "dashboard.notifications.notifications-saved"
msgstr "Pengaturan notifikasi diperbarui"
@@ -792,7 +795,7 @@ msgstr "%s anggota"
msgid "dashboard.open-in-new-tab"
msgstr "Buka berkas di tab baru"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Opsi"
@@ -820,15 +823,15 @@ msgstr "Anda sekarang seorang peninjau di tim ini."
msgid "dashboard.pin-unpin"
msgstr "Semat/Lepas semat"
-#: src/app/main/ui/dashboard.cljs:212
+#: src/app/main/ui/dashboard.cljs:208
msgid "dashboard.plugins.bad-url"
msgstr "URL plugin salah"
-#: src/app/main/ui/dashboard.cljs:210
+#: src/app/main/ui/dashboard.cljs:206
msgid "dashboard.plugins.parse-error"
msgstr "Tidak dapat mengurai manifes plugin"
-#: src/app/main/ui/dashboard.cljs:173
+#: src/app/main/ui/dashboard.cljs:169
msgid "dashboard.plugins.try-plugin"
msgstr "Coba plugin: "
@@ -869,67 +872,67 @@ msgstr "Pilih bahasa antarmuka"
msgid "dashboard.select-ui-theme"
msgstr "Pilih tema"
-#: src/app/main/ui/settings/notifications.cljs:76
+#: src/app/main/ui/settings/notifications.cljs:57
msgid "dashboard.settings.notifications.dashboard-comments.all"
msgstr "Semua komentar, sebutan, dan balasan"
-#: src/app/main/ui/settings/notifications.cljs:78
+#: src/app/main/ui/settings/notifications.cljs:59
msgid "dashboard.settings.notifications.dashboard-comments.none"
msgstr "Tidak ada"
-#: src/app/main/ui/settings/notifications.cljs:77
+#: src/app/main/ui/settings/notifications.cljs:58
msgid "dashboard.settings.notifications.dashboard-comments.partial"
msgstr "Hanya sebutan dan balasan"
-#: src/app/main/ui/settings/notifications.cljs:73
+#: src/app/main/ui/settings/notifications.cljs:54
msgid "dashboard.settings.notifications.dashboard-comments.title"
msgstr "Komentar berkas"
-#: src/app/main/ui/settings/notifications.cljs:72
+#: src/app/main/ui/settings/notifications.cljs:53
msgid "dashboard.settings.notifications.dashboard.title"
msgstr "Notifikasi Dasbor"
-#: src/app/main/ui/settings/notifications.cljs:86
+#: src/app/main/ui/settings/notifications.cljs:67
msgid "dashboard.settings.notifications.email-comments.all"
msgstr "Semua komentar, sebutan, dan balasan"
-#: src/app/main/ui/settings/notifications.cljs:88
+#: src/app/main/ui/settings/notifications.cljs:69
msgid "dashboard.settings.notifications.email-comments.none"
msgstr "Tidak ada"
-#: src/app/main/ui/settings/notifications.cljs:87
+#: src/app/main/ui/settings/notifications.cljs:68
msgid "dashboard.settings.notifications.email-comments.partial"
msgstr "Hanya sebutan dan balasan"
-#: src/app/main/ui/settings/notifications.cljs:83
+#: src/app/main/ui/settings/notifications.cljs:64
msgid "dashboard.settings.notifications.email-comments.title"
msgstr "Komentar berkas"
-#: src/app/main/ui/settings/notifications.cljs:95
+#: src/app/main/ui/settings/notifications.cljs:76
msgid "dashboard.settings.notifications.email-invites.all"
msgstr "Semua jenis undangan dan permintaan"
-#: src/app/main/ui/settings/notifications.cljs:98
+#: src/app/main/ui/settings/notifications.cljs:79
msgid "dashboard.settings.notifications.email-invites.none"
msgstr "Tidak ada"
-#: src/app/main/ui/settings/notifications.cljs:92
+#: src/app/main/ui/settings/notifications.cljs:73
msgid "dashboard.settings.notifications.email-invites.title"
msgstr "Undangan dan permintaan"
-#: src/app/main/ui/settings/notifications.cljs:82
+#: src/app/main/ui/settings/notifications.cljs:63
msgid "dashboard.settings.notifications.email.title"
msgstr "Notifikasi Surel"
-#: src/app/main/ui/settings/notifications.cljs:103
+#: src/app/main/ui/settings/notifications.cljs:84
msgid "dashboard.settings.notifications.submit"
msgstr "Perbarui pengaturan"
-#: src/app/main/ui/settings/notifications.cljs:71
+#: src/app/main/ui/settings/notifications.cljs:52
msgid "dashboard.settings.notifications.title"
msgstr "Notifikasi"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Tampilkan semua berkas"
@@ -955,7 +958,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Berkas Anda berhasil dipindah"
@@ -999,15 +1002,15 @@ msgstr "Batal Penerbitan Pustaka"
msgid "dashboard.update-settings"
msgstr "Perbarui pengaturan"
-#: src/app/main/ui/dashboard/sidebar.cljs:969
+#: src/app/main/ui/dashboard/sidebar.cljs:970
msgid "dashboard.upgrade-plan.no-limits"
msgstr "Tanpa batasan kreativitas"
-#: src/app/main/ui/dashboard/sidebar.cljs:968
+#: src/app/main/ui/dashboard/sidebar.cljs:969
msgid "dashboard.upgrade-plan.penpot-free"
msgstr "Penpot Gratis"
-#: src/app/main/ui/dashboard/sidebar.cljs:971
+#: src/app/main/ui/dashboard/sidebar.cljs:972
msgid "dashboard.upgrade-plan.power-up"
msgstr "Tingkatkan"
@@ -1067,7 +1070,7 @@ msgstr "Surel"
msgid "dashboard.your-name"
msgstr "Nama Anda"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Penpot Anda"
@@ -1087,11 +1090,11 @@ msgstr "Komponen untuk diperbarui:"
msgid "ds.confirm-allow"
msgstr "Perbolehkan"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Batal"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Oke"
@@ -1103,7 +1106,7 @@ msgstr "Apakah Anda yakin?"
msgid "errors.auth-provider-not-allowed"
msgstr "Penyedia autentikasi tidak diperbolehkan untuk profil ini"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Penyedia autentikasi tidak dikonfigurasi."
@@ -1111,11 +1114,11 @@ msgstr "Penyedia autentikasi tidak dikonfigurasi."
msgid "errors.auth.unable-to-login"
msgstr "Sepertinya Anda tidak terautentikasi atau sesi kedaluwarsa."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "Fon %s tidak dapat dimuat"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "Fon %s tidak dapat dimuat"
@@ -1123,7 +1126,7 @@ msgstr "Fon %s tidak dapat dimuat"
msgid "errors.cannot-upload"
msgstr "Tidak dapat mengunggah berkas media."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Peramban Anda tidak dapat melakukan operasi ini"
@@ -1135,7 +1138,7 @@ msgstr "Surel sudah digunakan"
msgid "errors.email-already-validated"
msgstr "Surel sudah divalidasi."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Anda tidak dapat menggunakan surel Anda sebagai kata sandi"
@@ -1182,7 +1185,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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Sesuatu yang salah terjadi."
@@ -1195,8 +1198,7 @@ msgstr "Warna tidak valid"
msgid "errors.invalid-email"
msgstr "Silakan menyediakan surel yang valid"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "Surel konfirmasi harus cocok"
@@ -1212,7 +1214,7 @@ msgstr "Undangan tidak valid"
msgid "errors.invite-invalid.info"
msgstr "Undangan ini mungkin dibatalkan atau telah kedaluwarsa."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "Autentikasi LDAP dinonaktifkan."
@@ -1262,7 +1264,7 @@ msgstr "Kata sandi setidaknya 8 karakter"
msgid "errors.paste-data-validation"
msgstr "Data tidak valid dalam papan klip"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Profil diblokir"
@@ -1338,12 +1340,11 @@ msgstr "Terjadi kesalahan tidak terduga saat memvalidasi"
msgid "errors.webhooks.unexpected-status"
msgstr "Status %s tidak diduga"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "Surel atau kata sandi tidak benar."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Kata sandi lama tidak benar"
@@ -1392,11 +1393,11 @@ msgstr "Di sini untuk membantu dengan kueri teknis Anda."
msgid "feedback.twitter-title"
msgstr "Akun dukungan X"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Sebuah kesalahan telah terjadi"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Buram"
@@ -1404,31 +1405,31 @@ msgstr "Buram"
msgid "inspect.attributes.blur.value"
msgstr "Nilai"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Isian"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Unduh gambar sumber"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Tinggi"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Lebar"
@@ -1467,15 +1468,15 @@ msgstr "Atas"
msgid "inspect.attributes.layout.width"
msgstr "Lebar"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Bayangan"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Ukuran dan posisi"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Sapuan"
@@ -1512,141 +1513,141 @@ msgstr "Padat"
msgid "inspect.attributes.stroke.width"
msgstr "Lebar"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Tipografi"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Keluarga Fon"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Ukuran Fon"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Gaya Fon"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Berat Fon"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Spasi Huruf"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Tinggi Garis"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Dekorasi Teks"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Tidak ada"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Coret"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Garis bawah"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Transformasi Teks"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Huruf Kecil"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Tidak ada"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Huruf Judul"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "Tidak ditetapkan"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Huruf Besar"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr ""
"Jika Anda ingin mengetahui lebih lanjut tentang inspeksi desain kunjungi "
"pusat bantuan Penpot"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Lebih banyak info tentang inspeksi"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr "Pilih bentuk, papan, atau grup untuk menginskpeksi properti dan kodenya"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Kode"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Lingkaran"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Komponen"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Kurva"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Papan"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Grup"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Gambar"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Topeng"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s Dipilih"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Jalur"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Persegi Panjang"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Teks"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Info"
@@ -1666,15 +1667,15 @@ msgstr "Token akses"
msgid "labels.active"
msgstr "Aktif"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.add"
msgstr "Tambahkan"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Tambahkan fon khusus"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.adding"
msgstr "Menambahkan..."
@@ -1686,7 +1687,7 @@ msgstr "Admin"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Semua"
@@ -1708,7 +1709,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Gerbang Jalur Buruk"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Batal"
@@ -1716,27 +1717,27 @@ msgstr "Batal"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Tutup"
-#: src/app/main/ui/workspace/tokens/sets.cljs:180
+#: src/app/main/ui/workspace/tokens/sets.cljs:219
msgid "labels.collapse"
msgstr "Tutup"
-#: src/app/main/ui/comments.cljs:812
+#: src/app/main/ui/comments.cljs:881
msgid "labels.comment"
msgstr "Komentar"
-#: src/app/main/ui/comments.cljs:816
+#: src/app/main/ui/comments.cljs:885
msgid "labels.comment.mark-as-solved"
msgstr "Tandau sebagai selesai"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Komentar"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Komunitas"
@@ -1744,7 +1745,7 @@ msgstr "Komunitas"
msgid "labels.confirm-password"
msgstr "Konfirmasi kata sandi"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Lanjutkan"
@@ -1764,7 +1765,7 @@ msgstr "Salin tautan"
msgid "labels.copyright"
msgstr "Kaleidos @2024"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Buat"
@@ -1784,15 +1785,15 @@ msgstr "Fon khusus"
msgid "labels.dashboard"
msgstr "Dasbor"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Hapus"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Hapus komentar"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Hapus utasan"
@@ -1812,15 +1813,15 @@ msgstr "Pengembang"
msgid "labels.director"
msgstr "Direktur"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "Abaikan"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Draf"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Sunting"
@@ -1840,7 +1841,7 @@ msgstr "Acara"
msgid "labels.expired-invitation"
msgstr "Kedaluwarsa"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Ekspor"
@@ -1856,7 +1857,7 @@ msgstr "Masukan dikirim"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Keluarga Fon"
@@ -1864,11 +1865,11 @@ msgstr "Keluarga Fon"
msgid "labels.font-providers"
msgstr "Penyedia fon"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Gaya"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Fon"
@@ -1880,11 +1881,11 @@ msgstr "CEO atau Pendiri"
msgid "labels.freelancer"
msgstr "Saya seorang pekerja lepas"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Repositori GitHub"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Berikan masukan"
@@ -1896,15 +1897,15 @@ msgstr "Kembali"
msgid "labels.graphic-design"
msgstr "Desain grafis"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Pusat Bantuan"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Sembunyikan komentar yang telah diselesaikan"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:355
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:413
msgid "labels.import"
msgstr "Impor"
@@ -1912,7 +1913,7 @@ msgstr "Impor"
msgid "labels.inactive"
msgstr "Tidak Aktif"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Fon terpasang"
@@ -1938,11 +1939,11 @@ msgstr "Undangan"
msgid "labels.language"
msgstr "Bahasa"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Pustaka & Templat"
-#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:114, src/app/main/ui/dashboard/grid.cljs:133, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:53, src/app/main/ui/ds/product/loader.cljs:52, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:126, src/app/main/ui.cljs:67, src/app/main/ui.cljs:105, src/app/main/ui.cljs:124
+#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:115, src/app/main/ui/dashboard/grid.cljs:134, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:98, src/app/main/ui/ds/product/loader.cljs:85, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:118, src/app/main/ui.cljs:66, src/app/main/ui.cljs:104, src/app/main/ui.cljs:123
msgid "labels.loading"
msgstr "Memuat…"
@@ -1954,7 +1955,7 @@ msgstr "Masuk atau daftar"
msgid "labels.login"
msgstr "Masuk"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Keluar"
@@ -1974,11 +1975,11 @@ msgstr "Anggota"
msgid "labels.new-password"
msgstr "Kata sandi baru"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Berikutnya"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "Anda telah melihat semuanya! Notifikasi komentar baru akan muncul di sini."
@@ -2006,7 +2007,7 @@ msgstr "Aduh!"
msgid "labels.notifications"
msgstr "Notifikasi"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "%s berkas"
@@ -2034,7 +2035,7 @@ msgstr "Kata sandi lama"
msgid "labels.only-yours"
msgstr "Hanya Anda"
-#: src/app/main/ui/comments.cljs:545, src/app/main/ui/comments.cljs:822, src/app/main/ui/comments.cljs:886, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:295, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:324
+#: src/app/main/ui/comments.cljs:891, src/app/main/ui/comments.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:293, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:322
msgid "labels.options"
msgstr "Opsi"
@@ -2062,7 +2063,7 @@ msgstr "Kata sandi"
msgid "labels.pending-invitation"
msgstr "Ditunda"
-#: src/app/main/ui/comments.cljs:657, src/app/main/ui/comments.cljs:690, src/app/main/ui/comments.cljs:759
+#: src/app/main/ui/comments.cljs:678
msgid "labels.post"
msgstr "Kiriman"
@@ -2086,7 +2087,7 @@ msgstr "Profil"
msgid "labels.projects"
msgstr "Proyek"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Catatan rilis"
@@ -2104,7 +2105,7 @@ msgstr "Hapus"
msgid "labels.remove-member"
msgstr "Keluarkan anggota"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Ubah nama"
@@ -2112,23 +2113,23 @@ msgstr "Ubah nama"
msgid "labels.rename-team"
msgstr "Ubah nama tim"
-#: src/app/main/ui/comments.cljs:598
+#: src/app/main/ui/comments.cljs:641
msgid "labels.replies"
msgstr "balasan"
-#: src/app/main/ui/comments.cljs:603
+#: src/app/main/ui/comments.cljs:646
msgid "labels.replies.new"
msgstr "balasan baru"
-#: src/app/main/ui/comments.cljs:597
+#: src/app/main/ui/comments.cljs:640
msgid "labels.reply"
msgstr "balas"
-#: src/app/main/ui/comments.cljs:602
+#: src/app/main/ui/comments.cljs:645
msgid "labels.reply.new"
msgstr "balasan baru"
-#: src/app/main/ui/comments.cljs:641
+#: src/app/main/ui/comments.cljs:721
msgid "labels.reply.thread"
msgstr "Balas"
@@ -2148,15 +2149,15 @@ msgstr "Coba lagi"
msgid "labels.role"
msgstr "Peran"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Simpan"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "Cari"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Cari fon"
@@ -2180,7 +2181,7 @@ 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:252
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:247
msgid "labels.sets"
msgstr "Set"
@@ -2200,19 +2201,19 @@ msgstr "Bagikan prototipe"
msgid "labels.shared-libraries"
msgstr "Pustaka"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Tampilkan semua komentar"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Tampilkan daftar komentar"
-#: src/app/main/ui/workspace/comments.cljs:66, src/app/main/ui/workspace/comments.cljs:136
+#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139
msgid "labels.show-mentions"
msgstr "Hanya tampilkan sebutan Anda"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Hanya tampilkan komentar Anda"
@@ -2240,11 +2241,11 @@ msgstr "Pemandu Tim"
msgid "labels.team-member"
msgstr "Anggota tim"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:183
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:182
msgid "labels.themes"
msgstr "Tema"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Tutorial"
@@ -2260,15 +2261,15 @@ msgstr "Perbarui"
msgid "labels.update-team"
msgstr "Perbarui tim"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Unggah"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Unggah fon khusus"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Mengunggah…"
@@ -2284,7 +2285,7 @@ msgstr "Pelihat"
msgid "labels.webhooks"
msgstr "Kaitan web"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Tulis komentar baru"
@@ -2292,7 +2293,7 @@ msgstr "Tulis komentar baru"
msgid "labels.you"
msgstr "(Anda)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Akun Anda"
@@ -2300,23 +2301,23 @@ msgstr "Akun Anda"
msgid "labels.youtube"
msgstr "YouTube"
-#: src/app/main/ui/workspace/colorpicker.cljs:477, src/app/main/ui/workspace/colorpicker.cljs:478, src/app/main/ui/workspace/colorpicker.cljs:480
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
msgid "media.choose-image"
msgstr "Pilih gambar"
-#: src/app/main/ui/workspace/colorpicker.cljs:245
+#: src/app/main/ui/workspace/colorpicker.cljs:241
msgid "media.gradient"
msgstr "Gradien"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "Gambar"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:77
+#: src/app/main/ui/inspect/attributes/common.cljs:77
msgid "media.image.short"
msgstr "gambar"
-#: src/app/main/ui/workspace/colorpicker.cljs:470
+#: src/app/main/ui/workspace/colorpicker.cljs:467
msgid "media.keep-aspect-ratio"
msgstr "Jaga rasio aspek"
@@ -2334,7 +2335,7 @@ msgstr "Memuat gambar…"
msgid "media.radial"
msgstr "Radial"
-#: src/app/main/ui/workspace/colorpicker.cljs:243
+#: src/app/main/ui/workspace/colorpicker.cljs:239
msgid "media.solid"
msgstr "Padat"
@@ -2385,7 +2386,7 @@ msgstr "Ubah surel"
msgid "modals.change-email.title"
msgstr "Ubah surel Anda"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Salin token"
@@ -2401,7 +2402,7 @@ msgstr "Nama"
msgid "modals.create-access-token.name.placeholder"
msgstr "Namanya dapat mengetahui kegunaan tokennya"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Buat token"
@@ -2425,15 +2426,15 @@ msgstr "URL Muatan"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://contoh.co.id/terimapos"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Hapus token"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "Apakah Anda ingin menghapus token ini?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Hapus token"
@@ -2455,25 +2456,25 @@ msgstr ""
msgid "modals.delete-account.title"
msgstr "Apakah Anda yakin ingin menghapus akun Anda?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Hapus percakapan"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Apakah Anda yakin ingin menghapus percakapan ini? Semua komentar dalam "
"utasan ini akan dihapus."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Hapus percakapan"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
msgid "modals.delete-component-annotation.message"
msgstr "Apakah Anda yakin ingin menghapus anotasi ini?"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Haus anotasi"
@@ -2501,31 +2502,31 @@ msgstr "Apakah Anda yakin ingin menghapus %s berkas?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Menghapus %s berkas"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Apakah Anda yakin ingin menghapus gaya fon ini? Ini tidak akan muat jika "
"digunakan dalam sebuah berkas."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Menghapus gaya fon"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Apakah Anda yakin ingin menghapus fon ini? Ini tidak akan muat jika "
"digunakan dalam sebuah berkas."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Menghapus fon"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Apakah Anda yakin ingin menghapus halaman ini?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Hapus halaman"
@@ -2728,15 +2729,15 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "Pemilik tim baru"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Terbitkan"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
msgid "modals.publish-empty-library.message"
msgstr "Pustaka Anda sedang kosong. Apakah Anda ingin menerbitkannya?"
-#: src/app/main/ui/workspace/libraries.cljs:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Terbitkan pustaka kosong"
@@ -2788,21 +2789,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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Perbarui"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Batal"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Perbarui sebuah komponen dalam sebuah pustaka terbagi"
@@ -2967,28 +2968,28 @@ msgstr "Tutorial video"
msgid "onboarding-v2.before-start.title"
msgstr "Sebelum Anda mulai"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Berlangganan ke buletin Penpot untuk tetap terkini dengan kemajuan "
"pengembangan dan berita produk."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr "Kirimkan saya berita tentang Penpot (pos blog, tutorial video, siaran...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Kami peduli tentang privasi, di sini Anda dapat membaca "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Kami hanya akan mengirim surel yang relevan. Anda dapat berhenti "
"berlangganan kapan pun melalui tautan berhenti langganan di buletin apa pun "
"dari kami."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr "Kirimkan saya pembaruan produk (fitur baru, rilis, perbaikan...)."
@@ -3087,17 +3088,17 @@ msgstr "Anda nanti akan dapat membuat tim."
msgid "onboarding.newsletter.accept"
msgstr "Ya, berlangganan"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"Permintaan langganan Anda telah dikirim, kami akan mengirim Anda sebuah "
"surel untuk mengonfirmasinya."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Kebijakan Privasi kami."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Ingin menerima berita Penpot?"
@@ -3290,7 +3291,7 @@ msgstr "Pergi ke log masuk"
msgid "settings.detach"
msgstr "Copot"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Tercampur"
@@ -3488,7 +3489,7 @@ msgstr "Buat baru"
msgid "shortcuts.cut"
msgstr "Potong"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Perkecil"
@@ -3588,7 +3589,7 @@ msgstr "Distribusikan secara horizontal"
msgid "shortcuts.hide-ui"
msgstr "Tampilkan/sembunyikan antarmuka"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Perbesar"
@@ -3972,15 +3973,15 @@ msgstr "Zum ke terpilih"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Penyedia Fon - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Fon - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Proyek - %s - Penpot"
@@ -3988,7 +3989,7 @@ msgstr "Proyek - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Cari - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Pustaka Terbagi - %s - Penpot"
@@ -3996,7 +3997,7 @@ msgstr "Pustaka Terbagi - %s - Penpot"
msgid "title.default"
msgstr "Penpot - Kebebasan Desain untuk Tim"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "Profil - Token akses"
@@ -4004,7 +4005,7 @@ msgstr "Profil - Token akses"
msgid "title.settings.feedback"
msgstr "Berikan masukan - Penpot"
-#: src/app/main/ui/settings/notifications.cljs:64
+#: src/app/main/ui/settings/notifications.cljs:45
msgid "title.settings.notifications"
msgstr "Notifikasi - Penpot"
@@ -4040,7 +4041,7 @@ msgstr "Kaitan Web - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Mode penampilan - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -4140,7 +4141,7 @@ msgstr "Distribusikan spasi vertikal (%s)"
msgid "workspace.align.vtop"
msgstr "Sesuaikan ke atas (%s)"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:174, src/app/main/ui/workspace/sidebar/assets.cljs:179
+#: src/app/main/ui/workspace/sidebar/assets.cljs:171
msgid "workspace.assets.add-library"
msgstr "Tambahkan pustaka"
@@ -4149,11 +4150,11 @@ msgstr "Tambahkan pustaka"
msgid "workspace.assets.assets"
msgstr "Aset"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Semua aset"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Warna"
@@ -4161,11 +4162,11 @@ msgstr "Warna"
msgid "workspace.assets.colors.add-color"
msgstr "Tambahkan warna"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Komponen"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:510
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:520
msgid "workspace.assets.components.add-component"
msgstr "Tambahkan komponen"
@@ -4177,15 +4178,15 @@ msgstr "Buat sebuah kelompok"
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:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Hapus"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Gandakan"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "Gandakan utama"
@@ -4193,19 +4194,19 @@ msgstr "Gandakan utama"
msgid "workspace.assets.edit"
msgstr "Sunting"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:195
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
msgid "workspace.assets.filter"
msgstr "Penyaring"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Grafis"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:505
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:515
msgid "workspace.assets.grid-view"
msgstr "Tampilan kisi"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Kelompok"
@@ -4213,27 +4214,23 @@ msgstr "Kelompok"
msgid "workspace.assets.group-name"
msgstr "Nama kelompok"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Pustaka"
-
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:501
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:511
msgid "workspace.assets.list-view"
msgstr "Tampilan daftar"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "pustaka lokal"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Tidak ada aset yang ditemukan"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "Buka berkas pustaka"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Ubah nama"
@@ -4241,7 +4238,7 @@ msgstr "Ubah nama"
msgid "workspace.assets.rename-group"
msgstr "Ubah nama kelompok"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Cari aset"
@@ -4256,16 +4253,16 @@ msgstr[0] "%s aset dipilih"
msgid "workspace.assets.shared-library"
msgstr "Pustaka terbagi"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:226
+#: 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:211
+#: src/app/main/ui/workspace/sidebar/assets.cljs:201
msgid "workspace.assets.sort"
msgstr "Urutkan"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Tipografi"
@@ -4278,27 +4275,27 @@ msgstr "Tambahkan tipografi"
msgid "workspace.assets.typography.font-id"
msgstr "Fon"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Ukuran"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Varian"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Pergi ke berkas pustaka untuk menyunting"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Spasi Huruf"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Ketinggian Garis"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -4306,7 +4303,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Gaya teks"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Transformasi Teks"
@@ -4314,55 +4311,55 @@ msgstr "Transformasi Teks"
msgid "workspace.assets.ungroup"
msgstr "Lepas kelompok"
-#: src/app/main/ui/workspace/context_menu.cljs:748
+#: src/app/main/ui/workspace/context_menu.cljs:764
msgid "workspace.context-menu.grid-cells.area"
msgstr "Buat area"
-#: src/app/main/ui/workspace/context_menu.cljs:751
+#: src/app/main/ui/workspace/context_menu.cljs:767
msgid "workspace.context-menu.grid-cells.create-board"
msgstr "Buat papan"
-#: src/app/main/ui/workspace/context_menu.cljs:743
+#: src/app/main/ui/workspace/context_menu.cljs:759
msgid "workspace.context-menu.grid-cells.merge"
msgstr "Gabungkan sel"
-#: src/app/main/ui/workspace/context_menu.cljs:706
+#: src/app/main/ui/workspace/context_menu.cljs:722
msgid "workspace.context-menu.grid-track.column.add-after"
msgstr "Tambah 1 kolom ke kanan"
-#: src/app/main/ui/workspace/context_menu.cljs:705
+#: src/app/main/ui/workspace/context_menu.cljs:721
msgid "workspace.context-menu.grid-track.column.add-before"
msgstr "Tambah 1 kolom ke kiri"
-#: src/app/main/ui/workspace/context_menu.cljs:707
+#: src/app/main/ui/workspace/context_menu.cljs:723
msgid "workspace.context-menu.grid-track.column.delete"
msgstr "Hapus kolom"
-#: src/app/main/ui/workspace/context_menu.cljs:708
+#: src/app/main/ui/workspace/context_menu.cljs:724
msgid "workspace.context-menu.grid-track.column.delete-shapes"
msgstr "Hapus kolom dan bentuk"
-#: src/app/main/ui/workspace/context_menu.cljs:704
+#: src/app/main/ui/workspace/context_menu.cljs:720
msgid "workspace.context-menu.grid-track.column.duplicate"
msgstr "Gandakan kolom"
-#: src/app/main/ui/workspace/context_menu.cljs:713
+#: src/app/main/ui/workspace/context_menu.cljs:729
msgid "workspace.context-menu.grid-track.row.add-after"
msgstr "Tambah 1 baris di bawah"
-#: src/app/main/ui/workspace/context_menu.cljs:712
+#: src/app/main/ui/workspace/context_menu.cljs:728
msgid "workspace.context-menu.grid-track.row.add-before"
msgstr "Tambah 1 baris di atas"
-#: src/app/main/ui/workspace/context_menu.cljs:714
+#: src/app/main/ui/workspace/context_menu.cljs:730
msgid "workspace.context-menu.grid-track.row.delete"
msgstr "Hapus baris"
-#: src/app/main/ui/workspace/context_menu.cljs:715
+#: src/app/main/ui/workspace/context_menu.cljs:731
msgid "workspace.context-menu.grid-track.row.delete-shapes"
msgstr "Hapus baris dan bentuk"
-#: src/app/main/ui/workspace/context_menu.cljs:711
+#: src/app/main/ui/workspace/context_menu.cljs:727
msgid "workspace.context-menu.grid-track.row.duplicate"
msgstr "Gandakan baris"
@@ -4370,11 +4367,11 @@ msgstr "Gandakan baris"
msgid "workspace.focus.focus-mode"
msgstr "Mode fokus"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Fokus nonaktif"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Fokus aktif"
@@ -4532,37 +4529,36 @@ msgstr "Ubah ke tema terang"
msgid "workspace.header.menu.undo"
msgstr "Urungkan"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Atur ulang"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Kesalahan saat menyimpan"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Disimpan"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Menyimpan"
-#: src/app/main/ui/workspace/right_header.cljs:255
+#: src/app/main/ui/workspace/right_header.cljs:221
msgid "workspace.header.share"
msgstr "Bagikan"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Perubahan belum disimpan"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "Mode penampilan (%s)"
-#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "Zum"
@@ -4574,7 +4570,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:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Zum supaya pas semua"
@@ -4582,19 +4578,19 @@ msgstr "Zum supaya pas semua"
msgid "workspace.header.zoom-full-screen"
msgstr "Layar penuh"
-#: src/app/main/ui/workspace/right_header.cljs:136
+#: src/app/main/ui/workspace/right_header.cljs:104
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:607
+#: 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:616
msgid "workspace.layout_grid.editor.options.edit-grid"
msgstr "Sunting kisi"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
msgid "workspace.layout_grid.editor.options.exit"
msgstr "Keluar"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:478
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
msgid "workspace.layout_grid.editor.padding.expand"
msgstr "Tampilkan opsi bantalan 4 sisi"
@@ -4610,7 +4606,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:1321
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
msgstr "Lokasi tata letak kisi"
@@ -4619,7 +4615,7 @@ msgstr "Lokasi tata letak kisi"
msgid "workspace.libraries.add"
msgstr "Tambahkan"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s warna"
@@ -4649,43 +4645,43 @@ msgstr "Warna terkini"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "Pelengkap RGB"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Simpan gaya warna"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:374
+#: src/app/main/ui/workspace/libraries.cljs:371
msgid "workspace.libraries.empty.add-some"
msgstr "Atau tambahkan beberapa dari sini untuk mencoba:"
-#: src/app/main/ui/workspace/libraries.cljs:368
+#: src/app/main/ui/workspace/libraries.cljs:365
msgid "workspace.libraries.empty.no-libraries"
msgstr "Tidak ada Pustaka Terbagi dalam tim Anda, Anda dapat melihat"
-#: src/app/main/ui/workspace/libraries.cljs:372
+#: src/app/main/ui/workspace/libraries.cljs:369
msgid "workspace.libraries.empty.some-templates"
msgstr "beberapa templat di sini"
-#: src/app/main/ui/workspace/libraries.cljs:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Pustaka berkas"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "PUSTAKA DALAM BERKAS INI"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "PUSTAKA"
@@ -4694,71 +4690,64 @@ msgstr "PUSTAKA"
msgid "workspace.libraries.library"
msgstr "PUSTAKA"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "PEMBARUAN PUSTAKA"
-#: src/app/main/ui/workspace/libraries.cljs:363
+#: src/app/main/ui/workspace/libraries.cljs:360
msgid "workspace.libraries.loading"
msgstr "Memuat…"
#: src/app/main/ui/workspace/libraries.cljs:387
+#, unused
msgid "workspace.libraries.more-templates"
msgstr "Anda dapat mencari "
-#: src/app/main/ui/workspace/libraries.cljs:391
-msgid "workspace.libraries.more-templates-link"
-msgstr "lebih banyak tempat di sini"
-
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "Tidak ada Pustaka Terbagi yang membutuhkan pembaruan"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Tidak ada yang cocok dengan “%s”"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Tidak ada Pustaka Terbagi yang tersedia"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Cari pustaka terbagi"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "PUSTAKA TERBAGI"
-#: src/app/main/ui/workspace/libraries.cljs:355
+#: src/app/main/ui/workspace/libraries.cljs:352
msgid "workspace.libraries.shared-library-btn"
msgstr "Hubungkan pustaka"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Beberapa tipografi"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Lepaskan tautan dari semua tipografi"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:326
+#: src/app/main/ui/workspace/libraries.cljs:323
msgid "workspace.libraries.unlink-library-btn"
msgstr "Putuskan pustaka"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Perbarui"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "lihat semua perubahan"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "PEMBARUAN"
@@ -4790,43 +4779,43 @@ msgstr "Buram seleksi"
msgid "workspace.options.blur-options.toggle-blur"
msgstr "Sakelar buram"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Latar belakang kanvas"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Klip konten"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Komponen"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "Anotasi"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "Salin"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "Buat anotasi"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Sunting anotasi"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Utama"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:416
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
msgid "workspace.options.component.swap"
msgstr "Ganti komponen"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:460
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
msgid "workspace.options.component.swap.empty"
msgstr "Belum ada aset dalam pustaka ini"
@@ -4874,7 +4863,7 @@ msgstr "Atas & Bawah"
msgid "workspace.options.design"
msgstr "Desain"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Ekspor"
@@ -4883,20 +4872,20 @@ msgstr "Ekspor"
msgid "workspace.options.export-multiple"
msgstr "Ekspor seleksi"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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:187
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188
msgid "workspace.options.export.add-export"
msgstr "Tambahkan ekspor"
-#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:199, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:234
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235
msgid "workspace.options.export.remove-export"
msgstr "Hapus ekspor"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Akhiran"
@@ -4904,7 +4893,7 @@ msgstr "Akhiran"
msgid "workspace.options.exporting-complete"
msgstr "Pengeksporan selesai"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Mengekspor…"
@@ -4928,6 +4917,10 @@ msgstr "Tambahkan warna isian"
msgid "workspace.options.fill.remove-fill"
msgstr "Hapus isian"
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:341
+msgid "workspace.options.fit-content"
+msgstr "Ubah ukuran papan untuk memuat konten"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182
msgid "workspace.options.flows.add-flow-start"
msgstr "Tambahkan awalan alur"
@@ -5066,7 +5059,7 @@ msgstr "Panduan"
msgid "workspace.options.guides.toggle-guide"
msgstr "Sakelar pemandu"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Tinggi"
@@ -5389,19 +5382,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:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Max.Height"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Max.Width"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Min.Height"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Min.Width"
@@ -5515,11 +5508,11 @@ msgstr "ruang di antara"
msgid "workspace.options.layout.top"
msgstr "Atas"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Lebih banyak warna"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Lebih banyak warna pustaka"
@@ -5564,7 +5557,7 @@ msgstr "Tutup radius tersendiri"
msgid "workspace.options.radius.show-single-corners"
msgstr "Buka radius tersendiri"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Terkini"
@@ -5572,11 +5565,11 @@ msgstr "Terkini"
msgid "workspace.options.retry"
msgstr "Coba lagi"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Rotasi"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Cari fon"
@@ -5584,7 +5577,7 @@ msgstr "Cari fon"
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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Warna terpilih"
@@ -5596,55 +5589,55 @@ msgstr "Isian seleksi"
msgid "workspace.options.selection-stroke"
msgstr "Sapuan seleksi"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:292
msgid "workspace.options.shadow-options.add-shadow"
msgstr "Tambahkan bayangan"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Buram"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Warna bayangan"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Bayangan jatuhan"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Bayangan masuk"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:180, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:318
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
msgid "workspace.options.shadow-options.remove-shadow"
msgstr "Hapus bayangan"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Tersebar"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Bayangan"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Bayangan kelompok"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Bayangan seleksi"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:176
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:144
msgid "workspace.options.shadow-options.toggle-shadow"
msgstr "Sakelar bayangan"
@@ -5652,7 +5645,7 @@ msgstr "Sakelar bayangan"
msgid "workspace.options.show-fill-on-export"
msgstr "Tampilkan dalam ekspor"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Tampilkan dalam mode penampil"
@@ -5660,7 +5653,7 @@ msgstr "Tampilkan dalam mode penampil"
msgid "workspace.options.size"
msgstr "Ukuran"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Prasetel ukuran"
@@ -5729,7 +5722,7 @@ msgstr "Segitiga"
msgid "workspace.options.stroke-color"
msgstr "Warna sapuan"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Lebar sapuan"
@@ -5801,11 +5794,11 @@ msgstr "Lebar otomatis"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Tetap"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Spasi Huruf"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Tinggi garis"
@@ -5869,15 +5862,15 @@ msgstr "Huruf Besar"
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:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Lebar"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "Sumbu X"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Sumbu Y"
@@ -6055,123 +6048,127 @@ msgstr "PLUGIN '%s' TERPASANG UNTUK PENGGUNA ANDA!"
msgid "workspace.plugins.try-out.try"
msgstr "COBA PLUGIN"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Tambahkan tata letak flex"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "Tambahkan tata letak kisi"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1004, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1030
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1013, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039
msgid "workspace.shape.menu.add-layout"
msgstr "Tambahkan tata letak"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "Kirim ke paling belakang"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Kirim ke belakang"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Salin"
-#: src/app/main/ui/workspace/context_menu.cljs:203
+#: src/app/main/ui/workspace/context_menu.cljs:204
msgid "workspace.shape.menu.copy-css"
msgstr "Salin sebagai CSS"
-#: src/app/main/ui/workspace/context_menu.cljs:205
+#: src/app/main/ui/workspace/context_menu.cljs:206
msgid "workspace.shape.menu.copy-css-nested"
msgstr "Salin sebagai CSS (lapisan bersarang)"
-#: src/app/main/ui/workspace/context_menu.cljs:188
+#: src/app/main/ui/workspace/context_menu.cljs:189
msgid "workspace.shape.menu.copy-link"
msgstr "Salin tautan ke papan klip"
-#: src/app/main/ui/workspace/context_menu.cljs:201
+#: src/app/main/ui/workspace/context_menu.cljs:202
msgid "workspace.shape.menu.copy-paste-as"
msgstr "Salin/Tempel sebagai ..."
-#: src/app/main/ui/workspace/context_menu.cljs:213
+#: src/app/main/ui/workspace/context_menu.cljs:214
msgid "workspace.shape.menu.copy-props"
msgstr "Salin properti"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/context_menu.cljs:211
+msgid "workspace.shape.menu.copy-text"
+msgstr "Salin sebagai teks"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "Buat anotasi"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Seleksi ke papan"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Buat komponen"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Buat beberapa komponen"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Potong"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Hapus"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Hapus awalan alur"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Lepaskan bagian"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Lepaskan bagian"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Perbedaan"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Gandakan"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Sunting"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Tidak termasuk"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Ratakan"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Balikkan secara horizontal"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Balikkan secara vertikal"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Awalan alur"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Bawa ke depan"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Bawa ke paling depan"
@@ -6180,107 +6177,107 @@ msgstr "Bawa ke paling depan"
msgid "workspace.shape.menu.go-main"
msgstr "Pergi ke berkas komponen utama"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Kelompok"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Sembunyikan"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Tampilkan/Sembunyikan Antarmuka"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Persimpangan"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Kunci"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Topeng"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Tempelkan"
-#: src/app/main/ui/workspace/context_menu.cljs:217
+#: src/app/main/ui/workspace/context_menu.cljs:218
msgid "workspace.shape.menu.paste-props"
msgstr "Tempel properti"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Jalur"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Hapus tata letak flex"
-#: src/app/main/ui/workspace/context_menu.cljs:531
+#: src/app/main/ui/workspace/context_menu.cljs:535
msgid "workspace.shape.menu.remove-grid"
msgstr "Hapus tata letak kisi"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1022
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1031
msgid "workspace.shape.menu.remove-layout"
msgstr "Hapus tata letak"
-#: src/app/main/ui/workspace/context_menu.cljs:312
+#: src/app/main/ui/workspace/context_menu.cljs:313
msgid "workspace.shape.menu.rename"
msgstr "Ubah nama"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Atur ulang timpaan"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Pulihkan komponen utama"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Pilih lapisan"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Tampilkan"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Tampilkan dalam panel aset"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Tampilkan komponen utama"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Hapus gambar kecil"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Tetapkan sebagai gambar kecil"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Transformasi ke jalur"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Lepaskan kelompok"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Serikat"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Buka kunci"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Buka topeng"
@@ -6289,7 +6286,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:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Perbarui komponen utama"
@@ -6301,11 +6298,11 @@ msgstr "Tutup bilah samping"
msgid "workspace.sidebar.expand"
msgstr "Buka bilah samping"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Riwayat"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Lapisan"
@@ -6341,7 +6338,7 @@ msgstr "Bentuk"
msgid "workspace.sidebar.layers.texts"
msgstr "Teks"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Atribut SVG Diimpor"
@@ -6353,7 +6350,7 @@ msgstr "Halaman"
msgid "workspace.sidebar.sitemap.add-page"
msgstr "Tambahkan halaman"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Peta Situs"
@@ -6371,43 +6368,43 @@ msgstr "%s tema aktif"
msgid "workspace.token.add set"
msgstr "Tambahkan set"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:341
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:136
+msgid "workspace.token.applied-to"
+msgstr "Diterapkan pada"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:391
msgid "workspace.token.back-to-themes"
msgstr "Kembali ke daftar tema"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:51
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:54
msgid "workspace.token.create-new-theme"
msgstr "Buat tema pertama Anda sekarang."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:191, src/app/main/ui/workspace/tokens/sidebar.cljs:218
+#: src/app/main/ui/workspace/tokens/sets.cljs:134, src/app/main/ui/workspace/tokens/sidebar.cljs:190
msgid "workspace.token.create-one"
msgstr "Buat baru."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159, src/app/main/ui/workspace/tokens/modals/themes.cljs:237
-msgid "workspace.token.create-theme-title"
-msgstr "Buat tema"
-
-#: src/app/main/ui/workspace/tokens/form.cljs:431
+#: src/app/main/ui/workspace/tokens/form.cljs:492
msgid "workspace.token.create-token"
msgstr "Buat token %s baru"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:228
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:278
msgid "workspace.token.delete"
msgstr "Hapus token"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:151
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159
msgid "workspace.token.delete-theme-title"
msgstr "Hapus tema"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:225
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:275
msgid "workspace.token.duplicate"
msgstr "Gandakan token"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:212
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:262
msgid "workspace.token.edit"
msgstr "Sunting token"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:333
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:383
msgid "workspace.token.edit-theme-title"
msgstr "Sunting tema"
@@ -6415,15 +6412,15 @@ msgstr "Sunting tema"
msgid "workspace.token.edit-themes"
msgstr "Sunting tema"
-#: src/app/main/ui/workspace/tokens/form.cljs:430
+#: src/app/main/ui/workspace/tokens/form.cljs:491
msgid "workspace.token.edit-token"
msgstr "Sunting token"
-#: src/app/main/ui/workspace/tokens/form.cljs:481
+#: src/app/main/ui/workspace/tokens/form.cljs:544
msgid "workspace.token.enter-token-description"
msgstr "Tambahkan deskripsi (opsional)"
-#: src/app/main/ui/workspace/tokens/form.cljs:437
+#: src/app/main/ui/workspace/tokens/form.cljs:498
msgid "workspace.token.enter-token-name"
msgstr "Masukkan nama token %s"
@@ -6432,86 +6429,108 @@ msgstr "Masukkan nama token %s"
msgid "workspace.token.grouping-set-alert"
msgstr "Pengelompokan Set Token belum didukung."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:56
-msgid "workspace.token.new-theme"
-msgstr "Tema baru"
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:196
+msgid "workspace.token.label.group"
+msgstr "Kelompok"
-#: src/app/main/ui/workspace/tokens/theme_select.cljs:88
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:206
+msgid "workspace.token.label.theme"
+msgstr "Tema"
+
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:89
msgid "workspace.token.no-active-theme"
msgstr "Tidak ada tema aktif"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:146
-msgid "workspace.token.no-sets"
-msgstr "Tidak ada set"
+#: src/app/main/ui/workspace/tokens/sets.cljs:110
+msgid "workspace.token.no-permisions-set"
+msgstr "Anda perlu menjadi penyunting untuk mengaktifkan / menonaktifkan set"
-#: src/app/main/ui/workspace/tokens/sets.cljs:401, src/app/main/ui/workspace/tokens/sets.cljs:405
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:199
+msgid "workspace.token.no-permission-themes"
+msgstr "Anda perlu menjadi penyunting untuk menggunakan tema"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:504
msgid "workspace.token.no-sets-create"
msgstr "Belum ada set yang ditetapkan. Buatlah terlebih dahulu."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:215, src/app/main/ui/workspace/tokens/sidebar.cljs:221
+#: src/app/main/ui/workspace/tokens/sets.cljs:131, src/app/main/ui/workspace/tokens/sets.cljs:137
msgid "workspace.token.no-sets-yet"
msgstr "Belum ada set."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:187
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:186
msgid "workspace.token.no-themes"
msgstr "Belum ada tema."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:47
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:50
msgid "workspace.token.no-themes-currently"
msgstr "Anda saat ini belum memiliki tema."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:137
-msgid "workspace.token.num-sets"
-msgstr "%s set"
-
-#: src/app/main/ui/workspace/tokens/token_pill.cljs:114
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:122
#, fuzzy
msgid "workspace.token.original-value"
-msgstr "Nilai asli: "
+msgstr "Nilai asli: %s"
-#: src/app/main/ui/workspace/tokens/form.cljs:205, src/app/main/ui/workspace/tokens/form.cljs:208, src/app/main/ui/workspace/tokens/token_pill.cljs:115
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:128
+msgid "workspace.token.ref-not-valid"
+msgstr "Referensi tidak valid atau tidak dalam set aktif mana pun"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:217, src/app/main/ui/workspace/tokens/form.cljs:221, src/app/main/ui/workspace/tokens/token_pill.cljs:123
#, fuzzy
msgid "workspace.token.resolved-value"
-msgstr "Nilai terselesaikan: "
+msgstr "Nilai terselesaikan: %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:203
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:240
msgid "workspace.token.save-theme"
msgstr "Simpan tema"
-#: src/app/main/ui/workspace/tokens/sets.cljs:200, src/app/main/ui/workspace/tokens/sets.cljs:305
+#: src/app/main/ui/workspace/tokens/sets.cljs:239, src/app/main/ui/workspace/tokens/sets.cljs:340
msgid "workspace.token.select-set"
msgstr "Pilih set."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:346
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:396
msgid "workspace.token.set-selection-theme"
msgstr "Tentukan set token apa yang digunakan sebagai bagian opsi tema ini:"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs
-#, unused
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:136
msgid "workspace.token.theme-name"
msgstr "Tema %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:43, src/app/main/ui/workspace/tokens/modals/themes.cljs:88
-msgid "workspace.token.themes"
-msgstr "Tema"
-
-#: src/app/main/ui/workspace/tokens/form.cljs:482
+#: src/app/main/ui/workspace/tokens/form.cljs:545
msgid "workspace.token.token-description"
msgstr "Deskripsi"
-#: src/app/main/ui/workspace/tokens/form.cljs:440
+#: src/app/main/ui/workspace/tokens/form.cljs:501
msgid "workspace.token.token-name"
msgstr "Nama"
-#: src/app/main/ui/workspace/tokens/form.cljs:464
+#: src/app/main/ui/workspace/tokens/form.cljs:59
+msgid "workspace.token.token-name-validation-error"
+msgstr ""
+" bukanlah nama token yang valid.\n"
+"Nama token seharusnya hanya berisi huruf dan angka dipisahkan oleh karakter "
+". dan tidak berawal dengan tanda $."
+
+#: src/app/main/ui/workspace/tokens/form.cljs:526
msgid "workspace.token.token-value"
msgstr "Nilai"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:348
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:322
+msgid "workspace.token.tokens-section-title"
+msgstr "TOKEN - %s"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:405
msgid "workspace.token.tools"
msgstr "Peralatan"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:131
+msgid "workspace.token.value-not-valid"
+msgstr "Nilai tidak valid"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:520
+msgid "workspace.token.warning-name-change"
+msgstr "Mengubah nama token ini akan merusak referensi nama lamanya."
+
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Aset"
@@ -6519,39 +6538,39 @@ msgstr "Aset"
msgid "workspace.toolbar.color-palette"
msgstr "Palet Warna (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Komentar (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Kurva (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Elips (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Papan (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Gambar (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Pindahkan (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Jalur (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:201, src/app/main/ui/workspace/top_toolbar.cljs:202
+#: src/app/main/ui/workspace/top_toolbar.cljs:210, src/app/main/ui/workspace/top_toolbar.cljs:211
msgid "workspace.toolbar.plugins"
msgstr "Plugin (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Persegi Panjang (%s)"
@@ -6560,7 +6579,7 @@ msgstr "Persegi Panjang (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Pintasan (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Teks (%s)"
@@ -6568,7 +6587,7 @@ msgstr "Teks (%s)"
msgid "workspace.toolbar.text-palette"
msgstr "Tipografi (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:220, src/app/main/ui/workspace/top_toolbar.cljs:221
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
msgid "workspace.toolbar.toggle-toolbar"
msgstr "Saklar bilah alat"
@@ -6726,19 +6745,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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Abaikan"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
msgid "workspace.updates.more-info"
msgstr "Info lebih lanjut"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
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:1226
msgid "workspace.updates.update"
msgstr "Perbarui"
@@ -6798,11 +6817,11 @@ msgstr "Apakah Anda ingin memulihkan versi ini?"
msgid "workspace.versions.snapshot-menu"
msgstr "Buka menu snapshot"
-#: src/app/main/ui/workspace/sidebar.cljs:284
+#: src/app/main/ui/workspace/sidebar.cljs:285
msgid "workspace.versions.tab.actions"
msgstr "Tindakan"
-#: src/app/main/ui/workspace/sidebar.cljs:281
+#: src/app/main/ui/workspace/sidebar.cljs:282
msgid "workspace.versions.tab.history"
msgstr "Riwayat"
diff --git a/frontend/translations/ig.po b/frontend/translations/ig.po
index fca27e2e5f..12d375c68d 100644
--- a/frontend/translations/ig.po
+++ b/frontend/translations/ig.po
@@ -28,13 +28,13 @@ msgstr "mebeta akara ozigosi"
msgid "auth.create-demo-profile"
msgstr "Chọọ nọọ ị nwa ya. ?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Ihe bụ ọrụ ozigosi, e jile ya rụọ ezigbo ọrụ, ọrụ ndị a ga-ekpochapụ site "
"na oge ruo na oge."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Chefuru akara mpibanye ?"
@@ -46,27 +46,27 @@ msgstr "Aha n'uju"
msgid "auth.login-here"
msgstr "Banye ebe a"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Banye"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "Obi Git"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "Ụlọ nchọcha Git"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Gọgụlụ"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "Mepe ID"
@@ -114,11 +114,11 @@ msgstr "Chefuru akara mpịbanye ?"
msgid "auth.recovery-submit"
msgstr "Gbanye akara mpịbanye."
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "E nweghị ebe Ntinye ihe ma kịta?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Mepee ebe Ntinye ihe"
@@ -131,7 +131,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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Ọnọdụ ọrụ"
@@ -150,7 +150,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:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "bipụta"
@@ -206,7 +206,7 @@ msgstr "Sọọsọ ndị otu"
msgid "common.share-link.title"
msgstr "Kee atụ gasị"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Ebiputaghị"
@@ -250,7 +250,7 @@ msgstr "Bido njem"
msgid "dasboard.walkthrough-hero.title"
msgstr "Aba ngagharị"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Mepụta ọdịmara ọhụrụ"
@@ -258,7 +258,7 @@ msgstr "Mepụta ọdịmara ọhụrụ"
msgid "dashboard.access-tokens.create.success"
msgstr "Mmepụtara ọdịmara nnweta gara nke ọma ."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Pịa mpi \"Nweta ọdịmara ọhụrụ \" inweta otu ."
@@ -282,23 +282,23 @@ msgstr "Mkpụrụ ụbọchị iri itoolu"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Ncha ncha"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Mebiri na%s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Na-emebi na%s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Enweghị ụbọchị mmebi"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Ọdịmara nkeonwe"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Ọdịmara nnweta nke onwe na-arụ ọrụ dị ka mgbamonwe mbanye anyị /akara "
@@ -321,7 +321,7 @@ msgstr "Tinye dị ka ọ a nkwekọrịta"
msgid "dashboard.change-email"
msgstr "Gbanwee ozi - n"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(sere)"
@@ -423,23 +423,23 @@ msgstr "Tinye ihe nnwe ọba ederede nkekọrịta n'ime ọ a ederede."
msgid "dashboard.export.title"
msgstr "Ederede mbupu gasị"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Mkpụrụ edemede na-efu efu"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Gbasaa ha niile"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Mkpụrụ edemede ndị ị bugoro ga-apụta ebe."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Bugo ha niile"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -454,7 +454,7 @@ msgstr "Ewuu! Anyị enweghị ike bubata ederede a"
msgid "dashboard.import.import-error"
msgstr "E nwere nsogbu na ibubata ederede . E bubataghị ederede ."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Ụfọdụ ederede nwere ihe ndị adabaghị na ya nke ewepugoro. ."
@@ -494,27 +494,27 @@ msgstr "Kpọta mmadụ"
msgid "dashboard.leave-team"
msgstr "Hapụ otu"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Ọba ederede gasị & ndebiri"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
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:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "E nwere nsogbu ibu aba ndebiri . E bubataghị ndebiri."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Ọba ederede gasị"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "Mbụbata ederede gị …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "mbubata mkpụrụ edemede gị …"
@@ -530,11 +530,11 @@ msgstr "Buga %s ederede gasị na"
msgid "dashboard.move-to-other-team"
msgstr "Gaa n'otu ọzọ"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Ederede ọhụrụ"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Ederede ọhụrụ"
@@ -542,7 +542,7 @@ msgstr "Ederede ọhụrụ"
msgid "dashboard.new-project"
msgstr "+ Nchọcha ọhụrụ"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Arụmarụ ọhụrụ"
@@ -574,7 +574,7 @@ msgstr "%s Ndị otu"
msgid "dashboard.open-in-new-tab"
msgstr "Mepe ederede na tabụ ọhụrụ"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Nhọrọ gasị"
@@ -619,7 +619,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "E wepula ederede gị nke ọma\""
@@ -706,7 +706,7 @@ msgstr "Ebe Ntinye ihe gị"
msgid "dashboard.your-email"
msgstr "Ozi-n"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Ite mkpịsị. gị"
@@ -718,11 +718,11 @@ msgstr "Okay"
msgid "ds.alert-title"
msgstr "Gee ntị"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Kagbuo"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Okay"
@@ -734,11 +734,11 @@ msgstr "Ọ doro gị anya ?"
msgid "errors.auth.unable-to-login"
msgstr "Ọ dị ka enyochaghị gị ma ọ bụ na oge agwụla ."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "E nweghị ike bugo %s mkpụrụ edide"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "E nweghị ike bugo %s mkpụrụ edide"
@@ -746,7 +746,7 @@ msgstr "E nweghị ike bugo %s mkpụrụ edide"
msgid "errors.cannot-upload"
msgstr "E nweghị ike ị ugo ederede ."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Your browser cannot do this operation"
@@ -758,7 +758,7 @@ msgstr "E jibuola ozi - n rụọ ọrụ"
msgid "errors.email-already-validated"
msgstr "Aha ozi-n adabala."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Ị nweghị ike iji aha ozi-n gị dị ka akara mpịbanye"
@@ -780,7 +780,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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Ihe ezighị ezi emela ."
@@ -793,8 +793,7 @@ msgstr "Agwụgwara adabaghị"
msgid "errors.invalid-email"
msgstr "Debanye aha ozi-n dabara adaba"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "Ozi-n nnabata ga-adabrịrị"
@@ -810,7 +809,7 @@ msgstr "kpọọ òkù adabaghị"
msgid "errors.invite-invalid.info"
msgstr "This invite might be canceled or may be expired."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "LDAP mbinye aka agaghị ."
@@ -832,7 +831,7 @@ msgstr ""
"Nchịkọta gị nwere ozi-n mechiri emechi (akụkọ ozi-n adịghị mma ma ọ bụ "
"nwere oké bịaghachiri )."
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "A gbachiri nchịkọta agbachi"
@@ -882,12 +881,11 @@ msgstr "Mmejọ na nkwado SSL ."
msgid "errors.webhooks.timeout"
msgstr "Oge ezuola"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "Ozi-na ma ọ bụ akara mpịbanye adịghị mma ."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Akara mpịbanye ochie adịghị mma"
@@ -931,11 +929,11 @@ msgstr "Gaa na Twita"
msgid "feedback.twitter-subtitle1"
msgstr "Ebe inyere gị aka n'ajụjụ nkà gị ."
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Mmehie apụtala"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Inyogo"
@@ -943,31 +941,31 @@ msgstr "Inyogo"
msgid "inspect.attributes.blur.value"
msgstr "Uru"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Wunye"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Butuo onyinyo nsina"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Ogo"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Uhie"
@@ -1001,15 +999,15 @@ msgstr "Elu"
msgid "inspect.attributes.layout.width"
msgstr "Uhie"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Oninyo"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Nhazi na ọnọdụ"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Akara"
@@ -1046,117 +1044,117 @@ msgstr "Akpụrụka"
msgid "inspect.attributes.stroke.width"
msgstr "Uhie"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Akara nkụpụta"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Ezinụlọ mkpụrụ edide"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Nhazi mkpụrụ edide"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Ndesa mkpụrụ edemede"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Ogo akara"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Nkwazi ederede"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Ncha ncha"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Kụọgafee"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "N'okpuru"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Mgbanwe ederede"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "None"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Mkpụrụ edemede isiokwu"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Mkpụrụ edemede nnukwu"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr ""
"Ị chọọ ị ma ihe ndị ọzọ maka nnyocha esereese, gaa n'ebe enyemaka ite "
"mkpịsị r"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Akara"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Okirikiri"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Ndịna"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Nrọgọ"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Ogwe."
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Otu"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Onyinyo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "kpuchie"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s a họrọ"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Ụzọ"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Rekụtagụlụ"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Ederede"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Ozi"
@@ -1176,7 +1174,7 @@ msgstr "Nweta ọdịmara gasị"
msgid "labels.active"
msgstr "Gara gara"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Tinye mkpụrụ edide a haziri ahazi"
@@ -1188,7 +1186,7 @@ msgstr "Ọchịkwa"
msgid "labels.adobe-xd"
msgstr "Ngwa nrụkọrịta ọrụ Adobe"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Ha niile"
@@ -1204,7 +1202,7 @@ msgstr "Azụ"
msgid "labels.bad-gateway.main-message"
msgstr "Ajọ ụzọ mbanye"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Kagbuo"
@@ -1212,15 +1210,15 @@ msgstr "Kagbuo"
msgid "labels.canva"
msgstr "Kanva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Megbuo"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Okwu gasị"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Ogbe"
@@ -1228,7 +1226,7 @@ msgstr "Ogbe"
msgid "labels.confirm-password"
msgstr "Nabata akara mpịbanye"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Ga n'ihu"
@@ -1244,7 +1242,7 @@ msgstr "I Nwere Ike ịganihu"
msgid "labels.copy-invitation-link"
msgstr "Dọrọ njikọ"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Meputa"
@@ -1256,15 +1254,15 @@ msgstr "Mepee otu ọhụrụ"
msgid "labels.custom-fonts"
msgstr "mkpụrụ edide a haziri"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Hichaa"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Hichaa okwu"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Hichapụ eri"
@@ -1280,11 +1278,11 @@ msgstr "Hichapụ ederede %s"
msgid "labels.developer"
msgstr "Onye nrụpụta"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Ndesita"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Dezie"
@@ -1312,7 +1310,7 @@ msgstr "Zigara nzaghachi"
msgid "labels.figma"
msgstr "Ihe onyonyo"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Ezinụlọ mkpụrụ edide"
@@ -1320,11 +1318,11 @@ msgstr "Ezinụlọ mkpụrụ edide"
msgid "labels.font-providers"
msgstr "Ndị na-enye mkpụrụ edide"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Ụdịdị gasị"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Mkpụrụ edide gasị"
@@ -1336,11 +1334,11 @@ msgstr "Onye malitere /VP"
msgid "labels.freelancer"
msgstr "Onye nwere onwe ya"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Ọ a Github"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Nye nzaghachi"
@@ -1348,11 +1346,11 @@ msgstr "Nye nzaghachi"
msgid "labels.go-back"
msgstr "Gaa azụ"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Ebe enyemaka"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Zoo nkwupụta e kpebiri"
@@ -1360,7 +1358,7 @@ msgstr "Zoo nkwupụta e kpebiri"
msgid "labels.inactive"
msgstr "Arụghị ọrụ"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Mkpụrụ edide gasị ewubere"
@@ -1384,7 +1382,7 @@ msgstr "Akwụkwọ ịkpọ ọkụ gasị"
msgid "labels.language"
msgstr "Asụsụ"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Ọba ederede na Ndebiri gasị"
@@ -1392,7 +1390,7 @@ msgstr "Ọba ederede na Ndebiri gasị"
msgid "labels.log-or-sign"
msgstr "Banye ma ọ bụ debanye"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Pụọ"
@@ -1412,11 +1410,11 @@ msgstr "Ndị otu"
msgid "labels.new-password"
msgstr "Akara mpịbanye ọhụrụ"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Ọzọ"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "E jidere unu niile! Ngosi nkwupụta ọhụrụ ga-apụta ebe a ."
@@ -1479,7 +1477,7 @@ msgstr "Nchịkọta"
msgid "labels.projects"
msgstr "Ọrụ gasị"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Wepụta ndetu"
@@ -1497,7 +1495,7 @@ msgstr "Wepu"
msgid "labels.remove-member"
msgstr "Wepụ onye otu"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Nyegharịa aha"
@@ -1513,11 +1511,11 @@ msgstr "Nwagharịa"
msgid "labels.role"
msgstr "Ọrụ"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Dokwa"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Chọọ mkpụrụ edide"
@@ -1541,15 +1539,15 @@ msgstr "Ntọala"
msgid "labels.shared-libraries"
msgstr "Ọba ederede"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Gosi nkwupụta niile"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Gosi ndepụta nkwupụta gasị"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Gosi nanị nkwupụta gị gasị"
@@ -1569,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:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Nkuzi"
@@ -1585,15 +1583,15 @@ msgstr "Hazigharịa"
msgid "labels.update-team"
msgstr "Hazigharịa otu"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Bugo"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Bugo ederede gasị ahaziri"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Na-ebugo…"
@@ -1609,7 +1607,7 @@ msgstr "Ndị nkiri"
msgid "labels.webhooks"
msgstr "Nko-ududọ"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Dee nkwupụta ọhụrụ"
@@ -1617,7 +1615,7 @@ msgstr "Dee nkwupụta ọhụrụ"
msgid "labels.you"
msgstr "(gị)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Akara mbata gị"
@@ -1662,7 +1660,7 @@ msgstr "Ụbọchị mmebi"
msgid "modals.create-access-token.name.label"
msgstr "Aha"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Create token"
@@ -1686,11 +1684,11 @@ msgstr "Isi ozi URL"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://ọmụmaaụ.com/ozi anabara"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Hichapụ ọdịmara"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Hichapụ ọdịmara"
@@ -1712,23 +1710,23 @@ msgstr ""
msgid "modals.delete-account.title"
msgstr "Ọ kara gị obi na ị chọrọ ị hichapụ ebe ntinye ihe gị?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Hichapụ mkparịtaụka"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr "Ọ kara gị obi na ị chọrọ ị hichapụ mkparịtaụka a?"
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Hichaa mkparịtaụka"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
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:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Hichapụ nkọwa"
@@ -1748,15 +1746,15 @@ msgstr "Na-ehichapụ ederede"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Na-ehichapụ ederede %s"
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Na-ehichapụ mkpụrụ edide"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
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:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Hichapụ ihu akwụkwọ"
@@ -1900,15 +1898,15 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "Onye nwe otu ọhụrụ"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Biputa"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
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:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Biputa ọba ederede efu"
@@ -1945,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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Hazigharịa"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Kagbuo"
@@ -1997,29 +1995,29 @@ msgstr "Amụmamụ onyonyo"
msgid "onboarding-v2.before-start.title"
msgstr "Tupu i bido"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Debanye aha n'akụkụ ozi ite mkpịsị iji nọrọ gam gam na ngwa ahịa aaga n'ihu "
"mwulite na akụkọ ụwa."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr ""
"Zitere m akụkọ banyere ite mkpịsị (ozi edemonye gasị, Nkụzi ihe onyonyo, "
"nkirigarị...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Anyị na-eche banyere nzochi onwe, ebe a inwere ike ịgụ..... anyị "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Anyị ga e zitere ozi n bara uru sọọsọ . Ị nwere ike idepu aha oge ọ bụla "
"site na njikọ ndepu aha n'akwụkwọ ozi gasị anyị ọ bụla ."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr ""
"Zitere m nhazigharị ngwa ahịa (a gwara ọhụrụ gasị , ihe ndị ewepụta gasịrị "
@@ -2072,11 +2070,11 @@ msgstr "kpọta tinye ọrụ :"
msgid "onboarding.newsletter.accept"
msgstr "Eee, debanye aha"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr "E zigala arịrịọ ndenye aha gị , anyị ga-ezi tara gị ozi - n iji nabata ya"
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Chọrọ inweta ozi ite mkpịsị ?"
@@ -2179,7 +2177,7 @@ msgstr "Dozie akaekpe"
msgid "viewer.breaking-change.message"
msgstr "Ndo"
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Kachapụ"
@@ -2187,11 +2185,11 @@ msgstr "Kachapụ"
msgid "workspace.focus.focus-mode"
msgstr "Umezi nlekwasa anya"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Gbanye nlekwasa anya"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Mee ọtụtụ akọrọngwa ga"
@@ -2199,6 +2197,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:1220
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 7a52a8908d..bff221ba91 100644
--- a/frontend/translations/it.po
+++ b/frontend/translations/it.po
@@ -1,15 +1,15 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2025-01-29 22:23+0000\n"
+"PO-Revision-Date: 2025-03-20 13:42+0000\n"
"Last-Translator: Anonymous \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.10-dev\n"
+"X-Generator: Weblate 5.11-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
@@ -38,13 +38,13 @@ msgstr "Creare un account demo"
msgid "auth.create-demo-profile"
msgstr "Vuoi solamente provare?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Questo è un servizio di prova, non utilizzare per il lavoro reale, i "
"progetti verranno eliminati periodicamente."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Hai dimenticato la password?"
@@ -52,41 +52,41 @@ msgstr "Hai dimenticato la password?"
msgid "auth.fullname"
msgstr "Nome completo"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "Accedi al mio account"
#: src/app/main/ui/auth/register.cljs:137, src/app/main/ui/static.cljs:158, src/app/main/ui/viewer/login.cljs:101
msgid "auth.login-here"
-msgstr "Accedere qui"
+msgstr "Accedi qui."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Accedi"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr ""
"Penpot è lo strumento di design open-source gratuito per la collaborazione "
"nel Design e Sviluppo"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -110,7 +110,7 @@ msgstr "Il link per il recupero password è stato inviato alla tua e-mail."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Unito al team con successo"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Password"
@@ -138,7 +138,7 @@ msgstr "Hai dimenticato la password?"
msgid "auth.recovery-submit"
msgstr "Cambia la tua password"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Non hai ancora un account?"
@@ -152,7 +152,7 @@ msgstr ""
msgid "auth.register-account-title"
msgstr "Il tuo nome"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Crea un account"
@@ -176,7 +176,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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Condizioni di servizio"
@@ -190,7 +190,7 @@ msgstr ""
msgid "auth.verification-email-sent"
msgstr "Abbiamo inviato l'e-mail di verifica a"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "Email di lavoro"
@@ -199,11 +199,11 @@ msgstr "Email di lavoro"
msgid "branding-illustrations-marketing-pieces"
msgstr "…branding, illustrazione, materiali di marketing, etc."
-#: src/app/main/ui/comments.cljs:504
+#: src/app/main/ui/comments.cljs:532
msgid "comments.mentions.not-found"
msgstr "Nessuna persona trovata per @%s"
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Pubblica"
@@ -275,7 +275,7 @@ msgstr "Condividi i prototipi"
msgid "common.share-link.view-all"
msgstr "Seleziona tutto"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Rimuovi pubblicazione"
@@ -327,7 +327,7 @@ msgstr "Spiegazione dell'interfaccia passo per passo"
msgid "dashboard.access-tokens.copied-success"
msgstr "Token copiato"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Genera un nuovo token"
@@ -335,11 +335,11 @@ msgstr "Genera un nuovo token"
msgid "dashboard.access-tokens.create.success"
msgstr "Token di accesso creato con successo."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Premi il bottone \"Genera un nuovo token\" per generarne uno."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "Al momento non hai token."
@@ -363,23 +363,23 @@ msgstr "90 giorni"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Mai"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Scaduto il %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Scade il %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Nessuna data di scadenza"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Token di accesso personale"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"I token di accesso personali funzionano come alternativa al nostro sistema "
@@ -394,15 +394,19 @@ msgstr "Il token scadrà il %s"
msgid "dashboard.access-tokens.token-will-not-expire"
msgstr "Il token non ha una data di scadenza"
+#: src/app/main/ui/dashboard/placeholder.cljs:35
+msgid "dashboard.add-file"
+msgstr "Aggiungi file"
+
#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612
msgid "dashboard.add-shared"
-msgstr "Aggiungi una libreria condivisa"
+msgstr "Aggiungi come libreria condivisa"
#: src/app/main/ui/settings/profile.cljs:75
msgid "dashboard.change-email"
msgstr "Cambia indirizzo e-mail"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(copia)"
@@ -438,23 +442,23 @@ msgstr "Duplica"
msgid "dashboard.duplicate-multi"
msgstr "Duplica %s file"
-#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:285
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
msgid "dashboard.empty-placeholder-drafts-subtitle"
msgstr "Quando un membro del progetto crea una bozza, verrà mostrata qui."
-#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:280
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
msgid "dashboard.empty-placeholder-drafts-title"
msgstr "Nessuna bozza presente."
-#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:286
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
msgid "dashboard.empty-placeholder-files-subtitle"
msgstr "Quando un membro del progetto crea un file, verrà mostrato qui."
-#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:281
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
msgid "dashboard.empty-placeholder-files-title"
msgstr "Nessun file presente."
-#: src/app/main/ui/dashboard/placeholder.cljs:40
+#: src/app/main/ui/dashboard/placeholder.cljs:77
#, markdown
msgid "dashboard.empty-placeholder-libraries"
msgstr ""
@@ -470,11 +474,11 @@ msgstr ""
"tuoi file o ad aggiungerle dal nostro [Librerie e "
"modelli](https://penpot.app/libraries-templates)."
-#: src/app/main/ui/dashboard/placeholder.cljs:36
+#: src/app/main/ui/dashboard/placeholder.cljs:73
msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role"
msgstr "Le librerie aggiunte al progetto verrano mostrate qui."
-#: src/app/main/ui/dashboard/placeholder.cljs:33
+#: src/app/main/ui/dashboard/placeholder.cljs:70
msgid "dashboard.empty-placeholder-libraries-title"
msgstr "Nessuna libreria presente."
@@ -570,70 +574,71 @@ msgstr "Includi gli asset delle librerie condivise nelle librerie del file"
msgid "dashboard.export.title"
msgstr "Esporta i file"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
-msgstr "Font mancante"
+msgstr "Carattere mancante"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Chiudi tutto"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
-msgstr "I font personalizzati che carichi appariranno qui."
+msgstr "I caratteri personalizzati che carichi appariranno qui."
-#: src/app/main/ui/dashboard/fonts.cljs:448
+#: src/app/main/ui/dashboard/fonts.cljs:450
msgid "dashboard.fonts.empty-placeholder-viewer"
-msgstr "Nessun font personalizzato presente."
+msgstr "Nessun carattere personalizzato presente."
-#: src/app/main/ui/dashboard/fonts.cljs:449
+#: src/app/main/ui/dashboard/fonts.cljs:451
msgid "dashboard.fonts.empty-placeholder-viewer-sub"
msgstr ""
-"Quando un membro del progetto carica un font personalizzato, verrà mostrato "
-"qui."
+"Quando un membro del progetto carica un carattere personalizzato, verrà "
+"mostrato qui."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
-msgstr[0] "1 font aggiunto"
-msgstr[1] "%s font aggiunti"
+msgstr[0] "1 carattere aggiunto"
+msgstr[1] "%s caratteri aggiunti"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
-"Qualsiasi font web caricato qui verrà aggiunto alla lista dei font family "
-"disponibile nelle impostazioni testo dei file di questo team. I font che "
-"arrecano lo stesso nome di font family verranno raggruppati come un "
-"**singolo font family**. È possibile caricare font con i seguenti "
-"formati:**TTF, OTF e WOFF**(uno solo di questi è necessario)."
+"Qualsiasi carattere web caricato qui verrà aggiunto alla lista delle "
+"famiglie di caratteri disponibili nelle impostazioni testo dei file di "
+"questo team. I caratteri che arrecano lo stesso nome di famiglia di "
+"carattere verranno raggruppati come una **singola famiglia di caratteri**. "
+"È possibile caricare caratteri con i seguenti formati: **TTF, OTF e WOFF** "
+"(uno solo di questi è necessario)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
-"È consigliabile caricare unicamente font di cui si è proprietari o dei "
+"È consigliabile caricare unicamente caratteri di cui si è proprietari o dei "
"quali si possiede la licenza d'uso in Penpot. Ulteriori informazioni sui "
"diritti dei contenuti sono disponibili nella sezione [Termini di Servizio "
-"di Penpot](%s). Potresti anche voler "
-"approfondire le [licenze per i font](https://www.typography.com/faq)."
+"di Penpot](https://penpot.app/terms.html). Potresti anche voler "
+"approfondire le [licenze dei caratteri](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Carica tutto"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
-"Abbiamo rilevato un possibile problema nei tuoi font relativo alle metriche "
-"verticali per diversi sistemi operativi. Per verificarlo, puoi utilizzare "
-"servizi per le metriche verticali dei font come "
+"Abbiamo rilevato un possibile problema nei tuoi caratteri relativo alle "
+"metriche verticali per diversi sistemi operativi. Per verificarlo, puoi "
+"utilizzare servizi per le metriche verticali dei caratteri come "
"[questo](https://vertical-metrics.netlify.app/). Inoltre, ti consigliamo di "
"utilizzare [Transfonter](https://transfonter.org/) per generare webfont e "
"correggere errori. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Importa file Penpot"
@@ -645,11 +650,11 @@ msgstr "Ops! Non possiamo importare questo file"
msgid "dashboard.import.analyze-error.components-v2"
msgstr "File con componenti V2 attivati ma questo team non li supporta ancora."
-#: src/app/main/ui/dashboard.cljs:248
+#: src/app/main/ui/dashboard.cljs:247
msgid "dashboard.import.bad-url"
msgstr "Importazione non riuscita. L'URL del modello non è corretto"
-#: src/app/main/ui/dashboard.cljs:242
+#: src/app/main/ui/dashboard.cljs:241
msgid "dashboard.import.error"
msgstr "Importazione non riuscita. Riprova"
@@ -659,17 +664,17 @@ msgstr ""
"C'è stato un problema con l'importazione del file. Il file non è stato "
"importato."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgid_plural "dashboard.import.import-message"
msgstr[0] "1 file è stato importato con successo."
msgstr[1] "%s file sono stati importati con successo."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Alcuni file contenenti oggetti non validi sono stati rimossi."
-#: src/app/main/ui/dashboard.cljs:249
+#: src/app/main/ui/dashboard.cljs:248
msgid "dashboard.import.no-perms"
msgstr "Non hai i permessi per importare in questo team"
@@ -709,31 +714,31 @@ msgstr "Invita nel team"
msgid "dashboard.leave-team"
msgstr "Abbandona il team"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Librerie e modelli"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "Esplorane di più e scopri come contribuire"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr ""
"Si è verificato un problema nell'importazione del modello. Il modello non è "
"stato importato."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Librerie condivise"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "caricamento dei file …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
-msgstr "caricamento dei font …"
+msgstr "caricamento dei caratteri…"
#: src/app/main/ui/dashboard/file_menu.cljs:291, src/app/main/ui/dashboard/project_menu.cljs:101
msgid "dashboard.move-to"
@@ -747,11 +752,11 @@ msgstr "Sposta %s file in"
msgid "dashboard.move-to-other-team"
msgstr "Sposta in un altro team"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Nuovo File"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Nuovo File"
@@ -759,7 +764,7 @@ msgstr "Nuovo File"
msgid "dashboard.new-project"
msgstr "+ Nuovo progetto"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Nuovo progetto"
@@ -771,7 +776,7 @@ msgstr "Nessuna corrispondenza trovata per \"%s\""
msgid "dashboard.no-projects-placeholder"
msgstr "I progetti appuntati appariranno qui"
-#: src/app/main/ui/dashboard/comments.cljs:84
+#: src/app/main/ui/dashboard/comments.cljs:90
msgid "dashboard.notifications"
msgstr "Notifiche"
@@ -783,7 +788,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/ui/settings/notifications.cljs:42
+#: src/app/main/data/profile.cljs:260
msgid "dashboard.notifications.notifications-saved"
msgstr "Impostazioni di notifica aggiornate"
@@ -803,7 +808,7 @@ msgstr "%s membri"
msgid "dashboard.open-in-new-tab"
msgstr "Apri file in una nuova scheda"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Opzioni"
@@ -831,15 +836,15 @@ msgstr "Ora sei un visualizzatore di questo team."
msgid "dashboard.pin-unpin"
msgstr "Appunta/Rimuovi"
-#: src/app/main/ui/dashboard.cljs:212
+#: src/app/main/ui/dashboard.cljs:208
msgid "dashboard.plugins.bad-url"
msgstr "L'URL del plugin non è corretto"
-#: src/app/main/ui/dashboard.cljs:210
+#: src/app/main/ui/dashboard.cljs:206
msgid "dashboard.plugins.parse-error"
msgstr "Impossibile analizzare il manifesto del plugin"
-#: src/app/main/ui/dashboard.cljs:173
+#: src/app/main/ui/dashboard.cljs:169
msgid "dashboard.plugins.try-plugin"
msgstr "Prova il plugin: "
@@ -854,7 +859,7 @@ msgstr "Desideri eliminare il tuo account?"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
#, unused
msgid "dashboard.remove-shared"
-msgstr "Elimina come libreria condivisa"
+msgstr "Rimuovi come libreria condivisa"
#: src/app/main/data/common.cljs:242
msgid "dashboard.removed-from-team"
@@ -880,67 +885,67 @@ msgstr "Seleziona la lingua per l'interfaccia utente"
msgid "dashboard.select-ui-theme"
msgstr "Seleziona un tema"
-#: src/app/main/ui/settings/notifications.cljs:76
+#: src/app/main/ui/settings/notifications.cljs:57
msgid "dashboard.settings.notifications.dashboard-comments.all"
msgstr "Tutti i commenti, menzioni e risposte"
-#: src/app/main/ui/settings/notifications.cljs:78
+#: src/app/main/ui/settings/notifications.cljs:59
msgid "dashboard.settings.notifications.dashboard-comments.none"
msgstr "Nessuna"
-#: src/app/main/ui/settings/notifications.cljs:77
+#: src/app/main/ui/settings/notifications.cljs:58
msgid "dashboard.settings.notifications.dashboard-comments.partial"
msgstr "Solo menzioni e risposte"
-#: src/app/main/ui/settings/notifications.cljs:73
+#: src/app/main/ui/settings/notifications.cljs:54
msgid "dashboard.settings.notifications.dashboard-comments.title"
msgstr "Commenti dei file"
-#: src/app/main/ui/settings/notifications.cljs:72
+#: src/app/main/ui/settings/notifications.cljs:53
msgid "dashboard.settings.notifications.dashboard.title"
msgstr "Notifiche nel pannello di controllo"
-#: src/app/main/ui/settings/notifications.cljs:86
+#: src/app/main/ui/settings/notifications.cljs:67
msgid "dashboard.settings.notifications.email-comments.all"
msgstr "Tutti i commenti, menzioni e risposte"
-#: src/app/main/ui/settings/notifications.cljs:88
+#: src/app/main/ui/settings/notifications.cljs:69
msgid "dashboard.settings.notifications.email-comments.none"
msgstr "Nessuna"
-#: src/app/main/ui/settings/notifications.cljs:87
+#: src/app/main/ui/settings/notifications.cljs:68
msgid "dashboard.settings.notifications.email-comments.partial"
msgstr "Solo menzioni e risposte"
-#: src/app/main/ui/settings/notifications.cljs:83
+#: src/app/main/ui/settings/notifications.cljs:64
msgid "dashboard.settings.notifications.email-comments.title"
msgstr "Commenti dei file"
-#: src/app/main/ui/settings/notifications.cljs:95
+#: src/app/main/ui/settings/notifications.cljs:76
msgid "dashboard.settings.notifications.email-invites.all"
msgstr "Tutti i tipi di inviti e richieste"
-#: src/app/main/ui/settings/notifications.cljs:98
+#: src/app/main/ui/settings/notifications.cljs:79
msgid "dashboard.settings.notifications.email-invites.none"
msgstr "Nessuna"
-#: src/app/main/ui/settings/notifications.cljs:92
+#: src/app/main/ui/settings/notifications.cljs:73
msgid "dashboard.settings.notifications.email-invites.title"
msgstr "Inviti e richieste"
-#: src/app/main/ui/settings/notifications.cljs:82
+#: src/app/main/ui/settings/notifications.cljs:63
msgid "dashboard.settings.notifications.email.title"
msgstr "Notifiche email"
-#: src/app/main/ui/settings/notifications.cljs:103
+#: src/app/main/ui/settings/notifications.cljs:84
msgid "dashboard.settings.notifications.submit"
msgstr "Aggiorna impostazioni"
-#: src/app/main/ui/settings/notifications.cljs:71
+#: src/app/main/ui/settings/notifications.cljs:52
msgid "dashboard.settings.notifications.title"
msgstr "Notifiche"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Mostra tutti i file"
@@ -968,7 +973,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Il tuo file è stato spostato con successo"
@@ -1012,15 +1017,15 @@ msgstr "Annulla pubblicazione libreria"
msgid "dashboard.update-settings"
msgstr "Aggiorna le impostazioni"
-#: src/app/main/ui/dashboard/sidebar.cljs:969
+#: src/app/main/ui/dashboard/sidebar.cljs:970
msgid "dashboard.upgrade-plan.no-limits"
msgstr "Nessun limite alla creatività"
-#: src/app/main/ui/dashboard/sidebar.cljs:968
+#: src/app/main/ui/dashboard/sidebar.cljs:969
msgid "dashboard.upgrade-plan.penpot-free"
msgstr "Penpot Gratis"
-#: src/app/main/ui/dashboard/sidebar.cljs:971
+#: src/app/main/ui/dashboard/sidebar.cljs:972
msgid "dashboard.upgrade-plan.power-up"
msgstr "Migliora"
@@ -1079,7 +1084,7 @@ msgstr "E-mail"
msgid "dashboard.your-name"
msgstr "Il tuo nome"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Il tuo Penpot"
@@ -1099,11 +1104,11 @@ msgstr "Componenti da aggiornare:"
msgid "ds.confirm-allow"
msgstr "Acconsenti"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Annulla"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Ok"
@@ -1115,7 +1120,7 @@ msgstr "Sei sicuro?"
msgid "errors.auth-provider-not-allowed"
msgstr "Provider di autenticazione non consentito per questo profilo"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Provider di autenticazione non configurato."
@@ -1123,19 +1128,19 @@ msgstr "Provider di autenticazione non configurato."
msgid "errors.auth.unable-to-login"
msgstr "Sembra che tu non ti sia autenticato o che la sessione sia scaduta."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
-msgstr "Il font %s non può essere caricato"
+msgstr "Il carattere %s non può essere caricato"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
-msgstr "I font %s non posso essere caricati"
+msgstr "I caratteri %s non posso essere caricati"
#: src/app/main/data/workspace/media.cljs:198
msgid "errors.cannot-upload"
msgstr "Impossible caricare il file multimediale."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Il tuo browser non può effettuare questa operazione"
@@ -1147,7 +1152,7 @@ msgstr "Indirizzo e-mail già utilizzato"
msgid "errors.email-already-validated"
msgstr "Indirizzo e-mail già convalidato."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Non è possibile utilizzare il tuo indirizzo e-mail come password"
@@ -1194,7 +1199,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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Si è verificato un problema."
@@ -1207,8 +1212,7 @@ msgstr "Colore non valido"
msgid "errors.invalid-email"
msgstr "Inserisci una email valida"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "L'indirizzo e-mail di conferma deve corrispondere"
@@ -1224,7 +1228,7 @@ msgstr "Invito non valido"
msgid "errors.invite-invalid.info"
msgstr "Questo è invito può essere stato revocato o può essere scaduto."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "Autenticazione LDAP disabilitata."
@@ -1276,7 +1280,7 @@ msgstr "La password deve contenere almeno 8 caratteri"
msgid "errors.paste-data-validation"
msgstr "Dati non validi negli appunti"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Questo profilo è bloccato"
@@ -1354,12 +1358,11 @@ msgstr "Errore inaspettato durante la validazione"
msgid "errors.webhooks.unexpected-status"
msgstr "Stato inaspettato %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "Il nome utente o la password sembrano essere sbagliati."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "La password precedente non è corretta"
@@ -1408,11 +1411,11 @@ msgstr "Siamo qui per aiutarti con le tue domande tecniche."
msgid "feedback.twitter-title"
msgstr "Account di supporto X"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Si è verificato un errore"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Sfocatura"
@@ -1420,31 +1423,31 @@ msgstr "Sfocatura"
msgid "inspect.attributes.blur.value"
msgstr "Valore"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Riempimento"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Scarica l'immagine sorgente"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Altezza"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Larghezza"
@@ -1483,15 +1486,15 @@ msgstr "In alto"
msgid "inspect.attributes.layout.width"
msgstr "Larghezza"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Ombra"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Dimensione e posizione"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Contorno"
@@ -1528,143 +1531,143 @@ msgstr "Solido"
msgid "inspect.attributes.stroke.width"
msgstr "Larghezza"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Tipografia"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
-msgstr "Font Family"
+msgstr "Famiglia di caratteri"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Dimensione del carattere"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Stile del carattere"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Peso del carattere"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Spaziatura delle lettere"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Interlinea"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Decorazioni testo"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Nessuno"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Barrato"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Sottolineato"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Trasforma Testo"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Minuscolo"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Nessuno"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Prime lettere maiuscole"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "Annulla impostazione"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Maiuscolo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr ""
"Per ulteriori informazioni su l'ispezione, visita il centro di supporto di "
"Penpot"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Maggiori informazioni sull'ispezione"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr ""
"Seleziona una forma, una tavola da disegno o un gruppo per ispezionare le "
"loro proprietà e il loro codice"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Codice"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Cerchio"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Componente"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Curva"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Tavola da disegno"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Gruppo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Immagine"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Maschera"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s selezionati"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Tracciato"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Rettangolo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Testo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Informazione"
@@ -1684,15 +1687,15 @@ msgstr "Token di accesso"
msgid "labels.active"
msgstr "Attivo"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.add"
msgstr "Aggiungi"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Aggiungi un carattere personalizzato"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.adding"
msgstr "Aggiungendo…"
@@ -1704,7 +1707,7 @@ msgstr "Amministratore"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Tutti"
@@ -1726,7 +1729,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Gateway non corretto"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Annulla"
@@ -1734,27 +1737,27 @@ msgstr "Annulla"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Chiudi"
-#: src/app/main/ui/workspace/tokens/sets.cljs:180
+#: src/app/main/ui/workspace/tokens/sets.cljs:219
msgid "labels.collapse"
msgstr "Comprimi"
-#: src/app/main/ui/comments.cljs:812
+#: src/app/main/ui/comments.cljs:881
msgid "labels.comment"
msgstr "Commenta"
-#: src/app/main/ui/comments.cljs:816
+#: src/app/main/ui/comments.cljs:885
msgid "labels.comment.mark-as-solved"
msgstr "Segna come risolto"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Commenti"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Community"
@@ -1762,7 +1765,7 @@ msgstr "Community"
msgid "labels.confirm-password"
msgstr "Conferma la password"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Continua"
@@ -1782,7 +1785,7 @@ msgstr "Copia link"
msgid "labels.copyright"
msgstr "Kaleidos @2024"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Crea"
@@ -1796,21 +1799,21 @@ msgstr "Inserisci il nome del nuovo team"
#, unused
msgid "labels.custom-fonts"
-msgstr "Font personalizzati"
+msgstr "Caratteri personalizzati"
#: src/app/main/ui/settings/sidebar.cljs:80
msgid "labels.dashboard"
msgstr "Pannello di controllo"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Elimina"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Elimina il commento"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Elimina il thread"
@@ -1830,15 +1833,15 @@ msgstr "Sviluppo"
msgid "labels.director"
msgstr "Direttore"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "Scarta"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Bozze"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Modifica"
@@ -1858,7 +1861,7 @@ msgstr "Evento"
msgid "labels.expired-invitation"
msgstr "Scaduto"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Esporta"
@@ -1874,19 +1877,19 @@ msgstr "Feedback inviato"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
-msgstr "Font Family"
+msgstr "Famiglia di caratteri"
#, unused
msgid "labels.font-providers"
-msgstr "Fornitori di font"
+msgstr "Fornitori di caratteri"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Stili"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Font"
@@ -1898,11 +1901,11 @@ msgstr "Amministratore delegato e Fondatore"
msgid "labels.freelancer"
msgstr "Libero professionista"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Repository Github"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Dai la tua opinione"
@@ -1914,15 +1917,15 @@ msgstr "Torna indietro"
msgid "labels.graphic-design"
msgstr "Graphic design"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Supporto"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Non mostrare i commenti risolti"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:355
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:413
msgid "labels.import"
msgstr "Importa"
@@ -1930,9 +1933,9 @@ msgstr "Importa"
msgid "labels.inactive"
msgstr "Inattivo"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
-msgstr "Font installati"
+msgstr "Caratteri installati"
#: src/app/main/ui/static.cljs:424
msgid "labels.internal-error.desc-message"
@@ -1956,11 +1959,11 @@ msgstr "Inviti"
msgid "labels.language"
msgstr "Lingua"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Librerie e modelli"
-#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:114, src/app/main/ui/dashboard/grid.cljs:133, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:53, src/app/main/ui/ds/product/loader.cljs:52, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:126, src/app/main/ui.cljs:67, src/app/main/ui.cljs:105, src/app/main/ui.cljs:124
+#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:115, src/app/main/ui/dashboard/grid.cljs:134, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:98, src/app/main/ui/ds/product/loader.cljs:85, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:118, src/app/main/ui.cljs:66, src/app/main/ui.cljs:104, src/app/main/ui.cljs:123
msgid "labels.loading"
msgstr "Caricamento…"
@@ -1972,7 +1975,7 @@ msgstr "Connettiti o iscriviti"
msgid "labels.login"
msgstr "Accesso"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Disconnetti"
@@ -1992,13 +1995,13 @@ msgstr "Membri"
msgid "labels.new-password"
msgstr "Nuova password"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Successivo"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
-msgstr "Non ci sono notifiche di commenti in attesa"
+msgstr "Non ci sono notifiche di commenti in attesa."
#: src/app/main/ui/dashboard/team.cljs:740
msgid "labels.no-invitations"
@@ -2024,7 +2027,7 @@ msgstr "Ops!"
msgid "labels.notifications"
msgstr "Notifiche"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "1 file"
@@ -2055,7 +2058,7 @@ msgstr "Vecchia password"
msgid "labels.only-yours"
msgstr "Solo tuoi"
-#: src/app/main/ui/comments.cljs:545, src/app/main/ui/comments.cljs:822, src/app/main/ui/comments.cljs:886, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:295, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:324
+#: src/app/main/ui/comments.cljs:891, src/app/main/ui/comments.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:293, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:322
msgid "labels.options"
msgstr "Opzioni"
@@ -2083,7 +2086,7 @@ msgstr "Password"
msgid "labels.pending-invitation"
msgstr "In attesa"
-#: src/app/main/ui/comments.cljs:657, src/app/main/ui/comments.cljs:690, src/app/main/ui/comments.cljs:759
+#: src/app/main/ui/comments.cljs:678
msgid "labels.post"
msgstr "Pubblica"
@@ -2107,7 +2110,7 @@ msgstr "Profilo"
msgid "labels.projects"
msgstr "Progetti"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Note di versione"
@@ -2125,7 +2128,7 @@ msgstr "Rimuovi"
msgid "labels.remove-member"
msgstr "Rimuovi membro"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Rinomina"
@@ -2133,23 +2136,23 @@ msgstr "Rinomina"
msgid "labels.rename-team"
msgstr "Rinomina il team"
-#: src/app/main/ui/comments.cljs:598
+#: src/app/main/ui/comments.cljs:641
msgid "labels.replies"
msgstr "risposte"
-#: src/app/main/ui/comments.cljs:603
+#: src/app/main/ui/comments.cljs:646
msgid "labels.replies.new"
msgstr "nuove risposte"
-#: src/app/main/ui/comments.cljs:597
+#: src/app/main/ui/comments.cljs:640
msgid "labels.reply"
msgstr "risposta"
-#: src/app/main/ui/comments.cljs:602
+#: src/app/main/ui/comments.cljs:645
msgid "labels.reply.new"
msgstr "nuova risposta"
-#: src/app/main/ui/comments.cljs:641
+#: src/app/main/ui/comments.cljs:721
msgid "labels.reply.thread"
msgstr "Rispondi"
@@ -2169,17 +2172,17 @@ msgstr "Riprova"
msgid "labels.role"
msgstr "Ruolo"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Salva"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "Cerca"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
-msgstr "Cerca un font"
+msgstr "Cerca un carattere"
#: src/app/main/ui/onboarding/questions.cljs:85, src/app/main/ui/onboarding/questions.cljs:244, src/app/main/ui/onboarding/questions.cljs:255, src/app/main/ui/onboarding/questions.cljs:265
msgid "labels.select-option"
@@ -2201,7 +2204,7 @@ 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:252
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:247
msgid "labels.sets"
msgstr "Set"
@@ -2221,19 +2224,19 @@ msgstr "Condividi il prototipo"
msgid "labels.shared-libraries"
msgstr "Librerie condivise"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Mostra tutti i commenti"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Mostra la lista dei commenti"
-#: src/app/main/ui/workspace/comments.cljs:66, src/app/main/ui/workspace/comments.cljs:136
+#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139
msgid "labels.show-mentions"
msgstr "Mostra solo le tue menzioni"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Mostra solo i tuoi commenti"
@@ -2261,11 +2264,11 @@ msgstr "Capo del team"
msgid "labels.team-member"
msgstr "Membro del team"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:183
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:182
msgid "labels.themes"
msgstr "Temi"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Tutorial"
@@ -2281,15 +2284,15 @@ msgstr "Aggiorna"
msgid "labels.update-team"
msgstr "Aggiorna team"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Carica"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
-msgstr "Carica font personalizzati"
+msgstr "Carica caratteri personalizzati"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Caricamento…"
@@ -2305,7 +2308,7 @@ msgstr "Visualizzatore"
msgid "labels.webhooks"
msgstr "Webhook"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Scrivi un nuovo commento"
@@ -2313,7 +2316,7 @@ msgstr "Scrivi un nuovo commento"
msgid "labels.you"
msgstr "(tu)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Il tuo account"
@@ -2321,23 +2324,23 @@ msgstr "Il tuo account"
msgid "labels.youtube"
msgstr "YouTube"
-#: src/app/main/ui/workspace/colorpicker.cljs:477, src/app/main/ui/workspace/colorpicker.cljs:478, src/app/main/ui/workspace/colorpicker.cljs:480
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
msgid "media.choose-image"
msgstr "Scegli un'immagine"
-#: src/app/main/ui/workspace/colorpicker.cljs:245
+#: src/app/main/ui/workspace/colorpicker.cljs:241
msgid "media.gradient"
msgstr "Gradiente"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "Immagine"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:77
+#: src/app/main/ui/inspect/attributes/common.cljs:77
msgid "media.image.short"
msgstr "Img"
-#: src/app/main/ui/workspace/colorpicker.cljs:470
+#: src/app/main/ui/workspace/colorpicker.cljs:467
msgid "media.keep-aspect-ratio"
msgstr "Mantieni proporzioni"
@@ -2355,7 +2358,7 @@ msgstr "Caricamento dell'immagine…"
msgid "media.radial"
msgstr "Radiale"
-#: src/app/main/ui/workspace/colorpicker.cljs:243
+#: src/app/main/ui/workspace/colorpicker.cljs:239
msgid "media.solid"
msgstr "Solido"
@@ -2368,7 +2371,7 @@ msgstr ""
#: src/app/main/data/common.cljs:136
msgid "modals.add-shared-confirm.accept"
-msgstr "Aggiungere come libreria condivisa"
+msgstr "Aggiungi come libreria condivisa"
#: src/app/main/data/common.cljs:134
msgid "modals.add-shared-confirm.hint"
@@ -2406,7 +2409,7 @@ msgstr "Cambiare indirizzo e-mail"
msgid "modals.change-email.title"
msgstr "Cambia il tuo indirizzo e-mail"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Copia token"
@@ -2422,7 +2425,7 @@ msgstr "Nome"
msgid "modals.create-access-token.name.placeholder"
msgstr "Il nome può aiutare a capire a cosa serve il token"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Crea token"
@@ -2446,15 +2449,15 @@ msgstr "URL del payload"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://example.com/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Elimina token"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "Sei sicuro di voler eliminare questo token?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Elimina token"
@@ -2476,25 +2479,25 @@ msgstr ""
msgid "modals.delete-account.title"
msgstr "Eliminare il proprio account?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Elimina conversazione"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Eliminare questa conversazione? Tutti i commenti in questo thread saranno "
"cancellati."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Elimina conversazione"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
msgid "modals.delete-component-annotation.message"
msgstr "Sei sicuro di voler eliminare questa annotazione?"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Elimina annotazione"
@@ -2522,29 +2525,29 @@ msgstr "Eliminare %s files?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Eliminazione %s files"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Eliminare questo stile del carattere? Se è usato in un file, non verrà "
"caricato."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Eliminazione stile del carattere"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr "Eliminare questo carattere? Se è usato in un file, non verrà caricato."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Eliminazione carattere"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Eliminare questa pagina?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Elimina pagina"
@@ -2758,15 +2761,15 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "Nuovo proprietario del team"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Pubblica"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
msgid "modals.publish-empty-library.message"
msgstr "La tua libreria è vuota. Sei sicuro di volerla pubblicare?"
-#: src/app/main/ui/workspace/libraries.cljs:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Pubblica libreria vuota"
@@ -2779,9 +2782,8 @@ msgstr "Elimina come libreria condivisa"
#, unused
msgid "modals.remove-shared-confirm.hint"
msgstr ""
-"Una volta eliminata come libreria condivisa, la libreria dei file di questo "
-"file smetterà di essere a disposizione per essere usata con il resto dei "
-"tuoi file."
+"Una volta rimossa come libreria condivisa, la libreria file di questo file "
+"non sarà più disponibile per l'uso tra gli altri tuoi file."
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
#, unused
@@ -2822,21 +2824,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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Aggiorna"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Cancella"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Aggiorna un componente in una libreria condivisa"
@@ -2996,27 +2998,27 @@ msgstr "Video tutorial"
msgid "onboarding-v2.before-start.title"
msgstr "Prima di cominciare"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Iscriviti alla newsletter di Penpot per rimanere aggiornato sui progressi e "
"le novità dello sviluppo del prodotto."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr "Inviami notizie su Penpot (contenuti del blog, tutorial video, dirette…)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Ci teniamo alla privacy, qui puoi leggere la nostra "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Ti invieremo solo email rilevanti. Puoi annullare l'iscrizione in qualsiasi "
"momento tramite il link di cancellazione presente in ogni nostra newsletter."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr ""
"Inviami aggiornamenti sul prodotto (nuove funzionalità, versioni, "
@@ -3115,17 +3117,17 @@ msgstr "Potrai creare un team più tardi."
msgid "onboarding.newsletter.accept"
msgstr "Si, iscrivimi"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"La tua richiesta di iscrizione è stata invita, ti invieremo un'email di "
"conferma."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Condizioni sulla Privacy."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Vuoi ricevere le news di Penpot?"
@@ -3318,7 +3320,7 @@ msgstr "Vai all'accesso"
msgid "settings.detach"
msgstr "Scollega"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Misto"
@@ -3516,7 +3518,7 @@ msgstr "Crea nuovo"
msgid "shortcuts.cut"
msgstr "Taglia"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Zoom indietro"
@@ -3616,7 +3618,7 @@ msgstr "Distribuisci orizzontalmente"
msgid "shortcuts.hide-ui"
msgstr "Mostra / Nascondi UI"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Aumenta zoom"
@@ -4000,15 +4002,15 @@ msgstr "Zoom su selezione"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Fornitori dei caratteri - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Caratteri - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Progetti - %s - Penpot"
@@ -4016,7 +4018,7 @@ msgstr "Progetti - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Cerca - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Librerie condivise - %s - Penpot"
@@ -4024,7 +4026,7 @@ msgstr "Librerie condivise - %s - Penpot"
msgid "title.default"
msgstr "Penpot - Libertà di design per i team"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "Profilo - Token di accesso"
@@ -4032,7 +4034,7 @@ msgstr "Profilo - Token di accesso"
msgid "title.settings.feedback"
msgstr "Fornisci feedback - Penpot"
-#: src/app/main/ui/settings/notifications.cljs:64
+#: src/app/main/ui/settings/notifications.cljs:45
msgid "title.settings.notifications"
msgstr "Notifiche - Penpot"
@@ -4068,7 +4070,7 @@ msgstr "Webhook - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Modalità di visualizzazione - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -4168,7 +4170,7 @@ msgstr "Distribuisci spaziatura verticale (%s)"
msgid "workspace.align.vtop"
msgstr "Allinea in alto (%s)"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:174, src/app/main/ui/workspace/sidebar/assets.cljs:179
+#: src/app/main/ui/workspace/sidebar/assets.cljs:171
msgid "workspace.assets.add-library"
msgstr "Aggiungi libreria"
@@ -4177,11 +4179,11 @@ msgstr "Aggiungi libreria"
msgid "workspace.assets.assets"
msgstr "Asset"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Tutti gli asset"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Colori"
@@ -4189,11 +4191,11 @@ msgstr "Colori"
msgid "workspace.assets.colors.add-color"
msgstr "Aggiungi colore"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Componenti"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:510
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:520
msgid "workspace.assets.components.add-component"
msgstr "Aggiungi componente"
@@ -4207,15 +4209,15 @@ msgstr ""
"I tuoi elementi verrano rinominati automaticamente come \"Nome gruppo / "
"nome elemento\""
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Elimina"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Duplica"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "Duplica principale"
@@ -4223,19 +4225,19 @@ msgstr "Duplica principale"
msgid "workspace.assets.edit"
msgstr "Modifica"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:195
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
msgid "workspace.assets.filter"
msgstr "Filtra"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Grafiche"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:505
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:515
msgid "workspace.assets.grid-view"
msgstr "Vista a griglia"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Gruppo"
@@ -4243,27 +4245,23 @@ msgstr "Gruppo"
msgid "workspace.assets.group-name"
msgstr "Nome gruppo"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Librerie"
-
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:501
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:511
msgid "workspace.assets.list-view"
msgstr "Vista a elenco"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "libreria locale"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Nessun asset trovato"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "Apri file libreria"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Rinomina"
@@ -4271,7 +4269,7 @@ msgstr "Rinomina"
msgid "workspace.assets.rename-group"
msgstr "Rinomina gruppo"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Cerca asset"
@@ -4287,17 +4285,17 @@ msgstr[1] "%s elementi selezionati"
msgid "workspace.assets.shared-library"
msgstr "Librerie condivise"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:226
+#: 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:211
+#: src/app/main/ui/workspace/sidebar/assets.cljs:201
msgid "workspace.assets.sort"
msgstr "Ordina"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Elementi tipografici"
@@ -4310,27 +4308,27 @@ msgstr "Aggiungi elemento tipografico"
msgid "workspace.assets.typography.font-id"
msgstr "Carattere"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Dimensione"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Variante"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Vai alla libreria dello stile del file per modificare"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Spaziatura tra lettere"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Interlinea"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -4338,7 +4336,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Stili di testo"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Trasforma testo"
@@ -4346,55 +4344,55 @@ msgstr "Trasforma testo"
msgid "workspace.assets.ungroup"
msgstr "Separa"
-#: src/app/main/ui/workspace/context_menu.cljs:748
+#: src/app/main/ui/workspace/context_menu.cljs:764
msgid "workspace.context-menu.grid-cells.area"
msgstr "Crea area"
-#: src/app/main/ui/workspace/context_menu.cljs:751
+#: src/app/main/ui/workspace/context_menu.cljs:767
msgid "workspace.context-menu.grid-cells.create-board"
msgstr "Crea tavola da disegno"
-#: src/app/main/ui/workspace/context_menu.cljs:743
+#: src/app/main/ui/workspace/context_menu.cljs:759
msgid "workspace.context-menu.grid-cells.merge"
msgstr "Unisci celle"
-#: src/app/main/ui/workspace/context_menu.cljs:706
+#: src/app/main/ui/workspace/context_menu.cljs:722
msgid "workspace.context-menu.grid-track.column.add-after"
msgstr "Aggiungi 1 colonna a destra"
-#: src/app/main/ui/workspace/context_menu.cljs:705
+#: src/app/main/ui/workspace/context_menu.cljs:721
msgid "workspace.context-menu.grid-track.column.add-before"
msgstr "Aggiungi 1 colonna a sinistra"
-#: src/app/main/ui/workspace/context_menu.cljs:707
+#: src/app/main/ui/workspace/context_menu.cljs:723
msgid "workspace.context-menu.grid-track.column.delete"
msgstr "Elimina colonna"
-#: src/app/main/ui/workspace/context_menu.cljs:708
+#: src/app/main/ui/workspace/context_menu.cljs:724
msgid "workspace.context-menu.grid-track.column.delete-shapes"
msgstr "Elimina colonna e forme"
-#: src/app/main/ui/workspace/context_menu.cljs:704
+#: src/app/main/ui/workspace/context_menu.cljs:720
msgid "workspace.context-menu.grid-track.column.duplicate"
msgstr "Duplica colonna"
-#: src/app/main/ui/workspace/context_menu.cljs:713
+#: src/app/main/ui/workspace/context_menu.cljs:729
msgid "workspace.context-menu.grid-track.row.add-after"
msgstr "Aggiungi 1 riga sotto"
-#: src/app/main/ui/workspace/context_menu.cljs:712
+#: src/app/main/ui/workspace/context_menu.cljs:728
msgid "workspace.context-menu.grid-track.row.add-before"
msgstr "Aggiungi 1 riga sopra"
-#: src/app/main/ui/workspace/context_menu.cljs:714
+#: src/app/main/ui/workspace/context_menu.cljs:730
msgid "workspace.context-menu.grid-track.row.delete"
msgstr "Elimina riga"
-#: src/app/main/ui/workspace/context_menu.cljs:715
+#: src/app/main/ui/workspace/context_menu.cljs:731
msgid "workspace.context-menu.grid-track.row.delete-shapes"
msgstr "Elimina riga e forme"
-#: src/app/main/ui/workspace/context_menu.cljs:711
+#: src/app/main/ui/workspace/context_menu.cljs:727
msgid "workspace.context-menu.grid-track.row.duplicate"
msgstr "Duplica riga"
@@ -4402,13 +4400,13 @@ msgstr "Duplica riga"
msgid "workspace.focus.focus-mode"
msgstr "Modalità focus"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
-msgstr "Modalità focus disattivata"
+msgstr "Disattiva modalità focus"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
-msgstr "Modalità focus attivata"
+msgstr "Attiva modalità focus"
#, unused
msgid "workspace.focus.selection"
@@ -4564,37 +4562,36 @@ msgstr "Passa al tema chiaro"
msgid "workspace.header.menu.undo"
msgstr "Annulla"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Reimposta"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Errore durante il salvataggio"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Salvato"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "In salvataggio"
-#: src/app/main/ui/workspace/right_header.cljs:255
+#: src/app/main/ui/workspace/right_header.cljs:221
msgid "workspace.header.share"
msgstr "Condividi"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Cambiamenti non salvati"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
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:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "Zoom"
@@ -4606,7 +4603,7 @@ msgstr "Riempi - Ridimensiona per riempire"
msgid "workspace.header.zoom-fit"
msgstr "Adatta - Riduci per adattare"
-#: src/app/main/ui/workspace/right_header.cljs:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Adatta zoom a tutto"
@@ -4614,19 +4611,19 @@ msgstr "Adatta zoom a tutto"
msgid "workspace.header.zoom-full-screen"
msgstr "Schermo intero"
-#: src/app/main/ui/workspace/right_header.cljs:136
+#: src/app/main/ui/workspace/right_header.cljs:104
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:607
+#: 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:616
msgid "workspace.layout_grid.editor.options.edit-grid"
msgstr "Modifica griglia"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
msgid "workspace.layout_grid.editor.options.exit"
msgstr "Esci"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:478
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
msgid "workspace.layout_grid.editor.padding.expand"
msgstr "Mostra opzioni di padding su 4 lati"
@@ -4642,7 +4639,7 @@ msgstr "Fatto"
msgid "workspace.layout_grid.editor.top-bar.locate"
msgstr "Individua"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1321
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
msgstr "Individua grid layout"
@@ -4651,7 +4648,7 @@ msgstr "Individua grid layout"
msgid "workspace.libraries.add"
msgstr "Aggiungi"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s colori"
@@ -4681,43 +4678,43 @@ msgstr "Colori recenti"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "RGB Complementare"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Salva stile di colore"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:374
+#: src/app/main/ui/workspace/libraries.cljs:371
msgid "workspace.libraries.empty.add-some"
msgstr "O aggiungi alcuni di questi per provare:"
-#: src/app/main/ui/workspace/libraries.cljs:368
+#: src/app/main/ui/workspace/libraries.cljs:365
msgid "workspace.libraries.empty.no-libraries"
msgstr "Non ci sono librerie condivise nel tuo team, puoi cercare"
-#: src/app/main/ui/workspace/libraries.cljs:372
+#: src/app/main/ui/workspace/libraries.cljs:369
msgid "workspace.libraries.empty.some-templates"
msgstr "alcuni modelli qui"
-#: src/app/main/ui/workspace/libraries.cljs:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Libreria del file"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "LIBRERIE IN QUESTO FILE"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "LIBRERIE"
@@ -4726,71 +4723,64 @@ msgstr "LIBRERIE"
msgid "workspace.libraries.library"
msgstr "LIBRERIA"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "AGGIORNAMENTI DELLA LIBRERIA"
-#: src/app/main/ui/workspace/libraries.cljs:363
+#: src/app/main/ui/workspace/libraries.cljs:360
msgid "workspace.libraries.loading"
msgstr "Caricamento…"
#: src/app/main/ui/workspace/libraries.cljs:387
+#, unused
msgid "workspace.libraries.more-templates"
msgstr "Puoi cercare altri "
-#: src/app/main/ui/workspace/libraries.cljs:391
-msgid "workspace.libraries.more-templates-link"
-msgstr "modelli qui"
-
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "Non ci sono librerie condivise che necessitano un aggiornamento"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Nessun risultato trovato per “%s”"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Non ci sono librerie condivise disponibili"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Cerca librerie condivise"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "LIBRERIE CONDIVISE"
-#: src/app/main/ui/workspace/libraries.cljs:355
+#: src/app/main/ui/workspace/libraries.cljs:352
msgid "workspace.libraries.shared-library-btn"
msgstr "Connetti libreria"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Elementi tipografici multipli"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Scollega tutti gli elementi tipografici"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:326
+#: src/app/main/ui/workspace/libraries.cljs:323
msgid "workspace.libraries.unlink-library-btn"
msgstr "Disconnetti libreria"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Aggiorna"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "vedi tutti i cambiamenti"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "AGGIORNAMENTI"
@@ -4822,45 +4812,45 @@ msgstr "Sfocatura della selezione"
msgid "workspace.options.blur-options.toggle-blur"
msgstr "Attiva/Disattiva sfocatura"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Colore di sfondo"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Ritaglia contenuto"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Componente"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "Annotazione"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "Copia"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "Crea un'annotazione"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Modifica un'annotazione"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Principale"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:416
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
msgid "workspace.options.component.swap"
msgstr "Sostituisci componente"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:460
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
msgid "workspace.options.component.swap.empty"
-msgstr "Non ci sono ancora asset in questo libreria"
+msgstr "Non ci sono ancora asset in questa libreria"
#: src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:163
msgid "workspace.options.constraints"
@@ -4906,7 +4896,7 @@ msgstr "Superiore e Inferiore"
msgid "workspace.options.design"
msgstr "Design"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Esporta"
@@ -4915,21 +4905,21 @@ msgstr "Esporta"
msgid "workspace.options.export-multiple"
msgstr "Esporta selezione"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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:187
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188
msgid "workspace.options.export.add-export"
msgstr "Aggiungi esportazione"
-#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:199, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:234
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235
msgid "workspace.options.export.remove-export"
msgstr "Rimuovi esportazione"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Suffisso"
@@ -4937,7 +4927,7 @@ msgstr "Suffisso"
msgid "workspace.options.exporting-complete"
msgstr "Esportazione completata"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "In esportazione…"
@@ -4961,6 +4951,10 @@ msgstr "Aggiungi colore di riempimento"
msgid "workspace.options.fill.remove-fill"
msgstr "Elimina riempimento"
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:341
+msgid "workspace.options.fit-content"
+msgstr "Adatta tavola da disegno al contenuto"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182
msgid "workspace.options.flows.add-flow-start"
msgstr "Aggiungi inizio flusso"
@@ -5099,7 +5093,7 @@ msgstr "Guide"
msgid "workspace.options.guides.toggle-guide"
msgstr "Attiva/Disattiva guida"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Altezza"
@@ -5422,19 +5416,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:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Altezza.Max"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Larghezza.Max"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Altezza.Min"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Larghezza.Min"
@@ -5548,11 +5542,11 @@ msgstr "spazio tra"
msgid "workspace.options.layout.top"
msgstr "In alto"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Più colori"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Più librerie colori"
@@ -5597,7 +5591,7 @@ msgstr "Comprimi raggio indipendente"
msgid "workspace.options.radius.show-single-corners"
msgstr "Mostra raggio indipendente"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Recenti"
@@ -5605,11 +5599,11 @@ msgstr "Recenti"
msgid "workspace.options.retry"
msgstr "Riprova"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Rotazione"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Cerca carattere"
@@ -5619,7 +5613,7 @@ 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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Colori selezionati"
@@ -5631,55 +5625,55 @@ msgstr "Riempimento di selezione"
msgid "workspace.options.selection-stroke"
msgstr "Traccia di selezione"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:292
msgid "workspace.options.shadow-options.add-shadow"
msgstr "Aggiungi ombra"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Sfoca"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Colore ombra"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Ombra esterna"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Ombra interna"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:180, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:318
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
msgid "workspace.options.shadow-options.remove-shadow"
msgstr "Rimuovi ombra"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Diffusione"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Ombra"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Ombra di gruppo"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Ombre della selezione"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:176
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:144
msgid "workspace.options.shadow-options.toggle-shadow"
msgstr "Attiva/Disattiva ombra"
@@ -5687,7 +5681,7 @@ msgstr "Attiva/Disattiva ombra"
msgid "workspace.options.show-fill-on-export"
msgstr "Mostra in esportazione"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Mostra in modalità visualizzazione"
@@ -5695,7 +5689,7 @@ msgstr "Mostra in modalità visualizzazione"
msgid "workspace.options.size"
msgstr "Dimensione"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Dimensioni predefinite"
@@ -5764,7 +5758,7 @@ msgstr "Triangolo"
msgid "workspace.options.stroke-color"
msgstr "Colore traccia"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Spessore traccia"
@@ -5836,11 +5830,11 @@ msgstr "Larghezza automatica"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Fisso"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Spaziatura tra lettere"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Interlinea"
@@ -5906,15 +5900,15 @@ msgstr ""
"Utilizza il pulsante di riproduzione nell'header per avviare la "
"visualizzazione del prototipo."
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Larghezza"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "Asse X"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Asse Y"
@@ -6092,123 +6086,127 @@ msgstr "IL PLUGIN '%s' È INSTALLATO PER IL TUO UTENTE!"
msgid "workspace.plugins.try-out.try"
msgstr "PROVA PLUGIN"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Aggiungi flex layout"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "Aggiungi grid layout"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1004, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1030
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1013, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039
msgid "workspace.shape.menu.add-layout"
msgstr "Aggiungi layout"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "Porta in fondo"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Porta indietro"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Copia"
-#: src/app/main/ui/workspace/context_menu.cljs:203
+#: src/app/main/ui/workspace/context_menu.cljs:204
msgid "workspace.shape.menu.copy-css"
msgstr "Copia come CSS"
-#: src/app/main/ui/workspace/context_menu.cljs:205
+#: src/app/main/ui/workspace/context_menu.cljs:206
msgid "workspace.shape.menu.copy-css-nested"
msgstr "Copia come CSS (livelli nidificati)"
-#: src/app/main/ui/workspace/context_menu.cljs:188
+#: src/app/main/ui/workspace/context_menu.cljs:189
msgid "workspace.shape.menu.copy-link"
msgstr "Copia link negli appunti"
-#: src/app/main/ui/workspace/context_menu.cljs:201
+#: src/app/main/ui/workspace/context_menu.cljs:202
msgid "workspace.shape.menu.copy-paste-as"
msgstr "Copia/Incolla come…"
-#: src/app/main/ui/workspace/context_menu.cljs:213
+#: src/app/main/ui/workspace/context_menu.cljs:214
msgid "workspace.shape.menu.copy-props"
msgstr "Copia proprietà"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/context_menu.cljs:211
+msgid "workspace.shape.menu.copy-text"
+msgstr "Copia come testo"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "Crea annotazione"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Tavola da disegno da selezione"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Crea componente"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Crea componenti multipli"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Taglia"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Elimina"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Elimina inizio del flusso"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Scollega istanza"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Scollega istanze"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Differenza"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Duplica"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Modifica"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Escludi"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Appiattisci"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Capovolgi orizzontalmente"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Capovolgi verticalmente"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Inizio del flusso"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Porta avanti"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Porta in primo piano"
@@ -6217,107 +6215,107 @@ msgstr "Porta in primo piano"
msgid "workspace.shape.menu.go-main"
msgstr "Vai al componente principale"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Raggruppa"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Nascondi"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Mostra/Nascondi UI"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Interesezione"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Blocca"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Maschera"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Incolla"
-#: src/app/main/ui/workspace/context_menu.cljs:217
+#: src/app/main/ui/workspace/context_menu.cljs:218
msgid "workspace.shape.menu.paste-props"
msgstr "Incolla proprietà"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Tracciato"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Rimuovi flex layout"
-#: src/app/main/ui/workspace/context_menu.cljs:531
+#: src/app/main/ui/workspace/context_menu.cljs:535
msgid "workspace.shape.menu.remove-grid"
msgstr "Rimuovi grid layout"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1022
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1031
msgid "workspace.shape.menu.remove-layout"
msgstr "Rimuovi layout"
-#: src/app/main/ui/workspace/context_menu.cljs:312
+#: src/app/main/ui/workspace/context_menu.cljs:313
msgid "workspace.shape.menu.rename"
msgstr "Rinomina"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Reimposta modifiche"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Ripristina componente principale"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Seleziona livello"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Mostra"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Mostra nel pannello degli asset"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Mostra componente principale"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Rimuovi miniatura"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Imposta come miniatura"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Trasforma in tracciato"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Separa"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Unione"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Sblocca"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Rimuovi maschera"
@@ -6326,7 +6324,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:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Aggiorna componente principale"
@@ -6338,11 +6336,11 @@ msgstr "Comprimi barra laterale"
msgid "workspace.sidebar.expand"
msgstr "Espandi barra laterale"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Cronologia"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Livelli"
@@ -6378,7 +6376,7 @@ msgstr "Forme"
msgid "workspace.sidebar.layers.texts"
msgstr "Testi"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Attributi SVG importati"
@@ -6390,7 +6388,7 @@ msgstr "Pagine"
msgid "workspace.sidebar.sitemap.add-page"
msgstr "Aggiungi pagina"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Sitemap"
@@ -6408,43 +6406,43 @@ msgstr "%s temi attivi"
msgid "workspace.token.add set"
msgstr "Aggiungi set"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:341
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:136
+msgid "workspace.token.applied-to"
+msgstr "Applicato a"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:391
msgid "workspace.token.back-to-themes"
msgstr "Torna alla lista temi"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:51
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:54
msgid "workspace.token.create-new-theme"
msgstr "Crea ora il tuo prima tema."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:191, src/app/main/ui/workspace/tokens/sidebar.cljs:218
+#: src/app/main/ui/workspace/tokens/sets.cljs:134, src/app/main/ui/workspace/tokens/sidebar.cljs:190
msgid "workspace.token.create-one"
msgstr "Creane uno."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159, src/app/main/ui/workspace/tokens/modals/themes.cljs:237
-msgid "workspace.token.create-theme-title"
-msgstr "Crea tema"
-
-#: src/app/main/ui/workspace/tokens/form.cljs:431
+#: src/app/main/ui/workspace/tokens/form.cljs:492
msgid "workspace.token.create-token"
msgstr "Crea un nuovo token %s"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:228
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:278
msgid "workspace.token.delete"
msgstr "Elimina token"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:151
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159
msgid "workspace.token.delete-theme-title"
msgstr "Elimina tema"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:225
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:275
msgid "workspace.token.duplicate"
msgstr "Duplica token"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:212
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:262
msgid "workspace.token.edit"
msgstr "Modifica token"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:333
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:383
msgid "workspace.token.edit-theme-title"
msgstr "Modifica tema"
@@ -6452,15 +6450,15 @@ msgstr "Modifica tema"
msgid "workspace.token.edit-themes"
msgstr "Modifica temi"
-#: src/app/main/ui/workspace/tokens/form.cljs:430
+#: src/app/main/ui/workspace/tokens/form.cljs:491
msgid "workspace.token.edit-token"
msgstr "Modifica token"
-#: src/app/main/ui/workspace/tokens/form.cljs:481
+#: src/app/main/ui/workspace/tokens/form.cljs:544
msgid "workspace.token.enter-token-description"
msgstr "Aggiungi una descrizione (opzionale)"
-#: src/app/main/ui/workspace/tokens/form.cljs:437
+#: src/app/main/ui/workspace/tokens/form.cljs:498
msgid "workspace.token.enter-token-name"
msgstr "Inserisci il nome del token %s"
@@ -6469,86 +6467,110 @@ msgstr "Inserisci il nome del token %s"
msgid "workspace.token.grouping-set-alert"
msgstr "Il raggruppamento di set di token non è ancora supportato."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:56
-msgid "workspace.token.new-theme"
-msgstr "Nuovo tema"
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:196
+msgid "workspace.token.label.group"
+msgstr "Gruppo"
-#: src/app/main/ui/workspace/tokens/theme_select.cljs:88
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:206
+msgid "workspace.token.label.theme"
+msgstr "Tema"
+
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:89
msgid "workspace.token.no-active-theme"
msgstr "Nessun tema attivo"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:146
-msgid "workspace.token.no-sets"
-msgstr "Nessun set"
+#: src/app/main/ui/workspace/tokens/sets.cljs:110
+msgid "workspace.token.no-permisions-set"
+msgstr "Devi essere un editor per attivare / disattivare i set"
-#: src/app/main/ui/workspace/tokens/sets.cljs:401, src/app/main/ui/workspace/tokens/sets.cljs:405
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:199
+msgid "workspace.token.no-permission-themes"
+msgstr "Devi essere un editor per usare i temi"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:504
msgid "workspace.token.no-sets-create"
msgstr "Non sono ancora stati definiti dei set. Creane prima uno."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:215, src/app/main/ui/workspace/tokens/sidebar.cljs:221
+#: src/app/main/ui/workspace/tokens/sets.cljs:131, src/app/main/ui/workspace/tokens/sets.cljs:137
msgid "workspace.token.no-sets-yet"
msgstr "Non ci sono ancora dei set."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:187
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:186
msgid "workspace.token.no-themes"
msgstr "Non ci sono temi."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:47
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:50
msgid "workspace.token.no-themes-currently"
msgstr "Al momento non hai temi."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:137
-msgid "workspace.token.num-sets"
-msgstr "%s set"
-
-#: src/app/main/ui/workspace/tokens/token_pill.cljs:114
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:122
#, fuzzy
msgid "workspace.token.original-value"
-msgstr "Valore originale: "
+msgstr "Valore originale: %s"
-#: src/app/main/ui/workspace/tokens/form.cljs:205, src/app/main/ui/workspace/tokens/form.cljs:208, src/app/main/ui/workspace/tokens/token_pill.cljs:115
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:128
+msgid "workspace.token.ref-not-valid"
+msgstr "Il riferimento non è valido o non è presente in nessun set attivo"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:217, src/app/main/ui/workspace/tokens/form.cljs:221, src/app/main/ui/workspace/tokens/token_pill.cljs:123
#, fuzzy
msgid "workspace.token.resolved-value"
-msgstr "Valore risultato: "
+msgstr "Valore risolto: %"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:203
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:240
msgid "workspace.token.save-theme"
msgstr "Salva tema"
-#: src/app/main/ui/workspace/tokens/sets.cljs:200, src/app/main/ui/workspace/tokens/sets.cljs:305
+#: src/app/main/ui/workspace/tokens/sets.cljs:239, src/app/main/ui/workspace/tokens/sets.cljs:340
msgid "workspace.token.select-set"
msgstr "Seleziona set."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:346
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:396
msgid "workspace.token.set-selection-theme"
msgstr "Definisci quali set token dovrebbe essere usati come parte di questo tema:"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs
-#, unused
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:136
msgid "workspace.token.theme-name"
msgstr "Tema %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:43, src/app/main/ui/workspace/tokens/modals/themes.cljs:88
-msgid "workspace.token.themes"
-msgstr "Temi"
-
-#: src/app/main/ui/workspace/tokens/form.cljs:482
+#: src/app/main/ui/workspace/tokens/form.cljs:545
msgid "workspace.token.token-description"
msgstr "Descrizione"
-#: src/app/main/ui/workspace/tokens/form.cljs:440
+#: src/app/main/ui/workspace/tokens/form.cljs:501
msgid "workspace.token.token-name"
msgstr "Nome"
-#: src/app/main/ui/workspace/tokens/form.cljs:464
+#: src/app/main/ui/workspace/tokens/form.cljs:59
+msgid "workspace.token.token-name-validation-error"
+msgstr ""
+" non è un nome di token valido.\n"
+"I nomi dei token dovrebbero contenere solo lettere e cifre separate da "
+"caratteri . e non devono iniziare con un segno $."
+
+#: src/app/main/ui/workspace/tokens/form.cljs:526
msgid "workspace.token.token-value"
msgstr "Valore"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:348
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:322
+msgid "workspace.token.tokens-section-title"
+msgstr "TOKEN - %s"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:405
msgid "workspace.token.tools"
msgstr "Strumenti"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:131
+msgid "workspace.token.value-not-valid"
+msgstr "Il valore non è valido"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:520
+msgid "workspace.token.warning-name-change"
+msgstr ""
+"Rinominare questo token interromperà qualsiasi riferimento al suo vecchio "
+"nome."
+
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Asset"
@@ -6556,39 +6578,39 @@ msgstr "Asset"
msgid "workspace.toolbar.color-palette"
msgstr "Palette colori (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Commenti (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Curva (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Ellisse (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Tavola da disegno (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Immagine (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Sposta (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Tracciato (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:201, src/app/main/ui/workspace/top_toolbar.cljs:202
+#: src/app/main/ui/workspace/top_toolbar.cljs:210, src/app/main/ui/workspace/top_toolbar.cljs:211
msgid "workspace.toolbar.plugins"
msgstr "Plugin (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Rettangolo (%s)"
@@ -6597,7 +6619,7 @@ msgstr "Rettangolo (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Scorciatoie (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Testo (%s)"
@@ -6605,7 +6627,7 @@ msgstr "Testo (%s)"
msgid "workspace.toolbar.text-palette"
msgstr "Tipografie (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:220, src/app/main/ui/workspace/top_toolbar.cljs:221
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
msgid "workspace.toolbar.toggle-toolbar"
msgstr "Attiva/Disattiva barra degli strumenti"
@@ -6763,19 +6785,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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Ignora"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
msgid "workspace.updates.more-info"
msgstr "Maggiori informazioni"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
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:1226
msgid "workspace.updates.update"
msgstr "Aggiorna"
@@ -6835,11 +6857,11 @@ msgstr "Vuoi ripristinare questa versione?"
msgid "workspace.versions.snapshot-menu"
msgstr "Apri menu delle istantanee"
-#: src/app/main/ui/workspace/sidebar.cljs:284
+#: src/app/main/ui/workspace/sidebar.cljs:285
msgid "workspace.versions.tab.actions"
msgstr "Azioni"
-#: src/app/main/ui/workspace/sidebar.cljs:281
+#: src/app/main/ui/workspace/sidebar.cljs:282
msgid "workspace.versions.tab.history"
msgstr "Cronologia"
diff --git a/frontend/translations/jpn_JP.po b/frontend/translations/jpn_JP.po
index c64c09f972..691659c716 100644
--- a/frontend/translations/jpn_JP.po
+++ b/frontend/translations/jpn_JP.po
@@ -36,11 +36,11 @@ msgstr "デモアカウントを作成"
msgid "auth.create-demo-profile"
msgstr "試してみませんか?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr "このサービスはデモ版です。実際の業務には使用しないでください。"
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "パスワードを忘れましたか?"
@@ -52,27 +52,27 @@ msgstr "フルネーム"
msgid "auth.login-here"
msgstr "こちらからログイン"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "ログイン"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "Gitlab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAPでログイン"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID Connect"
@@ -96,7 +96,7 @@ msgstr "パスワード変更リンクをメールで送信しました。"
msgid "auth.notifications.team-invitation-accepted"
msgstr "チームに参加しました"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "パスワード"
@@ -124,7 +124,7 @@ msgstr "パスワードを忘れましたか?"
msgid "auth.recovery-submit"
msgstr "パスワードを変更"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "アカウントをお持ちでない方はこちら"
@@ -132,7 +132,7 @@ msgstr "アカウントをお持ちでない方はこちら"
msgid "auth.register-account-title"
msgstr "あなたの名前"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "アカウントを作成"
@@ -150,7 +150,7 @@ msgstr "デザインとプロトタイピングのためのオープンソース
msgid "auth.terms-and-privacy-agreement"
msgstr "[利用規約](%s) と [プライバシーポリシー](%s) に同意します。"
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "利用規約"
@@ -158,7 +158,7 @@ msgstr "利用規約"
msgid "auth.verification-email-sent"
msgstr "認証メールを送信しました"
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "公開"
@@ -227,7 +227,7 @@ msgstr "プロトタイプを共有"
msgid "common.share-link.view-all"
msgstr "すべて選択"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "非公開"
@@ -252,7 +252,7 @@ msgstr "共有ライブラリとして追加"
msgid "dashboard.change-email"
msgstr "メールアドレスを変更"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(コピー)"
@@ -300,16 +300,16 @@ msgstr "エクスポートの選択"
msgid "dashboard.export.options.all.title"
msgstr "共有ライブラリとしてエクスポート"
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "%s フォントを追加しました"
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "すべてアップロード"
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Penpotをインポート"
@@ -349,23 +349,23 @@ msgstr "チームに招待"
msgid "dashboard.leave-team"
msgstr "チームから脱退"
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "共有ライブラリ"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "ファイルを読みこんでいます…"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "フォントを読みこんでいます…"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ 新しいファイル"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "新しいファイル"
@@ -373,7 +373,7 @@ msgstr "新しいファイル"
msgid "dashboard.new-project"
msgstr "+ 新規プロジェクト"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "新規プロジェクト"
@@ -405,7 +405,7 @@ msgstr "%s メンバー"
msgid "dashboard.open-in-new-tab"
msgstr "新しいタブでファイルで開く"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "オプション"
@@ -446,7 +446,7 @@ msgstr "表示言語を選択"
msgid "dashboard.select-ui-theme"
msgstr "テーマを選択"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "すべてのファイルを表示"
@@ -466,7 +466,7 @@ msgstr "ファイルを複製しました"
msgid "dashboard.success-duplicate-project"
msgstr "プロジェクトを複製しました"
-#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "ファイルを移動しました"
@@ -518,15 +518,15 @@ msgstr "Eメール"
msgid "dashboard.your-name"
msgstr "名前"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "あなたのPenpot"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "キャンセル"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "OK"
@@ -534,7 +534,7 @@ msgstr "OK"
msgid "ds.confirm-title"
msgstr "本当に実行しますか?"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "認証プロバイダが設定されていません。"
@@ -542,7 +542,7 @@ msgstr "認証プロバイダが設定されていません。"
msgid "errors.auth.unable-to-login"
msgstr "認証されていないか、セッションが失効しているようです。"
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "この処理は実行できません"
@@ -554,7 +554,7 @@ msgstr "メールアドレスは使用されています"
msgid "errors.email-already-validated"
msgstr "メールアドレスはすでに有効です。"
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "メールアドレスはパスワードとして設定できません"
@@ -566,7 +566,7 @@ msgstr "メールアドレス «%s» には多くの受信失敗レポートが
msgid "errors.email-spam-or-permanent-bounces"
msgstr "«%s» はスパムとして報告されたか、または恒久的に受信失敗しています"
-#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "エラーが発生しました。"
@@ -574,8 +574,7 @@ msgstr "エラーが発生しました。"
msgid "errors.invalid-color"
msgstr "無効な色"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "メールアドレスは同じものを入力する必要があります"
@@ -591,7 +590,7 @@ msgstr "招待が無効"
msgid "errors.invite-invalid.info"
msgstr "この招待はキャンセルされたか、失効しています。"
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "LDAP認証は無効になっています。"
@@ -628,12 +627,11 @@ msgstr "エラーが発生しました。"
msgid "errors.unexpected-token"
msgstr "不明なトークン"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "ユーザー名かパスワードが正しくありません。"
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "以前のパスワードが正しくありません"
@@ -661,27 +659,27 @@ msgstr "メールアドレス"
msgid "feedback.twitter-title"
msgstr "Xサポートアカウント"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "エラーが発生しました"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "ぼかし"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "塗りつぶし"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "画像をダウンロード"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "高さ"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "横幅"
@@ -720,7 +718,7 @@ msgstr "上"
msgid "inspect.attributes.layout.width"
msgstr "幅"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "シャドウ"
@@ -728,51 +726,51 @@ msgstr "シャドウ"
msgid "inspect.attributes.stroke.alignment.center"
msgstr "中央"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "フォントファミリー"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "フォントサイズ"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "フォントスタイル"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "行の高さ"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "文字装飾"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "下線"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "円"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "コンポーネント"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "曲線"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "グループ"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "画像"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "マスク"
@@ -780,19 +778,19 @@ msgstr "マスク"
msgid "label.shortcuts"
msgstr "ショートカット"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "カスタムフォントを追加"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "キャンセル"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "コメント"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "コミュニティ"
@@ -800,11 +798,11 @@ msgstr "コミュニティ"
msgid "labels.confirm-password"
msgstr "パスワードを確認"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "続ける"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "作成"
@@ -824,15 +822,15 @@ msgstr "カスタムフォント"
msgid "labels.dashboard"
msgstr "ダッシュボード"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "削除"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "コメントを削除"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "スレッドを削除"
@@ -840,11 +838,11 @@ msgstr "スレッドを削除"
msgid "labels.delete-invitation"
msgstr "招待を削除"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "下書き"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "編集"
@@ -860,7 +858,7 @@ msgstr "エディタ"
msgid "labels.expired-invitation"
msgstr "失効済み"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "エクスポート"
@@ -868,23 +866,23 @@ msgstr "エクスポート"
msgid "labels.feedback-sent"
msgstr "フィードバックを送信しました"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "フォントファミリー"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "スタイル"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "フォント"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "GitHubレポジトリ"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "フィードバックする"
@@ -892,11 +890,11 @@ msgstr "フィードバックする"
msgid "labels.go-back"
msgstr "戻る"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "ヘルプセンター"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "解決済みのコメントを非表示"
@@ -912,11 +910,11 @@ msgstr "招待"
msgid "labels.language"
msgstr "言語"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "ライブラリ&テンプレート"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "ログアウト"
@@ -961,7 +959,7 @@ msgstr "プロフィール"
msgid "labels.projects"
msgstr "プロジェクト"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "リリースノート"
@@ -974,7 +972,7 @@ msgstr "削除"
msgid "labels.remove-member"
msgstr "メンバーを削除"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "名前を変更"
diff --git a/frontend/translations/ko.po b/frontend/translations/ko.po
index d5db7f719b..62514452fc 100644
--- a/frontend/translations/ko.po
+++ b/frontend/translations/ko.po
@@ -36,11 +36,11 @@ msgstr "데모 계정을 생성하세요"
msgid "auth.create-demo-profile"
msgstr "그냥 해볼까요?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr "데모 서비스입니다. 실제 작업에 사용하지 마십시오. 생성된 프로젝트는 주기적으로 삭제될 것입니다."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "비밀번호를 잊어버리셨나요?"
@@ -48,7 +48,7 @@ msgstr "비밀번호를 잊어버리셨나요?"
msgid "auth.fullname"
msgstr "이름 (성명)"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "내 계정에 로그인하기"
@@ -56,31 +56,31 @@ msgstr "내 계정에 로그인하기"
msgid "auth.login-here"
msgstr "여기서 로그인하세요"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "로그인"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr "펜팟은 디자인과 코딩의 협업을 위한 무료 오픈소스 디자인 도구입니다"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "깃허브 (GitHub)"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "깃랩 (GitLab)"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "구글 (Google)"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "오픈아이디 (OpenID)"
@@ -104,7 +104,7 @@ msgstr "비밀번호 복구를 위한 링크를 메일함으로 보냈어요"
msgid "auth.notifications.team-invitation-accepted"
msgstr "팀에 성공적으로 합류했어요"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "비밀번호"
@@ -132,7 +132,7 @@ msgstr "비밀번호를 잊으셨나요?"
msgid "auth.recovery-submit"
msgstr "비밀번호를 바꾸세요"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "아직 계정이 없으신가요?"
@@ -140,7 +140,7 @@ msgstr "아직 계정이 없으신가요?"
msgid "auth.register-account-tagline"
msgstr "대시보드와 이메일 에서 당신을 어떻게 호칭할지 저희에게 알려주세요."
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "계정을 생성하세요"
@@ -157,7 +157,7 @@ msgstr "계정을 생성하세요"
msgid "auth.sidebar-tagline"
msgstr "디자인과 프로토타이핑을 위한 오픈소스 솔루션."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "서비스 정책"
@@ -169,7 +169,7 @@ msgstr "새로운 계정을 생성하시면, 사용자는 펜팟의 서비스
msgid "auth.verification-email-sent"
msgstr "검증 메일을 ~에 보냈어요"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "작업용 이메일"
@@ -178,7 +178,7 @@ msgstr "작업용 이메일"
msgid "branding-illustrations-marketing-pieces"
msgstr "...브랜딩, 일러스트레이션, 마케팅 자료 등."
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "발행하기"
@@ -247,7 +247,7 @@ msgstr "프로토타입을 공유해요"
msgid "common.share-link.view-all"
msgstr "모두 선택해요"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "발행취소하기"
@@ -297,7 +297,7 @@ msgstr "인터페이스 둘러보기"
msgid "dashboard.access-tokens.copied-success"
msgstr "복사된 토큰"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "새로운 토큰 생성하기"
@@ -305,11 +305,11 @@ msgstr "새로운 토큰 생성하기"
msgid "dashboard.access-tokens.create.success"
msgstr "엑세스 토큰이 성공적으로 생성되었습니다."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "\"새로운 토큰 생성하기\" 버튼을 눌러 토큰을 생성하십시오."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "현재 가지고 있는 토큰이 없습니다."
@@ -333,23 +333,23 @@ msgstr "90일"
msgid "dashboard.access-tokens.expiration-never"
msgstr "기한 없음"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "%s에 만료되었습니다"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "%s에 만료됩니다"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "만료 기한 없음"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "개인용 엑세스 토큰"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"개인용 엑세스 토큰은 펜팟의 로그인/암호 인증 시스템의 대안으로 사용되며, 어플리케이션의 펜팟 내부 API 엑세스를 위해 사용될 수 "
@@ -371,7 +371,7 @@ msgstr "공유 라이브러리로 추가하기"
msgid "dashboard.change-email"
msgstr "이메일을 변경해요"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(복사)"
@@ -423,7 +423,7 @@ msgstr "내보내요"
msgid "errors.invalid-recovery-token"
msgstr "복구 토큰이 유효하지 않습니다."
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "흐림"
@@ -431,31 +431,31 @@ msgstr "흐림"
msgid "inspect.attributes.blur.value"
msgstr "값"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "채우기"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "소스 이미지 다운로드"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "높이"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "폭"
@@ -494,15 +494,15 @@ msgstr "위"
msgid "inspect.attributes.layout.width"
msgstr "폭"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "그림자"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "사이즈와 위치"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "선"
@@ -535,91 +535,91 @@ msgstr "단색"
msgid "inspect.attributes.stroke.width"
msgstr "폭"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "타이포그래피"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "폰트 패밀리"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "폰트 사이즈"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "폰트 스타일"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "취소선"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "밑줄"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "텍스트 변형"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "소문자"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "대문자"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "코드"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "원"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "컴포넌트"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "커브"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "보드"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "그룹"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "이미지"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "마스크"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "패스"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "사각형"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "텍스트"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "정보"
@@ -635,7 +635,7 @@ msgstr "허가"
msgid "labels.active"
msgstr "활성화"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "커스텀 폰트 추가"
@@ -643,7 +643,7 @@ msgstr "커스텀 폰트 추가"
msgid "labels.admin"
msgstr "관리자"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "전체"
@@ -659,19 +659,19 @@ msgstr "뒤로"
msgid "labels.bad-gateway.main-message"
msgstr "잘못된 경로"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "취소"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "닫기"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "코멘트"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "커뮤니티"
@@ -679,7 +679,7 @@ msgstr "커뮤니티"
msgid "labels.confirm-password"
msgstr "비밀번호 확인하기"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "계속하기"
@@ -687,7 +687,7 @@ msgstr "계속하기"
msgid "labels.copy-invitation-link"
msgstr "링크 복사하기"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "생성하기"
@@ -707,15 +707,15 @@ msgstr "커스텀 폰트"
msgid "labels.dashboard"
msgstr "대시보드"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "삭제하기"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "코멘트 삭제하기"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "스레드 제거하기"
@@ -723,11 +723,11 @@ msgstr "스레드 제거하기"
msgid "labels.delete-invitation"
msgstr "초대장 제거하기"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "초안"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "편집"
@@ -743,11 +743,11 @@ msgstr "작성자"
msgid "labels.expired-invitation"
msgstr "기한이 만료된"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "내보내기"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "폰트 패밀리"
@@ -755,11 +755,11 @@ msgstr "폰트 패밀리"
msgid "labels.font-providers"
msgstr "폰트 공급자"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "스타일"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "폰트"
@@ -767,7 +767,7 @@ msgstr "폰트"
msgid "labels.go-back"
msgstr "뒤로 가기"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "고객센터"
@@ -787,7 +787,7 @@ msgstr "뷰어"
msgid "labels.webhooks"
msgstr "웹훅"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "새 코멘트 쓰기"
@@ -827,11 +827,11 @@ msgstr "웹훅 만들기"
msgid "modals.create-webhook.title"
msgstr "웹훅 생성하기"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "대회 지우기"
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "대화 지우기"
@@ -851,19 +851,19 @@ msgstr "파일 삭제중"
msgid "modals.delete-file-multi-confirm.accept"
msgstr "여러 파일 지우기"
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "폰트 스타일 지우는 중"
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "폰트 지우는 중"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "정말로 해당 페이지를 지우시겠습니까?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "페이지 삭제"
diff --git a/frontend/translations/lt.po b/frontend/translations/lt.po
index 5cb215ddc0..875c1f2b26 100644
--- a/frontend/translations/lt.po
+++ b/frontend/translations/lt.po
@@ -35,13 +35,13 @@ msgstr "Kurti demonstracinę paskyrą"
msgid "auth.create-demo-profile"
msgstr "Norite tik išmėginti?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Tai yra DEMONSTRACINĖ versija, NEKURKITE tikrų darbų, nes projektai "
"periodiškai - šalinami."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Pamiršote slaptažodį?"
@@ -53,27 +53,27 @@ msgstr "Vardas ir Pavardė"
msgid "auth.login-here"
msgstr "Prisijungimas čia"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Prisijungti"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -97,7 +97,7 @@ msgstr "Slaptažodžio atkūrimo nuoroda išsiųsta į jūsų pašto dėžutę."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Sėkmingai prisijungė prie komandos"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Slaptažodis"
@@ -125,11 +125,11 @@ msgstr "Pamiršote slaptažodį?"
msgid "auth.recovery-submit"
msgstr "Slaptažodžio keitimas"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Dar neturite paskyros?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Sukurti paskyrą"
@@ -142,7 +142,7 @@ msgstr "Sukurti paskyrą"
msgid "auth.sidebar-tagline"
msgstr "Atviro kodo dizaino ir prototipų kūrimo sprendimas."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Paslaugų teikimo sąlygos"
@@ -150,7 +150,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:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Paskelbti"
@@ -223,7 +223,7 @@ msgstr "Dalinkitės prototipais"
msgid "common.share-link.view-all"
msgstr "Rinktis viską"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Atšaukti paskelbimą"
@@ -269,7 +269,7 @@ msgstr "Pridėti kaip bendrinamą biblioteką"
msgid "dashboard.change-email"
msgstr "Keisti el. paštą"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(kopija)"
@@ -377,26 +377,26 @@ msgstr "Įtraukti bendrai naudojamus bibliotekos komponentus į failų bibliotek
msgid "dashboard.export.title"
msgstr "Eksportuoti failus"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Šriftas ištrintas"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Atmesti visus"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Vis dar neįdiegėte tinkintų šriftų."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "Pridėtas 1 šriftas"
msgstr[1] "Pridėti %s šriftai"
msgstr[2] "Šriftas(-ai) pridėti"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -406,21 +406,21 @@ msgstr ""
"šriftų šeima**. Galite įkelti šių formatų šriftus: **TTF, OTF ir WOFF** "
"(reikės tik vieno)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Turėtumėte įkelti tik tuos šriftus, kurie jums priklauso arba kuriuos "
"turite licenciją naudoti \"Penpot\". Daugiau informacijos rasite "
-"[Penpot'paslaugų teikimo sąlygų](%s) skyriuje "
-"\"Turinio teisės\". Taip pat galite paskaityti apie [šriftų "
+"[Penpot'paslaugų teikimo sąlygų](%s) skyriuje \"Turinio teisės\". Taip pat "
+"galite paskaityti apie [šriftų "
"licencijavimą](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Įkelti viską"
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Importuokite Penpot failus"
@@ -432,7 +432,7 @@ msgstr "Oi! Nepavyko importuoti šio failo"
msgid "dashboard.import.import-error"
msgstr "Iškilo problema importuojant failą. Failas nebuvo importuotas."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Kai kuriuose failuose buvo netinkamų objektų, kurie buvo pašalinti."
@@ -464,7 +464,7 @@ msgstr "Įkeliami duomenys į serverį (%s/%s)"
msgid "dashboard.import.progress.upload-media"
msgstr "Įkeliamas failas: %s"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Naujas failas"
@@ -472,7 +472,7 @@ msgstr "Naujas failas"
msgid "dashboard.new-project"
msgstr "+ Naujas projektas"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Naujas projektas"
@@ -504,7 +504,7 @@ msgstr "%s nariai"
msgid "dashboard.open-in-new-tab"
msgstr "Atidarykite failą naujame skirtuke"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Nustatymai"
diff --git a/frontend/translations/lv.po b/frontend/translations/lv.po
index fde32f76c4..fb92b1908f 100644
--- a/frontend/translations/lv.po
+++ b/frontend/translations/lv.po
@@ -1,16 +1,16 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2025-01-29 22:23+0000\n"
+"PO-Revision-Date: 2025-03-20 13:42+0000\n"
"Last-Translator: Anonymous \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.10-dev\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.11-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
@@ -39,13 +39,13 @@ msgstr "Izveidot demonstrācijas kontu"
msgid "auth.create-demo-profile"
msgstr "Gribat tikai pamēģināt?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Šis ir IZRĀDĪŠANAS pakalpojums, kas NAV IZMANTOJAMS īstam darbam, jo "
"projekti ik pēc noteikta laika posma tiks izdzēsti."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Aizmirsta parole?"
@@ -53,7 +53,7 @@ msgstr "Aizmirsta parole?"
msgid "auth.fullname"
msgstr "Pilns vārds"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "Pieteikties manā kontā"
@@ -61,31 +61,31 @@ msgstr "Pieteikties manā kontā"
msgid "auth.login-here"
msgstr "Pieteikties šeit."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Pieteikties"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr "Penpot ir bezmaksas atvērtā pirmkoda dizaina rīks dizaina un koda sadarbībai"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "AtvērtoID (OpenID)"
@@ -105,13 +105,13 @@ msgstr ""
#: src/app/main/ui/auth/recovery_request.cljs:33
msgid "auth.notifications.recovery-token-sent"
-msgstr "Paroles atkopšanas saite ir nosūtīta e-pastā."
+msgstr "Paroles atkopes saite ir nosūtīta e-pastā."
#: src/app/main/ui/auth/verify_token.cljs:49
msgid "auth.notifications.team-invitation-accepted"
msgstr "Pievienošanās komandai bija veiksmīga"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Parole"
@@ -133,13 +133,13 @@ msgstr "Mēs nosūtīsim e-pasta ziņojumu ar norādēm"
#: src/app/main/ui/auth/recovery_request.cljs:94
msgid "auth.recovery-request-title"
-msgstr "Aizmirsat paroli?"
+msgstr "Aizmirsta parole?"
#: src/app/main/ui/auth/recovery.cljs:71
msgid "auth.recovery-submit"
msgstr "Nomainīt paroli"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Vēl nav konta?"
@@ -153,7 +153,7 @@ msgstr ""
msgid "auth.register-account-title"
msgstr "Tavs vārds"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Izveidot kontu"
@@ -178,7 +178,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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Pakalpojumu sniegšanas noteikumi"
@@ -192,7 +192,7 @@ msgstr ""
msgid "auth.verification-email-sent"
msgstr "Mēs esam nosūtījuši apstiprinājuma e-pasta ziņojumu uz"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "Darba e-pasta adrese"
@@ -201,7 +201,11 @@ msgstr "Darba e-pasta adrese"
msgid "branding-illustrations-marketing-pieces"
msgstr "... zīmolrades, ilustrācijām, mārketinga materiāliem utt."
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/comments.cljs:532
+msgid "comments.mentions.not-found"
+msgstr "Netika atrasts neviens cilvēks @%s"
+
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Publicēt"
@@ -272,7 +276,7 @@ msgstr "Kopīgot prototipus"
msgid "common.share-link.view-all"
msgstr "Atlasīt visu"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Atcelt publikāciju"
@@ -324,7 +328,7 @@ msgstr "Saskarnes caurskate"
msgid "dashboard.access-tokens.copied-success"
msgstr "Pilnvara ievietota starpliktuvē"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Izveidot jaunu pilnvaru"
@@ -332,11 +336,11 @@ msgstr "Izveidot jaunu pilnvaru"
msgid "dashboard.access-tokens.create.success"
msgstr "Piekļuves pilnvara ir veiksmīgi izveidota."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Jānospiež poga \"Izveidot jaunu pilnvaru\", lai izveidotu kādu."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "Pagaidām vēl nav pilnvaru."
@@ -360,23 +364,23 @@ msgstr "90 dienas"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Nekad"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Izbeidzās %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Derīgs līdz %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
-msgstr "Bez derīguma termiņa"
+msgstr "Bez derīguma datuma"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Privātās piekļuves pilnvaras"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Privātās piekļuves pilnvaras darbojas kā alternatīva mūsu "
@@ -385,12 +389,16 @@ msgstr ""
#: src/app/main/ui/settings/access_tokens.cljs:143
msgid "dashboard.access-tokens.token-will-expire"
-msgstr "Pilnvara ir derīga līdz %s"
+msgstr "Pilnvara beigsies %s"
#: src/app/main/ui/settings/access_tokens.cljs:144
msgid "dashboard.access-tokens.token-will-not-expire"
msgstr "Pilnvarai nav derīguma beigu datuma"
+#: src/app/main/ui/dashboard/placeholder.cljs:35
+msgid "dashboard.add-file"
+msgstr "Pievienot datni"
+
#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612
msgid "dashboard.add-shared"
msgstr "Pievienot kā koplietojamu bibliotēku"
@@ -399,7 +407,7 @@ msgstr "Pievienot kā koplietojamu bibliotēku"
msgid "dashboard.change-email"
msgstr "Mainīt e-pasta adresi"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(kopija)"
@@ -435,23 +443,23 @@ msgstr "Divkāršot"
msgid "dashboard.duplicate-multi"
msgstr "Divkāršot %s datnes"
-#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:285
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
msgid "dashboard.empty-placeholder-drafts-subtitle"
msgstr "Tiklīdz projekta dalībnieks izveidos melnrakstu, tas šeit tiks parādīts."
-#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:280
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
msgid "dashboard.empty-placeholder-drafts-title"
msgstr "Vēl nav neviena melnraksta."
-#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:286
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
msgid "dashboard.empty-placeholder-files-subtitle"
msgstr "Tiklīdz projekta dalībnieks izveidos datni, tā šeit tiks parādīta."
-#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:281
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
msgid "dashboard.empty-placeholder-files-title"
msgstr "Vēl nav nevienas datnes."
-#: src/app/main/ui/dashboard/placeholder.cljs:40
+#: src/app/main/ui/dashboard/placeholder.cljs:77
#, markdown
msgid "dashboard.empty-placeholder-libraries"
msgstr ""
@@ -467,11 +475,11 @@ msgstr ""
"datnes vai pievienot no mūsu [bibliotēkām un "
"sagatavēm](https://penpot.app/libraries-templates)!"
-#: src/app/main/ui/dashboard/placeholder.cljs:36
+#: src/app/main/ui/dashboard/placeholder.cljs:73
msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role"
msgstr "Šeit parādīsies projektam pievienotās bibliotēkas."
-#: src/app/main/ui/dashboard/placeholder.cljs:33
+#: src/app/main/ui/dashboard/placeholder.cljs:70
msgid "dashboard.empty-placeholder-libraries-title"
msgstr "Vēl nav nevienas bibliotēkas."
@@ -565,36 +573,36 @@ msgstr "Iekļaut koplietojamos bibliotēkas līdzekļus datņu bibliotēkās"
msgid "dashboard.export.title"
msgstr "Izgūt datnes"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Fonts izdzēsts"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Noraidīt visu"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Šeit tiks parādīti augšupielādētie pielāgotie fonti."
-#: src/app/main/ui/dashboard/fonts.cljs:448
+#: src/app/main/ui/dashboard/fonts.cljs:450
msgid "dashboard.fonts.empty-placeholder-viewer"
msgstr "Vēl nav neviena pielāgota fonta."
-#: src/app/main/ui/dashboard/fonts.cljs:449
+#: src/app/main/ui/dashboard/fonts.cljs:451
msgid "dashboard.fonts.empty-placeholder-viewer-sub"
msgstr ""
"Tiklīdz projekta dalībnieks augšupielādēs pielāgotu fontu, tas šeit tiks "
"parādīts."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "Nav pievienoti fonti"
msgstr[1] "Fonts pievienots"
msgstr[2] "%s fonti pievienoti"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -603,20 +611,20 @@ msgstr ""
"saimes nosaukumu tiks apkopoti kā **viena fontu saime**. Var augšupielādēt "
"fontus šādos veidolos: **TTF, OTF un WOFF** (būs nepieciešams tikai viens)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Vajadzētu augšupielādēt tikai sev piederošus fontus vai tos, kuriem ir "
"licence to izmantošanai Penpot. Vairāk var uzzināt [Penpot pakalpojuma "
-"sniegšanas noteikumos](%s). Varētu būt noderīgi "
-"izlasīt arī par [fontu licencēšanu](https://www.typography.com/faq)."
+"sniegšanas noteikumos](%s). Varētu būt noderīgi izlasīt arī par [fontu "
+"licencēšanu](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Augšupielādēt visu"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -627,7 +635,7 @@ msgstr ""
"[Transfonter](https://transfonter.org/), lai izveidotu tīmekļa fontus un "
"novērstu kļūdas. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Ievietot Penpot datnes"
@@ -639,21 +647,33 @@ msgstr "Ak vai! Šo datni nevarēja ievietot"
msgid "dashboard.import.analyze-error.components-v2"
msgstr "Datne ar v2 sastāvdaļām ir aktivizēta, bet šī komanda to vēl nenodrošina."
+#: src/app/main/ui/dashboard.cljs:247
+msgid "dashboard.import.bad-url"
+msgstr "Ievietošana neizdevās. Sagataves URL ir nepareizs"
+
+#: src/app/main/ui/dashboard.cljs:241
+msgid "dashboard.import.error"
+msgstr "Ievietošana neizdevās. Lūgums mēģināt vēlreiz"
+
#: src/app/main/ui/dashboard/import.cljs:292
msgid "dashboard.import.import-error"
msgstr "Datnes ievietošanas laikā radās sarežģījumi. Datne netika ievietota."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgid_plural "dashboard.import.import-message"
msgstr[0] "%s datņu tika veiksmīgi ievietotas."
msgstr[1] "%s datne tika veiksmīgi ievietota."
msgstr[2] "%s datnes tika veiksmīgi ievietotas."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Dažās datnēs bija nederīgi objekti, kuri tika noņemti."
+#: src/app/main/ui/dashboard.cljs:248
+msgid "dashboard.import.no-perms"
+msgstr "Nav atļaujas ievietot šajā komandā"
+
#: src/app/main/ui/dashboard/import.cljs:129
msgid "dashboard.import.progress.process-colors"
msgstr "Krāsu apstrāde"
@@ -690,27 +710,27 @@ msgstr "Uzaicināt personas"
msgid "dashboard.leave-team"
msgstr "Atstāt komandu"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Bibliotēkas un veidnes"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
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:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "Veidnes ievietošanas laikā radās sarežģījumi. Veidne netika ievietota."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Bibliotēkas"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "ielādē datnes …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "notiek fontu ielāde …"
@@ -726,11 +746,11 @@ msgstr "Pārvietot %s datnes uz"
msgid "dashboard.move-to-other-team"
msgstr "Pārvietot uz citu komandu"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Jauna datne"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Jauna datne"
@@ -738,7 +758,7 @@ msgstr "Jauna datne"
msgid "dashboard.new-project"
msgstr "+ Jauns projekts"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Jauns projekts"
@@ -750,7 +770,7 @@ msgstr "“%s” nav atrasta neviena atbilstība"
msgid "dashboard.no-projects-placeholder"
msgstr "Šeit būs redzami piespraustie projekti"
-#: src/app/main/ui/dashboard/comments.cljs:84
+#: src/app/main/ui/dashboard/comments.cljs:90
msgid "dashboard.notifications"
msgstr "Paziņojumi"
@@ -762,6 +782,10 @@ 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:260
+msgid "dashboard.notifications.notifications-saved"
+msgstr "Paziņojumu iestatījumi atjaunināti"
+
#: src/app/main/ui/settings/password.cljs:36
msgid "dashboard.notifications.password-saved"
msgstr "Parole ir veiksmīgi saglabāta."
@@ -778,7 +802,7 @@ msgstr "Dalībieki: %s"
msgid "dashboard.open-in-new-tab"
msgstr "Atvērt datni jaunā cilnē"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Opcijas"
@@ -806,6 +830,18 @@ msgstr "Tev tagad šajā komandā ir skatīšanās tiesības."
msgid "dashboard.pin-unpin"
msgstr "Piespraust/Atspraust"
+#: src/app/main/ui/dashboard.cljs:208
+msgid "dashboard.plugins.bad-url"
+msgstr "Spraudņa URL ir nepareizs"
+
+#: src/app/main/ui/dashboard.cljs:206
+msgid "dashboard.plugins.parse-error"
+msgstr "Nevar apstrādāt spraudņa manifestu"
+
+#: src/app/main/ui/dashboard.cljs:169
+msgid "dashboard.plugins.try-plugin"
+msgstr "Izmēģināt spraudni: "
+
#: src/app/main/ui/dashboard/projects.cljs:55
msgid "dashboard.projects-title"
msgstr "Projekti"
@@ -843,7 +879,67 @@ msgstr "Atlasīt saskarnes valodu"
msgid "dashboard.select-ui-theme"
msgstr "Atlasīt dizainu"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/settings/notifications.cljs:57
+msgid "dashboard.settings.notifications.dashboard-comments.all"
+msgstr "Visas piebildes, pieminēšanas un atbildes"
+
+#: src/app/main/ui/settings/notifications.cljs:59
+msgid "dashboard.settings.notifications.dashboard-comments.none"
+msgstr "Neviena"
+
+#: src/app/main/ui/settings/notifications.cljs:58
+msgid "dashboard.settings.notifications.dashboard-comments.partial"
+msgstr "Tikai pieminēšanas un atbildes"
+
+#: src/app/main/ui/settings/notifications.cljs:54
+msgid "dashboard.settings.notifications.dashboard-comments.title"
+msgstr "Datņu piebildes"
+
+#: src/app/main/ui/settings/notifications.cljs:53
+msgid "dashboard.settings.notifications.dashboard.title"
+msgstr "Pārskata paneļa paziņojumi"
+
+#: src/app/main/ui/settings/notifications.cljs:67
+msgid "dashboard.settings.notifications.email-comments.all"
+msgstr "Visas piebildes, pieminēšanas un atbildes"
+
+#: src/app/main/ui/settings/notifications.cljs:69
+msgid "dashboard.settings.notifications.email-comments.none"
+msgstr "Neviena"
+
+#: src/app/main/ui/settings/notifications.cljs:68
+msgid "dashboard.settings.notifications.email-comments.partial"
+msgstr "Tikai pieminēšanas un atbildes"
+
+#: src/app/main/ui/settings/notifications.cljs:64
+msgid "dashboard.settings.notifications.email-comments.title"
+msgstr "Datņu piebildes"
+
+#: src/app/main/ui/settings/notifications.cljs:76
+msgid "dashboard.settings.notifications.email-invites.all"
+msgstr "Visi uzaicinājumu un pieprasījumu veidi"
+
+#: src/app/main/ui/settings/notifications.cljs:79
+msgid "dashboard.settings.notifications.email-invites.none"
+msgstr "Neko"
+
+#: src/app/main/ui/settings/notifications.cljs:73
+msgid "dashboard.settings.notifications.email-invites.title"
+msgstr "Uzaicinājumi un pieprasījumi"
+
+#: src/app/main/ui/settings/notifications.cljs:63
+msgid "dashboard.settings.notifications.email.title"
+msgstr "E-pasta paziņojumi"
+
+#: src/app/main/ui/settings/notifications.cljs:84
+msgid "dashboard.settings.notifications.submit"
+msgstr "Atjaunināt iestatījumus"
+
+#: src/app/main/ui/settings/notifications.cljs:52
+msgid "dashboard.settings.notifications.title"
+msgstr "Paziņojumi"
+
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Rādīt visas datnes"
@@ -873,7 +969,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Datne tika sekmīgi pārvietota"
@@ -917,15 +1013,15 @@ msgstr "Atcelt bibliotēkas publicēšanu"
msgid "dashboard.update-settings"
msgstr "Atjaunināt iestatījumus"
-#: src/app/main/ui/dashboard/sidebar.cljs:969
+#: src/app/main/ui/dashboard/sidebar.cljs:970
msgid "dashboard.upgrade-plan.no-limits"
msgstr "Nav ierobežojumu radošumam"
-#: src/app/main/ui/dashboard/sidebar.cljs:968
+#: src/app/main/ui/dashboard/sidebar.cljs:969
msgid "dashboard.upgrade-plan.penpot-free"
msgstr "Bezmaksas Penpot"
-#: src/app/main/ui/dashboard/sidebar.cljs:971
+#: src/app/main/ui/dashboard/sidebar.cljs:972
msgid "dashboard.upgrade-plan.power-up"
msgstr "Palielināt jaudu"
@@ -984,7 +1080,7 @@ msgstr "E-pasta adrese"
msgid "dashboard.your-name"
msgstr "Vārds"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Mans Penpot"
@@ -1004,11 +1100,11 @@ msgstr "Atjaunināmās sastāvdaļas:"
msgid "ds.confirm-allow"
msgstr "Ļaut"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Atcelt"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Labi"
@@ -1020,7 +1116,7 @@ msgstr "Vai esat pārliecināti?"
msgid "errors.auth-provider-not-allowed"
msgstr "Autentifikācijas nodrošinātājs nav atļauts šim profilam"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Autentifikācijas nodrošinātājs nav konfigurēts."
@@ -1028,11 +1124,11 @@ msgstr "Autentifikācijas nodrošinātājs nav konfigurēts."
msgid "errors.auth.unable-to-login"
msgstr "Šķiet, ka neesi autentificēts vai ir beidzies sesijas derīgums."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "Fontu %s nevarēja ielādēt"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "Fontus %s nevarēja ielādēt"
@@ -1040,7 +1136,7 @@ msgstr "Fontus %s nevarēja ielādēt"
msgid "errors.cannot-upload"
msgstr "Nevar augšupielādēt multivides datni."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Izmantotais pārlūks nevar veikt šo darbību"
@@ -1052,7 +1148,7 @@ msgstr "E-pasta adrese jau tiek izmantota"
msgid "errors.email-already-validated"
msgstr "E-pasta adrese jau ir apliecināta."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "E-pastu nevar izmantot kā paroli"
@@ -1099,7 +1195,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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Noticis kaut kas nelāgs."
@@ -1112,14 +1208,13 @@ msgstr "Nederīga krāsa"
msgid "errors.invalid-email"
msgstr "Lūgums ievadīt derīgu e-pasta adresi"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "Apstiprinājuma e-pastam jāatbilst"
#: src/app/main/ui/auth/recovery.cljs:32
msgid "errors.invalid-recovery-token"
-msgstr "Atkopšanas tekstvienība nav derīga."
+msgstr "Atkopes tekstvienība nav derīga."
#: src/app/main/ui/static.cljs:69
msgid "errors.invite-invalid"
@@ -1129,7 +1224,7 @@ msgstr "Nederīgs ielūgums"
msgid "errors.invite-invalid.info"
msgstr "Iespējams, ka šis uzaicinājums ir atcelts vai ir beidzies tā derīgums."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "LDAP autentifikācija ir atspējota."
@@ -1179,7 +1274,7 @@ msgstr "Parolē ir jābūt vismaz 8 rakstzīmēm"
msgid "errors.paste-data-validation"
msgstr "Starpliktuvē ir nederīgi dati"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Profils ir bloķēts"
@@ -1255,12 +1350,11 @@ msgstr "Pārbaudes laikā atgadījās neparedzēta kļūda"
msgid "errors.webhooks.unexpected-status"
msgstr "Neparedzēts statuss %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "E-pasta adrese vai parole nav pareiza."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Vecā parole nav pareiza"
@@ -1309,11 +1403,11 @@ msgstr "Šeit, lai palīdzētu ar tehniskajiem jautājumiem."
msgid "feedback.twitter-title"
msgstr "X atbalsta konts"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Radās kļūda"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Aizmiglošana"
@@ -1321,31 +1415,31 @@ msgstr "Aizmiglošana"
msgid "inspect.attributes.blur.value"
msgstr "Vērtība"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Aizpildījums"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Lejupielādēt avota attēlu"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Augstums"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Platums"
@@ -1384,15 +1478,15 @@ msgstr "Augša"
msgid "inspect.attributes.layout.width"
msgstr "Platums"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Ēna"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Izmērs un novietojums"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Vilkums"
@@ -1429,141 +1523,141 @@ msgstr "Nepārtrauktā"
msgid "inspect.attributes.stroke.width"
msgstr "Platums"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Burtu stils un veids"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Fontu saime"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Fonta izmērs"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Fonta stils"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Fonta Treknums"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Burtu atstarpes"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Līnijas augstums"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Teksta noformējums"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Nav"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Pārsvītrojums"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Pasvītrojums"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Teksta transformācija"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Mazie burti"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Nav"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Virsraksta stils"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "Atiestatīt"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Lielie burti"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
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/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Vairāk informācijas par apskatīšanu"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr "Jāatlasa apveids, plātne vai kopa, lai apskatītu to īpašības un kodu"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Kods"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Aplis"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Sastāvdaļa"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Līkne"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Plātne"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Kopa"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Attēls"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Maska"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "Atlasīti: %s"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Ceļš"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Taisnstūris"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Teksts"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Infomācija"
@@ -1583,15 +1677,15 @@ msgstr "Piekļuves pilnvaras"
msgid "labels.active"
msgstr "Aktīvs"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.add"
msgstr "Pievienot"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Pievienot pielāgotu fontu"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.adding"
msgstr "Pievieno..."
@@ -1603,7 +1697,7 @@ msgstr "Pārvaldnieks"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Visi"
@@ -1625,7 +1719,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Nepareiza vārteja"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Atcelt"
@@ -1633,27 +1727,27 @@ msgstr "Atcelt"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Aizvērt"
-#: src/app/main/ui/workspace/tokens/sets.cljs:180
+#: src/app/main/ui/workspace/tokens/sets.cljs:219
msgid "labels.collapse"
msgstr "Sakļaut"
-#: src/app/main/ui/comments.cljs:812
+#: src/app/main/ui/comments.cljs:881
msgid "labels.comment"
msgstr "Piebilde"
-#: src/app/main/ui/comments.cljs:816
+#: src/app/main/ui/comments.cljs:885
msgid "labels.comment.mark-as-solved"
msgstr "Atzīmēt kā atrisinātu"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Komentāri"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Kopiena"
@@ -1661,7 +1755,7 @@ msgstr "Kopiena"
msgid "labels.confirm-password"
msgstr "Apstiprināt paroli"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Turpināt"
@@ -1681,7 +1775,7 @@ msgstr "Kopēt saiti"
msgid "labels.copyright"
msgstr "Kaleidos @2024"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Izveidot"
@@ -1701,15 +1795,15 @@ msgstr "Pielāgotie fonti"
msgid "labels.dashboard"
msgstr "Pārskata panelis"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Dzēst"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Dzēst komentāru"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Dzēst pavedienu"
@@ -1729,15 +1823,15 @@ msgstr "Izstrādātājs"
msgid "labels.director"
msgstr "Direktors"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "Atmest"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Melnraksti"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Labot"
@@ -1757,7 +1851,7 @@ msgstr "Notikums"
msgid "labels.expired-invitation"
msgstr "Beidzies derīgums"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Izgūt"
@@ -1773,7 +1867,7 @@ msgstr "Atsauksme nosūtīta"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Fontu saime"
@@ -1781,11 +1875,11 @@ msgstr "Fontu saime"
msgid "labels.font-providers"
msgstr "Fontu nodrošinātāji"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Stili"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Fonti"
@@ -1797,11 +1891,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:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "GitHub repozitorijs"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Sniegt atsauksmi"
@@ -1813,15 +1907,15 @@ msgstr "Atpakaļ"
msgid "labels.graphic-design"
msgstr "Grafiskais dizains"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Palīdzības centrs"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Paslēpt atrisinātos komentārus"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:355
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:413
msgid "labels.import"
msgstr "Ievietot"
@@ -1829,7 +1923,7 @@ msgstr "Ievietot"
msgid "labels.inactive"
msgstr "Neaktīvs"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Instalētie fonti"
@@ -1855,11 +1949,11 @@ msgstr "Uzaicinājumi"
msgid "labels.language"
msgstr "Valoda"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Bibliotēkas un veidnes"
-#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:114, src/app/main/ui/dashboard/grid.cljs:133, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:53, src/app/main/ui/ds/product/loader.cljs:52, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:126, src/app/main/ui.cljs:67, src/app/main/ui.cljs:105, src/app/main/ui.cljs:124
+#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:115, src/app/main/ui/dashboard/grid.cljs:134, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:98, src/app/main/ui/ds/product/loader.cljs:85, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:118, src/app/main/ui.cljs:66, src/app/main/ui.cljs:104, src/app/main/ui.cljs:123
msgid "labels.loading"
msgstr "Lādē…"
@@ -1871,7 +1965,7 @@ msgstr "Pieteikties vai reģistrēties"
msgid "labels.login"
msgstr "Pieteikties"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Atteikties"
@@ -1891,11 +1985,11 @@ msgstr "Dalībnieki"
msgid "labels.new-password"
msgstr "Jaunā parole"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Nākamais"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "Jūs esat pieķerti! Šeit tiks parādīti jaunu komentāru paziņojumi."
@@ -1919,7 +2013,11 @@ msgstr "Šī lapa, iespējams, nepastāv, vai arī nav atļauju tai piekļūt."
msgid "labels.not-found.main-message"
msgstr "Ups!"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/settings/sidebar.cljs:99
+msgid "labels.notifications"
+msgstr "Paziņojumi"
+
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "0 datņu"
@@ -1953,7 +2051,7 @@ msgstr "Vecā parole"
msgid "labels.only-yours"
msgstr "Tikai mans"
-#: src/app/main/ui/comments.cljs:545, src/app/main/ui/comments.cljs:822, src/app/main/ui/comments.cljs:886, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:295, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:324
+#: src/app/main/ui/comments.cljs:891, src/app/main/ui/comments.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:293, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:322
msgid "labels.options"
msgstr "Iespējas"
@@ -1981,7 +2079,7 @@ msgstr "Parole"
msgid "labels.pending-invitation"
msgstr "Gaidīšana"
-#: src/app/main/ui/comments.cljs:657, src/app/main/ui/comments.cljs:690, src/app/main/ui/comments.cljs:759
+#: src/app/main/ui/comments.cljs:678
msgid "labels.post"
msgstr "Ieraksts"
@@ -2005,7 +2103,7 @@ msgstr "Profils"
msgid "labels.projects"
msgstr "Projekti"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Laidiena apraksts"
@@ -2023,7 +2121,7 @@ msgstr "Noņemt"
msgid "labels.remove-member"
msgstr "Noņemt dalībnieku"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Pārdēvēt"
@@ -2031,23 +2129,23 @@ msgstr "Pārdēvēt"
msgid "labels.rename-team"
msgstr "Pārdēvēt grupu"
-#: src/app/main/ui/comments.cljs:598
+#: src/app/main/ui/comments.cljs:641
msgid "labels.replies"
msgstr "atbildes"
-#: src/app/main/ui/comments.cljs:603
+#: src/app/main/ui/comments.cljs:646
msgid "labels.replies.new"
msgstr "jaunas atbildes"
-#: src/app/main/ui/comments.cljs:597
+#: src/app/main/ui/comments.cljs:640
msgid "labels.reply"
msgstr "atbilde"
-#: src/app/main/ui/comments.cljs:602
+#: src/app/main/ui/comments.cljs:645
msgid "labels.reply.new"
msgstr "jauna atbilde"
-#: src/app/main/ui/comments.cljs:641
+#: src/app/main/ui/comments.cljs:721
msgid "labels.reply.thread"
msgstr "Atbildēt"
@@ -2067,15 +2165,15 @@ msgstr "Pamēģināt vēlreiz"
msgid "labels.role"
msgstr "Loma"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Saglabāt"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "Meklēt"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Meklēt fontu"
@@ -2099,7 +2197,7 @@ 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:252
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:247
msgid "labels.sets"
msgstr "Kopas"
@@ -2119,19 +2217,19 @@ msgstr "Kopīgot prototipu"
msgid "labels.shared-libraries"
msgstr "Bibliotēkas"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Rādīt visus komentārus"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Rādīt komentāru sarakstu"
-#: src/app/main/ui/workspace/comments.cljs:66, src/app/main/ui/workspace/comments.cljs:136
+#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139
msgid "labels.show-mentions"
msgstr "Rādīt tikai manas pieminēšanas"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Rādīt tikai manas piebildes"
@@ -2159,11 +2257,11 @@ msgstr "Komandas vadītājs"
msgid "labels.team-member"
msgstr "Komandas dalībnieks"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:183
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:182
msgid "labels.themes"
msgstr "Izskati"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Pamācības"
@@ -2179,15 +2277,15 @@ msgstr "Atjaunināt"
msgid "labels.update-team"
msgstr "Atjaunināt komandu"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Augšupielādēt"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Augšupielādēt pielāgotos fontus"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Augšupielādē…"
@@ -2203,7 +2301,7 @@ msgstr "Pārlūks"
msgid "labels.webhooks"
msgstr "Tīmekļa aizķeres"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Rakstīt jaunu komentāru"
@@ -2211,7 +2309,7 @@ msgstr "Rakstīt jaunu komentāru"
msgid "labels.you"
msgstr "(Jūs)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Mans konts"
@@ -2219,23 +2317,23 @@ msgstr "Mans konts"
msgid "labels.youtube"
msgstr "YouTube"
-#: src/app/main/ui/workspace/colorpicker.cljs:477, src/app/main/ui/workspace/colorpicker.cljs:478, src/app/main/ui/workspace/colorpicker.cljs:480
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
msgid "media.choose-image"
msgstr "Izvēlēties attēlu"
-#: src/app/main/ui/workspace/colorpicker.cljs:245
+#: src/app/main/ui/workspace/colorpicker.cljs:241
msgid "media.gradient"
msgstr "Pāreja"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "Attēls"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:77
+#: src/app/main/ui/inspect/attributes/common.cljs:77
msgid "media.image.short"
msgstr "att."
-#: src/app/main/ui/workspace/colorpicker.cljs:470
+#: src/app/main/ui/workspace/colorpicker.cljs:467
msgid "media.keep-aspect-ratio"
msgstr "Paturēt samēru"
@@ -2253,7 +2351,7 @@ msgstr "Ielādē attēlu…"
msgid "media.radial"
msgstr "Radiāls"
-#: src/app/main/ui/workspace/colorpicker.cljs:243
+#: src/app/main/ui/workspace/colorpicker.cljs:239
msgid "media.solid"
msgstr "Viengabalains"
@@ -2304,7 +2402,7 @@ msgstr "Mainīt e-pasta adresi"
msgid "modals.change-email.title"
msgstr "E-pasta maiņa"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Ievietot pilnvaru starpliktuvē"
@@ -2320,7 +2418,7 @@ msgstr "Nosaukums"
msgid "modals.create-access-token.name.placeholder"
msgstr "Nosaukums var palīdzēt saprast, kam pilnvara ir paredzēta"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Izveidot pilnvaru"
@@ -2344,15 +2442,15 @@ msgstr "Vērtuma URL"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://example.com/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Izdzēst pilnvaru"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "Vai tiešām izdzēst šo pilnvaru?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Izdzēst pilnvaru"
@@ -2372,23 +2470,23 @@ msgstr "Pēc konta noņemšanas tiks zaudēti visi pašreizējie projekti un arh
msgid "modals.delete-account.title"
msgstr "Vai tiešām izdzēst savu kontu?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Dzēst sarunu"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr "Vai tiešām izdzēst šo sarunu? Visas šī pavediena piebildes tiks izdzēstas."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Dzēst sarunu"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
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:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Izdzēst piezīmi"
@@ -2416,29 +2514,29 @@ msgstr "Vai tiešām izdzēst %s datnes?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Izdzēš %s datnes"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Vai tiešām izdzēst šo fontu stilu? Tas netiks ielādēts, ja tiek izmantots "
"datnē."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Fonta stila dzēšana"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr "Vai tiešām izdzēst šo fontu? Tas netiks ielādēts, ja tiek izmantots datnē."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Fonta dzēšana"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Vai tiešām izdzēst šo lapu?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Dzēst lapu"
@@ -2663,15 +2761,15 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "Jauns komandas īpašnieks"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Publicēt"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
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:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Publicēt tukšu bibliotēku"
@@ -2729,21 +2827,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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Atjaunināt"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Atcelt"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Atjaunināt sastāvdaļu koplietojamā bibliotēkā"
@@ -2763,12 +2861,12 @@ msgstr ""
#: src/app/main/ui/auth/recovery_request.cljs:114
msgid "not-found.login.sent-recovery"
-msgstr "Mēs nosūtījām atkopšanas e-pasta ziņojumu uz"
+msgstr "Mēs nosūtījām atkopes e-pasta ziņojumu uz"
#: src/app/main/ui/auth/recovery_request.cljs:116
msgid "not-found.login.sent-recovery-check"
msgstr ""
-"Jāpārbauda sava e-pasta kaste un jāklikšķina uz saites, lai izveidotu jaunu "
+"Jāpārbauda savs e-pasts un jāklikšķina uz saites, lai izveidotu jaunu "
"paroli."
#: src/app/main/ui/static.cljs:149
@@ -2907,29 +3005,29 @@ msgstr "Video pamācības"
msgid "onboarding-v2.before-start.title"
msgstr "Pirms sākt"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Abonēt Penpot biļetenu, lai uzzinātu par produkta izstrādes gaitu un "
"jaunumiem."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr ""
"Sūtīt man jaunumus par Penpot (emuāra ieraksti, video pamācības, "
"straumēšanas...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Mums rūp privātums, šeit var lasīt mūsu "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Mēs nosūtīsim tikai atbilstošus e-pasta ziņojumus. Atteikt abonēšanu var "
"jebkurā laikā ar abonēšanas atteikšanas saiti jebkurā mūsu biļetenā."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr ""
"Nosūtīt man produkta atjauninājumus (jaunas funkcijas, izlaidumi, "
@@ -3029,17 +3127,17 @@ msgstr "Komandu būs iespējams izveidot vēlāk."
msgid "onboarding.newsletter.accept"
msgstr "Jā, abonēt"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"Abonēšanas pieprasījums ir nosūtīts, un mēs nosūtīsim e-pasta ziņojumu tā "
"apstiprināšanai."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Konfidencialitātes politika."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Vai saņemt Penpot jaunumus?"
@@ -3232,7 +3330,7 @@ msgstr "Doties uz pieteikšanos"
msgid "settings.detach"
msgstr "Atdalīt"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Jaukts"
@@ -3430,7 +3528,7 @@ msgstr "Izveidot jaunu"
msgid "shortcuts.cut"
msgstr "Izgriezt"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Tālināt"
@@ -3530,7 +3628,7 @@ msgstr "Izkliedēt līmeniski"
msgid "shortcuts.hide-ui"
msgstr "Rādīt / paslēpt lietotāja saskarni"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Tuvināt"
@@ -3914,15 +4012,15 @@ msgstr "Tālummainīt uz atlasi"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Fontu nodrošinātāji - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Fonti - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Projekti - %s - Penpot"
@@ -3930,7 +4028,7 @@ msgstr "Projekti - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Meklēšana - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Koplietojamās bibliotēkas - %s - Penpot"
@@ -3938,7 +4036,7 @@ msgstr "Koplietojamās bibliotēkas - %s - Penpot"
msgid "title.default"
msgstr "Penpot - Modelēšanas brīvība komandām"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "Profils - piekļuves pilnvaras"
@@ -3946,6 +4044,10 @@ msgstr "Profils - piekļuves pilnvaras"
msgid "title.settings.feedback"
msgstr "Sniegt atsauksmes - Penpot"
+#: src/app/main/ui/settings/notifications.cljs:45
+msgid "title.settings.notifications"
+msgstr "Paziņojumi - Penpot"
+
#: src/app/main/ui/settings/options.cljs:76
msgid "title.settings.options"
msgstr "Iestatījumi - Penpot"
@@ -3978,7 +4080,7 @@ msgstr "Tīmekļa aizķeres - %s - Penpot"
msgid "title.viewer"
msgstr "%s - skatīšana - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -4076,7 +4178,7 @@ msgstr "Izlīdzināt stateniskās atstarpes (%s)"
msgid "workspace.align.vtop"
msgstr "Līdzināt pie augšas (%s)"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:174, src/app/main/ui/workspace/sidebar/assets.cljs:179
+#: src/app/main/ui/workspace/sidebar/assets.cljs:171
msgid "workspace.assets.add-library"
msgstr "Pievienot bibliotēku"
@@ -4085,11 +4187,11 @@ msgstr "Pievienot bibliotēku"
msgid "workspace.assets.assets"
msgstr "Līdzekļi"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Visi līdzekļi"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Krāsas"
@@ -4097,11 +4199,11 @@ msgstr "Krāsas"
msgid "workspace.assets.colors.add-color"
msgstr "Pievienot krāsu"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Sastāvdaļas"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:510
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:520
msgid "workspace.assets.components.add-component"
msgstr "Pievienot sastāvdaļu"
@@ -4113,15 +4215,15 @@ msgstr "Izveidot kopu"
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:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Dzēst"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Divkāršot"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "Divkāršot galveno"
@@ -4129,19 +4231,19 @@ msgstr "Divkāršot galveno"
msgid "workspace.assets.edit"
msgstr "Labot"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:195
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
msgid "workspace.assets.filter"
msgstr "Atlasīt"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Attēli"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:505
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:515
msgid "workspace.assets.grid-view"
msgstr "Režģa skats"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Kopa"
@@ -4149,27 +4251,23 @@ msgstr "Kopa"
msgid "workspace.assets.group-name"
msgstr "Kopas nosaukums"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Bibliotēkas"
-
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:501
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:511
msgid "workspace.assets.list-view"
msgstr "Saraksta skats"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "vietējā bibliotēka"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Līdzekļi nav atrasti"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "Atvērt bibliotēkas datni"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Pārdēvēt"
@@ -4177,7 +4275,7 @@ msgstr "Pārdēvēt"
msgid "workspace.assets.rename-group"
msgstr "Pārdēvēt kopu"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Meklēt līdzekļus"
@@ -4194,18 +4292,18 @@ msgstr[2] "atlasīti %s vienumi"
msgid "workspace.assets.shared-library"
msgstr "Koplietojama bibliotēka"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:226
+#: 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:211
+#: src/app/main/ui/workspace/sidebar/assets.cljs:201
msgid "workspace.assets.sort"
msgstr "Kārtot"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Burtu stili un veidi"
@@ -4218,27 +4316,27 @@ msgstr "Pievienot tipogrāfiju"
msgid "workspace.assets.typography.font-id"
msgstr "Fonti"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Izmērs"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Fonta variants"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Doties uz stilu bibliotēkas datni, lai labotu"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Burtstarpa"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Rindas augstums"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -4246,7 +4344,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Teksta stili"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Teksta pārveide"
@@ -4254,55 +4352,55 @@ msgstr "Teksta pārveide"
msgid "workspace.assets.ungroup"
msgstr "Atapkopot"
-#: src/app/main/ui/workspace/context_menu.cljs:748
+#: src/app/main/ui/workspace/context_menu.cljs:764
msgid "workspace.context-menu.grid-cells.area"
msgstr "Izveidot laukumu"
-#: src/app/main/ui/workspace/context_menu.cljs:751
+#: src/app/main/ui/workspace/context_menu.cljs:767
msgid "workspace.context-menu.grid-cells.create-board"
msgstr "Izveidot plātni"
-#: src/app/main/ui/workspace/context_menu.cljs:743
+#: src/app/main/ui/workspace/context_menu.cljs:759
msgid "workspace.context-menu.grid-cells.merge"
msgstr "Apvienot šūnas"
-#: src/app/main/ui/workspace/context_menu.cljs:706
+#: src/app/main/ui/workspace/context_menu.cljs:722
msgid "workspace.context-menu.grid-track.column.add-after"
msgstr "Pievienot 1 sleju pa labi"
-#: src/app/main/ui/workspace/context_menu.cljs:705
+#: src/app/main/ui/workspace/context_menu.cljs:721
msgid "workspace.context-menu.grid-track.column.add-before"
msgstr "Pievienot 1 sleju pa kreisi"
-#: src/app/main/ui/workspace/context_menu.cljs:707
+#: src/app/main/ui/workspace/context_menu.cljs:723
msgid "workspace.context-menu.grid-track.column.delete"
msgstr "Izdzēst sleju"
-#: src/app/main/ui/workspace/context_menu.cljs:708
+#: src/app/main/ui/workspace/context_menu.cljs:724
msgid "workspace.context-menu.grid-track.column.delete-shapes"
msgstr "Izdzēst slejas un apveidus"
-#: src/app/main/ui/workspace/context_menu.cljs:704
+#: src/app/main/ui/workspace/context_menu.cljs:720
msgid "workspace.context-menu.grid-track.column.duplicate"
msgstr "Divkāršota sleja"
-#: src/app/main/ui/workspace/context_menu.cljs:713
+#: src/app/main/ui/workspace/context_menu.cljs:729
msgid "workspace.context-menu.grid-track.row.add-after"
msgstr "Pievienot 1 rindu zem"
-#: src/app/main/ui/workspace/context_menu.cljs:712
+#: src/app/main/ui/workspace/context_menu.cljs:728
msgid "workspace.context-menu.grid-track.row.add-before"
msgstr "Pievienot 1 rindu virs"
-#: src/app/main/ui/workspace/context_menu.cljs:714
+#: src/app/main/ui/workspace/context_menu.cljs:730
msgid "workspace.context-menu.grid-track.row.delete"
msgstr "Izdzēst rindu"
-#: src/app/main/ui/workspace/context_menu.cljs:715
+#: src/app/main/ui/workspace/context_menu.cljs:731
msgid "workspace.context-menu.grid-track.row.delete-shapes"
msgstr "Izdzēst rindu un apveidus"
-#: src/app/main/ui/workspace/context_menu.cljs:711
+#: src/app/main/ui/workspace/context_menu.cljs:727
msgid "workspace.context-menu.grid-track.row.duplicate"
msgstr "Divkāršot rindu"
@@ -4310,11 +4408,11 @@ msgstr "Divkāršot rindu"
msgid "workspace.focus.focus-mode"
msgstr "Fokusa režīms"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Izslēgt fokusu"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Ieslēgt fokusu"
@@ -4472,37 +4570,36 @@ msgstr "Pārslēgties uz gaišo izskatu"
msgid "workspace.header.menu.undo"
msgstr "Atsaukt"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Atiestatīt"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Saglabāšanas kļūda"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Saglabāts"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Saglabāšana"
-#: src/app/main/ui/workspace/right_header.cljs:255
+#: src/app/main/ui/workspace/right_header.cljs:221
msgid "workspace.header.share"
msgstr "Kopīgot"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Nesaglabātas izmaiņas"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "Skatīšana (%s)"
-#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "Tālummaiņa"
@@ -4514,7 +4611,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:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Tālummainīt, lai ietilpinātu visu"
@@ -4522,19 +4619,19 @@ 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:136
+#: src/app/main/ui/workspace/right_header.cljs:104
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:607
+#: 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:616
msgid "workspace.layout_grid.editor.options.edit-grid"
msgstr "Labot režģi"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
msgid "workspace.layout_grid.editor.options.exit"
msgstr "Iziet"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:478
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
msgid "workspace.layout_grid.editor.padding.expand"
msgstr "Rādīt četrpusējas atbīdes iespējas"
@@ -4550,7 +4647,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:1321
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
msgstr "Norādīt režģa izkārtojumu"
@@ -4559,7 +4656,7 @@ msgstr "Norādīt režģa izkārtojumu"
msgid "workspace.libraries.add"
msgstr "Pievienot"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s krāsas"
@@ -4589,43 +4686,43 @@ msgstr "Nesen izmantotās krāsas"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "Papildu RGB"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Saglabāt krāsu stilu"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:374
+#: src/app/main/ui/workspace/libraries.cljs:371
msgid "workspace.libraries.empty.add-some"
msgstr "Vai pievieno kādas no šīm, lai izmēģinātu:"
-#: src/app/main/ui/workspace/libraries.cljs:368
+#: src/app/main/ui/workspace/libraries.cljs:365
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:372
+#: src/app/main/ui/workspace/libraries.cljs:369
msgid "workspace.libraries.empty.some-templates"
msgstr "dažas sagataves šeit"
-#: src/app/main/ui/workspace/libraries.cljs:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Datņu bibliotēka"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "BIBLIOTĒKAS ŠAJĀ DATNĒ"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "BIBLIOTĒKAS"
@@ -4634,71 +4731,64 @@ msgstr "BIBLIOTĒKAS"
msgid "workspace.libraries.library"
msgstr "BIBLIOTĒKA"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "BIBLIOTĒKAS JAUNINĀJUMI"
-#: src/app/main/ui/workspace/libraries.cljs:363
+#: src/app/main/ui/workspace/libraries.cljs:360
msgid "workspace.libraries.loading"
msgstr "Ielādē…"
#: src/app/main/ui/workspace/libraries.cljs:387
+#, unused
msgid "workspace.libraries.more-templates"
msgstr "Var meklēt "
-#: src/app/main/ui/workspace/libraries.cljs:391
-msgid "workspace.libraries.more-templates-link"
-msgstr "vairāk sagatavju šeit"
-
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
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:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "“%s” nav atrasta neviena atbilstība"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Nav pieejamu koplietojamo bibliotēku"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Meklēt koplietojamās bibliotēkas"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "KOPLIETOJAMĀS BIBLIOTĒKAS"
-#: src/app/main/ui/workspace/libraries.cljs:355
+#: src/app/main/ui/workspace/libraries.cljs:352
msgid "workspace.libraries.shared-library-btn"
msgstr "Savienot bibliotēku"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Vairāki burtu stili un veidi"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Atsaistīt visus burtu stilus un veidus"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:326
+#: src/app/main/ui/workspace/libraries.cljs:323
msgid "workspace.libraries.unlink-library-btn"
msgstr "Atvienot bibliotēku"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Atjaunināt"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "apskatīt visas izmaiņas"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "ATJAUNINĀJUMI"
@@ -4730,43 +4820,43 @@ msgstr "Atlases aizmiglojums"
msgid "workspace.options.blur-options.toggle-blur"
msgstr "Pārslēgt aizmiglojumu"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Kanvas fons"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Apcirpt saturu"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Sastāvdaļa"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "Piezīme"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "Ievietot starpliktuvē"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "Izveidot piezīmi"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Labot piezīmi"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Galvenais"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:416
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
msgid "workspace.options.component.swap"
msgstr "Mijmainīt sastāvdaļu"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:460
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
msgid "workspace.options.component.swap.empty"
msgstr "Šajā bibliotēkā vēl nav līdzekļu"
@@ -4814,7 +4904,7 @@ msgstr "Augša un apakša"
msgid "workspace.options.design"
msgstr "Dizains"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Izguve"
@@ -4823,22 +4913,22 @@ msgstr "Izguve"
msgid "workspace.options.export-multiple"
msgstr "Izgūt atlasi"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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:187
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188
msgid "workspace.options.export.add-export"
msgstr "Pievienot izguvi"
-#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:199, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:234
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235
msgid "workspace.options.export.remove-export"
msgstr "Noņemt izguvi"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Piedēklis"
@@ -4846,7 +4936,7 @@ msgstr "Piedēklis"
msgid "workspace.options.exporting-complete"
msgstr "Izguve pabeigta"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Notiek izgūšana…"
@@ -4870,6 +4960,10 @@ msgstr "Pievienot aizpildījuma krāsu"
msgid "workspace.options.fill.remove-fill"
msgstr "Noņemt aizpildījumu"
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:341
+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
msgid "workspace.options.flows.add-flow-start"
msgstr "Pievienot plūsmas sākumu"
@@ -5008,7 +5102,7 @@ msgstr "Vadotnes"
msgid "workspace.options.guides.toggle-guide"
msgstr "Pārslēgt vadlīniju"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Augstums"
@@ -5331,19 +5425,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:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Maks.augstums"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Maks.platums"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Min.augstums"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Min.platums"
@@ -5457,11 +5551,11 @@ msgstr "telpa starp"
msgid "workspace.options.layout.top"
msgstr "Augša"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Vairāk krāsu"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Vairāk bibliotēkas krāsu"
@@ -5506,7 +5600,7 @@ msgstr "Sakļaut neatkarīgu rādiusu"
msgid "workspace.options.radius.show-single-corners"
msgstr "Rādīt neatkarīgu rādiusu"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Pēdējie"
@@ -5514,11 +5608,11 @@ msgstr "Pēdējie"
msgid "workspace.options.retry"
msgstr "Atkārtot"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Pagriešana"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Meklēt fontu"
@@ -5526,7 +5620,7 @@ msgstr "Meklēt fontu"
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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Atlasītās krāsas"
@@ -5538,55 +5632,55 @@ msgstr "Atlases aizpildījums"
msgid "workspace.options.selection-stroke"
msgstr "Atlases vilkums"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:292
msgid "workspace.options.shadow-options.add-shadow"
msgstr "Pievienot ēnu"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Aizmiglojums"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Ēnas krāsa"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Ēnot"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Iekšējā ēna"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:180, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:318
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
msgid "workspace.options.shadow-options.remove-shadow"
msgstr "Noņemt ēnu"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Izkliede"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Ēna"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Kopas ēna"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Atlases ēnas"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:176
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:144
msgid "workspace.options.shadow-options.toggle-shadow"
msgstr "Pārslēgt ēnu"
@@ -5594,7 +5688,7 @@ msgstr "Pārslēgt ēnu"
msgid "workspace.options.show-fill-on-export"
msgstr "Rādīt izguvēs"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Rādīt skatītājā"
@@ -5602,7 +5696,7 @@ msgstr "Rādīt skatītājā"
msgid "workspace.options.size"
msgstr "Izmērs"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Izmēra standarti"
@@ -5671,7 +5765,7 @@ msgstr "Trijstūris"
msgid "workspace.options.stroke-color"
msgstr "Vilkuma krāsa"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Vilkuma biezums"
@@ -5743,11 +5837,11 @@ msgstr "Automātiskais platums"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Fiksēts"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Burtu atstarpes"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Rindas augstums"
@@ -5811,15 +5905,15 @@ msgstr "Lielie burti"
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:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Platums"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "X ass"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Y ass"
@@ -5997,115 +6091,127 @@ msgstr "SPRAUDNIS \"%s\" IR UZSTĀDĪTS."
msgid "workspace.plugins.try-out.try"
msgstr "IZMĒĢINĀT SPRAUDNI"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Pievienot elastīgo izkārtojumu"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "Pievienot režģa izkārtojumu"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1004, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1030
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1013, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039
msgid "workspace.shape.menu.add-layout"
msgstr "Pievienot izkārtojumu"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "Sūtīt atpakaļ"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Sūtīt uz aizmuguri"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Kopēt"
-#: src/app/main/ui/workspace/context_menu.cljs:203
+#: src/app/main/ui/workspace/context_menu.cljs:204
msgid "workspace.shape.menu.copy-css"
msgstr "Ievietot starpliktuvē kā CSS"
-#: src/app/main/ui/workspace/context_menu.cljs:188
+#: src/app/main/ui/workspace/context_menu.cljs:206
+msgid "workspace.shape.menu.copy-css-nested"
+msgstr "Ievietot starpliktuvē kā CSS (pakārtoti slāņi)"
+
+#: src/app/main/ui/workspace/context_menu.cljs:189
msgid "workspace.shape.menu.copy-link"
msgstr "Ievietot saiti starpliktuvē"
-#: src/app/main/ui/workspace/context_menu.cljs:201
+#: src/app/main/ui/workspace/context_menu.cljs:202
msgid "workspace.shape.menu.copy-paste-as"
msgstr "Ievietot starpliktuvē/ielīmēt kā ..."
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/context_menu.cljs:214
+msgid "workspace.shape.menu.copy-props"
+msgstr "Ievietot īpašības starpliktuvē"
+
+#: src/app/main/ui/workspace/context_menu.cljs:211
+msgid "workspace.shape.menu.copy-text"
+msgstr "Ievietot starpliktuvē kā tekstu"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "Izveidot piezīmi"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Atlase uz plātni"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Izveidot sastāvdaļu"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Izveidot vairākas sastāvdaļas"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Izgriezt"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Dzēst"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Izdzēst plūsmas sākumu"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Atvienot instanci"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Atvienot instances"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Starpība"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Divkāršot"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Labot"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Izslēgt"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Izklāt"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Apvērst līmeniski"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Apvērst stateniski"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Plūsmas sākums"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Virzīt uz priekšu"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Virzīt priekšā"
@@ -6114,103 +6220,107 @@ msgstr "Virzīt priekšā"
msgid "workspace.shape.menu.go-main"
msgstr "Doties uz galvenās sastāvdaļas datni"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Kopa"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Slēpt"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Rādīt/paslēpt UI"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Šķēlums"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Slēgt"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Maska"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Ielīmēt"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:218
+msgid "workspace.shape.menu.paste-props"
+msgstr "Ielīmēt īpašības"
+
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Ceļš"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Noņemt elastīgo izkārtojumu"
-#: src/app/main/ui/workspace/context_menu.cljs:531
+#: src/app/main/ui/workspace/context_menu.cljs:535
msgid "workspace.shape.menu.remove-grid"
msgstr "Noņemt režģa izkārtojumu"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1022
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1031
msgid "workspace.shape.menu.remove-layout"
msgstr "Noņemt izkārtojumu"
-#: src/app/main/ui/workspace/context_menu.cljs:312
+#: src/app/main/ui/workspace/context_menu.cljs:313
msgid "workspace.shape.menu.rename"
msgstr "Pārdēvēt"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Atiestatīt aizvietojumus"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Atjaunot galveno sastāvdaļu"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Atlasīt slāni"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Pāradīt"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Rādīt līdzekļu panelī"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Rādīt galveno sastāvdaļu"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Noņemt sīktēlu"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Iestatīt kā sīktēlu"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Transformēt par ceļu"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Atapkopot"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Apvienot"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Atslēgt"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Noņemt masku"
@@ -6219,7 +6329,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:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Atjaunināt galveno sastāvdaļu"
@@ -6231,11 +6341,11 @@ msgstr "Sakļaut sānjoslu"
msgid "workspace.sidebar.expand"
msgstr "Izvērst sānjoslu"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Vēsture"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Slāņi"
@@ -6271,7 +6381,7 @@ msgstr "Formas"
msgid "workspace.sidebar.layers.texts"
msgstr "Teksti"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Ievietotie SVG atribūti"
@@ -6283,10 +6393,15 @@ msgstr "Lapas"
msgid "workspace.sidebar.sitemap.add-page"
msgstr "Pievienot lapu"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Vietnes karte"
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:47
+#, unused
+msgid "workspace.token-set.not-active"
+msgstr "Tekstvienību kopa nav aktīva"
+
#: src/app/main/ui/workspace/tokens/theme_select.cljs:84
msgid "workspace.token.active-themes"
msgstr "%s aktīvi izskati"
@@ -6296,31 +6411,43 @@ msgstr "%s aktīvi izskati"
msgid "workspace.token.add set"
msgstr "Pievienot kopu"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:341
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:136
+msgid "workspace.token.applied-to"
+msgstr "Pielietota"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:391
msgid "workspace.token.back-to-themes"
msgstr "Atpakaļ uz izskatu sarakstu"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:51
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:54
msgid "workspace.token.create-new-theme"
msgstr "Tagad izveido savu pirmo izskatu!"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:191, src/app/main/ui/workspace/tokens/sidebar.cljs:218
+#: src/app/main/ui/workspace/tokens/sets.cljs:134, src/app/main/ui/workspace/tokens/sidebar.cljs:190
msgid "workspace.token.create-one"
msgstr "Izveidot kādu."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159, src/app/main/ui/workspace/tokens/modals/themes.cljs:237
-msgid "workspace.token.create-theme-title"
-msgstr "Izveidot izskatu"
-
-#: src/app/main/ui/workspace/tokens/form.cljs:431
+#: src/app/main/ui/workspace/tokens/form.cljs:492
msgid "workspace.token.create-token"
msgstr "Izveidot jaunu %s tekstvienību"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:151
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:278
+msgid "workspace.token.delete"
+msgstr "Izdzēst tekstvienību"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159
msgid "workspace.token.delete-theme-title"
msgstr "Izdzēst izskatu"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:333
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:275
+msgid "workspace.token.duplicate"
+msgstr "Pavairot tekstvienību"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:262
+msgid "workspace.token.edit"
+msgstr "Labot tekstvienību"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:383
msgid "workspace.token.edit-theme-title"
msgstr "Labot izskatu"
@@ -6328,81 +6455,129 @@ msgstr "Labot izskatu"
msgid "workspace.token.edit-themes"
msgstr "Labot izskatus"
-#: src/app/main/ui/workspace/tokens/form.cljs:430
+#: src/app/main/ui/workspace/tokens/form.cljs:491
msgid "workspace.token.edit-token"
msgstr "Labot tekstvienību"
+#: src/app/main/ui/workspace/tokens/form.cljs:544
+msgid "workspace.token.enter-token-description"
+msgstr "Pievienot aprakstu (pēc izvēles)"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:498
+msgid "workspace.token.enter-token-name"
+msgstr "Jāievada %s tekstvienības nosaukums"
+
#: src/app/main/ui/workspace/tokens/sets.cljs
#, unused
msgid "workspace.token.grouping-set-alert"
msgstr "Tekstvienību apkopošana vēl netiek nodrošināta."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:56
-msgid "workspace.token.new-theme"
-msgstr "Jauns izskats"
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:196
+msgid "workspace.token.label.group"
+msgstr "Kopa"
-#: src/app/main/ui/workspace/tokens/theme_select.cljs:88
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:206
+msgid "workspace.token.label.theme"
+msgstr "Izskats"
+
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:89
msgid "workspace.token.no-active-theme"
msgstr "Nav izvēlēts izskats"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:146
-msgid "workspace.token.no-sets"
-msgstr "Nav kopu"
+#: src/app/main/ui/workspace/tokens/sets.cljs:110
+msgid "workspace.token.no-permisions-set"
+msgstr "Nepieciešams būt redaktoram, lai aktivētu kopas vai atceltu to aktivēšanu"
-#: src/app/main/ui/workspace/tokens/sets.cljs:401, src/app/main/ui/workspace/tokens/sets.cljs:405
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:199
+msgid "workspace.token.no-permission-themes"
+msgstr "Jābūt redaktoram, lai izmantotu izskatus"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:504
msgid "workspace.token.no-sets-create"
msgstr "Vēl nav nevienas kopas. Vispirms ir jāizveido kāda."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:215, src/app/main/ui/workspace/tokens/sidebar.cljs:221
+#: src/app/main/ui/workspace/tokens/sets.cljs:131, src/app/main/ui/workspace/tokens/sets.cljs:137
msgid "workspace.token.no-sets-yet"
msgstr "Šeit vēl nav nevienas kopas."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:187
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:186
msgid "workspace.token.no-themes"
msgstr "Šeit nav izskatu."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:47
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:50
msgid "workspace.token.no-themes-currently"
msgstr "Pašlaik nav izskatu."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:137
-msgid "workspace.token.num-sets"
-msgstr "%s kopas"
-
-#: src/app/main/ui/workspace/tokens/token_pill.cljs:114
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:122
#, fuzzy
msgid "workspace.token.original-value"
-msgstr "Sākotnējā vērtība: "
+msgstr "Sākotnējā vērtība: %s"
-#: src/app/main/ui/workspace/tokens/form.cljs:205, src/app/main/ui/workspace/tokens/form.cljs:208, src/app/main/ui/workspace/tokens/token_pill.cljs:115
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:128
+msgid "workspace.token.ref-not-valid"
+msgstr "Atsauce nav derīga vai tā nav nevienā aktīvā kopā"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:217, src/app/main/ui/workspace/tokens/form.cljs:221, src/app/main/ui/workspace/tokens/token_pill.cljs:123
#, fuzzy
msgid "workspace.token.resolved-value"
-msgstr "Atrisinātā vērtība: "
+msgstr "Atrisinātā vērtība: %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:203
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:240
msgid "workspace.token.save-theme"
msgstr "Saglabāt izskatu"
-#: src/app/main/ui/workspace/tokens/sets.cljs:200, src/app/main/ui/workspace/tokens/sets.cljs:305
+#: src/app/main/ui/workspace/tokens/sets.cljs:239, src/app/main/ui/workspace/tokens/sets.cljs:340
msgid "workspace.token.select-set"
msgstr "Atlasīt kopu."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:346
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:396
msgid "workspace.token.set-selection-theme"
msgstr ""
"Noteikt, kuras tekstvienību kopas vajadzētu izmantot kā daļu no šīs izskata "
"iespējas:"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs
-#, unused
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:136
msgid "workspace.token.theme-name"
msgstr "Izskats \"%s\""
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:43, src/app/main/ui/workspace/tokens/modals/themes.cljs:88
-msgid "workspace.token.themes"
-msgstr "Izskati"
+#: src/app/main/ui/workspace/tokens/form.cljs:545
+msgid "workspace.token.token-description"
+msgstr "Apraksts"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/tokens/form.cljs:501
+msgid "workspace.token.token-name"
+msgstr "Nosaukums"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:59
+msgid "workspace.token.token-name-validation-error"
+msgstr ""
+" nav derīgs tekstvienības nosaukums.\n"
+"Tekstvienību nosaukumos vajadzētu būt burtiem un cipariem, kas atdalīti ar "
+". rakstzīmēm, un tie nedrīkst sākties ar $ zīmi."
+
+#: src/app/main/ui/workspace/tokens/form.cljs:526
+msgid "workspace.token.token-value"
+msgstr "Vērtība"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:322
+msgid "workspace.token.tokens-section-title"
+msgstr "TEKSTVIENĪBAS - %s"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:405
+msgid "workspace.token.tools"
+msgstr "Rīki"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:131
+msgid "workspace.token.value-not-valid"
+msgstr "Vērtība nav derīga"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:520
+msgid "workspace.token.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:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Līdzekļi"
@@ -6410,39 +6585,39 @@ msgstr "Līdzekļi"
msgid "workspace.toolbar.color-palette"
msgstr "Krāsu palete (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Komentāri (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Līkne (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Elipse (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Plātne (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Attēls (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Pārvietot (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Ceļš (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:201, src/app/main/ui/workspace/top_toolbar.cljs:202
+#: src/app/main/ui/workspace/top_toolbar.cljs:210, src/app/main/ui/workspace/top_toolbar.cljs:211
msgid "workspace.toolbar.plugins"
msgstr "Spraudņi (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Taisnstūris (%s)"
@@ -6451,7 +6626,7 @@ msgstr "Taisnstūris (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Saīsnes (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Teksts (%s)"
@@ -6459,7 +6634,7 @@ msgstr "Teksts (%s)"
msgid "workspace.toolbar.text-palette"
msgstr "Burtu stili un veidi (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:220, src/app/main/ui/workspace/top_toolbar.cljs:221
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
msgid "workspace.toolbar.toggle-toolbar"
msgstr "Pārslēgt rīkjoslu"
@@ -6617,19 +6792,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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Izlaist"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
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:1220
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:1226
msgid "workspace.updates.update"
msgstr "Atjaunināt"
@@ -6689,11 +6864,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:284
+#: src/app/main/ui/workspace/sidebar.cljs:285
msgid "workspace.versions.tab.actions"
msgstr "Darbības"
-#: src/app/main/ui/workspace/sidebar.cljs:281
+#: src/app/main/ui/workspace/sidebar.cljs:282
msgid "workspace.versions.tab.history"
msgstr "Vēsture"
diff --git a/frontend/translations/ml.po b/frontend/translations/ml.po
index 3efcb0c96b..1e5905f47d 100644
--- a/frontend/translations/ml.po
+++ b/frontend/translations/ml.po
@@ -34,13 +34,13 @@ msgstr "ഡെമോ അക്കൗണ്ട് സൃഷ്ടിക്കു
msgid "auth.create-demo-profile"
msgstr "ഒന്നുപയോഗിച്ച് നോക്കുന്നോ?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"ഇതൊരു ഡെമോ സേവനമാണ്, ഒരു യഥാർത്ഥ ജോലിക്ക് ഉപയോഗിക്കരുത്, പ്രൊജക്റ്റുകൾ "
"നിശ്ചിതസമയങ്ങളിൽ മായ്ക്കപ്പെടും."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "പാസ്വേഡ് മറന്നോ?"
@@ -52,27 +52,27 @@ msgstr "മുഴുവൻ പേര്"
msgid "auth.login-here"
msgstr "ഇവിടെ ലോഗിൻ ചെയ്യുക"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "ലോഗിൻ"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "ഗിറ്റ്ഹബ്ബ്"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "ഗിറ്റ്ലാബ്"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "ഗൂഗിൾ"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "ഓപ്പൺഐഡി"
@@ -96,7 +96,7 @@ msgstr "പാസ്വേഡ് വീണ്ടെടുപ്പ് കണ
msgid "auth.notifications.team-invitation-accepted"
msgstr "വിജയകരമായി സംഘത്തിൽ ചേർന്നു"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "പാസ്വേഡ്"
@@ -124,11 +124,11 @@ msgstr "പാസ്വേഡ് മറന്നോ?"
msgid "auth.recovery-submit"
msgstr "പാസ്വേഡ് മാറ്റുക"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "ഇതുവരെ അക്കൗണ്ട് ഇല്ലേ?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "അക്കൗണ്ട് സൃഷ്ടിക്കുക"
@@ -141,7 +141,7 @@ msgstr "അക്കൗണ്ട് സൃഷ്ടിക്കുക"
msgid "auth.sidebar-tagline"
msgstr "ഡിസൈനിങിനും പ്രോട്ടോടൈപ്പിങിനുമുള്ള ഓപ്പൺ സോഴ്സ് പ്രതിവിധി."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "ഉപയോഗനിബന്ധനകൾ"
@@ -183,7 +183,7 @@ msgstr "പങ്കിട്ട ലൈബ്രറിയായി ചേർക
msgid "dashboard.change-email"
msgstr "ഇമെയിൽ മാറ്റുക"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(പകർത്തുക)"
diff --git a/frontend/translations/ms.po b/frontend/translations/ms.po
index 8c128adebb..733e527549 100644
--- a/frontend/translations/ms.po
+++ b/frontend/translations/ms.po
@@ -20,13 +20,13 @@ msgstr "Cipta akaun demo"
msgid "auth.create-demo-profile"
msgstr "Hanya ingin mencubanya?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Ini adalah perkhidmatan DEMO, JANGAN GUNAKAN untuk kerja sebenar, projek "
"akan dipadam secara berkala."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Lupa kata laluan?"
@@ -38,27 +38,27 @@ msgstr "Nama penuh"
msgid "auth.login-here"
msgstr "Log masuk disini"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Log masuk"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "Github"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID Connect"
@@ -82,7 +82,7 @@ msgstr "Pautan pemulihan kata laluan dihantar ke peti masuk anda."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Berjaya menyertai pasukan"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Kata laluan"
@@ -110,11 +110,11 @@ msgstr "Lupa kata laluan?"
msgid "auth.recovery-submit"
msgstr "Tukar kata laluan anda"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Tiada akaun lagi?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Cipta akaun"
@@ -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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
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:311
+#: src/app/main/ui/workspace/libraries.cljs:308
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:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Nyahterbitkan"
@@ -271,7 +271,7 @@ msgstr "Panduan Antara Muka"
msgid "dashboard.access-tokens.copied-success"
msgstr "Token disalin"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Jana token baru"
@@ -279,11 +279,11 @@ msgstr "Jana token baru"
msgid "dashboard.access-tokens.create.success"
msgstr "Token capaian berjaya dihasilkan."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Tekan butang \"Jana token baharu\" untuk menjana token."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "Anda tidak mempunyai token setakat ini."
@@ -307,23 +307,23 @@ msgstr "90 hari"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Tidak pernah"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Luput pada %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Tamat tempoh pada %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Tiada tarikh tamat tempoh"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Token capaian peribadi"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Token capaian peribadi berfungsi seperti alternatif kepada sistem "
@@ -346,7 +346,7 @@ msgstr "Tambahkan sebagai Perpustakaan kongsi"
msgid "dashboard.change-email"
msgstr "tukar e-mel"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(salin)"
@@ -468,24 +468,24 @@ msgstr "Sertakan aset perpustakaan kongsi dalam pustaka fail"
msgid "dashboard.export.title"
msgstr "Eksport fail"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Fon hilang"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Tolak semua"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Fon tersuai yang anda muat naik akan dipaparkan di sini."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "%s fon ditambah"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -495,21 +495,20 @@ msgstr ""
"tunggal**. Anda boleh memuat naik fon dengan format berikut: **TTF, OTF dan "
"WOFF** (hanya satu sahaja diperlukan)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Anda hanya perlu memuat naik fon yang anda miliki atau mempunyai lesen "
"untuk digunakan dalam Penpot. Ketahui lebih lanjut dalam bahagian Hak "
-"kandungan [Syarat Perkhidmatan Penpot](%s). Anda "
-"juga mungkin ingin membaca tentang [pelesenan "
-"fon](https://www.typography.com/faq)."
+"kandungan [Syarat Perkhidmatan Penpot](%s). Anda juga mungkin ingin membaca "
+"tentang [pelesenan fon](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Muat naik semua"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -520,7 +519,7 @@ msgstr ""
"menggunakan [Transfonter](https://transfonter.org/) untuk menjana fon web "
"dan membetulkan ralat. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Import fail Penpot"
@@ -538,12 +537,12 @@ msgstr ""
msgid "dashboard.import.import-error"
msgstr "Terdapat masalah mengimport fail. Fail tidak diimport."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgid_plural "dashboard.import.import-message"
msgstr[0] "%s fail telah berjaya diimport."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Sesetengah fail mengandungi objek tidak sah telah dialih keluar."
@@ -583,27 +582,27 @@ msgstr "Jemput orang ramai"
msgid "dashboard.leave-team"
msgstr "Tinggalkan pasukan"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Perpustakaan & Templat"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "Terokai lebih banyak daripada mereka dan ketahui cara untuk menyumbang"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "Terdapat masalah mengimport templat. Templat tidak diimport."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Perpustakaan"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "memuatkan fail anda…"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "memuatkan fon anda…"
@@ -619,11 +618,11 @@ msgstr "Pindahkan fail %s ke"
msgid "dashboard.move-to-other-team"
msgstr "Pindah ke pasukan lain"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Fail Baharu"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Fail Baharu"
@@ -631,7 +630,7 @@ msgstr "Fail Baharu"
msgid "dashboard.new-project"
msgstr "+ Projek baharu"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Projek Baharu"
@@ -663,7 +662,7 @@ msgstr "%s ahli"
msgid "dashboard.open-in-new-tab"
msgstr "Buka fail dalam tab baharu"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Pilihan"
@@ -708,7 +707,7 @@ msgstr "Pilih Bahasa UI"
msgid "dashboard.select-ui-theme"
msgstr "Pilih tema"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Tunjukkan semua fail"
@@ -730,7 +729,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Fail anda berjaya dialihkan"
@@ -825,7 +824,7 @@ msgstr "E-mel"
msgid "dashboard.your-name"
msgstr "Nama anda"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Penpot anda"
@@ -841,11 +840,11 @@ msgstr "Perhatian"
msgid "ds.component-subtitle"
msgstr "Komponen untuk dikemas kini:"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Batal"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Ok"
@@ -853,7 +852,7 @@ msgstr "Ok"
msgid "ds.confirm-title"
msgstr "Adakah anda pasti?"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Pembekal pengesahan tidak dikonfigurasikan."
@@ -861,11 +860,11 @@ msgstr "Pembekal pengesahan tidak dikonfigurasikan."
msgid "errors.auth.unable-to-login"
msgstr "Nampaknya anda belum disahkan atau sesi telah tamat tempoh."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "Fon %s tidak dapat dimuatkan"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "Fon %s tidak dapat dimuatkan"
@@ -873,7 +872,7 @@ msgstr "Fon %s tidak dapat dimuatkan"
msgid "errors.cannot-upload"
msgstr "Tidak boleh memuat naik fail media."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Pelayar anda tidak dapat melakukan operasi ini"
@@ -885,7 +884,7 @@ msgstr "E-mel sudah digunakan"
msgid "errors.email-already-validated"
msgstr "E-mel sudah disahkan."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Anda tidak boleh menggunakan e-mel sebagai kata laluan"
@@ -914,7 +913,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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Sesuatu yang tidak kena telah berlaku."
@@ -927,8 +926,7 @@ msgstr "Warna tidak sah"
msgid "errors.invalid-email"
msgstr "Sila masukkan e-mel yang sah"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "E-mel pengesahan mesti sepadan"
@@ -944,7 +942,7 @@ msgstr "Jemputan tidak sah"
msgid "errors.invite-invalid.info"
msgstr "Jemputan ini mungkin dibatalkan atau mungkin tamat tempoh."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "Pengesahan LDAP dilumpuhkan."
@@ -984,7 +982,7 @@ msgstr "Kata laluan hendaklah sekurang-kurangnya 8 aksara"
msgid "errors.paste-data-validation"
msgstr "Data tidak sah dalam papan klip"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Profil disekat"
@@ -1062,12 +1060,11 @@ msgstr "Ralat yang tidak dijangka semasa mengesahkan"
msgid "errors.webhooks.unexpected-status"
msgstr "Status tidak dijangka %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "E-mel atau kata laluan tidak betul."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Kata laluan lama tidak betul"
@@ -1115,11 +1112,11 @@ msgstr "Kami di sini untuk membantu dengan pertanyaan teknikal anda."
msgid "feedback.twitter-title"
msgstr "Akaun sokongan Twitter"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Ralat telah berlaku"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Kabur"
@@ -1127,31 +1124,31 @@ msgstr "Kabur"
msgid "inspect.attributes.blur.value"
msgstr "Nilai"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Isi"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Muat turun sumber gambar"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Tinggi"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Lebar"
@@ -1190,15 +1187,15 @@ msgstr "Atas"
msgid "inspect.attributes.layout.width"
msgstr "Lebar"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Bayang"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Ukuran dan kedudukan"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Gurisan"
@@ -1235,141 +1232,141 @@ msgstr "Padu"
msgid "inspect.attributes.stroke.width"
msgstr "Lebar"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Tipografi"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Keluarga Fon"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Saiz huruf"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Gaya Huruf"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Berat Huruf"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Jarak Huruf"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Tinggi Garis"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Hiasan Teks"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Tiada"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Tembus"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Garis bawah"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Transformasian Teks"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Huruf Kecil"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Tiada"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Huruf Tajuk"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "Nyahset"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Huruf Besar"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr ""
"Jika anda ingin mengetahui lebih lanjut tentang pemeriksaan reka bentuk, "
"lawati pusat bantuan Penpot"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Maklumat lanjut tentang inspect"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr "Pilih bentuk, papan atau kumpulan untuk memeriksa sifat dan kod mereka"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Kod"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Bulatan"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Komponen"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Lengkung"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Papan"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Kumpulan"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Gambar"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Maska"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s Dipilih"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Laluan"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Segi empat tepat"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Teks"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Maklumat"
@@ -1389,7 +1386,7 @@ msgstr "Token capaian"
msgid "labels.active"
msgstr "Aktif"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Tambah fon tersuai"
@@ -1401,7 +1398,7 @@ msgstr "Pentadbir"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Semua"
@@ -1423,7 +1420,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Ralat pelayan (Bad Gateway)"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Batal"
@@ -1431,15 +1428,15 @@ msgstr "Batal"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Tutup"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Komen"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Komuniti"
@@ -1447,7 +1444,7 @@ msgstr "Komuniti"
msgid "labels.confirm-password"
msgstr "Sahkan kata laluan"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Teruskan"
@@ -1463,7 +1460,7 @@ msgstr "Anda boleh meneruskan dengan akaun Penpot"
msgid "labels.copy-invitation-link"
msgstr "Salin pautan"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Cipta"
@@ -1483,15 +1480,15 @@ msgstr "Fon tersuai"
msgid "labels.dashboard"
msgstr "Papan pemuka"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Padam"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Padam komen"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Padam bebenang"
@@ -1507,15 +1504,15 @@ msgstr "Padam fail %s"
msgid "labels.developer"
msgstr "Pembangun"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "Buang"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Draf"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Sunting"
@@ -1531,7 +1528,7 @@ msgstr "Penyunting"
msgid "labels.expired-invitation"
msgstr "Tamat tempoh"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Eksport"
@@ -1547,7 +1544,7 @@ msgstr "Maklum balas dihantar"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Keluarga Fon"
@@ -1555,11 +1552,11 @@ msgstr "Keluarga Fon"
msgid "labels.font-providers"
msgstr "Pembekal fon"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Gaya"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Fon"
@@ -1571,11 +1568,11 @@ msgstr "Pengasas/VP"
msgid "labels.freelancer"
msgstr "Saya seorang pekerja bebas (freelancer)"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Repositori Github"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Beri maklum balas"
@@ -1583,11 +1580,11 @@ msgstr "Beri maklum balas"
msgid "labels.go-back"
msgstr "Pergi balik"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Pusat Bantuan"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Sembunyikan komen yang diselesaikan"
@@ -1595,7 +1592,7 @@ msgstr "Sembunyikan komen yang diselesaikan"
msgid "labels.inactive"
msgstr "tidak aktif"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Fon yang dipasang"
@@ -1621,7 +1618,7 @@ msgstr "Jemputan"
msgid "labels.language"
msgstr "Bahasa"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Perpustakaan & Templat"
@@ -1629,7 +1626,7 @@ msgstr "Perpustakaan & Templat"
msgid "labels.log-or-sign"
msgstr "Log masuk atau daftar"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Log keluar"
@@ -1649,11 +1646,11 @@ msgstr "Ahli"
msgid "labels.new-password"
msgstr "Kata laluan baharu"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Seterusnya"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr ""
"Anda telah melihat semua yang baru! Pemberitahuan ulasan baharu akan "
@@ -1679,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:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "%s fail"
@@ -1739,7 +1736,7 @@ msgstr "Profil"
msgid "labels.projects"
msgstr "Projek"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Nota keluaran"
@@ -1757,7 +1754,7 @@ msgstr "Alih keluar"
msgid "labels.remove-member"
msgstr "Buang ahli"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Namakan semula"
@@ -1777,15 +1774,15 @@ msgstr "Cuba semula"
msgid "labels.role"
msgstr "Peranan"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Simpan"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "Cari"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Cari fon"
@@ -1825,15 +1822,15 @@ msgstr "Kongsi prototaip"
msgid "labels.shared-libraries"
msgstr "Perpustakaan"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Paparkan semua komen"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Paparkan senarai komen"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Paparkan komen anda sahaja"
@@ -1853,7 +1850,7 @@ msgstr "Status"
msgid "labels.student-teacher"
msgstr "Pelajar atau guru"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Tutorial"
@@ -1869,15 +1866,15 @@ msgstr "Kemas kini"
msgid "labels.update-team"
msgstr "Kemas kini pasukan"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Muat naik"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Muat naik fon tersuai"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Memuat naik…"
@@ -1893,7 +1890,7 @@ msgstr "Penonton"
msgid "labels.webhooks"
msgstr "Cangkuk Web (Webhook)"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Tulis komen baharu"
@@ -1901,7 +1898,7 @@ msgstr "Tulis komen baharu"
msgid "labels.you"
msgstr "(anda)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Akaun anda"
@@ -1956,7 +1953,7 @@ msgstr "Tukar e-mel"
msgid "modals.change-email.title"
msgstr "Tukar e-mel anda"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Salin token"
@@ -1972,7 +1969,7 @@ msgstr "Nama"
msgid "modals.create-access-token.name.placeholder"
msgstr "Nama boleh membantu untuk mengetahui token itu untuk apa"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Cipta token"
@@ -1996,15 +1993,15 @@ msgstr "URL muatan"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://example.com/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Padam token"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "Adakah anda pasti mahu memadamkan token ini?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Padam token"
@@ -2026,25 +2023,25 @@ msgstr ""
msgid "modals.delete-account.title"
msgstr "Adakah anda pasti mahu memadam akaun anda?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Padam perbualan"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Adakah anda pasti mahu memadamkan perbualan ini? Semua komen dalam urutan "
"ini akan dipadamkan."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Padam perbualan"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
msgid "modals.delete-component-annotation.message"
msgstr "Adakah anda pasti ingin memadamkan anotasi ini?"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Padam anotasi"
@@ -2072,31 +2069,31 @@ msgstr "Adakah anda pasti mahu memadamkan %s fail?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Memadamkan %s fail"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Adakah anda pasti mahu memadamkan gaya fon ini? Ia tidak akan dimuatkan "
"jika digunakan dalam fail."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Memadam gaya fon"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Adakah anda pasti mahu memadamkan fon ini? Ia tidak akan dimuatkan jika "
"digunakan dalam fail."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Memadam fon"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Adakah anda pasti mahu memadamkan halaman ini?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Padam halaman"
@@ -2278,15 +2275,15 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "Pemilik pasukan baru"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Terbitkan"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
msgid "modals.publish-empty-library.message"
msgstr "Pustaka anda kosong. Adakah anda pasti mahu menerbitkannya?"
-#: src/app/main/ui/workspace/libraries.cljs:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Terbitkan perpustakaan kosong"
@@ -2338,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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Kemas kini"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Batal"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Kemas kini komponen dalam pustaka kongsi"
@@ -2413,30 +2410,30 @@ msgstr "Video tutorial"
msgid "onboarding-v2.before-start.title"
msgstr "Sebelum anda mula"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Langgan surat berita Penpot untuk mengikuti perkembangan dan berita "
"pembangunan produk."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr ""
"Hantar kepada saya berita tentang Penpot (siaran blog, tutorial video, "
"penstriman...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Kami mengambil berat tentang privasi, di sini anda boleh membaca. "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Kami hanya akan menghantar e-mel yang berkaitan kepada anda. Anda boleh "
"berhenti melanggan pada bila-bila masa melalui pautan nyahlanggan dalam "
"mana-mana surat berita kami."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr "Hantar kepada saya kemas kini produk (ciri baharu, keluaran, pembetulan...)."
@@ -2535,17 +2532,17 @@ msgstr "Anda boleh membuat pasukan kemudian."
msgid "onboarding.newsletter.accept"
msgstr "Ya, langgan"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"Permintaan langganan anda telah dihantar, kami akan menghantar e-mel kepada "
"anda untuk mengesahkannya."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Dasar Privasi."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Ingin menerima berita Penpot?"
@@ -2631,7 +2628,7 @@ msgstr "Pergi ke log masuk"
msgid "settings.detach"
msgstr "Tanggalkan"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Bercampur"
@@ -2817,7 +2814,7 @@ msgstr "Buat baharu"
msgid "shortcuts.cut"
msgstr "Potong"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Zum keluar"
@@ -2917,7 +2914,7 @@ msgstr "Edarkan secara mendatar"
msgid "shortcuts.hide-ui"
msgstr "Tunjukkan / Sembunyikan UI"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Zum kedalam"
diff --git a/frontend/translations/nb_NO.po b/frontend/translations/nb_NO.po
index 626fdb3cd6..7b4e213958 100644
--- a/frontend/translations/nb_NO.po
+++ b/frontend/translations/nb_NO.po
@@ -15,7 +15,7 @@ msgstr ""
msgid "auth.confirm-password"
msgstr "Bekreft passord"
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Glemt passordet?"
@@ -27,7 +27,7 @@ msgstr "Fullt navn"
msgid "auth.new-password"
msgstr "Skriv inn et nytt passord"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Passord"
@@ -39,11 +39,11 @@ msgstr "Gjenopprett passord"
msgid "auth.recovery-submit"
msgstr "Endre passordet ditt"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Ingen konto enda?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Opprett konto"
@@ -55,7 +55,7 @@ msgstr "Opprett konto"
msgid "dashboard.add-shared"
msgstr "Legg til som delt bibliotek"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(kopi)"
@@ -75,7 +75,7 @@ msgstr "Inviter til team"
msgid "dashboard.leave-team"
msgstr "Forlat team"
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Delte biblioteker"
@@ -91,7 +91,7 @@ msgstr "Flytt %s filer til"
msgid "dashboard.move-to-other-team"
msgstr "Flytt til annet team"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Ny fil"
@@ -144,7 +144,7 @@ msgstr "Velg grensesnittsspråk"
msgid "dashboard.select-ui-theme"
msgstr "Velg drakt"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Vis alle filer"
@@ -172,15 +172,15 @@ msgstr "Din konto"
msgid "dashboard.your-name"
msgstr "Ditt navn"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Din Penpot"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Avbryt"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "OK"
@@ -212,15 +212,15 @@ msgstr "Emne"
msgid "inspect.attributes.blur.value"
msgstr "Verdi"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Last ned kildebilde"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Høyde"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Bredde"
@@ -239,7 +239,7 @@ msgstr "Venstre"
msgid "inspect.attributes.layout.width"
msgstr "Bredde"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Skygge"
@@ -248,51 +248,51 @@ msgstr "Skygge"
msgid "inspect.attributes.stroke.width"
msgstr "Bredde"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Typografi"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Skriftfamilie"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Skriftstørrelse"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Skriftstil"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Kode"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Sirkel"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Gruppe"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Bilde"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Sti"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Tekst"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Info"
@@ -300,7 +300,7 @@ msgstr "Info"
msgid "labels.accept"
msgstr "Godta"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Avbryt"
@@ -308,7 +308,7 @@ msgstr "Avbryt"
msgid "labels.confirm-password"
msgstr "Bekreft passord"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Opprett"
@@ -328,15 +328,15 @@ msgstr "Egendefinerte skrifter"
msgid "labels.dashboard"
msgstr "Oversikt"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Slett"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Slett kommentar"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Slett tråd"
@@ -344,15 +344,15 @@ msgstr "Slett tråd"
msgid "labels.delete-multi-files"
msgstr "Slett %s filer"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Kladder"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Rediger"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Skriftfamilie"
@@ -360,11 +360,11 @@ msgstr "Skriftfamilie"
msgid "labels.font-providers"
msgstr "Skrifttilbydere"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Skrifter"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Installerte skrifter"
@@ -372,7 +372,7 @@ msgstr "Installerte skrifter"
msgid "labels.language"
msgstr "Språk"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Logg ut"
@@ -409,7 +409,7 @@ msgstr "Prosjekter"
msgid "labels.remove"
msgstr "Fjern"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Gi nytt navn"
@@ -421,11 +421,11 @@ msgstr "Prøv igjen"
msgid "labels.role"
msgstr "Rolle"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Lagre"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Søk etter skrift"
@@ -445,23 +445,23 @@ msgstr "Innstillinger"
msgid "labels.shared-libraries"
msgstr "Delte bibliotek"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Vis alle kommentarer"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Last opp"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Last opp egendefinerte skrifter"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Laster opp …"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Skriv ny kommentar"
@@ -481,11 +481,11 @@ msgstr "Bekreft ny e-postadresse"
msgid "modals.delete-account.confirm"
msgstr "Ja, slett kontoen min"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Slett samtale"
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Slett samtale"
@@ -497,7 +497,7 @@ msgstr "Slett fil"
msgid "modals.delete-file-multi-confirm.accept"
msgstr "Slett filer"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Slett side"
@@ -517,7 +517,7 @@ msgstr "Slett teammedlem"
msgid "modals.leave-confirm.accept"
msgstr "Forlat team"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Avbryt"
@@ -545,15 +545,15 @@ msgstr "Profil - Penpot"
msgid "title.team-settings"
msgstr "Innstillinger - %s - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Farger"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Komponenter"
@@ -561,7 +561,7 @@ msgstr "Komponenter"
msgid "workspace.assets.create-group"
msgstr "Opprett en gruppe"
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Slett"
@@ -569,11 +569,11 @@ msgstr "Slett"
msgid "workspace.assets.edit"
msgstr "Rediger"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Grafikk"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Gruppe"
@@ -581,11 +581,7 @@ msgstr "Gruppe"
msgid "workspace.assets.group-name"
msgstr "Gruppenavn"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Bibliotek"
-
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Gi nytt navn"
@@ -594,11 +590,11 @@ msgstr "Gi nytt navn"
msgid "workspace.assets.typography.font-id"
msgstr "Skrift"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Størrelse"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Variant"
@@ -611,7 +607,7 @@ msgstr "Vis regler"
msgid "workspace.libraries.add"
msgstr "Legg til"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s farger"
@@ -623,19 +619,19 @@ msgstr "Filbibliotek"
msgid "workspace.libraries.colors.recent-colors"
msgstr "Nylige farger"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Lagre fargestil"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Filbibliotek"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Komponent"
@@ -643,7 +639,7 @@ msgstr "Komponent"
msgid "workspace.options.design"
msgstr "Design"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Eksporterer …"
diff --git a/frontend/translations/nl.po b/frontend/translations/nl.po
index f065d3af80..f6413d7586 100644
--- a/frontend/translations/nl.po
+++ b/frontend/translations/nl.po
@@ -1,15 +1,15 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2025-01-29 22:23+0000\n"
+"PO-Revision-Date: 2025-03-20 13:42+0000\n"
"Last-Translator: Anonymous \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.10-dev\n"
+"X-Generator: Weblate 5.11-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
@@ -38,13 +38,13 @@ msgstr "Demo-account aanmaken"
msgid "auth.create-demo-profile"
msgstr "Wil je het gewoon proberen?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Dit is een DEMO-service, GEBRUIK DIT NIET voor echt werk, de projecten "
"worden regelmatig gewist."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Wachtwoord vergeten?"
@@ -52,7 +52,7 @@ msgstr "Wachtwoord vergeten?"
msgid "auth.fullname"
msgstr "Volledige naam"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "Log in op mijn account"
@@ -60,33 +60,33 @@ msgstr "Log in op mijn account"
msgid "auth.login-here"
msgstr "Hier inloggen."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Inloggen"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr ""
"Penpot is de gratis open-source ontwerptool voor samenwerking op het gebied "
"van ontwerp en code"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -110,7 +110,7 @@ msgstr "Wachtwoordherstel-link is per e-mail naar je verzonden."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Succesvol toegetreden tot het team"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Wachtwoord"
@@ -138,7 +138,7 @@ msgstr "Wachtwoord vergeten?"
msgid "auth.recovery-submit"
msgstr "Wachtwoord wijzigen"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Nog geen account?"
@@ -150,7 +150,7 @@ msgstr "Laat ons weten hoe we je moeten aanspreken op het dashboard en in e-mail
msgid "auth.register-account-title"
msgstr "Je naam"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Account aanmaken"
@@ -174,7 +174,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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Gebruiksvoorwaarden"
@@ -188,7 +188,7 @@ msgstr ""
msgid "auth.verification-email-sent"
msgstr "We hebben een verificatie-e-mail verzonden naar"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "Werk e-mail"
@@ -197,11 +197,11 @@ msgstr "Werk e-mail"
msgid "branding-illustrations-marketing-pieces"
msgstr "…branding, illustraties, marketingstukken, etc."
-#: src/app/main/ui/comments.cljs:504
+#: src/app/main/ui/comments.cljs:532
msgid "comments.mentions.not-found"
msgstr "Geen mensen gevonden voor @%s"
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Publiceren"
@@ -273,7 +273,7 @@ msgstr "Prototypes delen"
msgid "common.share-link.view-all"
msgstr "Alles selecteren"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Publicatie ongedaan maken"
@@ -327,7 +327,7 @@ msgstr "Rondleiding door de interface"
msgid "dashboard.access-tokens.copied-success"
msgstr "Toegangsbewijs gekopieerd"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Nieuw toegangsbewijs aanmaken"
@@ -335,11 +335,11 @@ msgstr "Nieuw toegangsbewijs aanmaken"
msgid "dashboard.access-tokens.create.success"
msgstr "Toegangsbewijs is succesvol aangemaakt."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Klik op de knop \"Nieuw toegangsbewijs aanmaken\" om er een aan te maken."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "Je hebt nog geen toegangsbewijzen."
@@ -363,23 +363,23 @@ msgstr "90 dagen"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Nooit"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Verlopen op %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Verloopt op %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Geen verloopdatum"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Persoonlijke toegangsbewijzen"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Persoonlijke toegangsbewijzen functioneren als alternatief voor ons "
@@ -394,6 +394,10 @@ msgstr "Het toegangsbewijs verloopt op %s"
msgid "dashboard.access-tokens.token-will-not-expire"
msgstr "Het toegangsbewijs heeft geen verloopdatum"
+#: src/app/main/ui/dashboard/placeholder.cljs:35
+msgid "dashboard.add-file"
+msgstr "Bestand toevoegen"
+
#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612
msgid "dashboard.add-shared"
msgstr "Toevoegen als gedeelde bibliotheek"
@@ -402,7 +406,7 @@ msgstr "Toevoegen als gedeelde bibliotheek"
msgid "dashboard.change-email"
msgstr "E-mailadres wijzigen"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(kopie)"
@@ -438,23 +442,23 @@ msgstr "Dupliceren"
msgid "dashboard.duplicate-multi"
msgstr "%s bestanden dupliceren"
-#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:285
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
msgid "dashboard.empty-placeholder-drafts-subtitle"
msgstr "Zodra een projectlid een concept heeft gemaakt, wordt het hier weergegeven."
-#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:280
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
msgid "dashboard.empty-placeholder-drafts-title"
msgstr "Nog geen concepten."
-#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:286
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
msgid "dashboard.empty-placeholder-files-subtitle"
msgstr "Zodra een projectlid een bestand heeft gemaakt, wordt het hier weergegeven."
-#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:281
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
msgid "dashboard.empty-placeholder-files-title"
msgstr "Nog geen bestanden."
-#: src/app/main/ui/dashboard/placeholder.cljs:40
+#: src/app/main/ui/dashboard/placeholder.cljs:77
#, markdown
msgid "dashboard.empty-placeholder-libraries"
msgstr ""
@@ -470,11 +474,11 @@ msgstr ""
"je bestanden te delen of voeg ze toe vanuit onze [Bibliotheken en "
"sjablonen] (https://penpot.app/libraries-templates)."
-#: src/app/main/ui/dashboard/placeholder.cljs:36
+#: src/app/main/ui/dashboard/placeholder.cljs:73
msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role"
msgstr "Hier verschijnen bibliotheken die aan het project zijn toegevoegd."
-#: src/app/main/ui/dashboard/placeholder.cljs:33
+#: src/app/main/ui/dashboard/placeholder.cljs:70
msgid "dashboard.empty-placeholder-libraries-title"
msgstr "Nog geen bibliotheken."
@@ -568,35 +572,35 @@ msgstr "Inclusief gedeelde bibliotheek-assets in bestandsbibliotheken"
msgid "dashboard.export.title"
msgstr "Bestanden exporteren"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Lettertype ontbreekt"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Alles negeren"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Aangepaste lettertypen die je uploadt, verschijnen hier."
-#: src/app/main/ui/dashboard/fonts.cljs:448
+#: src/app/main/ui/dashboard/fonts.cljs:450
msgid "dashboard.fonts.empty-placeholder-viewer"
msgstr "Nog geen aangepaste lettertypen."
-#: src/app/main/ui/dashboard/fonts.cljs:449
+#: src/app/main/ui/dashboard/fonts.cljs:451
msgid "dashboard.fonts.empty-placeholder-viewer-sub"
msgstr ""
"Zodra een projectlid een aangepast lettertype heeft geüpload, wordt het "
"hier weergegeven."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "1 lettertype toegevoegd"
msgstr[1] "%s lettertypes toegevoegd"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -605,21 +609,20 @@ msgstr ""
"Lettertypen worden gegroepeerd op familienaam. Je kunt lettertypen uploaden "
"met de volgende formaten: **TTF, OTF en WOFF** (slechts één formaat nodig)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Je mag alleen lettertypen uploaden waarvan je de eigenaar bent of waarvoor "
"je een licentie hebt om te gebruiken in Penpot. Lees meer in de sectie "
-"Inhoudsrechten van [Penpot's "
-"Servicevoorwaarden](%s). Misschien wil je ook "
+"Inhoudsrechten van [Penpot's Servicevoorwaarden](%s). Misschien wil je ook "
"meer lezen over [lettertypelicenties](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Alles uploaden"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -630,7 +633,7 @@ msgstr ""
"[Transfonter](https://transfonter.org/) te gebruiken om web-lettertypen te "
"genereren en soortgelijke fouten op te lossen. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Importeer Penpot-bestanden"
@@ -644,11 +647,11 @@ msgstr ""
"Bestand met componenten v2 geactiveerd, maar dit team ondersteunt dit nog "
"niet."
-#: src/app/main/ui/dashboard.cljs:248
+#: src/app/main/ui/dashboard.cljs:247
msgid "dashboard.import.bad-url"
msgstr "Importeren is mislukt. De sjabloon-URL is onjuist"
-#: src/app/main/ui/dashboard.cljs:242
+#: src/app/main/ui/dashboard.cljs:241
msgid "dashboard.import.error"
msgstr "Importeren is mislukt. Probeer het opnieuw"
@@ -658,17 +661,17 @@ msgstr ""
"Er is een probleem opgetreden bij het importeren van het bestand. Het "
"bestand is niet geïmporteerd."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgid_plural "dashboard.import.import-message"
msgstr[0] "1 bestand is geïmporteerd."
msgstr[1] "%s bestanden zijn geïmporteerd."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Sommige bestanden bevatten ongeldige objecten die verwijderd zijn."
-#: src/app/main/ui/dashboard.cljs:249
+#: src/app/main/ui/dashboard.cljs:248
msgid "dashboard.import.no-perms"
msgstr "Je hebt geen toestemming om naar dit team te importeren"
@@ -708,29 +711,29 @@ msgstr "Nodig mensen uit"
msgid "dashboard.leave-team"
msgstr "Team verlaten"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Bibliotheken & sjablonen"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "Ontdek er meer van en weet hoe je kunt bijdragen"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr ""
"Er is een probleem opgetreden bij het importeren van het sjabloon. Het "
"sjabloon is niet geïmporteerd."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Bibliotheken"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "bestanden laden …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "lettertypen laden …"
@@ -746,11 +749,11 @@ msgstr "Verplaats %s bestanden naar"
msgid "dashboard.move-to-other-team"
msgstr "Verplaats naar ander team"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Nieuw bestand"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Nieuw bestand"
@@ -758,7 +761,7 @@ msgstr "Nieuw bestand"
msgid "dashboard.new-project"
msgstr "+ Nieuw project"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Nieuw project"
@@ -770,7 +773,7 @@ msgstr "Geen overeenkomsten gevonden voor \"%s\""
msgid "dashboard.no-projects-placeholder"
msgstr "Vastgemaakte projecten worden hier weergegeven"
-#: src/app/main/ui/dashboard/comments.cljs:84
+#: src/app/main/ui/dashboard/comments.cljs:90
msgid "dashboard.notifications"
msgstr "Meldingen"
@@ -782,7 +785,7 @@ msgstr "Je e-mailadres is succesvol bijgewerkt"
msgid "dashboard.notifications.email-verified-successfully"
msgstr "Je e-mailadres is geverifieerd"
-#: src/app/main/ui/settings/notifications.cljs:42
+#: src/app/main/data/profile.cljs:260
msgid "dashboard.notifications.notifications-saved"
msgstr "Meldingsinstellingen bijgewerkt"
@@ -802,7 +805,7 @@ msgstr "%s leden"
msgid "dashboard.open-in-new-tab"
msgstr "Bestand openen in een nieuw tabblad"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Opties"
@@ -830,15 +833,15 @@ msgstr "Je bent nu een lezer in dit team."
msgid "dashboard.pin-unpin"
msgstr "Vastzetten/losmaken"
-#: src/app/main/ui/dashboard.cljs:212
+#: src/app/main/ui/dashboard.cljs:208
msgid "dashboard.plugins.bad-url"
msgstr "De URL van de plug-in is onjuist"
-#: src/app/main/ui/dashboard.cljs:210
+#: src/app/main/ui/dashboard.cljs:206
msgid "dashboard.plugins.parse-error"
msgstr "Kan het plug-inmanifest niet verwerken"
-#: src/app/main/ui/dashboard.cljs:173
+#: src/app/main/ui/dashboard.cljs:169
msgid "dashboard.plugins.try-plugin"
msgstr "Probeer plugin: "
@@ -879,67 +882,67 @@ msgstr "Taal selecteren"
msgid "dashboard.select-ui-theme"
msgstr "Thema selecteren"
-#: src/app/main/ui/settings/notifications.cljs:76
+#: src/app/main/ui/settings/notifications.cljs:57
msgid "dashboard.settings.notifications.dashboard-comments.all"
msgstr "Alle opmerkingen, vermeldingen en antwoorden"
-#: src/app/main/ui/settings/notifications.cljs:78
+#: src/app/main/ui/settings/notifications.cljs:59
msgid "dashboard.settings.notifications.dashboard-comments.none"
msgstr "Geen"
-#: src/app/main/ui/settings/notifications.cljs:77
+#: src/app/main/ui/settings/notifications.cljs:58
msgid "dashboard.settings.notifications.dashboard-comments.partial"
msgstr "Alleen vermeldingen en antwoorden"
-#: src/app/main/ui/settings/notifications.cljs:73
+#: src/app/main/ui/settings/notifications.cljs:54
msgid "dashboard.settings.notifications.dashboard-comments.title"
msgstr "Commentaar bij bestand"
-#: src/app/main/ui/settings/notifications.cljs:72
+#: src/app/main/ui/settings/notifications.cljs:53
msgid "dashboard.settings.notifications.dashboard.title"
msgstr "Meldingen op het dashboard"
-#: src/app/main/ui/settings/notifications.cljs:86
+#: src/app/main/ui/settings/notifications.cljs:67
msgid "dashboard.settings.notifications.email-comments.all"
msgstr "Alle opmerkingen, vermeldingen en antwoorden"
-#: src/app/main/ui/settings/notifications.cljs:88
+#: src/app/main/ui/settings/notifications.cljs:69
msgid "dashboard.settings.notifications.email-comments.none"
msgstr "Geen"
-#: src/app/main/ui/settings/notifications.cljs:87
+#: src/app/main/ui/settings/notifications.cljs:68
msgid "dashboard.settings.notifications.email-comments.partial"
msgstr "Alleen vermeldingen en antwoorden"
-#: src/app/main/ui/settings/notifications.cljs:83
+#: src/app/main/ui/settings/notifications.cljs:64
msgid "dashboard.settings.notifications.email-comments.title"
msgstr "Commentaar bij bestand"
-#: src/app/main/ui/settings/notifications.cljs:95
+#: src/app/main/ui/settings/notifications.cljs:76
msgid "dashboard.settings.notifications.email-invites.all"
msgstr "Alle soorten uitnodigingen en verzoeken"
-#: src/app/main/ui/settings/notifications.cljs:98
+#: src/app/main/ui/settings/notifications.cljs:79
msgid "dashboard.settings.notifications.email-invites.none"
msgstr "Geen"
-#: src/app/main/ui/settings/notifications.cljs:92
+#: src/app/main/ui/settings/notifications.cljs:73
msgid "dashboard.settings.notifications.email-invites.title"
msgstr "Uitnodigingen en verzoeken"
-#: src/app/main/ui/settings/notifications.cljs:82
+#: src/app/main/ui/settings/notifications.cljs:63
msgid "dashboard.settings.notifications.email.title"
msgstr "E-mail meldingen"
-#: src/app/main/ui/settings/notifications.cljs:103
+#: src/app/main/ui/settings/notifications.cljs:84
msgid "dashboard.settings.notifications.submit"
msgstr "Instellingen bijwerken"
-#: src/app/main/ui/settings/notifications.cljs:71
+#: src/app/main/ui/settings/notifications.cljs:52
msgid "dashboard.settings.notifications.title"
msgstr "Meldingen"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Alle bestanden tonen"
@@ -967,7 +970,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Je bestand is succesvol verplaatst"
@@ -1011,15 +1014,15 @@ msgstr "Publicatie Bibliotheek ongedaan maken"
msgid "dashboard.update-settings"
msgstr "Instellingen bijwerken"
-#: src/app/main/ui/dashboard/sidebar.cljs:969
+#: src/app/main/ui/dashboard/sidebar.cljs:970
msgid "dashboard.upgrade-plan.no-limits"
msgstr "Onbeperkte creativiteit"
-#: src/app/main/ui/dashboard/sidebar.cljs:968
+#: src/app/main/ui/dashboard/sidebar.cljs:969
msgid "dashboard.upgrade-plan.penpot-free"
msgstr "Penpot Free"
-#: src/app/main/ui/dashboard/sidebar.cljs:971
+#: src/app/main/ui/dashboard/sidebar.cljs:972
msgid "dashboard.upgrade-plan.power-up"
msgstr "Power up"
@@ -1078,7 +1081,7 @@ msgstr "E-mail"
msgid "dashboard.your-name"
msgstr "Naam"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Jouw Penpot"
@@ -1098,11 +1101,11 @@ msgstr "Componenten bijwerken:"
msgid "ds.confirm-allow"
msgstr "Toestaan"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Annuleren"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Oké"
@@ -1114,7 +1117,7 @@ msgstr "Weet je het zeker?"
msgid "errors.auth-provider-not-allowed"
msgstr "Auth-provider is niet toegestaan voor dit profiel"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Authenticatie-provider niet geconfigureerd."
@@ -1124,11 +1127,11 @@ msgstr ""
"Het lijkt erop dat je niet geauthentiseerd bent of dat de sessie is "
"verlopen."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "Het lettertype %s kon niet geladen worden"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "De lettertypen %s konden niet geladen worden"
@@ -1136,7 +1139,7 @@ msgstr "De lettertypen %s konden niet geladen worden"
msgid "errors.cannot-upload"
msgstr "Kan het mediabestand niet uploaden."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Je browser kan deze functie niet uitvoeren"
@@ -1148,7 +1151,7 @@ msgstr "E-mail is al in gebruik"
msgid "errors.email-already-validated"
msgstr "E-mail is al gevalideerd."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Je kan je e-mail niet als wachtwoord gebruiken"
@@ -1197,7 +1200,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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Er ging iets mis."
@@ -1210,8 +1213,7 @@ msgstr "Ongeldige kleur"
msgid "errors.invalid-email"
msgstr "Voer een geldig e-mailadres in"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "Bevestigingsmail moet overeenkomen"
@@ -1227,7 +1229,7 @@ msgstr "Uitnodiging ongeldig"
msgid "errors.invite-invalid.info"
msgstr "Deze uitnodiging is mogelijk geannuleerd of verlopen."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "LDAP-authenticatie is uitgeschakeld."
@@ -1279,7 +1281,7 @@ msgstr "Wachtwoord moet minimaal 8 tekens lang zijn"
msgid "errors.paste-data-validation"
msgstr "Ongeldige gegevens op klembord"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Het profiel is geblokkeerd"
@@ -1355,12 +1357,11 @@ msgstr "Onverwachte fout bij het valideren"
msgid "errors.webhooks.unexpected-status"
msgstr "Onverwachte status %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "E-mailadres of wachtwoord is incorrect."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Huidige wachtwoord is onjuist"
@@ -1408,11 +1409,11 @@ msgstr "Hier om te helpen met je technische vragen."
msgid "feedback.twitter-title"
msgstr "X-ondersteuningsaccount"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "er is een fout opgetreden"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Vervagen"
@@ -1420,31 +1421,31 @@ msgstr "Vervagen"
msgid "inspect.attributes.blur.value"
msgstr "Waarde"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Vullen"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Bronafbeelding downloaden"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Hoogte"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Breedte"
@@ -1483,15 +1484,15 @@ msgstr "Top"
msgid "inspect.attributes.layout.width"
msgstr "Breedte"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Schaduw"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Grootte en positie"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Streek"
@@ -1528,143 +1529,143 @@ msgstr "Solide"
msgid "inspect.attributes.stroke.width"
msgstr "Breedte"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Typografie"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Lettertype-familie"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Lettergrootte"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Lettertype-stijl"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Lettertype dikte"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Letterafstand"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Regelafstand"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Tekst decoratie"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Geen"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Doorhalen"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Onderstrepen"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Teksttransformatie"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Kleine letters"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Geen"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Beginhoofdletters"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "Uitschakelen"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "HOOFDLETTERS"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr ""
"Als je meer wilt weten over ontwerpinspectie, ga dan naar het helpcentrum "
"van Penpot"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Meer info over inspecteren"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr ""
"Selecteer een vorm, bord of groep om hun eigenschappen en code te "
"inspecteren"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Code"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Cirkel"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Component"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Kromme"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Bord"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Groep"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Afbeelding"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Masker"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s Geselecteerd"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Pad"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Rechthoek"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Tekst"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Informatie"
@@ -1684,15 +1685,15 @@ msgstr "Toegangsbewijzen"
msgid "labels.active"
msgstr "Actief"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.add"
msgstr "Toevoegen"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Eigen lettertype toevoegen"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.adding"
msgstr "Toevoegen…"
@@ -1704,7 +1705,7 @@ msgstr "Admin"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Alles"
@@ -1726,7 +1727,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Bad Gateway"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Annuleren"
@@ -1734,27 +1735,27 @@ msgstr "Annuleren"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Sluiten"
-#: src/app/main/ui/workspace/tokens/sets.cljs:180
+#: src/app/main/ui/workspace/tokens/sets.cljs:219
msgid "labels.collapse"
msgstr "Samenvouwen"
-#: src/app/main/ui/comments.cljs:812
+#: src/app/main/ui/comments.cljs:881
msgid "labels.comment"
msgstr "Commentaar"
-#: src/app/main/ui/comments.cljs:816
+#: src/app/main/ui/comments.cljs:885
msgid "labels.comment.mark-as-solved"
msgstr "Markeren als opgelost"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Commentaar"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Gemeenschap"
@@ -1762,7 +1763,7 @@ msgstr "Gemeenschap"
msgid "labels.confirm-password"
msgstr "Wachtwoord bevestigen"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Doorgaan"
@@ -1782,7 +1783,7 @@ msgstr "Link kopiëren"
msgid "labels.copyright"
msgstr "Kaleidos @2024"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Aanmaken"
@@ -1802,15 +1803,15 @@ msgstr "Eigen lettertypen"
msgid "labels.dashboard"
msgstr "Dashboard"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Verwijderen"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Commentaar verwijderen"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Thread verwijderen"
@@ -1830,15 +1831,15 @@ msgstr "Ontwikkeling"
msgid "labels.director"
msgstr "Directeur"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "Weggooien"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Concepten"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Bewerken"
@@ -1848,7 +1849,7 @@ msgstr "Bestand bewerken"
#: src/app/main/ui/dashboard/team.cljs:126, src/app/main/ui/dashboard/team.cljs:310, src/app/main/ui/dashboard/team.cljs:555, src/app/main/ui/dashboard/team.cljs:588, src/app/main/ui/onboarding/team_choice.cljs:65
msgid "labels.editor"
-msgstr "Editor"
+msgstr "Redacteur"
#: src/app/main/ui/onboarding/questions.cljs:404
msgid "labels.event"
@@ -1858,7 +1859,7 @@ msgstr "Evenement"
msgid "labels.expired-invitation"
msgstr "Verlopen"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Exporteren"
@@ -1874,7 +1875,7 @@ msgstr "Feedback verstuurd"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Lettertype-familie"
@@ -1882,11 +1883,11 @@ msgstr "Lettertype-familie"
msgid "labels.font-providers"
msgstr "Lettertypeaanbieders"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Stijlen"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Lettertypen"
@@ -1898,11 +1899,11 @@ msgstr "CEO of oprichter"
msgid "labels.freelancer"
msgstr "Ik ben een freelancer"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "GitHub-repository"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Geef feedback"
@@ -1914,15 +1915,15 @@ msgstr "Ga terug"
msgid "labels.graphic-design"
msgstr "Grafisch ontwerp"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Helpcentrum"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Verwerkt commentaar verbergen"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:355
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:413
msgid "labels.import"
msgstr "Importeren"
@@ -1930,7 +1931,7 @@ msgstr "Importeren"
msgid "labels.inactive"
msgstr "Inactief"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Geïnstalleerde lettertypen"
@@ -1956,11 +1957,11 @@ msgstr "Uitnodigingen"
msgid "labels.language"
msgstr "Taal"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Bibliotheken en sjablonen"
-#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:114, src/app/main/ui/dashboard/grid.cljs:133, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:53, src/app/main/ui/ds/product/loader.cljs:52, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:126, src/app/main/ui.cljs:67, src/app/main/ui.cljs:105, src/app/main/ui.cljs:124
+#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:115, src/app/main/ui/dashboard/grid.cljs:134, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:98, src/app/main/ui/ds/product/loader.cljs:85, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:118, src/app/main/ui.cljs:66, src/app/main/ui.cljs:104, src/app/main/ui.cljs:123
msgid "labels.loading"
msgstr "Laden…"
@@ -1972,7 +1973,7 @@ msgstr "Log in of meld je aan"
msgid "labels.login"
msgstr "Inloggen"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Uitloggen"
@@ -1992,11 +1993,11 @@ msgstr "Leden"
msgid "labels.new-password"
msgstr "Nieuw wachtwoord"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Volgende"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "Je bent helemaal bij! Nieuwe commentaarmeldingen verschijnen hier."
@@ -2024,7 +2025,7 @@ msgstr "Oeps!"
msgid "labels.notifications"
msgstr "Meldingen"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "1 bestand"
@@ -2055,7 +2056,7 @@ msgstr "Huidig wachtwoord"
msgid "labels.only-yours"
msgstr "Alleen van jou"
-#: src/app/main/ui/comments.cljs:545, src/app/main/ui/comments.cljs:822, src/app/main/ui/comments.cljs:886, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:295, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:324
+#: src/app/main/ui/comments.cljs:891, src/app/main/ui/comments.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:293, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:322
msgid "labels.options"
msgstr "Opties"
@@ -2083,7 +2084,7 @@ msgstr "Wachtwoord"
msgid "labels.pending-invitation"
msgstr "In behandeling"
-#: src/app/main/ui/comments.cljs:657, src/app/main/ui/comments.cljs:690, src/app/main/ui/comments.cljs:759
+#: src/app/main/ui/comments.cljs:678
msgid "labels.post"
msgstr "Verzenden"
@@ -2107,7 +2108,7 @@ msgstr "Profiel"
msgid "labels.projects"
msgstr "Projecten"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Release-opmerkingen"
@@ -2125,7 +2126,7 @@ msgstr "Verwijderen"
msgid "labels.remove-member"
msgstr "Lid verwijderen"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Hernoemen"
@@ -2133,23 +2134,23 @@ msgstr "Hernoemen"
msgid "labels.rename-team"
msgstr "Team hernoemen"
-#: src/app/main/ui/comments.cljs:598
+#: src/app/main/ui/comments.cljs:641
msgid "labels.replies"
msgstr "reacties"
-#: src/app/main/ui/comments.cljs:603
+#: src/app/main/ui/comments.cljs:646
msgid "labels.replies.new"
msgstr "nieuwe reacties"
-#: src/app/main/ui/comments.cljs:597
+#: src/app/main/ui/comments.cljs:640
msgid "labels.reply"
msgstr "reactie"
-#: src/app/main/ui/comments.cljs:602
+#: src/app/main/ui/comments.cljs:645
msgid "labels.reply.new"
msgstr "nieuwe reactie"
-#: src/app/main/ui/comments.cljs:641
+#: src/app/main/ui/comments.cljs:721
msgid "labels.reply.thread"
msgstr "Reageren"
@@ -2169,15 +2170,15 @@ msgstr "Opnieuw proberen"
msgid "labels.role"
msgstr "Rol"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Opslaan"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "Zoeken"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Lettertype zoeken"
@@ -2201,7 +2202,7 @@ 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:252
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:247
msgid "labels.sets"
msgstr "Verzamelingen"
@@ -2221,19 +2222,19 @@ msgstr "Prototype delen"
msgid "labels.shared-libraries"
msgstr "Bibliotheek"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Alle commentaar tonen"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Commentaarlijst tonen"
-#: src/app/main/ui/workspace/comments.cljs:66, src/app/main/ui/workspace/comments.cljs:136
+#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139
msgid "labels.show-mentions"
msgstr "Alleen jouw vermeldingen weergeven"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Alleen eigen commentaar tonen"
@@ -2261,11 +2262,11 @@ msgstr "Teamleider"
msgid "labels.team-member"
msgstr "Teamlid"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:183
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:182
msgid "labels.themes"
msgstr "Thema's"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Introductie"
@@ -2281,15 +2282,15 @@ msgstr "Bijwerken"
msgid "labels.update-team"
msgstr "Team bijwerken"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Uploaden"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Eigen lettertypen uploaden"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Uploaden…"
@@ -2305,7 +2306,7 @@ msgstr "Kijker"
msgid "labels.webhooks"
msgstr "Webhooks"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Nieuw commentaar toevoegen"
@@ -2313,7 +2314,7 @@ msgstr "Nieuw commentaar toevoegen"
msgid "labels.you"
msgstr "(jij)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Jouw account"
@@ -2321,23 +2322,23 @@ msgstr "Jouw account"
msgid "labels.youtube"
msgstr "YouTube"
-#: src/app/main/ui/workspace/colorpicker.cljs:477, src/app/main/ui/workspace/colorpicker.cljs:478, src/app/main/ui/workspace/colorpicker.cljs:480
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
msgid "media.choose-image"
msgstr "Afbeelding kiezen"
-#: src/app/main/ui/workspace/colorpicker.cljs:245
+#: src/app/main/ui/workspace/colorpicker.cljs:241
msgid "media.gradient"
msgstr "Verloop"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "Afbeelding"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:77
+#: src/app/main/ui/inspect/attributes/common.cljs:77
msgid "media.image.short"
msgstr "img"
-#: src/app/main/ui/workspace/colorpicker.cljs:470
+#: src/app/main/ui/workspace/colorpicker.cljs:467
msgid "media.keep-aspect-ratio"
msgstr "Verhoudingen behouden"
@@ -2355,7 +2356,7 @@ msgstr "Afbeelding laden…"
msgid "media.radial"
msgstr "Radiaal"
-#: src/app/main/ui/workspace/colorpicker.cljs:243
+#: src/app/main/ui/workspace/colorpicker.cljs:239
msgid "media.solid"
msgstr "Solide"
@@ -2407,7 +2408,7 @@ msgstr "E-mailadres wijzigen"
msgid "modals.change-email.title"
msgstr "Je e-mailadres wijzigen"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Toegangsbewijs kopiëren"
@@ -2423,7 +2424,7 @@ msgstr "Naam"
msgid "modals.create-access-token.name.placeholder"
msgstr "De naam helpt je te onthouden waar het toegangsbewijs voor is"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Toegangsbewijs aanmaken"
@@ -2447,15 +2448,15 @@ msgstr "Payload-URL"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://voorbeeld.nl/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Toegangsbewijs verwijderen"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "Weet je zeker dat je dit toegangsbewijs wilt verwijderen?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Toegangsbewijs verwijderen"
@@ -2477,25 +2478,25 @@ msgstr ""
msgid "modals.delete-account.title"
msgstr "Weet je zeker dat je je account wilt verwijderen?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Gesprek verwijderen"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Weet je zeker dat je dit gesprek wilt verwijderen? Alle reacties in deze "
"thread worden verwijderd."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Gesprek verwijderen"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
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:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Aantekening verwijderen"
@@ -2523,31 +2524,31 @@ msgstr "Weet je zeker dat je %s bestanden wilt verwijderen?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Verwijderen van %s bestanden"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Weet je zeker dat je deze lettertypestijl wilt verwijderen? Het wordt dan "
"niet meer geladen als het in een bestand wordt gebruikt."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Lettertypestijl verwijderen"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Weet je zeker dat je dit lettertype wilt verwijderen? Het wordt dan niet "
"meer geladen als het in een bestand wordt gebruikt."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Lettertype verwijderen"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Weet je zeker dat je deze pagina wilt verwijderen?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Pagina verwijderen"
@@ -2761,15 +2762,15 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "Nieuwe teameigenaar"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Publiceren"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
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:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Lege bibliotheek publiceren"
@@ -2828,22 +2829,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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Bijwerken"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Annuleren"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Component in een gedeelde bibliotheek bijwerken"
@@ -3011,27 +3012,27 @@ msgstr "Video-introducties"
msgid "onboarding-v2.before-start.title"
msgstr "Voordat je begint"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Abonneer je op de Penpot-nieuwsbrief om op de hoogte te blijven van de "
"voortgang van de productontwikkeling en nieuws."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr "Stuur mij nieuws over Penpot (blogposts, video-introducties, streamings…)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Wij geven om privacy, lees hier onze "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"We sturen je alleen relevante e-mails. Je kunt je op elk moment afmelden "
"via de afmeldlink in al onze nieuwsbrieven."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr "Stuur mij productnieuws (nieuwe functies, releases, correcties…)."
@@ -3129,17 +3130,17 @@ msgstr "Je kunt later een team samenstellen."
msgid "onboarding.newsletter.accept"
msgstr "Ja, abonneren"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"Je inschrijvingsverzoek is verzonden, wij sturen je een e-mail ter "
"bevestiging."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Privacybeleid."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Wil je Penpot-nieuws ontvangen?"
@@ -3332,7 +3333,7 @@ msgstr "Ga naar inlogscherm"
msgid "settings.detach"
msgstr "Ontkoppelen"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Gemixt"
@@ -3530,7 +3531,7 @@ msgstr "Nieuw project aanmaken"
msgid "shortcuts.cut"
msgstr "Knippen"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Uitzoomen"
@@ -3630,7 +3631,7 @@ msgstr "Horizontaal verdelen"
msgid "shortcuts.hide-ui"
msgstr "UI tonen/verbergen"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Inzoomen"
@@ -4014,15 +4015,15 @@ msgstr "Zoomen naar selectie"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Lettertypeaanbieders - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Lettertypen - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Projecten - %s - Penpot"
@@ -4030,7 +4031,7 @@ msgstr "Projecten - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Zoeken - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Gedeelde bibliotheken - %s - Penpot"
@@ -4038,7 +4039,7 @@ msgstr "Gedeelde bibliotheken - %s - Penpot"
msgid "title.default"
msgstr "Penpot - Ontwerpvrijheid voor teams"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "Profiel - Toegangsbewijzen"
@@ -4046,7 +4047,7 @@ msgstr "Profiel - Toegangsbewijzen"
msgid "title.settings.feedback"
msgstr "Feedback geven - Penpot"
-#: src/app/main/ui/settings/notifications.cljs:64
+#: src/app/main/ui/settings/notifications.cljs:45
msgid "title.settings.notifications"
msgstr "Meldingen - Penpot"
@@ -4082,7 +4083,7 @@ msgstr "Webhooks - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Weergavemodus - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -4182,7 +4183,7 @@ msgstr "Verticaal verdelen (%s)"
msgid "workspace.align.vtop"
msgstr "Bovenkant uitlijnen (%s)"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:174, src/app/main/ui/workspace/sidebar/assets.cljs:179
+#: src/app/main/ui/workspace/sidebar/assets.cljs:171
msgid "workspace.assets.add-library"
msgstr "Bibliotheek toevoegen"
@@ -4191,11 +4192,11 @@ msgstr "Bibliotheek toevoegen"
msgid "workspace.assets.assets"
msgstr "Assets"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Alle assets"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Kleuren"
@@ -4203,11 +4204,11 @@ msgstr "Kleuren"
msgid "workspace.assets.colors.add-color"
msgstr "Kleur toevoegen"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Componenten"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:510
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:520
msgid "workspace.assets.components.add-component"
msgstr "Component toevoegen"
@@ -4219,15 +4220,15 @@ msgstr "Groep aanmaken"
msgid "workspace.assets.create-group-hint"
msgstr "Je items krijgen automatisch de naam \"groepsnaam / itemnaam\""
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Verwijderen"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Dupliceren"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "Hoofdcomponent dupliceren"
@@ -4235,19 +4236,19 @@ msgstr "Hoofdcomponent dupliceren"
msgid "workspace.assets.edit"
msgstr "Bewerken"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:195
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
msgid "workspace.assets.filter"
msgstr "Filteren"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Graphics"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:505
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:515
msgid "workspace.assets.grid-view"
msgstr "Rasterweergave"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Groeperen"
@@ -4255,27 +4256,23 @@ msgstr "Groeperen"
msgid "workspace.assets.group-name"
msgstr "Groepsnaam"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Bibliotheken"
-
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:501
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:511
msgid "workspace.assets.list-view"
msgstr "Lijstweergave"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "Lokale bibliotheek"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Geen assets gevonden"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "Open Bibliotheek-bestand"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Hernoemen"
@@ -4283,7 +4280,7 @@ msgstr "Hernoemen"
msgid "workspace.assets.rename-group"
msgstr "Groep hernoemen"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Assets zoeken"
@@ -4299,17 +4296,17 @@ msgstr[1] "%s items geselecteerd"
msgid "workspace.assets.shared-library"
msgstr "Gedeelde bibliotheek"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:226
+#: 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:211
+#: src/app/main/ui/workspace/sidebar/assets.cljs:201
msgid "workspace.assets.sort"
msgstr "Sorteren"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Typografie"
@@ -4322,27 +4319,27 @@ msgstr "Typografie toevoegen"
msgid "workspace.assets.typography.font-id"
msgstr "Lettertype"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Grootte"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Variant"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Ga naar het stijl-bibliotheekbestand om te bewerken"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Letterafstand"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Regelafstand"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -4350,7 +4347,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Tekststijlen"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Tekst transformeren"
@@ -4358,55 +4355,55 @@ msgstr "Tekst transformeren"
msgid "workspace.assets.ungroup"
msgstr "Groep opheffen"
-#: src/app/main/ui/workspace/context_menu.cljs:748
+#: src/app/main/ui/workspace/context_menu.cljs:764
msgid "workspace.context-menu.grid-cells.area"
msgstr "Gebied aanmaken"
-#: src/app/main/ui/workspace/context_menu.cljs:751
+#: src/app/main/ui/workspace/context_menu.cljs:767
msgid "workspace.context-menu.grid-cells.create-board"
msgstr "Bord aanmaken"
-#: src/app/main/ui/workspace/context_menu.cljs:743
+#: src/app/main/ui/workspace/context_menu.cljs:759
msgid "workspace.context-menu.grid-cells.merge"
msgstr "Cellen samenvoegen"
-#: src/app/main/ui/workspace/context_menu.cljs:706
+#: src/app/main/ui/workspace/context_menu.cljs:722
msgid "workspace.context-menu.grid-track.column.add-after"
msgstr "Rechts 1 kolom toevoegen"
-#: src/app/main/ui/workspace/context_menu.cljs:705
+#: src/app/main/ui/workspace/context_menu.cljs:721
msgid "workspace.context-menu.grid-track.column.add-before"
msgstr "Links 1 kolom toevoegen"
-#: src/app/main/ui/workspace/context_menu.cljs:707
+#: src/app/main/ui/workspace/context_menu.cljs:723
msgid "workspace.context-menu.grid-track.column.delete"
msgstr "Kolom verwijderen"
-#: src/app/main/ui/workspace/context_menu.cljs:708
+#: src/app/main/ui/workspace/context_menu.cljs:724
msgid "workspace.context-menu.grid-track.column.delete-shapes"
msgstr "Kolom en vormen verwijderen"
-#: src/app/main/ui/workspace/context_menu.cljs:704
+#: src/app/main/ui/workspace/context_menu.cljs:720
msgid "workspace.context-menu.grid-track.column.duplicate"
msgstr "Kolom dupliceren"
-#: src/app/main/ui/workspace/context_menu.cljs:713
+#: src/app/main/ui/workspace/context_menu.cljs:729
msgid "workspace.context-menu.grid-track.row.add-after"
msgstr "Onder 1 rij toevoegen"
-#: src/app/main/ui/workspace/context_menu.cljs:712
+#: src/app/main/ui/workspace/context_menu.cljs:728
msgid "workspace.context-menu.grid-track.row.add-before"
msgstr "Boven 1 rij toevoegen"
-#: src/app/main/ui/workspace/context_menu.cljs:714
+#: src/app/main/ui/workspace/context_menu.cljs:730
msgid "workspace.context-menu.grid-track.row.delete"
msgstr "Rij verwijderen"
-#: src/app/main/ui/workspace/context_menu.cljs:715
+#: src/app/main/ui/workspace/context_menu.cljs:731
msgid "workspace.context-menu.grid-track.row.delete-shapes"
msgstr "Rij en vormen verwijderen"
-#: src/app/main/ui/workspace/context_menu.cljs:711
+#: src/app/main/ui/workspace/context_menu.cljs:727
msgid "workspace.context-menu.grid-track.row.duplicate"
msgstr "Rij dupliceren"
@@ -4414,11 +4411,11 @@ msgstr "Rij dupliceren"
msgid "workspace.focus.focus-mode"
msgstr "Focusmodus"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Focus uit"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Focus aan"
@@ -4576,37 +4573,36 @@ msgstr "Licht thema inschakelen"
msgid "workspace.header.menu.undo"
msgstr "Ongedaan maken"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Herstellen"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Fout tijdens opslaan"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Opgeslagen"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Opslaan"
-#: src/app/main/ui/workspace/right_header.cljs:255
+#: src/app/main/ui/workspace/right_header.cljs:221
msgid "workspace.header.share"
msgstr "Delen"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Niet-opgeslagen wijzigingen"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "Weergavemodus (%s)"
-#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "Zoomen"
@@ -4618,7 +4614,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:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Passend zoomen"
@@ -4626,19 +4622,19 @@ msgstr "Passend zoomen"
msgid "workspace.header.zoom-full-screen"
msgstr "Volledig scherm"
-#: src/app/main/ui/workspace/right_header.cljs:136
+#: src/app/main/ui/workspace/right_header.cljs:104
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:607
+#: 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:616
msgid "workspace.layout_grid.editor.options.edit-grid"
msgstr "Raster bewerken"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
msgid "workspace.layout_grid.editor.options.exit"
msgstr "Sluiten"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:478
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
msgid "workspace.layout_grid.editor.padding.expand"
msgstr "4-zijdige opvulopties weergeven"
@@ -4654,7 +4650,7 @@ msgstr "Klaar"
msgid "workspace.layout_grid.editor.top-bar.locate"
msgstr "Lokaliseren"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1321
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
msgstr "Raster-layout tonen"
@@ -4663,7 +4659,7 @@ msgstr "Raster-layout tonen"
msgid "workspace.libraries.add"
msgstr "Toevoegen"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s kleuren"
@@ -4693,43 +4689,43 @@ msgstr "Recente kleuren"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "RGB Complementair"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Kleurstijl opslaan"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:374
+#: src/app/main/ui/workspace/libraries.cljs:371
msgid "workspace.libraries.empty.add-some"
msgstr "Of voeg er enkele toe om te proberen:"
-#: src/app/main/ui/workspace/libraries.cljs:368
+#: src/app/main/ui/workspace/libraries.cljs:365
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:372
+#: src/app/main/ui/workspace/libraries.cljs:369
msgid "workspace.libraries.empty.some-templates"
msgstr "enkele sjablonen hier"
-#: src/app/main/ui/workspace/libraries.cljs:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Bestandsbibliotheek"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "BIBLIOTHEKEN IN DIT BESTAND"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "BIBLIOTHEKEN"
@@ -4738,71 +4734,64 @@ msgstr "BIBLIOTHEKEN"
msgid "workspace.libraries.library"
msgstr "BIBLIOTHEEK"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "BIBLIOTHEEK-UPDATES"
-#: src/app/main/ui/workspace/libraries.cljs:363
+#: src/app/main/ui/workspace/libraries.cljs:360
msgid "workspace.libraries.loading"
msgstr "Laden…"
#: src/app/main/ui/workspace/libraries.cljs:387
+#, unused
msgid "workspace.libraries.more-templates"
msgstr "Je kun hier "
-#: src/app/main/ui/workspace/libraries.cljs:391
-msgid "workspace.libraries.more-templates-link"
-msgstr "meer sjablonen zoeken"
-
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "Er zijn geen gedeelde bibliotheken die moeten worden bijgewerkt"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Geen resultaten gevonden voor “%s“"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Er zijn geen gedeelde bibliotheken beschikbaar"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Gedeelde bibliotheken zoeken"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "GEDEELDE BIBLIOTHEKEN"
-#: src/app/main/ui/workspace/libraries.cljs:355
+#: src/app/main/ui/workspace/libraries.cljs:352
msgid "workspace.libraries.shared-library-btn"
msgstr "Bibliotheek verbinden"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Meervoudige typografie"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Alle typografie ontkoppelen"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:326
+#: src/app/main/ui/workspace/libraries.cljs:323
msgid "workspace.libraries.unlink-library-btn"
msgstr "Bibliotheekverbinding verbreken"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Bijwerken"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "alle wijzigingen bekijken"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "UPDATES"
@@ -4834,43 +4823,43 @@ msgstr "Selectie vervagen"
msgid "workspace.options.blur-options.toggle-blur"
msgstr "Vervaging wisselen"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Canvasachtergrond"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Content bijsnijden"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Component"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "Aantekening"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "Kopiëren"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "Aantekening maken"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Aantekening bewerken"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Hoofd"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:416
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
msgid "workspace.options.component.swap"
msgstr "Component uitwisselen"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:460
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
msgid "workspace.options.component.swap.empty"
msgstr "Er zijn nog geen assets in deze bibliotheek"
@@ -4918,7 +4907,7 @@ msgstr "Boven- en onderkant"
msgid "workspace.options.design"
msgstr "Ontwerp"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Exporteren"
@@ -4927,21 +4916,21 @@ msgstr "Exporteren"
msgid "workspace.options.export-multiple"
msgstr "Selectie exporteren"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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:187
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188
msgid "workspace.options.export.add-export"
msgstr "Export toevoegen"
-#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:199, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:234
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235
msgid "workspace.options.export.remove-export"
msgstr "Export verwijderen"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Achtervoegsel"
@@ -4949,7 +4938,7 @@ msgstr "Achtervoegsel"
msgid "workspace.options.exporting-complete"
msgstr "Export klaar"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Exporteren…"
@@ -4973,6 +4962,10 @@ msgstr "Vulkleur toevoegen"
msgid "workspace.options.fill.remove-fill"
msgstr "Vulling verwijderen"
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:341
+msgid "workspace.options.fit-content"
+msgstr "Grootte van bord aanpassen aan inhoud"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182
msgid "workspace.options.flows.add-flow-start"
msgstr "Stroomdiagram-startpunt toevoegen"
@@ -5111,7 +5104,7 @@ msgstr "Hulplijnen"
msgid "workspace.options.guides.toggle-guide"
msgstr "Hulplijn wisselen"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Hoogte"
@@ -5434,19 +5427,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:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Max.Hoogte"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Max.Breedte"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Min.Hoogte"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Min.Breedte"
@@ -5560,11 +5553,11 @@ msgstr "ruimte tussen"
msgid "workspace.options.layout.top"
msgstr "Bovenkant"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Meer kleuren"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Meer bibliotheekkleuren"
@@ -5609,7 +5602,7 @@ msgstr "Onafhankelijke radius inklappen"
msgid "workspace.options.radius.show-single-corners"
msgstr "Onafhankelijke radius weergeven"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Recent"
@@ -5617,11 +5610,11 @@ msgstr "Recent"
msgid "workspace.options.retry"
msgstr "Opnieuw proberen"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Rotatie"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Lettertype zoeken"
@@ -5631,7 +5624,7 @@ 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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Geselecteerde kleuren"
@@ -5643,55 +5636,55 @@ msgstr "Selectie vullen"
msgid "workspace.options.selection-stroke"
msgstr "Selectie-streek"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:292
msgid "workspace.options.shadow-options.add-shadow"
msgstr "Schaduw toevoegen"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Vervagen"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Schaduwkleur"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Slagschaduw"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Schaduw naar binnen"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:180, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:318
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
msgid "workspace.options.shadow-options.remove-shadow"
msgstr "Schaduw verwijderen"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Spreiding"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Schaduw"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Groep voorzien van schaduw"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Selectie voorzien van schaduw"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:176
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:144
msgid "workspace.options.shadow-options.toggle-shadow"
msgstr "Schaduw wisselen"
@@ -5699,7 +5692,7 @@ msgstr "Schaduw wisselen"
msgid "workspace.options.show-fill-on-export"
msgstr "In exports tonen"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "In weergavemodus tonen"
@@ -5707,7 +5700,7 @@ msgstr "In weergavemodus tonen"
msgid "workspace.options.size"
msgstr "Grootte"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Groottevoorinstellingen"
@@ -5776,7 +5769,7 @@ msgstr "Driehoek"
msgid "workspace.options.stroke-color"
msgstr "Streekkleur"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Streekdikte"
@@ -5848,11 +5841,11 @@ msgstr "Automatische breedte"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Vast"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Letterafstand"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Regelafstand"
@@ -5916,15 +5909,15 @@ msgstr "HOOFDLETTERS"
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:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Breedte"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "X-as"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Y-as"
@@ -6102,123 +6095,127 @@ msgstr "PLUG-IN '%s' IS GEÏNSTALLEERD VOOR JE GEBRUIKER!"
msgid "workspace.plugins.try-out.try"
msgstr "PLUG-IN UITPROBEREN"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Flex-indeling toevoegen"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "Rasterindeling toevoegen"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1004, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1030
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1013, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039
msgid "workspace.shape.menu.add-layout"
msgstr "Lay-out toevoegen"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "Naar achtergrond verplaatsen"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Naar achteren verplaatsen"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Kopiëren"
-#: src/app/main/ui/workspace/context_menu.cljs:203
+#: src/app/main/ui/workspace/context_menu.cljs:204
msgid "workspace.shape.menu.copy-css"
msgstr "Kopiëren als CSS"
-#: src/app/main/ui/workspace/context_menu.cljs:205
+#: src/app/main/ui/workspace/context_menu.cljs:206
msgid "workspace.shape.menu.copy-css-nested"
msgstr "Copy as CSS (geneste lagen)"
-#: src/app/main/ui/workspace/context_menu.cljs:188
+#: src/app/main/ui/workspace/context_menu.cljs:189
msgid "workspace.shape.menu.copy-link"
msgstr "Link kopiëren naar klembord"
-#: src/app/main/ui/workspace/context_menu.cljs:201
+#: src/app/main/ui/workspace/context_menu.cljs:202
msgid "workspace.shape.menu.copy-paste-as"
msgstr "Kopiëren/plakken als…"
-#: src/app/main/ui/workspace/context_menu.cljs:213
+#: src/app/main/ui/workspace/context_menu.cljs:214
msgid "workspace.shape.menu.copy-props"
msgstr "Eigenschappen kopiëren"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/context_menu.cljs:211
+msgid "workspace.shape.menu.copy-text"
+msgstr "Kopiëren als tekst"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "Aantekening maken"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Selectie naar bord"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Component aanmaken"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Meerdere componenten aanmaken"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Knippen"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Verwijderen"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Stroomdiagram-start verwijderen"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Instantie losmaken"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Instanties losmaken"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Verschil"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Dupliceren"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Bewerken"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Uitsluiten"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Afvlakken"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Horizontaal spiegelen"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Verticaal spiegelen"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Stroomdiagram-start"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Naar voren brengen"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Naar voorgrond brengen"
@@ -6227,107 +6224,107 @@ msgstr "Naar voorgrond brengen"
msgid "workspace.shape.menu.go-main"
msgstr "Ga naar hoofdcomponent"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Groep"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Verbergen"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Gebruikersinterface tonen/verbergen"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Kruispunt"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Vergrendelen"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Masker"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Plakken"
-#: src/app/main/ui/workspace/context_menu.cljs:217
+#: src/app/main/ui/workspace/context_menu.cljs:218
msgid "workspace.shape.menu.paste-props"
msgstr "Eigenschappen plekken"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Pad"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Flex-indeling verwijderen"
-#: src/app/main/ui/workspace/context_menu.cljs:531
+#: src/app/main/ui/workspace/context_menu.cljs:535
msgid "workspace.shape.menu.remove-grid"
msgstr "Raster-layout verwijderen"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1022
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1031
msgid "workspace.shape.menu.remove-layout"
msgstr "Lay-out verwijderen"
-#: src/app/main/ui/workspace/context_menu.cljs:312
+#: src/app/main/ui/workspace/context_menu.cljs:313
msgid "workspace.shape.menu.rename"
msgstr "Naam wijzigen"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Overschrijvingen opnieuw instellen"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Hoofdcomponent herstellen"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Laag selecteren"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Tonen"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "In paneel Assets tonen"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Hoofdcomponent tonen"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Miniatuur verwijderen"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Instellen als miniatuur"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Transformeren naar pad"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Groep opheffen"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Vereniging"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Ontgrendelen"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Masker wegnemen"
@@ -6336,7 +6333,7 @@ msgstr "Masker wegnemen"
msgid "workspace.shape.menu.update-components-in-bulk"
msgstr "Hoofdcomponenten bijwerken"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Hoofdcomponent bijwerken"
@@ -6348,11 +6345,11 @@ msgstr "Zijbalk inklappen"
msgid "workspace.sidebar.expand"
msgstr "Zijbalk uitklappen"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Geschiedenis"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Lagen"
@@ -6388,7 +6385,7 @@ msgstr "Vormen"
msgid "workspace.sidebar.layers.texts"
msgstr "Teksten"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Geïmporteerde SVG-kenmerken"
@@ -6400,7 +6397,7 @@ msgstr "Pagina's"
msgid "workspace.sidebar.sitemap.add-page"
msgstr "Pagina toevoegen"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Sitemap"
@@ -6418,43 +6415,43 @@ msgstr "%s actieve thema's"
msgid "workspace.token.add set"
msgstr "Verzameling toevoegen"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:341
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:136
+msgid "workspace.token.applied-to"
+msgstr "Toegepast op"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:391
msgid "workspace.token.back-to-themes"
msgstr "Terug naar themalijst"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:51
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:54
msgid "workspace.token.create-new-theme"
msgstr "Maak nu je eerste thema aan."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:191, src/app/main/ui/workspace/tokens/sidebar.cljs:218
+#: src/app/main/ui/workspace/tokens/sets.cljs:134, src/app/main/ui/workspace/tokens/sidebar.cljs:190
msgid "workspace.token.create-one"
msgstr "Maak er een aan."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159, src/app/main/ui/workspace/tokens/modals/themes.cljs:237
-msgid "workspace.token.create-theme-title"
-msgstr "Thema aanmaken"
-
-#: src/app/main/ui/workspace/tokens/form.cljs:431
+#: src/app/main/ui/workspace/tokens/form.cljs:492
msgid "workspace.token.create-token"
msgstr "Nieuw %s token aanmaken"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:228
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:278
msgid "workspace.token.delete"
msgstr "Token verwijderen"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:151
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159
msgid "workspace.token.delete-theme-title"
msgstr "Thema verwijderen"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:225
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:275
msgid "workspace.token.duplicate"
msgstr "Token dupliceren"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:212
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:262
msgid "workspace.token.edit"
msgstr "Token bewerken"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:333
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:383
msgid "workspace.token.edit-theme-title"
msgstr "Thema bewerken"
@@ -6462,15 +6459,15 @@ msgstr "Thema bewerken"
msgid "workspace.token.edit-themes"
msgstr "Thema's bewerken"
-#: src/app/main/ui/workspace/tokens/form.cljs:430
+#: src/app/main/ui/workspace/tokens/form.cljs:491
msgid "workspace.token.edit-token"
msgstr "Token bewerken"
-#: src/app/main/ui/workspace/tokens/form.cljs:481
+#: src/app/main/ui/workspace/tokens/form.cljs:544
msgid "workspace.token.enter-token-description"
msgstr "Voeg een beschrijving toe (optioneel)"
-#: src/app/main/ui/workspace/tokens/form.cljs:437
+#: src/app/main/ui/workspace/tokens/form.cljs:498
msgid "workspace.token.enter-token-name"
msgstr "Voer de tokennaam %s in"
@@ -6479,88 +6476,112 @@ msgstr "Voer de tokennaam %s in"
msgid "workspace.token.grouping-set-alert"
msgstr "Groepering van tokenverzamelingen is nog niet ondersteund."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:56
-msgid "workspace.token.new-theme"
-msgstr "Nieuw thema"
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:196
+msgid "workspace.token.label.group"
+msgstr "Groep"
-#: src/app/main/ui/workspace/tokens/theme_select.cljs:88
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:206
+msgid "workspace.token.label.theme"
+msgstr "Thema"
+
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:89
msgid "workspace.token.no-active-theme"
msgstr "Geen thema actief"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:146
-msgid "workspace.token.no-sets"
-msgstr "Geen verzamelingen"
+#: src/app/main/ui/workspace/tokens/sets.cljs:110
+msgid "workspace.token.no-permisions-set"
+msgstr "Je moet een redacteur zijn om verzamelingen in/uit te schakelen"
-#: src/app/main/ui/workspace/tokens/sets.cljs:401, src/app/main/ui/workspace/tokens/sets.cljs:405
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:199
+msgid "workspace.token.no-permission-themes"
+msgstr "Je moet een redacteur zijn om thema's te gebruiken"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:504
msgid "workspace.token.no-sets-create"
msgstr "Er zijn nog geen verzamelingen gedefinieerd. Maak er eerst een aan."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:215, src/app/main/ui/workspace/tokens/sidebar.cljs:221
+#: src/app/main/ui/workspace/tokens/sets.cljs:131, src/app/main/ui/workspace/tokens/sets.cljs:137
msgid "workspace.token.no-sets-yet"
msgstr "Er zijn nog geen verzamelingen."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:187
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:186
msgid "workspace.token.no-themes"
msgstr "Er zijn geen thema's."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:47
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:50
msgid "workspace.token.no-themes-currently"
msgstr "Je hebt momenteel geen thema's."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:137
-msgid "workspace.token.num-sets"
-msgstr "%s verzamelingen"
-
-#: src/app/main/ui/workspace/tokens/token_pill.cljs:114
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:122
#, fuzzy
msgid "workspace.token.original-value"
-msgstr "Oorspronkelijke waarde: "
+msgstr "Oorspronkelijke waarde: %s"
-#: src/app/main/ui/workspace/tokens/form.cljs:205, src/app/main/ui/workspace/tokens/form.cljs:208, src/app/main/ui/workspace/tokens/token_pill.cljs:115
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:128
+msgid "workspace.token.ref-not-valid"
+msgstr "Referentie is niet geldig of zit niet in een actieve verzameling"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:217, src/app/main/ui/workspace/tokens/form.cljs:221, src/app/main/ui/workspace/tokens/token_pill.cljs:123
#, fuzzy
msgid "workspace.token.resolved-value"
-msgstr "Besloten waarde: "
+msgstr "Besloten waarde: %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:203
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:240
msgid "workspace.token.save-theme"
msgstr "Thema opslaan"
-#: src/app/main/ui/workspace/tokens/sets.cljs:200, src/app/main/ui/workspace/tokens/sets.cljs:305
+#: src/app/main/ui/workspace/tokens/sets.cljs:239, src/app/main/ui/workspace/tokens/sets.cljs:340
msgid "workspace.token.select-set"
msgstr "Verzameling kiezen."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:346
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:396
msgid "workspace.token.set-selection-theme"
msgstr ""
"Bepaal welke tokenverzamelingen moeten worden gebruikt als onderdeel van "
"deze thema-optie:"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs
-#, unused
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:136
msgid "workspace.token.theme-name"
msgstr "Thema %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:43, src/app/main/ui/workspace/tokens/modals/themes.cljs:88
-msgid "workspace.token.themes"
-msgstr "Thema's"
-
-#: src/app/main/ui/workspace/tokens/form.cljs:482
+#: src/app/main/ui/workspace/tokens/form.cljs:545
msgid "workspace.token.token-description"
msgstr "Beschrijving"
-#: src/app/main/ui/workspace/tokens/form.cljs:440
+#: src/app/main/ui/workspace/tokens/form.cljs:501
msgid "workspace.token.token-name"
msgstr "Naam"
-#: src/app/main/ui/workspace/tokens/form.cljs:464
+#: src/app/main/ui/workspace/tokens/form.cljs:59
+msgid "workspace.token.token-name-validation-error"
+msgstr ""
+" is geen geldige tokennaam.\n"
+"Tokennamen mogen alleen letters en cijfers bevatten, gescheiden door . "
+"(punt) en mogen niet beginnen met een $."
+
+#: src/app/main/ui/workspace/tokens/form.cljs:526
msgid "workspace.token.token-value"
msgstr "Waarde"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:348
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:322
+msgid "workspace.token.tokens-section-title"
+msgstr "TOKENS - %s"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:405
msgid "workspace.token.tools"
msgstr "Hulpmiddelen"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:131
+msgid "workspace.token.value-not-valid"
+msgstr "Ongeldige waarde"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:520
+msgid "workspace.token.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:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Assets"
@@ -6568,39 +6589,39 @@ msgstr "Assets"
msgid "workspace.toolbar.color-palette"
msgstr "Kleurenpalet (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Commentaar (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Kromme (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Ellips (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Bord (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Afbeelding (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Verplaatsen (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Pad (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:201, src/app/main/ui/workspace/top_toolbar.cljs:202
+#: src/app/main/ui/workspace/top_toolbar.cljs:210, src/app/main/ui/workspace/top_toolbar.cljs:211
msgid "workspace.toolbar.plugins"
msgstr "Plug-ins (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Rechthoek (%s)"
@@ -6609,7 +6630,7 @@ msgstr "Rechthoek (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Sneltoetsen (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Tekst (%s)"
@@ -6617,7 +6638,7 @@ msgstr "Tekst (%s)"
msgid "workspace.toolbar.text-palette"
msgstr "Typografie (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:220, src/app/main/ui/workspace/top_toolbar.cljs:221
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
msgid "workspace.toolbar.toggle-toolbar"
msgstr "Werkbalk wisselen"
@@ -6775,19 +6796,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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Afwijzen"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
msgid "workspace.updates.more-info"
msgstr "Meer info"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
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:1226
msgid "workspace.updates.update"
msgstr "Bijwerken"
@@ -6847,11 +6868,11 @@ msgstr "Wil je deze versie herstellen?"
msgid "workspace.versions.snapshot-menu"
msgstr "Snapshot-menu openen"
-#: src/app/main/ui/workspace/sidebar.cljs:284
+#: src/app/main/ui/workspace/sidebar.cljs:285
msgid "workspace.versions.tab.actions"
msgstr "Acties"
-#: src/app/main/ui/workspace/sidebar.cljs:281
+#: src/app/main/ui/workspace/sidebar.cljs:282
msgid "workspace.versions.tab.history"
msgstr "Geschiedenis"
diff --git a/frontend/translations/pl.po b/frontend/translations/pl.po
index b5f430542b..19d1de636e 100644
--- a/frontend/translations/pl.po
+++ b/frontend/translations/pl.po
@@ -35,13 +35,13 @@ msgstr "Utwórz konto demo"
msgid "auth.create-demo-profile"
msgstr "Chcesz tylko spróbować?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"To jest usługa DEMO, NIE UŻYWAJ jej do prawdziwej pracy, projekty będą "
"okresowo usuwane."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Zapomniałeś hasła?"
@@ -53,27 +53,27 @@ msgstr "Imię i nazwisko"
msgid "auth.login-here"
msgstr "Zaloguj się tutaj"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Zaloguj się"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "Gitlab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -97,7 +97,7 @@ msgstr "Link do odzyskiwania hasła został wysłany na Twój email."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Pomyślnie dołączyłeś do zespołu"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Hasło"
@@ -125,11 +125,11 @@ msgstr "Zapomniałeś hasła?"
msgid "auth.recovery-submit"
msgstr "Zmień hasło"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Nie masz jeszcze konta?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Utwórz konto"
@@ -142,7 +142,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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Warunki świadczenia usług"
@@ -150,7 +150,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:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Opublikuj"
@@ -223,7 +223,7 @@ msgstr "Udostępnij prototypy"
msgid "common.share-link.view-all"
msgstr "Wybierz wszystko"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Cofnij publikację"
@@ -279,7 +279,7 @@ msgstr "Dodaj jako Udostępnioną Bibliotekę"
msgid "dashboard.change-email"
msgstr "Zmień email"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(skopiuj)"
@@ -401,26 +401,26 @@ msgstr "Uwzględnij zasoby bibliotek współdzielonych w bibliotekach plików"
msgid "dashboard.export.title"
msgstr "Eksportuj pliki"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Czcionka usunięta"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Odrzuć wszystko"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Niestandardowe czcionki, które prześlesz, pojawią się tutaj."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "1 czcionka dodana"
msgstr[1] "%s czcionki dodane"
msgstr[2] "%s czcionki dodane"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -430,21 +430,21 @@ msgstr ""
"czcionek**. Możesz przesyłać czcionki w następujących formatach: **TTF, OTF "
"i WOFF** (potrzebny będzie tylko jeden)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Powinieneś przesyłać tylko czcionki, których jesteś właścicielem lub "
"posiadasz licencję na używanie w Penpot. Dowiedz się więcej w sekcji "
-"dotyczącej praw do treści w [Warunkach świadczenia usług Penpot] "
-"(%s). Możesz też przeczytać o [licencjonowaniu "
+"dotyczącej praw do treści w [Warunkach świadczenia usług Penpot] (%s). "
+"Możesz też przeczytać o [licencjonowaniu "
"czcionek](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Prześlij wszystko"
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Importuj pliki Penpot"
@@ -456,11 +456,11 @@ msgstr "Kurza stopa! Nie udało się zaimportować tego pliku"
msgid "dashboard.import.import-error"
msgstr "Podczas importowania pliku wystąpił problem. Plik nie został zaimportowany."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgstr "%s plików zostało pomyślnie zaimportowanych."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Niektóre pliki zawierały nieprawidłowe obiekty, które zostały usunięte."
@@ -500,27 +500,27 @@ msgstr "Zaproś ludzi"
msgid "dashboard.leave-team"
msgstr "Opuść zespół"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Biblioteki i szablony"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
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:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "Wystąpił problem z importem szablonu. Szablon nie został zaimportowany."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Biblioteki współdzielone"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "wczytywanie Twoich plików…"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "wczytywanie Twoich czcionek…"
@@ -536,11 +536,11 @@ msgstr "Przenieś %s pliki do"
msgid "dashboard.move-to-other-team"
msgstr "Przenieś do innego zespołu"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Nowy plik"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Nowy plik"
@@ -548,7 +548,7 @@ msgstr "Nowy plik"
msgid "dashboard.new-project"
msgstr "+ Nowy projekt"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Nowy projekt"
@@ -580,7 +580,7 @@ msgstr "%s członków"
msgid "dashboard.open-in-new-tab"
msgstr "Otwórz plik w nowej zakładce"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Opcje"
@@ -625,7 +625,7 @@ msgstr "Wybierz język interfejsu"
msgid "dashboard.select-ui-theme"
msgstr "Wybierz temat"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Pokaż wszystkie pliki"
@@ -637,7 +637,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Twój plik został pomyślnie przeniesiony"
@@ -732,7 +732,7 @@ msgstr "Email"
msgid "dashboard.your-name"
msgstr "Twoje imię"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Twój Penpot"
@@ -748,11 +748,11 @@ msgstr "Uwaga"
msgid "ds.component-subtitle"
msgstr "Komponenty do aktualizacji:"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Anuluj"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Ok"
@@ -760,7 +760,7 @@ msgstr "Ok"
msgid "ds.confirm-title"
msgstr "Jesteś pewien?"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Dostawca uwierzytelniania nie został skonfigurowany."
@@ -768,15 +768,15 @@ msgstr "Dostawca uwierzytelniania nie został skonfigurowany."
msgid "errors.auth.unable-to-login"
msgstr "Wygląda na to, że nie jesteś uwierzytelniony lub sesja wygasła."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "Nie można załadować czcionki %s"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "Nie można załadować czcionek %s"
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Twoja przeglądarka nie może wykonać tej operacji"
@@ -788,7 +788,7 @@ msgstr "Email jest już używany"
msgid "errors.email-already-validated"
msgstr "E-mail został już zweryfikowany."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Nie możesz użyć swojego adresu email jako hasła"
@@ -810,7 +810,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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Coś poszło nie tak."
@@ -823,8 +823,7 @@ msgstr "Nieprawidłowy kolor"
msgid "errors.invalid-email"
msgstr "Podaj prawidłowy adres e-mail"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "E-mail potwierdzający musi być zgodny"
@@ -840,7 +839,7 @@ msgstr "Nieprawidłowe zaproszenie"
msgid "errors.invite-invalid.info"
msgstr "To zaproszenie może być anulowane lub wygasło."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "Uwierzytelnianie LDAP jest wyłączone."
@@ -876,7 +875,7 @@ msgstr "Hasło potwierdzające musi być zgodne"
msgid "errors.password-too-short"
msgstr "Hasło powinno zawierać co najmniej 8 znaków"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Profil jest zablokowany"
@@ -942,12 +941,11 @@ msgstr "Nieoczekiwany błąd podczas sprawdzania poprawności"
msgid "errors.webhooks.unexpected-status"
msgstr "Nieoczekiwany status %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "Email lub hasło są niepoprawne."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Stare hasło jest nieprawidłowe"
@@ -995,11 +993,11 @@ msgstr "Służymy pomocą w kwestiach technicznych."
msgid "feedback.twitter-title"
msgstr "Konto wsparcia na Xze"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Wystąpił błąd"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Rozmycie"
@@ -1007,31 +1005,31 @@ msgstr "Rozmycie"
msgid "inspect.attributes.blur.value"
msgstr "Wartość"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Wypełnienie"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Pobierz obraz źródłowy"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Wysokość"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Szerokość"
@@ -1070,15 +1068,15 @@ msgstr "Góra"
msgid "inspect.attributes.layout.width"
msgstr "Szerokość"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Cień"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Rozmiar i położenie"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Obrys"
@@ -1115,133 +1113,133 @@ msgstr "Ciągły"
msgid "inspect.attributes.stroke.width"
msgstr "Szerokość"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Typografia"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Rodzina czcionek"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Rozmiar czcionki"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Styl czcionki"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Rozstaw liter"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Wysokość linii"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Dekoracja tekstu"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Brak"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Przekreślenie"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Podkreślenie"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Przekształcenie tekstu"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "małe litery"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Brak"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Kapitaliki"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "DUŻE LITERY"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr ""
"Jeśli chcesz dowiedzieć się więcej o inspekcji projektu, odwiedź centrum "
"pomocy Penpot"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Więcej informacji o inspekcji"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr "Wybierz kształt, tablicę lub grupę, aby sprawdzić ich właściwości i kod"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Kod"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Okrąg"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Komponent"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Krzywa"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Artboard"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Grupa"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Obraz"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Maska"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s wybrano"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Ścieżka"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Prostokąt"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Tekst"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Informacje"
@@ -1257,7 +1255,7 @@ msgstr "Akceptuj"
msgid "labels.active"
msgstr "Aktywny"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Dodaj niestandardową czcionkę"
@@ -1265,7 +1263,7 @@ msgstr "Dodaj niestandardową czcionkę"
msgid "labels.admin"
msgstr "Admin"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Wszystko"
@@ -1287,19 +1285,19 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Bad Gateway"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Anuluj"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Zamknij"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Komentarze"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Społeczność"
@@ -1307,7 +1305,7 @@ msgstr "Społeczność"
msgid "labels.confirm-password"
msgstr "Potwierdź hasło"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Kontynuuj"
@@ -1323,7 +1321,7 @@ msgstr "Możesz kontynuować z kontem Penpot"
msgid "labels.copy-invitation-link"
msgstr "Kopiuj link"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Stwórz"
@@ -1343,15 +1341,15 @@ msgstr "Niestandardowe czcionki"
msgid "labels.dashboard"
msgstr "Kokpit"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Usuń"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Usuń komentarz"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Usuń wątek"
@@ -1363,11 +1361,11 @@ msgstr "Usuń zaproszenie"
msgid "labels.delete-multi-files"
msgstr "Usuń %s plików"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Szkice"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Edytuj"
@@ -1383,7 +1381,7 @@ msgstr "Edytor"
msgid "labels.expired-invitation"
msgstr "Wygasły"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Eksportuj"
@@ -1395,7 +1393,7 @@ msgstr "Opinie wyłączone"
msgid "labels.feedback-sent"
msgstr "Opinia wysłana"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Rodzina czcionek"
@@ -1403,19 +1401,19 @@ msgstr "Rodzina czcionek"
msgid "labels.font-providers"
msgstr "Dostawcy czcionek"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Style"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Czcionki"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Repozytorium Github"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Dodaj opinię"
@@ -1423,11 +1421,11 @@ msgstr "Dodaj opinię"
msgid "labels.go-back"
msgstr "Wróć"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Centrum Pomocy"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Ukryj rozwiązane komentarze"
@@ -1435,7 +1433,7 @@ msgstr "Ukryj rozwiązane komentarze"
msgid "labels.inactive"
msgstr "Nieaktywny"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Zainstalowane czcionki"
@@ -1457,7 +1455,7 @@ msgstr "Zaproszenia"
msgid "labels.language"
msgstr "Język"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Biblioteki i szablony"
@@ -1465,7 +1463,7 @@ msgstr "Biblioteki i szablony"
msgid "labels.log-or-sign"
msgstr "Zaloguj się lub zarejestruj"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Wyloguj"
@@ -1481,7 +1479,7 @@ msgstr "Członkowie"
msgid "labels.new-password"
msgstr "Nowe hasło"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr ""
"Wszyscy jesteście na bieżąco! Tutaj będą pojawiać się powiadomienia o "
@@ -1505,7 +1503,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:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "1 plik"
@@ -1559,7 +1557,7 @@ msgstr "Profil"
msgid "labels.projects"
msgstr "Projekty"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Uwagi do wydania"
@@ -1577,7 +1575,7 @@ msgstr "Usuń"
msgid "labels.remove-member"
msgstr "Usuń członka zespołu"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Zmień nazwę"
@@ -1597,11 +1595,11 @@ msgstr "Ponów"
msgid "labels.role"
msgstr "Rola"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Zapisz"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Szukaj czcionki"
@@ -1633,15 +1631,15 @@ msgstr "Udostępnij prototyp"
msgid "labels.shared-libraries"
msgstr "Biblioteki Współdzielone"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Pokaż wszystkie komentarze"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Pokaż listę komentarzy"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Pokaż tylko swoje komentarze"
@@ -1649,7 +1647,7 @@ msgstr "Pokaż tylko swoje komentarze"
msgid "labels.status"
msgstr "Status"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Samouczki"
@@ -1665,15 +1663,15 @@ msgstr "Aktualizuj"
msgid "labels.update-team"
msgstr "Zaktualizuj zespół"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Wgraj"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Wgraj niestandardowe czcionki"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Wgrywanie…"
@@ -1689,7 +1687,7 @@ msgstr "Widz"
msgid "labels.webhooks"
msgstr "Webhooki"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Napisz nowy komentarz"
@@ -1697,7 +1695,7 @@ msgstr "Napisz nowy komentarz"
msgid "labels.you"
msgstr "(Ty)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Twoje konto"
@@ -1777,17 +1775,17 @@ msgstr "Usuwając konto, stracisz wszystkie swoje bieżące i archiwalne projekt
msgid "modals.delete-account.title"
msgstr "Czy na pewno chcesz usunąć swoje konto?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Usuń rozmowę"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Czy na pewno chcesz usunąć tę rozmowę? Wszystkie komentarze w tym wątku "
"zostaną usunięte."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Usuń rozmowę"
@@ -1815,31 +1813,31 @@ msgstr "Czy na pewno chcesz usunąć %s pliki?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Usuwanie %s plików"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Czy na pewno chcesz usunąć ten styl czcionki? Nie zostanie załadowany, "
"jeśli jest używany w pliku."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Usuwanie stylu czcionki"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Czy na pewno chcesz usunąć tę czcionkę? Nie zostanie załadowana, jeśli jest "
"używana w pliku."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Usuwanie czcionki"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Czy na pewno chcesz usunąć tę stronę?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Usuń stronę"
@@ -2058,21 +2056,21 @@ 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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Aktualizuj"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Anuluj"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Zaktualizuj komponent w bibliotece współdzielonej"
@@ -2127,30 +2125,30 @@ msgstr "Samouczki wideo"
msgid "onboarding-v2.before-start.title"
msgstr "Zanim zaczniesz"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Zapisz się do newslettera Penpot, aby być na bieżąco z postępami w rozwoju "
"produktu i nowościami."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr ""
"Wysyłaj mi wiadomości o Penpot (posty na blogach, samouczki wideo, "
"transmisje na żywo...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Dbamy o prywatność, tutaj możesz przeczytać nasze "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Będziemy wysyłać do Ciebie tylko odpowiednie e-maile. Możesz zrezygnować z "
"subskrypcji w dowolnym momencie, korzystając z łącza rezygnacji z "
"subskrypcji w dowolnym z naszych biuletynów."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr "Wysyłaj mi aktualizacje produktów (nowe funkcje, wydania, poprawki...)."
@@ -2212,17 +2210,17 @@ msgstr "Zaproś z rolą:"
msgid "onboarding.newsletter.accept"
msgstr "Tak, zasubskrybuj"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"Twoja prośba o subskrypcję została wysłana, wyślemy Ci wiadomość email w "
"celu jej potwierdzenia."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Polityka prywatności."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Chcesz otrzymywać informacje o Penpot?"
@@ -2272,7 +2270,7 @@ msgstr "Penpot"
msgid "profile.recovery.go-to-login"
msgstr "Przejdź do logowania"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Mieszane"
@@ -2442,7 +2440,7 @@ msgstr "Stwórz nowy"
msgid "shortcuts.cut"
msgstr "Wytnij"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Oddal"
@@ -2534,7 +2532,7 @@ msgstr "Rozłóż w poziomie"
msgid "shortcuts.hide-ui"
msgstr "Pokaż/ukryj UI"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Przybliż"
@@ -2818,15 +2816,15 @@ msgstr "Przybliż wybrane"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Dostawcy Czcionek - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Czcionki - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Projekty - %s - Penpot"
@@ -2834,7 +2832,7 @@ msgstr "Projekty - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Szukaj - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Biblioteki Współdzielone - %s - Penpot"
@@ -2878,7 +2876,7 @@ msgstr "Webhooki - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Tryb wyświetlania - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -2983,15 +2981,15 @@ msgstr "Wyrównaj do góry (%s)"
msgid "workspace.assets.assets"
msgstr "Zasoby"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Wszystkie zasoby"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Kolory"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Komponenty"
@@ -3005,11 +3003,11 @@ msgstr ""
"Twoje elementy zostaną automatycznie nazwane jako „nazwa grupy / nazwa "
"elementu”"
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Usuń"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Duplikuj"
@@ -3017,11 +3015,11 @@ msgstr "Duplikuj"
msgid "workspace.assets.edit"
msgstr "Edytuj"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Grafika"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Grupa"
@@ -3029,19 +3027,15 @@ msgstr "Grupa"
msgid "workspace.assets.group-name"
msgstr "Nazwa grupy"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Biblioteki"
-
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "lokalna biblioteka"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Nie znaleziono zasobów"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Zmień nazwę"
@@ -3049,7 +3043,7 @@ msgstr "Zmień nazwę"
msgid "workspace.assets.rename-group"
msgstr "Zmień nazwę grupy"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Szukaj zasobów"
@@ -3061,7 +3055,7 @@ msgstr[0] "Wybrano %s element"
msgstr[1] "Wybrano %s elementy"
msgstr[2] "Wybrano %s elementów"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Typografia"
@@ -3074,27 +3068,27 @@ msgstr ""
msgid "workspace.assets.typography.font-id"
msgstr "Czcionka"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Rozmiar"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Wariant"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Przejdź do pliku biblioteki stylów, żeby edytować"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Odstępy między literami"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Wysokość Linii"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -3102,7 +3096,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Style tekstu"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Transformacja tekstu"
@@ -3114,11 +3108,11 @@ msgstr "Rozgrupuj"
msgid "workspace.focus.focus-mode"
msgstr "Tryb skupienia"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Tryb skupienia wyłączony"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Tryb skupienia włączony"
@@ -3232,29 +3226,28 @@ msgstr "Pokaż linijki"
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:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Resetuj"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Błąd przy zapisywaniu"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Zapisano"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Zapisywanie"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Niezapisane zmiany"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "Tryb widoku (%s)"
@@ -3266,7 +3259,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:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Powiększ, aby dopasować wszystko"
@@ -3274,7 +3267,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:136
+#: src/app/main/ui/workspace/right_header.cljs:104
msgid "workspace.header.zoom-selected"
msgstr "Powiększ wybrane"
@@ -3283,7 +3276,7 @@ msgstr "Powiększ wybrane"
msgid "workspace.libraries.add"
msgstr "Dodaj"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s kolory"
@@ -3305,31 +3298,31 @@ msgstr "Bieżące kolory"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "RGB - Komplementarne"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Zapisz styl koloru"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Biblioteka plików"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "BIBLIOTEKI W TYM PLIKU"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "BIBLIOTEKI"
@@ -3338,43 +3331,39 @@ msgstr "BIBLIOTEKI"
msgid "workspace.libraries.library"
msgstr "BIBLIOTEKA"
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "Nie ma Bibliotek Współdzielonych, które wymagają aktualizacji"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Nie znaleziono dopasowań dla “%s“"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Brak dostępnych Bibliotek Współdzielonych"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Przeszukaj Biblioteki Współdzielone"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "BIBLIOTEKI WSPÓŁDZIELONE"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Wiele typografii"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Odlinkuj wszystkie typografie"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Aktualizuj"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "AKTUALIZACJE"
@@ -3394,15 +3383,15 @@ msgstr "Rozmycie grupowe"
msgid "workspace.options.blur-options.title.multiple"
msgstr "Rozmycie zaznaczenia"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Tło płótna"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Przytnij treść"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Komponent"
@@ -3450,7 +3439,7 @@ msgstr "Góra i dół"
msgid "workspace.options.design"
msgstr "Projektowanie"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Eksport"
@@ -3459,14 +3448,14 @@ msgstr "Eksport"
msgid "workspace.options.export-multiple"
msgstr "Eksportuj zaznaczone"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Przyrostek"
@@ -3474,7 +3463,7 @@ msgstr "Przyrostek"
msgid "workspace.options.exporting-complete"
msgstr "Eksportowanie zakończone"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Eksportowanie…"
@@ -3604,7 +3593,7 @@ msgstr "Wypełnienie grupy"
msgid "workspace.options.group-stroke"
msgstr "Obrys grupy"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Wysokość"
@@ -3914,19 +3903,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:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Maks.Wysokość"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Maks.Szerokość"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Min.Wysokość"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Min.Szerokość"
@@ -4030,11 +4019,11 @@ msgstr "przestrzeń pomiędzy"
msgid "workspace.options.layout.top"
msgstr "Góra"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Więcej kolorów"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Więcej kolorów z biblioteki"
@@ -4071,7 +4060,7 @@ msgstr "Górne lewo"
msgid "workspace.options.radius-top-right"
msgstr "Górne prawo"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Bieżące"
@@ -4079,11 +4068,11 @@ msgstr "Bieżące"
msgid "workspace.options.retry"
msgstr "Ponów"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Obrót"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Szukaj czcionki"
@@ -4093,7 +4082,7 @@ 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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Wybrane kolory"
@@ -4105,43 +4094,43 @@ msgstr "Wypełnienie zaznaczenia"
msgid "workspace.options.selection-stroke"
msgstr "Obrys zaznaczenia"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Rozmycie"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Kolor cienia"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Rzuć cień"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Cień wewnętrzny"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Rozłożenie"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Cień"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Cień grupy"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Cień zaznaczenia"
@@ -4149,7 +4138,7 @@ msgstr "Cień zaznaczenia"
msgid "workspace.options.show-fill-on-export"
msgstr "Pokaż przy eksporcie"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Pokaż w trybie przeglądania"
@@ -4157,7 +4146,7 @@ msgstr "Pokaż w trybie przeglądania"
msgid "workspace.options.size"
msgstr "Rozmiar"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Wstępne ustawienia rozmiaru"
@@ -4206,7 +4195,7 @@ msgstr "Trójkątny grot"
msgid "workspace.options.stroke-color"
msgstr "Kolor obrysu"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Szerokość obrysu"
@@ -4270,11 +4259,11 @@ msgstr "Automatyczna szerokość"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Stały"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Odstępy między literami"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Wysokość linii"
@@ -4338,15 +4327,15 @@ msgstr "DUŻE LITERY"
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:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Szerokość"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "Oś X"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Oś Y"
@@ -4390,87 +4379,87 @@ msgstr "Rozłącz węzły (%s)"
msgid "workspace.path.actions.snap-nodes"
msgstr "Przyciągnij węzły (%s)"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Dodaj układ flex"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "Przesuń na spód"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Przesuń do tyłu"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Kopiuj"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Zaznaczone do obszaru kompozycji"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Utwórz komponent"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Wytnij"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Usuń"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Usuń początek flow"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Odłącz instancję"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Odłącz instancje"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Różnica"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Duplikuj"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Edytuj"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Wyklucz"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Spłaszcz"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Odwróć w poziomie"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Odwróć w pionie"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Początek flow"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Przesuń do góry"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Przesuń na wierzch"
@@ -4479,91 +4468,91 @@ msgstr "Przesuń na wierzch"
msgid "workspace.shape.menu.go-main"
msgstr "Przejdź do głównego pliku komponentu"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Grupuj"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Ukryj"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Pokaż/Ukryj UI"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Przecięcie"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Zablokuj"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Maskuj"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Wklej"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Ścieżka"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Usuń układ flex"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Zresetuj nadpisania"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Przywróć główny komponent"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Zaznacz warstwę"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Pokaż"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Pokaż w panelu zasobów"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Pokaż główny komponent"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Usuń miniaturę"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Ustaw jako miniaturę"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Przekształć w ścieżkę"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Rozgrupuj"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Złącz"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Odblokuj"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Odmaskuj"
@@ -4572,7 +4561,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:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Aktualizuj główny komponent"
@@ -4584,11 +4573,11 @@ msgstr "Zwiń pasek boczny"
msgid "workspace.sidebar.expand"
msgstr "Rozwiń pasek boczny"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Historia"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Warstwy"
@@ -4624,7 +4613,7 @@ msgstr "Kształty"
msgid "workspace.sidebar.layers.texts"
msgstr "Teksty"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Importowane atrybuty SVG"
@@ -4632,11 +4621,11 @@ msgstr "Importowane atrybuty SVG"
msgid "workspace.sidebar.sitemap"
msgstr "Strony"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Mapa strony"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Zasoby"
@@ -4644,35 +4633,35 @@ msgstr "Zasoby"
msgid "workspace.toolbar.color-palette"
msgstr "Palety kolorów (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Komentarze (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Krzywa (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Elipsa (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Obszar kompozycji (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Obraz (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Przenieś (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Ścieżka (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Prostokąt (%s)"
@@ -4681,7 +4670,7 @@ msgstr "Prostokąt (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Skróty (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Tekst (%s)"
@@ -4834,15 +4823,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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Odrzuć"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
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:1226
msgid "workspace.updates.update"
msgstr "Aktualizuj"
diff --git a/frontend/translations/pt_BR.po b/frontend/translations/pt_BR.po
index 94564a14f9..47d9d6fb9c 100644
--- a/frontend/translations/pt_BR.po
+++ b/frontend/translations/pt_BR.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2024-06-17 08:07+0000\n"
-"Last-Translator: Anonymous \n"
+"PO-Revision-Date: 2025-02-07 14:01+0000\n"
+"Last-Translator: Robson Cardoso dos Santos \n"
"Language-Team: Portuguese (Brazil) "
" \n"
"Language: pt_BR\n"
@@ -9,12 +9,16 @@ 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.6-dev\n"
+"X-Generator: Weblate 5.10-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
msgstr "Já tem uma conta?"
+#: src/app/main/ui/auth/recovery_request.cljs:113, src/app/main/ui/auth/register.cljs:274
+msgid "auth.check-mail"
+msgstr "Confira seu email"
+
#: src/app/main/ui/auth/register.cljs:277
msgid "auth.check-your-email"
msgstr ""
@@ -34,13 +38,13 @@ msgstr "Criar conta de demonstração"
msgid "auth.create-demo-profile"
msgstr "Quer apenas experimentar?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Este é um serviço DEMONSTRATIVO, NÃO USE para trabalho real, os projetos "
"serão apagados periodicamente."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Esqueceu sua senha?"
@@ -48,31 +52,41 @@ msgstr "Esqueceu sua senha?"
msgid "auth.fullname"
msgstr "Nome completo"
+#: src/app/main/ui/auth/login.cljs:282
+msgid "auth.login-account-title"
+msgstr "Entrar na minha conta"
+
#: src/app/main/ui/auth/register.cljs:137, src/app/main/ui/static.cljs:158, src/app/main/ui/viewer/login.cljs:101
msgid "auth.login-here"
-msgstr "Entrar aqui"
+msgstr "Fazer Login."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Entrar"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:285
+msgid "auth.login-tagline"
+msgstr ""
+"Penpot é uma ferramenta de código aberto gratuíto para colaboração em "
+"Design e código"
+
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -96,7 +110,7 @@ msgstr "Link de recuperação de senha foi enviado para sua caixa de entrada."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Entrou para a equipe com sucesso"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Senha"
@@ -124,11 +138,11 @@ msgstr "Esqueceu sua senha?"
msgid "auth.recovery-submit"
msgstr "Mudar a sua senha"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Ainda não tem uma conta?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Criar uma conta"
@@ -141,15 +155,21 @@ msgstr "Criar uma conta"
msgid "auth.sidebar-tagline"
msgstr "A solução de código aberto para design e prototipação."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Termos de serviço"
+#, unused
+msgid "auth.terms-privacy-agreement"
+msgstr ""
+"Ao criar uma nova conta, você concorda com nossos termos de serviço e "
+"política de privacidade."
+
#: src/app/main/ui/auth/register.cljs:275
msgid "auth.verification-email-sent"
msgstr "Enviamos um e-mail de verificação para"
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Publicar"
@@ -221,7 +241,7 @@ msgstr "Compartilhar protótipos"
msgid "common.share-link.view-all"
msgstr "Selecionar todos"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Cancelar publicação"
@@ -269,6 +289,58 @@ msgstr "Começar tour"
msgid "dasboard.walkthrough-hero.title"
msgstr "Passo a passo da interface"
+#: src/app/main/ui/settings/access_tokens.cljs:104
+msgid "dashboard.access-tokens.copied-success"
+msgstr "Token copiado"
+
+#: src/app/main/ui/settings/access_tokens.cljs:190
+msgid "dashboard.access-tokens.create"
+msgstr "Gerar novo token"
+
+#: src/app/main/ui/settings/access_tokens.cljs:65
+msgid "dashboard.access-tokens.create.success"
+msgstr "Token de acesso criado com sucesso."
+
+#: src/app/main/ui/settings/access_tokens.cljs:288
+msgid "dashboard.access-tokens.empty.add-one"
+msgstr "Pressione o botão \"Gerar novo token\" para gerar um."
+
+#: src/app/main/ui/settings/access_tokens.cljs:287
+msgid "dashboard.access-tokens.empty.no-access-tokens"
+msgstr "Você não possui tokens no momento."
+
+#: src/app/main/ui/settings/access_tokens.cljs:136
+msgid "dashboard.access-tokens.expiration-180-days"
+msgstr "180 dias"
+
+#: src/app/main/ui/settings/access_tokens.cljs:133
+msgid "dashboard.access-tokens.expiration-30-days"
+msgstr "30 dias"
+
+#: src/app/main/ui/settings/access_tokens.cljs:134
+msgid "dashboard.access-tokens.expiration-60-days"
+msgstr "60 dias"
+
+#: src/app/main/ui/settings/access_tokens.cljs:135
+msgid "dashboard.access-tokens.expiration-90-days"
+msgstr "90 dias"
+
+#: src/app/main/ui/settings/access_tokens.cljs:132
+msgid "dashboard.access-tokens.expiration-never"
+msgstr "Nunca"
+
+#: src/app/main/ui/settings/access_tokens.cljs:270
+msgid "dashboard.access-tokens.expired-on"
+msgstr "Expirado em %s"
+
+#: src/app/main/ui/settings/access_tokens.cljs:271
+msgid "dashboard.access-tokens.expires-on"
+msgstr "Expira em %s"
+
+#: src/app/main/ui/settings/access_tokens.cljs:269
+msgid "dashboard.access-tokens.no-expiration"
+msgstr "Sem data de expiração"
+
#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612
msgid "dashboard.add-shared"
msgstr "Adicionar a biblioteca compartilhada"
@@ -277,7 +349,7 @@ msgstr "Adicionar a biblioteca compartilhada"
msgid "dashboard.change-email"
msgstr "Alterar e-mail"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(copiar)"
@@ -285,6 +357,10 @@ msgstr "(copiar)"
msgid "dashboard.create-new-team"
msgstr "Criar nova equipe"
+#: src/app/main/ui/workspace/main_menu.cljs:623
+msgid "dashboard.create-version-menu"
+msgstr "Fixar esta versão"
+
#: src/app/main/ui/components/context_menu_a11y.cljs:282, src/app/main/ui/dashboard/sidebar.cljs:659
msgid "dashboard.default-team-name"
msgstr "Seu Penpot"
@@ -401,25 +477,25 @@ msgstr ""
msgid "dashboard.export.title"
msgstr "Exportar arquivos"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Fonte deletada"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Retirar todas"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Fontes customizadas que você adicionar vão aparecer aqui."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "1 fonte adicionada"
msgstr[1] "%s fontes adicionadas"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -429,21 +505,20 @@ msgstr ""
"como uma **única família de fontes**. Você pode fazer upload de fontes com "
"os seguintes formatos: **TTF, OTF e WOFF** (apenas uma será necessária)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Envie somente fontes que você possui os direitos ou tem licença para usar "
"no Penpot. Descubra mais na seção de Direitos de conteúdo nos [Termos de "
-"Serviço do Penpot](%s). Caso queira saber mais, "
-"veja esta leitura sobre [licenciamento de "
-"fontes](https://www.typography.com/faq)."
+"Serviço do Penpot](%s). Caso queira saber mais, veja esta leitura sobre "
+"[licenciamento de fontes](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Enviar tudo"
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Importar arquivos"
@@ -455,11 +530,11 @@ msgstr "Ops! Não conseguimos importar este arquivo"
msgid "dashboard.import.import-error"
msgstr "Ocorreu um problema ao importar o arquivo, então ele não foi importado."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgstr "%s arquivos foram importados com sucesso."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Alguns arquivos continham objetos inválidos que foram removidos."
@@ -499,27 +574,27 @@ msgstr "Convidar pessoas"
msgid "dashboard.leave-team"
msgstr "Sair da equipe"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Bibliotecas e Modelos"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "Explore mais e aprenda como contribuir"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "Ocorreu um problema ao importar o modelo. O modelo não foi importado."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Bibliotecas de ativos"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "carregando seus arquivos…"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "carregando suas fontes …"
@@ -535,11 +610,11 @@ msgstr "Mover %s arquivos para"
msgid "dashboard.move-to-other-team"
msgstr "Mover para outra equipe"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Novo arquivo"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Novo arquivo"
@@ -547,7 +622,7 @@ msgstr "Novo arquivo"
msgid "dashboard.new-project"
msgstr "+ Novo projeto"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Novo projeto"
@@ -579,7 +654,7 @@ msgstr "%s membros"
msgid "dashboard.open-in-new-tab"
msgstr "Abrir arquivo em uma nova guia"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Opções"
@@ -624,10 +699,16 @@ msgstr "Selecionar idioma da Interface"
msgid "dashboard.select-ui-theme"
msgstr "Selecionar tema"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Mostrar todos os arquivos"
+#: src/app/main/ui/dashboard/file_menu.cljs:97
+msgid "dashboard.success-delete-file"
+msgid_plural "dashboard.success-delete-file"
+msgstr[0] "Seu arquivo foi excluído com sucesso"
+msgstr[1] "Seus arquivos foram excluídos com sucesso"
+
#: src/app/main/ui/dashboard/project_menu.cljs:61
msgid "dashboard.success-delete-project"
msgstr "Seu projeto foi excluído com sucesso"
@@ -636,7 +717,7 @@ msgstr "Seu projeto foi excluído com sucesso"
msgid "dashboard.success-duplicate-project"
msgstr "Seu projeto foi duplicado com sucesso"
-#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Seu arquivo foi movido com sucesso"
@@ -731,7 +812,7 @@ msgstr "E-mail"
msgid "dashboard.your-name"
msgstr "Seu nome"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Seu Penpot"
@@ -747,11 +828,11 @@ msgstr "Atenção"
msgid "ds.component-subtitle"
msgstr "Componentes para atualizar:"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Cancelar"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Ok"
@@ -759,7 +840,7 @@ msgstr "Ok"
msgid "ds.confirm-title"
msgstr "Tem certeza?"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Provedor de autenticação não configurado."
@@ -767,15 +848,15 @@ msgstr "Provedor de autenticação não configurado."
msgid "errors.auth.unable-to-login"
msgstr "Parece que você não está autenticado ou a sessão expirou."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "A fonte %s não pôde ser carregada"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "As fontes %s não puderam ser carregadas"
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Seu navegador não pode fazer esta operação"
@@ -787,7 +868,7 @@ msgstr "E-mail já utilizado"
msgid "errors.email-already-validated"
msgstr "E-mail já validado."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Você não pode usar seu e-mail como senha"
@@ -810,7 +891,7 @@ msgstr ""
msgid "errors.feature-not-supported"
msgstr "Recurso '%s' não é suportado."
-#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Algo errado aconteceu."
@@ -823,8 +904,7 @@ msgstr "Cor inválida"
msgid "errors.invalid-email"
msgstr "Por favor, insira um email válido"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "E-mail de confirmação deve ser o mesmo"
@@ -840,7 +920,7 @@ msgstr "Convite inválido"
msgid "errors.invite-invalid.info"
msgstr "Este convite pode ter sido cancelado ou expirou."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "Autenticação por LDAP está desativada."
@@ -876,7 +956,7 @@ msgstr "A senha de confirmação deve ser a mesma"
msgid "errors.password-too-short"
msgstr "A senha deve ter pelo menos 8 caracteres"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "O perfil está bloqueado"
@@ -940,12 +1020,11 @@ msgstr "Erro inesperado durante a validação"
msgid "errors.webhooks.unexpected-status"
msgstr "Status inesperado %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "E-mail ou senha está incorreto."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "A senha antiga está incorreta"
@@ -994,11 +1073,11 @@ msgstr "Precisa de ajuda com dúvidas mais técnicas? Veja o nosso X."
msgid "feedback.twitter-title"
msgstr "Conta de suporte no X"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Um erro ocorreu"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Desfoque"
@@ -1006,31 +1085,31 @@ msgstr "Desfoque"
msgid "inspect.attributes.blur.value"
msgstr "Valor"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Preenchimento"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Baixar imagem original"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Altura"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Largura"
@@ -1069,15 +1148,15 @@ msgstr "Superior"
msgid "inspect.attributes.layout.width"
msgstr "Largura"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Sombra"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Tamanho e posição"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Traçado"
@@ -1114,135 +1193,135 @@ msgstr "Sólido"
msgid "inspect.attributes.stroke.width"
msgstr "Largura"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Tipografia"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Família tipográfica"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Tamanho da fonte"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Estilo da fonte"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Espaçamento entre letras"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Altura da linha"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Decoração de texto"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Nenhum"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Riscado"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Sublinhado"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Transformação de texto"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Minúsculo"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Nenhuma"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Iniciais em maiúsculas"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Maiúsculo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr ""
"Se quiser saber mais sobre inspecionar o design, visite a central de ajuda "
"do Penpot"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Mais informações sobre inspecionar"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr ""
"Selecione uma forma, board ou grupo para inspecionar suas propriedades e "
"código"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Código"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Círculo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Componente"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Curva"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Board"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Grupo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Imagem"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Máscara"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s selecionados"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Caminho"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Retângulo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Texto"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Informação"
@@ -1258,7 +1337,7 @@ msgstr "Aceitar"
msgid "labels.active"
msgstr "Ativo"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Adicionar fonte personalizada"
@@ -1266,7 +1345,7 @@ msgstr "Adicionar fonte personalizada"
msgid "labels.admin"
msgstr "Administrador"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Todos"
@@ -1288,19 +1367,19 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Erro do servidor (Bad Gateway)"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Cancelar"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Fechar"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Comentários"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Comunidade"
@@ -1308,7 +1387,7 @@ msgstr "Comunidade"
msgid "labels.confirm-password"
msgstr "Confirmar senha"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Continuar"
@@ -1324,7 +1403,7 @@ msgstr "Você pode continuar com uma conta do Penpot"
msgid "labels.copy-invitation-link"
msgstr "Copiar link"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Criar"
@@ -1344,15 +1423,15 @@ msgstr "Fontes personalizadas"
msgid "labels.dashboard"
msgstr "Painel"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Excluir"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Excluir comentário"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Excluir tópico"
@@ -1364,11 +1443,11 @@ msgstr "Excluir convite"
msgid "labels.delete-multi-files"
msgstr "Excluir %s arquivos"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Rascunhos"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Editar"
@@ -1384,7 +1463,7 @@ msgstr "Editor"
msgid "labels.expired-invitation"
msgstr "Expirado"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Exportar"
@@ -1396,7 +1475,7 @@ msgstr "Feedback desativado"
msgid "labels.feedback-sent"
msgstr "Feedback enviado"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Família tipográfica"
@@ -1404,19 +1483,19 @@ msgstr "Família tipográfica"
msgid "labels.font-providers"
msgstr "Provedores de fonte"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Estilos"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Fontes"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Repositório do Github"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Enviar feedback"
@@ -1424,11 +1503,11 @@ msgstr "Enviar feedback"
msgid "labels.go-back"
msgstr "Voltar"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Central de Ajuda"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Ocultar comentários resolvidos"
@@ -1436,7 +1515,7 @@ msgstr "Ocultar comentários resolvidos"
msgid "labels.inactive"
msgstr "Inativo"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Fontes instaladas"
@@ -1458,7 +1537,7 @@ msgstr "Convites"
msgid "labels.language"
msgstr "Linguagem"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Bibliotecas & Modelos"
@@ -1466,7 +1545,7 @@ msgstr "Bibliotecas & Modelos"
msgid "labels.log-or-sign"
msgstr "Entre ou cadastre-se"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Sair"
@@ -1482,7 +1561,7 @@ msgstr "Membros"
msgid "labels.new-password"
msgstr "Nova senha"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "Nada de novo por aqui! Novas notificações de comentários irão aparecer aqui."
@@ -1504,7 +1583,7 @@ msgstr "Esta página não existe ou você não tem permissão para acessá-la."
msgid "labels.not-found.main-message"
msgstr "Ops!"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "1 arquivo"
@@ -1555,7 +1634,7 @@ msgstr "Perfil"
msgid "labels.projects"
msgstr "Projetos"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Notas de atualização"
@@ -1573,7 +1652,7 @@ msgstr "Remover"
msgid "labels.remove-member"
msgstr "Remover membro"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Renomear"
@@ -1593,11 +1672,11 @@ msgstr "Tentar novamente"
msgid "labels.role"
msgstr "Cargo"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Salvar"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Buscar fonte"
@@ -1629,15 +1708,15 @@ msgstr "Compartilhar protótipo"
msgid "labels.shared-libraries"
msgstr "Bibliotecas"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Mostrar todos os comentários"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Mostrar lista de comentários"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Mostrar apenas seus comentários"
@@ -1645,7 +1724,7 @@ msgstr "Mostrar apenas seus comentários"
msgid "labels.status"
msgstr "Status"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Tutorial"
@@ -1661,15 +1740,15 @@ msgstr "Atualizar"
msgid "labels.update-team"
msgstr "Atualizar equipe"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Carregar"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Enviar fontes personalizadas"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Enviando…"
@@ -1685,7 +1764,7 @@ msgstr "Visualizador"
msgid "labels.webhooks"
msgstr "Webhooks"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Escrever um novo comentário"
@@ -1693,7 +1772,7 @@ msgstr "Escrever um novo comentário"
msgid "labels.you"
msgstr "(você)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Sua conta"
@@ -1774,17 +1853,17 @@ msgstr "Ao excluir sua conta, você perderá todos os seus projetos e arquivos a
msgid "modals.delete-account.title"
msgstr "Tem certeza que deseja excluir sua conta?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Excluir conversa"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Tem certeza de que deseja excluir esta conversa? Todos os comentários neste "
"tópico serão excluídos."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Excluir conversa"
@@ -1812,31 +1891,31 @@ msgstr "Tem certeza de que deseja excluir %s arquivos?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Excluindo %s arquivos"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Tem certeza de que deseja excluir este estilo de fonte? Ele não será "
"carregado se for usado em um arquivo."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Excluindo estilo de fonte"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Tem certeza que deseja excluir essa fonte? Ela não será carregada se for "
"utilizada em um arquivo."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Excluindo fonte"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Tem certeza de que deseja excluir esta página?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Excluir página"
@@ -2048,21 +2127,21 @@ 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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Atualizar"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Cancelar"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Atualizar componente em uma biblioteca compartilhada"
@@ -2118,30 +2197,30 @@ msgstr "Tutoriais em vídeo"
msgid "onboarding-v2.before-start.title"
msgstr "Antes de começar"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Assine a newsletter do Penpot para se manter atualizado sobre o "
"desenvolvimento, progressos e novidades."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr ""
"Quero receber notícias sobre o Penpot (postagens do blog, tutoriais em "
"vídeo, lives...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Sua privacidade é importante para nós, saiba mais aqui "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Enviaremos apenas e-mails relevantes para você e você pode cancelar a "
"inscrição a qualquer momento através do link de cancelamento em qualquer "
"uma das newsletters."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr ""
"Quero receber atualizações do produto (novos recursos, lançamentos, "
@@ -2203,17 +2282,17 @@ msgstr "Convide com a função:"
msgid "onboarding.newsletter.accept"
msgstr "Sim, assinar"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"Sua solicitação de inscrição foi enviada, enviaremos um e-mail para "
"confirmá-la."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Politica de privacidade."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Deseja receber novidades sobre o Penpot?"
@@ -2263,7 +2342,7 @@ msgstr "Penpot"
msgid "profile.recovery.go-to-login"
msgstr "Ir para a página de login"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Misto"
@@ -2433,7 +2512,7 @@ msgstr "Criar novo"
msgid "shortcuts.cut"
msgstr "Recortar"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Reduzir zoom"
@@ -2525,7 +2604,7 @@ msgstr "Distribuir horizontalmente"
msgid "shortcuts.hide-ui"
msgstr "Mostrar/ocultar interface"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Mais zoom"
@@ -2809,15 +2888,15 @@ msgstr "Ajustar zoom a seleção"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Provedores de fonte - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Fontes - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Projetos - %s - Penpot"
@@ -2825,7 +2904,7 @@ msgstr "Projetos - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Pesquisar - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Bibliotecas Compartilhadas - %s - Penpot"
@@ -2869,7 +2948,7 @@ msgstr "Webhooks - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Modo protótipo - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -2974,15 +3053,15 @@ msgstr "Alinhar ao topo (%s)"
msgid "workspace.assets.assets"
msgstr "Ativos"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Todos os ativos"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Cores"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Componentes"
@@ -2996,11 +3075,11 @@ msgstr ""
"Seus itens serão nomeados automaticamente como \"nome do grupo / nome do "
"item\""
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Excluir"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Duplicar"
@@ -3008,11 +3087,11 @@ msgstr "Duplicar"
msgid "workspace.assets.edit"
msgstr "Editar"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Imagens"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Agrupar"
@@ -3020,19 +3099,15 @@ msgstr "Agrupar"
msgid "workspace.assets.group-name"
msgstr "Nome do grupo"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Bibliotecas"
-
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "biblioteca local"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Nenhum ativo encontrado"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Renomear"
@@ -3040,7 +3115,7 @@ msgstr "Renomear"
msgid "workspace.assets.rename-group"
msgstr "Renomear grupo"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Procurar nos ativos"
@@ -3051,7 +3126,7 @@ msgid_plural "workspace.assets.selected-count"
msgstr[0] "%s item selecionado"
msgstr[1] "%s itens selecionados"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Tipografias"
@@ -3060,27 +3135,27 @@ msgstr "Tipografias"
msgid "workspace.assets.typography.font-id"
msgstr "Fonte"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Tamanho"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Variante"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Ir para biblioteca de estilo para editar"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Espaçamento de letra"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Altura da linha"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -3088,7 +3163,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Estilos de texto"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Transformações de texto"
@@ -3100,11 +3175,11 @@ msgstr "Desagrupar"
msgid "workspace.focus.focus-mode"
msgstr "Modo de foco"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Foco desligado"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Foco ligado"
@@ -3218,29 +3293,28 @@ msgstr "Mostrar réguas"
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:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Redefinir"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Erro ao salvar"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Salvo"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Salvando"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Há alterações não salvas"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "Ver protótipo (%s)"
@@ -3252,7 +3326,7 @@ msgstr "Ajustar até preencher"
msgid "workspace.header.zoom-fit"
msgstr "Ajustar até encaixar"
-#: src/app/main/ui/workspace/right_header.cljs:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Ajustar a janela"
@@ -3260,7 +3334,7 @@ msgstr "Ajustar a janela"
msgid "workspace.header.zoom-full-screen"
msgstr "Tela cheia"
-#: src/app/main/ui/workspace/right_header.cljs:136
+#: src/app/main/ui/workspace/right_header.cljs:104
msgid "workspace.header.zoom-selected"
msgstr "Zoom na seleção"
@@ -3269,7 +3343,7 @@ msgstr "Zoom na seleção"
msgid "workspace.libraries.add"
msgstr "Adicionar"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s cores"
@@ -3291,31 +3365,31 @@ msgstr "Cores recentes"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "RGB Complementar"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Salvar estilo de cor"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Biblioteca de arquivos"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "BIBLIOTECAS NESTE ARQUIVO"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "BIBLIOTECAS"
@@ -3324,43 +3398,39 @@ msgstr "BIBLIOTECAS"
msgid "workspace.libraries.library"
msgstr "BIBLIOTECA"
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "Não há bibliotecas compartilhadas para atualizar"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Não foram encontrados resultados para “%s“"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Não há bibliotecas compartilhadas disponíveis"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Procurar bibliotecas compartilhadas"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "BIBLIOTECAS COMPARTILHADAS"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Tipografias múltiplas"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Desassociar todas as tipografias"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Atualizar"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "ATUALIZAÇÔES"
@@ -3380,15 +3450,15 @@ msgstr "Desfoque do grupo"
msgid "workspace.options.blur-options.title.multiple"
msgstr "Desfoque da seleção"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Fundo da tela"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Cortar conteúdo"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Componente"
@@ -3436,7 +3506,7 @@ msgstr "Cima e Baixo"
msgid "workspace.options.design"
msgstr "Design"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Exportar"
@@ -3445,7 +3515,7 @@ msgstr "Exportar"
msgid "workspace.options.export-multiple"
msgstr "Exportar seleção"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Sufixo"
@@ -3453,7 +3523,7 @@ msgstr "Sufixo"
msgid "workspace.options.exporting-complete"
msgstr "Exportação completa"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Exportando…"
@@ -3583,7 +3653,7 @@ msgstr "Preenchimento do grupo"
msgid "workspace.options.group-stroke"
msgstr "Traçado do grupo"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Altura"
@@ -3893,19 +3963,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:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Altura Máx."
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Largura Máx."
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Altura Min."
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Altura Min."
@@ -4009,11 +4079,11 @@ msgstr "espaçar dentro"
msgid "workspace.options.layout.top"
msgstr "Topo"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Mais cores"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Mais cores da biblioteca"
@@ -4050,7 +4120,7 @@ msgstr "Superior (a esquerda)"
msgid "workspace.options.radius-top-right"
msgstr "Superior (a direita)"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Recente"
@@ -4058,11 +4128,11 @@ msgstr "Recente"
msgid "workspace.options.retry"
msgstr "Repetir"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Rotação"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Procurar fonte"
@@ -4072,7 +4142,7 @@ 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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Cores selecionadas"
@@ -4084,43 +4154,43 @@ msgstr "Preenchimento da seleção"
msgid "workspace.options.selection-stroke"
msgstr "Selecionar traçado"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Desfoque"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Cor da sombra"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Sombra projetada"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Sombra interna"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Alcance"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Sombra"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Sombra do grupo"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Sombras da seleção"
@@ -4128,7 +4198,7 @@ msgstr "Sombras da seleção"
msgid "workspace.options.show-fill-on-export"
msgstr "Mostrar nas exportações"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Mostrar no modo protótipo"
@@ -4136,7 +4206,7 @@ msgstr "Mostrar no modo protótipo"
msgid "workspace.options.size"
msgstr "Tamanho"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Padrões de tamanho"
@@ -4185,7 +4255,7 @@ msgstr "Seta triangular"
msgid "workspace.options.stroke-color"
msgstr "Cor do traçado"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Largura do traçado"
@@ -4249,11 +4319,11 @@ msgstr "Largura automática"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Fixo"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Espaçamento entre letras"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Altura de linha"
@@ -4317,15 +4387,15 @@ msgstr "Maiúsculo"
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:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Largura"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "eixo X"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "eixo Y"
@@ -4369,87 +4439,87 @@ msgstr "Separar pontos (%s)"
msgid "workspace.path.actions.snap-nodes"
msgstr "Aderir aos pontos (%s)"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Adicionar Flex Layout"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "Enviar para o fundo"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Enviar para trás"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Copiar"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Agrupar em uma tela"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Criar componente"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Cortar"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Remover"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Remover início de fluxo"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Quebrar instância"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Quebrar instâncias"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Diferença"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Duplicar"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Editar"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Excluir"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Achatar"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Inverter horizontalmente"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Inverter verticalmente"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Início do fluxo"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Trazer para a frente"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Trazer para o topo"
@@ -4458,91 +4528,91 @@ msgstr "Trazer para o topo"
msgid "workspace.shape.menu.go-main"
msgstr "Ir para o arquivo do componente principal"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Agrupar"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Esconder"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Mostrar/ocultar Interface"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Interseção"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Bloquear"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Máscara"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Colar"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Caminho"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Excluir Flex Layout"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Redefinir substituições"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Restaurar componente principal"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Selecionar camada"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Mostrar"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Mostrar no painel de ativos"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Mostrar componente principal"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Remover miniatura"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Definir como miniatura"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Transformar em caminho"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Desagrupar"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Unir"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Desbloquear"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Remover máscara"
@@ -4551,7 +4621,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:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Atualizar o componente principal"
@@ -4563,11 +4633,11 @@ msgstr "Recolher a barra lateral"
msgid "workspace.sidebar.expand"
msgstr "Expandir a barra lateral"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Histórico"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Camadas"
@@ -4603,7 +4673,7 @@ msgstr "Formas"
msgid "workspace.sidebar.layers.texts"
msgstr "Textos"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Atributos SVG importados"
@@ -4611,11 +4681,79 @@ msgstr "Atributos SVG importados"
msgid "workspace.sidebar.sitemap"
msgstr "Páginas"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249
+msgid "workspace.sidebar.sitemap.add-page"
+msgstr "Adicionar página"
+
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Mapa do site"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:391
+msgid "workspace.token.back-to-themes"
+msgstr "Voltar a listagem de temas"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:54
+msgid "workspace.token.create-new-theme"
+msgstr "Crie seu primeiro tema agora."
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:134, src/app/main/ui/workspace/tokens/sidebar.cljs:190
+msgid "workspace.token.create-one"
+msgstr "Criar um."
+
+#: src/app/main/ui/workspace/tokens/form.cljs:492
+msgid "workspace.token.create-token"
+msgstr "Criar novo token %s"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:278
+msgid "workspace.token.delete"
+msgstr "Remover token"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159
+msgid "workspace.token.delete-theme-title"
+msgstr "Remover tema"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:275
+msgid "workspace.token.duplicate"
+msgstr "Duplicar token"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:262
+msgid "workspace.token.edit"
+msgstr "Editar token"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:136
+msgid "workspace.token.theme-name"
+msgstr "Tema %s"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:545
+msgid "workspace.token.token-description"
+msgstr "Descrição"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:501
+msgid "workspace.token.token-name"
+msgstr "Nome"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:526
+msgid "workspace.token.token-value"
+msgstr "Valor"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:322
+msgid "workspace.token.tokens-section-title"
+msgstr ""
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:405
+msgid "workspace.token.tools"
+msgstr "Ferramentas"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:131
+msgid "workspace.token.value-not-valid"
+msgstr "O valor não é válido"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:520
+msgid "workspace.token.warning-name-change"
+msgstr "Renomear este token quebrará quaisquer referência para o nome antigo."
+
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Ativos"
@@ -4623,35 +4761,35 @@ msgstr "Ativos"
msgid "workspace.toolbar.color-palette"
msgstr "Paleta de cores (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Comentários (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Ferramenta Curvas (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Ferramenta Elipse (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Ferramenta Tela (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Importar Imagem (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Ferramenta Seleção/Mover (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Ferramenta Caneta (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Ferramenta Retângulo (%s)"
@@ -4660,7 +4798,7 @@ msgstr "Ferramenta Retângulo (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Atalhos (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Ferramenta Texto (%s)"
@@ -4813,18 +4951,85 @@ 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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Dispensar"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1222
+msgid "workspace.updates.more-info"
+msgstr "Mais informações"
+
+#: src/app/main/data/workspace/libraries.cljs:1220
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:1226
msgid "workspace.updates.update"
msgstr "Atualizar"
+#: src/app/main/ui/workspace/sidebar/versions.cljs:203
+msgid "workspace.versions.button.pin"
+msgstr "Fixar versão"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:198
+msgid "workspace.versions.button.restore"
+msgstr "Restaurar versão"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:327, src/app/main/ui/workspace/sidebar/versions.cljs:329
+msgid "workspace.versions.button.save"
+msgstr "Salvar versão"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:336
+msgid "workspace.versions.empty"
+msgstr "Não existem versões ainda"
+
+#: src/app/main/ui/ds/product/autosaved_milestone.cljs:53
+msgid "workspace.versions.expand-snapshot"
+msgstr "Expandir snapshot"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:309
+msgid "workspace.versions.filter.all"
+msgstr "Todas as versões"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:308
+msgid "workspace.versions.filter.label"
+msgstr "Filtro de versões"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:310
+msgid "workspace.versions.filter.mine"
+msgstr "Minhas versões"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:316
+msgid "workspace.versions.filter.user"
+msgstr "%s's versões"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:322
+msgid "workspace.versions.loading"
+msgstr "Carregando..."
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:259
+msgid "workspace.versions.restore-warning"
+msgstr "Gostaria de restaurar esta versão?"
+
+#, unused
+msgid "workspace.versions.snapshot-menu"
+msgstr "Abrir menu snapshot"
+
+#: src/app/main/ui/ds/product/autosaved_milestone.cljs:67, src/app/main/ui/ds/product/user_milestone.cljs:74
+msgid "workspace.versions.version-menu"
+msgstr "Abrir menu de versão"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:365
+#, markdown
+msgid "workspace.versions.warning.subtext"
+msgstr ""
+"Se você gostaria de aumentar esse limite, nos envie um email para "
+"[support@penpot.app](%s)"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:361
+msgid "workspace.versions.warning.text"
+msgstr "Versões com salvamento automático serão mantidos por %s dias."
+
#, unused
msgid "workspace.viewport.click-to-close-path"
msgstr "Clique para fechar o caminho"
diff --git a/frontend/translations/pt_PT.po b/frontend/translations/pt_PT.po
index e23495cd04..5a2993dddf 100644
--- a/frontend/translations/pt_PT.po
+++ b/frontend/translations/pt_PT.po
@@ -1,6 +1,6 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2024-08-23 09:16+0000\n"
+"PO-Revision-Date: 2025-03-20 13:42+0000\n"
"Last-Translator: Anonymous \n"
"Language-Team: Portuguese (Portugal) "
" \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.7.1-dev\n"
+"X-Generator: Weblate 5.11-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
@@ -38,13 +38,13 @@ msgstr "Cria uma conta de demonstração"
msgid "auth.create-demo-profile"
msgstr "Só queres experimentar?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Este é um serviço de DEMONSTRAÇÃO, NÃO UTILIZES para trabalhos reais. Os "
"projetos serão eliminados periodicamente."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Esqueceste a tua palavra-passe?"
@@ -52,7 +52,7 @@ msgstr "Esqueceste a tua palavra-passe?"
msgid "auth.fullname"
msgstr "Nome completo"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "Entrar na minha conta"
@@ -60,33 +60,33 @@ msgstr "Entrar na minha conta"
msgid "auth.login-here"
msgstr "Inicia a sessão aqui."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Iniciar sessão"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr ""
"O Penpot é a ferramenta de desenho gratuita e de código aberto para "
"colaboração entre Design e Código"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
-msgstr "Github"
+msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID Connect"
@@ -110,7 +110,7 @@ msgstr "Link de recuperação da palavra-passe enviado para o teu e-mail."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Entraste na equipa com sucesso"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Palavra-passe"
@@ -138,7 +138,7 @@ msgstr "Não te lembras da tua palavra-passe?"
msgid "auth.recovery-submit"
msgstr "Altera a palavra-passe"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Não tens conta?"
@@ -150,7 +150,7 @@ msgstr "Diz-nos como te devemos tratar no painel principal e em emails."
msgid "auth.register-account-title"
msgstr "O teu nome"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Criar conta"
@@ -175,7 +175,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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Termos de serviço"
@@ -189,7 +189,7 @@ msgstr ""
msgid "auth.verification-email-sent"
msgstr "Enviámos um email de verificação para"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "Email profissional"
@@ -198,7 +198,7 @@ msgstr "Email profissional"
msgid "branding-illustrations-marketing-pieces"
msgstr "...branding, ilustrações, artigos de marketing, etc."
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Publicar"
@@ -270,7 +270,7 @@ msgstr "Partilha protótipos"
msgid "common.share-link.view-all"
msgstr "Seleciona tudo"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Cancelar publicação"
@@ -322,7 +322,7 @@ msgstr "Passo a passo na interface"
msgid "dashboard.access-tokens.copied-success"
msgstr "Token copiado"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Gerar novo token"
@@ -330,11 +330,11 @@ msgstr "Gerar novo token"
msgid "dashboard.access-tokens.create.success"
msgstr "Token de acesso criado com sucesso."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Clica no botão \"Gerar novo token\" para gerar um."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "Ainda não tens nenhum token."
@@ -358,23 +358,23 @@ msgstr "90 dias"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Nunca"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Expirou a %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Expira a %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Sem data de expiração"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Tokens de acesso pessoais"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Os tokens de acesso pessoais funcionam como uma alternativa ao nosso "
@@ -389,6 +389,10 @@ msgstr "O token irá expirar a %s"
msgid "dashboard.access-tokens.token-will-not-expire"
msgstr "O token não tem data de expiração"
+#: src/app/main/ui/dashboard/placeholder.cljs:35
+msgid "dashboard.add-file"
+msgstr "Adicionar ficheiro"
+
#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612
msgid "dashboard.add-shared"
msgstr "Adicionar como biblioteca partilhada"
@@ -397,7 +401,7 @@ msgstr "Adicionar como biblioteca partilhada"
msgid "dashboard.change-email"
msgstr "Alterar e-mail"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(copiar)"
@@ -405,6 +409,10 @@ msgstr "(copiar)"
msgid "dashboard.create-new-team"
msgstr "+ Criar nova equipa"
+#: src/app/main/ui/workspace/main_menu.cljs:623
+msgid "dashboard.create-version-menu"
+msgstr "Afixar esta versão"
+
#: src/app/main/ui/components/context_menu_a11y.cljs:282, src/app/main/ui/dashboard/sidebar.cljs:659
msgid "dashboard.default-team-name"
msgstr "O teu Penpot"
@@ -429,6 +437,30 @@ msgstr "Duplicar"
msgid "dashboard.duplicate-multi"
msgstr "Duplicar %s ficheiros"
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
+msgid "dashboard.empty-placeholder-drafts-subtitle"
+msgstr "Assim que um membro do projeto crie um rascunho, será apresentado aqui."
+
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
+msgid "dashboard.empty-placeholder-drafts-title"
+msgstr "Ainda não existem rascunhos."
+
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
+msgid "dashboard.empty-placeholder-files-subtitle"
+msgstr "Assim que um membro do projeto criar um ficheiro, será apresentado aqui."
+
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
+msgid "dashboard.empty-placeholder-files-title"
+msgstr "Ainda não existem ficheiros."
+
+#: src/app/main/ui/dashboard/placeholder.cljs:73
+msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role"
+msgstr "As bibliotecas que forem adicionadas ao projeto aparecerão aqui."
+
+#: src/app/main/ui/dashboard/placeholder.cljs:70
+msgid "dashboard.empty-placeholder-libraries-title"
+msgstr "Ainda não existem bibliotecas."
+
#: src/app/main/ui/dashboard/file_menu.cljs:249, src/app/main/ui/dashboard/file_menu.cljs:254
msgid "dashboard.export-binary-multi"
msgstr "Descarrega %s ficheiros Penpot (.penpot)"
@@ -519,25 +551,25 @@ msgstr "Incluir recursos da biblioteca partilhada em bibliotecas de ficheiros"
msgid "dashboard.export.title"
msgstr "Exportar ficheiros"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Tipo de letra eliminado"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Ignorar todas"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Ainda não tens tipos de letra personalizados instalados."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "1 tipo de letra adicionado"
msgstr[1] "%s tipos de letra adicionados"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -547,20 +579,20 @@ msgstr ""
"carregar tipos de letra com os seguintes formatos: **TTF, OTF e WOFF** "
"(apenas um será necessário)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Deves carregar tipos de letra que possuas or tenhas licença para utilizar "
"no Penpot. Sabe mais na secção de Direitos de Conteúdos dos [Termos de "
-"serviço do Penpot](%s). Podes também ler mais "
-"sobre [licenciamento de fontes](https://www.typography.com/faq)."
+"serviço do Penpot](%s). Podes também ler mais sobre [licenciamento de "
+"fontes](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Carregar tudo"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -570,7 +602,7 @@ msgstr ""
"além disso, recomendamos o uso do [Transfonter](https://transfonter.org/) "
"para gerar fontes web e corrigir erros. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Importar ficheiros Penpot"
@@ -588,13 +620,13 @@ msgstr ""
msgid "dashboard.import.import-error"
msgstr "Ocorreu um problema na importação do ficheiro. O ficheiro não foi importado."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgid_plural "dashboard.import.import-message"
msgstr[0] "1 ficheiro foi importado com sucesso."
msgstr[1] "%s ficheiros foram importados com sucesso."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Alguns ficheiros continham objetos inválidos que foram removidos."
@@ -634,29 +666,29 @@ msgstr "Convidar para a equipa"
msgid "dashboard.leave-team"
msgstr "Sair da equipa"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Bibliotecas e Templates"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "Explora mais e sabe como contribuir"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr ""
"Ocorreu um problema com a importação do template. O template não foi "
"importado."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Bibliotecas"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "a carregar os teus ficheiros …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "a carregar as tuas fontes …"
@@ -672,11 +704,11 @@ msgstr "Mover %s ficheiros para"
msgid "dashboard.move-to-other-team"
msgstr "Mover para outra equipa"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Novo Ficheiro"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Novo Ficheiro"
@@ -684,7 +716,7 @@ msgstr "Novo Ficheiro"
msgid "dashboard.new-project"
msgstr "+ Novo projeto"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Novo Projeto"
@@ -696,6 +728,10 @@ msgstr "Não há resultados para \"%s\""
msgid "dashboard.no-projects-placeholder"
msgstr "Projetos afixados aparecerão aqui"
+#: src/app/main/ui/dashboard/comments.cljs:90
+msgid "dashboard.notifications"
+msgstr "Notificações"
+
#: src/app/main/ui/auth/verify_token.cljs:34
msgid "dashboard.notifications.email-changed-successfully"
msgstr "O teu endereço de e-mail foi atualizado com sucesso"
@@ -704,10 +740,18 @@ 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:260
+msgid "dashboard.notifications.notifications-saved"
+msgstr "Definições de notificação atualizadas"
+
#: src/app/main/ui/settings/password.cljs:36
msgid "dashboard.notifications.password-saved"
msgstr "Palavra-passe guardada com sucesso!"
+#: src/app/main/ui/dashboard/comments.cljs:44
+msgid "dashboard.notifications.view"
+msgstr "Ver notificações"
+
#: src/app/main/ui/dashboard/team.cljs:1133
msgid "dashboard.num-of-members"
msgstr "%s membros"
@@ -716,7 +760,7 @@ msgstr "%s membros"
msgid "dashboard.open-in-new-tab"
msgstr "Abrir ficheiro num novo separador"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Opções"
@@ -741,6 +785,10 @@ msgstr "Queres remover a tua conta?"
msgid "dashboard.remove-shared"
msgstr "Remover como Biblioteca Partilhada"
+#: src/app/main/data/common.cljs:242
+msgid "dashboard.removed-from-team"
+msgstr "Já não pertences à equipa “%s“."
+
#: src/app/main/ui/settings/profile.cljs:78
msgid "dashboard.save-settings"
msgstr "Guardar definições"
@@ -761,10 +809,54 @@ msgstr "Selecionar idioma da Interface"
msgid "dashboard.select-ui-theme"
msgstr "Selecionar tema"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/settings/notifications.cljs:57
+msgid "dashboard.settings.notifications.dashboard-comments.all"
+msgstr "Todos os comentários, menções e respostas"
+
+#: src/app/main/ui/settings/notifications.cljs:58
+msgid "dashboard.settings.notifications.dashboard-comments.partial"
+msgstr "Apenas menções e respostas"
+
+#: src/app/main/ui/settings/notifications.cljs:54
+msgid "dashboard.settings.notifications.dashboard-comments.title"
+msgstr "Comentários de ficheiros"
+
+#: src/app/main/ui/settings/notifications.cljs:67
+msgid "dashboard.settings.notifications.email-comments.all"
+msgstr "Todos os comentários, menções e respostas"
+
+#: src/app/main/ui/settings/notifications.cljs:68
+msgid "dashboard.settings.notifications.email-comments.partial"
+msgstr "Apenas menções e respostas"
+
+#: src/app/main/ui/settings/notifications.cljs:64
+msgid "dashboard.settings.notifications.email-comments.title"
+msgstr "Comentários de ficheiros"
+
+#: src/app/main/ui/settings/notifications.cljs:73
+msgid "dashboard.settings.notifications.email-invites.title"
+msgstr "Convites e pedidos"
+
+#: src/app/main/ui/settings/notifications.cljs:63
+msgid "dashboard.settings.notifications.email.title"
+msgstr "Notificações por Email"
+
+#: src/app/main/ui/settings/notifications.cljs:84
+msgid "dashboard.settings.notifications.submit"
+msgstr "Atualizar definições"
+
+#: src/app/main/ui/settings/notifications.cljs:52
+msgid "dashboard.settings.notifications.title"
+msgstr "Notificações"
+
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Mostrar todos os ficheiros"
+#: src/app/main/ui/workspace/main_menu.cljs:630
+msgid "dashboard.show-version-history"
+msgstr "Histórico de versões"
+
#: src/app/main/ui/dashboard/file_menu.cljs:97
msgid "dashboard.success-delete-file"
msgid_plural "dashboard.success-delete-file"
@@ -785,7 +877,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "O teu ficheiro foi movido com sucesso"
@@ -829,6 +921,14 @@ msgstr "Cancelar publicação da Biblioteca"
msgid "dashboard.update-settings"
msgstr "Atualizar definições"
+#: src/app/main/ui/dashboard/sidebar.cljs:970
+msgid "dashboard.upgrade-plan.no-limits"
+msgstr "Criatividade sem limites"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:969
+msgid "dashboard.upgrade-plan.penpot-free"
+msgstr "Penpot Gratuito"
+
#: src/app/main/ui/dashboard/team.cljs:909
msgid "dashboard.webhooks.active"
msgstr "Ativo"
@@ -837,6 +937,10 @@ msgstr "Ativo"
msgid "dashboard.webhooks.active.explain"
msgstr "Quando este webhook for ativado serão enviados detalhes do evento"
+#: src/app/main/ui/dashboard/team.cljs:954
+msgid "dashboard.webhooks.cant-edit"
+msgstr "Só podes apagar ou modificar webhooks que criaste."
+
#: src/app/main/ui/dashboard/team.cljs:900
msgid "dashboard.webhooks.content-type"
msgstr "Tipo de conteúdo"
@@ -880,7 +984,7 @@ msgstr "E-mail"
msgid "dashboard.your-name"
msgstr "O teu nome"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "O teu Penpot"
@@ -896,11 +1000,15 @@ msgstr "Atenção"
msgid "ds.component-subtitle"
msgstr "Componentes para atualizar:"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/workspace/plugins.cljs:336, src/app/main/ui/workspace/plugins.cljs:390
+msgid "ds.confirm-allow"
+msgstr "Permitir"
+
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Cancelar"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Ok"
@@ -912,7 +1020,7 @@ msgstr "Tens a certeza?"
msgid "errors.auth-provider-not-allowed"
msgstr "O provedor de autenticação não é permitido neste perfil"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Provedor de autenticação não configurado."
@@ -920,11 +1028,11 @@ msgstr "Provedor de autenticação não configurado."
msgid "errors.auth.unable-to-login"
msgstr "Parece que não estás autenticado ou a sessão expirou."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "A fonte %s não pôde ser carregada"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "As fontes %s não puderam ser carregadas"
@@ -932,7 +1040,7 @@ msgstr "As fontes %s não puderam ser carregadas"
msgid "errors.cannot-upload"
msgstr "Não foi possível carregar o ficheiro."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "O teu browser não pode fazer esta operação"
@@ -944,7 +1052,7 @@ msgstr "E-mail já utilizado"
msgid "errors.email-already-validated"
msgstr "E-mail já validado."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Não podes utilizar o teu e-mail como palavra-passe"
@@ -977,7 +1085,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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Ocorreu algo inesperado."
@@ -990,8 +1098,7 @@ msgstr "Cor inválida"
msgid "errors.invalid-email"
msgstr "Por favor introduz um email válido"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "O e-mail de confirmação deve combinar"
@@ -1007,7 +1114,7 @@ msgstr "Convite inválido"
msgid "errors.invite-invalid.info"
msgstr "Este convite pode ter sido cancelado ou expirado."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "Autenticação LDAP está desativada."
@@ -1033,6 +1140,10 @@ msgstr ""
"O perfil que estás a convidar tem e-mails silenciados (relatórios de spam "
"ou devoluções altas)."
+#: src/app/main/errors.cljs:228
+msgid "errors.migration-in-progress"
+msgstr "Migração em progresso"
+
#: src/app/main/ui/settings/password.cljs
#, unused
msgid "errors.password-invalid-confirmation"
@@ -1047,7 +1158,7 @@ msgstr "A palavra-passe deverá conter no mínimo 8 caracteres"
msgid "errors.paste-data-validation"
msgstr "Dados inválidos na área de transferência"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "O perfil está bloqueado"
@@ -1123,12 +1234,11 @@ msgstr "Erro inesperado ao validar"
msgid "errors.webhooks.unexpected-status"
msgstr "Estado inesperado %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "Utilizador ou palavra-passe parecem estar errados."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Palavra-passe antiga está incorreta"
@@ -1177,11 +1287,11 @@ msgstr "Aqui para ajudar com as tuas dúvidas técnicas."
msgid "feedback.twitter-title"
msgstr "Conta de suporte no X"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Ocorreu um erro"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Desfoque"
@@ -1189,31 +1299,31 @@ msgstr "Desfoque"
msgid "inspect.attributes.blur.value"
msgstr "Valor"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Preencher"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Descarregar imagem original"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Altura"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Largura"
@@ -1252,15 +1362,15 @@ msgstr "Topo"
msgid "inspect.attributes.layout.width"
msgstr "Largura"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Sombra"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Tamanho e posição"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Traço"
@@ -1297,141 +1407,141 @@ msgstr "Sólido"
msgid "inspect.attributes.stroke.width"
msgstr "Largura"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Tipografia"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Família da Fonte"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Tamanho da Fonte"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Estilo da Fonte"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Espessura da fonte"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Espaço entre caracteres"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Altura da Linha"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Decoração de Texto"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Nenhum"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Rasurado"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Sublinhado"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Transformação de Texto"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Minúsculas"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Nenhum"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Capitalização de Título"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "Sem atribuição"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Maiúsculas"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr "Se quiseres saber mais sobre a inspeção, visita o centro de ajuda do Penpot"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Mais informações sobre a inspeção"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr ""
"Seleciona uma forma, prancheta, ou grupo para inspecionar os seus atributos "
"e código"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Código"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Círculo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Componente"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Curva"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Prancheta"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Grupo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Imagem"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Máscara"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s Selecionados"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Caminho"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Rectângulo"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Texto"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Informação"
@@ -1451,10 +1561,18 @@ msgstr "Tokens de acesso"
msgid "labels.active"
msgstr "Ativo"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/workspace/libraries.cljs:176
+msgid "labels.add"
+msgstr "Adicionar"
+
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Adicionar fonte personalizada"
+#: src/app/main/ui/workspace/libraries.cljs:176
+msgid "labels.adding"
+msgstr "A adicionar..."
+
#: src/app/main/ui/dashboard/team.cljs:128, src/app/main/ui/dashboard/team.cljs:313, src/app/main/ui/dashboard/team.cljs:554, src/app/main/ui/dashboard/team.cljs:584, src/app/main/ui/onboarding/team_choice.cljs:66
msgid "labels.admin"
msgstr "Administração"
@@ -1463,7 +1581,7 @@ msgstr "Administração"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Todos"
@@ -1485,7 +1603,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Error de Servidor (Bad Gateway)"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Cancelar"
@@ -1493,15 +1611,27 @@ msgstr "Cancelar"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Fechar"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/workspace/tokens/sets.cljs:219
+msgid "labels.collapse"
+msgstr "Colapsar"
+
+#: src/app/main/ui/comments.cljs:881
+msgid "labels.comment"
+msgstr "Comentário"
+
+#: src/app/main/ui/comments.cljs:885
+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
msgid "labels.comments"
msgstr "Comentários"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Comunidade"
@@ -1509,7 +1639,7 @@ msgstr "Comunidade"
msgid "labels.confirm-password"
msgstr "Confirmar palavra-passe"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Continuar"
@@ -1525,7 +1655,11 @@ msgstr "Podes continuar com uma conta Penpot"
msgid "labels.copy-invitation-link"
msgstr "Copiar link"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/static.cljs:62
+msgid "labels.copyright"
+msgstr "Kaleidos @2024"
+
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Criar"
@@ -1545,15 +1679,15 @@ msgstr "Fonte personalizada"
msgid "labels.dashboard"
msgstr "Painel"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Eliminar"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Eliminar comentário"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Eliminar tópico"
@@ -1573,15 +1707,15 @@ msgstr "Desenvolvimento"
msgid "labels.director"
msgstr "Diretor"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "Descartar"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Rascunhos"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Editar"
@@ -1601,7 +1735,7 @@ msgstr "Evento"
msgid "labels.expired-invitation"
msgstr "Expirado"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Exportar"
@@ -1617,7 +1751,7 @@ msgstr "Feedback enviado"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Família da Fonte"
@@ -1625,11 +1759,11 @@ msgstr "Família da Fonte"
msgid "labels.font-providers"
msgstr "Provedores de fontes"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Variantes"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Fontes"
@@ -1641,11 +1775,11 @@ msgstr "CEO ou Fundador"
msgid "labels.freelancer"
msgstr "Sou trabalhador(a) independente (freelancer)"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Repositório Github"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Dá feedback"
@@ -1657,19 +1791,23 @@ msgstr "Voltar atrás"
msgid "labels.graphic-design"
msgstr "Design gráfico"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Centro de Ajuda"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Ocultar comentários resolvidos"
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:413
+msgid "labels.import"
+msgstr "Importar"
+
#: src/app/main/ui/dashboard/team.cljs:1018
msgid "labels.inactive"
msgstr "Inativo"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Fontes instaladas"
@@ -1695,15 +1833,23 @@ msgstr "Convites"
msgid "labels.language"
msgstr "Idioma"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Bibliotecas e Templates"
+#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:115, src/app/main/ui/dashboard/grid.cljs:134, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:98, src/app/main/ui/ds/product/loader.cljs:85, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:118, src/app/main/ui.cljs:66, src/app/main/ui.cljs:104, src/app/main/ui.cljs:123
+msgid "labels.loading"
+msgstr "A carregar…"
+
#: src/app/main/ui/viewer/header.cljs:210
msgid "labels.log-or-sign"
msgstr "Iniciar sessão ou registar"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/static.cljs:56, src/app/main/ui/static.cljs:134
+msgid "labels.login"
+msgstr "Iniciar sessão"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Terminar sessão"
@@ -1723,11 +1869,11 @@ msgstr "Membros"
msgid "labels.new-password"
msgstr "Palavra-passe nova"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Seguinte"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "Não tens notificações de comentários pendentes."
@@ -1751,7 +1897,11 @@ msgstr "Esta página não existe ou não tens permissões para a aceder."
msgid "labels.not-found.main-message"
msgstr "Ups!"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/settings/sidebar.cljs:99
+msgid "labels.notifications"
+msgstr "Notificações"
+
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "1 ficheiro"
@@ -1769,6 +1919,10 @@ msgid_plural "labels.num-of-projects"
msgstr[0] "1 projeto"
msgstr[1] "%s projetos"
+#, unused
+msgid "labels.ok"
+msgstr "Ok"
+
#: src/app/main/ui/settings/password.cljs:77
msgid "labels.old-password"
msgstr "Palavra-passe antiga"
@@ -1778,6 +1932,10 @@ msgstr "Palavra-passe antiga"
msgid "labels.only-yours"
msgstr "Apenas teu"
+#: src/app/main/ui/comments.cljs:891, src/app/main/ui/comments.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:293, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:322
+msgid "labels.options"
+msgstr "Opções"
+
#, unused
msgid "labels.or"
msgstr "ou"
@@ -1822,7 +1980,7 @@ msgstr "Perfil"
msgid "labels.projects"
msgstr "Projetos"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Notas de versões"
@@ -1840,7 +1998,7 @@ msgstr "Remover"
msgid "labels.remove-member"
msgstr "Remover membro"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Renomear"
@@ -1848,10 +2006,34 @@ msgstr "Renomear"
msgid "labels.rename-team"
msgstr "Renomear equipa"
+#: src/app/main/ui/comments.cljs:641
+msgid "labels.replies"
+msgstr "respostas"
+
+#: src/app/main/ui/comments.cljs:646
+msgid "labels.replies.new"
+msgstr "novas respostas"
+
+#: src/app/main/ui/comments.cljs:640
+msgid "labels.reply"
+msgstr "resposta"
+
+#: src/app/main/ui/comments.cljs:645
+msgid "labels.reply.new"
+msgstr "nova resposta"
+
+#: src/app/main/ui/comments.cljs:721
+msgid "labels.reply.thread"
+msgstr "Responder"
+
#: src/app/main/ui/dashboard/team.cljs:686
msgid "labels.resend-invitation"
msgstr "Reenviar convite"
+#: src/app/main/ui/workspace/sidebar/versions.cljs:133, src/app/main/ui/workspace/sidebar/versions.cljs:263
+msgid "labels.restore"
+msgstr "Restaurar"
+
#: src/app/main/ui/static.cljs:342, src/app/main/ui/static.cljs:351, src/app/main/ui/static.cljs:428
msgid "labels.retry"
msgstr "Tentar novamente"
@@ -1860,15 +2042,15 @@ msgstr "Tentar novamente"
msgid "labels.role"
msgstr "Cargo"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Salvar"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "Pesquisar"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Pesquisar font"
@@ -1908,15 +2090,19 @@ msgstr "Partilhar protótipo"
msgid "labels.shared-libraries"
msgstr "Bibliotecas"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Mostrar todos os comentários"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Mostrar lista de comentários"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139
+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
msgid "labels.show-your-comments"
msgstr "Mostrar apenas os teus comentários"
@@ -1944,7 +2130,11 @@ msgstr "Líder de equipa"
msgid "labels.team-member"
msgstr "Membro de equipa"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:182
+msgid "labels.themes"
+msgstr "Temas"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Tutoriais"
@@ -1960,15 +2150,15 @@ msgstr "Atualizar"
msgid "labels.update-team"
msgstr "Atualizar equipa"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Carregar"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Carregar fontes personalizadas"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Carregando…"
@@ -1984,7 +2174,7 @@ msgstr "Visualizador"
msgid "labels.webhooks"
msgstr "Webhooks"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Escrever novo comentário"
@@ -1992,7 +2182,7 @@ msgstr "Escrever novo comentário"
msgid "labels.you"
msgstr "(tu)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "A tua conta"
@@ -2000,23 +2190,23 @@ msgstr "A tua conta"
msgid "labels.youtube"
msgstr "YouTube"
-#: src/app/main/ui/workspace/colorpicker.cljs:477, src/app/main/ui/workspace/colorpicker.cljs:478, src/app/main/ui/workspace/colorpicker.cljs:480
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
msgid "media.choose-image"
msgstr "Escolher imagem"
-#: src/app/main/ui/workspace/colorpicker.cljs:245
+#: src/app/main/ui/workspace/colorpicker.cljs:241
msgid "media.gradient"
msgstr "Gradiente"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "Imagem"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:77
+#: src/app/main/ui/inspect/attributes/common.cljs:77
msgid "media.image.short"
msgstr "img"
-#: src/app/main/ui/workspace/colorpicker.cljs:470
+#: src/app/main/ui/workspace/colorpicker.cljs:467
msgid "media.keep-aspect-ratio"
msgstr "Manter proporções"
@@ -2034,7 +2224,7 @@ msgstr "A carregar imagem…"
msgid "media.radial"
msgstr "Radial"
-#: src/app/main/ui/workspace/colorpicker.cljs:243
+#: src/app/main/ui/workspace/colorpicker.cljs:239
msgid "media.solid"
msgstr "Sólido"
@@ -2086,7 +2276,7 @@ msgstr "Alterar e-mail"
msgid "modals.change-email.title"
msgstr "Altera o teu e-mail"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Copiar token"
@@ -2102,7 +2292,7 @@ msgstr "Nome"
msgid "modals.create-access-token.name.placeholder"
msgstr "O nome pode ajudar a sugerir para que o token serve"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Criar token"
@@ -2126,15 +2316,15 @@ msgstr "URL do payload"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://example.com/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Apagar token"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "Tens a certeza que queres apagar este token?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Apagar token"
@@ -2154,25 +2344,25 @@ msgstr "Ao remover a tua conta vais perder todos os projetos e ficheiros."
msgid "modals.delete-account.title"
msgstr "Tens a certeza de que queres eliminar a tua conta?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Eliminar conversa"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Tens a certeza de que pretender eliminar esta conversa? Todos os "
"comentários neste tópico serão eliminados."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Eliminar conversa"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
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:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Apagar nota"
@@ -2200,31 +2390,31 @@ msgstr "Tens a certeza de que pretendes eliminar %s ficheiros?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Eliminando %s ficheiros"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Tens a certeza de que pretendes eliminar este estilo de fonte? Não "
"carregará se estiver a ser utilizado num ficheiro."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Eliminando estilo de fonte"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Tens a certeza de que pretendes eliminar esta fonte? Não carregará se "
"estiver a ser utilizada num ficheiro."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Eliminando fonte"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Tens a certeza de que pretendes eliminar esta página?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Eliminar página"
@@ -2340,6 +2530,12 @@ 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:216
+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:212
msgid "modals.invite-team-member.title"
msgstr "Convidar membros para a equipa"
@@ -2432,15 +2628,15 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "Novo proprietário de equipa"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Publicar"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
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:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Publicar biblioteca vazia"
@@ -2496,24 +2692,102 @@ msgstr ""
msgid "modals.update-remote-component-in-bulk.message"
msgstr "Atualizar componentes numa biblioteca partilhada"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Atualizar"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Cancelar"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Atualizar componente numa biblioteca partilhada"
+#: src/app/main/ui/static.cljs:331
+msgid "not-found.desc-message.doesnt-exist"
+msgstr "Esta página não existe"
+
+#: src/app/main/ui/static.cljs:330
+msgid "not-found.desc-message.error"
+msgstr "Erro 404"
+
+#: src/app/main/ui/static.cljs:135
+msgid "not-found.login.free"
+msgstr ""
+"O Penpot é a ferramenta de design gratuita e de código aberto para a "
+"colaboração entre designers e programadores"
+
+#: src/app/main/ui/auth/recovery_request.cljs:114
+msgid "not-found.login.sent-recovery"
+msgstr "Enviámos um email de recuperação para"
+
+#: src/app/main/ui/auth/recovery_request.cljs:116
+msgid "not-found.login.sent-recovery-check"
+msgstr "Verifica o teu email e clica no link para criares uma nova palavra-passe."
+
+#: src/app/main/ui/static.cljs:149
+msgid "not-found.login.signup-free"
+msgstr "Inscreve-te gratuitamente"
+
+#: src/app/main/ui/static.cljs:150
+msgid "not-found.login.start-using"
+msgstr "E começa a usar o Penpot em poucos segundos!"
+
+#: src/app/main/ui/static.cljs:64
+msgid "not-found.made-with-love"
+msgstr "Feito com AMOR e código aberto"
+
+#: src/app/main/ui/static.cljs:291
+msgid "not-found.no-permission.already-requested.file"
+msgstr "Já solicitaste acesso a este ficheiro."
+
+#: src/app/main/ui/static.cljs:292
+msgid "not-found.no-permission.already-requested.or-others.file"
+msgstr ""
+"Já solicitaste acesso a este ficheiro, ou outros ficheiros, ou projetos "
+"desta equipa."
+
+#: src/app/main/ui/static.cljs:297
+msgid "not-found.no-permission.already-requested.project"
+msgstr "Já solicitaste acesso a este projeto."
+
+#: src/app/main/ui/static.cljs:312, src/app/main/ui/static.cljs:321
+msgid "not-found.no-permission.ask"
+msgstr "PEDIR ACESSO"
+
+#: src/app/main/ui/static.cljs:303
+msgid "not-found.no-permission.done.success"
+msgstr "O teu pedido foi enviado com sucesso!"
+
+#: src/app/main/ui/static.cljs:309
+msgid "not-found.no-permission.file"
+msgstr "Não tens acesso a este ficheiro."
+
+#: src/app/main/ui/static.cljs:51, src/app/main/ui/static.cljs:287, src/app/main/ui/static.cljs:293, src/app/main/ui/static.cljs:299, src/app/main/ui/static.cljs:305, src/app/main/ui/static.cljs:314, src/app/main/ui/static.cljs:323
+msgid "not-found.no-permission.go-dashboard"
+msgstr "Ir para o teu Penpot"
+
+#: src/app/main/ui/static.cljs:249, src/app/main/ui/static.cljs:261
+msgid "not-found.no-permission.penpot-file"
+msgstr "Ficheiro do Penpot"
+
+#: src/app/main/ui/static.cljs:248, src/app/main/ui/static.cljs:259
+msgid "not-found.no-permission.project-name"
+msgstr "PROJETO"
+
+#: src/app/main/data/common.cljs:93
+msgid "notifications.by-code.maintenance"
+msgstr ""
+"Pausa de manutenção: nos próximos 5 minutos estaremos fora de serviço para "
+"manutenção."
+
#: src/app/main/data/common.cljs:83
msgid "notifications.by-code.upgrade-version"
msgstr "Está disponível uma nova versão, por favor atualiza a página"
@@ -2568,30 +2842,30 @@ msgstr "Tutoriais em vídeo"
msgid "onboarding-v2.before-start.title"
msgstr "Antes de começares"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Subscreva a Penpot newsletter para ficar a par do progresso do "
"desenvolvimento do produto e das novidades."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr ""
"Envie-me notícias sobre o Penpot (postagens em blogs, tutoriais em vídeo, "
"streamings...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Sua privacidade é importante para nós, saiba mais aqui "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Enviaremos apenas e-mails relevantes para você. Você pode cancelar a "
"inscrição a qualquer momento através do link de cancelamento de inscrição "
"em qualquer uma de nossas newsletter."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr ""
"Envie-me atualizações do produto (novas funcionalidades, lançamentos, "
@@ -2689,17 +2963,17 @@ msgstr "Poderás criar uma equipa mais tarde."
msgid "onboarding.newsletter.accept"
msgstr "Sim, subscreve"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"A tua solicitação de inscrição foi enviada, iremos enviar-te um e-mail para "
"confirmá-la."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Política de Privacidade."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Queres receber as novidades do Penpot?"
@@ -2723,6 +2997,18 @@ msgstr "A averiguar se o Penpot se adequa à minha equipa"
msgid "onboarding.questions.reasons.testing"
msgstr "Testar antes de fazer self-hosting"
+#: src/app/main/ui/onboarding/questions.cljs:407
+msgid "onboarding.questions.referer.article"
+msgstr "Artigo (Blogue, Post, Newsletter)"
+
+#: src/app/main/ui/onboarding/questions.cljs:405
+msgid "onboarding.questions.referer.search"
+msgstr "Motor de busca (Google, Yahoo, Bing)"
+
+#: src/app/main/ui/onboarding/questions.cljs:406
+msgid "onboarding.questions.referer.social"
+msgstr "Redes sociais (X, Linkedin, FB, etc)"
+
#: src/app/main/ui/onboarding/questions.cljs:349
msgid "onboarding.questions.start-with.code"
msgstr "Gerar código a partir de designs"
@@ -2880,10 +3166,14 @@ msgstr "Ir para login"
msgid "settings.detach"
msgstr "Desacoplar"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Misturado"
+#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:270
+msgid "settings.remove-color"
+msgstr "Remover cor"
+
#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:275
msgid "settings.select-this-color"
msgstr "Selecionar itens que usem este estilo"
@@ -3058,6 +3348,10 @@ msgstr "Limpar historial"
msgid "shortcuts.copy"
msgstr "Copiar"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94
+msgid "shortcuts.copy-link"
+msgstr "Copiar ligação para a área de transferência"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95
msgid "shortcuts.create-component"
msgstr "Criar componente"
@@ -3070,7 +3364,7 @@ msgstr "Criar novo"
msgid "shortcuts.cut"
msgstr "Recortar"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Menos zoom"
@@ -3170,7 +3464,7 @@ msgstr "Distribuir horizontalmente"
msgid "shortcuts.hide-ui"
msgstr "Mostrar/ocultar interface"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Mais zoom"
@@ -3354,6 +3648,10 @@ msgstr "Quadro anterior"
msgid "shortcuts.redo"
msgstr "Refazer"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167
+msgid "shortcuts.rename"
+msgstr "Renomear"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168
msgid "shortcuts.reset-zoom"
msgstr "Redefinir zoom"
@@ -3550,15 +3848,15 @@ msgstr "Zoom para selecionados"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Provedores de fonte - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Fontes - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Projetos - %s - Penpot"
@@ -3566,7 +3864,7 @@ msgstr "Projetos - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Pesquisa - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Bibliotecas partilhadas - %s - Penpot"
@@ -3574,7 +3872,7 @@ msgstr "Bibliotecas partilhadas - %s - Penpot"
msgid "title.default"
msgstr "Penpot - Liberdade de Design para Equipas"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "Perfil - Tokens de acesso"
@@ -3582,6 +3880,10 @@ msgstr "Perfil - Tokens de acesso"
msgid "title.settings.feedback"
msgstr "Dá feedback - Penpot"
+#: src/app/main/ui/settings/notifications.cljs:45
+msgid "title.settings.notifications"
+msgstr "Notificações - Penpot"
+
#: src/app/main/ui/settings/options.cljs:76
msgid "title.settings.options"
msgstr "Definições - Penpot"
@@ -3614,7 +3916,7 @@ msgstr "Webhooks - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Modo visualizador - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -3714,23 +4016,35 @@ msgstr "Distribuir espaçamento vertical (%s)"
msgid "workspace.align.vtop"
msgstr "Alinhar ao topo (%s)"
+#: src/app/main/ui/workspace/sidebar/assets.cljs:171
+msgid "workspace.assets.add-library"
+msgstr "Adicionar biblioteca"
+
#: src/app/main/ui/workspace/sidebar/assets.cljs
#, unused
msgid "workspace.assets.assets"
msgstr "Recursos"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Todos os recursos"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Cores"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:494
+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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Componentes"
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:520
+msgid "workspace.assets.components.add-component"
+msgstr "Adicionar componente"
+
#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:127
msgid "workspace.assets.create-group"
msgstr "Criar grupo"
@@ -3741,15 +4055,15 @@ msgstr ""
"Os teus itens serão nomeados automaticamente como \"nome do grupo / nome do "
"item\""
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Eliminar"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Duplicar"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "Duplicar principal"
@@ -3757,15 +4071,15 @@ msgstr "Duplicar principal"
msgid "workspace.assets.edit"
msgstr "Editar"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:195
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
msgid "workspace.assets.filter"
msgstr "Filtrar"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Gráficos"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Agrupar"
@@ -3773,23 +4087,19 @@ msgstr "Agrupar"
msgid "workspace.assets.group-name"
msgstr "Nome do grupo"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Bibliotecas"
-
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "biblioteca local"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Recursos não encontrados"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "Abrir ficheiro de biblioteca"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Renomear"
@@ -3797,7 +4107,7 @@ msgstr "Renomear"
msgid "workspace.assets.rename-group"
msgstr "Renomear grupo"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Pesquisar recursos"
@@ -3813,46 +4123,50 @@ msgstr[1] "%s itens selecionados"
msgid "workspace.assets.shared-library"
msgstr "Biblioteca partilhada"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:226
+#: 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:211
+#: src/app/main/ui/workspace/sidebar/assets.cljs:201
msgid "workspace.assets.sort"
msgstr "Ordenar"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Tipografias"
+#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404
+msgid "workspace.assets.typography.add-typography"
+msgstr "Adicionar tipografia"
+
#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs
#, unused
msgid "workspace.assets.typography.font-id"
msgstr "Fonte"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Tamanho"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Variante"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Ir para ficheiro da biblioteca de estilos para editar"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Espaço entre letras"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Altura da Linha"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -3860,7 +4174,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Estilos de texto"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Transformar Texto"
@@ -3868,55 +4182,55 @@ msgstr "Transformar Texto"
msgid "workspace.assets.ungroup"
msgstr "Desagrupar"
-#: src/app/main/ui/workspace/context_menu.cljs:748
+#: src/app/main/ui/workspace/context_menu.cljs:764
msgid "workspace.context-menu.grid-cells.area"
msgstr "Criar área"
-#: src/app/main/ui/workspace/context_menu.cljs:751
+#: src/app/main/ui/workspace/context_menu.cljs:767
msgid "workspace.context-menu.grid-cells.create-board"
msgstr "Criar prancheta"
-#: src/app/main/ui/workspace/context_menu.cljs:743
+#: src/app/main/ui/workspace/context_menu.cljs:759
msgid "workspace.context-menu.grid-cells.merge"
msgstr "Unir células"
-#: src/app/main/ui/workspace/context_menu.cljs:706
+#: src/app/main/ui/workspace/context_menu.cljs:722
msgid "workspace.context-menu.grid-track.column.add-after"
msgstr "Adicionar 1 coluna à direita"
-#: src/app/main/ui/workspace/context_menu.cljs:705
+#: src/app/main/ui/workspace/context_menu.cljs:721
msgid "workspace.context-menu.grid-track.column.add-before"
msgstr "Adicionar 1 coluna à esquerda"
-#: src/app/main/ui/workspace/context_menu.cljs:707
+#: src/app/main/ui/workspace/context_menu.cljs:723
msgid "workspace.context-menu.grid-track.column.delete"
msgstr "Eliminar coluna"
-#: src/app/main/ui/workspace/context_menu.cljs:708
+#: src/app/main/ui/workspace/context_menu.cljs:724
msgid "workspace.context-menu.grid-track.column.delete-shapes"
msgstr "Apagar coluna e conteúdos"
-#: src/app/main/ui/workspace/context_menu.cljs:704
+#: src/app/main/ui/workspace/context_menu.cljs:720
msgid "workspace.context-menu.grid-track.column.duplicate"
msgstr "Duplicar coluna"
-#: src/app/main/ui/workspace/context_menu.cljs:713
+#: src/app/main/ui/workspace/context_menu.cljs:729
msgid "workspace.context-menu.grid-track.row.add-after"
msgstr "Adicionar 1 fila abaixo"
-#: src/app/main/ui/workspace/context_menu.cljs:712
+#: src/app/main/ui/workspace/context_menu.cljs:728
msgid "workspace.context-menu.grid-track.row.add-before"
msgstr "Adicionar 1 fila acima"
-#: src/app/main/ui/workspace/context_menu.cljs:714
+#: src/app/main/ui/workspace/context_menu.cljs:730
msgid "workspace.context-menu.grid-track.row.delete"
msgstr "Apagar fila"
-#: src/app/main/ui/workspace/context_menu.cljs:715
+#: src/app/main/ui/workspace/context_menu.cljs:731
msgid "workspace.context-menu.grid-track.row.delete-shapes"
msgstr "Apagar fila e conteúdos"
-#: src/app/main/ui/workspace/context_menu.cljs:711
+#: src/app/main/ui/workspace/context_menu.cljs:727
msgid "workspace.context-menu.grid-track.row.duplicate"
msgstr "Duplicar fila"
@@ -3924,11 +4238,11 @@ msgstr "Duplicar fila"
msgid "workspace.focus.focus-mode"
msgstr "Modo de foco"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Foco desativado"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Foco ativo"
@@ -4082,33 +4396,36 @@ msgstr "Mudar para tema claro"
msgid "workspace.header.menu.undo"
msgstr "Desfazer"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Ampliar em 100%"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Erro ao salvar"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Guardado"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "A salvar"
+#: src/app/main/ui/workspace/right_header.cljs:221
+msgid "workspace.header.share"
+msgstr "Partilhar"
+
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Alterações não guardadas"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
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:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "Zoom"
@@ -4120,7 +4437,7 @@ msgstr "Ajustar para preencher"
msgid "workspace.header.zoom-fit"
msgstr "Ajustar para encaixar"
-#: src/app/main/ui/workspace/right_header.cljs:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Ajustar para mostrar tudo"
@@ -4128,19 +4445,19 @@ msgstr "Ajustar para mostrar tudo"
msgid "workspace.header.zoom-full-screen"
msgstr "Tela cheia"
-#: src/app/main/ui/workspace/right_header.cljs:136
+#: src/app/main/ui/workspace/right_header.cljs:104
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:607
+#: 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:616
msgid "workspace.layout_grid.editor.options.edit-grid"
msgstr "Editar grelha"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
msgid "workspace.layout_grid.editor.options.exit"
msgstr "Sair"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:478
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
msgid "workspace.layout_grid.editor.padding.expand"
msgstr "Mostrar 4 opções de preenchimento de lados"
@@ -4156,7 +4473,7 @@ msgstr "Feito"
msgid "workspace.layout_grid.editor.top-bar.locate"
msgstr "Localizar"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1321
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
msgstr "Localizar layout em grelha"
@@ -4165,7 +4482,7 @@ msgstr "Localizar layout em grelha"
msgid "workspace.libraries.add"
msgstr "Adicionar"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s cores"
@@ -4195,31 +4512,31 @@ msgstr "Cores recentes"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "RGB Complementar"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Guardar estilo de cor"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Biblioteca de ficheiros"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "BIBLIOTECAS NESTE FICHEIRO"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "BIBLIOTECAS"
@@ -4228,63 +4545,59 @@ msgstr "BIBLIOTECAS"
msgid "workspace.libraries.library"
msgstr "BIBLIOTECA"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "ATUALIZAÇÕES DE BIBLIOTECAS"
-#: src/app/main/ui/workspace/libraries.cljs:363
+#: src/app/main/ui/workspace/libraries.cljs:360
msgid "workspace.libraries.loading"
msgstr "A carregar…"
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
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:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Não há resultados para \"%s\""
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Não há bibliotecas partilhadas disponíveis"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Pesquisar bibliotecas partilhadas"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "BIBLIOTECAS PARTILHADAS"
-#: src/app/main/ui/workspace/libraries.cljs:355
+#: src/app/main/ui/workspace/libraries.cljs:352
msgid "workspace.libraries.shared-library-btn"
msgstr "Conectar biblioteca"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Múltiplas tipografias"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Desassociar todas as tipografias"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:326
+#: src/app/main/ui/workspace/libraries.cljs:323
msgid "workspace.libraries.unlink-library-btn"
msgstr "Desconectar biblioteca"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Atualizar"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "ver todas as alterações"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "ATUALIZAÇÕES"
@@ -4292,6 +4605,14 @@ msgstr "ATUALIZAÇÕES"
msgid "workspace.options.add-interaction"
msgstr "Clica no botão + para adicionar interações."
+#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91
+msgid "workspace.options.blur-options.add-blur"
+msgstr "Adicionar desfoque"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:112
+msgid "workspace.options.blur-options.remove-blur"
+msgstr "Remover desfoque"
+
#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:87, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:105
msgid "workspace.options.blur-options.title"
msgstr "Desfoque"
@@ -4304,43 +4625,43 @@ msgstr "Desfoque de grupo"
msgid "workspace.options.blur-options.title.multiple"
msgstr "Desfoque de seleção"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Plano de fundo"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Recorte do conteúdo"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Componente"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "Nota"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "Cópia"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "Criar uma nota"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Editar uma nota"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Principal"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:416
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
msgid "workspace.options.component.swap"
msgstr "Trocar de componente"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:460
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
msgid "workspace.options.component.swap.empty"
msgstr "Ainda não existem recursos nesta biblioteca"
@@ -4388,7 +4709,7 @@ msgstr "Topo e Abaixo"
msgid "workspace.options.design"
msgstr "Design"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Exportar"
@@ -4397,13 +4718,13 @@ msgstr "Exportar"
msgid "workspace.options.export-multiple"
msgstr "Exportar seleção"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Sufixo"
@@ -4411,7 +4732,7 @@ msgstr "Sufixo"
msgid "workspace.options.exporting-complete"
msgstr "Exportação completa"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "A exportar…"
@@ -4427,6 +4748,18 @@ msgstr "Exportação inesperadamente lenta"
msgid "workspace.options.fill"
msgstr "Preenchimento"
+#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:151
+msgid "workspace.options.fill.add-fill"
+msgstr "Adicionar cor de preenchimento"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:164
+msgid "workspace.options.fill.remove-fill"
+msgstr "Remover preenchimento"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:341
+msgid "workspace.options.fit-content"
+msgstr "Redimensionar para ajustar ao conteúdo"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182
msgid "workspace.options.flows.add-flow-start"
msgstr "Adicionar início de fluxo"
@@ -4545,11 +4878,19 @@ msgstr "Preenchimento de grupo"
msgid "workspace.options.group-stroke"
msgstr "Traço de grupo"
+#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323
+msgid "workspace.options.guides.add-guide"
+msgstr "Adicionar guia"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187
+msgid "workspace.options.guides.remove-guide"
+msgstr "Remover guia"
+
#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320
msgid "workspace.options.guides.title"
msgstr "Guias"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Altura"
@@ -4775,6 +5116,15 @@ msgstr "Durante a premir"
msgid "workspace.options.interactions"
msgstr "Interações"
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735
+msgid "workspace.options.interactions.add-interaction"
+msgstr "Adicionar interação"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
+#, unused
+msgid "workspace.options.interactions.remove-interaction"
+msgstr "Remover interação"
+
#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152
msgid "workspace.options.layer-options.blend-mode.color"
msgstr "Cor"
@@ -4859,19 +5209,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:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Altura.Máx"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Largura.Máx"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Altura.Min"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Largura.Min"
@@ -4985,11 +5335,11 @@ msgstr "espaço entre"
msgid "workspace.options.layout.top"
msgstr "Topo"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Mais cores"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Mais bibliotecas de cor"
@@ -5026,7 +5376,7 @@ msgstr "Superior esquerdo"
msgid "workspace.options.radius-top-right"
msgstr "Superior direito"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Recente"
@@ -5034,11 +5384,11 @@ msgstr "Recente"
msgid "workspace.options.retry"
msgstr "Repetir"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Rotação"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Pesquisar fonte"
@@ -5048,7 +5398,7 @@ 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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Cores selecionadas"
@@ -5060,43 +5410,51 @@ msgstr "Preenchimento de seleção"
msgid "workspace.options.selection-stroke"
msgstr "Traço da seleção"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:292
+msgid "workspace.options.shadow-options.add-shadow"
+msgstr "Adicionar sombra"
+
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Desfoque"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Cor da sombra"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Sombra"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Sombra interna"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
+msgid "workspace.options.shadow-options.remove-shadow"
+msgstr "Remover sombra"
+
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Difundir"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Sombra"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Grupo de sombras"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Seleção de sombras"
@@ -5104,7 +5462,7 @@ msgstr "Seleção de sombras"
msgid "workspace.options.show-fill-on-export"
msgstr "Mostrar na exportação"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Mostrar no modo de visualização"
@@ -5112,7 +5470,7 @@ msgstr "Mostrar no modo de visualização"
msgid "workspace.options.size"
msgstr "Tamanho"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Tamanho pré-definido"
@@ -5181,10 +5539,14 @@ msgstr "Triângulo"
msgid "workspace.options.stroke-color"
msgstr "Cor do traço"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Largura do traço"
+#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:171
+msgid "workspace.options.stroke.add-stroke"
+msgstr "Adicionar cor de traço"
+
#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89
msgid "workspace.options.stroke.center"
msgstr "Centro"
@@ -5209,6 +5571,10 @@ msgstr "Misto"
msgid "workspace.options.stroke.outer"
msgstr "Exterior"
+#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:184
+msgid "workspace.options.stroke.remove-stroke"
+msgstr "Remover traço"
+
#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105
msgid "workspace.options.stroke.solid"
msgstr "Sólido"
@@ -5245,11 +5611,11 @@ msgstr "Largura automática"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Fixo"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Espaço entre letras"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Altura entre linhas"
@@ -5315,15 +5681,15 @@ 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:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Largura"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "Eixo X"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Y"
@@ -5371,10 +5737,19 @@ msgstr "Ajustar nós (%s)"
msgid "workspace.plugins.button-open"
msgstr "Abrir"
+#: src/app/main/ui/workspace/plugins.cljs:202
+#, markdown
+msgid "workspace.plugins.discover"
+msgstr "Descobre [mais plugins](%s)"
+
#: src/app/main/ui/workspace/plugins.cljs:209
msgid "workspace.plugins.empty-plugins"
msgstr "Sem plugins instalados"
+#: src/app/main/data/plugins.cljs:86, src/app/main/ui/workspace/main_menu.cljs:743, src/app/main/ui/workspace/plugins.cljs:82
+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:192
msgid "workspace.plugins.error.url"
msgstr "O plugin não existe ou o URL está incorreto."
@@ -5395,10 +5770,42 @@ msgstr "Gestor de plugins"
msgid "workspace.plugins.menu.title"
msgstr "Plugins"
+#: src/app/main/ui/workspace/plugins.cljs:372
+msgid "workspace.plugins.permissions-update.title"
+msgstr "ATUALIZAR ESTE PLUGIN"
+
+#: src/app/main/ui/workspace/plugins.cljs:276
+msgid "workspace.plugins.permissions.comment-read"
+msgstr "Ler os teus comentários e respostas."
+
+#: src/app/main/ui/workspace/plugins.cljs:270
+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:263
+msgid "workspace.plugins.permissions.library-read"
+msgstr "Ler informações sobre as tuas bibliotecas e recursos."
+
+#: src/app/main/ui/workspace/plugins.cljs:257
+msgid "workspace.plugins.permissions.library-write"
+msgstr "Ler e modificar as tuas bibliotecas e recursos."
+
+#: src/app/main/ui/workspace/plugins.cljs:316
+msgid "workspace.plugins.permissions.title"
+msgstr "O PLUGIN '%s' SOLICITA ACESSO A:"
+
+#: src/app/main/ui/workspace/plugins.cljs:250
+msgid "workspace.plugins.permissions.user-read"
+msgstr "Ler as informações de perfil do utilizador atual."
+
#: src/app/main/ui/workspace/plugins.cljs:214
msgid "workspace.plugins.plugin-list-link"
msgstr "Lista de plugins"
+#: src/app/main/ui/workspace/plugins.cljs:86
+msgid "workspace.plugins.remove-plugin"
+msgstr "Remover plugin"
+
#: src/app/main/ui/workspace/plugins.cljs:183
msgid "workspace.plugins.search-placeholder"
msgstr "Introduz um URL de plugin"
@@ -5411,99 +5818,135 @@ msgstr "Plugin carregado com sucesso."
msgid "workspace.plugins.title"
msgstr "Plugins"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/plugins.cljs:436
+msgid "workspace.plugins.try-out.cancel"
+msgstr "AGORA NÃO"
+
+#: src/app/main/ui/workspace/plugins.cljs:425
+msgid "workspace.plugins.try-out.title"
+msgstr "O PLUGIN '%s' FOI INSTALADO PARA O TEU UTILIZADOR!"
+
+#: src/app/main/ui/workspace/plugins.cljs:442
+msgid "workspace.plugins.try-out.try"
+msgstr "TESTAR PLUGIN"
+
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Adicionar layout flex"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "Adicionar layout em grelha"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1013, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039
+msgid "workspace.shape.menu.add-layout"
+msgstr "Adicionar layout"
+
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "Enviar para trás"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Mover para trás"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Copiar"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/context_menu.cljs:204
+msgid "workspace.shape.menu.copy-css"
+msgstr "Copiar como CSS"
+
+#: src/app/main/ui/workspace/context_menu.cljs:189
+msgid "workspace.shape.menu.copy-link"
+msgstr "Copiar ligação para a área de transferência"
+
+#: src/app/main/ui/workspace/context_menu.cljs:202
+msgid "workspace.shape.menu.copy-paste-as"
+msgstr "Copiar/Colar como ..."
+
+#: src/app/main/ui/workspace/context_menu.cljs:214
+msgid "workspace.shape.menu.copy-props"
+msgstr "Copiar propriedades"
+
+#: src/app/main/ui/workspace/context_menu.cljs:211
+msgid "workspace.shape.menu.copy-text"
+msgstr "Copiar como texto"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "Criar nota"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Seleção para a prancheta"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Criar componente"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Criar múltiplos componentes"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Recortar"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Eliminar"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Eliminar início de fluxo"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Desprender instância"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Desprender instâncias"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Diferença"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Duplicar"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Editar"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Excluir"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Achatar"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Virar na horizontal"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Virar na vertical"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Início de fluxo"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Mover para a frente"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Enviar para a frente"
@@ -5512,95 +5955,107 @@ msgstr "Enviar para a frente"
msgid "workspace.shape.menu.go-main"
msgstr "Ir para ficheiro do componente principal"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Agrupar"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Ocultar"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Mostrar/Ocultar interface"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Interseção"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Bloquear"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Máscara"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Colar"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:218
+msgid "workspace.shape.menu.paste-props"
+msgstr "Colar propriedades"
+
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Curvas"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Remover layout flex"
-#: src/app/main/ui/workspace/context_menu.cljs:531
+#: src/app/main/ui/workspace/context_menu.cljs:535
msgid "workspace.shape.menu.remove-grid"
msgstr "Remover layout em grelha"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1031
+msgid "workspace.shape.menu.remove-layout"
+msgstr "Remover layout"
+
+#: src/app/main/ui/workspace/context_menu.cljs:313
+msgid "workspace.shape.menu.rename"
+msgstr "Renomear"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Anular alterações"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Restaurar componente principal"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Selecionar camada"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Mostrar"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Mostrar recursos no painel"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Mostrar componente principal"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Remover miniatura"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Definir como miniatura"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Transformar em vector"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Desagrupar"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "União"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Desbloquear"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Retirar máscara"
@@ -5609,7 +6064,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:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Atualizar componente principal"
@@ -5621,11 +6076,11 @@ msgstr "Fechar barra lateral"
msgid "workspace.sidebar.expand"
msgstr "Expandir barra lateral"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Histórico"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Camadas"
@@ -5661,7 +6116,7 @@ msgstr "Formas"
msgid "workspace.sidebar.layers.texts"
msgstr "Textos"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Importar atributos do SVG"
@@ -5669,11 +6124,80 @@ msgstr "Importar atributos do SVG"
msgid "workspace.sidebar.sitemap"
msgstr "Páginas"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249
+msgid "workspace.sidebar.sitemap.add-page"
+msgstr "Adicionar página"
+
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Mapa do site"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:84
+msgid "workspace.token.active-themes"
+msgstr "%s temas ativos"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:136
+msgid "workspace.token.applied-to"
+msgstr "Aplicado a"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:391
+msgid "workspace.token.back-to-themes"
+msgstr "Voltar à lista de temas"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159
+msgid "workspace.token.delete-theme-title"
+msgstr "Eliminar tema"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:383
+msgid "workspace.token.edit-theme-title"
+msgstr "Editar tema"
+
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:72
+msgid "workspace.token.edit-themes"
+msgstr "Editar temas"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:544
+msgid "workspace.token.enter-token-description"
+msgstr "Adicionar uma descrição (opcional)"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:206
+msgid "workspace.token.label.theme"
+msgstr "Tema"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:122
+#, fuzzy
+msgid "workspace.token.original-value"
+msgstr "Valor original: %s"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:240
+msgid "workspace.token.save-theme"
+msgstr "Guardar tema"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:136
+msgid "workspace.token.theme-name"
+msgstr "Tema %s"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:545
+msgid "workspace.token.token-description"
+msgstr "Descrição"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:501
+msgid "workspace.token.token-name"
+msgstr "Nome"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:526
+msgid "workspace.token.token-value"
+msgstr "Valor"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:405
+msgid "workspace.token.tools"
+msgstr "Ferramentas"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:131
+msgid "workspace.token.value-not-valid"
+msgstr "O valor não é válido"
+
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Recursos"
@@ -5681,35 +6205,39 @@ msgstr "Recursos"
msgid "workspace.toolbar.color-palette"
msgstr "Paleta de cores (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Comentários (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Curvas (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Elipse (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Prancheta (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Imagem (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Mover (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Caminho (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:210, src/app/main/ui/workspace/top_toolbar.cljs:211
+msgid "workspace.toolbar.plugins"
+msgstr "Plugins (%s)"
+
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Rectângulo (%s)"
@@ -5718,7 +6246,7 @@ msgstr "Rectângulo (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Atalhos (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Texto (%s)"
@@ -5726,7 +6254,7 @@ msgstr "Texto (%s)"
msgid "workspace.toolbar.text-palette"
msgstr "Tipografias (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:220, src/app/main/ui/workspace/top_toolbar.cljs:221
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
msgid "workspace.toolbar.toggle-toolbar"
msgstr "Alternar barra de ferramentas"
@@ -5884,22 +6412,74 @@ 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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Ignorar"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
msgid "workspace.updates.more-info"
msgstr "Mais informações"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
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:1226
msgid "workspace.updates.update"
msgstr "Atualizar"
+#: src/app/main/ui/workspace/sidebar/versions.cljs:203
+msgid "workspace.versions.button.pin"
+msgstr "Afixar versão"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:198
+msgid "workspace.versions.button.restore"
+msgstr "Restaurar versão"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:327, src/app/main/ui/workspace/sidebar/versions.cljs:329
+msgid "workspace.versions.button.save"
+msgstr "Guardar versão"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:336
+msgid "workspace.versions.empty"
+msgstr "Ainda não existem versões"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:309
+msgid "workspace.versions.filter.all"
+msgstr "Todas as versões"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:308
+msgid "workspace.versions.filter.label"
+msgstr "Filtro de versões"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:310
+msgid "workspace.versions.filter.mine"
+msgstr "As minhas versões"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:316
+msgid "workspace.versions.filter.user"
+msgstr "Versões de %s"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:322
+msgid "workspace.versions.loading"
+msgstr "A carregar..."
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:259
+msgid "workspace.versions.restore-warning"
+msgstr "Queres restaurar esta versão?"
+
+#: src/app/main/ui/workspace/sidebar.cljs:285
+msgid "workspace.versions.tab.actions"
+msgstr "Ações"
+
+#: src/app/main/ui/workspace/sidebar.cljs:282
+msgid "workspace.versions.tab.history"
+msgstr "Histórico"
+
+#: src/app/main/ui/ds/product/autosaved_milestone.cljs:67, src/app/main/ui/ds/product/user_milestone.cljs:74
+msgid "workspace.versions.version-menu"
+msgstr "Abrir menu de versões"
+
#, unused
msgid "workspace.viewport.click-to-close-path"
msgstr "Clica para fechar o caminho"
diff --git a/frontend/translations/ro.po b/frontend/translations/ro.po
index b8f591a5a4..84dc1ae3fa 100644
--- a/frontend/translations/ro.po
+++ b/frontend/translations/ro.po
@@ -39,13 +39,13 @@ msgstr "Creează un cont demo"
msgid "auth.create-demo-profile"
msgstr "Vrei doar să încerci?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Acesta este un DEMO, NU UTILIZAȚI pentru lucrări reale, întrucât proiectele "
"vor fi șterse periodic."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Ai uitat parola?"
@@ -53,7 +53,7 @@ msgstr "Ai uitat parola?"
msgid "auth.fullname"
msgstr "Numele complet"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "Logare în contul meu"
@@ -61,33 +61,33 @@ msgstr "Logare în contul meu"
msgid "auth.login-here"
msgstr "Logați-vă aici."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Intră în cont"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr ""
"Penpot este unealta gratuită cu cod sursă liber pentru colaborare în design "
"și cod"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -113,7 +113,7 @@ msgstr "Un link de recuperare a parolei s-a trimis pe e-mail."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Te-ai alăturat echipei cu success"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Parola"
@@ -141,7 +141,7 @@ msgstr "Ai uitat parola?"
msgid "auth.recovery-submit"
msgstr "Schimbă parola"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Nu aveți încă un cont?"
@@ -153,7 +153,7 @@ msgstr "Spuneți-ne cum ar trebui să vă adresăm pe pagina de pornire și în
msgid "auth.register-account-title"
msgstr "Numele dvs."
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Creează un cont"
@@ -179,7 +179,7 @@ msgstr ""
"Sunt de acord cu [termenii și condițiile](%s) și [politica de "
"confidențialitate](%s)."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Termenii serviciului"
@@ -193,7 +193,7 @@ msgstr ""
msgid "auth.verification-email-sent"
msgstr "Am trimis un email de verificare la"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "Email lucru"
@@ -202,7 +202,7 @@ msgstr "Email lucru"
msgid "branding-illustrations-marketing-pieces"
msgstr "... mărci, ilustrații, piese de marketing, etc."
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Publică"
@@ -275,7 +275,7 @@ msgstr "Distribuiți prototipuri"
msgid "common.share-link.view-all"
msgstr "Selectează Tot"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Anulați publicarea"
@@ -329,7 +329,7 @@ msgstr "Tutorial interfață"
msgid "dashboard.access-tokens.copied-success"
msgstr "Jeton copiat"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Generați jeton nou"
@@ -337,11 +337,11 @@ msgstr "Generați jeton nou"
msgid "dashboard.access-tokens.create.success"
msgstr "Jeton de acces creat cu succes."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Apăsați butonul 'Generați jeton nou' pentru a genera unul."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "Nu aveți încă jetoane."
@@ -365,23 +365,23 @@ msgstr "90 zile"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Niciodată"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Expirat pe %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Expiră pe %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Fără dată de expirare"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Jeton de acces personal"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Jetoanele de acces personal funcționează ca o alternativă la sistemul "
@@ -404,7 +404,7 @@ msgstr "Adăugați ca bibliotecă partajată"
msgid "dashboard.change-email"
msgstr "Schimbă adresa de e-mail"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(copiază)"
@@ -440,23 +440,23 @@ msgstr "Duplicat"
msgid "dashboard.duplicate-multi"
msgstr "Duplicați %s fișiere"
-#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:285
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
msgid "dashboard.empty-placeholder-drafts-subtitle"
msgstr "Odată ce un membru de proiect creează o ciornă, aceasta va fi afișată aici."
-#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:280
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
msgid "dashboard.empty-placeholder-drafts-title"
msgstr "Nu aveți încă ciorne."
-#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:286
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
msgid "dashboard.empty-placeholder-files-subtitle"
msgstr "Odată ce un membru de proiect creează un fișier, acesta va fi afișat aici."
-#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:281
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
msgid "dashboard.empty-placeholder-files-title"
msgstr "Nu aveți încă fișiere."
-#: src/app/main/ui/dashboard/placeholder.cljs:40
+#: src/app/main/ui/dashboard/placeholder.cljs:77
#, markdown
msgid "dashboard.empty-placeholder-libraries"
msgstr ""
@@ -472,11 +472,11 @@ msgstr ""
"fișierele sau adăugați din [Biblioteci și "
"șabloane](https://penpot.app/libraries-templates)."
-#: src/app/main/ui/dashboard/placeholder.cljs:36
+#: src/app/main/ui/dashboard/placeholder.cljs:73
msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role"
msgstr "Bibliotecile adăugate la proiect vor apărea aici."
-#: src/app/main/ui/dashboard/placeholder.cljs:33
+#: src/app/main/ui/dashboard/placeholder.cljs:70
msgid "dashboard.empty-placeholder-libraries-title"
msgstr "Nu aveți încă biblioteci."
@@ -570,36 +570,36 @@ msgstr "Includeți elementele bibliotecii partajate în bibliotecile de fișiere
msgid "dashboard.export.title"
msgstr "Exportați fișiere"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Font șters"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Anulează tot"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Fonturile personalizate pe care le încărcați vor apărea aici."
-#: src/app/main/ui/dashboard/fonts.cljs:448
+#: src/app/main/ui/dashboard/fonts.cljs:450
msgid "dashboard.fonts.empty-placeholder-viewer"
msgstr "Nu aveți încă fonturi personalizate."
-#: src/app/main/ui/dashboard/fonts.cljs:449
+#: src/app/main/ui/dashboard/fonts.cljs:451
msgid "dashboard.fonts.empty-placeholder-viewer-sub"
msgstr ""
"Odată ce un membru de proiect încarcă un font personalizat. acesta va fi "
"afișat aici."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "1 font adăugat"
msgstr[1] "%s fonturi adăugate"
msgstr[2] "%s de fonturi adăugate"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -608,21 +608,20 @@ msgstr ""
"familie de font-uri**. Tipurile de fişiere acceptate: **TTF, OTF și WOFF** "
"(se poate urca doar un singur tip)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Ar trebui să urcați doar fonturi la care aveți drept de folosință sau "
"fonturi personale. Află mai multe despre Dreptul de conținut la secțiunea "
-"[Termenii și Condițiile Penpot](%s). De "
-"asemenea, vă recomandăm să citiți și despre [licențierea "
-"fonturilor](https://www.typography.com/faq)."
+"[Termenii și Condițiile Penpot](%s). De asemenea, vă recomandăm să citiți "
+"și despre [licențierea fonturilor](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Încarcă toate"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -633,7 +632,7 @@ msgstr ""
"utilizați [Transfonter](https://transfonter.org/) pentru a genera fonturi "
"web și a remedia erorile. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Importați fișiere Penpot"
@@ -649,14 +648,14 @@ msgstr "Fișier cu componente v2 activat, dar această echipă încă nu îl sup
msgid "dashboard.import.import-error"
msgstr "A apărut o problemă la importul fișierului. Fișierul nu a fost importat."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgid_plural "dashboard.import.import-message"
msgstr[0] "1 fișier a fost importat cu succes."
msgstr[1] "% fișiere au fost importate cu succes."
msgstr[2] "% de fișiere au fost importate cu succes."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Unele fișiere conțineau obiecte nevalide care au fost eliminate."
@@ -696,27 +695,27 @@ msgstr "Invitați persoane"
msgid "dashboard.leave-team"
msgstr "Părăsește echipa"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Biblioteci & Șabloane"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "Explorează mai multe dintre ele și află cum să contribui"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "A apărut o problemă la importarea șablonului. Șablonul nu a fost importat."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Biblioteci Partajate"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "încărcarea fișierelor …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "se încarcă fonturile tale…"
@@ -732,11 +731,11 @@ msgstr "Mutați %s fișiere la"
msgid "dashboard.move-to-other-team"
msgstr "Mutați la altă echipă"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Fișier nou"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Fișer nou"
@@ -744,7 +743,7 @@ msgstr "Fișer nou"
msgid "dashboard.new-project"
msgstr "+ Proiect nou"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Proiect nou"
@@ -756,7 +755,7 @@ msgstr "Nu există rezultate pentru “%s“"
msgid "dashboard.no-projects-placeholder"
msgstr "Proiectele fixate vor apărea aici"
-#: src/app/main/ui/dashboard/comments.cljs:84
+#: src/app/main/ui/dashboard/comments.cljs:90
msgid "dashboard.notifications"
msgstr "Notificări"
@@ -784,7 +783,7 @@ msgstr "%s membrii"
msgid "dashboard.open-in-new-tab"
msgstr "Deschide fișier într-o pagină nouă"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Opțiuni"
@@ -849,7 +848,7 @@ msgstr "Selectați limbajul interfeței"
msgid "dashboard.select-ui-theme"
msgstr "Selectați o temă"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Afișați toate fișierele"
@@ -879,7 +878,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Fișierul a fost mutat cu succes"
@@ -975,7 +974,7 @@ msgstr "Email"
msgid "dashboard.your-name"
msgstr "Numele tău"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Contul Penpot"
@@ -991,11 +990,11 @@ msgstr "Atenţie"
msgid "ds.component-subtitle"
msgstr "Componente de actualizat:"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Anulează"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Ok"
@@ -1003,7 +1002,7 @@ msgstr "Ok"
msgid "ds.confirm-title"
msgstr "Ești sigur?"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Furnizorul de autentificare nu este configurat."
@@ -1011,11 +1010,11 @@ msgstr "Furnizorul de autentificare nu este configurat."
msgid "errors.auth.unable-to-login"
msgstr "Se pare că nu sunteți autentificat sau sesiunea a expirat."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "Fontul %s nu a putut fi încărcat"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "Fonturile %s nu au putut fi încărcate"
@@ -1023,7 +1022,7 @@ msgstr "Fonturile %s nu au putut fi încărcate"
msgid "errors.cannot-upload"
msgstr "Fișierul media nu s-a putut încărca."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Bowser-ul tău nu permite clipboard"
@@ -1035,7 +1034,7 @@ msgstr "Email deja trimis"
msgid "errors.email-already-validated"
msgstr "Adresa de email este deja validată."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Nu vă puteți folosi e-mailul ca parolă"
@@ -1057,7 +1056,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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "S-a întâmplat ceva în neregulă."
@@ -1070,8 +1069,7 @@ msgstr "Culoare invalidă"
msgid "errors.invalid-email"
msgstr "Vă rugăm să introduceți un e-mail valid"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "E-mailul de confirmare trebuie să se potrivească"
@@ -1087,7 +1085,7 @@ msgstr "Invitație invalidă"
msgid "errors.invite-invalid.info"
msgstr "Această invitație poate fi anulată sau expirată."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "Autentificarea cu LDAP este dezactivată."
@@ -1123,7 +1121,7 @@ msgstr "Parola de confirmare trebuie să se potrivească"
msgid "errors.password-too-short"
msgstr "Parola trebuie să conțină cel puțin 8 caractere"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Profilul este blocat"
@@ -1189,12 +1187,11 @@ msgstr "Eroare neașteptată la validare"
msgid "errors.webhooks.unexpected-status"
msgstr "Stare neașteptată %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "E-mailul sau parola sunt incorecte."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Parola veche este incorectă"
@@ -1242,11 +1239,11 @@ msgstr "Aici pentru a vă ajuta cu întrebările tehnice."
msgid "feedback.twitter-title"
msgstr "Cont de asistență X"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Am întâmpinat o eroare"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Estompare"
@@ -1254,31 +1251,31 @@ msgstr "Estompare"
msgid "inspect.attributes.blur.value"
msgstr "Valoare"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Umple"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Descarcă imaginea sursă"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Înălțime"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Lățime"
@@ -1317,15 +1314,15 @@ msgstr "Top"
msgid "inspect.attributes.layout.width"
msgstr "Lățime"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Umbră"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Dimensiune și poziție"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Linie"
@@ -1362,139 +1359,139 @@ msgstr "Solid"
msgid "inspect.attributes.stroke.width"
msgstr "Lățime"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Tipografie"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Familie de Fonturi"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Dimensiune Font"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Stil Font"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Greutate Font"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Spațiere"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Înălțimea rândului"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Decorare Text"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Niciunul"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Barat"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Subliniat"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Transformare Text"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Minuscule"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Niciunul"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Majuscule Titlu"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Majuscule"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
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/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Mai multe informații despre inspector"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr ""
"Selectați o formă, o placă sau un grup pentru a le inspecta proprietățile "
"și codul"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Cod"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Cerc"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Componentă"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Curbat"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Planșă de lucru"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Grup"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Imagine"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Mască"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s Selectate"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Traiectorie"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Dreptunghi"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Text"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Info"
@@ -1514,7 +1511,7 @@ msgstr "Jetoane acces"
msgid "labels.active"
msgstr "Activ"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Adăugați font personalizat"
@@ -1526,7 +1523,7 @@ msgstr "Administrator"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Toate"
@@ -1546,7 +1543,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:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Anulează"
@@ -1554,15 +1551,15 @@ msgstr "Anulează"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Închide"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Comentarii"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Comunitate"
@@ -1570,7 +1567,7 @@ msgstr "Comunitate"
msgid "labels.confirm-password"
msgstr "Confirmă parola"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Continuă"
@@ -1586,7 +1583,7 @@ msgstr "Poți continua cu un cont Penpot"
msgid "labels.copy-invitation-link"
msgstr "Copiați link-ul"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Creează"
@@ -1606,15 +1603,15 @@ msgstr "Fonturi personalizate"
msgid "labels.dashboard"
msgstr "Administrare"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Șterge"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Șterge comentariu"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Șterge discuție"
@@ -1626,15 +1623,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:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "Anulați"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Drafturi"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Editează"
@@ -1650,7 +1647,7 @@ msgstr "Editor"
msgid "labels.expired-invitation"
msgstr "Expirat"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Exportă"
@@ -1666,7 +1663,7 @@ msgstr "Feedback trimis"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Familie de Fonturi"
@@ -1674,11 +1671,11 @@ msgstr "Familie de Fonturi"
msgid "labels.font-providers"
msgstr "Provideri de Fonturi"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Stiluri"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Fonturi"
@@ -1686,11 +1683,11 @@ msgstr "Fonturi"
msgid "labels.freelancer"
msgstr "Sunt un freelancer"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Repozitoriu Github"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Lasă un feedback"
@@ -1698,11 +1695,11 @@ msgstr "Lasă un feedback"
msgid "labels.go-back"
msgstr "Întoarce-te"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Centru Ajutor"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Ascunde comentariile rezolvate"
@@ -1710,7 +1707,7 @@ msgstr "Ascunde comentariile rezolvate"
msgid "labels.inactive"
msgstr "Inactiv"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Fonturi instalate"
@@ -1736,7 +1733,7 @@ msgstr "Invitații"
msgid "labels.language"
msgstr "Limbă"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Biblioteci & Șabloane"
@@ -1744,7 +1741,7 @@ msgstr "Biblioteci & Șabloane"
msgid "labels.log-or-sign"
msgstr "Conectați-vă sau înregistrați-vă"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Deconectare"
@@ -1760,11 +1757,11 @@ msgstr "Membri"
msgid "labels.new-password"
msgstr "Parolă nouă"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Următor"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "Sunteți la zi! Notificările de comentarii noi vor apărea aici."
@@ -1788,7 +1785,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:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "1 fişier"
@@ -1850,7 +1847,7 @@ msgstr "Profil"
msgid "labels.projects"
msgstr "Proiecte"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Mențiuni"
@@ -1868,7 +1865,7 @@ msgstr "Elimină"
msgid "labels.remove-member"
msgstr "Eliminați membru"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Redenumire"
@@ -1888,11 +1885,11 @@ msgstr "Încearcă din nou"
msgid "labels.role"
msgstr "Rol"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Salvează"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Caută font"
@@ -1928,15 +1925,15 @@ msgstr "Distribuie link"
msgid "labels.shared-libraries"
msgstr "Biblioteci distribuite"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Afișează toate comentariile"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Arată lista de comentarii"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Afișează doar comentariile mele"
@@ -1956,7 +1953,7 @@ msgstr "Stare"
msgid "labels.student-teacher"
msgstr "Student sau profesor"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Tutoriale"
@@ -1972,15 +1969,15 @@ msgstr "Actualizare"
msgid "labels.update-team"
msgstr "Actualizare echipă"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Încărcare"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Încarcă fonturi personalizate"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Se încarcă…"
@@ -1996,7 +1993,7 @@ msgstr "Vizitator"
msgid "labels.webhooks"
msgstr "Webhook-uri"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Scrie un comentariu"
@@ -2004,7 +2001,7 @@ msgstr "Scrie un comentariu"
msgid "labels.you"
msgstr "(tu)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Contul tău"
@@ -2057,7 +2054,7 @@ msgstr "Schimbă adresa de e-mail"
msgid "modals.change-email.title"
msgstr "Schimbă-ți adresa de E-mail"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Copiați jeton"
@@ -2073,7 +2070,7 @@ msgstr "Nume"
msgid "modals.create-access-token.name.placeholder"
msgstr "Numele vă poate ajuta să știți pentru ce este folosit jetonul"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Creați jeton"
@@ -2097,15 +2094,15 @@ msgstr "URL a încărcăturii"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://example.com/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Ștergeți jeton"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "Sunteți sigur că doriți să ștergeți acest jeton?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Ștergeți jeton"
@@ -2125,25 +2122,25 @@ msgstr "Prin ștergerea contului, se vor șterge toate proiectele și arhivele t
msgid "modals.delete-account.title"
msgstr "Ești sigur că dorești ștergerea contului?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Șterge conversație"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Ești sigur că dorești să ștergi această conversație? Toate discuțiile din "
"cadrul subiect vor fi șterse."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Șterge conversație"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
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:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Ștergeți notă"
@@ -2171,31 +2168,31 @@ msgstr "Ești sigur că dorești să ștergi aceste %s fișiere?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Ștergere %s fișeiere în curs"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Sigur doriți să ștergeți acest stil de font? Nu se va încărca dacă este "
"folosit într-un fișier."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Ștergerea stilului fontului"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Ești sigur că dorești să ștergi acest font? O dată șters acesta nu se va "
"mai încărca în proiectele tale."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Ștergere font"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Ești sigur că dorești să ștergi această pagină?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Șterge pagină"
@@ -2389,15 +2386,15 @@ msgstr "Ești sigur că dorești să promovezi acest utilizator ca deținător a
msgid "modals.promote-owner-confirm.title"
msgstr "Confirmare promovare"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Publicați"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
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:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Publicați librărie goală"
@@ -2455,21 +2452,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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Actualizare componentă"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Anulează"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Actualizaţi o componentă dintr-o colecţie distribuită"
@@ -2528,29 +2525,29 @@ msgstr "Tutoriale video"
msgid "onboarding-v2.before-start.title"
msgstr "Înainte de a începe"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Abonați-vă la newsletter-ul Penpot pentru a fi la curent cu progresul și "
"noutățile dezvoltării produsului."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr ""
"Trimite-mi noutăți despre Penpot (postări pe blog, tutoriale video, "
"streaming...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Ne pasă de confidențialitate, aici puteți citi "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Vă vom trimite doar e-mailuri relevante. Vă puteți dezabona oricând prin "
"linkul de dezabonare din oricare dintre buletinele noastre informative."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr "Trimite-mi actualizări de produse (funcții noi, lansări, remedieri...)."
@@ -2611,17 +2608,17 @@ msgstr "Invitați cu rolul:"
msgid "onboarding.newsletter.accept"
msgstr "Da, abonează"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"Solicitarea dvs. de abonament a fost trimisă, vă vom trimite un e-mail "
"pentru a o confirma."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Politica de Confidențialitate."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Vrei să primești știri Penpot?"
@@ -2699,7 +2696,7 @@ msgstr "Mergi la autentificare"
msgid "settings.detach"
msgstr "Detașați"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Multiple"
@@ -2885,7 +2882,7 @@ msgstr "Creează nou"
msgid "shortcuts.cut"
msgstr "Taie"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Micșorează"
@@ -2985,7 +2982,7 @@ msgstr "Distribuiți pe orizontală"
msgid "shortcuts.hide-ui"
msgstr "Arată/ascunde interfața"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Măriți"
@@ -3337,15 +3334,15 @@ msgstr "Mărește la selecție"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Furnizori de Fonturi - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Fonturi - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Proiecte - %s - Penpot"
@@ -3353,7 +3350,7 @@ msgstr "Proiecte - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Caută - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Biblioteci Distribuite - %s - Penpot"
@@ -3361,7 +3358,7 @@ msgstr "Biblioteci Distribuite - %s - Penpot"
msgid "title.default"
msgstr "Penpot - Libertate în Design pentru Echipe"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "Profil - Jetoane acces"
@@ -3401,7 +3398,7 @@ msgstr "Webhooks - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Vizualizare - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -3506,15 +3503,15 @@ msgstr "Aliniază sus (%s)"
msgid "workspace.assets.assets"
msgstr "Obiecte"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Toate obiectele"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Culori"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Componente"
@@ -3526,15 +3523,15 @@ msgstr "Creează grup"
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:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Şterge"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Duplică"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "Duplicare principală"
@@ -3542,11 +3539,11 @@ msgstr "Duplicare principală"
msgid "workspace.assets.edit"
msgstr "Editează"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Obiecte grafice"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Grup"
@@ -3554,23 +3551,19 @@ msgstr "Grup"
msgid "workspace.assets.group-name"
msgstr "Nume grup"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Biblioteci"
-
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "biblioteca locală"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Nu au fost găsite obiecte"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "Deschideți fișier librărie"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Redenumeşte"
@@ -3578,7 +3571,7 @@ msgstr "Redenumeşte"
msgid "workspace.assets.rename-group"
msgstr "Redenumiți grupul"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Caută obiecte"
@@ -3595,7 +3588,7 @@ msgstr[2] "%s obiecte selectate"
msgid "workspace.assets.shared-library"
msgstr "Librărie partajată"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Tipografii"
@@ -3604,27 +3597,27 @@ msgstr "Tipografii"
msgid "workspace.assets.typography.font-id"
msgstr "Font"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Dimensiune"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Variante"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Editează fişierul în Colecţia de stiluri"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Spaţiere Litere"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Înălţime linie"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -3632,7 +3625,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Stiluri de text"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Transformare Text"
@@ -3644,11 +3637,11 @@ msgstr "Degrupați"
msgid "workspace.focus.focus-mode"
msgstr "Mod focus"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Focus oprit"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Focus pornit"
@@ -3778,33 +3771,32 @@ msgstr "Afișați paleta de fonturi"
msgid "workspace.header.menu.undo"
msgstr "Anulare"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Resetați"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Eroare în timpul salvării"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Salvat"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Salvare în curs"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Modificări nesalvate"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "Vizualizare (%s)"
-#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "Zoom"
@@ -3816,7 +3808,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:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Zoom pentru a potrivi tot"
@@ -3824,7 +3816,7 @@ msgstr "Zoom pentru a potrivi tot"
msgid "workspace.header.zoom-full-screen"
msgstr "Ecran complet"
-#: src/app/main/ui/workspace/right_header.cljs:136
+#: src/app/main/ui/workspace/right_header.cljs:104
msgid "workspace.header.zoom-selected"
msgstr "Zoom la selecție"
@@ -3837,7 +3829,7 @@ msgstr "Editare grilă"
msgid "workspace.libraries.add"
msgstr "Adaugă"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s culori"
@@ -3867,31 +3859,31 @@ msgstr "Culori recente"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "RGB Complementar"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Salvează stilul culorii"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Bibliotecă de fișiere"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "BIBLIOTECILE FIŞIERULUI"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "BIBLIOTECI"
@@ -3900,51 +3892,47 @@ msgstr "BIBLIOTECI"
msgid "workspace.libraries.library"
msgstr "BIBLIOTECĂ"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "ACTUALIZĂRI LIBRĂRII"
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "Nu există Biblioteci Distribuite ce necesită update"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Nu au fost găsite asemănări pentru “%s“"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Nu există Biblioteci Distribuite"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Caută în bibliotecile distribuite"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "BIBLIOTECI DISTRIBUITE"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Tipografii multiple"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Deconectează toate tipografiile"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Actualizați"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "vedeți toate schimbările"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "ACTUALIZĂRI"
@@ -3964,35 +3952,35 @@ msgstr "Blur pe grup"
msgid "workspace.options.blur-options.title.multiple"
msgstr "Selecţie de blur"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Fundal canvas"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Conținutul clipului"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Componentă"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "Notă"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "Copiați"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "Creați o notă"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Editați o notă"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Principal"
@@ -4040,7 +4028,7 @@ msgstr "Sus & Jos"
msgid "workspace.options.design"
msgstr "Design"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Exportă"
@@ -4049,14 +4037,14 @@ msgstr "Exportă"
msgid "workspace.options.export-multiple"
msgstr "Exportați selecția"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Sufix"
@@ -4064,7 +4052,7 @@ msgstr "Sufix"
msgid "workspace.options.exporting-complete"
msgstr "Export finalizat"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Se exportă…"
@@ -4194,7 +4182,7 @@ msgstr "Umplere grup"
msgid "workspace.options.group-stroke"
msgstr "Conturare grup"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Înălțime"
@@ -4504,19 +4492,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:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
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:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Lățime maximă"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
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:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Lățime minimă"
@@ -4630,11 +4618,11 @@ msgstr "spațiu între"
msgid "workspace.options.layout.top"
msgstr "Sus"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Mai multe culori"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Mai multe culori de bibliotecă"
@@ -4671,7 +4659,7 @@ msgstr "Stânga sus"
msgid "workspace.options.radius-top-right"
msgstr "Dreapta sus"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Recente"
@@ -4679,11 +4667,11 @@ msgstr "Recente"
msgid "workspace.options.retry"
msgstr "Reîncercați"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Rotaţie"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Căutați font"
@@ -4691,7 +4679,7 @@ msgstr "Căutați font"
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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Culori selectate"
@@ -4703,43 +4691,43 @@ msgstr "Umplere selecție"
msgid "workspace.options.selection-stroke"
msgstr "Contur selecție"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Estompare"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Culoare umbră"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Umbră proiectată"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Umbră interioară"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Accentuare"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Umbră"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Umbră grup"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Umbre de selecție"
@@ -4747,7 +4735,7 @@ msgstr "Umbre de selecție"
msgid "workspace.options.show-fill-on-export"
msgstr "Afișați în exporturi"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Afișare în modul de vizualizare"
@@ -4755,7 +4743,7 @@ msgstr "Afișare în modul de vizualizare"
msgid "workspace.options.size"
msgstr "Mărime"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Dimensiuni presetate"
@@ -4824,7 +4812,7 @@ msgstr "Triunghi"
msgid "workspace.options.stroke-color"
msgstr "Culoare contur"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Lățimea conturului"
@@ -4888,11 +4876,11 @@ msgstr "Lăţime auto"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Fix"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Spaţiere Litere"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Înălţime linii"
@@ -4956,15 +4944,15 @@ msgstr "Majuscule"
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:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Lăţime"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "Axa X"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Axa Y"
@@ -5008,99 +4996,99 @@ msgstr "Separă noduri (%s)"
msgid "workspace.path.actions.snap-nodes"
msgstr "Trage noduri (%s)"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Adăugați aspect flexibil"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "Adăugați aspect grilă"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "Trimite înapoi"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Trimite în urmă"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Copiază"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "Creați notă"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Selecție la planșă"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Creează componentă"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Creați componente multiple"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Taie"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Şterge"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Ștergeți începutul fluxului"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Detaşează instanţă"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Detașați instanțele"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Diferență"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Duplică"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Editează"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Excludeți"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Aplatizați"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Întoarce pe orizontală"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Întoarce pe verticală"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Pornirea fluxului"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Aduceţi înainte"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Aduceţi în faţă"
@@ -5109,91 +5097,91 @@ msgstr "Aduceţi în faţă"
msgid "workspace.shape.menu.go-main"
msgstr "Mergi la componenta principală"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Grupează"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Ascunde"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Afișați/ Ascundeți UI"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Intersecție"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Blochează"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Maschează"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Lipeşte"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Drum"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Îndepărtați aspect flexibil"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Resetează suprascrierile"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Restaurați componenta principală"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Selectați stratul"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Afişează"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Afișați în panoul de obiecte"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Afişează componenta principală"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Eliminați miniatura"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Setați ca miniatură"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Transformați în drum"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Degrupează"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Uniune"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Deblochează"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Demaschează"
@@ -5202,7 +5190,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:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Actualizaţi principala componentă"
@@ -5214,11 +5202,11 @@ msgstr "Restrângeți bara laterală"
msgid "workspace.sidebar.expand"
msgstr "Extindeți bara laterală"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Istoric"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Layere"
@@ -5254,7 +5242,7 @@ msgstr "Forme"
msgid "workspace.sidebar.layers.texts"
msgstr "Texte"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Atribute SVG importate"
@@ -5262,11 +5250,11 @@ msgstr "Atribute SVG importate"
msgid "workspace.sidebar.sitemap"
msgstr "Pagini"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Harta site-ului"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Obiecte"
@@ -5274,35 +5262,35 @@ msgstr "Obiecte"
msgid "workspace.toolbar.color-palette"
msgstr "Paletă de culori (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Comentarii (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Curbe (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Elipsă (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Planşă de lucru (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Imagine (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Poziţionează (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Cale (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Dreptunghi (%s)"
@@ -5311,7 +5299,7 @@ msgstr "Dreptunghi (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Comenzi rapide (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Text (%s)"
@@ -5464,19 +5452,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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Renunţă"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
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:1220
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:1226
msgid "workspace.updates.update"
msgstr "Actualizează"
diff --git a/frontend/translations/ru.po b/frontend/translations/ru.po
index c3d6d1b183..ceb571b203 100644
--- a/frontend/translations/ru.po
+++ b/frontend/translations/ru.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2024-10-10 10:15+0000\n"
-"Last-Translator: Inex Code \n"
+"PO-Revision-Date: 2025-03-20 13:42+0000\n"
+"Last-Translator: Anonymous \n"
"Language-Team: Russian "
" \n"
"Language: ru\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.8-dev\n"
+"X-Generator: Weblate 5.11-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
@@ -36,13 +36,13 @@ msgstr "Создать демо-аккаунт"
msgid "auth.create-demo-profile"
msgstr "Хотите попробовать?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Это ДЕМОНСТРАЦИЯ, НЕ ИСПОЛЬЗУЙТЕ для работы, проекты будут периодически "
"удаляться."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Забыли пароль?"
@@ -50,7 +50,7 @@ msgstr "Забыли пароль?"
msgid "auth.fullname"
msgstr "Полное имя"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "Войдите в свой аккаунт"
@@ -58,33 +58,33 @@ msgstr "Войдите в свой аккаунт"
msgid "auth.login-here"
msgstr "Войти здесь."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Вход"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr ""
-"Penpot - это бесплатный инструмент проектирования с открытым исходным кодом "
-"для совместной работы над дизайном и кодом"
+"Penpot — это бесплатный инструмент для дизайна с открытым исходным кодом, "
+"созданный для совместной работы с дизайном и кодом"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -98,7 +98,7 @@ msgstr "Пароль успешно изменён"
#: src/app/main/ui/auth/recovery_request.cljs:50
msgid "auth.notifications.profile-not-verified"
-msgstr "Профиль не подтверждён, проверьте почту."
+msgstr "Профиль не подтверждён, пожалуйста, сначала подтвердите профиль."
#: src/app/main/ui/auth/recovery_request.cljs:33
msgid "auth.notifications.recovery-token-sent"
@@ -108,7 +108,7 @@ msgstr "Ссылка для восстановления пароля отпра
msgid "auth.notifications.team-invitation-accepted"
msgstr "Приглашение в команду принято"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Пароль"
@@ -136,7 +136,7 @@ msgstr "Забыли пароль?"
msgid "auth.recovery-submit"
msgstr "Изменить пароль"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Ещё нет аккаунта?"
@@ -150,7 +150,7 @@ msgstr ""
msgid "auth.register-account-title"
msgstr "Ваше имя"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Создать аккаунт"
@@ -177,7 +177,7 @@ msgstr ""
"Я согласен с [условиями обслуживания](%s) и [политикой "
"конфиденциальности](%s)."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Условия использования"
@@ -191,7 +191,7 @@ msgstr ""
msgid "auth.verification-email-sent"
msgstr "Мы отправили эл. письмо с подтверждением на"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "Рабочая эл. почта"
@@ -200,7 +200,7 @@ msgstr "Рабочая эл. почта"
msgid "branding-illustrations-marketing-pieces"
msgstr "...брендинг, иллюстрации, маркетинговые материалы и т.д."
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Опубликовать"
@@ -242,11 +242,11 @@ msgstr[1] "%s общих страниц"
#: src/app/main/ui/viewer/share_link.cljs:299
msgid "common.share-link.permissions-can-comment"
-msgstr "Можно оставлять комментарии"
+msgstr "Могут комментировать"
#: src/app/main/ui/viewer/share_link.cljs:309
msgid "common.share-link.permissions-can-inspect"
-msgstr "Может проверять код"
+msgstr "Могут проверять код"
#: src/app/main/ui/viewer/share_link.cljs:194
msgid "common.share-link.permissions-hint"
@@ -272,7 +272,7 @@ msgstr "Поделиться прототипами"
msgid "common.share-link.view-all"
msgstr "Выбрать все"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Снять с публикации"
@@ -324,7 +324,7 @@ msgstr "Руководство по интерфейсу"
msgid "dashboard.access-tokens.copied-success"
msgstr "Токен скопирован"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Сгенерировать новый токен"
@@ -332,11 +332,11 @@ msgstr "Сгенерировать новый токен"
msgid "dashboard.access-tokens.create.success"
msgstr "Токен доступа успешно создан."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Нажмите кнопку «Сгенерировать новый токен», чтобы сгенерировать его."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "У вас пока нет токенов."
@@ -360,23 +360,23 @@ msgstr "90 дней"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Никогда"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Срок истёк %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Срок истекает %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Срока истечения нет"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Личные токены доступа"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Личные токены доступа функционируют как альтернатива нашей системе "
@@ -391,6 +391,10 @@ msgstr "Срок действия токена истечёт %s"
msgid "dashboard.access-tokens.token-will-not-expire"
msgstr "Токен не имеет срока действия"
+#: src/app/main/ui/dashboard/placeholder.cljs:35
+msgid "dashboard.add-file"
+msgstr "Добавить файл"
+
#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612
msgid "dashboard.add-shared"
msgstr "Добавить как общую библиотеку"
@@ -399,7 +403,7 @@ msgstr "Добавить как общую библиотеку"
msgid "dashboard.change-email"
msgstr "Изменить эл. почту"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(копия)"
@@ -407,6 +411,10 @@ msgstr "(копия)"
msgid "dashboard.create-new-team"
msgstr "Создать новую команду"
+#: src/app/main/ui/workspace/main_menu.cljs:623
+msgid "dashboard.create-version-menu"
+msgstr "Закрепить эту версию"
+
#: src/app/main/ui/components/context_menu_a11y.cljs:282, src/app/main/ui/dashboard/sidebar.cljs:659
msgid "dashboard.default-team-name"
msgstr "Ваш Penpot"
@@ -431,6 +439,46 @@ msgstr "Дублировать"
msgid "dashboard.duplicate-multi"
msgstr "Дублировать файлы (%s)"
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
+msgid "dashboard.empty-placeholder-drafts-subtitle"
+msgstr "Как только участник проекта создаст черновик, он отобразится здесь."
+
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
+msgid "dashboard.empty-placeholder-drafts-title"
+msgstr "Черновиков пока нет."
+
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
+msgid "dashboard.empty-placeholder-files-subtitle"
+msgstr "Как только участник проекта создаст файл, он отобразится здесь."
+
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
+msgid "dashboard.empty-placeholder-files-title"
+msgstr "Файлов пока нет."
+
+#: src/app/main/ui/dashboard/placeholder.cljs:77
+#, 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:73
+msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role"
+msgstr "Библиотеки, добавленные в проект, будут отображаться здесь."
+
+#: src/app/main/ui/dashboard/placeholder.cljs:70
+msgid "dashboard.empty-placeholder-libraries-title"
+msgstr "Библиотек пока нет."
+
#: src/app/main/ui/dashboard/file_menu.cljs:249, src/app/main/ui/dashboard/file_menu.cljs:254
msgid "dashboard.export-binary-multi"
msgstr "Скачать файлы Penpot (.penpot) (%s)"
@@ -519,25 +567,29 @@ msgstr "Включить ресурсы общей библиотеки в фа
msgid "dashboard.export.title"
msgstr "Экспорт файлов"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Шрифт удалён"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Отменить все"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Пользовательские шрифты, которые вы загружаете, будут отображаться здесь."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:450
+msgid "dashboard.fonts.empty-placeholder-viewer"
+msgstr "Пользовательских шрифтов пока нет."
+
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "Шрифт добавлен"
msgstr[1] "Шрифты добавлены (%s)"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -547,21 +599,21 @@ msgstr ""
"загрузки допустимы следующие форматы: **TTF, OTF и WOFF** (используйте один "
"из них)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Вам следует загружать только собственные шрифты, или у которых есть "
"лицензия на использование в Penpot. Больше информации в разделе \"Content "
-"rights\" в [Условиях использования Penpot](%s). "
-"Также можете прочитать о [лицензированием "
-"шрифтов](https://www.typography.com/faq) в целом."
+"rights\" в [Условиях использования Penpot](https://penpot.app/terms.html). "
+"Также можете прочитать о [лицензировании "
+"шрифтов](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Загрузить все"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -572,7 +624,7 @@ msgstr ""
"использовать [Transfonter](https://transfonter.org/) для создания "
"веб-шрифтов и исправления ошибок. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Импорт файлов Penpot"
@@ -584,15 +636,19 @@ msgstr "Ой! Не вышло импортировать этот файл"
msgid "dashboard.import.analyze-error.components-v2"
msgstr "Файл с компонентами v2 активирован, но эта команда пока не поддерживает его."
+#: src/app/main/ui/dashboard.cljs:247
+msgid "dashboard.import.bad-url"
+msgstr "Импорт не удался. URL-адрес шаблона неверен"
+
+#: src/app/main/ui/dashboard.cljs:241
+msgid "dashboard.import.error"
+msgstr "Импорт не удался. Пожалуйста, попробуйте снова"
+
#: src/app/main/ui/dashboard/import.cljs:292
msgid "dashboard.import.import-error"
msgstr "Есть проблема с импортом файла. Файл не был импортирован."
-#: src/app/main/ui/dashboard/import.cljs:466
-msgid "dashboard.import.import-message"
-msgstr "Файлы успешно импортированы (%s)."
-
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Некоторые файлы содержали неверные объекты, которые были удалены."
@@ -632,27 +688,27 @@ msgstr "Пригласить людей"
msgid "dashboard.leave-team"
msgstr "Покинуть команду"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Библиотеки и шаблоны"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "Узнайте больше о них и о том, как внести свой вклад"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "Возникла проблема с импортом шаблона. Шаблон не был импортирован."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Библиотеки"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "загрузка ваших файлов …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "загрузка ваших шрифтов …"
@@ -668,11 +724,11 @@ msgstr "Переместить файлы (%s)"
msgid "dashboard.move-to-other-team"
msgstr "Перевести в другую команду"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Новый файл"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Новый файл"
@@ -680,7 +736,7 @@ msgstr "Новый файл"
msgid "dashboard.new-project"
msgstr "+ Новый проект"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Новый проект"
@@ -692,17 +748,29 @@ msgstr "Совпадений для “%s“ не найдено"
msgid "dashboard.no-projects-placeholder"
msgstr "Закреплённые проекты будут здесь"
+#: src/app/main/ui/dashboard/comments.cljs:90
+msgid "dashboard.notifications"
+msgstr "Уведомления"
+
#: src/app/main/ui/auth/verify_token.cljs:34
msgid "dashboard.notifications.email-changed-successfully"
msgstr "Ваш адрес эл. почты был успешно обновлён"
#: src/app/main/ui/auth/verify_token.cljs:28
msgid "dashboard.notifications.email-verified-successfully"
-msgstr "Ваш email адрес успешно подтвержден"
+msgstr "Ваш адрес эл. почты был успешно подтверждён"
+
+#: src/app/main/data/profile.cljs:260
+msgid "dashboard.notifications.notifications-saved"
+msgstr "Настройки уведомлений обновлены"
#: src/app/main/ui/settings/password.cljs:36
msgid "dashboard.notifications.password-saved"
-msgstr "Пароль успешно сохранен!"
+msgstr "Пароль успешно сохранён!"
+
+#: src/app/main/ui/dashboard/comments.cljs:44
+msgid "dashboard.notifications.view"
+msgstr "Просмотреть уведомления"
#: src/app/main/ui/dashboard/team.cljs:1133
msgid "dashboard.num-of-members"
@@ -712,7 +780,7 @@ msgstr "Участников: %s"
msgid "dashboard.open-in-new-tab"
msgstr "Открыть в новой вкладке"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Опции"
@@ -720,10 +788,38 @@ msgstr "Опции"
msgid "dashboard.password-change"
msgstr "Изменить пароль"
+#: src/app/main/data/common.cljs:209
+msgid "dashboard.permissions-change.admin"
+msgstr "Теперь вы администратор в этой команде."
+
+#: src/app/main/data/common.cljs:208
+msgid "dashboard.permissions-change.editor"
+msgstr "Теперь вы редактор в этой команде."
+
+#: src/app/main/data/common.cljs:210
+msgid "dashboard.permissions-change.owner"
+msgstr "Теперь вы владелец этой команды."
+
+#: src/app/main/data/common.cljs:207
+msgid "dashboard.permissions-change.viewer"
+msgstr "Теперь вы наблюдатель в этой команде."
+
#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96
msgid "dashboard.pin-unpin"
msgstr "Закрепить/Открепить"
+#: src/app/main/ui/dashboard.cljs:208
+msgid "dashboard.plugins.bad-url"
+msgstr "URL-адрес плагина неверен"
+
+#: src/app/main/ui/dashboard.cljs:206
+msgid "dashboard.plugins.parse-error"
+msgstr "Невозможно проанализировать манифест плагина"
+
+#: src/app/main/ui/dashboard.cljs:169
+msgid "dashboard.plugins.try-plugin"
+msgstr "Попробуйте плагин: "
+
#: src/app/main/ui/dashboard/projects.cljs:55
msgid "dashboard.projects-title"
msgstr "Проекты"
@@ -757,10 +853,74 @@ msgstr "Выберите язык интерфейса"
msgid "dashboard.select-ui-theme"
msgstr "Выберите тему"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/settings/notifications.cljs:57
+msgid "dashboard.settings.notifications.dashboard-comments.all"
+msgstr "Все комментарии, упоминания и ответы"
+
+#: src/app/main/ui/settings/notifications.cljs:59
+msgid "dashboard.settings.notifications.dashboard-comments.none"
+msgstr "Никакие"
+
+#: src/app/main/ui/settings/notifications.cljs:58
+msgid "dashboard.settings.notifications.dashboard-comments.partial"
+msgstr "Только упоминания и ответы"
+
+#: src/app/main/ui/settings/notifications.cljs:54
+msgid "dashboard.settings.notifications.dashboard-comments.title"
+msgstr "Комментарии к файлам"
+
+#: src/app/main/ui/settings/notifications.cljs:53
+msgid "dashboard.settings.notifications.dashboard.title"
+msgstr "Уведомления в панели управления"
+
+#: src/app/main/ui/settings/notifications.cljs:67
+msgid "dashboard.settings.notifications.email-comments.all"
+msgstr "Все комментарии, упоминания и ответы"
+
+#: src/app/main/ui/settings/notifications.cljs:69
+msgid "dashboard.settings.notifications.email-comments.none"
+msgstr "Никакие"
+
+#: src/app/main/ui/settings/notifications.cljs:68
+msgid "dashboard.settings.notifications.email-comments.partial"
+msgstr "Только упоминания и ответы"
+
+#: src/app/main/ui/settings/notifications.cljs:64
+msgid "dashboard.settings.notifications.email-comments.title"
+msgstr "Комментарии к файлам"
+
+#: src/app/main/ui/settings/notifications.cljs:76
+msgid "dashboard.settings.notifications.email-invites.all"
+msgstr "Все виды приглашений и запросов"
+
+#: src/app/main/ui/settings/notifications.cljs:79
+msgid "dashboard.settings.notifications.email-invites.none"
+msgstr "Никакие"
+
+#: src/app/main/ui/settings/notifications.cljs:73
+msgid "dashboard.settings.notifications.email-invites.title"
+msgstr "Приглашения и запросы"
+
+#: src/app/main/ui/settings/notifications.cljs:63
+msgid "dashboard.settings.notifications.email.title"
+msgstr "Уведомления по эл. почте"
+
+#: src/app/main/ui/settings/notifications.cljs:84
+msgid "dashboard.settings.notifications.submit"
+msgstr "Обновить настройки"
+
+#: src/app/main/ui/settings/notifications.cljs:52
+msgid "dashboard.settings.notifications.title"
+msgstr "Уведомления"
+
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Показать все файлы"
+#: src/app/main/ui/workspace/main_menu.cljs:630
+msgid "dashboard.show-version-history"
+msgstr "История версий"
+
#: src/app/main/ui/dashboard/file_menu.cljs:97
msgid "dashboard.success-delete-file"
msgid_plural "dashboard.success-delete-file"
@@ -781,7 +941,7 @@ msgstr[1] "Ваши файлы были успешно продублирова
msgid "dashboard.success-duplicate-project"
msgstr "Ваш проект продублирован"
-#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Ваш файл успешно перемещён"
@@ -825,6 +985,10 @@ msgstr "Снять библиотеку с публикации"
msgid "dashboard.update-settings"
msgstr "Обновить настройки"
+#: src/app/main/ui/dashboard/sidebar.cljs:972
+msgid "dashboard.upgrade-plan.power-up"
+msgstr "Расширить"
+
#: src/app/main/ui/dashboard/team.cljs:909
msgid "dashboard.webhooks.active"
msgstr "Активен"
@@ -876,7 +1040,7 @@ msgstr "Эл. почта"
msgid "dashboard.your-name"
msgstr "Ваше имя"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Ваш Penpot"
@@ -892,11 +1056,11 @@ msgstr "Внимание"
msgid "ds.component-subtitle"
msgstr "Компоненты для обновления:"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Отмена"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Oк"
@@ -908,7 +1072,7 @@ msgstr "Вы уверены?"
msgid "errors.auth-provider-not-allowed"
msgstr "Поставщик аутентификации не разрешён для этого профиля"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Провайдер аутентификации не настроен."
@@ -916,11 +1080,11 @@ msgstr "Провайдер аутентификации не настроен."
msgid "errors.auth.unable-to-login"
msgstr "Кажется, сеанс истёк. Войдите снова."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "Шрифт %s не может быть загружен"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "Шрифты %s не могут быть загружены"
@@ -928,7 +1092,7 @@ msgstr "Шрифты %s не могут быть загружены"
msgid "errors.cannot-upload"
msgstr "Невозможно загрузить медиафайл."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Ваш браузер не поддерживает эту операцию"
@@ -940,7 +1104,7 @@ msgstr "Такая эл. почта уже используется"
msgid "errors.email-already-validated"
msgstr "Эл. почта уже подтверждена."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Нельзя указывать в качестве пароля адрес эл. почты"
@@ -973,7 +1137,7 @@ msgstr ""
"функциями файла, который вы пытаетесь открыть. Прежде чем файл можно будет "
"открыть, необходимо применить миграцию для «%s»."
-#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Что-то пошло не так."
@@ -981,8 +1145,7 @@ msgstr "Что-то пошло не так."
msgid "errors.invalid-color"
msgstr "Неверный цвет"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "Эл. почта для подтверждения должна совпадать"
@@ -998,7 +1161,7 @@ msgstr "Приглашение недействительно"
msgid "errors.invite-invalid.info"
msgstr "Возможно, это приглашение отменено или истёк срок его действия."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "Вход c LDAP отключён."
@@ -1036,7 +1199,7 @@ msgstr "Пароль должен быть минимум 8 символов"
msgid "errors.paste-data-validation"
msgstr "Недопустимые данные в буфере обмена"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Профиль заблокирован"
@@ -1110,12 +1273,11 @@ msgstr "Неожиданная ошибка при проверке"
msgid "errors.webhooks.unexpected-status"
msgstr "Неожиданный статус %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "Эл. почта или пароль неверны."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Старый пароль неверный"
@@ -1163,11 +1325,11 @@ msgstr "Здесь, чтобы помочь с вашими технически
msgid "feedback.twitter-title"
msgstr "Аккаунт поддержки в X"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Произошла ошибка"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Размытие"
@@ -1175,31 +1337,31 @@ msgstr "Размытие"
msgid "inspect.attributes.blur.value"
msgstr "Значение"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Заливка"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Скачать оригинал"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Высота"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Ширина"
@@ -1238,15 +1400,15 @@ msgstr "Сверху"
msgid "inspect.attributes.layout.width"
msgstr "Ширина"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Тень"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Размер и положение"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Обводка"
@@ -1283,141 +1445,141 @@ msgstr "Сплошная"
msgid "inspect.attributes.stroke.width"
msgstr "Толщина"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Текст"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Гарнитура"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Размер"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Шрифт"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Толщина шрифта"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Трекинг"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Интерлиньяж"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Оформление"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Нет"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Перечёркнутый"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Подчёркнутый"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Регистр"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Нижний регистр"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Какой есть"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Регистр Заголовка"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "Не установлено"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Верхний регистр"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr ""
"Если вы хотите узнать больше о осмотре дизайна, посетите справочный центр "
"Penpot"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Подробнее об осмотре"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr "Выберите фигуру, доску или группу, чтобы просмотреть свойства и код"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Код"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Круг"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Компонент"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Кривая"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Кадр"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Группа"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Изображение"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Маска"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "Выделено: %s"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Контур"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Прямоугольник"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Текст"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Информация"
@@ -1437,7 +1599,7 @@ msgstr "Токены доступа"
msgid "labels.active"
msgstr "Действующий"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Добавить произвольный шрифт"
@@ -1449,7 +1611,7 @@ msgstr "Администратор"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Все"
@@ -1469,7 +1631,7 @@ msgstr "Возможны технические работы. Пожалуйст
msgid "labels.bad-gateway.main-message"
msgstr "Bad Gateway"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Отмена"
@@ -1477,15 +1639,15 @@ msgstr "Отмена"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Закрыть"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Комментарии"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Сообщество"
@@ -1493,7 +1655,7 @@ msgstr "Сообщество"
msgid "labels.confirm-password"
msgstr "Подтвердите пароль"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Продолжить"
@@ -1509,7 +1671,7 @@ msgstr "Вы можете продолжить с аккаунтом Penpot"
msgid "labels.copy-invitation-link"
msgstr "Копировать ссылку"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Создать"
@@ -1529,15 +1691,15 @@ msgstr "Произвольные шрифты"
msgid "labels.dashboard"
msgstr "Панель управления"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Удалить"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Удалить комментарий"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Удалить обсуждение"
@@ -1557,15 +1719,15 @@ msgstr "Разработка"
msgid "labels.director"
msgstr "Директор"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "Отказаться"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Черновики"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Редактировать"
@@ -1585,7 +1747,7 @@ msgstr "Событие"
msgid "labels.expired-invitation"
msgstr "Истекло"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Экспорт"
@@ -1601,7 +1763,7 @@ msgstr "Отзыв отправлен"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Семейство шрифтов"
@@ -1609,11 +1771,11 @@ msgstr "Семейство шрифтов"
msgid "labels.font-providers"
msgstr "Поставщики шрифтов"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Начертания"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Шрифты"
@@ -1625,11 +1787,11 @@ msgstr "Генеральный директор или основатель"
msgid "labels.freelancer"
msgstr "Фрилансер"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Репозиторий на Github"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Оставить отзыв"
@@ -1641,11 +1803,11 @@ msgstr "Назад"
msgid "labels.graphic-design"
msgstr "Графический дизайн"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Помощь"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Скрыть решённые комментарии"
@@ -1653,7 +1815,7 @@ msgstr "Скрыть решённые комментарии"
msgid "labels.inactive"
msgstr "Недействующий"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Установленные шрифты"
@@ -1677,7 +1839,7 @@ msgstr "Приглашения"
msgid "labels.language"
msgstr "Язык"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Библиотеки и шаблоны"
@@ -1685,7 +1847,7 @@ msgstr "Библиотеки и шаблоны"
msgid "labels.log-or-sign"
msgstr "Войти или зарегистрироваться"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Выйти"
@@ -1705,13 +1867,15 @@ msgstr "Участники"
msgid "labels.new-password"
msgstr "Новый пароль"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Далее"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
-msgstr "Вы попались! Здесь будут появляться уведомления о новых комментариях."
+msgstr ""
+"Вы ничего не пропустили! Здесь будут появляться уведомления о новых "
+"комментариях."
#: src/app/main/ui/dashboard/team.cljs:740
msgid "labels.no-invitations"
@@ -1731,7 +1895,11 @@ msgstr "Эта страница не существует, или у вас не
msgid "labels.not-found.main-message"
msgstr "Ой!"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/settings/sidebar.cljs:99
+msgid "labels.notifications"
+msgstr "Уведомления"
+
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "Файл"
@@ -1802,7 +1970,7 @@ msgstr "Профиль"
msgid "labels.projects"
msgstr "Проекты"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Примечания к выпуску"
@@ -1820,7 +1988,7 @@ msgstr "Удалить"
msgid "labels.remove-member"
msgstr "Удалить участника"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Переименовать"
@@ -1840,15 +2008,15 @@ msgstr "Заново"
msgid "labels.role"
msgstr "Роль"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Сохранить"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "Поиск"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Искать шрифт"
@@ -1888,15 +2056,19 @@ msgstr "Поделиться ссылкой"
msgid "labels.shared-libraries"
msgstr "Библиотеки"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Все комментарии"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Показать список комментариев"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139
+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
msgid "labels.show-your-comments"
msgstr "Только мои"
@@ -1924,7 +2096,7 @@ msgstr "Руководитель группы"
msgid "labels.team-member"
msgstr "Член команды"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Руководства"
@@ -1940,15 +2112,15 @@ msgstr "Обновить"
msgid "labels.update-team"
msgstr "Обновить команду"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Загрузить"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Загрузить произвольные шрифты"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Загрузка…"
@@ -1964,7 +2136,7 @@ msgstr "Наблюдатель"
msgid "labels.webhooks"
msgstr "Вебхуки"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Написать комментарий"
@@ -1972,7 +2144,7 @@ msgstr "Написать комментарий"
msgid "labels.you"
msgstr "(вы)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Ваш аккаунт"
@@ -1980,23 +2152,23 @@ msgstr "Ваш аккаунт"
msgid "labels.youtube"
msgstr "YouTube"
-#: src/app/main/ui/workspace/colorpicker.cljs:477, src/app/main/ui/workspace/colorpicker.cljs:478, src/app/main/ui/workspace/colorpicker.cljs:480
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
msgid "media.choose-image"
msgstr "Выбрать изображение"
-#: src/app/main/ui/workspace/colorpicker.cljs:245
+#: src/app/main/ui/workspace/colorpicker.cljs:241
msgid "media.gradient"
msgstr "Градиент"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "Изображение"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:77
+#: src/app/main/ui/inspect/attributes/common.cljs:77
msgid "media.image.short"
msgstr "изобр."
-#: src/app/main/ui/workspace/colorpicker.cljs:470
+#: src/app/main/ui/workspace/colorpicker.cljs:467
msgid "media.keep-aspect-ratio"
msgstr "Сохранять соотношение сторон"
@@ -2014,7 +2186,7 @@ msgstr "Загрузка изображения…"
msgid "media.radial"
msgstr "Радиальный"
-#: src/app/main/ui/workspace/colorpicker.cljs:243
+#: src/app/main/ui/workspace/colorpicker.cljs:239
msgid "media.solid"
msgstr "Сплошной"
@@ -2065,7 +2237,7 @@ msgstr "Изменить эл. почту"
msgid "modals.change-email.title"
msgstr "Изменить эл. почту"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Копировать токен"
@@ -2081,7 +2253,7 @@ msgstr "Название"
msgid "modals.create-access-token.name.placeholder"
msgstr "Название может помочь понять, для чего предназначен токен"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Создать токен"
@@ -2105,15 +2277,15 @@ msgstr "Ссылка полезной нагрузки"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://пример.com/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Удалить токен"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "Вы уверены, что хотите удалить этот токен?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Удалить токен"
@@ -2127,31 +2299,31 @@ msgstr "Да, удалить мой аккаунт"
#: src/app/main/ui/settings/delete_account.cljs:53
msgid "modals.delete-account.info"
-msgstr "Удалив аккаунт Вы потеряете все прокты и архивы."
+msgstr "Удалив аккаунт, вы потеряете все свои текущие проекты и архивы."
#: src/app/main/ui/settings/delete_account.cljs:46
msgid "modals.delete-account.title"
msgstr "Вы уверены, что хотите удалить аккаунт?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Удалить переписку"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Вы уверены, что хотите удалить это обсуждение? Все комментарии, входящие в "
"него будут удалены."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Удалить обсуждение"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
msgid "modals.delete-component-annotation.message"
msgstr "Вы уверены, что хотите удалить эту аннотацию?"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Удалить аннотацию"
@@ -2179,31 +2351,31 @@ msgstr "Точно хотите удалить файлы (%s)?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Удаление файлов (%s)"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Вы действительно хотите удалить это начертание шрифта? Оно не будет "
"загружаться, если используется в файле."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Удаление начертания шрифта"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Вы действительно хотите удалить этот шрифт? Он не будет загружаться, если "
"используется в файле."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Удаление шрифта"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Вы уверены, что хотите удалить эту страницу?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Удаление страницы"
@@ -2411,15 +2583,15 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "Новый владелец команды"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Опубликовать"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
msgid "modals.publish-empty-library.message"
msgstr "Ваша библиотека пуста. Вы уверены, что хотите опубликовать её?"
-#: src/app/main/ui/workspace/libraries.cljs:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Опубликовать пустую библиотеку"
@@ -2474,24 +2646,30 @@ msgstr ""
msgid "modals.update-remote-component-in-bulk.message"
msgstr "Обновить компоненты в общей библиотеке"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Обновить"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Отменить"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
msgid "modals.update-remote-component.hint"
msgstr ""
"Вы собираетесь обновить компонент в общей библиотеке. Это может повлиять на "
"другие файлы, которые её используют."
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Обновить компонент в общей библиотеке"
+#: src/app/main/data/common.cljs:93
+msgid "notifications.by-code.maintenance"
+msgstr ""
+"Технический перерыв: сервис будет недоступен короткое время в течение 5 "
+"минут."
+
#: src/app/main/data/common.cljs:83
msgid "notifications.by-code.upgrade-version"
msgstr "Доступна новая версия, обновите страницу"
@@ -2547,28 +2725,28 @@ msgstr "Видеоуроки"
msgid "onboarding-v2.before-start.title"
msgstr "Прежде чем начать"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Подпишитесь на рассылку Penpot, чтобы всегда быть в курсе развития продукта "
"и новостей."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr "Присылайте мне новости о Penpot (записи в блоге, видеоуроки, стримы...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Мы заботимся о конфиденциальности, поэтому вы можете ознакомиться с "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Мы будем отправлять вам только актуальные электронные письма. Вы можете "
"отказаться от рассылки в любое время, воспользовавшись ссылкой \"Отказаться "
"от рассылки\" в любом из наших информационных бюллетеней."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr "Присылать мне обновления продукта (новые функции, выпуски, исправления...)."
@@ -2667,17 +2845,17 @@ msgstr "Вы сможете создать команду позже."
msgid "onboarding.newsletter.accept"
msgstr "Да, подписаться"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"Ваш запрос на подписку отправлен, мы вышлем вам электронное письмо для "
"подтверждения."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Политика конфиденциальности."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Хотите получать новости Penpot?"
@@ -2687,7 +2865,7 @@ msgstr "Давайте начнём!"
#: src/app/main/ui/onboarding/questions.cljs:94
msgid "onboarding.questions.reasons.alternative"
-msgstr "Ищу альтернативу Figma, XD и т.д."
+msgstr "Ищу альтернативу Figma, XD и т. д."
#: src/app/main/ui/onboarding/questions.cljs:88
msgid "onboarding.questions.reasons.exploring"
@@ -2858,7 +3036,7 @@ msgstr "Перейти к входу"
msgid "settings.detach"
msgstr "Отсоединить"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Смешаный"
@@ -3048,7 +3226,7 @@ msgstr "Создать новый"
msgid "shortcuts.cut"
msgstr "Вырезать"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Отдалить"
@@ -3148,7 +3326,7 @@ msgstr "Распределить горизонтально"
msgid "shortcuts.hide-ui"
msgstr "Показать/скрыть интерфейс"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Приблизить"
@@ -3528,15 +3706,15 @@ msgstr "Приблизить выбранное"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Поставщики шрифтов - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Шрифты - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Проекты - %s - Penpot"
@@ -3544,7 +3722,7 @@ msgstr "Проекты - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Поиск - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Общие библиотеки - %s - Penpot"
@@ -3552,7 +3730,7 @@ msgstr "Общие библиотеки - %s - Penpot"
msgid "title.default"
msgstr "Penpot — свобода в дизайне для команд"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "Профиль - токены доступа"
@@ -3560,6 +3738,10 @@ msgstr "Профиль - токены доступа"
msgid "title.settings.feedback"
msgstr "Оставить отзыв - Penpot"
+#: src/app/main/ui/settings/notifications.cljs:45
+msgid "title.settings.notifications"
+msgstr "Уведомления - Penpot"
+
#: src/app/main/ui/settings/options.cljs:76
msgid "title.settings.options"
msgstr "Настройки - Penpot"
@@ -3592,7 +3774,7 @@ msgstr "Вебхуки - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Режим просмотра - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -3697,15 +3879,15 @@ msgstr "Выровнять по верхнему краю (%s)"
msgid "workspace.assets.assets"
msgstr "Ресурсы"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Все ресурсы"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Цвета"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Компоненты"
@@ -3719,15 +3901,15 @@ msgstr ""
"Вашим элементам будет автоматически присвоено название «название "
"группы/название элемента»"
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Удалить"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Дублировать"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "Дублировать главное"
@@ -3735,15 +3917,15 @@ msgstr "Дублировать главное"
msgid "workspace.assets.edit"
msgstr "Редактировать"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:195
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
msgid "workspace.assets.filter"
msgstr "Фильтр"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Графика"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Группа"
@@ -3751,23 +3933,19 @@ msgstr "Группа"
msgid "workspace.assets.group-name"
msgstr "Имя группы"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Библиотеки"
-
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "локальная библиотека"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Ресурсы не найдены"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "Открыть файл библиотеки"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Переименовать"
@@ -3775,7 +3953,7 @@ msgstr "Переименовать"
msgid "workspace.assets.rename-group"
msgstr "Переименовать группу"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Поиск ресурсов"
@@ -3791,17 +3969,17 @@ msgstr[1] "Выбраны ресурсы (%s)"
msgid "workspace.assets.shared-library"
msgstr "Общая библиотека"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:226
+#: 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:211
+#: src/app/main/ui/workspace/sidebar/assets.cljs:201
msgid "workspace.assets.sort"
msgstr "Сортировка"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Типографика"
@@ -3810,27 +3988,27 @@ msgstr "Типографика"
msgid "workspace.assets.typography.font-id"
msgstr "Шрифт"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Размер"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Начертание"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Перейти к файлу библиотеки стилей для редактирования"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Кернинг"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Интерлиньяж"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -3838,7 +4016,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Стиль текста"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Регистр"
@@ -3846,55 +4024,55 @@ msgstr "Регистр"
msgid "workspace.assets.ungroup"
msgstr "Разгруппировать"
-#: src/app/main/ui/workspace/context_menu.cljs:748
+#: src/app/main/ui/workspace/context_menu.cljs:764
msgid "workspace.context-menu.grid-cells.area"
msgstr "Создать область"
-#: src/app/main/ui/workspace/context_menu.cljs:751
+#: src/app/main/ui/workspace/context_menu.cljs:767
msgid "workspace.context-menu.grid-cells.create-board"
msgstr "Создать доску"
-#: src/app/main/ui/workspace/context_menu.cljs:743
+#: src/app/main/ui/workspace/context_menu.cljs:759
msgid "workspace.context-menu.grid-cells.merge"
msgstr "Объединить ячейки"
-#: src/app/main/ui/workspace/context_menu.cljs:706
+#: src/app/main/ui/workspace/context_menu.cljs:722
msgid "workspace.context-menu.grid-track.column.add-after"
msgstr "Добавить 1 столбец справа"
-#: src/app/main/ui/workspace/context_menu.cljs:705
+#: src/app/main/ui/workspace/context_menu.cljs:721
msgid "workspace.context-menu.grid-track.column.add-before"
msgstr "Добавить 1 столбец слева"
-#: src/app/main/ui/workspace/context_menu.cljs:707
+#: src/app/main/ui/workspace/context_menu.cljs:723
msgid "workspace.context-menu.grid-track.column.delete"
msgstr "Удалить столбец"
-#: src/app/main/ui/workspace/context_menu.cljs:708
+#: src/app/main/ui/workspace/context_menu.cljs:724
msgid "workspace.context-menu.grid-track.column.delete-shapes"
msgstr "Удалить столбец и фигуры"
-#: src/app/main/ui/workspace/context_menu.cljs:704
+#: src/app/main/ui/workspace/context_menu.cljs:720
msgid "workspace.context-menu.grid-track.column.duplicate"
msgstr "Дублировать столбец"
-#: src/app/main/ui/workspace/context_menu.cljs:713
+#: src/app/main/ui/workspace/context_menu.cljs:729
msgid "workspace.context-menu.grid-track.row.add-after"
msgstr "Добавить 1 строку ниже"
-#: src/app/main/ui/workspace/context_menu.cljs:712
+#: src/app/main/ui/workspace/context_menu.cljs:728
msgid "workspace.context-menu.grid-track.row.add-before"
msgstr "Добавить 1 строку выше"
-#: src/app/main/ui/workspace/context_menu.cljs:714
+#: src/app/main/ui/workspace/context_menu.cljs:730
msgid "workspace.context-menu.grid-track.row.delete"
msgstr "Удалить строку"
-#: src/app/main/ui/workspace/context_menu.cljs:715
+#: src/app/main/ui/workspace/context_menu.cljs:731
msgid "workspace.context-menu.grid-track.row.delete-shapes"
msgstr "Удалить строку и фигуры"
-#: src/app/main/ui/workspace/context_menu.cljs:711
+#: src/app/main/ui/workspace/context_menu.cljs:727
msgid "workspace.context-menu.grid-track.row.duplicate"
msgstr "Дублировать строку"
@@ -3902,11 +4080,11 @@ msgstr "Дублировать строку"
msgid "workspace.focus.focus-mode"
msgstr "Режим фокусировки"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Фокусировка выключена"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Фокусировка включена"
@@ -4008,6 +4186,10 @@ msgstr "Файл"
msgid "workspace.header.menu.option.help-info"
msgstr "Помощь и информация"
+#: src/app/main/ui/workspace/main_menu.cljs:910
+msgid "workspace.header.menu.option.power-up"
+msgstr "Расширьте свой план"
+
#: src/app/main/ui/workspace/main_menu.cljs:877
msgid "workspace.header.menu.option.preferences"
msgstr "Предпочтения"
@@ -4060,33 +4242,32 @@ msgstr "Переключить на светлую тему"
msgid "workspace.header.menu.undo"
msgstr "Отменить"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Сброс"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Ошибка при сохранении"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Сохранено"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Сохранение"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Есть несохранённые изменения"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "Открыть предпросмотр (%s)"
-#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "Масштаб"
@@ -4098,7 +4279,7 @@ msgstr "Заполнение - Масштаб заполнения"
msgid "workspace.header.zoom-fit"
msgstr "Подогнать - масштабировать до необходимого размера"
-#: src/app/main/ui/workspace/right_header.cljs:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Масштабировать, чтобы всё вместилось"
@@ -4106,19 +4287,19 @@ msgstr "Масштабировать, чтобы всё вместилось"
msgid "workspace.header.zoom-full-screen"
msgstr "На весь экран"
-#: src/app/main/ui/workspace/right_header.cljs:136
+#: src/app/main/ui/workspace/right_header.cljs:104
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:607
+#: 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:616
msgid "workspace.layout_grid.editor.options.edit-grid"
msgstr "Изменить сетку"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
msgid "workspace.layout_grid.editor.options.exit"
msgstr "Выход"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:478
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
msgid "workspace.layout_grid.editor.padding.expand"
msgstr "Настроить внутренний отступ по отдельности"
@@ -4134,7 +4315,7 @@ msgstr "Готово"
msgid "workspace.layout_grid.editor.top-bar.locate"
msgstr "Разместить"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1321
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
msgstr "Размещение макета сетки"
@@ -4143,7 +4324,7 @@ msgstr "Размещение макета сетки"
msgid "workspace.libraries.add"
msgstr "Добавить"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s цветов"
@@ -4173,31 +4354,31 @@ msgstr "Недавние цвета"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "Дополнительный цвет RGB"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Сохранить стиль цвета"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Библиотека файлов"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "БИБЛИОТЕКИ В ЭТОМ ФАЙЛЕ"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "БИБЛИОТЕКИ"
@@ -4206,63 +4387,59 @@ msgstr "БИБЛИОТЕКИ"
msgid "workspace.libraries.library"
msgstr "БИБЛИОТЕКА"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "ОБНОВЛЕНИЯ БИБЛИОТЕКИ"
-#: src/app/main/ui/workspace/libraries.cljs:363
+#: src/app/main/ui/workspace/libraries.cljs:360
msgid "workspace.libraries.loading"
msgstr "Загрузка…"
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "Нет общих библиотек, требующих обновления"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Совпадений для \"%s\" не найдено"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Общие библиотеки отсутсвуют"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Искать общие библиотеки"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "ОБЩИЕ БИБЛИОТЕКИ"
-#: src/app/main/ui/workspace/libraries.cljs:355
+#: src/app/main/ui/workspace/libraries.cljs:352
msgid "workspace.libraries.shared-library-btn"
msgstr "Подключить библиотеку"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Несколько типографик"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Отвязать все типографики"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:326
+#: src/app/main/ui/workspace/libraries.cljs:323
msgid "workspace.libraries.unlink-library-btn"
msgstr "Отключить библиотеку"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Обновить"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "смотреть все изменения"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "ОБНОВЛЕНИЯ"
@@ -4282,43 +4459,43 @@ msgstr "Групповое размытие"
msgid "workspace.options.blur-options.title.multiple"
msgstr "Выборка размытия"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Фон холста"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Зажать содержимое"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Компонент"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "Аннотация"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "Копировать"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "Создать аннотацию"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Изменить аннотацию"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Главный"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:416
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
msgid "workspace.options.component.swap"
msgstr "Заменить компонент"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:460
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
msgid "workspace.options.component.swap.empty"
msgstr "В этой библиотеке ещё нет ресурсов"
@@ -4366,7 +4543,7 @@ msgstr "Верх и низ"
msgid "workspace.options.design"
msgstr "Дизайн"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Экспорт"
@@ -4375,13 +4552,13 @@ msgstr "Экспорт"
msgid "workspace.options.export-multiple"
msgstr "Экспорт выбранного"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
msgid "workspace.options.export-object"
msgid_plural "workspace.options.export-object"
msgstr[0] "Экспорт 1 элемента"
msgstr[1] "Экспорт %s элементов"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Суффикс"
@@ -4389,7 +4566,7 @@ msgstr "Суффикс"
msgid "workspace.options.exporting-complete"
msgstr "Экспорт завершён"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Экспортирование…"
@@ -4527,7 +4704,7 @@ msgstr "Обводка для группы"
msgid "workspace.options.guides.title"
msgstr "Направляющие"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Высота"
@@ -4837,19 +5014,19 @@ msgstr "Выделенные слои"
msgid "workspace.options.layout-item.advanced-ops"
msgstr "Дополнительные параметры"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Макс. высота"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Макс. ширина"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Мин. высота"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Мин. ширина"
@@ -4963,11 +5140,11 @@ msgstr "пространство между"
msgid "workspace.options.layout.top"
msgstr "Сверху"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Больше цветов"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Больше цветов библиотеки"
@@ -5004,7 +5181,7 @@ msgstr "Сверху слева"
msgid "workspace.options.radius-top-right"
msgstr "Сверху справа"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Последние"
@@ -5012,11 +5189,11 @@ msgstr "Последние"
msgid "workspace.options.retry"
msgstr "Повторить"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Вращение"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Искать шрифт"
@@ -5024,7 +5201,7 @@ msgstr "Искать шрифт"
msgid "workspace.options.select-a-shape"
msgstr "Выберите фигуру, кадр или группу для соединения с другим кадром."
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Выбранные цвета"
@@ -5036,43 +5213,43 @@ msgstr "Заливка выбранного"
msgid "workspace.options.selection-stroke"
msgstr "Обводка выбранного"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Размытие"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Цвет тени"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Отбрасывание тени"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Внутренняя тень"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Распространение"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Тень"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Групповая тень"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Выборочные тени"
@@ -5080,7 +5257,7 @@ msgstr "Выборочные тени"
msgid "workspace.options.show-fill-on-export"
msgstr "Показать в экспорте"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Показать в режиме просмотра"
@@ -5088,7 +5265,7 @@ msgstr "Показать в режиме просмотра"
msgid "workspace.options.size"
msgstr "Размер"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Предустановки размеров"
@@ -5157,7 +5334,7 @@ msgstr "Треугольник"
msgid "workspace.options.stroke-color"
msgstr "Цвет обводки"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Толщина обводки"
@@ -5221,11 +5398,11 @@ msgstr "Автоширина"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Фиксированно"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Межсимвольный интервал"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Высота строки"
@@ -5289,15 +5466,15 @@ msgstr "Верхний регистр"
msgid "workspace.options.use-play-button"
msgstr "Нажмите кнопку воспроизведения вверху для показа прототипа."
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Ширина"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "Ось X"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Ось Y"
@@ -5345,13 +5522,22 @@ msgstr "Прилипать узлами (%s)"
msgid "workspace.plugins.button-open"
msgstr "Открыть"
+#: src/app/main/ui/workspace/plugins.cljs:202
+#, markdown
+msgid "workspace.plugins.discover"
+msgstr "Откройте для себя [больше плагинов](%s)"
+
#: src/app/main/ui/workspace/plugins.cljs:209
msgid "workspace.plugins.empty-plugins"
msgstr "Плагины ещё не установлены"
+#: src/app/main/ui/workspace/plugins.cljs:196
+msgid "workspace.plugins.error.manifest"
+msgstr "Манифест плагина неверен."
+
#: src/app/main/ui/workspace/plugins.cljs:192
msgid "workspace.plugins.error.url"
-msgstr "Плагин не существует или его URL неверен."
+msgstr "Плагин не существует или его URL-адрес неверен."
#: src/app/main/ui/workspace/plugins.cljs:188
msgid "workspace.plugins.install"
@@ -5385,99 +5571,99 @@ msgstr "Плагин загружен правильно."
msgid "workspace.plugins.title"
msgstr "Плагины"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Добавить макет гибкости"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "Добавить макет сетки"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "На задний план"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Перенести назад"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Скопировать"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "Создать аннотацию"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Выделенное в кадр"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Создать компонент"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Создать несколько компонентов"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Вырезать"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Удалить"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Удалить начало потока"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Отсоединить экземпляр"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Отсоединить экземпляры"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Разница"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Дублировать"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Редактировать"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Исключить"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Flatten"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Отразить по горизонтали"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Отразить по вертикали"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Начало потока"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Перенести вперёд"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "На передний план"
@@ -5486,95 +5672,95 @@ msgstr "На передний план"
msgid "workspace.shape.menu.go-main"
msgstr "Перейти к основному файлу компонента"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Группа"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Скрыть"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Показать/скрыть UI"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Пересечь"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Заблокировать"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Маска"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Вставить"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Контур"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Удалить макет гибкости"
-#: src/app/main/ui/workspace/context_menu.cljs:531
+#: src/app/main/ui/workspace/context_menu.cljs:535
msgid "workspace.shape.menu.remove-grid"
msgstr "Удалить макет сетки"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Сбросить переопределения"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Восстановить основной компонент"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Выбрать слой"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Показать"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Показать на панели ресурсов"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Показать основной компонент"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Удалить миниатюру"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Сделать миниатюрой"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Преобразовать в контур"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Разгруппировать"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Суммировать"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Paзблокировать"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Убрать маску"
@@ -5583,7 +5769,7 @@ msgstr "Убрать маску"
msgid "workspace.shape.menu.update-components-in-bulk"
msgstr "Обновить основные компоненты"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Обновить основной компонент"
@@ -5595,11 +5781,11 @@ msgstr "Свернуть боковую панель"
msgid "workspace.sidebar.expand"
msgstr "Расширить боковую панель"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "История"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Слои"
@@ -5635,7 +5821,7 @@ msgstr "Формы"
msgid "workspace.sidebar.layers.texts"
msgstr "Тексты"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Импортированные атрибуты SVG"
@@ -5643,11 +5829,15 @@ msgstr "Импортированные атрибуты SVG"
msgid "workspace.sidebar.sitemap"
msgstr "Страницы"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Карта сайта"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:240
+msgid "workspace.token.save-theme"
+msgstr "Сохранить тему"
+
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Ресурсы"
@@ -5655,35 +5845,35 @@ msgstr "Ресурсы"
msgid "workspace.toolbar.color-palette"
msgstr "Палитра цветов (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Комментарии (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Кривая (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Эллипс (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Кадр (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Изображение (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Перемещение (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Контур (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Прямоугольник (%s)"
@@ -5692,7 +5882,7 @@ msgstr "Прямоугольник (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Сочетание клавиш (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Текст (%s)"
@@ -5700,7 +5890,7 @@ msgstr "Текст (%s)"
msgid "workspace.toolbar.text-palette"
msgstr "Типографики (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:220, src/app/main/ui/workspace/top_toolbar.cljs:221
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
msgid "workspace.toolbar.toggle-toolbar"
msgstr "Переключить панель инструментов"
@@ -5711,7 +5901,7 @@ msgstr "Готово"
#: src/app/main/ui/workspace/viewport/top_bar.cljs:36
#, markdown
msgid "workspace.top-bar.view-only"
-msgstr "**Осмотр кода** (Только просмотр)"
+msgstr "**Проверка кода** (Только просмотр)"
#: src/app/main/ui/workspace/sidebar/history.cljs:331
msgid "workspace.undo.empty"
@@ -5858,22 +6048,45 @@ msgstr "Работа над %s"
msgid "workspace.undo.title"
msgstr "История"
-#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Отклонить"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
msgid "workspace.updates.more-info"
msgstr "Дополнительная информация"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
msgid "workspace.updates.there-are-updates"
msgstr "Обнаружены обновления общих библиотек"
-#: src/app/main/data/workspace/libraries.cljs:1225
+#: src/app/main/data/workspace/libraries.cljs:1226
msgid "workspace.updates.update"
msgstr "Обновить"
+#: src/app/main/ui/workspace/sidebar/versions.cljs:327, src/app/main/ui/workspace/sidebar/versions.cljs:329
+msgid "workspace.versions.button.save"
+msgstr "Сохранить версию"
+
+#: src/app/main/ui/workspace/sidebar.cljs:285
+msgid "workspace.versions.tab.actions"
+msgstr "Действия"
+
+#: src/app/main/ui/workspace/sidebar.cljs:282
+msgid "workspace.versions.tab.history"
+msgstr "История"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:365
+#, markdown
+msgid "workspace.versions.warning.subtext"
+msgstr ""
+"Если вы хотите увеличить этот лимит, напишите нам на "
+"[support@penpot.app](%s)"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:361
+msgid "workspace.versions.warning.text"
+msgstr "Автосохранённые версии будут храниться в течение %s дней."
+
#, unused
msgid "workspace.viewport.click-to-close-path"
msgstr "Нажмите для замыкания контура"
diff --git a/frontend/translations/sr.po b/frontend/translations/sr.po
index afc0f1a8a5..6a21400a05 100644
--- a/frontend/translations/sr.po
+++ b/frontend/translations/sr.po
@@ -39,13 +39,13 @@ msgstr "Креирајте демо налог"
msgid "auth.create-demo-profile"
msgstr "Само желите да пробате?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Ово је ДЕМО услуга, НЕ КОРИСТИТЕ за прави рад, пројекти ће се повремено "
"брисати."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Заборављена лозинка?"
@@ -53,7 +53,7 @@ msgstr "Заборављена лозинка?"
msgid "auth.fullname"
msgstr "Пуно име"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "Пријавите се на свој налог"
@@ -61,31 +61,31 @@ msgstr "Пријавите се на свој налог"
msgid "auth.login-here"
msgstr "Пријавите се овде."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Пријава"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr "Penpot је бесплатан алат отвореног кода за сарадњу у дизајну и програмирању"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -109,7 +109,7 @@ msgstr "Линк за опоравак лозинке је послат у Ва
msgid "auth.notifications.team-invitation-accepted"
msgstr "Успешно придружење тиму"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Лозинка"
@@ -137,7 +137,7 @@ msgstr "Заборавили сте лозинку?"
msgid "auth.recovery-submit"
msgstr "Промените своју лозинку"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Још немате налог?"
@@ -149,7 +149,7 @@ msgstr "Како желите да Вас ословљавамо на управ
msgid "auth.register-account-title"
msgstr "Ваше име"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Креирајте налог"
@@ -174,7 +174,7 @@ msgstr "Решење отвореног кода за дизајн и израд
msgid "auth.terms-and-privacy-agreement"
msgstr "Слажем се са [условима коришћења](%s) и [политиком приватности](%s)."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Услови коришћења"
@@ -188,7 +188,7 @@ msgstr ""
msgid "auth.verification-email-sent"
msgstr "Послали смо потврдно е-писмо на"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "Радна е-пошта"
@@ -197,7 +197,7 @@ msgstr "Радна е-пошта"
msgid "branding-illustrations-marketing-pieces"
msgstr "...брендирање, илустрације, маркетиншки комади, итд."
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Објави"
@@ -270,7 +270,7 @@ msgstr "Дели прототипе"
msgid "common.share-link.view-all"
msgstr "Изабери све"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Опозови објављивање"
@@ -322,7 +322,7 @@ msgstr "Упознавање са интерфејсом"
msgid "dashboard.access-tokens.copied-success"
msgstr "Токен је копиран"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Генеришите нови токен"
@@ -330,11 +330,11 @@ msgstr "Генеришите нови токен"
msgid "dashboard.access-tokens.create.success"
msgstr "Приступни токен је успешно креиран."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Притисните дугме \"Генеришите нови токен\" да бисте генерисали један."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "До сада немате никакве токене."
@@ -358,23 +358,23 @@ msgstr "90 дана"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Никад"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Истекао на %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Истиче на %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Без датума истека"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Лични токени за приступ"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Лични токени за приступ функционишу као алтернатива нашем систему "
@@ -397,7 +397,7 @@ msgstr "Додај као дељену библиотеку"
msgid "dashboard.change-email"
msgstr "Промените е-пошту"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(копија)"
@@ -519,26 +519,26 @@ msgstr "Укључите средства дељених библиотека у
msgid "dashboard.export.title"
msgstr "Извези датотеке"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Недостаје фонт"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Одбаци све"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Овде ће се појавити прилагођени фонтови које отпремите."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "фонт додат"
msgstr[1] "%s фонта додато"
msgstr[2] "%s фонтова додато"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -547,20 +547,20 @@ msgstr ""
"фонта биће груписани као **једна породица фонта**. Можете отпремити фонтове "
"у следећим форматима: **TTF, OTF и WOFF** (довољан је само један)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Требало би да отпремате само фонтове које поседујете или за које имате "
"лиценцу за коришћење у Penpot-у. Сазнајте више у одељку о правима садржаја "
-"у [Условима коришћења Penpot-а](%s). Такође, "
-"можете прочитати о [лиценцирању фонтовa](https://www.typography.com/faq)."
+"у [Условима коришћења Penpot-а](%s). Такође, можете прочитати о "
+"[лиценцирању фонтовa](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Отпреми све"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -571,7 +571,7 @@ msgstr ""
"коришћење [Transfonter](https://transfonter.org/) за генерисање веб фонтовa "
"и исправљање грешака. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Увези Penpot датотеке"
@@ -589,14 +589,14 @@ msgstr ""
msgid "dashboard.import.import-error"
msgstr "Дошло је до проблема при увозу датотеке. Датотека није увезена."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgid_plural "dashboard.import.import-message"
msgstr[0] "%s датотека је успешно увезена."
msgstr[1] "%s датотеке су успешно увезене."
msgstr[2] "%s датотека успешно увезено."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Неке датотеке су садржале неважеће објекте који су уклоњени."
@@ -636,27 +636,27 @@ msgstr "Позовите људе"
msgid "dashboard.leave-team"
msgstr "Напустите тим"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Библиотеке и шаблони"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "Истражите више њих и знајте како да допринесете"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "Дошло је до проблема при увозу шаблона. Шаблон није увезен."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Библиотеке"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "учитавање ваших датотека…"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "учитавање ваших фонтова…"
@@ -672,11 +672,11 @@ msgstr "Премести %s датотека у"
msgid "dashboard.move-to-other-team"
msgstr "Премести у други тим"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Нова датотека"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Нова датотека"
@@ -684,7 +684,7 @@ msgstr "Нова датотека"
msgid "dashboard.new-project"
msgstr "+ Нови пројекат"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Нови пројекат"
@@ -716,7 +716,7 @@ msgstr "%s чланова"
msgid "dashboard.open-in-new-tab"
msgstr "Отворите датотеку у новој картици"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Опције"
@@ -761,7 +761,7 @@ msgstr "Изаберите језик корисничког интерфејс
msgid "dashboard.select-ui-theme"
msgstr "Изаберите тему"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Прикажи све датотеке"
@@ -787,7 +787,7 @@ msgstr[2] "Ваше датотеке су успешно дуплиране"
msgid "dashboard.success-duplicate-project"
msgstr "Ваш пројекат је успешно дуплиран"
-#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Ваша датотека је успешно премештена"
@@ -882,7 +882,7 @@ msgstr "Е-пошта"
msgid "dashboard.your-name"
msgstr "Ваше име"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Ваш Penpot"
@@ -898,11 +898,11 @@ msgstr "Пажња"
msgid "ds.component-subtitle"
msgstr "Компоненте за ажурирање:"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Откажите"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Уреду"
@@ -914,7 +914,7 @@ msgstr "Да ли сте сигурни?"
msgid "errors.auth-provider-not-allowed"
msgstr "Провајдер ауторизације није дозвољен за овај налог"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Провајдер аутентификације није конфигурисан."
@@ -922,11 +922,11 @@ msgstr "Провајдер аутентификације није конфиг
msgid "errors.auth.unable-to-login"
msgstr "Изгледа да нисте аутентификовани или је сесија истекла."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "Фонт %s није могао бити учитан"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "Фонтови %s нису могли бити учитани"
@@ -934,7 +934,7 @@ msgstr "Фонтови %s нису могли бити учитани"
msgid "errors.cannot-upload"
msgstr "Није могуће отпремити медијску датотеку."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Ваш претраживач не може да одради ову операцију"
@@ -946,7 +946,7 @@ msgstr "Е-пошта је већ коришћена"
msgid "errors.email-already-validated"
msgstr "Е-пошта је већ потврђена."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Не можете да користите своју е-пошту као лозинку"
@@ -979,7 +979,7 @@ msgstr ""
"датотеке коју покушавате да отворите. Миграције за \"%s\" морају бити "
"примењене пре него што се датотека може отворити."
-#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Нешто погрешно се десило."
@@ -995,7 +995,7 @@ msgstr "Позив је неважећи"
msgid "errors.invite-invalid.info"
msgstr "Ова позивница је можда отказана или истекла."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "LDAP аутентификација је онемогућена."
@@ -1035,7 +1035,7 @@ msgstr "Лозинка треба да има најмање 8 знакова"
msgid "errors.paste-data-validation"
msgstr "Неважећи подаци у међуспремнику"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Налог је блокиран"
@@ -1109,12 +1109,11 @@ msgstr "Неочекивана грешка при валидацији"
msgid "errors.webhooks.unexpected-status"
msgstr "Неочекивани статус %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "Е-пошта или лозинка су нетачни."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Стара лозинка је нетачна"
@@ -1162,11 +1161,11 @@ msgstr "Овде смо да помогнемо са вашим технички
msgid "feedback.twitter-title"
msgstr "X налог за подршку"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Дошло је до грешке"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Замућење"
@@ -1174,31 +1173,31 @@ msgstr "Замућење"
msgid "inspect.attributes.blur.value"
msgstr "Вредност"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Попуњење"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Преузмите изворну слику"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Висина"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Ширина"
@@ -1237,15 +1236,15 @@ msgstr "Врх"
msgid "inspect.attributes.layout.width"
msgstr "Ширина"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Сенка"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Величина и положај"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Контура"
@@ -1282,141 +1281,141 @@ msgstr "Чврсто"
msgid "inspect.attributes.stroke.width"
msgstr "Ширина"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Типографија"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Породица фонта"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Величина фонта"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Стил фонта"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Тежина фонта"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Размак између слова"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Висина линије"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Декорација текста"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Ништа"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Прелазна линија"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Подвачење"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Трансформација текста"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Мала слова"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Ништа"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Насловно слово"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "Без вредности"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Велико слово"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr ""
"Ако желите да сазнате више о прегледу дизајна, посетите Помоћни центар "
"Penpot-а"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Више информација о прегледу"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr "Изаберите облик, таблу или групу да бисте прегледали њихова својства и код"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Код"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Круг"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Компонента"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Кривина"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Табла"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Група"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Слика"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Маска"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s Изабрано"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Путања"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Правоугаоник"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Текст"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Инфо"
@@ -1436,7 +1435,7 @@ msgstr "Токени за приступ"
msgid "labels.active"
msgstr "Активно"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Додај прилагођени фонт"
@@ -1448,7 +1447,7 @@ msgstr "Админ"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Све"
@@ -1470,7 +1469,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Лош Gateway"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Откажите"
@@ -1478,15 +1477,15 @@ msgstr "Откажите"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Затвори"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Коментари"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Заједница"
@@ -1494,7 +1493,7 @@ msgstr "Заједница"
msgid "labels.confirm-password"
msgstr "Потврди лозинку"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Настави"
@@ -1510,7 +1509,7 @@ msgstr "Можете наставити са Penpot налогом"
msgid "labels.copy-invitation-link"
msgstr "Копирај везу"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Створи"
@@ -1530,15 +1529,15 @@ msgstr "Прилагођени фонтови"
msgid "labels.dashboard"
msgstr "Управљачка табла"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Избришите"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Избришите коментар"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Избришите дискусију"
@@ -1558,15 +1557,15 @@ msgstr "Развој"
msgid "labels.director"
msgstr "Директор"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "Одбаци"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Нацрти"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Уреди"
@@ -1586,7 +1585,7 @@ msgstr "Догађај"
msgid "labels.expired-invitation"
msgstr "Истекло"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Извези"
@@ -1602,7 +1601,7 @@ msgstr "Повратне информације су послате"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Породица фонта"
@@ -1610,11 +1609,11 @@ msgstr "Породица фонта"
msgid "labels.font-providers"
msgstr "Добављачи фонтова"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Стилови"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Фонтови"
@@ -1626,11 +1625,11 @@ msgstr "Извршни директор или оснивач"
msgid "labels.freelancer"
msgstr "Фриленсер"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Github репозиторијум"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Оставите повратне информације"
@@ -1642,11 +1641,11 @@ msgstr "Иди назад"
msgid "labels.graphic-design"
msgstr "Графички дизајн"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Центар за помоћ"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Сакриј решене коментаре"
@@ -1654,7 +1653,7 @@ msgstr "Сакриј решене коментаре"
msgid "labels.inactive"
msgstr "Неактиван"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Инсталирани фонтови"
@@ -1680,7 +1679,7 @@ msgstr "Позивнице"
msgid "labels.language"
msgstr "Језик"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Библиотеке и шаблони"
@@ -1688,7 +1687,7 @@ msgstr "Библиотеке и шаблони"
msgid "labels.log-or-sign"
msgstr "Пријава или регистрација"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Одјава"
@@ -1708,11 +1707,11 @@ msgstr "Чланови"
msgid "labels.new-password"
msgstr "Нова лозинка"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Даље"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "Све сте прегледали! Нова обавештења о коментарима ће се појавити овде."
@@ -1734,7 +1733,7 @@ msgstr "Ова страница можда не постоји или немат
msgid "labels.not-found.main-message"
msgstr "Упс!"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "датотека"
@@ -1808,7 +1807,7 @@ msgstr "Налог"
msgid "labels.projects"
msgstr "Пројекти"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Напомене о издању"
@@ -1826,7 +1825,7 @@ msgstr "Уколни"
msgid "labels.remove-member"
msgstr "Уклони члана"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Преименуј"
@@ -1846,15 +1845,15 @@ msgstr "Покушај поново"
msgid "labels.role"
msgstr "Улога"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Сачувај"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "Претражи"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Претражи фонт"
@@ -1894,15 +1893,15 @@ msgstr "Дели прототип"
msgid "labels.shared-libraries"
msgstr "Библиотеке"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Прикажи све коментаре"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Прикажи листу кометара"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Покажите само своје коментаре"
@@ -1930,7 +1929,7 @@ msgstr "Вођа тима"
msgid "labels.team-member"
msgstr "Члан тима"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Туторијали"
@@ -1946,15 +1945,15 @@ msgstr "Ажурирајте"
msgid "labels.update-team"
msgstr "Ажурирајте тим"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Отпреми"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Отпреми прилагођене фонтове"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Отпремање…"
@@ -1970,7 +1969,7 @@ msgstr "Прегледник"
msgid "labels.webhooks"
msgstr "Веб-куке"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Напиши нови коментар"
@@ -1978,7 +1977,7 @@ msgstr "Напиши нови коментар"
msgid "labels.you"
msgstr "(ти)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Ваш налог"
@@ -1986,23 +1985,23 @@ msgstr "Ваш налог"
msgid "labels.youtube"
msgstr "YouTube"
-#: src/app/main/ui/workspace/colorpicker.cljs:477, src/app/main/ui/workspace/colorpicker.cljs:478, src/app/main/ui/workspace/colorpicker.cljs:480
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
msgid "media.choose-image"
msgstr "Изаберите слику"
-#: src/app/main/ui/workspace/colorpicker.cljs:245
+#: src/app/main/ui/workspace/colorpicker.cljs:241
msgid "media.gradient"
msgstr "Градијент"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "Слика"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:77
+#: src/app/main/ui/inspect/attributes/common.cljs:77
msgid "media.image.short"
msgstr "img"
-#: src/app/main/ui/workspace/colorpicker.cljs:470
+#: src/app/main/ui/workspace/colorpicker.cljs:467
msgid "media.keep-aspect-ratio"
msgstr "Задржите однос ширине и висине"
@@ -2020,7 +2019,7 @@ msgstr "Учитавање слике…"
msgid "media.radial"
msgstr "Радијалан"
-#: src/app/main/ui/workspace/colorpicker.cljs:243
+#: src/app/main/ui/workspace/colorpicker.cljs:239
msgid "media.solid"
msgstr "Чврст"
@@ -2071,7 +2070,7 @@ msgstr "Промените е-пошту"
msgid "modals.change-email.title"
msgstr "Промените своју е-пошту"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Копирај токен"
@@ -2087,7 +2086,7 @@ msgstr "Назив"
msgid "modals.create-access-token.name.placeholder"
msgstr "Назив може помоћи да сазнате чему служи токен"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Направи токен"
@@ -2111,15 +2110,15 @@ msgstr "URL оптерећења"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://example.com/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Избришите токен"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "Да ли сте сигурни да желите да избришете овај токен?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Избришите токен"
@@ -2139,25 +2138,25 @@ msgstr "Уклањањем налога изгубићете све своје
msgid "modals.delete-account.title"
msgstr "Да ли сте сигурни да желите да избришете свој налог?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Избришите разговор"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Да ли сте сигурни да желите да обришете овај разговор? Сви коментари у овој "
"нити биће обрисани."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Избришите разговор"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
msgid "modals.delete-component-annotation.message"
msgstr "Да ли сте сигурни да желите да избришете ову напомену?"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Избришите напомену"
@@ -2185,31 +2184,31 @@ msgstr "Да ли сте сигурни да желите да обришете
msgid "modals.delete-file-multi-confirm.title"
msgstr "Брисање %s датотека"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Да ли сте сигурни да желите да избришете овај стил фонта? Неће се учитати "
"ако се користи у датотеци."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Брисање стила фонта"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Да ли сте сигурни да желите да избришете овај фонт? Неће се учитати ако се "
"користи у датотеци."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Брисање фонта"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Да ли сте сигурни да желите да обришете ову страницу?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Избришите страницу"
@@ -2428,15 +2427,15 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "Нови власник тима"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Објавите"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
msgid "modals.publish-empty-library.message"
msgstr "Ваша библиотека је празна. Да ли сте сигурни да желите да је објавите?"
-#: src/app/main/ui/workspace/libraries.cljs:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Објавите празну библиотеку"
@@ -2494,21 +2493,21 @@ msgstr ""
msgid "modals.update-remote-component-in-bulk.message"
msgstr "Ажурирајте компоненте у дељеној библиотеци"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Ажурирајте"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Откажите"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
msgid "modals.update-remote-component.hint"
msgstr ""
"Управо ћете ажурирати компоненту у дељеној библиотеци. Ово може утицати на "
"друге датотеке које га користе."
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Ажурирајте компоненту у дељеној библиотеци"
@@ -2568,29 +2567,29 @@ msgstr "Видео туторијали"
msgid "onboarding-v2.before-start.title"
msgstr "Пре него што почнете"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Претплатите се на Penpot билтен како бисте били у току са напретком у "
"развоју производа и новостима."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr ""
"Шаљи ми вести о Penpot-у (објаве на блогу, видео туторијали, преноси "
"уживо...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Бринемо о приватности, овде можете прочитати наше "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Ми ћемо вам слати само релевантне е-поруке. Можете се одјавити у било ком "
"тренутку путем везе за одјаву у било ком од наших билтена."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr "Шаљи ми ажурирања производа (нове функције, издања, поправке...)."
@@ -2687,15 +2686,15 @@ msgstr "Касније ћете моћи да направите тим."
msgid "onboarding.newsletter.accept"
msgstr "Да, претплати се"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr "Ваш захтев за претплату је послат, послаћемо вам е-пошту да то потврдимо."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Политика приватности."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Желите ли примате Penpot новости?"
@@ -2876,7 +2875,7 @@ msgstr "Идите на пријаву"
msgid "settings.detach"
msgstr "Одвоји"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Мешано"
@@ -3066,7 +3065,7 @@ msgstr "Направи ново"
msgid "shortcuts.cut"
msgstr "Исеци"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Умањи"
@@ -3166,7 +3165,7 @@ msgstr "Распореди водоравно"
msgid "shortcuts.hide-ui"
msgstr "Прикажи / Сакриј интерфејс"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Увећај"
@@ -3546,15 +3545,15 @@ msgstr "Увећај на изабрано"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Добављачи фонтова - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Фонтови - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Пројекти - %s - Penpot"
@@ -3562,7 +3561,7 @@ msgstr "Пројекти - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Претражи - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Дељене библиотеке - %s - Penpot"
@@ -3570,7 +3569,7 @@ msgstr "Дељене библиотеке - %s - Penpot"
msgid "title.default"
msgstr "Penpot - Слобода дизајнирања за тимове"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "Налог - Токени за приступ"
@@ -3610,7 +3609,7 @@ msgstr "Веб-куке - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Режим прегледа - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -3715,15 +3714,15 @@ msgstr "Поравнај по врху (%s)"
msgid "workspace.assets.assets"
msgstr "Средства"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Сва средства"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Боје"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Компоненте"
@@ -3735,15 +3734,15 @@ msgstr "Направите групу"
msgid "workspace.assets.create-group-hint"
msgstr "Ваше ставке ће бити аутоматски именоване као \"име групе / име ставке“"
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Избирши"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Дуплирај"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "Дуплирај главно"
@@ -3751,15 +3750,15 @@ msgstr "Дуплирај главно"
msgid "workspace.assets.edit"
msgstr "Уреди"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:195
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
msgid "workspace.assets.filter"
msgstr "Филтер"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Графика"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Група"
@@ -3767,23 +3766,19 @@ msgstr "Група"
msgid "workspace.assets.group-name"
msgstr "Име групе"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Библиотеке"
-
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "локална библиотека"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Нема пронађених средстава"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "Отворите датотеку библиотеке"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Преименуј"
@@ -3791,7 +3786,7 @@ msgstr "Преименуј"
msgid "workspace.assets.rename-group"
msgstr "Преименуј гурпу"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Претражите средства"
@@ -3808,18 +3803,18 @@ msgstr[2] "%s изабраних ставки"
msgid "workspace.assets.shared-library"
msgstr "Дељена библиотека"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:226
+#: 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:211
+#: src/app/main/ui/workspace/sidebar/assets.cljs:201
msgid "workspace.assets.sort"
msgstr "Сортирај"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Тиупографије"
@@ -3828,27 +3823,27 @@ msgstr "Тиупографије"
msgid "workspace.assets.typography.font-id"
msgstr "Фонт"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Величина"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Варијанта"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Идите на датотеку библиотеке стилова да бисте је уредили"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Размак између слова"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Висина линије"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -3856,7 +3851,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Стилови текста"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Трансформација текста"
@@ -3864,55 +3859,55 @@ msgstr "Трансформација текста"
msgid "workspace.assets.ungroup"
msgstr "Разгрупиши"
-#: src/app/main/ui/workspace/context_menu.cljs:748
+#: src/app/main/ui/workspace/context_menu.cljs:764
msgid "workspace.context-menu.grid-cells.area"
msgstr "Направи област"
-#: src/app/main/ui/workspace/context_menu.cljs:751
+#: src/app/main/ui/workspace/context_menu.cljs:767
msgid "workspace.context-menu.grid-cells.create-board"
msgstr "Направи таблу"
-#: src/app/main/ui/workspace/context_menu.cljs:743
+#: src/app/main/ui/workspace/context_menu.cljs:759
msgid "workspace.context-menu.grid-cells.merge"
msgstr "Споји ћелије"
-#: src/app/main/ui/workspace/context_menu.cljs:706
+#: src/app/main/ui/workspace/context_menu.cljs:722
msgid "workspace.context-menu.grid-track.column.add-after"
msgstr "Додај 1 колону десно"
-#: src/app/main/ui/workspace/context_menu.cljs:705
+#: src/app/main/ui/workspace/context_menu.cljs:721
msgid "workspace.context-menu.grid-track.column.add-before"
msgstr "Додај 1 колону лево"
-#: src/app/main/ui/workspace/context_menu.cljs:707
+#: src/app/main/ui/workspace/context_menu.cljs:723
msgid "workspace.context-menu.grid-track.column.delete"
msgstr "Избирши колону"
-#: src/app/main/ui/workspace/context_menu.cljs:708
+#: src/app/main/ui/workspace/context_menu.cljs:724
msgid "workspace.context-menu.grid-track.column.delete-shapes"
msgstr "Избриши колоне и облике"
-#: src/app/main/ui/workspace/context_menu.cljs:704
+#: src/app/main/ui/workspace/context_menu.cljs:720
msgid "workspace.context-menu.grid-track.column.duplicate"
msgstr "Дуплирај колону"
-#: src/app/main/ui/workspace/context_menu.cljs:713
+#: src/app/main/ui/workspace/context_menu.cljs:729
msgid "workspace.context-menu.grid-track.row.add-after"
msgstr "Додај 1 ред испод"
-#: src/app/main/ui/workspace/context_menu.cljs:712
+#: src/app/main/ui/workspace/context_menu.cljs:728
msgid "workspace.context-menu.grid-track.row.add-before"
msgstr "Додај 1 ред изнад"
-#: src/app/main/ui/workspace/context_menu.cljs:714
+#: src/app/main/ui/workspace/context_menu.cljs:730
msgid "workspace.context-menu.grid-track.row.delete"
msgstr "Избриши ред"
-#: src/app/main/ui/workspace/context_menu.cljs:715
+#: src/app/main/ui/workspace/context_menu.cljs:731
msgid "workspace.context-menu.grid-track.row.delete-shapes"
msgstr "Избриши редове и облике"
-#: src/app/main/ui/workspace/context_menu.cljs:711
+#: src/app/main/ui/workspace/context_menu.cljs:727
msgid "workspace.context-menu.grid-track.row.duplicate"
msgstr "Дуплирај ред"
@@ -3920,11 +3915,11 @@ msgstr "Дуплирај ред"
msgid "workspace.focus.focus-mode"
msgstr "Режим фокуса"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Искључи фокус"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Укљичи фокус"
@@ -4078,33 +4073,32 @@ msgstr "Пребаците се на светлу тему"
msgid "workspace.header.menu.undo"
msgstr "Опозови"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Почни поново"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Грешка при чувању"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Сачувано"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Чување"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Несачуване промене"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "Режим прегледа (%s)"
-#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "Увећај"
@@ -4116,7 +4110,7 @@ msgstr "Попуњавање - Размера за попуњавање"
msgid "workspace.header.zoom-fit"
msgstr "Прилагоди - Смањи да се уклопи"
-#: src/app/main/ui/workspace/right_header.cljs:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Увећај да се све уклопи"
@@ -4124,19 +4118,19 @@ msgstr "Увећај да се све уклопи"
msgid "workspace.header.zoom-full-screen"
msgstr "Цели екран"
-#: src/app/main/ui/workspace/right_header.cljs:136
+#: src/app/main/ui/workspace/right_header.cljs:104
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:607
+#: 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:616
msgid "workspace.layout_grid.editor.options.edit-grid"
msgstr "Уреди мрежу"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
msgid "workspace.layout_grid.editor.options.exit"
msgstr "Изађи"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:478
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
msgid "workspace.layout_grid.editor.padding.expand"
msgstr "Прикажи опције за 4-страни padding"
@@ -4152,7 +4146,7 @@ msgstr "Готово"
msgid "workspace.layout_grid.editor.top-bar.locate"
msgstr "Пронађи"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1321
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
msgstr "Пронађи распоред мреже"
@@ -4161,7 +4155,7 @@ msgstr "Пронађи распоред мреже"
msgid "workspace.libraries.add"
msgstr "Додај"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s боја"
@@ -4191,31 +4185,31 @@ msgstr "Недавне боје"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "Додатна РГБ боја"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Сачувајте стил боја"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Библиотека датотека"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "БИБЛИОТЕКЕ У ОВОЈ ДАТОТЕЦИ"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "БИБЛИОТЕКЕ"
@@ -4224,63 +4218,59 @@ msgstr "БИБЛИОТЕКЕ"
msgid "workspace.libraries.library"
msgstr "БИБЛИОТЕКА"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "АЖУРИРАЊА БИБЛИОТЕКЕ"
-#: src/app/main/ui/workspace/libraries.cljs:363
+#: src/app/main/ui/workspace/libraries.cljs:360
msgid "workspace.libraries.loading"
msgstr "Учитавање…"
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "Нема дељених библиотека које треба ажурирати"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Нема резултата за %s"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Нема доступних дељених библиотека"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Претражите заједничке библиотеке"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "ДЕЉЕНЕ БИБЛИОТЕКЕ"
-#: src/app/main/ui/workspace/libraries.cljs:355
+#: src/app/main/ui/workspace/libraries.cljs:352
msgid "workspace.libraries.shared-library-btn"
msgstr "Повежите библиотеку"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Више типографија"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Прекините везу са свим типографијама"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:326
+#: src/app/main/ui/workspace/libraries.cljs:323
msgid "workspace.libraries.unlink-library-btn"
msgstr "Прекините везу са библиотеком"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Ажурирај"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "види све промене"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "АЖУРИРАЊА"
@@ -4300,43 +4290,43 @@ msgstr "Групно замућење"
msgid "workspace.options.blur-options.title.multiple"
msgstr "Замућење избора"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Позадина платна"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Ограничите садржај"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Компонента"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "Напомена"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "Копирај"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "Направи напомену"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Уреди напомену"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Главно"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:416
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
msgid "workspace.options.component.swap"
msgstr "Замени компоненту"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:460
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
msgid "workspace.options.component.swap.empty"
msgstr "У овој библиотеци још увек нема средстава"
@@ -4384,7 +4374,7 @@ msgstr "Врх и Дно"
msgid "workspace.options.design"
msgstr "Дизајн"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Извоз"
@@ -4393,14 +4383,14 @@ msgstr "Извоз"
msgid "workspace.options.export-multiple"
msgstr "Избор извоза"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
msgid "workspace.options.export-object"
msgid_plural "workspace.options.export-object"
msgstr[0] "Извоз 1 елемента"
msgstr[1] "Извоз %s елемента"
msgstr[2] "Извоз %s елементата"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Суфикс"
@@ -4408,7 +4398,7 @@ msgstr "Суфикс"
msgid "workspace.options.exporting-complete"
msgstr "Извоз је завршен"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Извоз…"
@@ -4546,7 +4536,7 @@ msgstr "Контура групе"
msgid "workspace.options.guides.title"
msgstr "Вођице"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Висина"
@@ -4856,19 +4846,19 @@ msgstr "Изабрани слојеви"
msgid "workspace.options.layout-item.advanced-ops"
msgstr "Напредна подешавања"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Макс.Висина"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Макс.Ширина"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Мин.Висина"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Мин.Ширина"
@@ -4982,11 +4972,11 @@ msgstr "простор између"
msgid "workspace.options.layout.top"
msgstr "Врх"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Више боја"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Више боја библиотеке"
@@ -5023,7 +5013,7 @@ msgstr "Горе лево"
msgid "workspace.options.radius-top-right"
msgstr "Горе десно"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Недавно"
@@ -5031,11 +5021,11 @@ msgstr "Недавно"
msgid "workspace.options.retry"
msgstr "Покушајте поново"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Ротација"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Претражите фонт"
@@ -5043,7 +5033,7 @@ msgstr "Претражите фонт"
msgid "workspace.options.select-a-shape"
msgstr "Изаберите облик, таблу или групу да бисте превукли везу на другу таблу."
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Изабране боје"
@@ -5055,43 +5045,43 @@ msgstr "Попуна избора"
msgid "workspace.options.selection-stroke"
msgstr "Избор контуре"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Замућење"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Боја сенке"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Бацање сенке"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Унутрашња сенка"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Ширење"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Сенка"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Групна сенка"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Избор сенки"
@@ -5099,7 +5089,7 @@ msgstr "Избор сенки"
msgid "workspace.options.show-fill-on-export"
msgstr "Прикажи у извозу"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Прикажи у режиму приказа"
@@ -5107,7 +5097,7 @@ msgstr "Прикажи у режиму приказа"
msgid "workspace.options.size"
msgstr "Величина"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Унапред подешене величине"
@@ -5176,7 +5166,7 @@ msgstr "Троугао"
msgid "workspace.options.stroke-color"
msgstr "Боја контуре"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Ширина контуре"
@@ -5240,11 +5230,11 @@ msgstr "Ауто ширина"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Фиксно"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Размак између слова"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Висина линије"
@@ -5310,15 +5300,15 @@ msgstr ""
"Користите дугме за репродукцију у заглављу да бисте покренули приказ "
"прототипа."
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Ширина"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "X оса"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Y оса"
@@ -5406,99 +5396,99 @@ msgstr "Додатак је исправно учитан."
msgid "workspace.plugins.title"
msgstr "Додаци"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Додајте флексибилни распоред"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "Додајте распоред мреже"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "Пошаљи позади"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Пошаљи назад"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Копирај"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "Направи напомену"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Избор на табли"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Направи компоненту"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Направи више компоненти"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Исеци"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Избриши"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Избриши почетак протока"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Раздвоји инстанцу"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Раздвоји инстанце"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Разлика"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Дуплицирај"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Уреди"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Изузми"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Изравнај"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Окрени водоравно"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Окрени усправно"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Почетак протока"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Изнесите напред"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Изнесите напред"
@@ -5507,95 +5497,95 @@ msgstr "Изнесите напред"
msgid "workspace.shape.menu.go-main"
msgstr "Идите на датотеку главне компоненте"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Групиши"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Сакриј"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Прикажи / Сакриј интерфејс"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Раскрсница"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Закључај"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Маскирај"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Залепи"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Путања"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Уклоните флексибилни распоред"
-#: src/app/main/ui/workspace/context_menu.cljs:531
+#: src/app/main/ui/workspace/context_menu.cljs:535
msgid "workspace.shape.menu.remove-grid"
msgstr "Уклоните распоред мреже"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Врати преиначења на подразумеване вредности"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Врати главну компоненту"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Изабери слој"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Прикажи"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Прикажи на панелу са средствима"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Прикажи главну компоненту"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Уклони сличицу"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Постави као сличицу"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Претвори у путanju"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Разгрупиши"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Унија"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Откључај"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Демаскирај"
@@ -5604,7 +5594,7 @@ msgstr "Демаскирај"
msgid "workspace.shape.menu.update-components-in-bulk"
msgstr "Ажурирај главне компоненте"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Ажурирајте главну компоненту"
@@ -5616,11 +5606,11 @@ msgstr "Скупи бочну траку"
msgid "workspace.sidebar.expand"
msgstr "Прошири бочну траку"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Историја"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Слојеви"
@@ -5656,7 +5646,7 @@ msgstr "Облици"
msgid "workspace.sidebar.layers.texts"
msgstr "Текстови"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Увезена SVG својства"
@@ -5664,11 +5654,11 @@ msgstr "Увезена SVG својства"
msgid "workspace.sidebar.sitemap"
msgstr "Странице"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Мапа сајта"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Средства"
@@ -5676,35 +5666,35 @@ msgstr "Средства"
msgid "workspace.toolbar.color-palette"
msgstr "Палета боја (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Коментари (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Контура (%s0"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Елипса (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Табла (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Слика (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Премести (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Путања (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Правоугаоник (%s)"
@@ -5713,7 +5703,7 @@ msgstr "Правоугаоник (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Пречице (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Текст (%s)"
@@ -5721,7 +5711,7 @@ msgstr "Текст (%s)"
msgid "workspace.toolbar.text-palette"
msgstr "Типографије (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:220, src/app/main/ui/workspace/top_toolbar.cljs:221
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
msgid "workspace.toolbar.toggle-toolbar"
msgstr "Укључите траку са алаткама"
@@ -5879,19 +5869,19 @@ msgstr "Операција над %s"
msgid "workspace.undo.title"
msgstr "Историја"
-#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Одбаци"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
msgid "workspace.updates.more-info"
msgstr "Више информација"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
msgid "workspace.updates.there-are-updates"
msgstr "Постоје ажурирања у дељеним библиотекама"
-#: src/app/main/data/workspace/libraries.cljs:1225
+#: src/app/main/data/workspace/libraries.cljs:1226
msgid "workspace.updates.update"
msgstr "Ажурирај"
diff --git a/frontend/translations/sv.po b/frontend/translations/sv.po
index 4254a6bdcd..4b3db732d3 100644
--- a/frontend/translations/sv.po
+++ b/frontend/translations/sv.po
@@ -1,15 +1,15 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2025-01-29 22:23+0000\n"
+"PO-Revision-Date: 2025-03-20 13:42+0000\n"
"Last-Translator: Anonymous \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.10-dev\n"
+"X-Generator: Weblate 5.11-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
@@ -38,13 +38,13 @@ msgstr "Skapa demokonto"
msgid "auth.create-demo-profile"
msgstr "Vill du prova?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Detta är en DEMO-tjänst, ANVÄND INTE för produktion, projekten i miljön "
"raderas regelbundet."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Glömt lösenordet?"
@@ -52,7 +52,7 @@ msgstr "Glömt lösenordet?"
msgid "auth.fullname"
msgstr "Fullständigt namn"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "Logga in på mitt konto"
@@ -60,31 +60,31 @@ msgstr "Logga in på mitt konto"
msgid "auth.login-here"
msgstr "Logga in här."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Logga in"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr "Penpot är det fria open-source designverktyget för design and kod samarbete"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -110,7 +110,7 @@ msgstr "En återställningslänk har skickats till din inkorg."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Tillagd i teamet"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Lösenord"
@@ -138,7 +138,7 @@ msgstr "Glömt lösenordet?"
msgid "auth.recovery-submit"
msgstr "Ändra lösenordet"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Inget konto?"
@@ -150,7 +150,7 @@ msgstr "Vilket visningsnamn ska vara på översiktsvyn och i mail från oss."
msgid "auth.register-account-title"
msgstr "Ditt namn"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Skapa ett konto"
@@ -174,7 +174,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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Användarvillkor"
@@ -188,7 +188,7 @@ msgstr ""
msgid "auth.verification-email-sent"
msgstr "Vi har skickat ett verifieringsmail till"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "Arbetsmail"
@@ -197,11 +197,11 @@ msgstr "Arbetsmail"
msgid "branding-illustrations-marketing-pieces"
msgstr "...varumärkesbyggande, illustrationer, marknadsföringsmaterial, etc."
-#: src/app/main/ui/comments.cljs:504
+#: src/app/main/ui/comments.cljs:532
msgid "comments.mentions.not-found"
msgstr "Inga personer hittades för @%s"
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Publicera"
@@ -273,7 +273,7 @@ msgstr "Dela prototyper"
msgid "common.share-link.view-all"
msgstr "Markera allt"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Avpublicera"
@@ -327,7 +327,7 @@ msgstr "Gränssnittsgenomgång"
msgid "dashboard.access-tokens.copied-success"
msgstr "Token kopierad"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Skapa ny token"
@@ -335,11 +335,11 @@ msgstr "Skapa ny token"
msgid "dashboard.access-tokens.create.success"
msgstr "Accesstoken skapad."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Tryck på knappen \"Generera ny token\" för att generera en."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "Du har inga tokens."
@@ -363,23 +363,23 @@ msgstr "90 dagar"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Aldrig"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Förföll den %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Förfaller den %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Inget förfallodatum"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Personliga accesstokens"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Personliga åtkomsttokens fungerar som ett alternativ till vårt "
@@ -402,7 +402,7 @@ msgstr "Lägg till som delat bibliotek"
msgid "dashboard.change-email"
msgstr "Ändra e-post"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(kopia)"
@@ -438,23 +438,23 @@ msgstr "Duplicera"
msgid "dashboard.duplicate-multi"
msgstr "Duplicera %s filer"
-#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:285
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
msgid "dashboard.empty-placeholder-drafts-subtitle"
msgstr "När en projektmedlem skapar ett utkast kommer det att visas här."
-#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:280
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
msgid "dashboard.empty-placeholder-drafts-title"
msgstr "Inga utkast än."
-#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:286
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
msgid "dashboard.empty-placeholder-files-subtitle"
msgstr "När en projektmedlem skapar en fil kommer den att visas här."
-#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:281
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
msgid "dashboard.empty-placeholder-files-title"
msgstr "Inga filer än."
-#: src/app/main/ui/dashboard/placeholder.cljs:40
+#: src/app/main/ui/dashboard/placeholder.cljs:77
#, markdown
msgid "dashboard.empty-placeholder-libraries"
msgstr ""
@@ -470,11 +470,11 @@ msgstr ""
"dina filer eller lägg till från våra [Bibliotek & mallar] "
"(https://penpot.app/libraries-templates)."
-#: src/app/main/ui/dashboard/placeholder.cljs:36
+#: src/app/main/ui/dashboard/placeholder.cljs:73
msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role"
msgstr "Bibliotek som läggs till i projektet visas här."
-#: src/app/main/ui/dashboard/placeholder.cljs:33
+#: src/app/main/ui/dashboard/placeholder.cljs:70
msgid "dashboard.empty-placeholder-libraries-title"
msgstr "Inga bibliotek än."
@@ -568,33 +568,33 @@ msgstr "Inkludera delade bibliotekstillgångar i filbibliotek"
msgid "dashboard.export.title"
msgstr "Exportera filer"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Typsnittet saknas"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Avfärda alla"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Egna teckensnitt som du laddar upp visas här."
-#: src/app/main/ui/dashboard/fonts.cljs:448
+#: src/app/main/ui/dashboard/fonts.cljs:450
msgid "dashboard.fonts.empty-placeholder-viewer"
msgstr "Inga anpassade teckensnitt än."
-#: src/app/main/ui/dashboard/fonts.cljs:449
+#: src/app/main/ui/dashboard/fonts.cljs:451
msgid "dashboard.fonts.empty-placeholder-viewer-sub"
msgstr "När en projektmedlem laddar upp ett anpassat teckensnitt visas det här."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "1 teckensnitt adderas"
msgstr[1] "%s teckensnitt adderas"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -604,20 +604,20 @@ msgstr ""
"grupperas som en **enkel teckensnittsfamilj**. Du kan ladda upp teckensnitt "
"med följande format: **TTF, OTF och WOFF** (endast ett format behövs)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Du bör endast ladda upp teckensnitt som du äger eller har licens att "
"använda i Penpot. Läs mer i avsnittet om innehållsrättigheter i [Penpots "
-"användarvillkor](%s). Du kanske också vill läsa "
-"om [licensiering av teckensnitt](https://www.typography.com/faq)."
+"användarvillkor](%s). Du kanske också vill läsa om [licensiering av "
+"teckensnitt](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Ladda upp allt"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -628,7 +628,7 @@ msgstr ""
"använder [Transfonter](https://transfonter.org/) för att generera "
"webbteckensnitt och åtgärda fel. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Importera Penpot-filer"
@@ -640,11 +640,11 @@ msgstr "Oops! Vi kunde inte importera denna fil"
msgid "dashboard.import.analyze-error.components-v2"
msgstr "Fil med komponenter v2 aktiverad men det här teamet stöder det inte ännu."
-#: src/app/main/ui/dashboard.cljs:248
+#: src/app/main/ui/dashboard.cljs:247
msgid "dashboard.import.bad-url"
msgstr "Importen misslyckades. Mall URL:en är inkorrekt"
-#: src/app/main/ui/dashboard.cljs:242
+#: src/app/main/ui/dashboard.cljs:241
msgid "dashboard.import.error"
msgstr "Importen misslyckades. Försök igen"
@@ -652,17 +652,17 @@ msgstr "Importen misslyckades. Försök igen"
msgid "dashboard.import.import-error"
msgstr "Problem att importera filen. Filen importerades inte."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgid_plural "dashboard.import.import-message"
msgstr[0] "1 fil importerades."
msgstr[1] "%s filer importerades."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Vissa filer innehöll ogiltiga objekt som har tagits bort."
-#: src/app/main/ui/dashboard.cljs:249
+#: src/app/main/ui/dashboard.cljs:248
msgid "dashboard.import.no-perms"
msgstr "Du har inte behörighet att importera till det här teamet"
@@ -702,27 +702,27 @@ msgstr "Bjud in personer"
msgid "dashboard.leave-team"
msgstr "Lämna teamet"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Bibliotek & mallar"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
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:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "Problem när mallen importerades. Mallen importerades inte."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Bibliotek"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "laddar dina filer …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "laddar dina teckensnitt …"
@@ -738,11 +738,11 @@ msgstr "Flytta %s filer till"
msgid "dashboard.move-to-other-team"
msgstr "Flytta till andra team"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Ny fil"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Ny fil"
@@ -750,7 +750,7 @@ msgstr "Ny fil"
msgid "dashboard.new-project"
msgstr "+ Nytt projekt"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Nytt projekt"
@@ -762,7 +762,7 @@ msgstr "Inga träffar hittades för ”%s”"
msgid "dashboard.no-projects-placeholder"
msgstr "Fastklistrade projekt visas här"
-#: src/app/main/ui/dashboard/comments.cljs:84
+#: src/app/main/ui/dashboard/comments.cljs:90
msgid "dashboard.notifications"
msgstr "Notifieringar"
@@ -774,7 +774,7 @@ msgstr "Din e-postadress har uppdaterats"
msgid "dashboard.notifications.email-verified-successfully"
msgstr "Din e-postadress har verifierats"
-#: src/app/main/ui/settings/notifications.cljs:42
+#: src/app/main/data/profile.cljs:260
msgid "dashboard.notifications.notifications-saved"
msgstr "Notifieringsinställningar uppdaterade"
@@ -794,7 +794,7 @@ msgstr "%s medlemmar"
msgid "dashboard.open-in-new-tab"
msgstr "Öppna filen i en ny flik"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Alternativ"
@@ -822,15 +822,15 @@ msgstr "Du är nu en tittare i det här teamet."
msgid "dashboard.pin-unpin"
msgstr "Klistra fast/Lossa"
-#: src/app/main/ui/dashboard.cljs:212
+#: src/app/main/ui/dashboard.cljs:208
msgid "dashboard.plugins.bad-url"
msgstr "Plugin-URL:en är felaktig"
-#: src/app/main/ui/dashboard.cljs:210
+#: src/app/main/ui/dashboard.cljs:206
msgid "dashboard.plugins.parse-error"
msgstr "Kan inte tolka plugin-manifestet"
-#: src/app/main/ui/dashboard.cljs:173
+#: src/app/main/ui/dashboard.cljs:169
msgid "dashboard.plugins.try-plugin"
msgstr "Testa plugin: "
@@ -871,67 +871,67 @@ msgstr "Välj språk för användargränssnittet"
msgid "dashboard.select-ui-theme"
msgstr "Välj tema"
-#: src/app/main/ui/settings/notifications.cljs:76
+#: src/app/main/ui/settings/notifications.cljs:57
msgid "dashboard.settings.notifications.dashboard-comments.all"
msgstr "Alla kommentarer, omnämnanden och svar"
-#: src/app/main/ui/settings/notifications.cljs:78
+#: src/app/main/ui/settings/notifications.cljs:59
msgid "dashboard.settings.notifications.dashboard-comments.none"
msgstr "Inga"
-#: src/app/main/ui/settings/notifications.cljs:77
+#: src/app/main/ui/settings/notifications.cljs:58
msgid "dashboard.settings.notifications.dashboard-comments.partial"
msgstr "Bara omnämnanden och svar"
-#: src/app/main/ui/settings/notifications.cljs:73
+#: src/app/main/ui/settings/notifications.cljs:54
msgid "dashboard.settings.notifications.dashboard-comments.title"
msgstr "Filkommentarer"
-#: src/app/main/ui/settings/notifications.cljs:72
+#: src/app/main/ui/settings/notifications.cljs:53
msgid "dashboard.settings.notifications.dashboard.title"
msgstr "Översiktsvy Notifieringar"
-#: src/app/main/ui/settings/notifications.cljs:86
+#: src/app/main/ui/settings/notifications.cljs:67
msgid "dashboard.settings.notifications.email-comments.all"
msgstr "Alla kommentarer, omnämnanden och svar"
-#: src/app/main/ui/settings/notifications.cljs:88
+#: src/app/main/ui/settings/notifications.cljs:69
msgid "dashboard.settings.notifications.email-comments.none"
msgstr "Inga"
-#: src/app/main/ui/settings/notifications.cljs:87
+#: src/app/main/ui/settings/notifications.cljs:68
msgid "dashboard.settings.notifications.email-comments.partial"
msgstr "Bara omnämnaden och svar"
-#: src/app/main/ui/settings/notifications.cljs:83
+#: src/app/main/ui/settings/notifications.cljs:64
msgid "dashboard.settings.notifications.email-comments.title"
msgstr "Filkommentarer"
-#: src/app/main/ui/settings/notifications.cljs:95
+#: src/app/main/ui/settings/notifications.cljs:76
msgid "dashboard.settings.notifications.email-invites.all"
msgstr "Alla typer av inbjudningar och förfrågningar"
-#: src/app/main/ui/settings/notifications.cljs:98
+#: src/app/main/ui/settings/notifications.cljs:79
msgid "dashboard.settings.notifications.email-invites.none"
msgstr "Inga"
-#: src/app/main/ui/settings/notifications.cljs:92
+#: src/app/main/ui/settings/notifications.cljs:73
msgid "dashboard.settings.notifications.email-invites.title"
msgstr "Inbjudningar och förfrågningar"
-#: src/app/main/ui/settings/notifications.cljs:82
+#: src/app/main/ui/settings/notifications.cljs:63
msgid "dashboard.settings.notifications.email.title"
msgstr "Mail Notifieringar"
-#: src/app/main/ui/settings/notifications.cljs:103
+#: src/app/main/ui/settings/notifications.cljs:84
msgid "dashboard.settings.notifications.submit"
msgstr "Uppdatera inställningar"
-#: src/app/main/ui/settings/notifications.cljs:71
+#: src/app/main/ui/settings/notifications.cljs:52
msgid "dashboard.settings.notifications.title"
msgstr "Notifieringar"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Visa alla filer"
@@ -959,7 +959,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Din fil har flyttats"
@@ -1003,15 +1003,15 @@ msgstr "Avpublicera biblioteket"
msgid "dashboard.update-settings"
msgstr "Uppdatera inställningarna"
-#: src/app/main/ui/dashboard/sidebar.cljs:969
+#: src/app/main/ui/dashboard/sidebar.cljs:970
msgid "dashboard.upgrade-plan.no-limits"
msgstr "Inga gränser för kreativitet"
-#: src/app/main/ui/dashboard/sidebar.cljs:968
+#: src/app/main/ui/dashboard/sidebar.cljs:969
msgid "dashboard.upgrade-plan.penpot-free"
msgstr "Gratis Penpot"
-#: src/app/main/ui/dashboard/sidebar.cljs:971
+#: src/app/main/ui/dashboard/sidebar.cljs:972
msgid "dashboard.upgrade-plan.power-up"
msgstr "Starta upp"
@@ -1070,7 +1070,7 @@ msgstr "E-post"
msgid "dashboard.your-name"
msgstr "Ditt namn"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Ditt Penpot"
@@ -1090,11 +1090,11 @@ msgstr "Komponenter att uppdatera:"
msgid "ds.confirm-allow"
msgstr "Tillåt"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Avbryt"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Ok"
@@ -1106,7 +1106,7 @@ msgstr "Är du säker?"
msgid "errors.auth-provider-not-allowed"
msgstr "Autentiseringsleverantör inte tillåten för denna profil"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Autentiseringsleverantör inte konfigurerad."
@@ -1114,11 +1114,11 @@ msgstr "Autentiseringsleverantör inte konfigurerad."
msgid "errors.auth.unable-to-login"
msgstr "Du är inte autentiserad eller har sessionen löpt ut."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "Teckensnittet % kunde inte laddas"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "Teckensnittet %s kunde inte laddas"
@@ -1126,7 +1126,7 @@ msgstr "Teckensnittet %s kunde inte laddas"
msgid "errors.cannot-upload"
msgstr "Kan inte ladda upp mediafilen."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Din webbläsare kan inte utföra denna åtgärd"
@@ -1138,7 +1138,7 @@ msgstr "E-postadressen används redan"
msgid "errors.email-already-validated"
msgstr "E-postadressen är redan validerad."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Du kan inte använda e-postadressen som lösenord"
@@ -1187,7 +1187,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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Något fel har inträffat."
@@ -1200,8 +1200,7 @@ msgstr "Ogiltig färg"
msgid "errors.invalid-email"
msgstr "Ange en giltig e-postadress"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "Bekräftelsemail måste matcha"
@@ -1217,7 +1216,7 @@ msgstr "Inbjudan ogiltig"
msgid "errors.invite-invalid.info"
msgstr "Denna inbjudan kan vara avbruten eller har upphört att gälla."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "LDAP-autentisering är inaktiverad."
@@ -1267,7 +1266,7 @@ msgstr "Lösenordet måste innehålla minst 8 tecken"
msgid "errors.paste-data-validation"
msgstr "Ogiltiga data i urklipp"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Profilen är blockerad"
@@ -1341,12 +1340,11 @@ msgstr "Oväntat fel vid validering"
msgid "errors.webhooks.unexpected-status"
msgstr "Oväntad status %"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "E-post eller lösenord är felaktigt."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Det gamla lösenordet är felaktigt"
@@ -1395,11 +1393,11 @@ msgstr "Här kan du få hjälp med dina tekniska frågor."
msgid "feedback.twitter-title"
msgstr "X supportkonto"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Ett fel har inträffat"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Oskärpa"
@@ -1407,31 +1405,31 @@ msgstr "Oskärpa"
msgid "inspect.attributes.blur.value"
msgstr "Värde"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Fylla"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Ladda ner källbilden"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Höjd"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Bredd"
@@ -1470,15 +1468,15 @@ msgstr "Topp"
msgid "inspect.attributes.layout.width"
msgstr "Bredd"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Skugga"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Storlek och position"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Fet"
@@ -1515,141 +1513,141 @@ msgstr "Ifylld"
msgid "inspect.attributes.stroke.width"
msgstr "Bredd"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Typografi"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Teckensnittsfamilj"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Teckenstorlek"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Teckensnitt"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Teckensnittsvikt"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Teckenavstånd"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Radavstånd"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Textdekorering"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Ingen"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Genomstruken"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Understrykning"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Texttransformation"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Gemener"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Ingen"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Versalbörjan"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "Oinställt"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Versaler"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr "Om du vill veta mer om designinspektion kan du besöka Penpots hjälpcenter"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Mer information om inspektion"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr ""
"Välj en form, ett tavla eller en grupp för att inspektera deras egenskaper "
"och kod"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Kod"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Cirkel"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Komponent"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Kurva"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Tavla"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Grupp"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Bild"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Mask"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s valda"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Bana"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Rektangel"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Text"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Info"
@@ -1669,15 +1667,15 @@ msgstr "Accesstokens"
msgid "labels.active"
msgstr "Aktiv"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.add"
msgstr "Lägg till"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Lägg till teckensnitt"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.adding"
msgstr "Lägger till..."
@@ -1689,7 +1687,7 @@ msgstr "Admin"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Allt"
@@ -1711,7 +1709,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Bad Gateway"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Avbryt"
@@ -1719,27 +1717,27 @@ msgstr "Avbryt"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Stäng"
-#: src/app/main/ui/workspace/tokens/sets.cljs:180
+#: src/app/main/ui/workspace/tokens/sets.cljs:219
msgid "labels.collapse"
msgstr "Dra ihop"
-#: src/app/main/ui/comments.cljs:812
+#: src/app/main/ui/comments.cljs:881
msgid "labels.comment"
msgstr "Kommentar"
-#: src/app/main/ui/comments.cljs:816
+#: src/app/main/ui/comments.cljs:885
msgid "labels.comment.mark-as-solved"
msgstr "Markera som löst"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Kommentarer"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Community"
@@ -1747,7 +1745,7 @@ msgstr "Community"
msgid "labels.confirm-password"
msgstr "Bekräfta lösenordet"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Fortsätt"
@@ -1767,7 +1765,7 @@ msgstr "Kopiera länk"
msgid "labels.copyright"
msgstr "Kaleidos @2024"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Skapa"
@@ -1787,15 +1785,15 @@ msgstr "Anpassade teckensnitt"
msgid "labels.dashboard"
msgstr "Översiktsvy"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Radera"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Radera kommentar"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Radera tråd"
@@ -1815,15 +1813,15 @@ msgstr "Utveckling"
msgid "labels.director"
msgstr "Direktör"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "Kassera"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Utkast"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Redigera"
@@ -1843,7 +1841,7 @@ msgstr "Evenemang"
msgid "labels.expired-invitation"
msgstr "Löpt ut"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Exportera"
@@ -1859,7 +1857,7 @@ msgstr "Feedback skickad"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Teckensnittsfamilj"
@@ -1867,11 +1865,11 @@ msgstr "Teckensnittsfamilj"
msgid "labels.font-providers"
msgstr "Teckensnittsleverantör"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Stilar"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Teckensnitt"
@@ -1883,11 +1881,11 @@ msgstr "VD eller Grundare"
msgid "labels.freelancer"
msgstr "Frilansare"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Github repo"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Ge feedback"
@@ -1899,15 +1897,15 @@ msgstr "Gå tillbaka"
msgid "labels.graphic-design"
msgstr "Grafisk design"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Hjälpcenter"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Dölj åtgärdade kommentarer"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:355
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:413
msgid "labels.import"
msgstr "Importera"
@@ -1915,7 +1913,7 @@ msgstr "Importera"
msgid "labels.inactive"
msgstr "Inaktiv"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Installerade teckensnitt"
@@ -1941,11 +1939,11 @@ msgstr "Inbjudningar"
msgid "labels.language"
msgstr "Språk"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Bibliotek & mallar"
-#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:114, src/app/main/ui/dashboard/grid.cljs:133, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:53, src/app/main/ui/ds/product/loader.cljs:52, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:126, src/app/main/ui.cljs:67, src/app/main/ui.cljs:105, src/app/main/ui.cljs:124
+#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:115, src/app/main/ui/dashboard/grid.cljs:134, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:98, src/app/main/ui/ds/product/loader.cljs:85, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:118, src/app/main/ui.cljs:66, src/app/main/ui.cljs:104, src/app/main/ui.cljs:123
msgid "labels.loading"
msgstr "Laddar…"
@@ -1957,7 +1955,7 @@ msgstr "Logga in eller registrera dig"
msgid "labels.login"
msgstr "Logga in"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Logga ut"
@@ -1977,11 +1975,11 @@ msgstr "Medlemmar"
msgid "labels.new-password"
msgstr "Nytt lösenord"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Nästa"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "Du har kommit ikapp! Nya meddelanden om kommentarer visas här."
@@ -2011,7 +2009,7 @@ msgstr "Oops!"
msgid "labels.notifications"
msgstr "Notifieringar"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "1 fil"
@@ -2042,7 +2040,7 @@ msgstr "Gammalt lösenord"
msgid "labels.only-yours"
msgstr "Endast din"
-#: src/app/main/ui/comments.cljs:545, src/app/main/ui/comments.cljs:822, src/app/main/ui/comments.cljs:886, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:295, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:324
+#: src/app/main/ui/comments.cljs:891, src/app/main/ui/comments.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:293, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:322
msgid "labels.options"
msgstr "Alternativ"
@@ -2070,7 +2068,7 @@ msgstr "Lösenord"
msgid "labels.pending-invitation"
msgstr "Pågående"
-#: src/app/main/ui/comments.cljs:657, src/app/main/ui/comments.cljs:690, src/app/main/ui/comments.cljs:759
+#: src/app/main/ui/comments.cljs:678
msgid "labels.post"
msgstr "Inlägg"
@@ -2094,7 +2092,7 @@ msgstr "Profil"
msgid "labels.projects"
msgstr "Projekt"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Releaseinformation"
@@ -2112,7 +2110,7 @@ msgstr "Ta bort"
msgid "labels.remove-member"
msgstr "Ta bort medlem"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Byt namn"
@@ -2120,23 +2118,23 @@ msgstr "Byt namn"
msgid "labels.rename-team"
msgstr "Byt teamnamn"
-#: src/app/main/ui/comments.cljs:598
+#: src/app/main/ui/comments.cljs:641
msgid "labels.replies"
msgstr "svar"
-#: src/app/main/ui/comments.cljs:603
+#: src/app/main/ui/comments.cljs:646
msgid "labels.replies.new"
msgstr "nya svar"
-#: src/app/main/ui/comments.cljs:597
+#: src/app/main/ui/comments.cljs:640
msgid "labels.reply"
msgstr "svara"
-#: src/app/main/ui/comments.cljs:602
+#: src/app/main/ui/comments.cljs:645
msgid "labels.reply.new"
msgstr "nytt svar"
-#: src/app/main/ui/comments.cljs:641
+#: src/app/main/ui/comments.cljs:721
msgid "labels.reply.thread"
msgstr "Svara"
@@ -2156,15 +2154,15 @@ msgstr "Försök igen"
msgid "labels.role"
msgstr "Roll"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Spara"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "Sök"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Sök teckensnitt"
@@ -2188,7 +2186,7 @@ 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:252
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:247
msgid "labels.sets"
msgstr "Uppsättningar"
@@ -2208,19 +2206,19 @@ msgstr "Dela prototyp"
msgid "labels.shared-libraries"
msgstr "Bibliotek"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Visa alla kommentarer"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Visa kommentarslista"
-#: src/app/main/ui/workspace/comments.cljs:66, src/app/main/ui/workspace/comments.cljs:136
+#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139
msgid "labels.show-mentions"
msgstr "Visa bara dina omnämnanden"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Visa bara dina kommentarer"
@@ -2248,11 +2246,11 @@ msgstr "Teamledare"
msgid "labels.team-member"
msgstr "Teammedlem"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:183
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:182
msgid "labels.themes"
msgstr "Teman"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Självstudier"
@@ -2268,15 +2266,15 @@ msgstr "Uppdatera"
msgid "labels.update-team"
msgstr "Uppdatera teamet"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Ladda upp"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Ladda upp teckensnitt"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Laddar upp…"
@@ -2292,7 +2290,7 @@ msgstr "Visare"
msgid "labels.webhooks"
msgstr "Webhooks"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Skriv ny kommentar"
@@ -2300,7 +2298,7 @@ msgstr "Skriv ny kommentar"
msgid "labels.you"
msgstr "(du)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Ditt konto"
@@ -2308,23 +2306,23 @@ msgstr "Ditt konto"
msgid "labels.youtube"
msgstr "YouTube"
-#: src/app/main/ui/workspace/colorpicker.cljs:477, src/app/main/ui/workspace/colorpicker.cljs:478, src/app/main/ui/workspace/colorpicker.cljs:480
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
msgid "media.choose-image"
msgstr "Välj bild"
-#: src/app/main/ui/workspace/colorpicker.cljs:245
+#: src/app/main/ui/workspace/colorpicker.cljs:241
msgid "media.gradient"
msgstr "Gradient"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "Bild"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:77
+#: src/app/main/ui/inspect/attributes/common.cljs:77
msgid "media.image.short"
msgstr "img"
-#: src/app/main/ui/workspace/colorpicker.cljs:470
+#: src/app/main/ui/workspace/colorpicker.cljs:467
msgid "media.keep-aspect-ratio"
msgstr "Behåll aspektförhållandet"
@@ -2342,7 +2340,7 @@ msgstr "Laddar bild…"
msgid "media.radial"
msgstr "Radiell"
-#: src/app/main/ui/workspace/colorpicker.cljs:243
+#: src/app/main/ui/workspace/colorpicker.cljs:239
msgid "media.solid"
msgstr "Fylld"
@@ -2394,7 +2392,7 @@ msgstr "Ändra e-post"
msgid "modals.change-email.title"
msgstr "Ändra din e-post"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Kopiera token"
@@ -2410,7 +2408,7 @@ msgstr "Namn"
msgid "modals.create-access-token.name.placeholder"
msgstr "Namnet kan hjälpa till att veta vad token är till för"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Skapa token"
@@ -2434,15 +2432,15 @@ msgstr "Payload URL"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://example.com/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Radera token"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "Är du säker på att du vill radera denna token?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Radera token"
@@ -2462,25 +2460,25 @@ msgstr "Genom att ta bort ditt konto förlorar du alla dina projekt och arkiv."
msgid "modals.delete-account.title"
msgstr "Är du säker på att du vill radera ditt konto?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Radera konversation"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Är du säker på att du vill radera konversationen? Alla kommentarer i denna "
"tråd kommer att raderas."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Radera konversation"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
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:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Radera anteckningen"
@@ -2508,31 +2506,31 @@ msgstr "Är du säker på att du vill radera %s filerna?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Raderar %s filer"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Är du säker på att du vill radera denna typsnittsstil? Den laddas inte om "
"den används i en fil."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Ta bort teckensnittsformat"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Är du säker på att du vill ta bort detta teckensnitt? Den laddas inte om "
"den används i en fil."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Ta bort teckensnitt"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
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:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Radera sida"
@@ -2746,15 +2744,15 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "Ny teamägare"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Publicera"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
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:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Publicera tomt bibliotek"
@@ -2810,21 +2808,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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Uppdatera"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Avbryt"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Uppdatera en komponent i ett delat bibliotek"
@@ -2986,28 +2984,28 @@ msgstr "Videokurser"
msgid "onboarding-v2.before-start.title"
msgstr "Innan du börjar"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Prenumerera på Penpots nyhetsbrev för att hålla dig uppdaterad om "
"produktutvecklingen och nyheter."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr "Skicka mig nyheter om Penpot (blogginlägg, videokurser, livesändningar...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Vi bryr oss om integritet, här kan du läsa vår "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Vi kommer endast att skicka relevanta e-postmeddelanden till dig. Du kan "
"när som helst avregistrera dig via avregistreringslänken i något av våra "
"nyhetsbrev."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr "Skicka mig produktuppdateringar (nya funktioner, releaser, fixar...)."
@@ -3105,17 +3103,17 @@ msgstr "Du kan skapa ett team senare."
msgid "onboarding.newsletter.accept"
msgstr "Ja, prenumerera"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"Din prenumerationsbegäran har skickats, vi skickar ett e-postmeddelande för "
"att bekräfta det."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Integritetspolicy."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Vill du få Penpot-nyheter?"
@@ -3308,7 +3306,7 @@ msgstr "Gå till Logga in"
msgid "settings.detach"
msgstr "Separera"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Mixad"
@@ -3506,7 +3504,7 @@ msgstr "Skapa ny"
msgid "shortcuts.cut"
msgstr "Klipp ut"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Zooma ut"
@@ -3606,7 +3604,7 @@ msgstr "Distribuera horisontellt"
msgid "shortcuts.hide-ui"
msgstr "Visa / dölja UI"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Zooma in"
@@ -3990,15 +3988,15 @@ msgstr "Zooma in markerad"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Teckensnittsleverantörer - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Teckensnitt - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Projekt - %s - Penpot"
@@ -4006,7 +4004,7 @@ msgstr "Projekt - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Sök -%s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Delade bibliotek -%s - Penpot"
@@ -4014,7 +4012,7 @@ msgstr "Delade bibliotek -%s - Penpot"
msgid "title.default"
msgstr "Penpot - Designfrihet för team"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "Profil - Accesstokens"
@@ -4022,7 +4020,7 @@ msgstr "Profil - Accesstokens"
msgid "title.settings.feedback"
msgstr "Ge feedback - Penpot"
-#: src/app/main/ui/settings/notifications.cljs:64
+#: src/app/main/ui/settings/notifications.cljs:45
msgid "title.settings.notifications"
msgstr "Notifieringar - Penpot"
@@ -4058,7 +4056,7 @@ msgstr "Webhooks - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Visningsläge - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -4158,7 +4156,7 @@ msgstr "Distribuera vertikalt avstånd (%)"
msgid "workspace.align.vtop"
msgstr "Justera toppen (%s)"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:174, src/app/main/ui/workspace/sidebar/assets.cljs:179
+#: src/app/main/ui/workspace/sidebar/assets.cljs:171
msgid "workspace.assets.add-library"
msgstr "Lägg till bibliotek"
@@ -4167,11 +4165,11 @@ msgstr "Lägg till bibliotek"
msgid "workspace.assets.assets"
msgstr "Tillgångar"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Alla tillgångar"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Färger"
@@ -4179,11 +4177,11 @@ msgstr "Färger"
msgid "workspace.assets.colors.add-color"
msgstr "Lägg till färg"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Komponenter"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:510
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:520
msgid "workspace.assets.components.add-component"
msgstr "Lägg till komponent"
@@ -4195,15 +4193,15 @@ msgstr "Skapa en grupp"
msgid "workspace.assets.create-group-hint"
msgstr "Dina objekt kommer att namnges automatiskt som \"gruppnamn / objektnamn\""
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Radera"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Duplicera"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "Duplicera huvudarbetsytan"
@@ -4211,19 +4209,19 @@ msgstr "Duplicera huvudarbetsytan"
msgid "workspace.assets.edit"
msgstr "Redigera"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:195
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
msgid "workspace.assets.filter"
msgstr "Filter"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Grafik"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:505
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:515
msgid "workspace.assets.grid-view"
msgstr "Rutnätsvy"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Grupp"
@@ -4231,27 +4229,23 @@ msgstr "Grupp"
msgid "workspace.assets.group-name"
msgstr "Gruppnamn"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Bibliotek"
-
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:501
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:511
msgid "workspace.assets.list-view"
msgstr "Listvy"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "lokala bibliotek"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Inga tillgångar hittades"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "Öppna bibliotek fil"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Byt namn"
@@ -4259,7 +4253,7 @@ msgstr "Byt namn"
msgid "workspace.assets.rename-group"
msgstr "Byt namn på gruppen"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Sök tillgångar"
@@ -4275,17 +4269,17 @@ msgstr[1] "%s objekt markerade"
msgid "workspace.assets.shared-library"
msgstr "Delat bibliotek"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:226
+#: 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:211
+#: src/app/main/ui/workspace/sidebar/assets.cljs:201
msgid "workspace.assets.sort"
msgstr "Sortera"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Typografi"
@@ -4298,27 +4292,27 @@ msgstr "Lägg till teckenssnitt"
msgid "workspace.assets.typography.font-id"
msgstr "Teckensnitt"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Storlek"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Variation"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Gå till stilbibliotek fil för att redigera"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Teckenavstånd"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Radavstånd"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -4326,7 +4320,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Textstilar"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Texttransformation"
@@ -4334,55 +4328,55 @@ msgstr "Texttransformation"
msgid "workspace.assets.ungroup"
msgstr "Avgruppera"
-#: src/app/main/ui/workspace/context_menu.cljs:748
+#: src/app/main/ui/workspace/context_menu.cljs:764
msgid "workspace.context-menu.grid-cells.area"
msgstr "Skapa område"
-#: src/app/main/ui/workspace/context_menu.cljs:751
+#: src/app/main/ui/workspace/context_menu.cljs:767
msgid "workspace.context-menu.grid-cells.create-board"
msgstr "Skapa tavla"
-#: src/app/main/ui/workspace/context_menu.cljs:743
+#: src/app/main/ui/workspace/context_menu.cljs:759
msgid "workspace.context-menu.grid-cells.merge"
msgstr "Sammanfoga celler"
-#: src/app/main/ui/workspace/context_menu.cljs:706
+#: src/app/main/ui/workspace/context_menu.cljs:722
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:705
+#: src/app/main/ui/workspace/context_menu.cljs:721
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:707
+#: src/app/main/ui/workspace/context_menu.cljs:723
msgid "workspace.context-menu.grid-track.column.delete"
msgstr "Radera kolumn"
-#: src/app/main/ui/workspace/context_menu.cljs:708
+#: src/app/main/ui/workspace/context_menu.cljs:724
msgid "workspace.context-menu.grid-track.column.delete-shapes"
msgstr "Ta bort kolumn och former"
-#: src/app/main/ui/workspace/context_menu.cljs:704
+#: src/app/main/ui/workspace/context_menu.cljs:720
msgid "workspace.context-menu.grid-track.column.duplicate"
msgstr "Duplicera kolumn"
-#: src/app/main/ui/workspace/context_menu.cljs:713
+#: src/app/main/ui/workspace/context_menu.cljs:729
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:712
+#: src/app/main/ui/workspace/context_menu.cljs:728
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:714
+#: src/app/main/ui/workspace/context_menu.cljs:730
msgid "workspace.context-menu.grid-track.row.delete"
msgstr "Ta bort rad"
-#: src/app/main/ui/workspace/context_menu.cljs:715
+#: src/app/main/ui/workspace/context_menu.cljs:731
msgid "workspace.context-menu.grid-track.row.delete-shapes"
msgstr "Ta bort rad och former"
-#: src/app/main/ui/workspace/context_menu.cljs:711
+#: src/app/main/ui/workspace/context_menu.cljs:727
msgid "workspace.context-menu.grid-track.row.duplicate"
msgstr "Duplicera rad"
@@ -4390,11 +4384,11 @@ msgstr "Duplicera rad"
msgid "workspace.focus.focus-mode"
msgstr "Fokusläge"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Fokusera av"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Fokusera på"
@@ -4552,37 +4546,36 @@ msgstr "Växla till ljust tema"
msgid "workspace.header.menu.undo"
msgstr "Ångra"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Återställ"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Fel vid sparandet"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Sparad"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Sparar"
-#: src/app/main/ui/workspace/right_header.cljs:255
+#: src/app/main/ui/workspace/right_header.cljs:221
msgid "workspace.header.share"
msgstr "Dela"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Osparade ändringar"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "Visningsläge (%s)"
-#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "Zoom"
@@ -4594,7 +4587,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:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Zooma för att få plats med alla"
@@ -4602,19 +4595,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:136
+#: src/app/main/ui/workspace/right_header.cljs:104
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:607
+#: 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:616
msgid "workspace.layout_grid.editor.options.edit-grid"
msgstr "Redigera grid"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
msgid "workspace.layout_grid.editor.options.exit"
msgstr "Avsluta"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:478
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
msgid "workspace.layout_grid.editor.padding.expand"
msgstr "Visa padding-inställningar för 4 sidor"
@@ -4630,7 +4623,7 @@ msgstr "Klart"
msgid "workspace.layout_grid.editor.top-bar.locate"
msgstr "Lokalisera"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1321
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
msgstr "Lokalisera rutnätslayout"
@@ -4639,7 +4632,7 @@ msgstr "Lokalisera rutnätslayout"
msgid "workspace.libraries.add"
msgstr "Lägg till"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s färger"
@@ -4669,43 +4662,43 @@ msgstr "Nyligen använda färger"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "RGB komplementerande"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Spara färgstil"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:374
+#: src/app/main/ui/workspace/libraries.cljs:371
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:368
+#: src/app/main/ui/workspace/libraries.cljs:365
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:372
+#: src/app/main/ui/workspace/libraries.cljs:369
msgid "workspace.libraries.empty.some-templates"
msgstr "några mallar här"
-#: src/app/main/ui/workspace/libraries.cljs:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Filbibliotek"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "BIBLIOTEK I DENNA FIL"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "BIBLIOTEK"
@@ -4714,71 +4707,64 @@ msgstr "BIBLIOTEK"
msgid "workspace.libraries.library"
msgstr "BIBLIOTEK"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "BIBLIOTEKUPDATERINGAR"
-#: src/app/main/ui/workspace/libraries.cljs:363
+#: src/app/main/ui/workspace/libraries.cljs:360
msgid "workspace.libraries.loading"
msgstr "Laddar…"
#: src/app/main/ui/workspace/libraries.cljs:387
+#, unused
msgid "workspace.libraries.more-templates"
msgstr "Du kan titta efter "
-#: src/app/main/ui/workspace/libraries.cljs:391
-msgid "workspace.libraries.more-templates-link"
-msgstr "fler mallar här"
-
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "Det finns inga delade bibliotek som behöver uppdateras"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Inga träffar hittades för ”%s”"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Det finns inga delade bibliotek"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Sök delade bibliotek"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "DELADE BIBLIOTEK"
-#: src/app/main/ui/workspace/libraries.cljs:355
+#: src/app/main/ui/workspace/libraries.cljs:352
msgid "workspace.libraries.shared-library-btn"
msgstr "Anslut bibliotek"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Flera typografier"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Avlänka alla typografier"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:326
+#: src/app/main/ui/workspace/libraries.cljs:323
msgid "workspace.libraries.unlink-library-btn"
msgstr "Koppla från biblioteket"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Uppdatera"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "se alla ändringar"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "UPDATERINGAR"
@@ -4810,43 +4796,43 @@ msgstr "Oskärpemarkering"
msgid "workspace.options.blur-options.toggle-blur"
msgstr "Växla oskärpa"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Canvas bakgrund"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Innehåll i urklipp"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Komponent"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "Anteckning"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "Kopiera"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "Skapa en anteckning"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Redigera en anteckning"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Huvuddel"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:416
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
msgid "workspace.options.component.swap"
msgstr "Växla komponent"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:460
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
msgid "workspace.options.component.swap.empty"
msgstr "Det finns inga tillgångar i detta bibliotek"
@@ -4894,7 +4880,7 @@ msgstr "Topp & Botten"
msgid "workspace.options.design"
msgstr "Design"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Exportera"
@@ -4903,21 +4889,21 @@ msgstr "Exportera"
msgid "workspace.options.export-multiple"
msgstr "Exportera markerade"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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:187
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188
msgid "workspace.options.export.add-export"
msgstr "Lägg till export"
-#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:199, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:234
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235
msgid "workspace.options.export.remove-export"
msgstr "Ta bort export"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Suffix"
@@ -4925,7 +4911,7 @@ msgstr "Suffix"
msgid "workspace.options.exporting-complete"
msgstr "Exporten lyckades"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Exporterar…"
@@ -5087,7 +5073,7 @@ msgstr "Guidelinjer"
msgid "workspace.options.guides.toggle-guide"
msgstr "Växla guide"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Höjd"
@@ -5410,19 +5396,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:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Max.höjd"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Max.bredd"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Min.höjd"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Min.bredd"
@@ -5536,11 +5522,11 @@ msgstr "utrymme mellan"
msgid "workspace.options.layout.top"
msgstr "Topp"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Fler färger"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Fler biblioteksfärger"
@@ -5585,7 +5571,7 @@ msgstr "Dra ihop oberoende radie"
msgid "workspace.options.radius.show-single-corners"
msgstr "Visa oberoende radie"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Nyligen"
@@ -5593,11 +5579,11 @@ msgstr "Nyligen"
msgid "workspace.options.retry"
msgstr "Försök igen"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Rotering"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Sök teckensnitt"
@@ -5605,7 +5591,7 @@ msgstr "Sök teckensnitt"
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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Markerade färger"
@@ -5617,55 +5603,55 @@ msgstr "Fyllning inom markering"
msgid "workspace.options.selection-stroke"
msgstr "Markeringskontur"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:292
msgid "workspace.options.shadow-options.add-shadow"
msgstr "Lägg till skugga"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Oskärpa"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Skuggfärg"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Släpskugga"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Innerskugga"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:180, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:318
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
msgid "workspace.options.shadow-options.remove-shadow"
msgstr "Ta bort skugga"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Spridning"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Skugga"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Gruppskugga"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Urvalda skuggor"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:176
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:144
msgid "workspace.options.shadow-options.toggle-shadow"
msgstr "Växla skugga"
@@ -5673,7 +5659,7 @@ msgstr "Växla skugga"
msgid "workspace.options.show-fill-on-export"
msgstr "Visa i exporter"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Visa i visningsläge"
@@ -5681,7 +5667,7 @@ msgstr "Visa i visningsläge"
msgid "workspace.options.size"
msgstr "Storlek"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Storleksinställningar"
@@ -5750,7 +5736,7 @@ msgstr "Triangel"
msgid "workspace.options.stroke-color"
msgstr "Konturfärg"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Konturbredd"
@@ -5822,11 +5808,11 @@ msgstr "Autobredd"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Fast"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Teckenavstånd"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Radavstånd"
@@ -5890,15 +5876,15 @@ msgstr "Versaler"
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:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Bredd"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "X axel"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Y axel"
@@ -6075,123 +6061,123 @@ msgstr "'%s' PLUGIN ÄR INSTALLERAD FÖR DIN ANVÄNDARE!"
msgid "workspace.plugins.try-out.try"
msgstr "TESTA PLUGIN"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Lägg till flex layout"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "Lägg till grid layout"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1004, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1030
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1013, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039
msgid "workspace.shape.menu.add-layout"
msgstr "Lägg till layout"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "Flytta längst bak"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Flytta bakåt"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Kopiera"
-#: src/app/main/ui/workspace/context_menu.cljs:203
+#: src/app/main/ui/workspace/context_menu.cljs:204
msgid "workspace.shape.menu.copy-css"
msgstr "Kopiera som CSS"
-#: src/app/main/ui/workspace/context_menu.cljs:205
+#: src/app/main/ui/workspace/context_menu.cljs:206
msgid "workspace.shape.menu.copy-css-nested"
msgstr "Kopiera som CSS (nästlade lager)"
-#: src/app/main/ui/workspace/context_menu.cljs:188
+#: src/app/main/ui/workspace/context_menu.cljs:189
msgid "workspace.shape.menu.copy-link"
msgstr "Kopiera länken till urklipp"
-#: src/app/main/ui/workspace/context_menu.cljs:201
+#: src/app/main/ui/workspace/context_menu.cljs:202
msgid "workspace.shape.menu.copy-paste-as"
msgstr "Kopiera/Klistra in som ..."
-#: src/app/main/ui/workspace/context_menu.cljs:213
+#: src/app/main/ui/workspace/context_menu.cljs:214
msgid "workspace.shape.menu.copy-props"
msgstr "Kopiera egenskaper"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "Skapa anteckning"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Markering till tavla"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Skapa komponent"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Skapa flera komponenter"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Klipp ut"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Radera"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Ta bort flödesstart"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Koppla från instans"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Koppla från instanser"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Skillnad"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Duplicera"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Redigera"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Exkludera"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Platta ut"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Vänd horisontellt"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Vänd vertikalt"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Flödesstart"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Flytta framåt"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Flytta längst fram"
@@ -6200,107 +6186,107 @@ msgstr "Flytta längst fram"
msgid "workspace.shape.menu.go-main"
msgstr "Gå till huvudkomponentfil"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Grupp"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Dölj"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Via / Dölj UI"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Intersektion"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Lås"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Mask"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Klistra in"
-#: src/app/main/ui/workspace/context_menu.cljs:217
+#: src/app/main/ui/workspace/context_menu.cljs:218
msgid "workspace.shape.menu.paste-props"
msgstr "Klista in egenskaper"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Bana"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Ta bort flex layout"
-#: src/app/main/ui/workspace/context_menu.cljs:531
+#: src/app/main/ui/workspace/context_menu.cljs:535
msgid "workspace.shape.menu.remove-grid"
msgstr "Ta bort grid layout"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1022
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1031
msgid "workspace.shape.menu.remove-layout"
msgstr "Ta bort layout"
-#: src/app/main/ui/workspace/context_menu.cljs:312
+#: src/app/main/ui/workspace/context_menu.cljs:313
msgid "workspace.shape.menu.rename"
msgstr "Byt namn"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Återställ standardvärden"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Återställ huvudkomponent"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Välj lager"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Visa"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Visa i tillgångspanelen"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Visa huvudkomponent"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Ta bort miniatyrbild"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Ställ in som miniatyrbild"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Gör om till bana"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Avgruppera"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Sammanfoga"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Lås upp"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Avmaska"
@@ -6309,7 +6295,7 @@ msgstr "Avmaska"
msgid "workspace.shape.menu.update-components-in-bulk"
msgstr "Uppdatera huvudkomponenter"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Uppdatera huvudkomponent"
@@ -6321,11 +6307,11 @@ msgstr "Minimera sidonavigation"
msgid "workspace.sidebar.expand"
msgstr "Expandera sidonavigation"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Historia"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Lager"
@@ -6361,7 +6347,7 @@ msgstr "Former"
msgid "workspace.sidebar.layers.texts"
msgstr "Texter"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Importerade SVG attribut"
@@ -6373,7 +6359,7 @@ msgstr "Sidor"
msgid "workspace.sidebar.sitemap.add-page"
msgstr "Lägg till sida"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Översiktsplan"
@@ -6391,43 +6377,39 @@ msgstr "%s aktiva teman"
msgid "workspace.token.add set"
msgstr "Lägg till uppsättning"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:341
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:391
msgid "workspace.token.back-to-themes"
msgstr "Tillbaka till temalista"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:51
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:54
msgid "workspace.token.create-new-theme"
msgstr "Skapa ditt första tema nu."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:191, src/app/main/ui/workspace/tokens/sidebar.cljs:218
+#: src/app/main/ui/workspace/tokens/sets.cljs:134, src/app/main/ui/workspace/tokens/sidebar.cljs:190
msgid "workspace.token.create-one"
msgstr "Skapa ett."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159, src/app/main/ui/workspace/tokens/modals/themes.cljs:237
-msgid "workspace.token.create-theme-title"
-msgstr "Skapa tema"
-
-#: src/app/main/ui/workspace/tokens/form.cljs:431
+#: src/app/main/ui/workspace/tokens/form.cljs:492
msgid "workspace.token.create-token"
msgstr "Skapa en ny %s token"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:228
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:278
msgid "workspace.token.delete"
msgstr "Ta bort token"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:151
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159
msgid "workspace.token.delete-theme-title"
msgstr "Ta bort tema"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:225
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:275
msgid "workspace.token.duplicate"
msgstr "Duplicera token"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:212
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:262
msgid "workspace.token.edit"
msgstr "Redigera token"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:333
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:383
msgid "workspace.token.edit-theme-title"
msgstr "Redigera tema"
@@ -6435,15 +6417,15 @@ msgstr "Redigera tema"
msgid "workspace.token.edit-themes"
msgstr "Redigera teman"
-#: src/app/main/ui/workspace/tokens/form.cljs:430
+#: src/app/main/ui/workspace/tokens/form.cljs:491
msgid "workspace.token.edit-token"
msgstr "Redigera token"
-#: src/app/main/ui/workspace/tokens/form.cljs:481
+#: src/app/main/ui/workspace/tokens/form.cljs:544
msgid "workspace.token.enter-token-description"
msgstr "Lägg till en beskrivning (valfritt)"
-#: src/app/main/ui/workspace/tokens/form.cljs:437
+#: src/app/main/ui/workspace/tokens/form.cljs:498
msgid "workspace.token.enter-token-name"
msgstr "Ange %s tokennamn"
@@ -6452,88 +6434,71 @@ msgstr "Ange %s tokennamn"
msgid "workspace.token.grouping-set-alert"
msgstr "Gruppering av Token Set stöds inte."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:56
-msgid "workspace.token.new-theme"
-msgstr "Nytt tema"
-
-#: src/app/main/ui/workspace/tokens/theme_select.cljs:88
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:89
msgid "workspace.token.no-active-theme"
msgstr "Inget tema aktiverat"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:146
-msgid "workspace.token.no-sets"
-msgstr "Inga uppsättningar"
-
-#: src/app/main/ui/workspace/tokens/sets.cljs:401, src/app/main/ui/workspace/tokens/sets.cljs:405
+#: src/app/main/ui/workspace/tokens/sets.cljs:504
msgid "workspace.token.no-sets-create"
msgstr "Det finns inga uppsättningar definierade. Skapa ett först."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:215, src/app/main/ui/workspace/tokens/sidebar.cljs:221
+#: src/app/main/ui/workspace/tokens/sets.cljs:131, src/app/main/ui/workspace/tokens/sets.cljs:137
msgid "workspace.token.no-sets-yet"
msgstr "Det finns inga uppsättningar."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:187
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:186
msgid "workspace.token.no-themes"
msgstr "Det finns inga teman."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:47
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:50
msgid "workspace.token.no-themes-currently"
msgstr "Du har för närvarande inga teman."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:137
-msgid "workspace.token.num-sets"
-msgstr "%s uppsättningar"
-
-#: src/app/main/ui/workspace/tokens/token_pill.cljs:114
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:122
#, fuzzy
msgid "workspace.token.original-value"
msgstr "Originalvärde: "
-#: src/app/main/ui/workspace/tokens/form.cljs:205, src/app/main/ui/workspace/tokens/form.cljs:208, src/app/main/ui/workspace/tokens/token_pill.cljs:115
+#: src/app/main/ui/workspace/tokens/form.cljs:217, src/app/main/ui/workspace/tokens/form.cljs:221, src/app/main/ui/workspace/tokens/token_pill.cljs:123
#, fuzzy
msgid "workspace.token.resolved-value"
msgstr "Lösta värden: "
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:203
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:240
msgid "workspace.token.save-theme"
msgstr "Spara tema"
-#: src/app/main/ui/workspace/tokens/sets.cljs:200, src/app/main/ui/workspace/tokens/sets.cljs:305
+#: src/app/main/ui/workspace/tokens/sets.cljs:239, src/app/main/ui/workspace/tokens/sets.cljs:340
msgid "workspace.token.select-set"
msgstr "Välj uppsättning."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:346
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:396
msgid "workspace.token.set-selection-theme"
msgstr ""
"Definiera vilka tokenuppsättningar som ska användas som en del av detta "
"temaalternativ:"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs
-#, unused
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:136
msgid "workspace.token.theme-name"
msgstr "Tema %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:43, src/app/main/ui/workspace/tokens/modals/themes.cljs:88
-msgid "workspace.token.themes"
-msgstr "Teman"
-
-#: src/app/main/ui/workspace/tokens/form.cljs:482
+#: src/app/main/ui/workspace/tokens/form.cljs:545
msgid "workspace.token.token-description"
msgstr "Beskrivning"
-#: src/app/main/ui/workspace/tokens/form.cljs:440
+#: src/app/main/ui/workspace/tokens/form.cljs:501
msgid "workspace.token.token-name"
msgstr "Namn"
-#: src/app/main/ui/workspace/tokens/form.cljs:464
+#: src/app/main/ui/workspace/tokens/form.cljs:526
msgid "workspace.token.token-value"
msgstr "Värde"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:348
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:405
msgid "workspace.token.tools"
msgstr "Verktyg"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Tillgångar"
@@ -6541,39 +6506,39 @@ msgstr "Tillgångar"
msgid "workspace.toolbar.color-palette"
msgstr "Färgpalett (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Kommentarer (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Kurva (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Ellips (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Tavla (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Bild (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Flytta (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Bana (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:201, src/app/main/ui/workspace/top_toolbar.cljs:202
+#: src/app/main/ui/workspace/top_toolbar.cljs:210, src/app/main/ui/workspace/top_toolbar.cljs:211
msgid "workspace.toolbar.plugins"
msgstr "Plugins (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Rektangel (%s)"
@@ -6582,7 +6547,7 @@ msgstr "Rektangel (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Genvägar (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Text (%s)"
@@ -6590,7 +6555,7 @@ msgstr "Text (%s)"
msgid "workspace.toolbar.text-palette"
msgstr "Typografier (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:220, src/app/main/ui/workspace/top_toolbar.cljs:221
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
msgid "workspace.toolbar.toggle-toolbar"
msgstr "Växla verktygsfält"
@@ -6748,19 +6713,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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Avfärda"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
msgid "workspace.updates.more-info"
msgstr "Mer info"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
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:1226
msgid "workspace.updates.update"
msgstr "Uppdatera"
@@ -6820,11 +6785,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:284
+#: src/app/main/ui/workspace/sidebar.cljs:285
msgid "workspace.versions.tab.actions"
msgstr "Åtgärder"
-#: src/app/main/ui/workspace/sidebar.cljs:281
+#: src/app/main/ui/workspace/sidebar.cljs:282
msgid "workspace.versions.tab.history"
msgstr "Historik"
diff --git a/frontend/translations/ta.po b/frontend/translations/ta.po
index 685706897b..21fae47a31 100644
--- a/frontend/translations/ta.po
+++ b/frontend/translations/ta.po
@@ -34,13 +34,13 @@ msgstr "டெமோ கணக்கை உருவாக்கவும்"
msgid "auth.create-demo-profile"
msgstr "அதை முயற்சி செய்ய வேண்டுமா?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"இது ஒரு டெமோ சேவை, உண்மையான வேலைக்கு பயன்படுத்த வேண்டாம், திட்டங்கள் "
"அவ்வப்போது அழிக்கப்படும்."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "கடவுச்சொல்லை மறந்துவிட்டீர்களா?"
@@ -52,27 +52,27 @@ msgstr "முழு பெயர்"
msgid "auth.login-here"
msgstr "இங்கே உள்நுழைக"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "உள்நுழை"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "கிட்லேப்"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "கூகுள்"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "ஓப்பன் ஐடி"
@@ -98,7 +98,7 @@ msgstr "கடவுச்சொல் மீட்பு இணைப்பு
msgid "auth.notifications.team-invitation-accepted"
msgstr "அணியில் வெற்றிகரமாக இணைந்தார்"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "கடவுச்சொல்"
@@ -126,11 +126,11 @@ msgstr "கடவுச்சொல்லை மறந்துவிட்
msgid "auth.recovery-submit"
msgstr "உங்கள் கடவுச்சொல்லை மாற்றுக"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "இன்னும் கணக்கு இல்லையா?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "ஒரு கணக்கை உருவாக்கவும்"
@@ -143,7 +143,7 @@ msgstr "ஒரு கணக்கை உருவாக்கவும்"
msgid "auth.sidebar-tagline"
msgstr "வடிவமைப்பு மற்றும் முன்மாதிரிக்கான திறந்த மூல தீர்வு."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "சேவை விதிமுறைகள்"
@@ -151,7 +151,7 @@ msgstr "சேவை விதிமுறைகள்"
msgid "auth.verification-email-sent"
msgstr "சரிபார்ப்பு மின்னஞ்சலை அனுப்பியுள்ளோம் இந்த முகவரிக்கு"
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "வெளியிடுங்கள்"
diff --git a/frontend/translations/th.po b/frontend/translations/th.po
index 0f884457a1..31649d84f4 100644
--- a/frontend/translations/th.po
+++ b/frontend/translations/th.po
@@ -1,6 +1,6 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2024-12-28 16:02+0000\n"
+"PO-Revision-Date: 2025-02-04 21:02+0000\n"
"Last-Translator: Late Night Defender \n"
"Language-Team: Thai "
" \n"
@@ -31,13 +31,13 @@ msgstr "ยืนยันรหัสผ่าน"
msgid "auth.create-demo-account"
msgstr "สร้างบัญชีสาธิตการใช้งาน"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"บริการนี้มีไว้สำหรับสาธิตการใช้งาน ห้ามใช้สำหรับชิ้นงานจริง "
"เนื่องจากข้อมูลจะถูกลบเป็นระยะ ๆ"
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "ลืมรหัสผ่าน?"
@@ -45,7 +45,7 @@ msgstr "ลืมรหัสผ่าน?"
msgid "auth.fullname"
msgstr "ชื่อเต็ม"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "ลงชื่อเข้าใช้บัญชีของฉัน"
@@ -53,31 +53,31 @@ msgstr "ลงชื่อเข้าใช้บัญชีของฉัน
msgid "auth.login-here"
msgstr "ลงชื่อเข้าใช้ที่นี่"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "ลงชื่อเข้าใช้"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr "Penpot เป็นเครื่องมือออกแบบที่ฟรีและโอเพนซอร์สสำหรับการดีไซน์และโค้ดร่วมกัน"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -101,7 +101,7 @@ msgstr "ลิงก์กู้คืนรหัสผ่านถูกส่
msgid "auth.notifications.team-invitation-accepted"
msgstr "เข้าร่วมทีมสำเร็จ"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "รหัสผ่าน"
@@ -125,7 +125,7 @@ msgstr "ลืมรหัสผ่าน?"
msgid "auth.recovery-submit"
msgstr "เปลี่ยนรหัสผ่านของคุณ"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "ยังไม่มีบัญชี?"
@@ -137,7 +137,7 @@ msgstr "เราควรเรียกคุณในแดชบอร์ด
msgid "auth.register-account-title"
msgstr "ชื่อของคุณ"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "สร้างบัญชี"
@@ -162,7 +162,7 @@ msgstr "โซลูชันโอเพนซอร์สสำหรับก
msgid "auth.terms-and-privacy-agreement"
msgstr "ฉันยอมรับ [ข้อกำหนดการให้บริการ](%s)และ[นโยบายความเป็นส่วนตัว](%s)"
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "เงื่อนไขการให้บริการ"
@@ -174,7 +174,7 @@ msgstr "เมื่อคุณสร้างบัญชี คุณยอ
msgid "auth.verification-email-sent"
msgstr "เราได้ส่งอีเมลยืนยันให้กับ"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "อีเมลทำงาน"
@@ -247,6 +247,16 @@ msgstr "เลือกทั้งหมด"
msgid "dasboard.team-hero.management"
msgstr "การจัดการทีม"
+#: src/app/main/ui/dashboard/projects.cljs:90
+msgid "dasboard.team-hero.text"
+msgstr ""
+"Penpot เป็นเครื่องมือสำหรับการทำงานเป็นทีม "
+"เชิญชวนสมาชิกมาทำงานด้วยกันผ่านโปรเจกต์และไฟล์ต่าง ๆ เลย"
+
+#: src/app/main/ui/dashboard/projects.cljs:88
+msgid "dasboard.team-hero.title"
+msgstr "รวบรวมทีมเลย!"
+
#: src/app/main/ui/dashboard/projects.cljs
#, unused
msgid "dasboard.tutorial-hero.info"
@@ -256,7 +266,7 @@ msgstr "เรียนรู้การใช้งาน Penpot เบื้
msgid "dashboard.access-tokens.copied-success"
msgstr "คัดลอกโทเคนแล้ว"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "สร้างโทเคนใหม่"
@@ -264,11 +274,11 @@ msgstr "สร้างโทเคนใหม่"
msgid "dashboard.access-tokens.create.success"
msgstr "สร้างโทเคนสำหรับการเข้าถึงสำเร็จแล้ว"
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "กดปุ่ม \"สร้างโทเคนใหม่\" เพื่อสร้างโทเคน"
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "คุณยังไม่มีโทเคนที่สร้างไว้"
@@ -292,23 +302,23 @@ msgstr "90 วัน"
msgid "dashboard.access-tokens.expiration-never"
msgstr "ไม่มีวันหมดอายุ"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "หมดอายุแล้วเมื่อ %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "จะหมดอายุเมื่อ %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "ไม่มีวันหมดอายุ"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "โทเคนการเข้าถึงส่วนบุคคล"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"โทเคนการเข้าถึงส่วนบุคคลจะทำงานใกล้เคียงกับการยืนยันตัวตนด้วยชื่อผู้ใช้/"
@@ -327,7 +337,7 @@ msgstr "โทเคนนี้ไม่มีวันหมดอายุ"
msgid "dashboard.change-email"
msgstr "เปลี่ยนอีเมล"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(คัดลอก)"
@@ -351,23 +361,23 @@ msgstr "ดาวน์โหลดไฟล์ Penpot (.penpot)"
msgid "dashboard.download-standard-file"
msgstr "ดาวน์โหลดไฟล์มาตรฐาน (.svg + .json)"
-#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:285
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
msgid "dashboard.empty-placeholder-drafts-subtitle"
msgstr "เมื่อสมาชิกโปรเจกต์สร้างแบบร่าง จะปรากฏที่นี่"
-#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:280
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
msgid "dashboard.empty-placeholder-drafts-title"
msgstr "ยังไม่มีแบบร่าง"
-#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:286
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
msgid "dashboard.empty-placeholder-files-subtitle"
msgstr "เมื่อสมาชิกของโปรเจกต์สร้างไฟล์ จะแสดงผลที่นี่"
-#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:281
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
msgid "dashboard.empty-placeholder-files-title"
msgstr "ยังไม่มีไฟล์"
-#: src/app/main/ui/dashboard/placeholder.cljs:40
+#: src/app/main/ui/dashboard/placeholder.cljs:77
#, markdown
msgid "dashboard.empty-placeholder-libraries"
msgstr ""
@@ -383,11 +393,11 @@ msgstr ""
"ลองแชร์ไฟล์ของคุณหรือเพิ่มจาก[ไลบรารีและเทมเพลต](https://penpot.app/"
"libraries-templates)ของเรา"
-#: src/app/main/ui/dashboard/placeholder.cljs:36
+#: src/app/main/ui/dashboard/placeholder.cljs:73
msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role"
msgstr "ไลบรารีที่เพิ่มลงในโปรเจกต์จะปรากฏที่นี่"
-#: src/app/main/ui/dashboard/placeholder.cljs:33
+#: src/app/main/ui/dashboard/placeholder.cljs:70
msgid "dashboard.empty-placeholder-libraries-title"
msgstr "ยังไม่มีไลบรารี"
@@ -423,42 +433,41 @@ msgstr "ดาวน์โหลด %s ไฟล์มาตรฐาน (.svg +
msgid "dashboard.export.title"
msgstr "ส่งออกไฟล์"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "ฟอนต์ที่หายไป"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "ฟอนต์ที่กำหนดเองที่คุณอัปโหลดจะปรากฏที่นี่"
-#: src/app/main/ui/dashboard/fonts.cljs:448
+#: src/app/main/ui/dashboard/fonts.cljs:450
msgid "dashboard.fonts.empty-placeholder-viewer"
msgstr "ยังไม่มีฟอนต์ที่กำหนดเอง"
-#: src/app/main/ui/dashboard/fonts.cljs:449
+#: src/app/main/ui/dashboard/fonts.cljs:451
msgid "dashboard.fonts.empty-placeholder-viewer-sub"
msgstr "เมื่อสมาชิกโปรเจกต์เพิ่มฟอนต์ที่กำหนดเอง จะปรากฏที่นี่"
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "เพิ่มแล้ว %s ฟอนต์"
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"คุณควรอัปโหลดเฉพาะฟอนต์ที่คุณเป็นเจ้าของหรือมีสิทธิ์ในการใช้งานใน Penpot "
-"ดูรายละอียดเพิ่มเติมในส่วนเนื้อหาของ[ข้อกำหนดการให้บริการของ "
-"Penpot](%s) "
+"ดูรายละอียดเพิ่มเติมในส่วนเนื้อหาของ[ข้อกำหนดการให้บริการของ Penpot](%s) "
"นอกจากนี้คุณอาจต้องการอ่านเพิ่มเติมเกี่ยวกับ[ลิขสิทธิ์ฟอนต์](https://www."
"typography.com/faq)"
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "อัปโหลดทั้งหมด"
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "นำเข้าไฟล์ Penpot"
@@ -470,12 +479,12 @@ msgstr "ไม่สามารถนำเข้าไฟล์นี้ได
msgid "dashboard.import.import-error"
msgstr "พบปัญหาในการนำเข้าไฟล์ ไฟล์นี้จึงไม่ถูกนำเข้า"
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgid_plural "dashboard.import.import-message"
msgstr[0] "นำเข้าสำเร็จแล้ว %s ไฟล์"
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "บางไฟล์มีวัตถุที่ไม่ถูกต้อง ซึ่งถูกนำออกให้แล้ว"
@@ -507,23 +516,23 @@ msgstr "กำลังอัปโหลดไฟล์: %s"
msgid "dashboard.leave-team"
msgstr "ออกจากทีม"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "ไลบรารีและเทมเพลต"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "พบปัญหาในการนำเข้าเทมเพลต เทมเพลตนี้จึงไม่ถูกนำเข้า"
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "ไลบรารี"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "กำลังโหลดไฟล์ของคุณ…"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "กำลังโหลดฟอนต์ของคุณ…"
@@ -539,11 +548,11 @@ msgstr "ย้าน %s ไฟล์ไปยัง"
msgid "dashboard.move-to-other-team"
msgstr "ย้ายไปยังทีมอื่น"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ สร้างไฟล์ใหม่"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "สร้างไฟล์ใหม่"
@@ -551,7 +560,7 @@ msgstr "สร้างไฟล์ใหม่"
msgid "dashboard.new-project"
msgstr "+ สร้างโปรเจกต์ใหม่"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "สร้างโปรเจกต์ใหม่"
@@ -567,7 +576,7 @@ msgstr "บันทึกรหัสผ่านแล้ว"
msgid "dashboard.open-in-new-tab"
msgstr "เปิดไฟล์ในแท็บใหม่"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "ตัวเลือก"
@@ -603,7 +612,7 @@ msgstr "เลือกภาษาของ UI"
msgid "dashboard.select-ui-theme"
msgstr "เลือกธีม"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "แสดงไฟล์ทั้งหมด"
@@ -659,7 +668,7 @@ msgstr "อีเมล"
msgid "dashboard.your-name"
msgstr "ชื่อของคุณ"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Penpot ของคุณ"
@@ -667,7 +676,7 @@ msgstr "Penpot ของคุณ"
msgid "ds.confirm-allow"
msgstr "อนุญาต"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "ยกเลิก"
@@ -702,12 +711,11 @@ msgstr "กรุณาใส่อีเมลที่ถูกต้อง"
msgid "errors.password-too-short"
msgstr "รหัสผ่านต้องมีอย่างน้อย 8 ตัวอักษร"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "อีเมลหรือรหัสผ่านไม่ถูกต้อง"
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "รหัสผ่านเดิมไม่ถูกต้อง"
@@ -729,7 +737,7 @@ msgstr "ความสูง"
msgid "inspect.attributes.layout.left"
msgstr "ซ้าย"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "เงา"
@@ -738,27 +746,27 @@ msgstr "เงา"
msgid "inspect.attributes.stroke.width"
msgstr "ความกว้าง"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "ขนาดฟอนต์"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "ระยะห่างระหว่างตัวอักษร"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "โคด"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "บอร์ด"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "ชุมชน"
@@ -786,7 +794,7 @@ msgstr "ฟอนต์ที่กำหนดเอง"
msgid "labels.dashboard"
msgstr "แดชบอร์ด"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "แก้ไข"
@@ -794,7 +802,7 @@ msgstr "แก้ไข"
msgid "labels.editor"
msgstr "เอดิเตอร์"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "ส่งออก"
@@ -802,7 +810,7 @@ msgstr "ส่งออก"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "ฟอนต์"
@@ -814,15 +822,15 @@ msgstr "กราฟิกดีไซน์"
msgid "labels.language"
msgstr "ภาษา"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "ไลบรารีและเทมเพลต"
-#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:114, src/app/main/ui/dashboard/grid.cljs:133, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:53, src/app/main/ui/ds/product/loader.cljs:52, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:126, src/app/main/ui.cljs:67, src/app/main/ui.cljs:105, src/app/main/ui.cljs:124
+#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:115, src/app/main/ui/dashboard/grid.cljs:134, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:98, src/app/main/ui/ds/product/loader.cljs:85, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:118, src/app/main/ui.cljs:66, src/app/main/ui.cljs:104, src/app/main/ui.cljs:123
msgid "labels.loading"
msgstr "กำลังโหลด…"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "ลงชื่อออก"
diff --git a/frontend/translations/tr.po b/frontend/translations/tr.po
index b242086328..df0cfe0408 100644
--- a/frontend/translations/tr.po
+++ b/frontend/translations/tr.po
@@ -38,13 +38,13 @@ msgstr "Demo hesabı oluştur"
msgid "auth.create-demo-profile"
msgstr "Sadece denemek mi istiyorsun?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Bu bir DEMO hizmettir, gerçek işleriniz için KULLANMAYIN, projeler belirli "
"aralıklarla silinecektir."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Parolanı mı unuttun?"
@@ -52,7 +52,7 @@ msgstr "Parolanı mı unuttun?"
msgid "auth.fullname"
msgstr "Tam Adın"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "Hesabımda oturum aç"
@@ -60,33 +60,33 @@ msgstr "Hesabımda oturum aç"
msgid "auth.login-here"
msgstr "Buradan oturum açın."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Oturum aç"
-#: src/app/main/ui/auth/login.cljs:286
+#: 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 "
"aracıdır"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -110,7 +110,7 @@ msgstr "Parola kurtarma bağlantısı e-posta kutuna gönderildi."
msgid "auth.notifications.team-invitation-accepted"
msgstr "Takıma başarıyla katıldın"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Parola"
@@ -138,7 +138,7 @@ msgstr "Parolanı mı unuttun?"
msgid "auth.recovery-submit"
msgstr "Parolanı değiştir"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Henüz hesabın yok mu?"
@@ -150,7 +150,7 @@ msgstr "Denetim panelinde ve e-postalarda size ne dememiz gerektiğini belirtin.
msgid "auth.register-account-title"
msgstr "Adınız"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Bir hesap oluştur"
@@ -175,7 +175,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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Hizmet şartları"
@@ -189,7 +189,7 @@ msgstr ""
msgid "auth.verification-email-sent"
msgstr "Onay e-postanı şu adrese gönderdik"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "İş e-postası"
@@ -198,7 +198,7 @@ msgstr "İş e-postası"
msgid "branding-illustrations-marketing-pieces"
msgstr "...marka çalışması, çizimler, pazarlama materyalleri, vb."
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Yayınla"
@@ -270,7 +270,7 @@ msgstr "Prototipleri paylaş"
msgid "common.share-link.view-all"
msgstr "Tümünü Seç"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Yayından kaldır"
@@ -324,7 +324,7 @@ msgstr "Arayüz İncelemesi"
msgid "dashboard.access-tokens.copied-success"
msgstr "Belirteç kopyalandı"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Yeni belirteç oluştur"
@@ -332,11 +332,11 @@ msgstr "Yeni belirteç oluştur"
msgid "dashboard.access-tokens.create.success"
msgstr "Erişim belirteci başarıyla oluşturuldu."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Bir belirteç oluşturmak için \"Yeni belirteç oluştur\" düğmesine basın."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "Şu ana kadar hiç belirteciniz yok."
@@ -360,23 +360,23 @@ msgstr "90 gün"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Asla"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "%s tarihinde sona erdi"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "%s tarihinde sona eriyor"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Süresiz"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Kişisel erişim belirteçleri"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Kişisel erişim belirteçleri, oturum açma/parola kimlik doğrulama "
@@ -399,7 +399,7 @@ 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:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(kopya)"
@@ -521,25 +521,25 @@ msgstr "Dosya kütüphanelerine paylaşılan kütüphane varlıklarını dahil e
msgid "dashboard.export.title"
msgstr "Dosyaları dışarı aktar"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Yazı tipi silindi"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Hepsini kapat"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "Yüklediğiniz özel yazı tipleri burada görünecektir."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "1 yazı tipi eklendi"
msgstr[1] "%s yazı tipi eklendi"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -549,22 +549,21 @@ msgstr ""
"gruplandırılacak. Yazı tiplerini şu biçimlerde yükleyebilirsiniz: **TTF, "
"OTF ve WOFF** (yalnızca bir tane gerekli olacak)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"Sadece kendinize ait veya Penpot'ta kullanılabilecek bir lisansa sahip olan "
-"yazi tiplerini yükleyebilirsiniz. [Penpot'un Kullanım "
-"Şartları](%s) içindeki İçerik hakları bölümünden "
-"ayrıntılı bilgi alabilirsiniz. Ayrıca [yazı tipi "
-"lisanslama](https://www.typography.com/faq) hakkında daha fazla bilgi almak "
-"isteyebilirsiniz."
+"yazi tiplerini yükleyebilirsiniz. [Penpot'un Kullanım Şartları](%s) "
+"içindeki İçerik hakları bölümünden ayrıntılı bilgi alabilirsiniz. Ayrıca "
+"[yazı tipi lisanslama](https://www.typography.com/faq) hakkında daha fazla "
+"bilgi almak isteyebilirsiniz."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Tümünü karşıya yükle"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -575,7 +574,7 @@ msgstr ""
"hataları düzeltmek için [Transfonter](https://transfonter.org/) "
"kullanmanızı öneririz. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Penpot dosyalarını içe aktar"
@@ -593,13 +592,13 @@ msgstr ""
msgid "dashboard.import.import-error"
msgstr "Dosya içeri aktarılırken bir sorun oluştu. Dosya içeri aktarılmadı."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgid_plural "dashboard.import.import-message"
msgstr[0] "1 dosya başarıyla içeri aktarıldı."
msgstr[1] "%s dosya başarıyla içeri aktarıldı."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Bazı dosyalar kaldırılmış geçersiz nesneler içeriyordu."
@@ -639,27 +638,27 @@ msgstr "İnsanları davet et"
msgid "dashboard.leave-team"
msgstr "Takımdan ayrıl"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Kütüphaneler ve Şablonlar"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
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:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "Şablon içe aktarılırken bir sorun oluştu. Şablon içe aktarılmadı."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Paylaşılan Kütüphaneler"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "dosyalarınız yükleniyor …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "yazı tipleriniz yükleniyor…"
@@ -675,11 +674,11 @@ msgstr "%s dosyayı şuraya taşı"
msgid "dashboard.move-to-other-team"
msgstr "Başka takıma taşı"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Yeni Dosya"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Yeni Dosya"
@@ -687,7 +686,7 @@ msgstr "Yeni Dosya"
msgid "dashboard.new-project"
msgstr "+ Yeni Proje"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Yeni Proje"
@@ -719,7 +718,7 @@ msgstr "%s üye"
msgid "dashboard.open-in-new-tab"
msgstr "Dosyayı yeni sekmede aç"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Seçenekler"
@@ -764,7 +763,7 @@ msgstr "Arayüz dilini seç"
msgid "dashboard.select-ui-theme"
msgstr "Tema seç"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Tüm dosyaları göster"
@@ -788,7 +787,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Dosyan başarıyla taşındı"
@@ -883,7 +882,7 @@ msgstr "E-posta"
msgid "dashboard.your-name"
msgstr "Adın"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Penpot'un"
@@ -903,11 +902,11 @@ msgstr "Güncellenecek bileşenler:"
msgid "ds.confirm-allow"
msgstr "İzin ver"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "İptal"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Tamam"
@@ -919,7 +918,7 @@ msgstr "Emin misin?"
msgid "errors.auth-provider-not-allowed"
msgstr "Kimlik doğrulama sağlayıcısına bu profil için izin verilmiyor"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Kimlik doğrulama sağlayıcısı yapılandırılmadı."
@@ -927,11 +926,11 @@ msgstr "Kimlik doğrulama sağlayıcısı yapılandırılmadı."
msgid "errors.auth.unable-to-login"
msgstr "Kimliğiniz doğrulanmamış veya oturumun süresi dolmuş gibi görünüyor."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "%s yazı tipi yüklenemedi"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "%s yazı tipleri yüklenemedi"
@@ -939,7 +938,7 @@ msgstr "%s yazı tipleri yüklenemedi"
msgid "errors.cannot-upload"
msgstr "Medya dosyası yüklenemedi."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Tarayıcın bu işlemi gerçekleştiremiyor"
@@ -951,7 +950,7 @@ msgstr "E-posta zaten kullanımda"
msgid "errors.email-already-validated"
msgstr "E-posta zaten doğrulandı."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "E-postanızı parola olarak kullanamazsınız"
@@ -998,7 +997,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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Bir şeyler ters gitti."
@@ -1011,8 +1010,7 @@ msgstr "Geçersiz renk"
msgid "errors.invalid-email"
msgstr "Lütfen geçerli bir e-posta adresi girin"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "Doğrulama e-postası eşleşmiyor"
@@ -1028,7 +1026,7 @@ msgstr "Geçersiz davet"
msgid "errors.invite-invalid.info"
msgstr "Bu davet iptal edilmiş veya süresi dolmuş olabilir."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "LDAP ile oturum açma devre dışı bırakıldı."
@@ -1068,7 +1066,7 @@ msgstr "Parola en az 8 karakterden oluşmalı"
msgid "errors.paste-data-validation"
msgstr "Panoda geçersiz veri"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Profil engellendi"
@@ -1142,12 +1140,11 @@ msgstr "Doğrulamada beklenmeyen hata"
msgid "errors.webhooks.unexpected-status"
msgstr "Beklenmeyen durum %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "E-posta veya parola yanlış."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Eski parola yanlış"
@@ -1195,11 +1192,11 @@ msgstr "Teknik sorularınıza yardımcı olmak için buradayız."
msgid "feedback.twitter-title"
msgstr "X destek hesabı"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Bir hata oluştu"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Bulanıklık"
@@ -1207,31 +1204,31 @@ msgstr "Bulanıklık"
msgid "inspect.attributes.blur.value"
msgstr "Değer"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Doldur"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Kaynak görselini indir"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Yükseklik"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Genişlik"
@@ -1270,15 +1267,15 @@ msgstr "Üst"
msgid "inspect.attributes.layout.width"
msgstr "Genişlik"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Gölge"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Boyut ve konum"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Çerçeve"
@@ -1315,143 +1312,143 @@ msgstr "Düz"
msgid "inspect.attributes.stroke.width"
msgstr "Genişlik"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Tipografi"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Yazı Tipi Ailesi"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Yazı Tipi Boyutu"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Yazı Tipi Biçimi"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Yazı Tipi Kalınlığı"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Harf Aralığı"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Satır Yüksekliği"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Metin Süsleme"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Hiçbiri"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Üstü Çizili"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Altı Çizili"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Metin Dönüşümü"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Küçük Harf"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Hiçbiri"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "İlk Harfleri Büyük"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "Ayarlanmadı"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Büyük Harf"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
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/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "İnceleme hakkında daha fazla bilgi"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr ""
"Özelliklerini ve kodunu incelemek için bir şekil, çalışma yüzeyi veya grup "
"seçin"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Kod"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Daire"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Bileşen"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Eğri"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Çalışma yüzeyi"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Grup"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Görsel"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Maskele"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s Seçildi"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Yol"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Dikdörtgen"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Metin"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Bilgi"
@@ -1471,7 +1468,7 @@ msgstr "Erişim belirteçleri"
msgid "labels.active"
msgstr "Etkin"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Özel yazı tipi ekle"
@@ -1483,7 +1480,7 @@ msgstr "Yönetici"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Hepsi"
@@ -1505,7 +1502,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Hatalı Ağ Geçidi"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "İptal"
@@ -1513,15 +1510,15 @@ msgstr "İptal"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Kapat"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Yorumlar"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Topluluk"
@@ -1529,7 +1526,7 @@ msgstr "Topluluk"
msgid "labels.confirm-password"
msgstr "Parolayı onayla"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Devam et"
@@ -1549,7 +1546,7 @@ msgstr "Bağlantıyı kopyala"
msgid "labels.copyright"
msgstr "Kaleidos @2024"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Oluştur"
@@ -1569,15 +1566,15 @@ msgstr "Özel yazı tipleri"
msgid "labels.dashboard"
msgstr "Denetim paneli"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Sil"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Yorumu sil"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Mesaj dizisini sil"
@@ -1597,15 +1594,15 @@ msgstr "Geliştirici"
msgid "labels.director"
msgstr "Yönetici"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "At"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Taslak"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Düzenle"
@@ -1625,7 +1622,7 @@ msgstr "Etkinlik"
msgid "labels.expired-invitation"
msgstr "Süresi doldu"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Dışa aktar"
@@ -1641,7 +1638,7 @@ msgstr "Geri bildirim gönderildi"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Yazı Tipi Ailesi"
@@ -1649,11 +1646,11 @@ msgstr "Yazı Tipi Ailesi"
msgid "labels.font-providers"
msgstr "Yazı tipi sağlayıcıları"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Biçimler"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Yazı tipleri"
@@ -1665,11 +1662,11 @@ msgstr "Kurucu/Başkan Yardımcısı"
msgid "labels.freelancer"
msgstr "Serbest çalışıyorum"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Github deposu"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Geri bildirimde bulun"
@@ -1681,11 +1678,11 @@ msgstr "Geri dön"
msgid "labels.graphic-design"
msgstr "Grafik tasarımı"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Yardım Merkezi"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Çözülmüş yorumları gizle"
@@ -1693,7 +1690,7 @@ msgstr "Çözülmüş yorumları gizle"
msgid "labels.inactive"
msgstr "Etkin değil"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Kurulu yazı tipleri"
@@ -1719,11 +1716,11 @@ msgstr "Davetler"
msgid "labels.language"
msgstr "Dil"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Kütüphaneler ve Şablonlar"
-#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:114, src/app/main/ui/dashboard/grid.cljs:133, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:53, src/app/main/ui/ds/product/loader.cljs:52, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:126, src/app/main/ui.cljs:67, src/app/main/ui.cljs:105, src/app/main/ui.cljs:124
+#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:115, src/app/main/ui/dashboard/grid.cljs:134, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:98, src/app/main/ui/ds/product/loader.cljs:85, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:118, src/app/main/ui.cljs:66, src/app/main/ui.cljs:104, src/app/main/ui.cljs:123
msgid "labels.loading"
msgstr "Yükleniyor…"
@@ -1735,7 +1732,7 @@ msgstr "Oturum açın veya kaydolun"
msgid "labels.login"
msgstr "Oturum aç"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Oturumu kapat"
@@ -1755,11 +1752,11 @@ msgstr "Üyeler"
msgid "labels.new-password"
msgstr "Yeni parola"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Sonraki"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "Hepsini bitirdiniz! Yeni yorum bildirimleri burada görünecektir."
@@ -1783,7 +1780,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:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "1 dosya"
@@ -1858,7 +1855,7 @@ msgstr "Profil"
msgid "labels.projects"
msgstr "Projeler"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Sürüm notları"
@@ -1876,7 +1873,7 @@ msgstr "Kaldır"
msgid "labels.remove-member"
msgstr "Üyeyi kaldır"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Yeniden adlandır"
@@ -1896,15 +1893,15 @@ msgstr "Yeniden dene"
msgid "labels.role"
msgstr "Rol"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Kaydet"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "Ara"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Yazı tipi ara"
@@ -1944,15 +1941,15 @@ msgstr "Prototipi paylaş"
msgid "labels.shared-libraries"
msgstr "Paylaşılan Kütüphaneler"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Tüm yorumları göster"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Yorum listesini göster"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Yalnızca kendi yorumlarımı göster"
@@ -1980,7 +1977,7 @@ msgstr "Takım Lideri"
msgid "labels.team-member"
msgstr "Takım üyesi"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Öğreticiler"
@@ -1996,15 +1993,15 @@ msgstr "Güncelle"
msgid "labels.update-team"
msgstr "Takımı güncelle"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Yükle"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Özel yazı tipi yükle"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Yükleniyor…"
@@ -2020,7 +2017,7 @@ msgstr "Görüntüleyici"
msgid "labels.webhooks"
msgstr "Web kancaları"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Yeni yorum yaz"
@@ -2028,7 +2025,7 @@ msgstr "Yeni yorum yaz"
msgid "labels.you"
msgstr "(siz)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Hesabınız"
@@ -2036,23 +2033,23 @@ msgstr "Hesabınız"
msgid "labels.youtube"
msgstr "YouTube"
-#: src/app/main/ui/workspace/colorpicker.cljs:477, src/app/main/ui/workspace/colorpicker.cljs:478, src/app/main/ui/workspace/colorpicker.cljs:480
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
msgid "media.choose-image"
msgstr "Görsel seç"
-#: src/app/main/ui/workspace/colorpicker.cljs:245
+#: src/app/main/ui/workspace/colorpicker.cljs:241
msgid "media.gradient"
msgstr "Değişim"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "Görsel"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:77
+#: src/app/main/ui/inspect/attributes/common.cljs:77
msgid "media.image.short"
msgstr "görsel"
-#: src/app/main/ui/workspace/colorpicker.cljs:470
+#: src/app/main/ui/workspace/colorpicker.cljs:467
msgid "media.keep-aspect-ratio"
msgstr "En boy oranını koru"
@@ -2070,7 +2067,7 @@ msgstr "Görsel yükleniyor…"
msgid "media.radial"
msgstr "Işınsal"
-#: src/app/main/ui/workspace/colorpicker.cljs:243
+#: src/app/main/ui/workspace/colorpicker.cljs:239
msgid "media.solid"
msgstr "Katı"
@@ -2121,7 +2118,7 @@ msgstr "E-postayı değiştir"
msgid "modals.change-email.title"
msgstr "E-postanızı değiştirin"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Belirteci kopyala"
@@ -2137,7 +2134,7 @@ msgstr "İsim"
msgid "modals.create-access-token.name.placeholder"
msgstr "Adı, belirtecin ne için olduğunu bilmenize yardımcı olabilir"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Belirteç oluştur"
@@ -2161,15 +2158,15 @@ msgstr "Yük URL'si"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://example.com/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Belirteci sil"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "Bu belirteci silmek istediğinizden emin misiniz?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Belirteci sil"
@@ -2189,25 +2186,25 @@ msgstr "Hesabını silerek tüm projelerini ve arşivlerini kaybedeceksin."
msgid "modals.delete-account.title"
msgstr "Hesabını silmek istediğinden emin misin?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Konuşmayı sil"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Bu konuşmayı silmek istediğinden emin misin? Konudaki tüm yorumlar "
"silinecek."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Konuşmayı sil"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
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:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Açıklamayı sil"
@@ -2235,31 +2232,31 @@ msgstr "%s dosyayı silmek istediğinden emin misin?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "%s dosyayı sil"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Bu yazı tipi biçimini silmek istediğinizden emin misiniz? Bir dosyada "
"kullanılıyorsa yüklenmeyecektir."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Yazı tipi biçimini sil"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Bu yazı tipini silmek istediğinize emin misiniz? Bir dosyada kullanılıyorsa "
"yüklenmeyecektir."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Yazı tipini sil"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Bu sayfayı silmek istediğinden emin misin?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Sayfayı sil"
@@ -2467,15 +2464,15 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "Yeni takım sahibi"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Yayınla"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
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:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Boş kütüphaneyi yayınla"
@@ -2530,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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Güncelle"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "İptal"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Paylaşılmış bir kütüphanede bir bileşen güncelle"
@@ -2704,30 +2701,30 @@ msgstr "Video öğreticiler"
msgid "onboarding-v2.before-start.title"
msgstr "Başlamadan önce"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Ürün geliştirme sürecinden ve haberlerden haberdar olmak için Penpot "
"bültenine abone olun."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr ""
"Bana Penpot hakkında haberler gönder (blog gönderileri, video öğreticiler, "
"yayınlar...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Gizliliğe önem veriyoruz, buradan okuyabilirsiniz. "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Size yalnızca ilgili e-postaları göndereceğiz. Bültenlerimizden herhangi "
"birindeki abonelikten çıkma bağlantısını kullanarak istediğiniz zaman "
"aboneliğinizi iptal edebilirsiniz."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr "Bana ürün güncellemeleri gönder (yeni özellikler, sürümler, düzeltmeler...)."
@@ -2824,15 +2821,15 @@ msgstr "Daha sonra bir takım oluşturabileceksiniz."
msgid "onboarding.newsletter.accept"
msgstr "Evet, abone ol"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr "Abonelik talebiniz iletildi, size onaylamak için bir e-posta göndereceğiz."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Gizlilik Politikası."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Penpot haberlerini almak ister misiniz?"
@@ -3025,7 +3022,7 @@ msgstr "Oturum açmaya git"
msgid "settings.detach"
msgstr "Çıkar"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Karışık"
@@ -3215,7 +3212,7 @@ msgstr "Yeni oluştur"
msgid "shortcuts.cut"
msgstr "Kes"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Uzaklaştır"
@@ -3315,7 +3312,7 @@ msgstr "Yatay olarak dağıt"
msgid "shortcuts.hide-ui"
msgstr "Kullanıcı arayüzünü göster/gizle"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Yakınlaştır"
@@ -3695,15 +3692,15 @@ msgstr "Seçilene yakınlaştır"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Yazı Tipi Sağlayıcıları - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Yazı Tipleri - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Projeler - %s - Penpot"
@@ -3711,7 +3708,7 @@ msgstr "Projeler - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Ara - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Paylaşılmış Kütüphaneler - %s - Penpot"
@@ -3719,7 +3716,7 @@ msgstr "Paylaşılmış Kütüphaneler - %s - Penpot"
msgid "title.default"
msgstr "Penpot - Takımlar için Özgür Tasarım"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "Profil - Erişim belirteçleri"
@@ -3759,7 +3756,7 @@ msgstr "Web kancaları - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Görünüm modu - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -3864,15 +3861,15 @@ msgstr "Üste hizala (%s)"
msgid "workspace.assets.assets"
msgstr "Varlıklar"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Tüm varlıklar"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Renkler"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Bileşenler"
@@ -3884,15 +3881,15 @@ msgstr "Grup oluştur"
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:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Sil"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Çoğalt"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "Ana bileşeni çoğalt"
@@ -3900,19 +3897,19 @@ msgstr "Ana bileşeni çoğalt"
msgid "workspace.assets.edit"
msgstr "Düzenle"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:195
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
msgid "workspace.assets.filter"
msgstr "Filtrele"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Grafikler"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:505
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:515
msgid "workspace.assets.grid-view"
msgstr "Izgara görünümü"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Grup"
@@ -3920,27 +3917,23 @@ msgstr "Grup"
msgid "workspace.assets.group-name"
msgstr "Grup adı"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Kütüphaneler"
-
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:501
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:511
msgid "workspace.assets.list-view"
msgstr "Liste görünümü"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "yerel kütüphane"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Varlık bulunmadı"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "Kütüphane dosyasını aç"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Yeniden adlandır"
@@ -3948,7 +3941,7 @@ msgstr "Yeniden adlandır"
msgid "workspace.assets.rename-group"
msgstr "Grubu yeniden adlandır"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Varlık ara"
@@ -3964,17 +3957,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:226
+#: 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:211
+#: src/app/main/ui/workspace/sidebar/assets.cljs:201
msgid "workspace.assets.sort"
msgstr "Sırala"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Tipografiler"
@@ -3983,27 +3976,27 @@ msgstr "Tipografiler"
msgid "workspace.assets.typography.font-id"
msgstr "Yazı tipi"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Boyut"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Çeşit"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Düzenlemek için biçim kütüphane dosyasına gidin"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Harf Boşluğu"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Satır Yüksekliği"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -4011,7 +4004,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Metin biçimleri"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Metin Dönüşümü"
@@ -4019,55 +4012,55 @@ msgstr "Metin Dönüşümü"
msgid "workspace.assets.ungroup"
msgstr "Grubu dağıt"
-#: src/app/main/ui/workspace/context_menu.cljs:748
+#: src/app/main/ui/workspace/context_menu.cljs:764
msgid "workspace.context-menu.grid-cells.area"
msgstr "Alan oluştur"
-#: src/app/main/ui/workspace/context_menu.cljs:751
+#: src/app/main/ui/workspace/context_menu.cljs:767
msgid "workspace.context-menu.grid-cells.create-board"
msgstr "Çalışma yüzeyi oluştur"
-#: src/app/main/ui/workspace/context_menu.cljs:743
+#: src/app/main/ui/workspace/context_menu.cljs:759
msgid "workspace.context-menu.grid-cells.merge"
msgstr "Hücreleri birleştir"
-#: src/app/main/ui/workspace/context_menu.cljs:706
+#: src/app/main/ui/workspace/context_menu.cljs:722
msgid "workspace.context-menu.grid-track.column.add-after"
msgstr "Sağa 1 sütun ekle"
-#: src/app/main/ui/workspace/context_menu.cljs:705
+#: src/app/main/ui/workspace/context_menu.cljs:721
msgid "workspace.context-menu.grid-track.column.add-before"
msgstr "Sola 1 sütun ekle"
-#: src/app/main/ui/workspace/context_menu.cljs:707
+#: src/app/main/ui/workspace/context_menu.cljs:723
msgid "workspace.context-menu.grid-track.column.delete"
msgstr "Sütunu sil"
-#: src/app/main/ui/workspace/context_menu.cljs:708
+#: src/app/main/ui/workspace/context_menu.cljs:724
msgid "workspace.context-menu.grid-track.column.delete-shapes"
msgstr "Sütun ve şekilleri sil"
-#: src/app/main/ui/workspace/context_menu.cljs:704
+#: src/app/main/ui/workspace/context_menu.cljs:720
msgid "workspace.context-menu.grid-track.column.duplicate"
msgstr "Yinelenen sütun"
-#: src/app/main/ui/workspace/context_menu.cljs:713
+#: src/app/main/ui/workspace/context_menu.cljs:729
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:712
+#: src/app/main/ui/workspace/context_menu.cljs:728
msgid "workspace.context-menu.grid-track.row.add-before"
msgstr "Yukarıya 1 satır ekle"
-#: src/app/main/ui/workspace/context_menu.cljs:714
+#: src/app/main/ui/workspace/context_menu.cljs:730
msgid "workspace.context-menu.grid-track.row.delete"
msgstr "Satırı sil"
-#: src/app/main/ui/workspace/context_menu.cljs:715
+#: src/app/main/ui/workspace/context_menu.cljs:731
msgid "workspace.context-menu.grid-track.row.delete-shapes"
msgstr "Satır ve şekilleri sil"
-#: src/app/main/ui/workspace/context_menu.cljs:711
+#: src/app/main/ui/workspace/context_menu.cljs:727
msgid "workspace.context-menu.grid-track.row.duplicate"
msgstr "Yinelenen satır"
@@ -4075,11 +4068,11 @@ msgstr "Yinelenen satır"
msgid "workspace.focus.focus-mode"
msgstr "Odaklanma modu"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Odaklanma kapalı"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Odaklanma açık"
@@ -4233,33 +4226,32 @@ msgstr "Açık temaya geç"
msgid "workspace.header.menu.undo"
msgstr "Geri al"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Sıfırla"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Kaydetme hatası"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Kaydedildi"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Kaydediliyor"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Kaydedilmemiş değişiklikler"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
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:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "Yakınlaştırma"
@@ -4271,7 +4263,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:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Tümüne uydurmak için yakınlaştır"
@@ -4279,19 +4271,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:136
+#: src/app/main/ui/workspace/right_header.cljs:104
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:607
+#: 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:616
msgid "workspace.layout_grid.editor.options.edit-grid"
msgstr "Izgarayı düzenle"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
msgid "workspace.layout_grid.editor.options.exit"
msgstr "Çıkış"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:478
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
msgid "workspace.layout_grid.editor.padding.expand"
msgstr "4 taraflı dolgu seçeneklerini göster"
@@ -4307,7 +4299,7 @@ msgstr "Bitti"
msgid "workspace.layout_grid.editor.top-bar.locate"
msgstr "Bul"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1321
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
msgstr "Izgara düzenini bul"
@@ -4316,7 +4308,7 @@ msgstr "Izgara düzenini bul"
msgid "workspace.libraries.add"
msgstr "Ekle"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s renk"
@@ -4346,31 +4338,31 @@ msgstr "Son renkler"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "RGB Tamamlayıcı"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Renk biçimini kaydet"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Dosya kütüphanesi"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "BU DOSYADAKİ KÜTÜPHANELER"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "KÜTÜPHANELER"
@@ -4379,63 +4371,59 @@ msgstr "KÜTÜPHANELER"
msgid "workspace.libraries.library"
msgstr "KÜTÜPHANE"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "KÜTÜPHANE GÜNCELLEMELERİ"
-#: src/app/main/ui/workspace/libraries.cljs:363
+#: src/app/main/ui/workspace/libraries.cljs:360
msgid "workspace.libraries.loading"
msgstr "Yükleniyor…"
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "Güncelleme gerektiren Paylaşılmış Kütüphane bulunmuyor"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "“%s“ için eşleşme bulunmadı"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Paylaşılmış Kütüphane bulunmuyor"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Paylaşılmış kütüphane ara"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "PAYLAŞILMIŞ KÜTÜPHANELER"
-#: src/app/main/ui/workspace/libraries.cljs:355
+#: src/app/main/ui/workspace/libraries.cljs:352
msgid "workspace.libraries.shared-library-btn"
msgstr "Kütüphaneyi bağla"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Çoklu tipografiler"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Tüm tipografileri ayır"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:326
+#: src/app/main/ui/workspace/libraries.cljs:323
msgid "workspace.libraries.unlink-library-btn"
msgstr "Kütüphanenin bağlantısını kes"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Güncelle"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "tüm değişiklikleri gör"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "GÜNCELLEMELER"
@@ -4455,43 +4443,43 @@ msgstr "Grup bulanıklığı"
msgid "workspace.options.blur-options.title.multiple"
msgstr "Seçim bulanıklığı"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Tuval arka planı"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "İçeriği kırp"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Bileşen"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "Açıklama"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "Kopyala"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "Bir açıklama oluştur"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Bir açıklamayı düzenle"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Ana bileşen"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:416
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
msgid "workspace.options.component.swap"
msgstr "Bileşeni değiştir"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:460
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
msgid "workspace.options.component.swap.empty"
msgstr "Bu kütüphanede henüz varlık yok"
@@ -4539,7 +4527,7 @@ msgstr "Üst ve Alt"
msgid "workspace.options.design"
msgstr "Tasarım"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Dışa aktar"
@@ -4548,13 +4536,13 @@ msgstr "Dışa aktar"
msgid "workspace.options.export-multiple"
msgstr "Seçimi dışa aktar"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Son ek"
@@ -4562,7 +4550,7 @@ msgstr "Son ek"
msgid "workspace.options.exporting-complete"
msgstr "Dışa aktarma tamamlandı"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Dışa aktarılıyor…"
@@ -4700,7 +4688,7 @@ msgstr "Grubu çiz"
msgid "workspace.options.guides.title"
msgstr "Kılavuzlar"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Yükseklik"
@@ -5010,19 +4998,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:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Azami Yükseklik"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Azami Genişlik"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Asgari Yükseklik"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Asgari Genişlik"
@@ -5136,11 +5124,11 @@ msgstr "arasında boşluk"
msgid "workspace.options.layout.top"
msgstr "Üst"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Daha fazla renk"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Daha fazla kütüphane rengi"
@@ -5177,7 +5165,7 @@ msgstr "Sol üst"
msgid "workspace.options.radius-top-right"
msgstr "Sağ üst"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Son kullanılanlar"
@@ -5185,11 +5173,11 @@ msgstr "Son kullanılanlar"
msgid "workspace.options.retry"
msgstr "Yeniden dene"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Döndür"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Yazı tipi ara"
@@ -5199,7 +5187,7 @@ 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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Seçilen renkler"
@@ -5211,43 +5199,43 @@ msgstr "Seçimi doldur"
msgid "workspace.options.selection-stroke"
msgstr "Seçimi çiz"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Bulanıklık"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Gölge rengi"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Kabartı gölgesi"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "İç gölge"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Yayılma"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Gölge"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Gölge grubu"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Gölge seçimi"
@@ -5255,7 +5243,7 @@ msgstr "Gölge seçimi"
msgid "workspace.options.show-fill-on-export"
msgstr "Dışa aktarmalarda göster"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Görünüm modunda göster"
@@ -5263,7 +5251,7 @@ msgstr "Görünüm modunda göster"
msgid "workspace.options.size"
msgstr "Boyut"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Boyut ön ayarları"
@@ -5332,7 +5320,7 @@ msgstr "Üçgen"
msgid "workspace.options.stroke-color"
msgstr "Çerçeve rengi"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Çerçeve genişliği"
@@ -5396,11 +5384,11 @@ msgstr "Otomatik genişlik"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Sabit"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Harf Aralıkları"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Satır yüksekliği"
@@ -5464,15 +5452,15 @@ msgstr "Büyük Harf"
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:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Genişlik"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "X ekseni"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Y ekseni"
@@ -5593,99 +5581,99 @@ msgstr "Eklenti doğru şekilde yüklendi."
msgid "workspace.plugins.title"
msgstr "Eklentiler"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Esnek düzen ekle"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "Izgara düzeni ekle"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "En arkaya gönder"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Arkaya gönder"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Kopyala"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "Açıklama oluştur"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
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:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Bileşen oluştur"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Çoklu bileşen oluştur"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Kes"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Sil"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Akış başlangıcını sil"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Örneği ayır"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Örnekleri ayır"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Fark"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Çoğalt"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Düzenle"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Dışla"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Düzleştir"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Yatay ters çevir"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Dikey ters çevir"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Akış başlangıcı"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Öne getir"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "En öne getir"
@@ -5694,95 +5682,95 @@ msgstr "En öne getir"
msgid "workspace.shape.menu.go-main"
msgstr "Ana bileşen dosyasına git"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Grup"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Gizle"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Kullanıcı arayüzünü göster/gizle"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Kesişme"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Kilitle"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Maskele"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Yapıştır"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Yol"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Düzen esnekliğini kaldır"
-#: src/app/main/ui/workspace/context_menu.cljs:531
+#: src/app/main/ui/workspace/context_menu.cljs:535
msgid "workspace.shape.menu.remove-grid"
msgstr "Izgara düzenini kaldır"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Geçersiz kılmaları sıfırla"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Ana bileşeni geri yükle"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Katman seç"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Göster"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Varlıklar panelinde göster"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Ana bileşeni göster"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Küçük resmi kaldır"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Küçük resim olarak ayarla"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Yola dönüştür"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Grubu dağıt"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Birleşim"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Kilidi aç"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Maskelemeyi kaldır"
@@ -5791,7 +5779,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:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Ana bileşeni güncelle"
@@ -5803,11 +5791,11 @@ msgstr "Kenar çubuğunu daralt"
msgid "workspace.sidebar.expand"
msgstr "Kenar çubuğunu genişlet"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Geçmiş"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Katmanlar"
@@ -5843,7 +5831,7 @@ msgstr "Şekiller"
msgid "workspace.sidebar.layers.texts"
msgstr "Metinler"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "İçe Aktarılan SVG Öznitelikleri"
@@ -5851,11 +5839,11 @@ msgstr "İçe Aktarılan SVG Öznitelikleri"
msgid "workspace.sidebar.sitemap"
msgstr "Sayfalar"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Site haritası"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Varlıklar"
@@ -5863,39 +5851,39 @@ msgstr "Varlıklar"
msgid "workspace.toolbar.color-palette"
msgstr "Renk Paketi (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Yorumlar (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Eğri (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Elips (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Çalışma Yüzeyi (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Görsel (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Taşı (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Yol (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:201, src/app/main/ui/workspace/top_toolbar.cljs:202
+#: src/app/main/ui/workspace/top_toolbar.cljs:210, src/app/main/ui/workspace/top_toolbar.cljs:211
msgid "workspace.toolbar.plugins"
msgstr "Eklentiler (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Dikdörtgen (%s)"
@@ -5904,7 +5892,7 @@ msgstr "Dikdörtgen (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Kısayollar (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Metin (%s)"
@@ -5912,7 +5900,7 @@ msgstr "Metin (%s)"
msgid "workspace.toolbar.text-palette"
msgstr "Tipografiler (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:220, src/app/main/ui/workspace/top_toolbar.cljs:221
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
msgid "workspace.toolbar.toggle-toolbar"
msgstr "Araç çubuğunu aç/kapat"
@@ -6070,19 +6058,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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Yoksay"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
msgid "workspace.updates.more-info"
msgstr "Daha fazla bilgi"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
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:1226
msgid "workspace.updates.update"
msgstr "Güncelle"
diff --git a/frontend/translations/ukr_UA.po b/frontend/translations/ukr_UA.po
index cb32de0935..eee4c8067a 100644
--- a/frontend/translations/ukr_UA.po
+++ b/frontend/translations/ukr_UA.po
@@ -1,16 +1,16 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2025-01-29 22:23+0000\n"
+"PO-Revision-Date: 2025-03-20 13:42+0000\n"
"Last-Translator: Anonymous \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.10-dev\n"
+"X-Generator: Weblate 5.11-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
@@ -39,13 +39,13 @@ msgstr "Створити обліковий запис для демо"
msgid "auth.create-demo-profile"
msgstr "Хочете лише спробувати?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"Це демонстраційний варіант сервісу, не використовуйте для роботи, бо "
"створені проєкти періодично очищуватимуться."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "Забули пароль?"
@@ -53,7 +53,7 @@ msgstr "Забули пароль?"
msgid "auth.fullname"
msgstr "Повне ім'я"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "Увійти до мого облікового запису"
@@ -61,39 +61,39 @@ msgstr "Увійти до мого облікового запису"
msgid "auth.login-here"
msgstr "Увійти тут."
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "Вхід"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr ""
"Penpot це вільний інструмент з відкритим сирцевим кодом для спільної роботи "
"над дизайном та кодом"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "з OpenID"
#: src/app/main/ui/auth/recovery.cljs:60
msgid "auth.new-password"
-msgstr "Введіть новий пароль"
+msgstr "Вкажіть новий пароль"
#: src/app/main/ui/auth/recovery.cljs:36
msgid "auth.notifications.password-changed-successfully"
@@ -113,7 +113,7 @@ msgstr "На вашу скриньку надіслано лист з посил
msgid "auth.notifications.team-invitation-accepted"
msgstr "Успішно приєднано до команди"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "Пароль"
@@ -141,28 +141,28 @@ msgstr "Забули пароль?"
msgid "auth.recovery-submit"
msgstr "Змініть свій пароль"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "Не маєте облікового запису?"
#: src/app/main/ui/auth/register.cljs:254
msgid "auth.register-account-tagline"
-msgstr "Дайте нам знати як вас називати в панелі керування та у листах."
+msgstr "Скажіть, як до Вас звертатись у панелі керування та листах."
#: src/app/main/ui/auth/register.cljs:253
msgid "auth.register-account-title"
msgstr "Ваше ім'я"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "Створити обліковий запис"
#: src/app/main/ui/auth/register.cljs:124
msgid "auth.register-tagline"
msgstr ""
-"З безкоштовний обліковим записом Penpot ви зможете створювати необмежену "
-"кількість команд та співпрацювати з іншими дизайнерами та розробниками над "
-"будь-якою кількістю проєктів. "
+"З безкоштовним обліковим записом Penpot Ви зможете створювати необмежену "
+"кількість команд і співпрацювати з іншими дизайнерами та розробниками над "
+"безліччю проєктів. "
#: src/app/main/ui/auth/register.cljs:122
msgid "auth.register-title"
@@ -180,21 +180,21 @@ msgstr ""
"Я погоджуюсь із [умовами користування](%s) та [політикою "
"конфіденційності](%s)."
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "Умови користування"
#, unused
msgid "auth.terms-privacy-agreement"
msgstr ""
-"Створюючи обліковий запис, ви погоджуєтеся з нашими умовами користування та "
+"Створюючи обліковий запис, Ви погоджуєтеся з нашими умовами користування та "
"політикою конфіденційності."
#: src/app/main/ui/auth/register.cljs:275
msgid "auth.verification-email-sent"
msgstr "Ми надіслали лист для підтвердження облікового запису на"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "Робоча пошта"
@@ -203,11 +203,11 @@ msgstr "Робоча пошта"
msgid "branding-illustrations-marketing-pieces"
msgstr "...брендинг, ілюстрації, маркетингові матеріали тощо."
-#: src/app/main/ui/comments.cljs:504
+#: src/app/main/ui/comments.cljs:532
msgid "comments.mentions.not-found"
-msgstr "Не знайдено людей для @%s"
+msgstr "Не знайдено людей за @%s"
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "Опублікувати"
@@ -218,8 +218,8 @@ msgstr "Усі користувачі Penpot"
#: src/app/main/ui/viewer/share_link.cljs:199
msgid "common.share-link.confirm-deletion-link-description"
msgstr ""
-"Ви впевнені, що хочете видалити це посилання? Якщо так, воно стане "
-"недоступним назавжди"
+"Ви впевнені, що хочете видалити це посилання? Якщо Ви це зробите, то "
+"посилання більше не буде доступним"
#: src/app/main/ui/viewer/share_link.cljs:260, src/app/main/ui/viewer/share_link.cljs:290
msgid "common.share-link.current-tag"
@@ -280,7 +280,7 @@ msgstr "Поділитись прототипами"
msgid "common.share-link.view-all"
msgstr "Вибрати все"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "Скасувати публікацію"
@@ -332,7 +332,7 @@ msgstr "Ознайомлення з інтерфейсом"
msgid "dashboard.access-tokens.copied-success"
msgstr "Токен скопійовано"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "Згенерувати новий токен"
@@ -340,11 +340,11 @@ msgstr "Згенерувати новий токен"
msgid "dashboard.access-tokens.create.success"
msgstr "Токен доступу успішно створено."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "Натисніть на кнопку \"Згенерувати новий токен\" щоб створити його."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "Ви ще не створили жодного токену."
@@ -368,23 +368,23 @@ msgstr "90 днів"
msgid "dashboard.access-tokens.expiration-never"
msgstr "Ніколи"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "Термін дії сплив %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "Термін дії сплине %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "Без терміну дії"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "Персональні токени доступу"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Персональні токени доступу є альтернативою нашій системі автентифікації "
@@ -399,6 +399,10 @@ msgstr "Термін дії токену сплине %s"
msgid "dashboard.access-tokens.token-will-not-expire"
msgstr "Токен не має терміну дії"
+#: src/app/main/ui/dashboard/placeholder.cljs:35
+msgid "dashboard.add-file"
+msgstr "Додати файл"
+
#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612
msgid "dashboard.add-shared"
msgstr "Додати як Спільну Бібліотеку"
@@ -407,7 +411,7 @@ msgstr "Додати як Спільну Бібліотеку"
msgid "dashboard.change-email"
msgstr "Змінити пошту"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(копія)"
@@ -443,23 +447,23 @@ msgstr "Створити дублікат"
msgid "dashboard.duplicate-multi"
msgstr "Створити дублікат % файлів"
-#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:285
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
msgid "dashboard.empty-placeholder-drafts-subtitle"
msgstr "Як тільки учасник проєкту створить чернетку, вона з'явиться тут."
-#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:280
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
msgid "dashboard.empty-placeholder-drafts-title"
msgstr "Чернеток ще немає."
-#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:286
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
msgid "dashboard.empty-placeholder-files-subtitle"
msgstr "Як тільки учасник проєкту створить файл, він зʼявиться тут."
-#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:281
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
msgid "dashboard.empty-placeholder-files-title"
msgstr "Файлів ще немає."
-#: src/app/main/ui/dashboard/placeholder.cljs:40
+#: src/app/main/ui/dashboard/placeholder.cljs:77
#, markdown
msgid "dashboard.empty-placeholder-libraries"
msgstr ""
@@ -475,11 +479,11 @@ msgstr ""
"чи додати з нашої [сторінки Бібліотек та "
"шаблонів](https://penpot.app/libraries-templates)."
-#: src/app/main/ui/dashboard/placeholder.cljs:36
+#: src/app/main/ui/dashboard/placeholder.cljs:73
msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role"
msgstr "Додані до проєкту бібліотеки з'являться тут."
-#: src/app/main/ui/dashboard/placeholder.cljs:33
+#: src/app/main/ui/dashboard/placeholder.cljs:70
msgid "dashboard.empty-placeholder-libraries-title"
msgstr "Бібліотек ще немає."
@@ -519,7 +523,7 @@ msgstr "Інформація про те, як налаштувати експр
#: src/app/main/ui/exports/assets.cljs:176
msgid "dashboard.export-shapes.no-elements"
-msgstr "У вас немає елементів з налаштуваннями експорту."
+msgstr "У Вас немає елементів з налаштуваннями експорту."
#: src/app/main/ui/exports/assets.cljs:187
msgid "dashboard.export-shapes.title"
@@ -527,7 +531,7 @@ msgstr "Вибір експорту"
#: src/app/main/ui/dashboard/file_menu.cljs:259
msgid "dashboard.export-standard-multi"
-msgstr "Завантажити %s стандартних файоів (.svg + .json)"
+msgstr "Завантажити %s стандартних файлів (.svg + .json)"
#: src/app/main/ui/exports/files.cljs:157
msgid "dashboard.export.detail"
@@ -536,7 +540,7 @@ msgstr "* Може містити компоненти, графіки, коль
#: src/app/main/ui/exports/files.cljs:156
msgid "dashboard.export.explain"
msgstr ""
-"Файли, які ви хочете експортувати, використовують спільні бібліотеки. Що ви "
+"Файли, які Ви хочете експортувати, використовують спільні бібліотеки. Що "
"плануєте зробити з їхніми ресурсами*?"
#: src/app/main/ui/exports/files.cljs:165
@@ -573,36 +577,36 @@ msgstr "Додати ресурси спільної бібліотеки до
msgid "dashboard.export.title"
msgstr "Експортувати файли"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "Відсутній шрифт"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "Відхилити усе"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
-msgstr "Користувацькі шрифти, які ви завантажите, з'являться тут."
+msgstr "Користувацькі шрифти, які Ви завантажите, з'являться тут."
-#: src/app/main/ui/dashboard/fonts.cljs:448
+#: src/app/main/ui/dashboard/fonts.cljs:450
msgid "dashboard.fonts.empty-placeholder-viewer"
-msgstr "Користувацьких шрифтів ще немає."
+msgstr "Немає користувацьких шрифтів."
-#: src/app/main/ui/dashboard/fonts.cljs:449
+#: src/app/main/ui/dashboard/fonts.cljs:451
msgid "dashboard.fonts.empty-placeholder-viewer-sub"
msgstr ""
-"Як тільки учасник проєкту завантажить користувацький шрифт, його буде "
-"відображено тут."
+"Як тільки учасник проєкту завантажить користувацький шрифт, він зʼявиться "
+"тут."
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "%s шрифт було додано"
msgstr[1] "%s шрифта було додано"
msgstr[2] "% s шрифтів було додано"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -612,32 +616,31 @@ msgstr ""
"шрифтів**. Ви можете вивантажувати шрифти у таких форматах: **TTF, OTF і "
"WOFF** (потрібен лише один)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
-"Ви повинні завантажувати лише ті шрифти, якими ви володієте або маєте "
-"ліцензію на використання в Penpot. Дізнайтеся більше в розділі \"Content "
-"Rights\" в [Умовах користування Penpot](%s). Ви "
-"також можете прочитати про [ліцензування "
-"шрифтів](https://www.typography.com/faq)."
+"Ви повинні завантажувати лише ті шрифти, якими володієте або маєте ліцензію "
+"на використання в Penpot. Дізнайтеся більше в розділі \"Content Rights\" в "
+"[Умовах користування Penpot](https://penpot.app/terms.html). Ви також "
+"можете прочитати про [ліцензування шрифтів](https://www.typography.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "Вивантажити усе"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
-"Ми виявили можливу проблему у ваших шрифтах, пов'язану з вертикальною "
-"метрикою для різних операційних систем. Щоб перевірити її, ви можете "
+"Ми виявили можливу проблему у Ваших шрифтах, пов'язану з вертикальною "
+"метрикою для різних операційних систем. Щоб перевірити її, Ви можете "
"скористатися сервісами вертикальної метрики шрифтів, наприклад, "
"[цим](https://vertical-metrics.netlify.app/). Крім того, ми рекомендуємо "
"використовувати [Transfonter](https://transfonter.org/) для генерації "
"веб-шрифтів і виправлення помилок. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "Імпортувати файли Penpot"
@@ -648,14 +651,14 @@ msgstr "Отакої! Ми не можемо імпортувати цей фа
#, unused
msgid "dashboard.import.analyze-error.components-v2"
msgstr ""
-"Файли з компонентами версії 2 активовані але ця команда, поки що, не "
+"Файли з компонентами версії 2 активовані, але ця команда поки що не "
"підтримує їх."
-#: src/app/main/ui/dashboard.cljs:248
+#: src/app/main/ui/dashboard.cljs:247
msgid "dashboard.import.bad-url"
msgstr "Імпортування не вдалось. Посилання шаблону неправильне"
-#: src/app/main/ui/dashboard.cljs:242
+#: src/app/main/ui/dashboard.cljs:241
msgid "dashboard.import.error"
msgstr "Імпортування не вдалось. Спробуйте пізніше"
@@ -663,20 +666,20 @@ msgstr "Імпортування не вдалось. Спробуйте піз
msgid "dashboard.import.import-error"
msgstr "Виникла проблема при спробі імпортувати файл. Його не було імпортовано."
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgid_plural "dashboard.import.import-message"
msgstr[0] "%s файл успішно імпортовано."
msgstr[1] "%s файли успішно імпортовано."
msgstr[2] "%s файлів успішно імпортовано."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "Деякі файли містили недійсні об'єкти, які було вилучено."
-#: src/app/main/ui/dashboard.cljs:249
+#: src/app/main/ui/dashboard.cljs:248
msgid "dashboard.import.no-perms"
-msgstr "Ви не маєте права імпортувати цю команду"
+msgstr "Ви не маєте права імпортувати в цю команду"
#: src/app/main/ui/dashboard/import.cljs:129
msgid "dashboard.import.progress.process-colors"
@@ -696,7 +699,7 @@ msgstr "Обробка сторінки: %s"
#: src/app/main/ui/dashboard/import.cljs:132
msgid "dashboard.import.progress.process-typographies"
-msgstr "Обробка типографіки"
+msgstr "Обробка типографік"
#: src/app/main/ui/dashboard/import.cljs:120
msgid "dashboard.import.progress.upload-data"
@@ -714,29 +717,29 @@ msgstr "Запросити людей"
msgid "dashboard.leave-team"
msgstr "Покинути команду"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "Бібліотеки та Шаблони"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "Дізнайтесь більше про них та як зробити внесок"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "Виникла проблема під час імпортування шаблону. Його не було імпортовано."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "Бібліотеки"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "завантаження ваших файлів…"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
-msgstr "завантажую ваші шрифти…"
+msgstr "завантаження ваших шрифтів…"
#: src/app/main/ui/dashboard/file_menu.cljs:291, src/app/main/ui/dashboard/project_menu.cljs:101
msgid "dashboard.move-to"
@@ -750,11 +753,11 @@ msgstr "Перемістити (%s) файлів до"
msgid "dashboard.move-to-other-team"
msgstr "Перенести в іншу команду"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ Новий файл"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "Новий файл"
@@ -762,31 +765,31 @@ msgstr "Новий файл"
msgid "dashboard.new-project"
msgstr "+ Новий проєкт"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "Новий проєкт"
#: src/app/main/ui/dashboard/search.cljs:77
msgid "dashboard.no-matches-for"
-msgstr "Жодних відповідностей для \"%s\" не знайдено"
+msgstr "Жодних відповідностей за \"%s\" не знайдено"
#: src/app/main/ui/dashboard/sidebar.cljs:850
msgid "dashboard.no-projects-placeholder"
msgstr "Закріплені проєкти з'являться тут"
-#: src/app/main/ui/dashboard/comments.cljs:84
+#: src/app/main/ui/dashboard/comments.cljs:90
msgid "dashboard.notifications"
msgstr "Сповіщення"
#: src/app/main/ui/auth/verify_token.cljs:34
msgid "dashboard.notifications.email-changed-successfully"
-msgstr "Адресу вашої електронної пошти було успішно змінено"
+msgstr "Адресу Вашої електронної пошти було успішно змінено"
#: src/app/main/ui/auth/verify_token.cljs:28
msgid "dashboard.notifications.email-verified-successfully"
-msgstr "Адресу вашої електронної пошти було успішно підтверджено"
+msgstr "Адресу Вашої електронної пошти було успішно підтверджено"
-#: src/app/main/ui/settings/notifications.cljs:42
+#: src/app/main/data/profile.cljs:260
msgid "dashboard.notifications.notifications-saved"
msgstr "Налаштування сповіщень оновлено"
@@ -806,7 +809,7 @@ msgstr "%s учасників"
msgid "dashboard.open-in-new-tab"
msgstr "Відкрити файл у новій вкладці"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "Параметри"
@@ -816,33 +819,33 @@ msgstr "Змінити пароль"
#: src/app/main/data/common.cljs:209
msgid "dashboard.permissions-change.admin"
-msgstr "Відтепер ви адміністратор цієї команди."
+msgstr "Відтепер Ви адміністратор цієї команди."
#: src/app/main/data/common.cljs:208
msgid "dashboard.permissions-change.editor"
-msgstr "Відтепер ви редактор цієї команди."
+msgstr "Відтепер Ви редактор цієї команди."
#: src/app/main/data/common.cljs:210
msgid "dashboard.permissions-change.owner"
-msgstr "Відтепер ви власник цієї команди."
+msgstr "Відтепер Ви власник цієї команди."
#: src/app/main/data/common.cljs:207
msgid "dashboard.permissions-change.viewer"
-msgstr "Відтепер ви переглядач цієї команди."
+msgstr "Відтепер Ви переглядач цієї команди."
#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96
msgid "dashboard.pin-unpin"
msgstr "Пришпилити/відшпилити"
-#: src/app/main/ui/dashboard.cljs:212
+#: src/app/main/ui/dashboard.cljs:208
msgid "dashboard.plugins.bad-url"
msgstr "Посилання плагіну неправильне"
-#: src/app/main/ui/dashboard.cljs:210
+#: src/app/main/ui/dashboard.cljs:206
msgid "dashboard.plugins.parse-error"
msgstr "Не вдається розібрати маніфест плагіну"
-#: src/app/main/ui/dashboard.cljs:173
+#: src/app/main/ui/dashboard.cljs:169
msgid "dashboard.plugins.try-plugin"
msgstr "Спробуйте плагін: "
@@ -861,7 +864,7 @@ msgstr "Видалити Спільну Бібліотеку"
#: src/app/main/data/common.cljs:242
msgid "dashboard.removed-from-team"
-msgstr "Більше ви не є частиною команди \"%s\"."
+msgstr "Ви більше не є частиною команди \"%s\"."
#: src/app/main/ui/settings/profile.cljs:78
msgid "dashboard.save-settings"
@@ -883,67 +886,67 @@ msgstr "Оберіть мову інтерфейсу"
msgid "dashboard.select-ui-theme"
msgstr "Оберіть тему"
-#: src/app/main/ui/settings/notifications.cljs:76
+#: src/app/main/ui/settings/notifications.cljs:57
msgid "dashboard.settings.notifications.dashboard-comments.all"
msgstr "Усі коментарі, згадки та відповіді"
-#: src/app/main/ui/settings/notifications.cljs:78
+#: src/app/main/ui/settings/notifications.cljs:59
msgid "dashboard.settings.notifications.dashboard-comments.none"
msgstr "Нічого"
-#: src/app/main/ui/settings/notifications.cljs:77
+#: src/app/main/ui/settings/notifications.cljs:58
msgid "dashboard.settings.notifications.dashboard-comments.partial"
msgstr "Тільки згадки та відповіді"
-#: src/app/main/ui/settings/notifications.cljs:73
+#: src/app/main/ui/settings/notifications.cljs:54
msgid "dashboard.settings.notifications.dashboard-comments.title"
msgstr "Коментарі до файлів"
-#: src/app/main/ui/settings/notifications.cljs:72
+#: src/app/main/ui/settings/notifications.cljs:53
msgid "dashboard.settings.notifications.dashboard.title"
msgstr "Сповіщення панелі керування"
-#: src/app/main/ui/settings/notifications.cljs:86
+#: src/app/main/ui/settings/notifications.cljs:67
msgid "dashboard.settings.notifications.email-comments.all"
msgstr "Усі коментарі, згадки та відповіді"
-#: src/app/main/ui/settings/notifications.cljs:88
+#: src/app/main/ui/settings/notifications.cljs:69
msgid "dashboard.settings.notifications.email-comments.none"
msgstr "Нічого"
-#: src/app/main/ui/settings/notifications.cljs:87
+#: src/app/main/ui/settings/notifications.cljs:68
msgid "dashboard.settings.notifications.email-comments.partial"
msgstr "Тільки згадки та відповіді"
-#: src/app/main/ui/settings/notifications.cljs:83
+#: src/app/main/ui/settings/notifications.cljs:64
msgid "dashboard.settings.notifications.email-comments.title"
msgstr "Коментарі до файлів"
-#: src/app/main/ui/settings/notifications.cljs:95
+#: src/app/main/ui/settings/notifications.cljs:76
msgid "dashboard.settings.notifications.email-invites.all"
msgstr "Усі види запрошень та запитів"
-#: src/app/main/ui/settings/notifications.cljs:98
+#: src/app/main/ui/settings/notifications.cljs:79
msgid "dashboard.settings.notifications.email-invites.none"
msgstr "Нічого"
-#: src/app/main/ui/settings/notifications.cljs:92
+#: src/app/main/ui/settings/notifications.cljs:73
msgid "dashboard.settings.notifications.email-invites.title"
msgstr "Запрошення та запити"
-#: src/app/main/ui/settings/notifications.cljs:82
+#: src/app/main/ui/settings/notifications.cljs:63
msgid "dashboard.settings.notifications.email.title"
msgstr "Сповіщення е-пошти"
-#: src/app/main/ui/settings/notifications.cljs:103
+#: src/app/main/ui/settings/notifications.cljs:84
msgid "dashboard.settings.notifications.submit"
msgstr "Оновити налаштування"
-#: src/app/main/ui/settings/notifications.cljs:71
+#: src/app/main/ui/settings/notifications.cljs:52
msgid "dashboard.settings.notifications.title"
msgstr "Сповіщення"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "Показати усі файли"
@@ -973,7 +976,7 @@ msgstr[2] "Файли були успішно дубліковані"
msgid "dashboard.success-duplicate-project"
msgstr "Ваш проєкт успішно дубліковано"
-#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "Файл було успішно переміщено"
@@ -1007,7 +1010,7 @@ msgstr "Результати пошуку"
#: src/app/main/ui/dashboard/search.cljs:67
msgid "dashboard.type-something"
-msgstr "Введіть для пошуку"
+msgstr "Вкажіть для пошуку"
#: src/app/main/ui/dashboard/file_menu.cljs:298, src/app/main/ui/workspace/main_menu.cljs:604
msgid "dashboard.unpublish-shared"
@@ -1017,15 +1020,15 @@ msgstr "Вилучити бібліотеку з публікації"
msgid "dashboard.update-settings"
msgstr "Оновити налаштування"
-#: src/app/main/ui/dashboard/sidebar.cljs:969
+#: src/app/main/ui/dashboard/sidebar.cljs:970
msgid "dashboard.upgrade-plan.no-limits"
msgstr "Без обмежень на креативність"
-#: src/app/main/ui/dashboard/sidebar.cljs:968
+#: src/app/main/ui/dashboard/sidebar.cljs:969
msgid "dashboard.upgrade-plan.penpot-free"
msgstr "Penpot Безкоштовний"
-#: src/app/main/ui/dashboard/sidebar.cljs:971
+#: src/app/main/ui/dashboard/sidebar.cljs:972
msgid "dashboard.upgrade-plan.power-up"
msgstr "Підсилити"
@@ -1039,7 +1042,7 @@ msgstr "Після спрацювання хуку дані події буду
#: src/app/main/ui/dashboard/team.cljs:954
msgid "dashboard.webhooks.cant-edit"
-msgstr "Ви можете видаляти або редагувати лише створені вами вебхуки."
+msgstr "Ви можете видаляти або редагувати лише створені Вами вебхуки."
#: src/app/main/ui/dashboard/team.cljs:900
msgid "dashboard.webhooks.content-type"
@@ -1056,7 +1059,7 @@ msgstr "Вебхук успішно створено."
#: src/app/main/ui/dashboard/team.cljs:930
msgid "dashboard.webhooks.description"
msgstr ""
-"Веб-хуки - це простий спосіб дозволити іншим веб-сайтам і додаткам "
+"Веб-хуки - це простий спосіб дозволити іншим веб-сайтам і застосункам "
"отримувати сповіщення про певні події в Penpot. Ми надішлемо POST-запит на "
"кожну з вказаних вами URL-адрес."
@@ -1084,7 +1087,7 @@ msgstr "Електронна пошта"
msgid "dashboard.your-name"
msgstr "Ваше ім'я"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "Ваш Penpot"
@@ -1104,11 +1107,11 @@ msgstr "Компоненти для оновлення:"
msgid "ds.confirm-allow"
msgstr "Дозволити"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "Скасувати"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Добре"
@@ -1120,27 +1123,27 @@ msgstr "Ви впевнені?"
msgid "errors.auth-provider-not-allowed"
msgstr "Провайдер автентифікації не дозволений для цього профілю"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "Провайдер для автентифікації не налаштований."
#: src/app/main/errors.cljs:112
msgid "errors.auth.unable-to-login"
-msgstr "Схоже, ви не автентифіковані, або термін дії сесії сплинув."
+msgstr "Схоже, Ви не автентифіковані, або термін дії сесії минув."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "Шрифт %s не можна завантажити"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "Шрифти %s не можна завантажити"
#: src/app/main/data/workspace/media.cljs:198
msgid "errors.cannot-upload"
-msgstr "Не можу вивантажити медіа."
+msgstr "Не можна вивантажити медіа."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "Ваш браузер не може зробити це"
@@ -1152,7 +1155,7 @@ msgstr "Електронна пошта вже використовується"
msgid "errors.email-already-validated"
msgstr "Електронна пошта вже підтверджена."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "Ви не можете використати електронну адресу як пароль"
@@ -1175,7 +1178,7 @@ msgstr ""
#: src/app/main/errors.cljs:242
msgid "errors.feature-mismatch"
msgstr ""
-"Схоже, ви намагаєтесь відкрити файл, який має активовану функцію \"%s\", "
+"Схоже, Ви намагаєтесь відкрити файл, який має активовану функцію \"%s\", "
"але поточна версія Penpot наразі не підтримує її або вона вимкнена."
#: src/app/main/errors.cljs:246, src/app/main/errors.cljs:260
@@ -1194,16 +1197,16 @@ msgstr "Має містити принаймні 1 символ."
#: 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
msgid "errors.field-not-all-whitespace"
-msgstr "Ім'я повинно містити якийсь символ, окрім пробілу."
+msgstr "Ім'я повинно містити якийсь символ замість пробілу."
#: src/app/main/errors.cljs:238
msgid "errors.file-feature-mismatch"
msgstr ""
"Здається, існує невідповідність між увімкненими функціями та функціями "
-"файлу, який ви намагаєтеся відкрити. Перш ніж відкрити файл, потрібно "
+"файлу, який Ви намагаєтеся відкрити. Перш ніж відкрити файл, потрібно "
"застосувати міграції для \"%s\"."
-#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Виникла якась неполадка."
@@ -1216,8 +1219,7 @@ msgstr "Хибний колір"
msgid "errors.invalid-email"
msgstr "Будь ласка, вкажіть дійсну електрону адресу"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "Підтвердження має відповідати електронній пошті"
@@ -1233,7 +1235,7 @@ msgstr "Хибне запрошення"
msgid "errors.invite-invalid.info"
msgstr "Це запрошення могло бути відкликане або його термін дії минув."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "Автентифікація через LDAP вимкнена."
@@ -1262,7 +1264,7 @@ msgstr "Схоже, це зображення є недійсним."
#: src/app/main/ui/dashboard/team.cljs:615
msgid "errors.member-is-muted"
msgstr ""
-"Електронна пошта профілю, який ви намагаєтесь запросити, має приглушення "
+"Електронна пошта профілю, який Ви намагаєтесь запросити, має приглушення "
"листів (скарги на спам або постійне пересилання)."
#: src/app/main/errors.cljs:228
@@ -1272,7 +1274,7 @@ msgstr "Міграція триває"
#: src/app/main/ui/settings/password.cljs
#, unused
msgid "errors.password-invalid-confirmation"
-msgstr "Підтвердження має відповідати паролю"
+msgstr "Підтверджувальний пароль має збігатись"
#: src/app/main/ui/settings/password.cljs
#, unused
@@ -1283,13 +1285,15 @@ msgstr "Пароль повинен мати, принаймні, 8 символ
msgid "errors.paste-data-validation"
msgstr "Недійсні дані в буфері обміну"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Профіль заблоковано"
#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:176, src/app/main/ui/dashboard/team.cljs:611, src/app/main/ui/onboarding/team_choice.cljs:96, src/app/main/ui/settings/change_email.cljs:33
msgid "errors.profile-is-muted"
-msgstr "У вашому профілі приглушено листи (скарги на спам або постійне пересилання)."
+msgstr ""
+"Для Вашого профілю приглушено листи (скарги на спам або постійне "
+"пересилання)."
#: src/app/main/data/auth.cljs:310, src/app/main/ui/auth/register.cljs:51
msgid "errors.registration-disabled"
@@ -1302,17 +1306,17 @@ msgstr "Виявлено несумісну функцію \"%s\""
#: src/app/main/ui/dashboard/sidebar.cljs:374, src/app/main/ui/dashboard/team.cljs:387
msgid "errors.team-leave.insufficient-members"
msgstr ""
-"Недостатньо учасників, щоб покинути команду, яку ви, ймовірно, хочете "
+"Недостатньо учасників, щоб покинути команду, яку Ви, ймовірно, хочете "
"видалити."
#: src/app/main/ui/dashboard/sidebar.cljs:377, src/app/main/ui/dashboard/team.cljs:390
msgid "errors.team-leave.member-does-not-exists"
-msgstr "Учасник, якого ви намагаєтеся призначити, не існує."
+msgstr "Учасник, якого Ви намагаєтеся призначити, не існує."
#: src/app/main/ui/dashboard/sidebar.cljs:380, src/app/main/ui/dashboard/team.cljs:393
msgid "errors.team-leave.owner-cant-leave"
msgstr ""
-"Власник не може покинути команду, тому ви повинні спершу призначити нового "
+"Власник не може покинути команду, тому Ви повинні спершу призначити нового "
"власника."
#: src/app/main/data/media.cljs:71
@@ -1359,12 +1363,11 @@ msgstr "Неочікувана помилка під час перевірки"
msgid "errors.webhooks.unexpected-status"
msgstr "Неочікуваний статус %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "Електронна пошта або пароль неправильні."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Старий пароль неправильний"
@@ -1388,13 +1391,13 @@ msgstr "Спільнота Penpot"
#: src/app/main/ui/settings/feedback.cljs:69
msgid "feedback.subject"
-msgstr "Тема"
+msgstr "Причина"
#: src/app/main/ui/settings/feedback.cljs:66
msgid "feedback.subtitle"
msgstr ""
"Будь ласка, опишіть причину листа, вказавши чи є причина скаргою, ідеєю чи "
-"сумнівами. Учасник нашої команди відповість вам якомогашвидше."
+"сумнівами. Учасник нашої команди відповість вам якомога швидше."
#: src/app/main/ui/settings/feedback.cljs:65
msgid "feedback.title"
@@ -1412,11 +1415,11 @@ msgstr "Ми готові допомогти з вашими технічним
msgid "feedback.twitter-title"
msgstr "Обліковий запис служби підтримки в X"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Виникла помилка"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "Розмиття"
@@ -1424,31 +1427,31 @@ msgstr "Розмиття"
msgid "inspect.attributes.blur.value"
msgstr "Значення"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Заливка"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Завантажити вихідне зображення"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Висота"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Ширина"
@@ -1465,7 +1468,7 @@ msgstr "Висота"
#: src/app/main/ui/inspect/attributes/layout.cljs
#, unused
msgid "inspect.attributes.layout.left"
-msgstr "Зліва"
+msgstr "Ліворуч"
#: src/app/main/ui/inspect/attributes/layout.cljs, src/app/main/ui/inspect/attributes/layout.cljs
#, unused
@@ -1480,22 +1483,22 @@ msgstr "Обертання"
#: src/app/main/ui/inspect/attributes/layout.cljs
#, unused
msgid "inspect.attributes.layout.top"
-msgstr "Згори"
+msgstr "Верх"
#: src/app/main/ui/inspect/attributes/layout.cljs
#, unused
msgid "inspect.attributes.layout.width"
msgstr "Ширина"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Тінь"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Розмір та розміщення"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Обведення"
@@ -1532,141 +1535,141 @@ msgstr "Суцільний"
msgid "inspect.attributes.stroke.width"
msgstr "Товщина"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Типографія"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Сімейство шрифта"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Розмір шрифта"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Стиль шрифта"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Товщина шрифта"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Відступ між літерами"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Висота лінії"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Оформлення тексту"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Немає"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Закреслений"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Підкреслений"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "Видозміна тексту"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Нижній регістр"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Який є"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
-msgstr "Титульний відмінок"
+msgstr "Заголовковий регістр"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "Не встановлено"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Верхній регістр"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr ""
"Якщо ви хочете дізнатися більше про інспекцію дизайну, відвідайте "
"довідковий центр Penpot"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Більше інформації про інспекцію"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr "Оберіть фігуру, дошку або групу, щоб переглянути їх властивості та код"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Код"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Коло"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Компонент"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Крива"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Кадр"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Група"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Зображення"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Маска"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "Виділено: %s"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Контур"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Прямокутник"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Текст"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Інформація"
@@ -1686,15 +1689,15 @@ msgstr "Токени доступу"
msgid "labels.active"
msgstr "Активне"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.add"
msgstr "Додати"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Додати користувацькі шрифти"
-#: src/app/main/ui/workspace/libraries.cljs:173
+#: src/app/main/ui/workspace/libraries.cljs:176
msgid "labels.adding"
msgstr "Додавання..."
@@ -1706,7 +1709,7 @@ msgstr "Адміністратор"
msgid "labels.adobe-xd"
msgstr "Adobe ExpDesign"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Всі"
@@ -1728,7 +1731,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Поганий шлюз"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Скасувати"
@@ -1736,27 +1739,27 @@ msgstr "Скасувати"
msgid "labels.canva"
msgstr "Канва"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Закрити"
-#: src/app/main/ui/workspace/tokens/sets.cljs:180
+#: src/app/main/ui/workspace/tokens/sets.cljs:219
msgid "labels.collapse"
msgstr "Згорнути"
-#: src/app/main/ui/comments.cljs:812
+#: src/app/main/ui/comments.cljs:881
msgid "labels.comment"
msgstr "Коментар"
-#: src/app/main/ui/comments.cljs:816
+#: src/app/main/ui/comments.cljs:885
msgid "labels.comment.mark-as-solved"
msgstr "Позначити як виконане"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "Коментарі"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Спільнота"
@@ -1764,7 +1767,7 @@ msgstr "Спільнота"
msgid "labels.confirm-password"
msgstr "Підтвердити пароль"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Продовжити"
@@ -1784,7 +1787,7 @@ msgstr "Копіювати посилання"
msgid "labels.copyright"
msgstr "Калейдос @2024"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Створити"
@@ -1794,7 +1797,7 @@ msgstr "Створити нову команду"
#: src/app/main/ui/dashboard/team_form.cljs:115
msgid "labels.create-team.placeholder"
-msgstr "Введіть ім'я нової команди"
+msgstr "Вкажіть ім'я нової команди"
#, unused
msgid "labels.custom-fonts"
@@ -1804,15 +1807,15 @@ msgstr "Користувацькі шрифти"
msgid "labels.dashboard"
msgstr "Панель керування"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Видалити"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Видалити коментар"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Видалити гілку"
@@ -1832,15 +1835,15 @@ msgstr "Розробка"
msgid "labels.director"
msgstr "Директор"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "Відхилити"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Чернетки"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "Редагувати"
@@ -1860,7 +1863,7 @@ msgstr "Подія"
msgid "labels.expired-invitation"
msgstr "Сплинув термін дії"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Експорт"
@@ -1876,7 +1879,7 @@ msgstr "Відгук надіслано"
msgid "labels.figma"
msgstr "Фіґма"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Сімейство шрифтів"
@@ -1884,11 +1887,11 @@ msgstr "Сімейство шрифтів"
msgid "labels.font-providers"
msgstr "Постачальники шрифтів"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Стилі"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Шрифти"
@@ -1900,11 +1903,11 @@ msgstr "Генеральний директор або Засновник"
msgid "labels.freelancer"
msgstr "Фрилансер"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Репозиторій Github"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Надішліть відгук"
@@ -1916,15 +1919,15 @@ msgstr "Повернутись назад"
msgid "labels.graphic-design"
msgstr "Графічний дизайн"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Центр Допомоги"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Приховати вирішені коментарі"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:355
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:413
msgid "labels.import"
msgstr "Імпортувати"
@@ -1932,7 +1935,7 @@ msgstr "Імпортувати"
msgid "labels.inactive"
msgstr "Не активний"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Встановлені шрифти"
@@ -1958,11 +1961,11 @@ msgstr "Запрошення"
msgid "labels.language"
msgstr "Мова"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Бібліотеки та Шаблони"
-#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:114, src/app/main/ui/dashboard/grid.cljs:133, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:53, src/app/main/ui/ds/product/loader.cljs:52, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:126, src/app/main/ui.cljs:67, src/app/main/ui.cljs:105, src/app/main/ui.cljs:124
+#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:115, src/app/main/ui/dashboard/grid.cljs:134, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:98, src/app/main/ui/ds/product/loader.cljs:85, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:118, src/app/main/ui.cljs:66, src/app/main/ui.cljs:104, src/app/main/ui.cljs:123
msgid "labels.loading"
msgstr "Завантаження…"
@@ -1974,7 +1977,7 @@ msgstr "Увійти або зареєструватись"
msgid "labels.login"
msgstr "Увійти"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Вийти"
@@ -1994,11 +1997,11 @@ msgstr "Учасники"
msgid "labels.new-password"
msgstr "Новий пароль"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Далі"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "Ви все наздогнали! Нові повідомлення про коментарі з’являться тут."
@@ -2026,7 +2029,7 @@ msgstr "Отакої!"
msgid "labels.notifications"
msgstr "Сповіщення"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "%s файл"
@@ -2060,7 +2063,7 @@ msgstr "Старий пароль"
msgid "labels.only-yours"
msgstr "Лише ваші"
-#: src/app/main/ui/comments.cljs:545, src/app/main/ui/comments.cljs:822, src/app/main/ui/comments.cljs:886, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:295, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:324
+#: src/app/main/ui/comments.cljs:891, src/app/main/ui/comments.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:293, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:322
msgid "labels.options"
msgstr "Параметри"
@@ -2088,7 +2091,7 @@ msgstr "Пароль"
msgid "labels.pending-invitation"
msgstr "Очікування"
-#: src/app/main/ui/comments.cljs:657, src/app/main/ui/comments.cljs:690, src/app/main/ui/comments.cljs:759
+#: src/app/main/ui/comments.cljs:678
msgid "labels.post"
msgstr "Публікація"
@@ -2112,7 +2115,7 @@ msgstr "Профіль"
msgid "labels.projects"
msgstr "Проєкти"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Примітки до випуску"
@@ -2130,7 +2133,7 @@ msgstr "Видалити"
msgid "labels.remove-member"
msgstr "Вилучити учасника"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Перейменувати"
@@ -2138,23 +2141,23 @@ msgstr "Перейменувати"
msgid "labels.rename-team"
msgstr "Перейменувати команду"
-#: src/app/main/ui/comments.cljs:598
+#: src/app/main/ui/comments.cljs:641
msgid "labels.replies"
msgstr "відповіді"
-#: src/app/main/ui/comments.cljs:603
+#: src/app/main/ui/comments.cljs:646
msgid "labels.replies.new"
msgstr "нові відповіді"
-#: src/app/main/ui/comments.cljs:597
+#: src/app/main/ui/comments.cljs:640
msgid "labels.reply"
msgstr "відповідь"
-#: src/app/main/ui/comments.cljs:602
+#: src/app/main/ui/comments.cljs:645
msgid "labels.reply.new"
msgstr "нова відповідь"
-#: src/app/main/ui/comments.cljs:641
+#: src/app/main/ui/comments.cljs:721
msgid "labels.reply.thread"
msgstr "Відповідь"
@@ -2174,15 +2177,15 @@ msgstr "Повторити"
msgid "labels.role"
msgstr "Роль"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Зберегти"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "Пошук"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Пошук шрифта"
@@ -2206,7 +2209,7 @@ msgstr "Ми проводимо програмне обслуговування
msgid "labels.service-unavailable.main-message"
msgstr "Сервіс недосяжний"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:252
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:247
msgid "labels.sets"
msgstr "Набори"
@@ -2226,19 +2229,19 @@ msgstr "Поділитись прототипом"
msgid "labels.shared-libraries"
msgstr "Бібліотеки"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Показати усі коментарі"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Показати список коментарів"
-#: src/app/main/ui/workspace/comments.cljs:66, src/app/main/ui/workspace/comments.cljs:136
+#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139
msgid "labels.show-mentions"
msgstr "Показувати лише ваші згадки"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Показати лише ваші коментарі"
@@ -2266,11 +2269,11 @@ msgstr "Керівник команди"
msgid "labels.team-member"
msgstr "Учасник команди"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:183
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:182
msgid "labels.themes"
msgstr "Теми"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Посібники"
@@ -2286,15 +2289,15 @@ msgstr "Оновити"
msgid "labels.update-team"
msgstr "Оновити команду"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Вивантажити"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Вивантажити користувацькі шрифти"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Вивантажую…"
@@ -2310,15 +2313,15 @@ msgstr "Глядач"
msgid "labels.webhooks"
msgstr "Вебхуки"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Написати новий коментар"
#: src/app/main/ui/dashboard/team.cljs:262
msgid "labels.you"
-msgstr "(ви)"
+msgstr "(Ви)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Ваш обліковий запис"
@@ -2326,23 +2329,23 @@ msgstr "Ваш обліковий запис"
msgid "labels.youtube"
msgstr "Ютуб"
-#: src/app/main/ui/workspace/colorpicker.cljs:477, src/app/main/ui/workspace/colorpicker.cljs:478, src/app/main/ui/workspace/colorpicker.cljs:480
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
msgid "media.choose-image"
msgstr "Обрати зображення"
-#: src/app/main/ui/workspace/colorpicker.cljs:245
+#: src/app/main/ui/workspace/colorpicker.cljs:241
msgid "media.gradient"
msgstr "Градієнт"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "Зображення"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:77
+#: src/app/main/ui/inspect/attributes/common.cljs:77
msgid "media.image.short"
msgstr ".img"
-#: src/app/main/ui/workspace/colorpicker.cljs:470
+#: src/app/main/ui/workspace/colorpicker.cljs:467
msgid "media.keep-aspect-ratio"
msgstr "Зберігати співвідношення сторін"
@@ -2360,7 +2363,7 @@ msgstr "Завантаження зображення…"
msgid "media.radial"
msgstr "Круговий"
-#: src/app/main/ui/workspace/colorpicker.cljs:243
+#: src/app/main/ui/workspace/colorpicker.cljs:239
msgid "media.solid"
msgstr "Суцільний"
@@ -2368,7 +2371,7 @@ msgstr "Суцільний"
msgid "modals.add-shared-confirm-empty.hint"
msgstr ""
"Ваша бібліотека порожня. Після додавання до спільної бібліотеки створені "
-"вами ресурси стануть доступними для використання серед інших ваших файлів. "
+"Вами ресурси стануть доступними для використання серед інших Ваших файлів. "
"Ви впевнені, що хочете опублікувати його?"
#: src/app/main/data/common.cljs:136
@@ -2379,7 +2382,7 @@ msgstr "Додати як Спільну Бібліотеку"
msgid "modals.add-shared-confirm.hint"
msgstr ""
"Після додавання як спільної бібліотеки ресурси цієї файлової бібліотеки "
-"будуть доступні для використання серед решти ваших файлів."
+"будуть доступні для використання серед решти Ваших файлів."
#: src/app/main/data/common.cljs:133
msgid "modals.add-shared-confirm.message"
@@ -2387,7 +2390,7 @@ msgstr "Додати \"%s\" як Спільну Бібліотеку"
#: src/app/main/ui/workspace/nudge.cljs:60
msgid "modals.big-nudge"
-msgstr "Велике зміщення"
+msgstr "Великий зсув"
#: src/app/main/ui/settings/change_email.cljs:111
msgid "modals.change-email.confirm-email"
@@ -2411,7 +2414,7 @@ msgstr "Змінити електрону адресу"
msgid "modals.change-email.title"
msgstr "Змінити свою електрону адресу"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Скопіювати токен"
@@ -2427,7 +2430,7 @@ msgstr "Ім'я"
msgid "modals.create-access-token.name.placeholder"
msgstr "Ім'я допоможе зрозуміти для чого призначений токен"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Створити токен"
@@ -2451,15 +2454,15 @@ msgstr "Посилання на Payload"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://savelife.in.ua/en"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Видалити токен"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "Ви впевнені що хочете видалити цей токен?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Видалити токен"
@@ -2473,31 +2476,31 @@ msgstr "Так, видалити мій обліковий запис"
#: src/app/main/ui/settings/delete_account.cljs:53
msgid "modals.delete-account.info"
-msgstr "Видаливши обліковий запис, ви втратите усі свої проєкти та архіви."
+msgstr "Видаливши обліковий запис, Ви втратите усі свої проєкти та архіви."
#: src/app/main/ui/settings/delete_account.cljs:46
msgid "modals.delete-account.title"
msgstr "Ви впевнені, що хочете видалити обліковий запис?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Видалити бесіду"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Ви впевнені, що хочете видалити цю бесіду? Всі коментарі в цій гілці буде "
"видалено."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Видалити бесіду"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
msgid "modals.delete-component-annotation.message"
msgstr "Ви впевнені, що хочете видалити цю анотацію?"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Видалити анотацію"
@@ -2525,31 +2528,31 @@ msgstr "Ви впевнені, що хочете видалити %s файлі
msgid "modals.delete-file-multi-confirm.title"
msgstr "Видалення %s файлів"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
-"Ви впевнені, що хочете видалити стиль шрифта? Його не завантажиться, якщо "
+"Ви впевнені, що хочете видалити стиль шрифта? Він не завантажиться якщо "
"буде використаний у файлі."
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "Видалення стилю шрифта"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr ""
"Ви впевнені, що хочете видалити цей шрифт? Він не завантажиться якщо буде "
"використаний у файлі."
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "Видалення шрифта"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "Ви впевнені, що хочете видалити цю сторінку?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Видалити сторінку"
@@ -2686,7 +2689,7 @@ msgstr "Запросити учасників до команди"
#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:421
msgid "modals.leave-and-close-confirm.hint"
msgstr ""
-"Так як ви єдиний учасником цієї команди, її буде видалено разом з проєктами "
+"Так як Ви єдиний учасником цієї команди, її буде видалено разом з проєктами "
"та файлами команди."
#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:420
@@ -2752,7 +2755,7 @@ msgstr[2] "Перемістити бібліотеки"
#: src/app/main/ui/workspace/main_menu.cljs:271, src/app/main/ui/workspace/nudge.cljs:47
msgid "modals.nudge-title"
-msgstr "Кількість зміщень"
+msgstr "Розмір зсуву"
#: src/app/main/ui/dashboard/team.cljs:374
msgid "modals.promote-owner-confirm.accept"
@@ -2761,7 +2764,7 @@ msgstr "Передати права власності"
#: src/app/main/ui/dashboard/team.cljs:373
msgid "modals.promote-owner-confirm.hint"
msgstr ""
-"Якщо ви передасте права власності, ви зміните свою роль на Admin, втративши "
+"Якщо Ви передасте права власності, Ви зміните свою роль на Admin, втративши "
"деякі повноваження над цією командою. "
#: src/app/main/ui/dashboard/team.cljs:372
@@ -2774,15 +2777,15 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "Новий власник команди"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Опублікувати"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
msgid "modals.publish-empty-library.message"
msgstr "Ваша бібліотека порожня. Ви впевнені, що хочете опублікувати її?"
-#: src/app/main/ui/workspace/libraries.cljs:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Опублікувати пусту бібліотеку"
@@ -2796,7 +2799,7 @@ msgstr "Видалити як Спільну Бібліотеку"
msgid "modals.remove-shared-confirm.hint"
msgstr ""
"Після вилучення як спільної бібліотеки, бібліотека файлів цього файлу "
-"перестане бути доступною для використання серед інших ваших файлів."
+"перестане бути доступною для використання серед інших Ваших файлів."
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
#, unused
@@ -2805,7 +2808,7 @@ msgstr "Видалити \"%s\" як Спільну Бібліотеку"
#: src/app/main/ui/workspace/nudge.cljs:53
msgid "modals.small-nudge"
-msgstr "Мале зміщення"
+msgstr "Малий зсув"
#: src/app/main/ui/delete_shared.cljs:52
msgid "modals.unpublish-shared-confirm.accept"
@@ -2840,21 +2843,21 @@ msgstr ""
msgid "modals.update-remote-component-in-bulk.message"
msgstr "Оновити компоненти в спільній бібліотеці"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Оновити"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Скасувати"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
msgid "modals.update-remote-component.hint"
msgstr ""
"Ви збираєтесь оновити компонент у спільній бібліотеці. Це вплине також на "
"файли, які її використовують."
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Оновити компонент спільної бібліотеки"
@@ -2924,7 +2927,7 @@ msgstr "Запам'ятайте - якщо власник погодить, ви
#: src/app/main/ui/static.cljs:303
msgid "not-found.no-permission.done.success"
-msgstr "Ваш запит надіслано правильно!"
+msgstr "Ваш запит надіслано успішно!"
#: src/app/main/ui/static.cljs:309
msgid "not-found.no-permission.file"
@@ -2936,7 +2939,7 @@ msgstr "Відвідати ваш Penpot"
#: src/app/main/ui/static.cljs:311, src/app/main/ui/static.cljs:320
msgid "not-found.no-permission.if-approves"
-msgstr "Якщо власник погодить, ви будете запрошені до команди."
+msgstr "Якщо власник погодить, Ви будете запрошені до команди."
#: src/app/main/ui/static.cljs:249, src/app/main/ui/static.cljs:261
msgid "not-found.no-permission.penpot-file"
@@ -3018,27 +3021,27 @@ msgstr "Відео посібники"
msgid "onboarding-v2.before-start.title"
msgstr "Перш ніж почати"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Підпішиться на розсилку Penpot щоб бути у курсі подій розробки та останніх "
"новин."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr "Надсилати мені новини про Penpot (пости з блоґу, відео посібники, етери...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
-msgstr "Ми турбуємось про конфіденційність, тому ви можете прочитати наші "
+msgstr "Ми турбуємось про конфіденційність, тому Ви можете прочитати наші "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Ми надсилатимемо вам лише ревеланті листи. Ви можете відписатись у "
"будь-який час через посилання для відписки в листах розсилки."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr ""
"Надсилати мені оновлення продуктів (нові можливості, випуски, "
@@ -3064,7 +3067,7 @@ msgstr "Участь у спільноті"
#, unused
msgid "onboarding-v2.welcome.desc3"
msgstr ""
-"Тут ви дізнаєтеся, як співпрацювати з перекладами, запитами на покращення, "
+"Тут Ви дізнаєтеся, як співпрацювати з перекладами, запитами на покращення, "
"внесками в основний код, пошуком помилок…"
#, unused
@@ -3098,7 +3101,7 @@ msgstr "Ви зможете запрошувати пізніше"
#: src/app/main/ui/onboarding/team_choice.cljs:240
msgid "onboarding.choice.team-up.create-team-desc"
msgstr ""
-"Після того, як ви назвали свою команду, ви зможете запрошувати людей "
+"Після того, як Ви назвали свою команду, Ви зможете запрошувати людей "
"приєднатись до неї."
#: src/app/main/ui/onboarding/team_choice.cljs:249
@@ -3115,7 +3118,7 @@ msgstr "Створити команду без запрошення"
#: src/app/main/ui/dashboard/projects.cljs:95, src/app/main/ui/onboarding/team_choice.cljs:159
msgid "onboarding.choice.team-up.invite-members"
-msgstr "Запристи учасників"
+msgstr "Запрости учасників"
#: src/app/main/ui/onboarding/team_choice.cljs:160
msgid "onboarding.choice.team-up.invite-members-info"
@@ -3139,19 +3142,19 @@ msgstr "Ви зможете створити команду пізніше."
msgid "onboarding.newsletter.accept"
msgstr "Так, підписати"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"Ваш запит на підписку був надісланий, ми надішлемо вам лист для "
"підтвердження запиту."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Потіика Конфіденційності."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
-msgstr "Бажаєте отримувати новити від Penpot?"
+msgstr "Бажаєте отримувати новини від Penpot?"
#: src/app/main/ui/onboarding/questions.cljs:113
msgid "onboarding.questions.lets-get-started"
@@ -3218,7 +3221,7 @@ msgid "onboarding.questions.step1.subtitle"
msgstr ""
"Розкажіть нам трохи про себе, щоб допомогти нам зробити Penpot зручним для "
"вас. Ваші відповіді допоможуть нам визначити пріоритетність нових функцій і "
-"вказати вам правильний напрямок для початку роботи."
+"вказати Вам потрібний напрямок для початку роботи."
#: src/app/main/ui/onboarding/questions.cljs:115
msgid "onboarding.questions.step1.title"
@@ -3226,11 +3229,11 @@ msgstr "Допоможіть нам познайомитися з вами бл
#: src/app/main/ui/onboarding/questions.cljs:196
msgid "onboarding.questions.step2.title"
-msgstr "Який з цих інструментів ви використовуєте найчастіше?"
+msgstr "Який з цих інструментів використовуєте найчастіше?"
#: src/app/main/ui/onboarding/questions.cljs:289
msgid "onboarding.questions.step3.question1"
-msgstr "Чим ви займаєтесь?"
+msgstr "Чим займаєтесь?"
#: src/app/main/ui/onboarding/questions.cljs:303
msgid "onboarding.questions.step3.question2"
@@ -3246,7 +3249,7 @@ msgstr "Розкажіть про вашу роботу"
#: src/app/main/ui/onboarding/questions.cljs:370
msgid "onboarding.questions.step4.title"
-msgstr "Звідки ви б хотіли почати?"
+msgstr "Звідки хотіли б почати?"
#: src/app/main/ui/onboarding/questions.cljs:428
msgid "onboarding.questions.step5.title"
@@ -3342,7 +3345,7 @@ msgstr "Повернутись на сторінку входу"
msgid "settings.detach"
msgstr "Від'єднати"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Змішаний"
@@ -3382,11 +3385,11 @@ msgstr "Редагувати"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58
msgid "shortcut-subsection.general-dashboard"
-msgstr "Загальний"
+msgstr "Загальні"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59
msgid "shortcut-subsection.general-viewer"
-msgstr "Загальний"
+msgstr "Загальні"
#: src/app/main/ui/workspace/main_menu.cljs:829, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60
msgid "shortcut-subsection.main-menu"
@@ -3490,7 +3493,7 @@ msgstr "Булева різниця"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85
msgid "shortcuts.bool-exclude"
-msgstr "Булеве виключення"
+msgstr "Логічне виключення"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86
msgid "shortcuts.bool-intersection"
@@ -3502,19 +3505,19 @@ msgstr "Булеве об'єднання"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88
msgid "shortcuts.bring-back"
-msgstr "Відправити на задній план"
+msgstr "На задній план"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89
msgid "shortcuts.bring-backward"
-msgstr "Відправити назад"
+msgstr "Посунути назад"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90
msgid "shortcuts.bring-forward"
-msgstr "Відправити вперед"
+msgstr "Посунути вперед"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91
msgid "shortcuts.bring-front"
-msgstr "Відправити на передній план"
+msgstr "Висунути вперед"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92
msgid "shortcuts.clear-undo"
@@ -3526,7 +3529,7 @@ msgstr "Скопіювати"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94
msgid "shortcuts.copy-link"
-msgstr "Копіювати посилання до буферу обміну"
+msgstr "Скопіювати посилання у буфер"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95
msgid "shortcuts.create-component"
@@ -3540,7 +3543,7 @@ msgstr "Створити новий"
msgid "shortcuts.cut"
msgstr "Вирізати"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Зменшити"
@@ -3640,7 +3643,7 @@ msgstr "Розподілити горизонтально"
msgid "shortcuts.hide-ui"
msgstr "Показати/приховати інтерфейс"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Збільшити"
@@ -3670,7 +3673,7 @@ msgstr "Зменшити висоту лінії на 1"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:130
msgid "shortcuts.line-height-inc"
-msgstr "Збільшити вистоу лінії на 1"
+msgstr "Збільшити висоту лінії на 1"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:131
msgid "shortcuts.line-through"
@@ -3698,19 +3701,19 @@ msgstr "Перемістити"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137
msgid "shortcuts.move-fast-down"
-msgstr "Швидко рухати вниз"
+msgstr "Швидко перемістити униз"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138
msgid "shortcuts.move-fast-left"
-msgstr "Швидко рухати ліворуч"
+msgstr "Швидко перемістити ліворуч"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139
msgid "shortcuts.move-fast-right"
-msgstr "Швидко рухати праворуч"
+msgstr "Швидко перемістити праворуч"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140
msgid "shortcuts.move-fast-up"
-msgstr "Швидко рухати вгору"
+msgstr "Швидко перемістити вгору"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141
msgid "shortcuts.move-nodes"
@@ -3742,43 +3745,43 @@ msgstr "Скорочень не знайдено"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147
msgid "shortcuts.opacity-0"
-msgstr "Встановити непрозорість на 100%"
+msgstr "Непрозорість на 100%"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148
msgid "shortcuts.opacity-1"
-msgstr "Встановити непрозорість на 10%"
+msgstr "Непрозорість на 10%"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149
msgid "shortcuts.opacity-2"
-msgstr "Встановити непрозорість на 20%"
+msgstr "Непрозорість на 20%"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150
msgid "shortcuts.opacity-3"
-msgstr "Встановити непрозорість на 30%"
+msgstr "Непрозорість на 30%"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151
msgid "shortcuts.opacity-4"
-msgstr "Встановити непрозорість на 40%"
+msgstr "Непрозорість на 40%"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152
msgid "shortcuts.opacity-5"
-msgstr "Встановити непрозорість на 50%"
+msgstr "Непрозорість на 50%"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153
msgid "shortcuts.opacity-6"
-msgstr "Встановити непрозорість на 60%"
+msgstr "Непрозорість на 60%"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154
msgid "shortcuts.opacity-7"
-msgstr "Встановити непрозорість на 70%"
+msgstr "Непрозорість на 70%"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155
msgid "shortcuts.opacity-8"
-msgstr "Встановити непрозорість на 80%"
+msgstr "Непрозорість на 80%"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156
msgid "shortcuts.opacity-9"
-msgstr "Встановити непрозорість на 90%"
+msgstr "Непрозорість на 90%"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157
msgid "shortcuts.open-color-picker"
@@ -3906,7 +3909,7 @@ msgstr "Вирявняти по правому краю"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187
msgid "shortcuts.thumbnail-set"
-msgstr "Встановити мініатюри"
+msgstr "Вставити мініатюри"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506
msgid "shortcuts.title"
@@ -4024,15 +4027,15 @@ msgstr "Збільшити до обраного"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Постачальники шрифтів - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Шрифти - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Проєкти - %s - Penpot"
@@ -4040,7 +4043,7 @@ msgstr "Проєкти - %s - Penpot"
msgid "title.dashboard.search"
msgstr "Пошук - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "Спільні бібліотеки - %s - Penpot"
@@ -4048,7 +4051,7 @@ msgstr "Спільні бібліотеки - %s - Penpot"
msgid "title.default"
msgstr "Penpot - свобода дизайну для команд"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "Профіль - токени доступу"
@@ -4056,7 +4059,7 @@ msgstr "Профіль - токени доступу"
msgid "title.settings.feedback"
msgstr "Надіслати відгук - Penpot"
-#: src/app/main/ui/settings/notifications.cljs:64
+#: src/app/main/ui/settings/notifications.cljs:45
msgid "title.settings.notifications"
msgstr "Сповіщення - Penpot"
@@ -4092,7 +4095,7 @@ msgstr "Вебхуки - %s - Penpot"
msgid "title.viewer"
msgstr "%s - Режим перегляду - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -4192,7 +4195,7 @@ msgstr "Розподілити вертикальні проміжки (%s)"
msgid "workspace.align.vtop"
msgstr "Вирівняти по верху (%s)"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:174, src/app/main/ui/workspace/sidebar/assets.cljs:179
+#: src/app/main/ui/workspace/sidebar/assets.cljs:171
msgid "workspace.assets.add-library"
msgstr "Додати бібліотеку"
@@ -4201,11 +4204,11 @@ msgstr "Додати бібліотеку"
msgid "workspace.assets.assets"
msgstr "Ресурси"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Усі ресурси"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Кольори"
@@ -4213,11 +4216,11 @@ msgstr "Кольори"
msgid "workspace.assets.colors.add-color"
msgstr "Додати колір"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Компоненти"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:510
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:520
msgid "workspace.assets.components.add-component"
msgstr "Додати компонент"
@@ -4229,15 +4232,15 @@ msgstr "Створити групу"
msgid "workspace.assets.create-group-hint"
msgstr "Ваші елементи будуть автоматично названі як \"назва групи / назва елемента\""
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "Видалити"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "Створити дуплікат"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "Дублювати головний"
@@ -4245,19 +4248,19 @@ msgstr "Дублювати головний"
msgid "workspace.assets.edit"
msgstr "Редагувати"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:195
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
msgid "workspace.assets.filter"
msgstr "Фільтрувати"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Графіка"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:505
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:515
msgid "workspace.assets.grid-view"
msgstr "Перегляд сіткою"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Група"
@@ -4265,27 +4268,23 @@ msgstr "Група"
msgid "workspace.assets.group-name"
msgstr "Ім'я групи"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Бібліотеки"
-
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:501
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:511
msgid "workspace.assets.list-view"
msgstr "Перегляд списком"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "локальна бібліотека"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Не було знайдено ресурсів"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "Відкрити файл бібліотеки"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Перейменувати"
@@ -4293,7 +4292,7 @@ msgstr "Перейменувати"
msgid "workspace.assets.rename-group"
msgstr "Перейменувати групу"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Пошук ресурсів"
@@ -4310,18 +4309,18 @@ msgstr[2] "%s елементів обрано"
msgid "workspace.assets.shared-library"
msgstr "Спільна бібліотека"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:226
+#: 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:211
+#: src/app/main/ui/workspace/sidebar/assets.cljs:201
msgid "workspace.assets.sort"
msgstr "Сортувати"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Типографіка"
@@ -4334,27 +4333,27 @@ msgstr "Додати типографіку"
msgid "workspace.assets.typography.font-id"
msgstr "Шрифт"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Розмір"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Варіант"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "Перейти до файлу бібліотеки стилів для редагування"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Міжлітеральний відступ"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Висота лінії"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Аа"
@@ -4362,7 +4361,7 @@ msgstr "Аа"
msgid "workspace.assets.typography.text-styles"
msgstr "Стилі тексту"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Перетворення тексту"
@@ -4370,55 +4369,55 @@ msgstr "Перетворення тексту"
msgid "workspace.assets.ungroup"
msgstr "Розгрупувати"
-#: src/app/main/ui/workspace/context_menu.cljs:748
+#: src/app/main/ui/workspace/context_menu.cljs:764
msgid "workspace.context-menu.grid-cells.area"
msgstr "Створити ділянку"
-#: src/app/main/ui/workspace/context_menu.cljs:751
+#: src/app/main/ui/workspace/context_menu.cljs:767
msgid "workspace.context-menu.grid-cells.create-board"
msgstr "Створити дошку"
-#: src/app/main/ui/workspace/context_menu.cljs:743
+#: src/app/main/ui/workspace/context_menu.cljs:759
msgid "workspace.context-menu.grid-cells.merge"
msgstr "Об'єднати клітинки"
-#: src/app/main/ui/workspace/context_menu.cljs:706
+#: src/app/main/ui/workspace/context_menu.cljs:722
msgid "workspace.context-menu.grid-track.column.add-after"
msgstr "Додати 1 стовпець праворуч"
-#: src/app/main/ui/workspace/context_menu.cljs:705
+#: src/app/main/ui/workspace/context_menu.cljs:721
msgid "workspace.context-menu.grid-track.column.add-before"
msgstr "Додати 1 стовпець ліворуч"
-#: src/app/main/ui/workspace/context_menu.cljs:707
+#: src/app/main/ui/workspace/context_menu.cljs:723
msgid "workspace.context-menu.grid-track.column.delete"
msgstr "Видалити стовпець"
-#: src/app/main/ui/workspace/context_menu.cljs:708
+#: src/app/main/ui/workspace/context_menu.cljs:724
msgid "workspace.context-menu.grid-track.column.delete-shapes"
msgstr "Видалити стовпець та фігури"
-#: src/app/main/ui/workspace/context_menu.cljs:704
+#: src/app/main/ui/workspace/context_menu.cljs:720
msgid "workspace.context-menu.grid-track.column.duplicate"
msgstr "Дублювати стовпець"
-#: src/app/main/ui/workspace/context_menu.cljs:713
+#: src/app/main/ui/workspace/context_menu.cljs:729
msgid "workspace.context-menu.grid-track.row.add-after"
msgstr "Додати 1 рядок знизу"
-#: src/app/main/ui/workspace/context_menu.cljs:712
+#: src/app/main/ui/workspace/context_menu.cljs:728
msgid "workspace.context-menu.grid-track.row.add-before"
msgstr "Додати 1 рядок вгорі"
-#: src/app/main/ui/workspace/context_menu.cljs:714
+#: src/app/main/ui/workspace/context_menu.cljs:730
msgid "workspace.context-menu.grid-track.row.delete"
msgstr "Видалити рядок"
-#: src/app/main/ui/workspace/context_menu.cljs:715
+#: src/app/main/ui/workspace/context_menu.cljs:731
msgid "workspace.context-menu.grid-track.row.delete-shapes"
msgstr "Видалити рядок та фігури"
-#: src/app/main/ui/workspace/context_menu.cljs:711
+#: src/app/main/ui/workspace/context_menu.cljs:727
msgid "workspace.context-menu.grid-track.row.duplicate"
msgstr "Дублювати рядок"
@@ -4426,11 +4425,11 @@ msgstr "Дублювати рядок"
msgid "workspace.focus.focus-mode"
msgstr "Режим фокусування"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Розфокосувати"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Фокусувати"
@@ -4461,7 +4460,7 @@ msgstr "Вимкнути масштабування тексту"
#: src/app/main/ui/workspace/main_menu.cljs:228
msgid "workspace.header.menu.disable-snap-guides"
-msgstr "Зробити неактивною прив'язку до орієнтирів"
+msgstr "Деактивувати прив'язку до орієнтирів"
#: src/app/main/ui/workspace/main_menu.cljs:258
msgid "workspace.header.menu.disable-snap-pixel-grid"
@@ -4469,7 +4468,7 @@ msgstr "Вимкнути прив'язку до пікселів"
#: src/app/main/ui/workspace/main_menu.cljs:212
msgid "workspace.header.menu.disable-snap-ruler-guides"
-msgstr "Зробити неактивною прив'язку до орієнтирів лінійок"
+msgstr "Деактивувати прив'язку до орієнтирів лінійок"
#: src/app/main/ui/workspace/main_menu.cljs:244
msgid "workspace.header.menu.enable-dynamic-alignment"
@@ -4542,7 +4541,7 @@ msgstr "Налаштування"
#: src/app/main/ui/workspace/main_menu.cljs:866
msgid "workspace.header.menu.option.view"
-msgstr "Вид"
+msgstr "Вигляд"
#: src/app/main/ui/workspace/main_menu.cljs:471
msgid "workspace.header.menu.redo"
@@ -4588,37 +4587,36 @@ msgstr "Перемкнутись на світлу тему"
msgid "workspace.header.menu.undo"
msgstr "Відхилити зміни"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Скинути"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "Помилка при збереженні"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Збережено"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Збереження"
-#: src/app/main/ui/workspace/right_header.cljs:255
+#: src/app/main/ui/workspace/right_header.cljs:221
msgid "workspace.header.share"
msgstr "Поділитись"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Незбережені зміни"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "Режим перегляду (%s)"
-#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "Збільшення"
@@ -4630,7 +4628,7 @@ msgstr "Заповнення - розширити щоб заповнити"
msgid "workspace.header.zoom-fit"
msgstr "Fit - зменшити масштаб до потрібного розміру"
-#: src/app/main/ui/workspace/right_header.cljs:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Збільшити щоб вмістити все"
@@ -4638,19 +4636,19 @@ msgstr "Збільшити щоб вмістити все"
msgid "workspace.header.zoom-full-screen"
msgstr "Повноекранний"
-#: src/app/main/ui/workspace/right_header.cljs:136
+#: src/app/main/ui/workspace/right_header.cljs:104
msgid "workspace.header.zoom-selected"
-msgstr "Збільшити до виділеного"
+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:607
+#: 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:616
msgid "workspace.layout_grid.editor.options.edit-grid"
msgstr "Редагувати сітку"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
msgid "workspace.layout_grid.editor.options.exit"
msgstr "Вихід"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:478
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
msgid "workspace.layout_grid.editor.padding.expand"
msgstr "Показати параметри 4-стороннього внутрішнього відступу"
@@ -4660,13 +4658,13 @@ msgstr "Редагування сітки"
#: src/app/main/ui/workspace/viewport/grid_layout_editor.cljs:65
msgid "workspace.layout_grid.editor.top-bar.done"
-msgstr "Виконано"
+msgstr "Готово"
#: src/app/main/ui/workspace/viewport/grid_layout_editor.cljs:62
msgid "workspace.layout_grid.editor.top-bar.locate"
msgstr "Розмістити"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1321
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
msgstr "Розмістити макет сітки"
@@ -4675,7 +4673,7 @@ msgstr "Розмістити макет сітки"
msgid "workspace.libraries.add"
msgstr "Додати"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s кольорів"
@@ -4705,43 +4703,43 @@ msgstr "Попередні кольори"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "Додатковий RGB"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Зберегти стиль кольору"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:374
+#: src/app/main/ui/workspace/libraries.cljs:371
msgid "workspace.libraries.empty.add-some"
msgstr "Або додайте кілька з них, щоб спробувати:"
-#: src/app/main/ui/workspace/libraries.cljs:368
+#: src/app/main/ui/workspace/libraries.cljs:365
msgid "workspace.libraries.empty.no-libraries"
msgstr "У команді немає Спільних Бібліотек"
-#: src/app/main/ui/workspace/libraries.cljs:372
+#: src/app/main/ui/workspace/libraries.cljs:369
msgid "workspace.libraries.empty.some-templates"
msgstr "деякі шаблони тут"
-#: src/app/main/ui/workspace/libraries.cljs:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Бібліотека файлів"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "БІБЛІОТЕКИ В ЦЬОМУ ФАЙЛІ"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "БІБЛІОТЕКИ"
@@ -4750,71 +4748,64 @@ msgstr "БІБЛІОТЕКИ"
msgid "workspace.libraries.library"
msgstr "БІБЛІОТЕКА"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "ОНОВЛЕННЯ БІБЛІОТЕКИ"
-#: src/app/main/ui/workspace/libraries.cljs:363
+#: src/app/main/ui/workspace/libraries.cljs:360
msgid "workspace.libraries.loading"
msgstr "Завантаження…"
#: src/app/main/ui/workspace/libraries.cljs:387
+#, unused
msgid "workspace.libraries.more-templates"
msgstr "Ви можете шукати "
-#: src/app/main/ui/workspace/libraries.cljs:391
-msgid "workspace.libraries.more-templates-link"
-msgstr "більше шаблонів тут"
-
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "Тут ще немає спільних бібліотек, які потребують оновлення"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "Не знайдено збігів для \"%s\""
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "Немає доступних спільних бібліотек"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "Пошук спільних бібліотек"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "СПІЛЬНІ БІБЛІОТЕКИ"
-#: src/app/main/ui/workspace/libraries.cljs:355
+#: src/app/main/ui/workspace/libraries.cljs:352
msgid "workspace.libraries.shared-library-btn"
msgstr "Під'єднати бібліотеку"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Кілька типографік"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "Від'язати усі типографіки"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:326
+#: src/app/main/ui/workspace/libraries.cljs:323
msgid "workspace.libraries.unlink-library-btn"
msgstr "Від'єднати бібліотеку"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "Оновити"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "побачити усі зміни"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "ОНОВЛЕННЯ"
@@ -4846,45 +4837,45 @@ msgstr "Вибіркове розмиття"
msgid "workspace.options.blur-options.toggle-blur"
msgstr "Перемикання розмивання"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Фон полотна"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Зміст кліпу"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Компонент"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "Анотація"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
-msgstr "Копіювати"
+msgstr "Копія"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "Створіть анотацію"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Редагуйте анотацію"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Головний"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:416
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
msgid "workspace.options.component.swap"
msgstr "Замінити компонент"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:460
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
msgid "workspace.options.component.swap.empty"
-msgstr "У цій бібліотеці, поки що, немає ресурсів"
+msgstr "У цій бібліотеці немає ресурсів"
#: src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:163
msgid "workspace.options.constraints"
@@ -4930,7 +4921,7 @@ msgstr "По верху та низу"
msgid "workspace.options.design"
msgstr "Дизайн"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Експортувати"
@@ -4939,22 +4930,22 @@ msgstr "Експортувати"
msgid "workspace.options.export-multiple"
msgstr "Експортувати обране"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
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:187
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188
msgid "workspace.options.export.add-export"
msgstr "Додати експортування"
-#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:199, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:234
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:200, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:235
msgid "workspace.options.export.remove-export"
msgstr "Видалити експортування"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "Суфікс"
@@ -4962,7 +4953,7 @@ msgstr "Суфікс"
msgid "workspace.options.exporting-complete"
msgstr "Експортування завершено"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Експортую…"
@@ -4986,6 +4977,10 @@ msgstr "Додати колір заливки"
msgid "workspace.options.fill.remove-fill"
msgstr "Видалити заливку"
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:341
+msgid "workspace.options.fit-content"
+msgstr "Змінити розмір щоб заповнити"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182
msgid "workspace.options.flows.add-flow-start"
msgstr "Додати початок потоку"
@@ -5098,7 +5093,7 @@ msgstr "Рядки"
#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:158
msgid "workspace.options.grid.square"
-msgstr "Квадрат"
+msgstr "Квадратна"
#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:50
msgid "workspace.options.group-fill"
@@ -5124,7 +5119,7 @@ msgstr "Орієнтири"
msgid "workspace.options.guides.toggle-guide"
msgstr "Перемкнути орієнтир"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Висота"
@@ -5393,7 +5388,7 @@ msgstr "Відтінок"
#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:142
msgid "workspace.options.layer-options.blend-mode.lighten"
-msgstr "Освітленн"
+msgstr "Світліше"
#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153
msgid "workspace.options.layer-options.blend-mode.luminosity"
@@ -5401,7 +5396,7 @@ msgstr "Сяяння"
#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:140
msgid "workspace.options.layer-options.blend-mode.multiply"
-msgstr "Помножити"
+msgstr "Множення"
#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:138
msgid "workspace.options.layer-options.blend-mode.normal"
@@ -5421,7 +5416,7 @@ msgstr "Екран"
#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146
msgid "workspace.options.layer-options.blend-mode.soft-light"
-msgstr "М'який світлий"
+msgstr "М'яке світло"
#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs
#, unused
@@ -5440,26 +5435,26 @@ msgstr "Обрані шари"
#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:197
msgid "workspace.options.layer-options.toggle-layer"
-msgstr "Перемкнути видімість шару"
+msgstr "Перемкнути видимість шару"
#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs
#, unused
msgid "workspace.options.layout-item.advanced-ops"
msgstr "Додаткові параметри"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "Макс. Висота"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "Макс. Ширина"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "Мін.Висота"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Мін.Ширина"
@@ -5573,11 +5568,11 @@ msgstr "простір між"
msgid "workspace.options.layout.top"
msgstr "Згори"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Більше кольорів"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Більше кольорів бібліотеки"
@@ -5622,7 +5617,7 @@ msgstr "Згорнути незалежні радіуси"
msgid "workspace.options.radius.show-single-corners"
msgstr "Показати незалежні радіуси кутів"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Нещодавній"
@@ -5630,11 +5625,11 @@ msgstr "Нещодавній"
msgid "workspace.options.retry"
msgstr "Спробувати ще раз"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Обернення"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Пошук шрифту"
@@ -5642,7 +5637,7 @@ msgstr "Пошук шрифту"
msgid "workspace.options.select-a-shape"
msgstr "Оберіть фігуру, дошку чи групу щоб перетягнути з'єднання до іншої дошки."
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Обрані кольори"
@@ -5654,55 +5649,55 @@ msgstr "Заливка обраного"
msgid "workspace.options.selection-stroke"
msgstr "Обведення виділення"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:292
msgid "workspace.options.shadow-options.add-shadow"
msgstr "Додати тінь"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Розмиття"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Колір тіні"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Падаюча тінь"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Внутрішня тінь"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "Вісь X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Вісь Y"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:180, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:318
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
msgid "workspace.options.shadow-options.remove-shadow"
msgstr "Видалити тінь"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Розтягнення"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Тінь"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Групова тінь"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Тінь виділеного"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:176
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:144
msgid "workspace.options.shadow-options.toggle-shadow"
msgstr "Перемкнути тінь"
@@ -5710,7 +5705,7 @@ msgstr "Перемкнути тінь"
msgid "workspace.options.show-fill-on-export"
msgstr "Показати в експортованому"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Показати у режимі перегляду"
@@ -5718,7 +5713,7 @@ msgstr "Показати у режимі перегляду"
msgid "workspace.options.size"
msgstr "Розмір"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Шаблони розміру"
@@ -5787,7 +5782,7 @@ msgstr "Трикутне"
msgid "workspace.options.stroke-color"
msgstr "Колір обведення"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Довжина обведення"
@@ -5859,11 +5854,11 @@ msgstr "Автоматична ширина"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Фіксована"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
-msgstr "Міжлітеральний відступ"
+msgstr "Інтервал між літерами"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Висота рядка"
@@ -5926,18 +5921,18 @@ msgstr "ВЕРХНІЙ РЕГІСТР"
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753
msgid "workspace.options.use-play-button"
msgstr ""
-"Використовуйте кнопку програвання в заголовку, щоб запустити перегляд "
+"Використовуйте кнопку відтворення в заголовку, щоб запустити перегляд "
"прототипів."
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Ширина"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "Вісь абсцис (X)"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Вісь ординат (Y)"
@@ -5992,19 +5987,19 @@ msgstr "Дослідіть [більше плагінів](%s)"
#: src/app/main/ui/workspace/plugins.cljs:209
msgid "workspace.plugins.empty-plugins"
-msgstr "У вас ще немає жодного плагіну"
+msgstr "Ви поки не встановлювали жодного плагіна"
#: src/app/main/ui/workspace/plugins.cljs:196
msgid "workspace.plugins.error.manifest"
-msgstr "Маніфест плагіну неправильний."
+msgstr "Маніфест плагіна неправильний."
#: src/app/main/data/plugins.cljs:86, src/app/main/ui/workspace/main_menu.cljs:743, src/app/main/ui/workspace/plugins.cljs:82
msgid "workspace.plugins.error.need-editor"
-msgstr "Щоб використовувати цей плагін, ви маєте бути редактором"
+msgstr "Щоб використовувати цей плагін, Ви маєте бути редактором"
#: src/app/main/ui/workspace/plugins.cljs:192
msgid "workspace.plugins.error.url"
-msgstr "Плагіну не існує чи посилання неправильне."
+msgstr "Плагін не існує або посилання на нього неправильне."
#: src/app/main/ui/workspace/plugins.cljs:188
msgid "workspace.plugins.install"
@@ -6029,8 +6024,8 @@ msgstr "ОНОВИТИ ЦЕЙ ПЛАГІН"
#: src/app/main/ui/workspace/plugins.cljs:376
msgid "workspace.plugins.permissions-update.warning"
msgstr ""
-"Плагін було модифіковано після вашого останнього використання. Тепер він "
-"також хоче отримати доступ до:"
+"Плагін було модифіковано після останнього використання. Тепер він також "
+"хоче отримати доступ до:"
#: src/app/main/ui/workspace/plugins.cljs:283
msgid "workspace.plugins.permissions.allow-download"
@@ -6055,9 +6050,10 @@ msgstr "Читати та модифікувати вміст файлів, до
#: src/app/main/ui/workspace/plugins.cljs:323
msgid "workspace.plugins.permissions.disclaimer"
msgstr ""
-"Зауважте, що плагін створено третьою особою, тож впевніться що ви довіряєте "
-"йому перш ніж надавати дозволи. Для нас важлива приватність та безпека "
-"ваших даних. Якщо маєте якісь сумніви, то просимо зв'язатись з підтримкою."
+"Зауважте, що плагін створено зовнішньою стороною, тож впевніться що Ви "
+"довіряєте йому перш ніж надавати дозволи. Для нас важлива приватність та "
+"безпека Ваших даних. Якщо маєте якісь сумніви, звʼяжіться із службою "
+"підтримки."
#: src/app/main/ui/workspace/plugins.cljs:263
msgid "workspace.plugins.permissions.library-read"
@@ -6073,7 +6069,7 @@ msgstr "'%s' ПЛАГІН ЗАПИТУЄ ДОСТУП НА:"
#: src/app/main/ui/workspace/plugins.cljs:250
msgid "workspace.plugins.permissions.user-read"
-msgstr "Прочитати інформацію профілю поточного користувача."
+msgstr "Читати інформацію профілю поточного користувача."
#: src/app/main/ui/workspace/plugins.cljs:214
msgid "workspace.plugins.plugin-list-link"
@@ -6113,123 +6109,127 @@ msgstr "'%s' ПЛАГІН ВСТАНОВЛЕНО ДЛЯ ВАШОГО КОРИС
msgid "workspace.plugins.try-out.try"
msgstr "СПРОБУВАТИ ПЛАГІН"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Додати гнучкий макет"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "Додати макет сітки"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1004, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1030
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1013, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039
msgid "workspace.shape.menu.add-layout"
msgstr "Додати макет"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "Розмістити позаду"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "Перемістити назад"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Копіювати"
-#: src/app/main/ui/workspace/context_menu.cljs:203
+#: src/app/main/ui/workspace/context_menu.cljs:204
msgid "workspace.shape.menu.copy-css"
msgstr "Копіювати як CSS"
-#: src/app/main/ui/workspace/context_menu.cljs:205
+#: src/app/main/ui/workspace/context_menu.cljs:206
msgid "workspace.shape.menu.copy-css-nested"
msgstr "Копіювати як CSS (вкладені шари)"
-#: src/app/main/ui/workspace/context_menu.cljs:188
+#: src/app/main/ui/workspace/context_menu.cljs:189
msgid "workspace.shape.menu.copy-link"
msgstr "Копіювати посилання в буфер обміну"
-#: src/app/main/ui/workspace/context_menu.cljs:201
+#: src/app/main/ui/workspace/context_menu.cljs:202
msgid "workspace.shape.menu.copy-paste-as"
-msgstr "Копіювання/вставка як ..."
+msgstr "Копіювати/вставити як ..."
-#: src/app/main/ui/workspace/context_menu.cljs:213
+#: src/app/main/ui/workspace/context_menu.cljs:214
msgid "workspace.shape.menu.copy-props"
msgstr "Копіювати властивості"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/context_menu.cljs:211
+msgid "workspace.shape.menu.copy-text"
+msgstr "Копіювати як текст"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "Створити анотацію"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Виділене на дошку"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Створити компонент"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Створити кілька компонентів"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Вирізати"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Вилучити"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Видалити початок потоку"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "Відокремити екземпляр"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Відокремити екземпляри"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Різниця"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Дублювати"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Редагувати"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Виключити"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
-msgstr "Вирівнювати"
+msgstr "Вирівняти"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Перевернути по горизонталі"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Перевернути по вертикалі"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Початок потоку"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
-msgstr "Відсунути на задній план"
+msgstr "На передній план"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Висунути на перший план"
@@ -6238,107 +6238,107 @@ msgstr "Висунути на перший план"
msgid "workspace.shape.menu.go-main"
msgstr "Перейти до файлу головного компоненту"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Група"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Приховати"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Показати / приховати інтерфейс"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Перехрестя"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Заблокувати"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
-msgstr "Маскувати"
+msgstr "Додати маску"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "Вставити"
-#: src/app/main/ui/workspace/context_menu.cljs:217
+#: src/app/main/ui/workspace/context_menu.cljs:218
msgid "workspace.shape.menu.paste-props"
msgstr "Вставити властивості"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Шлях"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Видалити гнучкий макет"
-#: src/app/main/ui/workspace/context_menu.cljs:531
+#: src/app/main/ui/workspace/context_menu.cljs:535
msgid "workspace.shape.menu.remove-grid"
msgstr "Видалити макет сітки"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1022
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1031
msgid "workspace.shape.menu.remove-layout"
msgstr "Видалити макет"
-#: src/app/main/ui/workspace/context_menu.cljs:312
+#: src/app/main/ui/workspace/context_menu.cljs:313
msgid "workspace.shape.menu.rename"
msgstr "Перейменувати"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Відкликати зміни"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Відновити головний компонент"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Обрати шар"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Показати"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "Показати в панелі ресурсів"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Показати головний компонент"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Видалити мініатюру"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Встановити як мініатюру"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Перетворити на шлях"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Дегрупувати"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Об'єднання"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Розблокувати"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Зняти маску"
@@ -6347,7 +6347,7 @@ msgstr "Зняти маску"
msgid "workspace.shape.menu.update-components-in-bulk"
msgstr "Оновити головні компоненти"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "Оновити головний компонент"
@@ -6359,11 +6359,11 @@ msgstr "Приховати панель інструментів"
msgid "workspace.sidebar.expand"
msgstr "Розкрити панель інструментів"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Історія"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Шари"
@@ -6399,7 +6399,7 @@ msgstr "Фігури"
msgid "workspace.sidebar.layers.texts"
msgstr "Тексти"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Імпортовані атрибути SVG"
@@ -6411,7 +6411,7 @@ msgstr "Сторінки"
msgid "workspace.sidebar.sitemap.add-page"
msgstr "Додати сторінку"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Мапа сайту"
@@ -6429,43 +6429,43 @@ msgstr "%s активних тем"
msgid "workspace.token.add set"
msgstr "Додати набір"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:341
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:136
+msgid "workspace.token.applied-to"
+msgstr "Застосовано до"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:391
msgid "workspace.token.back-to-themes"
msgstr "Повернутись до списку тем"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:51
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:54
msgid "workspace.token.create-new-theme"
msgstr "Створити свою першу тему зараз."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:191, src/app/main/ui/workspace/tokens/sidebar.cljs:218
+#: src/app/main/ui/workspace/tokens/sets.cljs:134, src/app/main/ui/workspace/tokens/sidebar.cljs:190
msgid "workspace.token.create-one"
msgstr "Створити його."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159, src/app/main/ui/workspace/tokens/modals/themes.cljs:237
-msgid "workspace.token.create-theme-title"
-msgstr "Створити тему"
-
-#: src/app/main/ui/workspace/tokens/form.cljs:431
+#: src/app/main/ui/workspace/tokens/form.cljs:492
msgid "workspace.token.create-token"
msgstr "Створити новий %s токен"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:228
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:278
msgid "workspace.token.delete"
msgstr "Видалити токен"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:151
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159
msgid "workspace.token.delete-theme-title"
msgstr "Видалити тему"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:225
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:275
msgid "workspace.token.duplicate"
msgstr "Дублювати токен"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:212
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:262
msgid "workspace.token.edit"
msgstr "Змінити токен"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:333
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:383
msgid "workspace.token.edit-theme-title"
msgstr "Редагувати тему"
@@ -6473,105 +6473,127 @@ msgstr "Редагувати тему"
msgid "workspace.token.edit-themes"
msgstr "Редагувати теми"
-#: src/app/main/ui/workspace/tokens/form.cljs:430
+#: src/app/main/ui/workspace/tokens/form.cljs:491
msgid "workspace.token.edit-token"
msgstr "Редагувати токен"
-#: src/app/main/ui/workspace/tokens/form.cljs:481
+#: src/app/main/ui/workspace/tokens/form.cljs:544
msgid "workspace.token.enter-token-description"
msgstr "Додайте опис (необов'язково)"
-#: src/app/main/ui/workspace/tokens/form.cljs:437
+#: src/app/main/ui/workspace/tokens/form.cljs:498
msgid "workspace.token.enter-token-name"
-msgstr "Введіть %s ім'я токену"
+msgstr "Вкажіть %s ім'я токену"
#: src/app/main/ui/workspace/tokens/sets.cljs
#, unused
msgid "workspace.token.grouping-set-alert"
msgstr "Групування наборів токенів поки не підтримується."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:56
-msgid "workspace.token.new-theme"
-msgstr "Нова тема"
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:196
+msgid "workspace.token.label.group"
+msgstr "Група"
-#: src/app/main/ui/workspace/tokens/theme_select.cljs:88
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:206
+msgid "workspace.token.label.theme"
+msgstr "Тема"
+
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:89
msgid "workspace.token.no-active-theme"
msgstr "Немає активної теми"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:146
-msgid "workspace.token.no-sets"
-msgstr "Немає наборів"
+#: src/app/main/ui/workspace/tokens/sets.cljs:110
+msgid "workspace.token.no-permisions-set"
+msgstr "Щоб активувати / деактивувати набір, Ви маєте бути редактором"
-#: src/app/main/ui/workspace/tokens/sets.cljs:401, src/app/main/ui/workspace/tokens/sets.cljs:405
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:199
+msgid "workspace.token.no-permission-themes"
+msgstr "Щоб використовувати ці теми Ви маєте бути редактором"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:504
msgid "workspace.token.no-sets-create"
msgstr "Ще не оголошено жодного набору. Створіть перший."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:215, src/app/main/ui/workspace/tokens/sidebar.cljs:221
+#: src/app/main/ui/workspace/tokens/sets.cljs:131, src/app/main/ui/workspace/tokens/sets.cljs:137
msgid "workspace.token.no-sets-yet"
msgstr "Тут ще немає наборів."
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:187
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:186
msgid "workspace.token.no-themes"
msgstr "Тут немає тем."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:47
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:50
msgid "workspace.token.no-themes-currently"
msgstr "Наразі у вас немає жодної теми."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:137
-msgid "workspace.token.num-sets"
-msgstr "%s наборів"
-
-#: src/app/main/ui/workspace/tokens/token_pill.cljs:114
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:122
#, fuzzy
msgid "workspace.token.original-value"
-msgstr "Початкове значення: "
+msgstr "Початкове значення: %s"
-#: src/app/main/ui/workspace/tokens/form.cljs:205, src/app/main/ui/workspace/tokens/form.cljs:208, src/app/main/ui/workspace/tokens/token_pill.cljs:115
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:128
+msgid "workspace.token.ref-not-valid"
+msgstr "Посилання недійсне або ні на одному із активних наборів"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:217, src/app/main/ui/workspace/tokens/form.cljs:221, src/app/main/ui/workspace/tokens/token_pill.cljs:123
#, fuzzy
msgid "workspace.token.resolved-value"
-msgstr "Розв'язане значення: "
+msgstr "Отримане значення: %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:203
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:240
msgid "workspace.token.save-theme"
msgstr "Зберегти тему"
-#: src/app/main/ui/workspace/tokens/sets.cljs:200, src/app/main/ui/workspace/tokens/sets.cljs:305
+#: src/app/main/ui/workspace/tokens/sets.cljs:239, src/app/main/ui/workspace/tokens/sets.cljs:340
msgid "workspace.token.select-set"
msgstr "Обрати набір."
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:346
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:396
msgid "workspace.token.set-selection-theme"
msgstr ""
"Визначити які набори токенів повинні бути використані як частину цього "
"варіанту теми:"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs
-#, unused
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:136
msgid "workspace.token.theme-name"
msgstr "Тема %s"
-#: src/app/main/ui/workspace/tokens/modals/themes.cljs:43, src/app/main/ui/workspace/tokens/modals/themes.cljs:88
-msgid "workspace.token.themes"
-msgstr "Теми"
-
-#: src/app/main/ui/workspace/tokens/form.cljs:482
+#: src/app/main/ui/workspace/tokens/form.cljs:545
msgid "workspace.token.token-description"
msgstr "Опис"
-#: src/app/main/ui/workspace/tokens/form.cljs:440
+#: src/app/main/ui/workspace/tokens/form.cljs:501
msgid "workspace.token.token-name"
msgstr "Ім'я"
-#: src/app/main/ui/workspace/tokens/form.cljs:464
+#: src/app/main/ui/workspace/tokens/form.cljs:59
+msgid "workspace.token.token-name-validation-error"
+msgstr ""
+" недійсне імʼя токену.\n"
+"Імʼя має містити тільки літери та цифри, розділені крапкою та не мають "
+"починатись із символу \"$\"."
+
+#: src/app/main/ui/workspace/tokens/form.cljs:526
msgid "workspace.token.token-value"
msgstr "Значення"
-#: src/app/main/ui/workspace/tokens/sidebar.cljs:348
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:322
+msgid "workspace.token.tokens-section-title"
+msgstr "ТОКЕНИ - %s"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:405
msgid "workspace.token.tools"
msgstr "Інструменти"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:131
+msgid "workspace.token.value-not-valid"
+msgstr "Значення недійсне"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:520
+msgid "workspace.token.warning-name-change"
+msgstr "Якщо перейменувати токен, посилання на старе імʼя буде розірвано."
+
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Ресурси"
@@ -6579,39 +6601,39 @@ msgstr "Ресурси"
msgid "workspace.toolbar.color-palette"
msgstr "Палітра кольорів (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Коментарі (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Крива (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Еліпс (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Дошка (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Зображення (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Перемістити (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Шлях (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:201, src/app/main/ui/workspace/top_toolbar.cljs:202
+#: src/app/main/ui/workspace/top_toolbar.cljs:210, src/app/main/ui/workspace/top_toolbar.cljs:211
msgid "workspace.toolbar.plugins"
msgstr "Плагіни (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Прямокутник (%s)"
@@ -6620,7 +6642,7 @@ msgstr "Прямокутник (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Скорочення (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Текст (%s)"
@@ -6628,13 +6650,13 @@ msgstr "Текст (%s)"
msgid "workspace.toolbar.text-palette"
msgstr "Типографіки (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:220, src/app/main/ui/workspace/top_toolbar.cljs:221
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
msgid "workspace.toolbar.toggle-toolbar"
msgstr "Перемкнути панель інструментів"
#: src/app/main/ui/workspace/viewport/top_bar.cljs:39
msgid "workspace.top-bar.read-only.done"
-msgstr "Виконано"
+msgstr "Готово"
#: src/app/main/ui/workspace/viewport/top_bar.cljs:36
#, markdown
@@ -6786,19 +6808,19 @@ msgstr "Операція над %s"
msgid "workspace.undo.title"
msgstr "Історія"
-#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Відкинути"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
msgid "workspace.updates.more-info"
msgstr "Більше про"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
msgid "workspace.updates.there-are-updates"
msgstr "Є деякі оновлення в спільній бібліотеці"
-#: src/app/main/data/workspace/libraries.cljs:1225
+#: src/app/main/data/workspace/libraries.cljs:1226
msgid "workspace.updates.update"
msgstr "Оновити"
@@ -6858,11 +6880,11 @@ msgstr "Ви бажаєте відновити ці версії?"
msgid "workspace.versions.snapshot-menu"
msgstr "Відкрити меню знятків"
-#: src/app/main/ui/workspace/sidebar.cljs:284
+#: src/app/main/ui/workspace/sidebar.cljs:285
msgid "workspace.versions.tab.actions"
msgstr "Дії"
-#: src/app/main/ui/workspace/sidebar.cljs:281
+#: src/app/main/ui/workspace/sidebar.cljs:282
msgid "workspace.versions.tab.history"
msgstr "Історія"
@@ -6874,7 +6896,7 @@ msgstr "Відкрити меню версій"
#, markdown
msgid "workspace.versions.warning.subtext"
msgstr ""
-"Якщо ви хочете збільшити це обмеження, зверніться до нас через "
+"Якщо Ви хочете збільшити це обмеження, зверніться до нас через "
"[support@penpot.app](%s)"
#: src/app/main/ui/workspace/sidebar/versions.cljs:361
diff --git a/frontend/translations/yo.po b/frontend/translations/yo.po
index 523711bfae..8111b07e89 100644
--- a/frontend/translations/yo.po
+++ b/frontend/translations/yo.po
@@ -1,6 +1,6 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2024-06-17 08:07+0000\n"
+"PO-Revision-Date: 2025-03-20 13:42+0000\n"
"Last-Translator: Anonymous \n"
"Language-Team: Yoruba "
" \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.6-dev\n"
+"X-Generator: Weblate 5.11-dev\n"
#: src/app/main/ui/auth/register.cljs:277
msgid "auth.check-your-email"
@@ -30,13 +30,13 @@ msgstr "ṣẹ̀dá ìfihàn àkáùntí"
msgid "auth.create-demo-profile"
msgstr "kàn fẹ́ gbìyànjú ú rẹ̀?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr ""
"\"\"This is a DEMO service, DO NOT USE for real work, the projects will be "
"parẹ́ lóòrèkóòrè."
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "gbàgbé ọ̀rọ̀-ìgbaniwọlé ?"
@@ -48,27 +48,27 @@ msgstr "orúkọ lẹ́kùnn-ún-rẹ́rẹ́"
msgid "auth.login-here"
msgstr "wọlé síbí"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "wọlé"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "ibùdó gítì"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "láàbù gítì"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "ṣàwárí"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "ṣílẹ̀kuǹ ìdánimọ̀"
@@ -94,7 +94,7 @@ msgstr "a ti fi ọ̀rọ̀-ìgbaniwọle aṣàtúnwárí ránṣẹ sínu àp
msgid "auth.notifications.team-invitation-accepted"
msgstr "o ti wọ inú ẹgbẹ́ bó ṣeyẹ"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "ọ̀rọ̀- ìgbaniwọlé"
@@ -122,11 +122,11 @@ msgstr "gbàgbé ọ̀rọ̀-ìgbaniwọle ?"
msgid "auth.recovery-submit"
msgstr "yí ọ̀rọ̀-ìgbaniwọlé rẹ padà"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "kò tí ì sí àkáùntì?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "ṣẹ̀dá àkáùntì"
@@ -139,7 +139,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:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "òfin ibiṣẹ́"
@@ -158,7 +158,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:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "ìgbéjáde"
@@ -218,7 +218,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:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "ohun tí a kò tí ì kọ jáde"
@@ -262,7 +262,7 @@ msgstr "bẹ̀rẹ̀ ìrìn kiri"
msgid "dasboard.walkthrough-hero.title"
msgstr "wò ó bí o ṣe ń rìn kiri"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "ṣe ìpilẹ̀sẹ̀ àmì tókìnnì"
@@ -270,11 +270,11 @@ msgstr "ṣe ìpilẹ̀sẹ̀ àmì tókìnnì"
msgid "dashboard.access-tokens.create.success"
msgstr "ṣe àyẹ̀wò àmì tókìnnì tí o ṣẹ̀dá bó ṣeyẹ."
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "tẹ bọ́tìnnì \" ṣe ìpilẹ̀sẹ̀ àmì tókìnnì tuntun\" láti ṣe ìpilẹ̀sẹ̀ òmíràn."
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "o kò tí ì ní àmì tókínnì títí di ìsinsìn yìí."
@@ -298,23 +298,23 @@ msgstr "àádọ́ruǹ-ún ọjọ́"
msgid "dashboard.access-tokens.expiration-never"
msgstr "rárá"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "ó parí ní %s"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "ó parí %s"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "kò sì ọjọ́ ìparí"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "àmì tokìnnì ìwọlé ti ara ẹni"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr ""
"Iṣẹ́ àmì tókìnì ìwọlé ti ara ẹni dàbì ọ̀nà kejí tí a le gbà wọlé/ ọ̀rọ̀- "
@@ -337,7 +337,7 @@ 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:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(dàákọ)"
@@ -454,19 +454,19 @@ msgstr "da ohun ìní yàrá ìkàwé pípín pọ̀ mọ́ fáìlì yàrá ìk
msgid "dashboard.export.title"
msgstr "fi àwọn fáìlì ráńṣẹ"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "fọ́ǹtì tó sọnù"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "yọ gbogbo wọn kúrò"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "àwọn fọ́ǹtì tí o ọpulóòdù yó hàn níbí."
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -476,7 +476,7 @@ msgstr ""
"soso**. O lè ọpulóòdù fọ́ǹtì pẹ̀lú àwọn ìlànà wọ̀nyí: **TTF, OTF and "
"WOFF** (ẹyọ kan péré la ó nílò)."
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
@@ -485,11 +485,11 @@ msgstr ""
"òfin pẹ́ńpọtìiṣẹ́](https://pẹ́ńpọtì.apù/àwọn òfin.html). o sì le fẹ́ kà "
"nípa[ ìwé àṣẹ- pẹ́ńpọtì](https://www.taipogíráfì.com/faq)."
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "ọpulóòdù gbogbo rẹ̀"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -500,7 +500,7 @@ msgstr ""
"Ní àfikún, a rẹkọmẹ́ǹdì lílo[tíráńsìfọtà(https://tíráńsìfọtà.org/) láti "
"pilẹ̀ṣẹ̀ àwọn wẹ́bù fọ́ǹtì láti túnṣeàsìṣe. "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "gbé àwọn fáìlì pẹ́ńpọtì wọlé"
@@ -512,7 +512,7 @@ msgstr "ooho! a kò lè gbé fáìlì yìí wọlé"
msgid "dashboard.import.import-error"
msgstr "wàhálà wà láti gbé kan wà láti gbé fáìlì wọlé . fáìlì kò wọlé."
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "àwọn fáìlì tí ó ní nǹkan tí kò fẹsẹ múlẹ̀ ti di yíyọ kúro."
@@ -552,27 +552,27 @@ msgstr "pe àwọn ènìyàn"
msgid "dashboard.leave-team"
msgstr "fẹgbẹ́ sílẹ̀"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "yàrá ìkàwé àti àwọn àwòṣe"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
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:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
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é."
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "yàrá ìkàwé"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "ṣe ìkójọpọ̀ àwọn fáìlí rẹ …"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "ṣèkójọpọ̀ àwọ fọ́ǹtì rẹ …"
@@ -588,11 +588,11 @@ msgstr "gbé %s àwọn fáìlì lọ"
msgid "dashboard.move-to-other-team"
msgstr "gbé lọ sí ẹgbẹ́ mìíràn"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ fáìlì tuntun"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "fáìlì tuntun"
@@ -600,7 +600,7 @@ msgstr "fáìlì tuntun"
msgid "dashboard.new-project"
msgstr "+ iṣẹ́ àgbéṣe tuntun"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "iṣẹ́ àgbéṣe tuntun"
@@ -632,7 +632,7 @@ msgstr "%s àwọn ọmọ ẹgbẹ́"
msgid "dashboard.open-in-new-tab"
msgstr "ṣí fáìlì sínú tábù tuntun"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "àwọn àṣàyàn"
@@ -677,7 +677,7 @@ msgstr "yan èdè ui"
msgid "dashboard.select-ui-theme"
msgstr "yan àkọlé"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "fi gbogbo àwn fáìlì hàn"
@@ -689,7 +689,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:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "a ti gbé fáìlì rẹ kúro dáadáa"
@@ -780,7 +780,7 @@ msgstr "ímeèlì"
msgid "dashboard.your-name"
msgstr "ímeèlì rẹ"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "pẹ́ńpọtì rẹ"
@@ -796,15 +796,15 @@ 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:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "fagilé e"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "ó dára"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "a kò tí ì fàṣẹ si àtúntò olùpèṣè."
@@ -812,11 +812,11 @@ msgstr "a kò tí ì fàṣẹ si àtúntò olùpèṣè."
msgid "errors.auth.unable-to-login"
msgstr "ó dàbí pé o kò tí ì fàṣẹ sí i tàbí àkókò ti kọjá ."
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "fọ́ǹtì %s kò ṣe kójọpọ̀"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "àwọn fọ́ǹtì %s kò ṣe kójọpọ̀"
@@ -824,7 +824,7 @@ msgstr "àwọn fọ́ǹtì %s kò ṣe kójọpọ̀"
msgid "errors.cannot-upload"
msgstr "kò le ọpulóòdù fáìlì ìgbéròyìn-jáde."
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "a ṣàwákiri rẹ kò le ṣe iṣẹ́ yìí"
@@ -836,7 +836,7 @@ msgstr "ímeèlì yìí ti jẹ́ lílò tẹ́lẹ"
msgid "errors.email-already-validated"
msgstr "a ti fọwọ́ sí ímeèlì rẹ tẹ́lẹ̀."
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "o kò le lo ímeèlì rẹ gẹ́gẹ́ bí ọ̀rọ̀ ìgbaniwọlé"
@@ -852,7 +852,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:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "Àsìṣe kan ti ṣẹlẹ̀."
@@ -865,8 +865,7 @@ msgstr "àwọ̀ tó ti díbàjẹ́"
msgid "errors.invalid-email"
msgstr "Tẹ àti wọlé pẹ̀lú ímeèlì tó wúlo jọ̀wọ́"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "Ímeèlì tí a ti mọ̀dájú gbọ́dọ̀ báramu"
@@ -878,7 +877,7 @@ msgstr "àmì àtúnwárí ti díbàjẹ́."
msgid "errors.invite-invalid.info"
msgstr "Èyí tí a pè le parẹ́ tàbí ki àkókò lekọjá ."
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "Ìfàṣẹsí LDAP kò ṣe é ṣe ."
@@ -910,7 +909,7 @@ msgstr "Ijẹ́rìísí ọ̀rọ̀ ìgbaniwọlé rẹ gbọ́dọ̀ báramu"
msgid "errors.password-too-short"
msgstr "Ọ̀rọ̀ ìgbaniwọlé kò gbọdọ̀ dín ní lẹ́tà mẹ́jọ"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "Ti dínà mọ́ pírófáìlì"
@@ -970,12 +969,11 @@ msgstr "Unexpected error on validating àsìṣe àìròtẹ́lẹ̀ lórí ìf
msgid "errors.webhooks.unexpected-status"
msgstr "Ipò àìròtẹ́lẹ̀ %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "Ímeèlì tàbí ọ̀rọ̀ ìgbaniwọlé kò tọ̀nà."
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "Ọ̀rọ̀ ìgbaniwọlé ti àtijọ́ kò tọ̀nà"
@@ -1024,11 +1022,11 @@ msgstr "A wà níbí láti ṣe ìrànlọ́wọ́ fún àwọn ìbéèrè tó b
msgid "feedback.twitter-title"
msgstr "Àkáùnti àtìlẹ́yìn fún Tíwítà"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "Àsìṣe kan ti ṣẹlẹ̀"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "ìkùku ti wà"
@@ -1036,31 +1034,31 @@ msgstr "ìkùku ti wà"
msgid "inspect.attributes.blur.value"
msgstr "bó se péye"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "dínà mọ́"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "Ti dínà mọ"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "Fílì"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "Danlóòdù orísun àwòrán"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "Gíga"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "Fífẹ"
@@ -1099,15 +1097,15 @@ msgstr "Òkè"
msgid "inspect.attributes.layout.width"
msgstr "Fífẹ̀"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "Ibòòji"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "Ìwọ̀n àti ipò"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "Stroke Sítírókì"
@@ -1144,137 +1142,137 @@ msgstr "Lágbára"
msgid "inspect.attributes.stroke.width"
msgstr "Fífẹ̀"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "Taipogíráfì"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "Ẹbí Fọ́ǹtì"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "Ìwọ̀n Fọ́ǹtì"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "Àrà Fọ́ǹtì"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "Ìwúwo Fọ́ǹtì"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "Ìfàyè sí ààrin Lẹ́tà"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "Gíga Ìlà"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "Síṣe ọ̀rọ̀ lọ́ṣọ̀ọ́"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "Kò sí"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "Strikethrough"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "Fàlà sí"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "ọ̀rọ̀ ti yí padà"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "Lẹ́tà Kékeré"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "Kò sí"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "Àkọlé Lẹ́tà"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "Lẹ́tà ńlá"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
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/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "Àfikún àlàyé fún ìbẹ̀wò"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
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ù"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "Kóòdù"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "Àyíká"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "Ẹ̀yà"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "Igun"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "Bọ́ọ̀dù"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "Ẹgbẹ́"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "Àwòrán"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "Ìbòjú"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "%s Ti yàn"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "Ipa-ọ̀nà"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "Rectangle"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "Ọ̀rọ̀"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "Àlàyé"
@@ -1290,7 +1288,7 @@ msgstr "Ṣàyẹ̀wò tókín-nì"
msgid "labels.active"
msgstr "Ń siṣẹ́"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "Ṣàfikún àṣà Fọ́ǹtì"
@@ -1302,7 +1300,7 @@ msgstr "Alábòjútó"
msgid "labels.adobe-xd"
msgstr "Àdòbí XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "Gbogbo ẹ̀"
@@ -1324,7 +1322,7 @@ msgstr ""
msgid "labels.bad-gateway.main-message"
msgstr "Ọ̀nà-àbáwọle búburú"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "Párẹ́"
@@ -1332,15 +1330,15 @@ msgstr "Párẹ́"
msgid "labels.canva"
msgstr "Káńfà"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "Tì í"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "dásí i"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "Agbègbè"
@@ -1348,7 +1346,7 @@ msgstr "Agbègbè"
msgid "labels.confirm-password"
msgstr "Jẹ́rìísí"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "Tẹ̀ síwájú"
@@ -1364,7 +1362,7 @@ msgstr "O lè tẹ̀ síwájú pẹ̀lú àkáúnti pẹ́ńpọtì"
msgid "labels.copy-invitation-link"
msgstr "ṣà dàkọ ọ̀nà àsopọ̀"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "Ṣẹ̀dá"
@@ -1384,15 +1382,15 @@ msgstr "Kọ́sítọ́mù àwọn fọ́ǹtì"
msgid "labels.dashboard"
msgstr "Dáṣìbọọ̀dù"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "Paárẹ́"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "Pa kọ́mẹ́ǹtì rẹ́"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "Pa gbogbo kọ́mẹ́ǹtì rẹ́"
@@ -1408,15 +1406,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:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "Yọ́ kúrò"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "Kọ ọ́ sílẹ̀"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "sàtúnkà"
@@ -1432,7 +1430,7 @@ msgstr "Olóòtú"
msgid "labels.expired-invitation"
msgstr "Kọjá àkókò"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "Fi ránṣẹ́"
@@ -1448,7 +1446,7 @@ msgstr "Èsì ti lọ"
msgid "labels.figma"
msgstr "Fígímà"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "Ẹbí fọ́ǹtì"
@@ -1456,11 +1454,11 @@ msgstr "Ẹbí fọ́ǹtì"
msgid "labels.font-providers"
msgstr "Àwọn Olùpèṣè fọ́ǹtì"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "Àrà"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "Fọ̀ǹtì"
@@ -1472,11 +1470,11 @@ msgstr "Olùdásílẹ̀/VP"
msgid "labels.freelancer"
msgstr "Oníṣẹ́ ni mí"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Báǹkì gítì-ọbù"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "Fèsì padà"
@@ -1484,11 +1482,11 @@ msgstr "Fèsì padà"
msgid "labels.go-back"
msgstr "Padà sẹ́yìn"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "Ibi ìranilọ́wọ́"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "Fi àwọn ọ̀rọ̀ tí a ti yanjú pamọ́"
@@ -1496,7 +1494,7 @@ msgstr "Fi àwọn ọ̀rọ̀ tí a ti yanjú pamọ́"
msgid "labels.inactive"
msgstr "kò ja fáfá"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "Fi àwọn fọ́ǹtì sí orí ẹ̀rọ"
@@ -1522,7 +1520,7 @@ msgstr "Ìfiwépè"
msgid "labels.language"
msgstr "Èdè"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "Àwọn yàrá ìkàwé & Tẹ́ńpílétì"
@@ -1530,7 +1528,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:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "Padé kí ojáde"
@@ -1550,11 +1548,11 @@ msgstr "Àwọn ọmọ Ẹgbẹ́"
msgid "labels.new-password"
msgstr "Ọ̀rọ̀ Ìgbaniwọlé tuntun"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "Èyí tó kàn"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
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í."
@@ -1621,7 +1619,7 @@ msgstr "Pírófáìlì"
msgid "labels.projects"
msgstr "Àwọn iṣẹ́ àgbéṣe"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "Fi àkọsílẹ̀ rẹ sílẹ̀"
@@ -1639,7 +1637,7 @@ msgstr "Yọ ọ́ kúrò"
msgid "labels.remove-member"
msgstr "Yọ ọmọ ẹgbẹ́ kúrò"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "Fún un lórúkọ mìíràn"
@@ -1659,11 +1657,11 @@ msgstr "Tún gbìyànjú"
msgid "labels.role"
msgstr "Ojúṣe"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "Fi pamọ́"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "Ṣàwárí fọ́ǹtì"
@@ -1699,15 +1697,15 @@ msgstr "Pín àwọn ohun tí a ti kọ tẹ́lẹ̀"
msgid "labels.shared-libraries"
msgstr "Yàrá ìkáwe"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "Fi gbogbo kọ́mẹ́ǹtì hàn"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "Fi àkójọ àwọn kọ́mẹ́ǹtì hàn"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "Fi àwọn kọ́mẹ́ǹtì tìrẹ nìkan hàn"
@@ -1727,7 +1725,7 @@ msgstr "Ipò"
msgid "labels.student-teacher"
msgstr "Akẹ́kọ̀ọ́ tàbí olùkọ̀ọ́"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "Ìbáṣepọ̀"
@@ -1743,15 +1741,15 @@ msgstr "mú dójú ìwọ̀n"
msgid "labels.update-team"
msgstr "Mẹ́gbẹ́ dójú ìwọ̀n"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "Ọpulóòdù"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "Ọpulóòdù kọ́sítẹ́mù fọ́ǹtì"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "Ń ọpulóòdù…"
@@ -1767,7 +1765,7 @@ msgstr "Olùwo"
msgid "labels.webhooks"
msgstr "àwọn ìwé ìkọ́ wẹ́bù"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "Write new comment Kọ kọ́mẹ́ǹtì tuntun"
@@ -1775,7 +1773,7 @@ msgstr "Write new comment Kọ kọ́mẹ́ǹtì tuntun"
msgid "labels.you"
msgstr "(ìwọ)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "Àkáùntì rẹ"
@@ -1830,7 +1828,7 @@ msgstr "Pàrọ̀ ímeèlìl"
msgid "modals.change-email.title"
msgstr "Pàrọ̀ ímeèlì rẹ"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "Ṣẹ̀dà tókìn"
@@ -1846,7 +1844,7 @@ msgstr "Orúkọ"
msgid "modals.create-access-token.name.placeholder"
msgstr "Orúkọ yí ó ràn wá lọ́wọ́ láti mọ ohun tí tókìn wà fún"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "Ṣẹ̀dà tókìn"
@@ -1870,15 +1868,15 @@ msgstr "Péloòdù URL"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://àpẹrẹ.com/postreceive ìgbà àtẹ̀yinwá"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "Pa tókìn rẹ́"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "Ṣé ó dá ọ lójú pé o fẹ́ pa tókìn yi rẹ́?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "Pa tókìn rẹ́"
@@ -1900,25 +1898,25 @@ msgstr ""
msgid "modals.delete-account.title"
msgstr "Ṣé ó dá ọ lójú pé o fẹ́ pa àkáùntì rẹ rẹ́ ?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "Pa ìtàkurọ̀sọ rẹ́"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr ""
"Ṣé ódá ọ lójú pé o fẹ́ pa ìtàkurọ̀sọ yìí rẹ́? All comments in this Gbogbo "
"àsọyé tó wà níbí tó tẹ̀lé ra wọn ni á di píparẹ́."
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "Pa ìtàkurọ̀sọ rẹ"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
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:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "Pa àkọsílẹ̀ rẹ́"
@@ -1946,23 +1944,23 @@ msgstr "Ṣé ó dá ọ lójú pé o fẹ́ pa %s àwọn fáìlì rẹ́ ?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "Pa fáìlì rẹ́ %s"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr ""
"Ṣé ó dá ọ lójú pé o fẹ́ pa fọ́ǹtì alárà yìí rẹ́ ? Kò ní gbé e tí a bá lò "
"ó nínú fáìlì."
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
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:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
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:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "Pa ojú ìwé rẹ́"
@@ -2113,15 +2111,15 @@ msgstr ""
msgid "modals.promote-owner-confirm.title"
msgstr "Ẹni tó ni ẹgbẹ́ tuntun"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "Kọ ọ́ jáde"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
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:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "Gbé yàrá ìkàwé tó ṣófìfo jáde"
@@ -2158,21 +2156,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:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "Mú dójú ìwọ̀n"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "Fagilé e"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
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:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "Mú ẹ̀yà iyàrá ìkàwé pípín kan dójú ìwọ̀n"
@@ -2229,29 +2227,29 @@ msgstr "Fídíò àwọn ìbáṣepọ̀"
msgid "onboarding-v2.before-start.title"
msgstr "Kí o tó bẹ̀rẹ̀"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr ""
"Ṣe alábàápín ìwé ìròyìn ti pẹ́ńpọtì kí o lè mọ ohun tí ó ń lọ ọjà "
"development progress and new Ìdàgbàsókè, Ìlọsíwájú,àti àwọn ìròyìn ."
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr ""
"Fí ìròyìn ránńṣẹ́ sí mi nípa Pẹ́ńpọtì (àwọn bulọ́ọ̀gì,àwọn fídiò "
"ìbáṣepọ̀, àwọn sísàn wọlé...)."
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "Ìfi pamọ́ jẹ wá lógún, ní bí o le kà nípa wa "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr ""
"Àwọn ímeèlì tó ṣe kókó nìknn la ó fi ránńṣẹ́ sí ọ. o lè yọwọ́ kúrò ní "
"ìgbàkììgbàní ìlànà ti ìyọwọ́ kúrò nínú èyíkéyìí ìwé ìròyìn wa."
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr ""
"Fi ìmú dójú ìwọ̀n ọjà ránńṣẹ́ sí mi (àwọn ẹ̀yà yuntun, tú sílẹ̀, ṣà "
@@ -2313,17 +2311,17 @@ msgstr "Pè wọ́n pẹ̀lú ojúṣe wọn:"
msgid "onboarding.newsletter.accept"
msgstr "Bẹ́ẹ̀ni, ṣe alábàpín"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr ""
"A ti fi ìbéèrè fún síṣe alá-bápín rẹ ránńṣẹ́, a ó fi ímeèlì ránńṣẹ́ sí ọ "
"látijẹ́rìí sí."
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "Ètò ìmúlò tí a fi pamọ́."
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "Fẹ́ gba àwọn ìròyìn pẹ́ńpọti?"
@@ -2406,7 +2404,7 @@ msgstr "Lọ láti wọlé"
msgid "settings.detach"
msgstr "Yọ kúrò"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "Dàárú"
@@ -2584,7 +2582,7 @@ msgstr "Ṣẹ̀dá títún"
msgid "shortcuts.cut"
msgstr "Ge"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "Sun-un jàdé"
@@ -2680,7 +2678,7 @@ msgstr "Pinpín kàákírì pètèlè"
msgid "shortcuts.hide-ui"
msgstr "Ífìhan / Tọju UI"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "Sùn-un sínú"
@@ -2988,15 +2986,15 @@ msgstr "Yiyan pelu sun-un"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "Pipese oniru fọnti - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "Fọnti - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "Awọn ísè agbèsè - %s - Penpot"
@@ -3008,7 +3006,7 @@ msgstr "Wà - %s - Penpot"
msgid "title.default"
msgstr "Penpot – Se onìrú òmínìra fun awọ̀n ẹ̀gbẹ̀"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "Profaili – Aami wiwọle"
@@ -3048,7 +3046,7 @@ msgstr "Webhooks - %s - Penpot"
msgid "title.viewer"
msgstr "%s –Ipo wíwò - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -3133,15 +3131,15 @@ msgstr "Párápọ̀ sóké (%s)"
msgid "workspace.assets.assets"
msgstr "Awọ̀n dukia"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "Gbọ̀gbọ̀ awọ̀n dukia"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "Áwò"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "Awọ̀n eroja"
@@ -3153,7 +3151,7 @@ msgstr "Ṣẹ̀dá ẹ̀gbẹ̀ kan"
msgid "workspace.assets.create-group-hint"
msgstr "páarẹ̀"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "ẹẹdà"
@@ -3161,11 +3159,11 @@ msgstr "ẹẹdà"
msgid "workspace.assets.edit"
msgstr "Ṣatunkọ"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "Awọn Awòran"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "Ẹgbẹ"
@@ -3173,23 +3171,19 @@ msgstr "Ẹgbẹ"
msgid "workspace.assets.group-name"
msgstr "Orúkọ̀ ẹgbẹ"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "Ílè-iwè"
-
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "Ílè-iwè agbegbe"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "Ko si ohun-ini ti a rii"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "Ṣii faili ìlé-ikáwè"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "Lo oruko imiran"
@@ -3197,7 +3191,7 @@ msgstr "Lo oruko imiran"
msgid "workspace.assets.rename-group"
msgstr "Lo oruko imiran fun ẹgbẹ"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "Wa dukia"
@@ -3206,7 +3200,7 @@ msgstr "Wa dukia"
msgid "workspace.assets.shared-library"
msgstr "Iĺẹ̀ iwekika ti a pln"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "Iwe itẹwe"
@@ -3215,23 +3209,23 @@ msgstr "Iwe itẹwe"
msgid "workspace.assets.typography.font-id"
msgstr "Fonti"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "Iwon"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "Iyatọ"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "Aaye leta"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "Giga ila"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -3239,7 +3233,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "Oniru ọrọ"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "Iyipádà ọrọ"
@@ -3251,11 +3245,11 @@ msgstr "Títù ẹ̀gbẹ́"
msgid "workspace.focus.focus-mode"
msgstr "Ipo Idojukọ"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "Pa Ídòjúkọ"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "Tan Ídòjúkọ"
@@ -3369,33 +3363,32 @@ msgstr "Ifihan fonti paleti"
msgid "workspace.header.menu.undo"
msgstr "Yi pada"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "Tunto"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "àsisè lórì fíf́ipamọ"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "Ti a fipamọ"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "Fifipámọ"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "Awọn ayípàdà ti kó ni fipamọ"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "Ipo wiwo(%s)"
-#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "sun-un"
@@ -3407,7 +3400,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:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "Suun kí o bá gbógbó rẹ̀ dọ́gbà"
@@ -3415,7 +3408,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:136
+#: src/app/main/ui/workspace/right_header.cljs:104
msgid "workspace.header.zoom-selected"
msgstr "Ṣuum lati yan"
@@ -3428,7 +3421,7 @@ msgstr "Ilànà àyípàdà"
msgid "workspace.libraries.add"
msgstr "Afikùn"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: 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ọ"
@@ -3454,27 +3447,27 @@ 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:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "Fi awọn oniru awọ pamọ"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "Faili ilé ikàwé"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "Awọn Ílè íkawè"
@@ -3483,39 +3476,39 @@ msgstr "Awọn Ílè íkawè"
msgid "workspace.libraries.library"
msgstr "Ílè íkawè"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "Ílè íkawè ímùdojúiwọn"
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
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:333
+#: src/app/main/ui/workspace/libraries.cljs:330
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:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "Óríṣí awọn íwè itẹ̀wé"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
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:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "ímùdojúiwọn"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "wò gbògbò awọn ayípàdà"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "Awọn ímùdojúiwọn"
@@ -3535,27 +3528,27 @@ msgstr "Ẹ̀gdẹ́ Baìbaì"
msgid "workspace.options.blur-options.title.multiple"
msgstr "Asayan Baìbaì"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "Kánfásì abẹ́le"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "Ábẹrẹ́ ákoonù"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "Apakan"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "Ádàakọ"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "Ṣatunkọ àkọ̀silẹ̀"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:599
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
msgid "workspace.options.component.main"
msgstr "Ólòrí"
@@ -3599,11 +3592,11 @@ msgstr "Ókè ati Ídí"
msgid "workspace.options.design"
msgstr "Ónirú"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "Sí ilẹ́ òkèeré"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "afikun ọrọ niipárí"
@@ -3611,7 +3604,7 @@ msgstr "afikun ọrọ niipárí"
msgid "workspace.options.exporting-complete"
msgstr "Gbígbè okeere ti pari"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "Gbígbè okeere …"
@@ -3733,7 +3726,7 @@ msgstr "Ẹ̀kún ẹgbẹ́"
msgid "workspace.options.group-stroke"
msgstr "Ẹgba ẹgbẹ́"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "Gíga"
@@ -4043,19 +4036,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:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
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:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
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:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
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:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "Ìgbòrò tó kéré jù lọ"
@@ -4169,11 +4162,11 @@ msgstr "Àyè àárín"
msgid "workspace.options.layout.top"
msgstr "Òkè"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "Àwọn àwọ̀ púpọ̀ sí i"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "Àwọn yàrá àwọ̀ púpọ̀ sí I"
@@ -4210,7 +4203,7 @@ msgstr "Òkè òsì"
msgid "workspace.options.radius-top-right"
msgstr "Òkè ọ̀tún"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "Àìpẹ́"
@@ -4218,11 +4211,11 @@ msgstr "Àìpẹ́"
msgid "workspace.options.retry"
msgstr "Tún gbìyànjú"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "Yíyípo"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "Àdàkọ ìwádìí"
@@ -4232,7 +4225,7 @@ 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:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "Àwọn àwọ̀ tí a ti yàn"
@@ -4244,43 +4237,43 @@ msgstr "Ìmúṣẹ tí a yàn"
msgid "workspace.options.selection-stroke"
msgstr "Ipò ìlù tí a yàn"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "Rẹ́súrẹ́sú"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "Àwọ̀ òjíjí"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "Da òjìjí"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "Òjìjí inú"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "Tànkálẹ̀"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "Òjìjí"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "Àwùjọ òjìjí"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "Òjìjí tí a yàn"
@@ -4288,7 +4281,7 @@ msgstr "Òjìjí tí a yàn"
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:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "Fihàn nínú ipò wíwò"
@@ -4296,7 +4289,7 @@ msgstr "Fihàn nínú ipò wíwò"
msgid "workspace.options.size"
msgstr "Ìwọ̀n"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "Àwọn àtòjọ"
@@ -4365,7 +4358,7 @@ msgstr "Onígun mẹ́ta"
msgid "workspace.options.stroke-color"
msgstr "Àwọ ìlà"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "Ìgbòrò ìlà"
@@ -4429,11 +4422,11 @@ msgstr "Gbígbòòrò aládáàṣiṣé"
msgid "workspace.options.text-options.grow-fixed"
msgstr "Tí kò yíyadà"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "Àlàfo lẹ́tà"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "Gíga ìlà"
@@ -4499,15 +4492,15 @@ 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:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "Ìgbòrò"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "Ipò X"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Ipò Y"
@@ -4551,99 +4544,99 @@ msgstr "Ya ̣ìpàdé sọ́tọ̀ (%s)"
msgid "workspace.path.actions.snap-nodes"
msgstr "Ìmọ̀lára ìpàdé (%s)"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "Fi àrọ ètò ìrísí kun"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "Fi gírídì ètò ìrísị kun"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "dáa padà séyiǹ"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "dá padà sọ́wọ èyiǹ"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "Ṣẹ̀dà"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "Ṣèda àlàyé"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "Yíyàn sí pátákó"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "Ṣẹ́dá àkóónú"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "Ṣẹ̀dá ọ̀pọ̀lọpọ̀ àkóónú"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "Gé"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "Parẹ́"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "Pa ìbẹ̀ẹ̀rè ìsàn rẹ́"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "ṣẹ́ àpẹ̣ẹre yọ nípò"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "Ṣẹ́ àwọn àpẹẹrẹ yọ nípò"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "Ìyàtọ̀"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "Sẹ ẹ̀dà"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "Sàtúnṣe"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "Ṣà yọ sílè"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "Tẹ́ pẹrẹsẹ"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "Ìyí padà oníbùú"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "Ìyí padà olóòró"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "Ìbẹ̀rè ìṣàn"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "Mú wá sọ́wọ́ iwájú"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "Mú wá sí wájú"
@@ -4652,91 +4645,91 @@ msgstr "Mú wá sí wájú"
msgid "workspace.shape.menu.go-main"
msgstr "Lọ sí olórí fáìlì àkóónú"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "Àwùjọ"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "Tọ́jú"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "Fihàn/ Tọ́jú UI"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "Ìkòríta"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "Tì"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "Ìbòjú"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "lẹ̀mọ́"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "Ipa ọ̀nà"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "Yọ àrọ ètò ìrísí kúrò"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "Ṣe àtúnṣe ìdojúkọ"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "Dạ àkóónú pàtàkì sí pò"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "Yan ìpele"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "Ṣà fihàn"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
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:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "Ṣà fihàn àkóónú pàtàkì"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "Yọ àwòrán aláṣojú kúrò"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "Fi sípò àwòrań aláṣojú"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "Yípadà sí pópó ọ̀nà"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "Ṣe àìkójọ"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "Ìbáṣepò"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "Ṣíí"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "Sí ìbòjú"
@@ -4753,11 +4746,11 @@ msgstr "Wó òpó ègbẹ́"
msgid "workspace.sidebar.expand"
msgstr "Fẹ òpó ẹ̀gbẹ́"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "Ìtàn"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "Àwọn ìpele"
@@ -4793,7 +4786,7 @@ msgstr "Àwọn ìrísí"
msgid "workspace.sidebar.layers.texts"
msgstr "Àwọn àyọkà"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "Gbígbé àwọn ànímọ́ SVG wọlé wá"
@@ -4801,11 +4794,11 @@ msgstr "Gbígbé àwọn ànímọ́ SVG wọlé wá"
msgid "workspace.sidebar.sitemap"
msgstr "Àwọn abala"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "Máàpù ojú ìlà"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "Àwọn ohun ìní"
@@ -4813,35 +4806,35 @@ msgstr "Àwọn ohun ìní"
msgid "workspace.toolbar.color-palette"
msgstr "Pálètì àwọ̀ (%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "Àwọn ìdáásí (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "Ìṣépo (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "Àlàfo (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "Pátákó (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "Àwòrán(%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "Gbé (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "Pópó ọ̀nà (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "Onígun mẹ́rin (%s)"
@@ -4850,7 +4843,7 @@ msgstr "Onígun mẹ́rin (%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "Àwón ọ̀nà àbùjá (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "Àyọkà (%s)"
@@ -5003,19 +4996,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:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "Ta nù"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
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:1220
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:1226
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 b94d448f83..2dff9c74f6 100644
--- a/frontend/translations/zh_CN.po
+++ b/frontend/translations/zh_CN.po
@@ -1,7 +1,7 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2024-10-01 15:16+0000\n"
-"Last-Translator: IsCycleBai \n"
+"PO-Revision-Date: 2025-03-20 13:42+0000\n"
+"Last-Translator: Anonymous \n"
"Language-Team: Chinese (Simplified Han script) "
" \n"
"Language: zh_CN\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.8-dev\n"
+"X-Generator: Weblate 5.11-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
@@ -36,11 +36,11 @@ msgstr "创建演示账号"
msgid "auth.create-demo-profile"
msgstr "只是想试试?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr "这是一个演示服务,请【不要】用于真实工作,这些项目将被周期性地抹除。"
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "忘记密码?"
@@ -48,7 +48,7 @@ msgstr "忘记密码?"
msgid "auth.fullname"
msgstr "全名"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "登录我的账号"
@@ -56,31 +56,31 @@ msgstr "登录我的账号"
msgid "auth.login-here"
msgstr "在这里登录"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "登录"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr "Penpot是一款自由开源的设计工具,用于「设计」和「开发」协同"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub登录"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "Gitlab登录"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google登录"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP登录"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID登录"
@@ -104,7 +104,7 @@ msgstr "找回密码链接已发至你的收件箱。"
msgid "auth.notifications.team-invitation-accepted"
msgstr "成功加入团队"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "密码"
@@ -132,7 +132,7 @@ msgstr "忘记密码?"
msgid "auth.recovery-submit"
msgstr "修改密码"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "现在还没有账号?"
@@ -140,7 +140,7 @@ msgstr "现在还没有账号?"
msgid "auth.register-account-tagline"
msgstr "让我们知道在仪表板和电子邮件中如何称呼您。"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "创建账号"
@@ -153,7 +153,7 @@ msgstr "创建账号"
msgid "auth.sidebar-tagline"
msgstr "设计与原型的开源解决方案。"
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "服务协议"
@@ -165,7 +165,7 @@ msgstr "创建账号意味着您认可我们的服务条例和隐私政策。"
msgid "auth.verification-email-sent"
msgstr "我们已经发送了一封验证邮件到"
-#: src/app/main/ui/auth/login.cljs:173, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
msgid "auth.work-email"
msgstr "工作邮件地址"
@@ -174,7 +174,7 @@ msgstr "工作邮件地址"
msgid "branding-illustrations-marketing-pieces"
msgstr "品牌设计、插图、营销物料等。"
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "发布"
@@ -244,7 +244,7 @@ msgstr "分享原型"
msgid "common.share-link.view-all"
msgstr "选择所有"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "未发布"
@@ -294,7 +294,7 @@ msgstr "界面浏览"
msgid "dashboard.access-tokens.copied-success"
msgstr "已复制令牌"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "生成新令牌"
@@ -302,11 +302,11 @@ msgstr "生成新令牌"
msgid "dashboard.access-tokens.create.success"
msgstr "成功创建访问令牌。"
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "点击“生成新令牌”按钮来生成一个。"
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "你目前还没有令牌。"
@@ -330,23 +330,23 @@ msgstr "90天"
msgid "dashboard.access-tokens.expiration-never"
msgstr "从不"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "已经于%s到期"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "将于%s到期"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "无到期时限"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "个人访问令牌"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr "个人访问令牌可被理解为密码认证的代替选项,常用于允许(第三方)应用访问Penpot内部API"
@@ -366,7 +366,7 @@ msgstr "添加为共享库"
msgid "dashboard.change-email"
msgstr "修改电子邮件"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(拷贝)"
@@ -478,43 +478,43 @@ msgstr "将共享库素材加入文件库"
msgid "dashboard.export.title"
msgstr "导出文档"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "字体已删除"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "全部取消"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "您上传的自定义字体将显示在此处。"
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "1 个字体添加成功"
msgstr[1] "%s 个字体添加成功"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
"你在此上传的任何网络字体文件,将会被添加至本团队下文件的字体属性中的可用字体族列表中。拥有相同字体族名称的字体文件,将会按照字体族进行分组。你可以上传以"
"下格式的字体文件:**TTF,OTF和WOFF**(你只需要上传其中一种即可)。"
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
"你应当只向Penpot上传你所拥有的字体,或是你持有使用许可的字体。点击[Penpot服务条例](https://penpot.app/terms."
"html)查看更多有关内容权利的章节。或许你也想了解一下[字体许可授权] (https://www.typography.com/faq)。"
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "全部上传"
-#: src/app/main/ui/dashboard/fonts.cljs:191
+#: src/app/main/ui/dashboard/fonts.cljs:193
#, markdown
msgid "dashboard.fonts.warning-text"
msgstr ""
@@ -522,7 +522,7 @@ msgstr ""
"vertical-metrics.netlify.app/)。此外,我们建议使用[Transfonter](https://transfonter."
"org/)来生成网络字体并修复错误。 "
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "导入文件"
@@ -538,11 +538,11 @@ msgstr "文件已启用“组件v2”功能,但这个团队尚未支持该功
msgid "dashboard.import.import-error"
msgstr "文件导入过程中出现未知问题,导入失败。"
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgstr "%s 个文件导入成功。"
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "一些包含无效对象的文档已被移除。"
@@ -582,27 +582,27 @@ msgstr "邀请people"
msgid "dashboard.leave-team"
msgstr "退出团队"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "库和模板"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "探索更多内容,了解如何做出贡献"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "导入模板时发生错误。模板未导入成功。"
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "共享库"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "正在加载文档…"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "正在加载字体…"
@@ -618,11 +618,11 @@ msgstr "移动 %s 个文件到"
msgid "dashboard.move-to-other-team"
msgstr "移动到其他团队"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ 新文档"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "新建文件"
@@ -630,7 +630,7 @@ msgstr "新建文件"
msgid "dashboard.new-project"
msgstr "+ 新项目"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "新建项目"
@@ -662,7 +662,7 @@ msgstr "成员%s人"
msgid "dashboard.open-in-new-tab"
msgstr "在新标签页打开文件"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "选项"
@@ -707,7 +707,7 @@ msgstr "选择界面语言"
msgid "dashboard.select-ui-theme"
msgstr "选择界面主题"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "显示全部文档"
@@ -731,7 +731,7 @@ msgstr[1] "您的文件已被成功复制"
msgid "dashboard.success-duplicate-project"
msgstr "成功创建了项目副本"
-#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "成功移动了文件"
@@ -823,7 +823,7 @@ msgstr "电子邮件"
msgid "dashboard.your-name"
msgstr "你的姓名"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "你的Penpot"
@@ -843,11 +843,11 @@ msgstr "待更新的组件:"
msgid "ds.confirm-allow"
msgstr "允许"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "取消"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "OK"
@@ -855,7 +855,7 @@ msgstr "OK"
msgid "ds.confirm-title"
msgstr "你确定?"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "没有配置身份认证服务源."
@@ -863,11 +863,11 @@ msgstr "没有配置身份认证服务源."
msgid "errors.auth.unable-to-login"
msgstr "你似乎还没有登录或会话已过期。"
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "无法加载%s字体"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "无法加载%s等字体"
@@ -875,7 +875,7 @@ msgstr "无法加载%s等字体"
msgid "errors.cannot-upload"
msgstr "无法上传该媒体文件。"
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "你的浏览器不支持该操作"
@@ -887,7 +887,7 @@ msgstr "电子邮件已被占用"
msgid "errors.email-already-validated"
msgstr "电子邮件已经验证通过。"
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "密码不能为邮箱地址"
@@ -924,7 +924,7 @@ msgstr "名称必须包含除空格外的其他字符。"
msgid "errors.file-feature-mismatch"
msgstr "看起来当前启用的功能,与正在打开的文件所依赖的功能不匹配。在打开文件前,需要应用对“%s”修改。"
-#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, 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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "发生了某种错误。"
@@ -937,8 +937,7 @@ msgstr "无效的颜色"
msgid "errors.invalid-email"
msgstr "请输入有效的电子邮件"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "确认电子邮件必须保持一致"
@@ -954,7 +953,7 @@ msgstr "无效的邀请"
msgid "errors.invite-invalid.info"
msgstr "此邀请可能已取消或已过期。"
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "LDAP身份验证已禁用。"
@@ -992,7 +991,7 @@ msgstr "密码最少需要8位字符"
msgid "errors.paste-data-validation"
msgstr "剪切板中为无效数据"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "个人资料已被屏蔽"
@@ -1064,12 +1063,11 @@ msgstr "验证时出现意外错误"
msgid "errors.webhooks.unexpected-status"
msgstr "意外状态%s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "邮箱或密码错误。"
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "旧密码不正确"
@@ -1113,11 +1111,11 @@ msgstr "这里可以帮助您解决技术问题。"
msgid "feedback.twitter-title"
msgstr "X(原Twitter)支持帐号"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "发生了一个错误"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "模糊"
@@ -1125,31 +1123,31 @@ msgstr "模糊"
msgid "inspect.attributes.blur.value"
msgstr "值"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "填充"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "下载原图"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "高"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "宽"
@@ -1188,15 +1186,15 @@ msgstr "顶"
msgid "inspect.attributes.layout.width"
msgstr "宽"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "阴影"
-#: src/app/main/ui/viewer/inspect/attributes/geometry.cljs:40
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
msgid "inspect.attributes.size"
msgstr "尺寸和位置"
-#: src/app/main/ui/viewer/inspect/attributes/stroke.cljs:52
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
msgid "inspect.attributes.stroke"
msgstr "边框"
@@ -1233,139 +1231,139 @@ msgstr "实线"
msgid "inspect.attributes.stroke.width"
msgstr "宽"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "排版"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "字体"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "字号"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:98, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:333
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
msgid "inspect.attributes.typography.font-style"
msgstr "文字风格"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:116
+#: src/app/main/ui/inspect/attributes/text.cljs:118
msgid "inspect.attributes.typography.font-weight"
msgstr "字体重量"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:134, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:386
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
msgid "inspect.attributes.typography.letter-spacing"
msgstr "字距"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:125, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:369
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
msgid "inspect.attributes.typography.line-height"
msgstr "行高"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:143
+#: src/app/main/ui/inspect/attributes/text.cljs:145
msgid "inspect.attributes.typography.text-decoration"
msgstr "文字装饰"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "无"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "删除线"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "下划线"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:156
+#: src/app/main/ui/inspect/attributes/text.cljs:158
msgid "inspect.attributes.typography.text-transform"
msgstr "文本变换"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "小写"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "无"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "首字母大写"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:162
+#: src/app/main/ui/inspect/attributes/text.cljs:164
msgid "inspect.attributes.typography.text-transform.unset"
msgstr "取消设置"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "大写"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr "如果您想了解有关设计检查的更多信息,请访问Penpot的帮助中心"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "有关检查的详细信息"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:147
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
msgid "inspect.empty.select"
msgstr "选择形状、板或组以检查其属性和代码"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:100
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
msgid "inspect.tabs.code"
msgstr "代码"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "圆"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:125
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
msgid "inspect.tabs.code.selected.component"
msgstr "组件"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "曲线"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "画板"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "编组"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "图片"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:130
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
msgid "inspect.tabs.code.selected.mask"
msgstr "蒙版"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:119
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
msgid "inspect.tabs.code.selected.multiple"
msgstr "已选中%s项"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "路径"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "矩形"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "文本"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "信息"
@@ -1385,7 +1383,7 @@ msgstr "访问令牌"
msgid "labels.active"
msgstr "激活"
-#: src/app/main/ui/dashboard/fonts.cljs:179
+#: src/app/main/ui/dashboard/fonts.cljs:180
msgid "labels.add-custom-font"
msgstr "添加自定义字体"
@@ -1397,7 +1395,7 @@ msgstr "管理员"
msgid "labels.adobe-xd"
msgstr "Adobe XD"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "全部"
@@ -1417,7 +1415,7 @@ msgstr "请过会儿再来试试,我们正在对服务器进行一些简单维
msgid "labels.bad-gateway.main-message"
msgstr "网关错误"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "取消"
@@ -1425,15 +1423,15 @@ msgstr "取消"
msgid "labels.canva"
msgstr "Canva"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "关闭"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "评论"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "社区"
@@ -1441,7 +1439,7 @@ msgstr "社区"
msgid "labels.confirm-password"
msgstr "确认密码"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "继续"
@@ -1457,7 +1455,7 @@ msgstr "你可以使用Penpot帐号继续"
msgid "labels.copy-invitation-link"
msgstr "复制链接"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "创建"
@@ -1477,15 +1475,15 @@ msgstr "自定义字体"
msgid "labels.dashboard"
msgstr "面板"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "删除"
-#: src/app/main/ui/comments.cljs:907
+#: src/app/main/ui/comments.cljs:976
msgid "labels.delete-comment"
msgstr "删除该评论"
-#: src/app/main/ui/comments.cljs:830
+#: src/app/main/ui/comments.cljs:899
msgid "labels.delete-comment-thread"
msgstr "删除该讨论串"
@@ -1501,15 +1499,15 @@ msgstr "删除%s个文件"
msgid "labels.developer"
msgstr "开发者"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:199
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
msgid "labels.discard"
msgstr "丢弃"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "草稿"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "编辑"
@@ -1525,7 +1523,7 @@ msgstr "编辑者"
msgid "labels.expired-invitation"
msgstr "已到期"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "导出"
@@ -1541,7 +1539,7 @@ msgstr "反馈已发出"
msgid "labels.figma"
msgstr "Figma"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "字体族"
@@ -1549,11 +1547,11 @@ msgstr "字体族"
msgid "labels.font-providers"
msgstr "字体提供者"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "样式"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "字体"
@@ -1565,11 +1563,11 @@ msgstr "创始人/副总裁"
msgid "labels.freelancer"
msgstr "我是一名自由职业者"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Github仓库"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "提交反馈"
@@ -1581,11 +1579,11 @@ msgstr "返回"
msgid "labels.graphic-design"
msgstr "平面设计"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "帮助中心"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "隐藏已决定的评论"
@@ -1593,7 +1591,7 @@ msgstr "隐藏已决定的评论"
msgid "labels.inactive"
msgstr "未激活"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "已安装字体"
@@ -1617,11 +1615,11 @@ msgstr "邀请"
msgid "labels.language"
msgstr "语言"
-#: src/app/main/ui/dashboard/sidebar.cljs:1039, src/app/main/ui/workspace/main_menu.cljs:138
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
msgid "labels.libraries-and-templates"
msgstr "库&模板"
-#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:114, src/app/main/ui/dashboard/grid.cljs:133, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:53, src/app/main/ui/ds/product/loader.cljs:52, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:126, src/app/main/ui.cljs:67, src/app/main/ui.cljs:105, src/app/main/ui.cljs:124
+#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:115, src/app/main/ui/dashboard/grid.cljs:134, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:98, src/app/main/ui/ds/product/loader.cljs:85, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:118, src/app/main/ui.cljs:66, src/app/main/ui.cljs:104, src/app/main/ui.cljs:123
msgid "labels.loading"
msgstr "加载中…"
@@ -1633,7 +1631,7 @@ msgstr "登录或注册"
msgid "labels.login"
msgstr "登录"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "登出"
@@ -1653,11 +1651,11 @@ msgstr "成员"
msgid "labels.new-password"
msgstr "新密码"
-#: src/app/main/ui/dashboard/templates.cljs:275, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, src/app/main/ui/viewer.cljs:112
msgid "labels.next"
msgstr "下一项"
-#: src/app/main/ui/dashboard/comments.cljs:106, src/app/main/ui/workspace/comments.cljs:161
+#: src/app/main/ui/dashboard/comments.cljs:121, src/app/main/ui/workspace/comments.cljs:164
msgid "labels.no-comments-available"
msgstr "你们都赶上了! 新的评论通知将出现在这里。"
@@ -1679,7 +1677,7 @@ msgstr "可能该页面不存在,也可能你没有访问权限。"
msgid "labels.not-found.main-message"
msgstr "哎呀!"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "共1个文档"
@@ -1746,7 +1744,7 @@ msgstr "个人资料"
msgid "labels.projects"
msgstr "项目"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "发布说明"
@@ -1764,7 +1762,7 @@ msgstr "移除"
msgid "labels.remove-member"
msgstr "删除成员"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "重命名"
@@ -1784,15 +1782,15 @@ msgstr "重试"
msgid "labels.role"
msgstr "角色"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "保存"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
msgid "labels.search"
msgstr "搜索"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "搜索字体"
@@ -1828,15 +1826,15 @@ msgstr "分享原型"
msgid "labels.shared-libraries"
msgstr "共享库"
-#: src/app/main/ui/viewer/comments.cljs:82, src/app/main/ui/workspace/comments.cljs:54, src/app/main/ui/workspace/comments.cljs:134
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
msgid "labels.show-all-comments"
msgstr "显示所有评论"
-#: src/app/main/ui/viewer/comments.cljs:115
+#: src/app/main/ui/viewer/comments.cljs:116
msgid "labels.show-comments-list"
msgstr "显示评论列表"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:92, src/app/main/ui/workspace/comments.cljs:61, src/app/main/ui/workspace/comments.cljs:138
msgid "labels.show-your-comments"
msgstr "只显示你的评论"
@@ -1864,7 +1862,7 @@ msgstr "团队领导"
msgid "labels.team-member"
msgstr "团队成员"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "教程"
@@ -1880,15 +1878,15 @@ msgstr "更新"
msgid "labels.update-team"
msgstr "更新团队"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "上传"
-#: src/app/main/ui/dashboard/fonts.cljs:173
+#: src/app/main/ui/dashboard/fonts.cljs:174
msgid "labels.upload-custom-fonts"
msgstr "上传自定义字体"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "正在上传…"
@@ -1904,7 +1902,7 @@ msgstr "查看者"
msgid "labels.webhooks"
msgstr "Webhooks"
-#: src/app/main/ui/comments.cljs:743
+#: src/app/main/ui/comments.cljs:818
msgid "labels.write-new-comment"
msgstr "写一条新评论"
@@ -1912,7 +1910,7 @@ msgstr "写一条新评论"
msgid "labels.you"
msgstr "(你)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "你的账户"
@@ -1920,23 +1918,23 @@ msgstr "你的账户"
msgid "labels.youtube"
msgstr "YouTube"
-#: src/app/main/ui/workspace/colorpicker.cljs:477, src/app/main/ui/workspace/colorpicker.cljs:478, src/app/main/ui/workspace/colorpicker.cljs:480
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
msgid "media.choose-image"
msgstr "选择图片"
-#: src/app/main/ui/workspace/colorpicker.cljs:245
+#: src/app/main/ui/workspace/colorpicker.cljs:241
msgid "media.gradient"
msgstr "渐变"
-#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/viewer/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
msgid "media.image"
msgstr "图片"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:77
+#: src/app/main/ui/inspect/attributes/common.cljs:77
msgid "media.image.short"
msgstr "img"
-#: src/app/main/ui/workspace/colorpicker.cljs:470
+#: src/app/main/ui/workspace/colorpicker.cljs:467
msgid "media.keep-aspect-ratio"
msgstr "保持宽高比"
@@ -1954,7 +1952,7 @@ msgstr "正在加载图片…"
msgid "media.radial"
msgstr "径向"
-#: src/app/main/ui/workspace/colorpicker.cljs:243
+#: src/app/main/ui/workspace/colorpicker.cljs:239
msgid "media.solid"
msgstr "纯色"
@@ -1998,7 +1996,7 @@ msgstr "修改电子邮件"
msgid "modals.change-email.title"
msgstr "修改你的电子邮件"
-#: src/app/main/ui/settings/access_tokens.cljs:154, src/app/main/ui/settings/access_tokens.cljs:160
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
msgid "modals.create-access-token.copy-token"
msgstr "复制令牌"
@@ -2014,7 +2012,7 @@ msgstr "名称"
msgid "modals.create-access-token.name.placeholder"
msgstr "名称可以帮你记住令牌的用途"
-#: src/app/main/ui/settings/access_tokens.cljs:180
+#: src/app/main/ui/settings/access_tokens.cljs:179
msgid "modals.create-access-token.submit-label"
msgstr "创建令牌"
@@ -2038,15 +2036,15 @@ msgstr "有效负载网址"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://example.com/postreceive"
-#: src/app/main/ui/settings/access_tokens.cljs:260
+#: src/app/main/ui/settings/access_tokens.cljs:259
msgid "modals.delete-acces-token.accept"
msgstr "删除令牌"
-#: src/app/main/ui/settings/access_tokens.cljs:259
+#: src/app/main/ui/settings/access_tokens.cljs:258
msgid "modals.delete-acces-token.message"
msgstr "你确定想要删除这个令牌吗?"
-#: src/app/main/ui/settings/access_tokens.cljs:258
+#: src/app/main/ui/settings/access_tokens.cljs:257
msgid "modals.delete-acces-token.title"
msgstr "删除令牌"
@@ -2066,23 +2064,23 @@ msgstr "删除账号后,你会失去所有项目和存档。"
msgid "modals.delete-account.title"
msgstr "你确定想要删除你的账号?"
-#: src/app/main/ui/comments.cljs:800
+#: src/app/main/ui/comments.cljs:869
msgid "modals.delete-comment-thread.accept"
msgstr "删除对话"
-#: src/app/main/ui/comments.cljs:799
+#: src/app/main/ui/comments.cljs:868
msgid "modals.delete-comment-thread.message"
msgstr "你确定想要删除这个对话?该讨论串里的所有评论都会被一同删除。"
-#: src/app/main/ui/comments.cljs:798
+#: src/app/main/ui/comments.cljs:867
msgid "modals.delete-comment-thread.title"
msgstr "删除对话"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:140
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
msgid "modals.delete-component-annotation.message"
msgstr "你确定想要删除这个注释?"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:139
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
msgid "modals.delete-component-annotation.title"
msgstr "删除注释"
@@ -2110,27 +2108,27 @@ msgstr "你确定要删除这%s个文件?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "正在删除%s个文件"
-#: src/app/main/ui/dashboard/fonts.cljs:348
+#: src/app/main/ui/dashboard/fonts.cljs:350
msgid "modals.delete-font-variant.message"
msgstr "你确定要删除这个字体样式吗?如果它被用在某个文件里的话,将无法加载。"
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "正在删除字体样式"
-#: src/app/main/ui/dashboard/fonts.cljs:334
+#: src/app/main/ui/dashboard/fonts.cljs:336
msgid "modals.delete-font.message"
msgstr "你确定要删除这个字体吗?如果它被用在某个文件里的话,将无法加载。"
-#: src/app/main/ui/dashboard/fonts.cljs:333
+#: src/app/main/ui/dashboard/fonts.cljs:335
msgid "modals.delete-font.title"
msgstr "正在删除字体"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "你确定想要删除这个页面?"
-#: src/app/main/ui/workspace/context_menu.cljs:626, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
msgid "modals.delete-page.title"
msgstr "删除页面"
@@ -2320,15 +2318,15 @@ msgstr "您是此团队的所有者,你确定想要将所有者转让给该成
msgid "modals.promote-owner-confirm.title"
msgstr "新增团队所有者"
-#: src/app/main/ui/workspace/libraries.cljs:273
+#: src/app/main/ui/workspace/libraries.cljs:270
msgid "modals.publish-empty-library.accept"
msgstr "发布"
-#: src/app/main/ui/workspace/libraries.cljs:272
+#: src/app/main/ui/workspace/libraries.cljs:269
msgid "modals.publish-empty-library.message"
msgstr "你的库是空白的。你确定想要发布它?"
-#: src/app/main/ui/workspace/libraries.cljs:271
+#: src/app/main/ui/workspace/libraries.cljs:268
msgid "modals.publish-empty-library.title"
msgstr "发布空白库"
@@ -2379,19 +2377,19 @@ msgstr "你即将更新共享库中的组件,这可能会影响使用这些组
msgid "modals.update-remote-component-in-bulk.message"
msgstr "更新共享库组件"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:393
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "更新组件"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "取消"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:391
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
msgid "modals.update-remote-component.hint"
msgstr "你即将更新共享库中的一个组件。这可能会对使用该组件的其他文档产生影响。"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:390
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
msgid "modals.update-remote-component.message"
msgstr "更新共享库中的一个组件"
@@ -2519,23 +2517,23 @@ msgstr "视频教程"
msgid "onboarding-v2.before-start.title"
msgstr "在开始之前"
-#: src/app/main/ui/onboarding/newsletter.cljs:63
+#: src/app/main/ui/onboarding/newsletter.cljs:68
msgid "onboarding-v2.newsletter.desc"
msgstr "订阅Penpot通知邮件,跟进产品开发进度,获取最新消息。"
-#: src/app/main/ui/onboarding/newsletter.cljs:83
+#: src/app/main/ui/onboarding/newsletter.cljs:88
msgid "onboarding-v2.newsletter.news"
msgstr "发给我有关Penpot的新闻(博客文章、视频教程、直播等)。"
-#: src/app/main/ui/onboarding/newsletter.cljs:91
+#: src/app/main/ui/onboarding/newsletter.cljs:96
msgid "onboarding-v2.newsletter.privacy1"
msgstr "我们关心隐私,您可在此阅读我们的 "
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr "我们将仅发送与您有关的邮件,您可以随时在其中任意一封邮件中点击取消订阅。"
-#: src/app/main/ui/onboarding/newsletter.cljs:71
+#: src/app/main/ui/onboarding/newsletter.cljs:76
msgid "onboarding-v2.newsletter.updates"
msgstr "向我发送一些产品更新(新功能,新版本,新修复等)。"
@@ -2623,15 +2621,15 @@ msgstr "你可以稍后再创建团队。"
msgid "onboarding.newsletter.accept"
msgstr "是的,订阅"
-#: src/app/main/ui/onboarding/newsletter.cljs:40
+#: src/app/main/ui/onboarding/newsletter.cljs:42
msgid "onboarding.newsletter.acceptance-message"
msgstr "您的订阅请求已发送,我们将向您发送一封电子邮件进行确认。"
-#: src/app/main/ui/onboarding/newsletter.cljs:95
+#: src/app/main/ui/onboarding/newsletter.cljs:100
msgid "onboarding.newsletter.policy"
msgstr "隐私策略。"
-#: src/app/main/ui/onboarding/newsletter.cljs:60
+#: src/app/main/ui/onboarding/newsletter.cljs:65
msgid "onboarding.newsletter.title"
msgstr "想要接收 Penpot 新闻?"
@@ -2715,7 +2713,7 @@ msgstr "Penpot"
msgid "profile.recovery.go-to-login"
msgstr "去登录"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: 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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "混合"
@@ -2905,7 +2903,7 @@ msgstr "创建新的"
msgid "shortcuts.cut"
msgstr "剪切"
-#: src/app/main/ui/workspace/right_header.cljs:116, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
msgid "shortcuts.decrease-zoom"
msgstr "缩小"
@@ -3005,7 +3003,7 @@ msgstr "水平分布"
msgid "shortcuts.hide-ui"
msgstr "显示/隐藏UI"
-#: src/app/main/ui/workspace/right_header.cljs:121, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
msgid "shortcuts.increase-zoom"
msgstr "放大"
@@ -3381,15 +3379,15 @@ msgstr "缩放到选定对象"
msgid "title.dashboard.files"
msgstr "%s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:39
+#: src/app/main/ui/dashboard/fonts.cljs:40
msgid "title.dashboard.font-providers"
msgstr "字体提供者 - %s - Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "字体 - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "项目 - %s - Penpot"
@@ -3397,7 +3395,7 @@ msgstr "项目 - %s - Penpot"
msgid "title.dashboard.search"
msgstr "搜索 - %s - Penpot"
-#: src/app/main/ui/dashboard/libraries.cljs:42
+#: src/app/main/ui/dashboard/libraries.cljs:57
msgid "title.dashboard.shared-libraries"
msgstr "共享库 - %s - Penpot"
@@ -3405,7 +3403,7 @@ msgstr "共享库 - %s - Penpot"
msgid "title.default"
msgstr "Penpot - 面向团队,设计自由"
-#: src/app/main/ui/settings/access_tokens.cljs:281
+#: src/app/main/ui/settings/access_tokens.cljs:280
msgid "title.settings.access-tokens"
msgstr "个人资料 — 访问令牌"
@@ -3445,7 +3443,7 @@ msgstr "Webhooks - %s - Penpot"
msgid "title.viewer"
msgstr "%s - 预览模式)- Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -3548,15 +3546,15 @@ msgstr "顶部对齐 (%s)"
msgid "workspace.assets.assets"
msgstr "素材"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:146
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
msgid "workspace.assets.box-filter-all"
msgstr "所有素材"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: 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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "颜色"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: 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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "组件"
@@ -3568,15 +3566,15 @@ msgstr "创建组"
msgid "workspace.assets.create-group-hint"
msgstr "这些物件将按照“组名/物件名”的格式自动命名"
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "删除"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "创建副本"
-#: src/app/main/ui/workspace/sidebar/assets/components.cljs:548
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
msgid "workspace.assets.duplicate-main"
msgstr "重复主体"
@@ -3584,15 +3582,15 @@ msgstr "重复主体"
msgid "workspace.assets.edit"
msgstr "编辑"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:195
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
msgid "workspace.assets.filter"
msgstr "过滤器"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "图形"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "组"
@@ -3600,23 +3598,19 @@ msgstr "组"
msgid "workspace.assets.group-name"
msgstr "组名"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "库"
-
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:336
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
msgid "workspace.assets.local-library"
msgstr "本地库"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:320
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
msgid "workspace.assets.not-found"
msgstr "未找到素材"
-#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:111
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
msgid "workspace.assets.open-library"
msgstr "打开库文档"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "重命名"
@@ -3624,7 +3618,7 @@ msgstr "重命名"
msgid "workspace.assets.rename-group"
msgstr "重命名组"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:192
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
msgid "workspace.assets.search"
msgstr "搜索素材"
@@ -3640,17 +3634,17 @@ msgstr[1] "已选中%s个物件"
msgid "workspace.assets.shared-library"
msgstr "共享库"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:226
+#: 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:211
+#: src/app/main/ui/workspace/sidebar/assets.cljs:201
msgid "workspace.assets.sort"
msgstr "排序"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: 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:160
msgid "workspace.assets.typography"
msgstr "排版"
@@ -3659,27 +3653,27 @@ msgstr "排版"
msgid "workspace.assets.typography.font-id"
msgstr "字体"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "尺寸"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "变体"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:535
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
msgid "workspace.assets.typography.go-to-edit"
msgstr "前往样式库文件进行编辑"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:525
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
msgid "workspace.assets.typography.letter-spacing"
msgstr "字距"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:521
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
msgid "workspace.assets.typography.line-height"
msgstr "行高"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: 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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
@@ -3687,7 +3681,7 @@ msgstr "Ag"
msgid "workspace.assets.typography.text-styles"
msgstr "文本样式"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:529
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
msgid "workspace.assets.typography.text-transform"
msgstr "文本变换"
@@ -3695,55 +3689,55 @@ msgstr "文本变换"
msgid "workspace.assets.ungroup"
msgstr "解组"
-#: src/app/main/ui/workspace/context_menu.cljs:748
+#: src/app/main/ui/workspace/context_menu.cljs:764
msgid "workspace.context-menu.grid-cells.area"
msgstr "新建区域"
-#: src/app/main/ui/workspace/context_menu.cljs:751
+#: src/app/main/ui/workspace/context_menu.cljs:767
msgid "workspace.context-menu.grid-cells.create-board"
msgstr "新建画板"
-#: src/app/main/ui/workspace/context_menu.cljs:743
+#: src/app/main/ui/workspace/context_menu.cljs:759
msgid "workspace.context-menu.grid-cells.merge"
msgstr "合并网格"
-#: src/app/main/ui/workspace/context_menu.cljs:706
+#: src/app/main/ui/workspace/context_menu.cljs:722
msgid "workspace.context-menu.grid-track.column.add-after"
msgstr "在右侧添加一列"
-#: src/app/main/ui/workspace/context_menu.cljs:705
+#: src/app/main/ui/workspace/context_menu.cljs:721
msgid "workspace.context-menu.grid-track.column.add-before"
msgstr "在左侧添加一列"
-#: src/app/main/ui/workspace/context_menu.cljs:707
+#: src/app/main/ui/workspace/context_menu.cljs:723
msgid "workspace.context-menu.grid-track.column.delete"
msgstr "删除此列"
-#: src/app/main/ui/workspace/context_menu.cljs:708
+#: src/app/main/ui/workspace/context_menu.cljs:724
msgid "workspace.context-menu.grid-track.column.delete-shapes"
msgstr "删除此列及其内容"
-#: src/app/main/ui/workspace/context_menu.cljs:704
+#: src/app/main/ui/workspace/context_menu.cljs:720
msgid "workspace.context-menu.grid-track.column.duplicate"
msgstr "复制此列"
-#: src/app/main/ui/workspace/context_menu.cljs:713
+#: src/app/main/ui/workspace/context_menu.cljs:729
msgid "workspace.context-menu.grid-track.row.add-after"
msgstr "在下方添加一行"
-#: src/app/main/ui/workspace/context_menu.cljs:712
+#: src/app/main/ui/workspace/context_menu.cljs:728
msgid "workspace.context-menu.grid-track.row.add-before"
msgstr "在上方添加一行"
-#: src/app/main/ui/workspace/context_menu.cljs:714
+#: src/app/main/ui/workspace/context_menu.cljs:730
msgid "workspace.context-menu.grid-track.row.delete"
msgstr "删除此行"
-#: src/app/main/ui/workspace/context_menu.cljs:715
+#: src/app/main/ui/workspace/context_menu.cljs:731
msgid "workspace.context-menu.grid-track.row.delete-shapes"
msgstr "删除此行及其内容"
-#: src/app/main/ui/workspace/context_menu.cljs:711
+#: src/app/main/ui/workspace/context_menu.cljs:727
msgid "workspace.context-menu.grid-track.row.duplicate"
msgstr "复制此行"
@@ -3751,11 +3745,11 @@ msgstr "复制此行"
msgid "workspace.focus.focus-mode"
msgstr "禅模式"
-#: src/app/main/ui/workspace/context_menu.cljs:378, src/app/main/ui/workspace/context_menu.cljs:663
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
msgid "workspace.focus.focus-off"
msgstr "退出禅模式"
-#: src/app/main/ui/workspace/context_menu.cljs:377
+#: src/app/main/ui/workspace/context_menu.cljs:379
msgid "workspace.focus.focus-on"
msgstr "关注"
@@ -3909,33 +3903,32 @@ msgstr "切换到浅色主题"
msgid "workspace.header.menu.undo"
msgstr "撤销"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "重置"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:127
msgid "workspace.header.save-error"
msgstr "保存时发生错误"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "已保存"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "正在保存"
#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
msgid "workspace.header.unsaved"
msgstr "未保存的修改"
-#: src/app/main/ui/workspace/right_header.cljs:260
+#: src/app/main/ui/workspace/right_header.cljs:226
msgid "workspace.header.viewer"
msgstr "预览模式(%s)"
-#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:109
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
msgid "workspace.header.zoom"
msgstr "缩放"
@@ -3947,7 +3940,7 @@ msgstr "填充 - 填充比例"
msgid "workspace.header.zoom-fit"
msgstr "适合 - 缩小以适合"
-#: src/app/main/ui/workspace/right_header.cljs:129
+#: src/app/main/ui/workspace/right_header.cljs:97
msgid "workspace.header.zoom-fit-all"
msgstr "缩放以适应所有"
@@ -3955,15 +3948,15 @@ msgstr "缩放以适应所有"
msgid "workspace.header.zoom-full-screen"
msgstr "全屏"
-#: src/app/main/ui/workspace/right_header.cljs:136
+#: src/app/main/ui/workspace/right_header.cljs:104
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:607
+#: 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:616
msgid "workspace.layout_grid.editor.options.edit-grid"
msgstr "编辑网格"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1295
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
msgid "workspace.layout_grid.editor.options.exit"
msgstr "退出"
@@ -3979,7 +3972,7 @@ msgstr "完成"
msgid "workspace.layout_grid.editor.top-bar.locate"
msgstr "定位"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1321
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
msgstr "定位网格布局"
@@ -3988,7 +3981,7 @@ msgstr "定位网格布局"
msgid "workspace.libraries.add"
msgstr "添加"
-#: src/app/main/ui/workspace/libraries.cljs:107, src/app/main/ui/workspace/libraries.cljs:133
+#: src/app/main/ui/workspace/libraries.cljs:106, src/app/main/ui/workspace/libraries.cljs:132
msgid "workspace.libraries.colors"
msgstr "%s种颜色"
@@ -4018,31 +4011,31 @@ msgstr "最近使用的颜色"
msgid "workspace.libraries.colors.rgb-complementary"
msgstr "RGB互补"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/colorpicker.cljs:515
+#: src/app/main/ui/workspace/colorpicker.cljs:511
msgid "workspace.libraries.colors.save-color"
msgstr "保存颜色风格"
-#: src/app/main/ui/workspace/libraries.cljs:101, src/app/main/ui/workspace/libraries.cljs:125
+#: 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:300
+#: src/app/main/ui/workspace/libraries.cljs:297
msgid "workspace.libraries.file-library"
msgstr "文档库"
-#: src/app/main/ui/workspace/libraries.cljs:104, src/app/main/ui/workspace/libraries.cljs:129
+#: 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:294
+#: src/app/main/ui/workspace/libraries.cljs:291
msgid "workspace.libraries.in-this-file"
msgstr "本文档中的库"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "库"
@@ -4051,63 +4044,59 @@ msgstr "库"
msgid "workspace.libraries.library"
msgstr "库"
-#: src/app/main/ui/workspace/libraries.cljs:483
+#: src/app/main/ui/workspace/libraries.cljs:467
msgid "workspace.libraries.library-updates"
msgstr "共享库更新"
-#: src/app/main/ui/workspace/libraries.cljs:363
+#: src/app/main/ui/workspace/libraries.cljs:360
msgid "workspace.libraries.loading"
msgstr "加载中…"
-#: src/app/main/ui/workspace/libraries.cljs:481
+#: src/app/main/ui/workspace/libraries.cljs:465
msgid "workspace.libraries.no-libraries-need-sync"
msgstr "没有需要更新的共享库"
-#: src/app/main/ui/workspace/libraries.cljs:394
+#: src/app/main/ui/workspace/libraries.cljs:378
msgid "workspace.libraries.no-matches-for"
msgstr "没有找到“%s”的匹配项"
-#: src/app/main/ui/workspace/libraries.cljs:384
-msgid "workspace.libraries.no-shared-libraries-available"
-msgstr "没有可用的共享库"
-
-#: src/app/main/ui/workspace/libraries.cljs:337
+#: src/app/main/ui/workspace/libraries.cljs:334
msgid "workspace.libraries.search-shared-libraries"
msgstr "搜索共享库"
-#: src/app/main/ui/workspace/libraries.cljs:333
+#: src/app/main/ui/workspace/libraries.cljs:330
msgid "workspace.libraries.shared-libraries"
msgstr "共享库"
-#: src/app/main/ui/workspace/libraries.cljs:355
+#: src/app/main/ui/workspace/libraries.cljs:352
msgid "workspace.libraries.shared-library-btn"
msgstr "连接共享库"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:311
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
msgid "workspace.libraries.text.multiple-typography"
msgstr "复合排版"
-#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:314
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
msgid "workspace.libraries.text.multiple-typography-tooltip"
msgstr "断开所有排版的链接"
-#: src/app/main/ui/workspace/libraries.cljs:110, src/app/main/ui/workspace/libraries.cljs:137
+#: 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:326
+#: src/app/main/ui/workspace/libraries.cljs:323
msgid "workspace.libraries.unlink-library-btn"
msgstr "断开共享库"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "更新"
-#: src/app/main/ui/workspace/libraries.cljs:579
+#: src/app/main/ui/workspace/libraries.cljs:563
msgid "workspace.libraries.update.see-all-changes"
msgstr "查看所有修改"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "更新"
@@ -4127,39 +4116,39 @@ msgstr "编组模糊"
msgid "workspace.options.blur-options.title.multiple"
msgstr "选项模糊"
-#: src/app/main/ui/workspace/sidebar/options/page.cljs:38, src/app/main/ui/workspace/sidebar/options/page.cljs:45
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
msgid "workspace.options.canvas-background"
msgstr "画布背景"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:431
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
msgid "workspace.options.clip-content"
msgstr "剪辑内容"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "组件"
-#: src/app/main/ui/viewer/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:181
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
msgid "workspace.options.component.annotation"
msgstr "注释"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:600
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
msgid "workspace.options.component.copy"
msgstr "复制"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:173
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
msgid "workspace.options.component.create-annotation"
msgstr "创建注释"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
msgid "workspace.options.component.edit-annotation"
msgstr "编辑注释"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:416
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
msgid "workspace.options.component.swap"
msgstr "交换组件"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:460
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
msgid "workspace.options.component.swap.empty"
msgstr "你的库中还没有素材"
@@ -4207,7 +4196,7 @@ msgstr "上下固定"
msgid "workspace.options.design"
msgstr "设计"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "导出"
@@ -4216,13 +4205,13 @@ msgstr "导出"
msgid "workspace.options.export-multiple"
msgstr "导出已选择"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
msgid "workspace.options.export-object"
msgid_plural "workspace.options.export-object"
msgstr[0] "输出1个元素"
msgstr[1] "输出%s元素"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/inspect/exports.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:229
msgid "workspace.options.export.suffix"
msgstr "后缀"
@@ -4230,7 +4219,7 @@ msgstr "后缀"
msgid "workspace.options.exporting-complete"
msgstr "导出完成"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "正在导出…"
@@ -4368,7 +4357,7 @@ msgstr "编组边框"
msgid "workspace.options.guides.title"
msgstr "参考线"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "高度"
@@ -4678,19 +4667,19 @@ msgstr "已选中的图层"
msgid "workspace.options.layout-item.advanced-ops"
msgstr "高级选项"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "最大高度"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:528
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
msgid "workspace.options.layout-item.layout-item-max-w"
msgstr "最大宽度"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:545
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
msgid "workspace.options.layout-item.layout-item-min-h"
msgstr "最小高度"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:512
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
msgid "workspace.options.layout-item.layout-item-min-w"
msgstr "最小宽度"
@@ -4804,11 +4793,11 @@ msgstr "间隔留空"
msgid "workspace.options.layout.top"
msgstr "顶部"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "更多颜色"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:155
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
msgid "workspace.options.more-lib-colors"
msgstr "更多共享库颜色"
@@ -4845,7 +4834,7 @@ msgstr "左上角"
msgid "workspace.options.radius-top-right"
msgstr "右上角"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "最近的"
@@ -4853,11 +4842,11 @@ msgstr "最近的"
msgid "workspace.options.retry"
msgstr "重试"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "旋转"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:183
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
msgid "workspace.options.search-font"
msgstr "搜索字体"
@@ -4865,7 +4854,7 @@ msgstr "搜索字体"
msgid "workspace.options.select-a-shape"
msgstr "选择一个形状、画板或编组,拖至另一个画板,以创建关联。"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:128
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "已选颜色"
@@ -4877,43 +4866,43 @@ msgstr "选项填充"
msgid "workspace.options.selection-stroke"
msgstr "选项边框"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "模糊"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:242
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
msgid "workspace.options.shadow-options.color"
msgstr "阴影颜色"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:146
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
msgid "workspace.options.shadow-options.drop-shadow"
msgstr "外阴影"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:147
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
msgid "workspace.options.shadow-options.inner-shadow"
msgstr "内阴影"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:215, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:217
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
msgid "workspace.options.shadow-options.spread"
msgstr "展开"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "阴影"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:299
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
msgid "workspace.options.shadow-options.title.group"
msgstr "编组阴影"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:298
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
msgid "workspace.options.shadow-options.title.multiple"
msgstr "选项阴影"
@@ -4921,7 +4910,7 @@ msgstr "选项阴影"
msgid "workspace.options.show-fill-on-export"
msgstr "在导出中显示"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:445
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
msgid "workspace.options.show-in-viewer"
msgstr "在预览模式显示"
@@ -4929,7 +4918,7 @@ msgstr "在预览模式显示"
msgid "workspace.options.size"
msgstr "尺寸"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:305
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
msgid "workspace.options.size-presets"
msgstr "尺寸预设"
@@ -4998,7 +4987,7 @@ msgstr "三角形"
msgid "workspace.options.stroke-color"
msgstr "线条颜色"
-#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:165
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
msgid "workspace.options.stroke-width"
msgstr "线宽"
@@ -5062,11 +5051,11 @@ msgstr "自动宽度"
msgid "workspace.options.text-options.grow-fixed"
msgstr "固定"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
msgid "workspace.options.text-options.letter-spacing"
msgstr "字距"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:371
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
msgid "workspace.options.text-options.line-height"
msgstr "行高"
@@ -5130,15 +5119,15 @@ msgstr "大写"
msgid "workspace.options.use-play-button"
msgstr "点击页面顶端的播放按钮预览原型。"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:351
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
msgid "workspace.options.width"
msgstr "宽度"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "X轴"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Y轴"
@@ -5182,99 +5171,99 @@ msgstr "拆分节点(%s)"
msgid "workspace.path.actions.snap-nodes"
msgstr "对接节点 (%s)"
-#: src/app/main/ui/workspace/context_menu.cljs:537
+#: src/app/main/ui/workspace/context_menu.cljs:542
msgid "workspace.shape.menu.add-flex"
msgstr "添加弹性布局"
-#: src/app/main/ui/workspace/context_menu.cljs:541
+#: src/app/main/ui/workspace/context_menu.cljs:546
msgid "workspace.shape.menu.add-grid"
msgstr "添加网格布局"
-#: src/app/main/ui/workspace/context_menu.cljs:265
+#: src/app/main/ui/workspace/context_menu.cljs:266
msgid "workspace.shape.menu.back"
msgstr "移至底层"
-#: src/app/main/ui/workspace/context_menu.cljs:262
+#: src/app/main/ui/workspace/context_menu.cljs:263
msgid "workspace.shape.menu.backward"
msgstr "向下移动一层"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "复制"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:438
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
msgid "workspace.shape.menu.create-annotation"
msgstr "创建注释"
-#: src/app/main/ui/workspace/context_menu.cljs:364
+#: src/app/main/ui/workspace/context_menu.cljs:366
msgid "workspace.shape.menu.create-artboard-from-selection"
msgstr "转为画板"
-#: src/app/main/ui/workspace/context_menu.cljs:561
+#: src/app/main/ui/workspace/context_menu.cljs:568
msgid "workspace.shape.menu.create-component"
msgstr "创建组件"
-#: src/app/main/ui/workspace/context_menu.cljs:565
+#: src/app/main/ui/workspace/context_menu.cljs:572
msgid "workspace.shape.menu.create-multiple-components"
msgstr "创建多个组件"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "剪切"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "删除"
-#: src/app/main/ui/workspace/context_menu.cljs:487
+#: src/app/main/ui/workspace/context_menu.cljs:489
msgid "workspace.shape.menu.delete-flow-start"
msgstr "删除流程起点"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:443
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
msgid "workspace.shape.menu.detach-instance"
msgstr "解绑实例"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
msgid "workspace.shape.menu.detach-instances-in-bulk"
msgstr "解绑实例"
-#: src/app/main/ui/workspace/context_menu.cljs:428, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
msgid "workspace.shape.menu.difference"
msgstr "差集"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "创建副本"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "编辑"
-#: src/app/main/ui/workspace/context_menu.cljs:434
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "workspace.shape.menu.exclude"
msgstr "相减"
-#: src/app/main/ui/workspace/context_menu.cljs:441, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
msgid "workspace.shape.menu.flatten"
msgstr "展平"
-#: src/app/main/ui/workspace/context_menu.cljs:282
+#: src/app/main/ui/workspace/context_menu.cljs:283
msgid "workspace.shape.menu.flip-horizontal"
msgstr "水平翻转"
-#: src/app/main/ui/workspace/context_menu.cljs:278
+#: src/app/main/ui/workspace/context_menu.cljs:279
msgid "workspace.shape.menu.flip-vertical"
msgstr "垂直翻转"
-#: src/app/main/ui/workspace/context_menu.cljs:489
+#: src/app/main/ui/workspace/context_menu.cljs:491
msgid "workspace.shape.menu.flow-start"
msgstr "流程起点"
-#: src/app/main/ui/workspace/context_menu.cljs:256
+#: src/app/main/ui/workspace/context_menu.cljs:257
msgid "workspace.shape.menu.forward"
msgstr "向上移动一层"
-#: src/app/main/ui/workspace/context_menu.cljs:259
+#: src/app/main/ui/workspace/context_menu.cljs:260
msgid "workspace.shape.menu.front"
msgstr "移至顶层"
@@ -5283,95 +5272,95 @@ msgstr "移至顶层"
msgid "workspace.shape.menu.go-main"
msgstr "前往主组件文档"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "编组"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "隐藏"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "显示/隐藏界面"
-#: src/app/main/ui/workspace/context_menu.cljs:431
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "workspace.shape.menu.intersection"
msgstr "差集"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "锁定"
-#: src/app/main/ui/workspace/context_menu.cljs:355
+#: src/app/main/ui/workspace/context_menu.cljs:357
msgid "workspace.shape.menu.mask"
msgstr "蒙板"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "粘贴"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "路径"
-#: src/app/main/ui/workspace/context_menu.cljs:528
+#: src/app/main/ui/workspace/context_menu.cljs:532
msgid "workspace.shape.menu.remove-flex"
msgstr "删除弹性布局"
-#: src/app/main/ui/workspace/context_menu.cljs:531
+#: src/app/main/ui/workspace/context_menu.cljs:535
msgid "workspace.shape.menu.remove-grid"
msgstr "移除网格布局"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
msgid "workspace.shape.menu.reset-overrides"
msgstr "还原自定义选项"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:450
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
msgid "workspace.shape.menu.restore-main"
msgstr "恢复主要组件"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "选择图层"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "显示"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:435
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
msgid "workspace.shape.menu.show-in-assets"
msgstr "在素材面板中显示"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:453, src/app/main/ui/workspace/sidebar/assets/components.cljs:563
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
msgid "workspace.shape.menu.show-main"
msgstr "显示主组件"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "移除缩略图"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "设为缩略图"
-#: src/app/main/ui/workspace/context_menu.cljs:419
+#: src/app/main/ui/workspace/context_menu.cljs:421
msgid "workspace.shape.menu.transform-to-path"
msgstr "转换为路径"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "取消编组"
-#: src/app/main/ui/workspace/context_menu.cljs:425, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
msgid "workspace.shape.menu.union"
msgstr "相加"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "取消锁定"
-#: src/app/main/ui/workspace/context_menu.cljs:360
+#: src/app/main/ui/workspace/context_menu.cljs:362
msgid "workspace.shape.menu.unmask"
msgstr "取消蒙版"
@@ -5380,7 +5369,7 @@ msgstr "取消蒙版"
msgid "workspace.shape.menu.update-components-in-bulk"
msgstr "更新主要组件"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:456
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
msgid "workspace.shape.menu.update-main"
msgstr "更新主组件"
@@ -5392,11 +5381,11 @@ msgstr "收起侧边栏"
msgid "workspace.sidebar.expand"
msgstr "展开侧边栏"
-#: src/app/main/ui/workspace/right_header.cljs:246, src/app/main/ui/workspace/right_header.cljs:247
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
msgid "workspace.sidebar.history"
msgstr "历史"
-#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:127, src/app/main/ui/workspace/sidebar.cljs:131, src/app/main/ui/workspace/sidebar.cljs:140
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
msgid "workspace.sidebar.layers"
msgstr "图层"
@@ -5432,7 +5421,7 @@ msgstr "形状"
msgid "workspace.sidebar.layers.texts"
msgstr "文本"
-#: src/app/main/ui/viewer/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
msgid "workspace.sidebar.options.svg-attrs.title"
msgstr "已导入SVG属性"
@@ -5440,11 +5429,11 @@ msgstr "已导入SVG属性"
msgid "workspace.sidebar.sitemap"
msgstr "页面"
-#: src/app/main/ui/workspace/left_header.cljs:92
+#: src/app/main/ui/workspace/left_header.cljs:97
msgid "workspace.sitemap"
msgstr "站点地图"
-#: src/app/main/ui/workspace/sidebar.cljs:134, src/app/main/ui/workspace/sidebar.cljs:143
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
msgid "workspace.toolbar.assets"
msgstr "素材"
@@ -5452,35 +5441,35 @@ msgstr "素材"
msgid "workspace.toolbar.color-palette"
msgstr "调色盘(%s)"
-#: src/app/main/ui/workspace/right_header.cljs:235, src/app/main/ui/workspace/right_header.cljs:236
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
msgid "workspace.toolbar.comments"
msgstr "评论(%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:181, src/app/main/ui/workspace/top_toolbar.cljs:182
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
msgid "workspace.toolbar.curve"
msgstr "曲线(%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
msgid "workspace.toolbar.ellipse"
msgstr "椭圆(%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:143, src/app/main/ui/workspace/top_toolbar.cljs:144
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
msgid "workspace.toolbar.frame"
msgstr "画板(%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:60, src/app/main/ui/workspace/top_toolbar.cljs:61
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
msgid "workspace.toolbar.image"
msgstr "图片(%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:133, src/app/main/ui/workspace/top_toolbar.cljs:134
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
msgid "workspace.toolbar.move"
msgstr "移动 (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
msgid "workspace.toolbar.path"
msgstr "路径(%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:152, src/app/main/ui/workspace/top_toolbar.cljs:153
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
msgid "workspace.toolbar.rect"
msgstr "矩形(%s)"
@@ -5489,7 +5478,7 @@ msgstr "矩形(%s)"
msgid "workspace.toolbar.shortcuts"
msgstr "快捷键 (%s)"
-#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
msgid "workspace.toolbar.text"
msgstr "文本(%s)"
@@ -5651,19 +5640,19 @@ msgstr "操作覆盖%s"
msgid "workspace.undo.title"
msgstr "历史"
-#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "忽略"
-#: src/app/main/data/workspace/libraries.cljs:1221
+#: src/app/main/data/workspace/libraries.cljs:1222
msgid "workspace.updates.more-info"
msgstr "更多信息"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1220
msgid "workspace.updates.there-are-updates"
msgstr "共享库有更新"
-#: src/app/main/data/workspace/libraries.cljs:1225
+#: src/app/main/data/workspace/libraries.cljs:1226
msgid "workspace.updates.update"
msgstr "更新"
diff --git a/frontend/translations/zh_Hant.po b/frontend/translations/zh_Hant.po
index 50a34d43f5..9ba23b6ac8 100644
--- a/frontend/translations/zh_Hant.po
+++ b/frontend/translations/zh_Hant.po
@@ -1,20 +1,24 @@
msgid ""
msgstr ""
-"PO-Revision-Date: 2024-06-17 08:07+0000\n"
+"PO-Revision-Date: 2025-03-20 13:42+0000\n"
"Last-Translator: Anonymous \n"
-"Language-Team: Chinese (Traditional) "
+"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.6-dev\n"
+"X-Generator: Weblate 5.11-dev\n"
#: src/app/main/ui/auth/register.cljs:133, src/app/main/ui/static.cljs:155, src/app/main/ui/viewer/login.cljs:98
msgid "auth.already-have-account"
msgstr "已經有帳號了嗎?"
+#: src/app/main/ui/auth/recovery_request.cljs:113, src/app/main/ui/auth/register.cljs:274
+msgid "auth.check-mail"
+msgstr "檢查郵件"
+
#: src/app/main/ui/auth/register.cljs:277
msgid "auth.check-your-email"
msgstr "檢查你的信箱,點擊信中連結來驗證並開始使用 Penpot。"
@@ -32,11 +36,11 @@ msgstr "建立展示帳號"
msgid "auth.create-demo-profile"
msgstr "只是想試試看嗎?"
-#: src/app/main/ui/auth/login.cljs:42
+#: src/app/main/ui/auth/login.cljs:43
msgid "auth.demo-warning"
msgstr "此服務僅用於展示,請勿用於實際工作。專案內容將被定期清除。"
-#: src/app/main/ui/auth/login.cljs:190, src/app/main/ui/viewer/login.cljs:84
+#: src/app/main/ui/auth/login.cljs:189, src/app/main/ui/viewer/login.cljs:84
msgid "auth.forgot-password"
msgstr "忘記密碼?"
@@ -44,39 +48,39 @@ msgstr "忘記密碼?"
msgid "auth.fullname"
msgstr "全名"
-#: src/app/main/ui/auth/login.cljs:283
+#: src/app/main/ui/auth/login.cljs:282
msgid "auth.login-account-title"
msgstr "登入我的帳號"
#: src/app/main/ui/auth/register.cljs:137, src/app/main/ui/static.cljs:158, src/app/main/ui/viewer/login.cljs:101
msgid "auth.login-here"
-msgstr "在此登入"
+msgstr "在此登入。"
-#: src/app/main/ui/auth/login.cljs:196
+#: src/app/main/ui/auth/login.cljs:195
msgid "auth.login-submit"
msgstr "登入"
-#: src/app/main/ui/auth/login.cljs:286
+#: src/app/main/ui/auth/login.cljs:285
msgid "auth.login-tagline"
msgstr "Penpot 是用於設計與開發協作,免費且開源的設計工具"
-#: src/app/main/ui/auth/login.cljs:223
+#: src/app/main/ui/auth/login.cljs:222
msgid "auth.login-with-github-submit"
msgstr "GitHub"
-#: src/app/main/ui/auth/login.cljs:229
+#: src/app/main/ui/auth/login.cljs:228
msgid "auth.login-with-gitlab-submit"
msgstr "GitLab"
-#: src/app/main/ui/auth/login.cljs:217
+#: src/app/main/ui/auth/login.cljs:216
msgid "auth.login-with-google-submit"
msgstr "Google"
-#: src/app/main/ui/auth/login.cljs:202
+#: src/app/main/ui/auth/login.cljs:201
msgid "auth.login-with-ldap-submit"
msgstr "LDAP"
-#: src/app/main/ui/auth/login.cljs:235, src/app/main/ui/auth/login.cljs:256
+#: src/app/main/ui/auth/login.cljs:234, src/app/main/ui/auth/login.cljs:255
msgid "auth.login-with-oidc-submit"
msgstr "OpenID"
@@ -100,7 +104,7 @@ msgstr "密碼重設連結已寄送至您的信箱。"
msgid "auth.notifications.team-invitation-accepted"
msgstr "已成功加入團隊"
-#: src/app/main/ui/auth/login.cljs:180, src/app/main/ui/auth/register.cljs:95
+#: src/app/main/ui/auth/login.cljs:179, src/app/main/ui/auth/register.cljs:95
msgid "auth.password"
msgstr "密碼"
@@ -128,14 +132,26 @@ msgstr "忘記密碼?"
msgid "auth.recovery-submit"
msgstr "修改密碼"
-#: src/app/main/ui/auth/login.cljs:299, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
+#: src/app/main/ui/auth/login.cljs:298, src/app/main/ui/static.cljs:141, src/app/main/ui/viewer/login.cljs:87
msgid "auth.register"
msgstr "還沒有帳號嗎?"
-#: src/app/main/ui/auth/login.cljs:303, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
+#: src/app/main/ui/auth/register.cljs:254
+msgid "auth.register-account-tagline"
+msgstr "讓我們知道在儀表板和電子郵件中應該如何稱呼您。"
+
+#: src/app/main/ui/auth/register.cljs:253
+msgid "auth.register-account-title"
+msgstr "您的名稱"
+
+#: src/app/main/ui/auth/login.cljs:302, src/app/main/ui/auth/register.cljs:101, src/app/main/ui/auth/register.cljs:240, src/app/main/ui/static.cljs:145, src/app/main/ui/viewer/login.cljs:91
msgid "auth.register-submit"
msgstr "建立帳號"
+#: src/app/main/ui/auth/register.cljs:124
+msgid "auth.register-tagline"
+msgstr "使用免費的 Penpot 帳戶,您可以建立無限制團隊,並與其他設計師和開發人員合作完成喜歡的專案 "
+
#: src/app/main/ui/auth/register.cljs:122
msgid "auth.register-title"
msgstr "建立帳號"
@@ -145,20 +161,37 @@ msgstr "建立帳號"
msgid "auth.sidebar-tagline"
msgstr "設計與原型製作的開源解決方案。"
-#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1053, src/app/main/ui/workspace/main_menu.cljs:154
+#: src/app/main/ui/auth/register.cljs:157
+#, markdown
+msgid "auth.terms-and-privacy-agreement"
+msgstr "我同意[服務條款](%s)和[隱私權政策](%s)。"
+
+#: src/app/main/ui/auth/register.cljs:290, src/app/main/ui/dashboard/sidebar.cljs:1054, src/app/main/ui/workspace/main_menu.cljs:154
msgid "auth.terms-of-service"
msgstr "服務條款"
+#, unused
+msgid "auth.terms-privacy-agreement"
+msgstr "建立新帳戶時,您同意我們的服務條款和隱私權政策。"
+
#: src/app/main/ui/auth/register.cljs:275
msgid "auth.verification-email-sent"
msgstr "我們會寄送一封驗證郵件至"
+#: src/app/main/ui/auth/login.cljs:172, src/app/main/ui/auth/recovery_request.cljs:77, src/app/main/ui/auth/register.cljs:88
+msgid "auth.work-email"
+msgstr "工作信箱"
+
#: src/app/main/ui/onboarding/questions.cljs
#, unused
msgid "branding-illustrations-marketing-pieces"
msgstr "...品牌設計、插畫、行銷素材等。"
-#: src/app/main/ui/workspace/libraries.cljs:311
+#: src/app/main/ui/comments.cljs:532
+msgid "comments.mentions.not-found"
+msgstr "未找到 @%s 的聯絡人"
+
+#: src/app/main/ui/workspace/libraries.cljs:308
msgid "common.publish"
msgstr "發怖"
@@ -227,7 +260,7 @@ msgstr "分享原型"
msgid "common.share-link.view-all"
msgstr "全選"
-#: src/app/main/ui/workspace/libraries.cljs:307
+#: src/app/main/ui/workspace/libraries.cljs:304
msgid "common.unpublish"
msgstr "未發怖"
@@ -277,7 +310,7 @@ msgstr "遊覽用戶界面"
msgid "dashboard.access-tokens.copied-success"
msgstr "已複製 Token"
-#: src/app/main/ui/settings/access_tokens.cljs:191
+#: src/app/main/ui/settings/access_tokens.cljs:190
msgid "dashboard.access-tokens.create"
msgstr "產生新的 Token"
@@ -285,11 +318,11 @@ msgstr "產生新的 Token"
msgid "dashboard.access-tokens.create.success"
msgstr "已成功建立 Access Token。"
-#: src/app/main/ui/settings/access_tokens.cljs:289
+#: src/app/main/ui/settings/access_tokens.cljs:288
msgid "dashboard.access-tokens.empty.add-one"
msgstr "按下\"產生新 Token\" 按鈕來產生一個。"
-#: src/app/main/ui/settings/access_tokens.cljs:288
+#: src/app/main/ui/settings/access_tokens.cljs:287
msgid "dashboard.access-tokens.empty.no-access-tokens"
msgstr "你目前還沒有 Tokens。"
@@ -313,23 +346,23 @@ msgstr "90 天"
msgid "dashboard.access-tokens.expiration-never"
msgstr "從不"
-#: src/app/main/ui/settings/access_tokens.cljs:271
+#: src/app/main/ui/settings/access_tokens.cljs:270
msgid "dashboard.access-tokens.expired-on"
msgstr "已於 %s 過期"
-#: src/app/main/ui/settings/access_tokens.cljs:272
+#: src/app/main/ui/settings/access_tokens.cljs:271
msgid "dashboard.access-tokens.expires-on"
msgstr "將於 %s 過期"
-#: src/app/main/ui/settings/access_tokens.cljs:270
+#: src/app/main/ui/settings/access_tokens.cljs:269
msgid "dashboard.access-tokens.no-expiration"
msgstr "沒有到期時間"
-#: src/app/main/ui/settings/access_tokens.cljs:186
+#: src/app/main/ui/settings/access_tokens.cljs:185
msgid "dashboard.access-tokens.personal"
msgstr "個人存取權杖"
-#: src/app/main/ui/settings/access_tokens.cljs:187
+#: src/app/main/ui/settings/access_tokens.cljs:186
msgid "dashboard.access-tokens.personal.description"
msgstr "個人存取權杖就像是帳號密碼驗證系統的替代方案,且可用於讓第三方應用程式存取 Penpot 內部 API"
@@ -341,6 +374,10 @@ msgstr "權杖將於 %s 到期"
msgid "dashboard.access-tokens.token-will-not-expire"
msgstr "權杖沒有到期時間"
+#: src/app/main/ui/dashboard/placeholder.cljs:35
+msgid "dashboard.add-file"
+msgstr "加入檔案"
+
#: src/app/main/ui/dashboard/file_menu.cljs:301, src/app/main/ui/workspace/main_menu.cljs:612
msgid "dashboard.add-shared"
msgstr "加入為共享檔案庫"
@@ -349,7 +386,7 @@ msgstr "加入為共享檔案庫"
msgid "dashboard.change-email"
msgstr "更改電子郵件"
-#: src/app/main/data/dashboard.cljs:288, src/app/main/data/dashboard.cljs:507
+#: src/app/main/data/dashboard.cljs:298, src/app/main/data/dashboard.cljs:526, src/app/main/data/workspace.cljs:544
msgid "dashboard.copy-suffix"
msgstr "(複製)"
@@ -357,6 +394,10 @@ msgstr "(複製)"
msgid "dashboard.create-new-team"
msgstr "建立新團隊"
+#: src/app/main/ui/workspace/main_menu.cljs:623
+msgid "dashboard.create-version-menu"
+msgstr "固定此版本"
+
#: src/app/main/ui/components/context_menu_a11y.cljs:282, src/app/main/ui/dashboard/sidebar.cljs:659
msgid "dashboard.default-team-name"
msgstr "你的 Penpot"
@@ -381,6 +422,44 @@ msgstr "複本"
msgid "dashboard.duplicate-multi"
msgstr "複製 %s 個檔案"
+#: src/app/main/ui/dashboard/files.cljs:199, src/app/main/ui/dashboard/projects.cljs:286
+msgid "dashboard.empty-placeholder-drafts-subtitle"
+msgstr "專案成員建立草稿後,它將顯示在此處。"
+
+#: src/app/main/ui/dashboard/files.cljs:194, src/app/main/ui/dashboard/projects.cljs:281
+msgid "dashboard.empty-placeholder-drafts-title"
+msgstr "還沒有草稿。"
+
+#: src/app/main/ui/dashboard/files.cljs:200, src/app/main/ui/dashboard/projects.cljs:287
+msgid "dashboard.empty-placeholder-files-subtitle"
+msgstr "一旦專案成員建立文件,它將顯示在這裡。"
+
+#: src/app/main/ui/dashboard/files.cljs:195, src/app/main/ui/dashboard/projects.cljs:282
+msgid "dashboard.empty-placeholder-files-title"
+msgstr "尚無文件。"
+
+#: src/app/main/ui/dashboard/placeholder.cljs:77
+#, 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:73
+msgid "dashboard.empty-placeholder-libraries-subtitle-viewer-role"
+msgstr "新增至專案中的圖庫將顯示在此處。"
+
+#: src/app/main/ui/dashboard/placeholder.cljs:70
+msgid "dashboard.empty-placeholder-libraries-title"
+msgstr "還沒有圖庫。"
+
#: src/app/main/ui/dashboard/file_menu.cljs:249, src/app/main/ui/dashboard/file_menu.cljs:254
msgid "dashboard.export-binary-multi"
msgstr "下載 %s 個Penpot 檔案 (.penpot)"
@@ -461,24 +540,32 @@ msgstr "將共享資料庫的內容加入檔案資料庫"
msgid "dashboard.export.title"
msgstr "匯出檔案"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:313
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:316
msgid "dashboard.fonts.deleted-placeholder"
msgstr "已刪除字型"
-#: src/app/main/ui/dashboard/fonts.cljs:210
+#: src/app/main/ui/dashboard/fonts.cljs:212
msgid "dashboard.fonts.dismiss-all"
msgstr "全部取消"
-#: src/app/main/ui/dashboard/fonts.cljs:445
+#: src/app/main/ui/dashboard/fonts.cljs:447
msgid "dashboard.fonts.empty-placeholder"
msgstr "此處將會列出你上載的自訂字型。"
-#: src/app/main/ui/dashboard/fonts.cljs:198
+#: src/app/main/ui/dashboard/fonts.cljs:450
+msgid "dashboard.fonts.empty-placeholder-viewer"
+msgstr "尚無自訂字體。"
+
+#: src/app/main/ui/dashboard/fonts.cljs:451
+msgid "dashboard.fonts.empty-placeholder-viewer-sub"
+msgstr "一旦專案成員上傳自訂字體,它將顯示在這裡。"
+
+#: src/app/main/ui/dashboard/fonts.cljs:200
msgid "dashboard.fonts.fonts-added"
msgid_plural "dashboard.fonts.fonts-added"
msgstr[0] "添加了%s個字體"
-#: src/app/main/ui/dashboard/fonts.cljs:174
+#: src/app/main/ui/dashboard/fonts.cljs:175
#, markdown
msgid "dashboard.fonts.hero-text1"
msgstr ""
@@ -486,7 +573,7 @@ msgstr ""
"字體將會列入本團隊共用檔案的可用字型家族清單。相同字型家族名稱的字體將被分組為**單一字型家族**。可上傳以下格式的字體:**TTF、OTF 和 "
"WOFF**(任何一種)。"
-#: src/app/main/ui/dashboard/fonts.cljs:186
+#: src/app/main/ui/dashboard/fonts.cljs:188
#, markdown
msgid "dashboard.fonts.hero-text2"
msgstr ""
@@ -494,11 +581,19 @@ msgstr ""
"中使用的字型。如需瞭解更多,請參閱[Penpot的服務條款](https://penpot.app/terms."
"html)的內容權利部分。您可能還想閱讀有關 [字體許可](https://www.typography.com/faq) 的資訊。"
-#: src/app/main/ui/dashboard/fonts.cljs:206
+#: src/app/main/ui/dashboard/fonts.cljs:208
msgid "dashboard.fonts.upload-all"
msgstr "全部上傳"
-#: src/app/main/ui/dashboard/import.cljs:452, src/app/main/ui/dashboard/project_menu.cljs:109
+#: src/app/main/ui/dashboard/fonts.cljs:193
+#, markdown
+msgid "dashboard.fonts.warning-text"
+msgstr ""
+"我們發現您的字體可能存在與不同作業系統的垂直度量相關問題。為了檢查它,您可以使用字體垂直度量服務,例如[這個](https://vertical-"
+"metrics.netlify.app/)。此外,我們建議使用 [Transfonter](https://transfonter.org/) 來產生 "
+"webfonts 並修復錯誤。 "
+
+#: src/app/main/ui/dashboard/import.cljs:454, src/app/main/ui/dashboard/project_menu.cljs:109
msgid "dashboard.import"
msgstr "匯入檔案"
@@ -508,20 +603,32 @@ msgstr "喔不!我們無法匯入此檔案"
#, unused
msgid "dashboard.import.analyze-error.components-v2"
-msgstr "檔案中啟用了 Components v2 但這個團隊尚未支援。"
+msgstr "檔案啟用了 components v2,但這個團隊尚未支援。"
+
+#: src/app/main/ui/dashboard.cljs:247
+msgid "dashboard.import.bad-url"
+msgstr "導入失敗。範本網址不正確"
+
+#: src/app/main/ui/dashboard.cljs:241
+msgid "dashboard.import.error"
+msgstr "導入失敗。請重試"
#: src/app/main/ui/dashboard/import.cljs:292
msgid "dashboard.import.import-error"
msgstr "匯入檔案時發生錯誤。檔案未匯入。"
-#: src/app/main/ui/dashboard/import.cljs:466
+#: src/app/main/ui/dashboard/import.cljs:468
msgid "dashboard.import.import-message"
msgstr "已成功匯入 %s 個檔案。"
-#: src/app/main/ui/dashboard/import.cljs:461
+#: src/app/main/ui/dashboard/import.cljs:463
msgid "dashboard.import.import-warning"
msgstr "部份檔案因包含無效物件而被移除。"
+#: src/app/main/ui/dashboard.cljs:248
+msgid "dashboard.import.no-perms"
+msgstr "您無權匯入至此團隊"
+
#: src/app/main/ui/dashboard/import.cljs:129
msgid "dashboard.import.progress.process-colors"
msgstr "正在處理顏色"
@@ -558,27 +665,27 @@ msgstr "邀請人員"
msgid "dashboard.leave-team"
msgstr "離開團隊"
-#: src/app/main/ui/dashboard/templates.cljs:82, src/app/main/ui/dashboard/templates.cljs:157
+#: src/app/main/ui/dashboard/templates.cljs:83, src/app/main/ui/dashboard/templates.cljs:168
msgid "dashboard.libraries-and-templates"
msgstr "資料庫和範本"
-#: src/app/main/ui/dashboard/templates.cljs:158
+#: src/app/main/ui/dashboard/templates.cljs:169
msgid "dashboard.libraries-and-templates.explore"
msgstr "探索更多內容並了解如何貢獻"
-#: src/app/main/ui/dashboard/import.cljs:358, src/app/main/ui/workspace/libraries.cljs:150
+#: src/app/main/ui/dashboard/import.cljs:360, src/app/main/ui/workspace/libraries.cljs:151
msgid "dashboard.libraries-and-templates.import-error"
msgstr "匯入範本時出現問題。範本並未匯入。"
-#: src/app/main/ui/dashboard/libraries.cljs:51
+#: src/app/main/ui/dashboard/libraries.cljs:66
msgid "dashboard.libraries-title"
msgstr "檔案庫"
-#: src/app/main/ui/dashboard/placeholder.cljs:55
+#: src/app/main/ui/dashboard/placeholder.cljs:100
msgid "dashboard.loading-files"
msgstr "正在載入檔案…"
-#: src/app/main/ui/dashboard/fonts.cljs:439
+#: src/app/main/ui/dashboard/fonts.cljs:441
msgid "dashboard.loading-fonts"
msgstr "正在載入字型…"
@@ -594,11 +701,11 @@ msgstr "將 %s 個檔案移動至"
msgid "dashboard.move-to-other-team"
msgstr "移至其他團隊"
-#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:252, src/app/main/ui/dashboard/projects.cljs:253
+#: src/app/main/ui/dashboard/files.cljs:105, src/app/main/ui/dashboard/projects.cljs:253, src/app/main/ui/dashboard/projects.cljs:254
msgid "dashboard.new-file"
msgstr "+ 新檔案"
-#: src/app/main/data/dashboard.cljs:482, src/app/main/data/dashboard.cljs:591
+#: src/app/main/data/dashboard.cljs:497, src/app/main/data/dashboard.cljs:609
msgid "dashboard.new-file-prefix"
msgstr "新檔案"
@@ -606,7 +713,7 @@ msgstr "新檔案"
msgid "dashboard.new-project"
msgstr "+ 新的專案"
-#: src/app/main/data/dashboard.cljs:252, src/app/main/data/dashboard.cljs:594
+#: src/app/main/data/dashboard.cljs:257, src/app/main/data/dashboard.cljs:612
msgid "dashboard.new-project-prefix"
msgstr "新專案"
@@ -618,6 +725,10 @@ msgstr "找不到符合 「%s」的項目"
msgid "dashboard.no-projects-placeholder"
msgstr "釘選的專案會在此顯示"
+#: src/app/main/ui/dashboard/comments.cljs:90
+msgid "dashboard.notifications"
+msgstr "通知"
+
#: src/app/main/ui/auth/verify_token.cljs:34
msgid "dashboard.notifications.email-changed-successfully"
msgstr "已成功更改您的電子郵件地址"
@@ -626,10 +737,18 @@ msgstr "已成功更改您的電子郵件地址"
msgid "dashboard.notifications.email-verified-successfully"
msgstr "已成功驗證您的電子郵件地址"
+#: src/app/main/data/profile.cljs:260
+msgid "dashboard.notifications.notifications-saved"
+msgstr "通知設定已更新"
+
#: src/app/main/ui/settings/password.cljs:36
msgid "dashboard.notifications.password-saved"
msgstr "密碼已儲存成功!"
+#: src/app/main/ui/dashboard/comments.cljs:44
+msgid "dashboard.notifications.view"
+msgstr "查看通知"
+
#: src/app/main/ui/dashboard/team.cljs:1133
msgid "dashboard.num-of-members"
msgstr "%s 位成員"
@@ -638,7 +757,7 @@ msgstr "%s 位成員"
msgid "dashboard.open-in-new-tab"
msgstr "在新分頁開啟檔案"
-#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/projects.cljs:261, src/app/main/ui/dashboard/projects.cljs:262
+#: src/app/main/ui/dashboard/files.cljs:118, src/app/main/ui/dashboard/grid.cljs:426, src/app/main/ui/dashboard/projects.cljs:262, src/app/main/ui/dashboard/projects.cljs:263
msgid "dashboard.options"
msgstr "選項"
@@ -646,10 +765,38 @@ msgstr "選項"
msgid "dashboard.password-change"
msgstr "修改密碼"
+#: src/app/main/data/common.cljs:209
+msgid "dashboard.permissions-change.admin"
+msgstr "您現在是該團隊的管理員。"
+
+#: src/app/main/data/common.cljs:208
+msgid "dashboard.permissions-change.editor"
+msgstr "您現在是這個團隊的編輯。"
+
+#: src/app/main/data/common.cljs:210
+msgid "dashboard.permissions-change.owner"
+msgstr "您現在是這個團隊的老大。"
+
+#: src/app/main/data/common.cljs:207
+msgid "dashboard.permissions-change.viewer"
+msgstr "您現在是該團隊的查看者。"
+
#: src/app/main/ui/dashboard/pin_button.cljs:24, src/app/main/ui/dashboard/project_menu.cljs:96
msgid "dashboard.pin-unpin"
msgstr "釘選/取消釘選"
+#: src/app/main/ui/dashboard.cljs:208
+msgid "dashboard.plugins.bad-url"
+msgstr "外掛網址不正確"
+
+#: src/app/main/ui/dashboard.cljs:206
+msgid "dashboard.plugins.parse-error"
+msgstr "無法解析外掛清單"
+
+#: src/app/main/ui/dashboard.cljs:169
+msgid "dashboard.plugins.try-plugin"
+msgstr "嘗試外掛: "
+
#: src/app/main/ui/dashboard/projects.cljs:55
msgid "dashboard.projects-title"
msgstr "專案"
@@ -663,6 +810,10 @@ msgstr "想要移除您的帳號嗎?"
msgid "dashboard.remove-shared"
msgstr "不再作為共用資料庫"
+#: src/app/main/data/common.cljs:242
+msgid "dashboard.removed-from-team"
+msgstr "您不再是團隊“%s”的成員。"
+
#: src/app/main/ui/settings/profile.cljs:78
msgid "dashboard.save-settings"
msgstr "儲存設定"
@@ -683,10 +834,74 @@ msgstr "選擇介面語言"
msgid "dashboard.select-ui-theme"
msgstr "選擇主題"
-#: src/app/main/ui/dashboard/projects.cljs:304
+#: src/app/main/ui/settings/notifications.cljs:57
+msgid "dashboard.settings.notifications.dashboard-comments.all"
+msgstr "所有留言、提及和回應"
+
+#: src/app/main/ui/settings/notifications.cljs:59
+msgid "dashboard.settings.notifications.dashboard-comments.none"
+msgstr "無"
+
+#: src/app/main/ui/settings/notifications.cljs:58
+msgid "dashboard.settings.notifications.dashboard-comments.partial"
+msgstr "提及和回應"
+
+#: src/app/main/ui/settings/notifications.cljs:54
+msgid "dashboard.settings.notifications.dashboard-comments.title"
+msgstr "文件註釋"
+
+#: src/app/main/ui/settings/notifications.cljs:53
+msgid "dashboard.settings.notifications.dashboard.title"
+msgstr "儀表板通知"
+
+#: src/app/main/ui/settings/notifications.cljs:67
+msgid "dashboard.settings.notifications.email-comments.all"
+msgstr "所有留言、提及和回應"
+
+#: src/app/main/ui/settings/notifications.cljs:69
+msgid "dashboard.settings.notifications.email-comments.none"
+msgstr "無"
+
+#: src/app/main/ui/settings/notifications.cljs:68
+msgid "dashboard.settings.notifications.email-comments.partial"
+msgstr "提及和回應"
+
+#: src/app/main/ui/settings/notifications.cljs:64
+msgid "dashboard.settings.notifications.email-comments.title"
+msgstr "文件註釋"
+
+#: src/app/main/ui/settings/notifications.cljs:76
+msgid "dashboard.settings.notifications.email-invites.all"
+msgstr "所有類型的邀請和請求"
+
+#: src/app/main/ui/settings/notifications.cljs:79
+msgid "dashboard.settings.notifications.email-invites.none"
+msgstr "無"
+
+#: src/app/main/ui/settings/notifications.cljs:73
+msgid "dashboard.settings.notifications.email-invites.title"
+msgstr "邀請和請求"
+
+#: src/app/main/ui/settings/notifications.cljs:63
+msgid "dashboard.settings.notifications.email.title"
+msgstr "電子郵件通知"
+
+#: src/app/main/ui/settings/notifications.cljs:84
+msgid "dashboard.settings.notifications.submit"
+msgstr "更新設定"
+
+#: src/app/main/ui/settings/notifications.cljs:52
+msgid "dashboard.settings.notifications.title"
+msgstr "通知"
+
+#: src/app/main/ui/dashboard/projects.cljs:305
msgid "dashboard.show-all-files"
msgstr "顯示所有檔案"
+#: src/app/main/ui/workspace/main_menu.cljs:630
+msgid "dashboard.show-version-history"
+msgstr "版本歷史記錄"
+
#: src/app/main/ui/dashboard/file_menu.cljs:97
msgid "dashboard.success-delete-file"
msgid_plural "dashboard.success-delete-file"
@@ -705,7 +920,7 @@ msgstr[0] "已成功為您的檔案建立副本"
msgid "dashboard.success-duplicate-project"
msgstr "你的專案已成功複製"
-#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:588, src/app/main/ui/dashboard/sidebar.cljs:159
+#: src/app/main/ui/dashboard/file_menu.cljs:131, src/app/main/ui/dashboard/grid.cljs:614, src/app/main/ui/dashboard/sidebar.cljs:159
msgid "dashboard.success-move-file"
msgstr "已成功移動您的檔案"
@@ -749,6 +964,18 @@ msgstr "取消發佈資料庫"
msgid "dashboard.update-settings"
msgstr "更新設定"
+#: src/app/main/ui/dashboard/sidebar.cljs:970
+msgid "dashboard.upgrade-plan.no-limits"
+msgstr "無建立限制"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:969
+msgid "dashboard.upgrade-plan.penpot-free"
+msgstr "Penpot 免費"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:972
+msgid "dashboard.upgrade-plan.power-up"
+msgstr "提升"
+
#: src/app/main/ui/dashboard/team.cljs:909
msgid "dashboard.webhooks.active"
msgstr "正在生效"
@@ -757,6 +984,10 @@ msgstr "正在生效"
msgid "dashboard.webhooks.active.explain"
msgstr "當觸發此Webhook時,將會傳遞事件詳細信息"
+#: src/app/main/ui/dashboard/team.cljs:954
+msgid "dashboard.webhooks.cant-edit"
+msgstr "您只能刪除或修改您建立的 webhook。"
+
#: src/app/main/ui/dashboard/team.cljs:900
msgid "dashboard.webhooks.content-type"
msgstr "內容類型"
@@ -797,7 +1028,7 @@ msgstr "電子郵件"
msgid "dashboard.your-name"
msgstr "你的名字"
-#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:35, src/app/main/ui/dashboard/libraries.cljs:40, src/app/main/ui/dashboard/projects.cljs:345, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
+#: src/app/main/ui/dashboard/file_menu.cljs:39, src/app/main/ui/dashboard/fonts.cljs:36, src/app/main/ui/dashboard/libraries.cljs:55, src/app/main/ui/dashboard/projects.cljs:348, src/app/main/ui/dashboard/search.cljs:48, src/app/main/ui/dashboard/sidebar.cljs:319, src/app/main/ui/dashboard/team.cljs:531, src/app/main/ui/dashboard/team.cljs:781, src/app/main/ui/dashboard/team.cljs:1045, src/app/main/ui/dashboard/team.cljs:1092
msgid "dashboard.your-penpot"
msgstr "你的 Penpot"
@@ -813,11 +1044,15 @@ msgstr "注意"
msgid "ds.component-subtitle"
msgstr "待更新的元件:"
-#: src/app/main/ui/comments.cljs:653, src/app/main/ui/comments.cljs:686, src/app/main/ui/comments.cljs:755, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
+#: src/app/main/ui/workspace/plugins.cljs:336, src/app/main/ui/workspace/plugins.cljs:390
+msgid "ds.confirm-allow"
+msgstr "允許"
+
+#: src/app/main/ui/comments.cljs:672, src/app/main/ui/confirm.cljs:36, src/app/main/ui/workspace/plugins.cljs:330, src/app/main/ui/workspace/plugins.cljs:384
msgid "ds.confirm-cancel"
msgstr "取消"
-#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:141
+#: src/app/main/ui/confirm.cljs:37, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:148
msgid "ds.confirm-ok"
msgstr "Ok"
@@ -829,7 +1064,7 @@ msgstr "您確定嗎?"
msgid "errors.auth-provider-not-allowed"
msgstr "此設定檔不允許此驗證提供者"
-#: src/app/main/ui/auth/login.cljs:77
+#: src/app/main/ui/auth/login.cljs:78
msgid "errors.auth-provider-not-configured"
msgstr "尚未配置身份驗證供應商。"
@@ -837,11 +1072,11 @@ msgstr "尚未配置身份驗證供應商。"
msgid "errors.auth.unable-to-login"
msgstr "閣下尚未登入。"
-#: src/app/main/data/fonts.cljs:193, src/app/main/ui/dashboard/fonts.cljs:113
+#: src/app/main/data/fonts.cljs:192, src/app/main/ui/dashboard/fonts.cljs:114
msgid "errors.bad-font"
msgstr "無法載入 %s 字體"
-#: src/app/main/data/fonts.cljs:192
+#: src/app/main/data/fonts.cljs:191
msgid "errors.bad-font-plural"
msgstr "無法載入 %s 字體"
@@ -849,7 +1084,7 @@ msgstr "無法載入 %s 字體"
msgid "errors.cannot-upload"
msgstr "無法上傳此媒體檔案。"
-#: src/app/main/data/workspace.cljs:1463, src/app/main/data/workspace.cljs:1660
+#: src/app/main/data/workspace.cljs:1484, src/app/main/data/workspace.cljs:1682
msgid "errors.clipboard-not-implemented"
msgstr "你的瀏覽器無法執行此作業"
@@ -861,7 +1096,7 @@ msgstr "電子信箱已被使用"
msgid "errors.email-already-validated"
msgstr "電子信箱已完成驗證。"
-#, unused
+#: src/app/main/ui/auth/register.cljs:64, src/app/main/ui/settings/password.cljs:27
msgid "errors.email-as-password"
msgstr "你的電郵地址不能用作密碼"
@@ -885,7 +1120,25 @@ msgstr "你正開啟的檔案包含Penpot尚未支援或停用'%s' 功能。"
msgid "errors.feature-not-supported"
msgstr "不支援 「%s」功能。"
-#: src/app/main/data/auth.cljs:322, src/app/main/ui/auth/login.cljs:80, src/app/main/ui/auth/login.cljs:121, src/app/main/ui/auth/register.cljs:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
+#: 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 個字元。"
+
+#: 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
+msgid "errors.field-not-all-whitespace"
+msgstr "名稱必須包含除空格之外的字元。"
+
+#: src/app/main/errors.cljs:238
+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:66, src/app/main/ui/auth/register.cljs:207, src/app/main/ui/auth/verify_token.cljs:94, src/app/main/ui/dashboard/team.cljs:193, src/app/main/ui/onboarding/team_choice.cljs:112, src/app/main/ui/settings/access_tokens.cljs:80, src/app/main/ui/settings/feedback.cljs:49
msgid "errors.generic"
msgstr "發生了一些錯誤。"
@@ -898,8 +1151,7 @@ msgstr "顏色無效"
msgid "errors.invalid-email"
msgstr "請輸入一個有效的電郵地址"
-#: src/app/main/ui/settings/change_email.cljs
-#, unused
+#: src/app/main/ui/settings/change_email.cljs:62
msgid "errors.invalid-email-confirmation"
msgstr "電郵地址必須相同"
@@ -915,7 +1167,7 @@ msgstr "邀請無效"
msgid "errors.invite-invalid.info"
msgstr "本邀請或已被取消或過期。"
-#: src/app/main/ui/auth/login.cljs:106
+#: src/app/main/ui/auth/login.cljs:107
msgid "errors.ldap-disabled"
msgstr "LDAP 驗證已停用。"
@@ -923,6 +1175,10 @@ msgstr "LDAP 驗證已停用。"
msgid "errors.max-quote-reached"
msgstr "你已達「%s」上限。請聯絡支援。"
+#: src/app/main/ui/dashboard/team.cljs:181, src/app/main/ui/onboarding/team_choice.cljs:100
+msgid "errors.maximum-invitations-by-request-reached"
+msgstr "已達到單次請求中可邀請的電子郵件數量上限(%s)"
+
#: src/app/main/data/workspace/media.cljs:184
msgid "errors.media-too-large"
msgstr "影像檔案過大,無法插入。"
@@ -939,6 +1195,10 @@ msgstr "這好像不是個能用的影像。"
msgid "errors.member-is-muted"
msgstr "您邀請的人員設置了電子郵件靜音(垃圾郵件報告或高退件率)。"
+#: src/app/main/errors.cljs:228
+msgid "errors.migration-in-progress"
+msgstr "整合正在進行中"
+
#: src/app/main/ui/settings/password.cljs
#, unused
msgid "errors.password-invalid-confirmation"
@@ -953,14 +1213,22 @@ msgstr "密碼至少需有 8 個字元"
msgid "errors.paste-data-validation"
msgstr "剪貼簿中的資料無效"
-#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:102, src/app/main/ui/auth/login.cljs:110
+#: src/app/main/data/auth.cljs:312, src/app/main/ui/auth/login.cljs:103, src/app/main/ui/auth/login.cljs:111
msgid "errors.profile-blocked"
msgstr "已封鎖用戶"
+#: src/app/main/ui/auth/recovery_request.cljs:53, src/app/main/ui/dashboard/team.cljs:176, src/app/main/ui/dashboard/team.cljs:611, src/app/main/ui/onboarding/team_choice.cljs:96, src/app/main/ui/settings/change_email.cljs:33
+msgid "errors.profile-is-muted"
+msgstr "您的個人資料電子郵件關閉通知(垃圾郵件報告或高退回率)。"
+
#: src/app/main/data/auth.cljs:310, src/app/main/ui/auth/register.cljs:51
msgid "errors.registration-disabled"
msgstr "目前並不開放註冊。"
+#: src/app/main/errors.cljs:233
+msgid "errors.team-feature-mismatch"
+msgstr "檢測到不相容的功能“%s”"
+
#: src/app/main/ui/dashboard/sidebar.cljs:374, src/app/main/ui/dashboard/team.cljs:387
msgid "errors.team-leave.insufficient-members"
msgstr "成員不足,無法離開團隊,您可能希望將其刪除。"
@@ -981,6 +1249,14 @@ msgstr "發生了預料之外的錯誤。"
msgid "errors.unexpected-token"
msgstr "未知的 token"
+#, unused
+msgid "errors.validation"
+msgstr "驗證錯誤"
+
+#: src/app/main/errors.cljs:250
+msgid "errors.version-not-supported"
+msgstr "檔案的版本號碼不相容"
+
#: src/app/main/ui/dashboard/team.cljs:844
msgid "errors.webhooks.connection"
msgstr "連線錯誤,無法接上網址"
@@ -1009,12 +1285,11 @@ msgstr "驗證時出現未有預料的錯誤"
msgid "errors.webhooks.unexpected-status"
msgstr "未預料狀態 %s"
-#: src/app/main/ui/auth/login.cljs:114, src/app/main/ui/auth/login.cljs:118
+#: src/app/main/ui/auth/login.cljs:115, src/app/main/ui/auth/login.cljs:119
msgid "errors.wrong-credentials"
msgstr "電子郵件或密碼似乎有誤。"
-#: src/app/main/ui/settings/password.cljs
-#, unused
+#: src/app/main/ui/settings/password.cljs:24
msgid "errors.wrong-old-password"
msgstr "舊密碼不正確"
@@ -1058,11 +1333,11 @@ msgstr "協助解你的決技術問題。"
msgid "feedback.twitter-title"
msgstr "X支援帳戶"
-#: src/app/main/ui/settings/notifications.cljs:38, src/app/main/ui/settings/password.cljs:29
+#: src/app/main/ui/settings/password.cljs:29
msgid "generic.error"
msgstr "出現錯誤"
-#: src/app/main/ui/viewer/inspect/attributes/blur.cljs:26
+#: src/app/main/ui/inspect/attributes/blur.cljs:26
msgid "inspect.attributes.blur"
msgstr "模糊"
@@ -1070,31 +1345,31 @@ msgstr "模糊"
msgid "inspect.attributes.blur.value"
msgstr "數值"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:112
+#: src/app/main/ui/inspect/attributes/common.cljs:112
msgid "inspect.attributes.color.hex"
msgstr "HEX"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:114
+#: src/app/main/ui/inspect/attributes/common.cljs:114
msgid "inspect.attributes.color.hsla"
msgstr "HSLA"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:113
+#: src/app/main/ui/inspect/attributes/common.cljs:113
msgid "inspect.attributes.color.rgba"
msgstr "RGBA"
-#: src/app/main/ui/viewer/inspect/attributes/fill.cljs:57
+#: src/app/main/ui/inspect/attributes/fill.cljs:57
msgid "inspect.attributes.fill"
msgstr "填充"
-#: src/app/main/ui/viewer/inspect/attributes/common.cljs:99, src/app/main/ui/viewer/inspect/attributes/image.cljs:51
+#: src/app/main/ui/inspect/attributes/common.cljs:99, src/app/main/ui/inspect/attributes/image.cljs:51
msgid "inspect.attributes.image.download"
msgstr "下載原始圖片"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:39
+#: src/app/main/ui/inspect/attributes/image.cljs:39
msgid "inspect.attributes.image.height"
msgstr "高度"
-#: src/app/main/ui/viewer/inspect/attributes/image.cljs:32
+#: src/app/main/ui/inspect/attributes/image.cljs:32
msgid "inspect.attributes.image.width"
msgstr "寬度"
@@ -1123,19 +1398,48 @@ msgstr "圓角半徑"
msgid "inspect.attributes.layout.rotation"
msgstr "旋轉"
+#: src/app/main/ui/inspect/attributes/layout.cljs
+#, unused
+msgid "inspect.attributes.layout.top"
+msgstr "Top"
+
#: src/app/main/ui/inspect/attributes/layout.cljs
#, unused
msgid "inspect.attributes.layout.width"
msgstr "寬度"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:57
+#: src/app/main/ui/inspect/attributes/shadow.cljs:57
msgid "inspect.attributes.shadow"
msgstr "陰影"
+#: src/app/main/ui/inspect/attributes/geometry.cljs:40
+msgid "inspect.attributes.size"
+msgstr "大小和位置"
+
+#: src/app/main/ui/inspect/attributes/stroke.cljs:52
+msgid "inspect.attributes.stroke"
+msgstr "斜線"
+
+#, permanent, unused
+msgid "inspect.attributes.stroke.alignment.center"
+msgstr "置中"
+
+#, permanent, unused
+msgid "inspect.attributes.stroke.alignment.inner"
+msgstr "裡面"
+
+#, permanent, unused
+msgid "inspect.attributes.stroke.alignment.outer"
+msgstr "外面"
+
#, unused
msgid "inspect.attributes.stroke.style.dotted"
msgstr "點線"
+#, unused
+msgid "inspect.attributes.stroke.style.mixed"
+msgstr "混合"
+
#, unused
msgid "inspect.attributes.stroke.style.none"
msgstr "無"
@@ -1149,103 +1453,179 @@ msgstr "實線"
msgid "inspect.attributes.stroke.width"
msgstr "寬度"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:81, src/app/main/ui/viewer/inspect/attributes/text.cljs:194
+#: src/app/main/ui/inspect/attributes/text.cljs:83, src/app/main/ui/inspect/attributes/text.cljs:196
msgid "inspect.attributes.typography"
msgstr "字體"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:89, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:299
+#: src/app/main/ui/inspect/attributes/text.cljs:91, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:302
msgid "inspect.attributes.typography.font-family"
msgstr "字型家族"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:317
+#: src/app/main/ui/inspect/attributes/text.cljs:109, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:320
msgid "inspect.attributes.typography.font-size"
msgstr "字體大小"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:145
+#: src/app/main/ui/inspect/attributes/text.cljs:100, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:336
+msgid "inspect.attributes.typography.font-style"
+msgstr "字體樣式"
+
+#: src/app/main/ui/inspect/attributes/text.cljs:118
+msgid "inspect.attributes.typography.font-weight"
+msgstr "字體粗細"
+
+#: src/app/main/ui/inspect/attributes/text.cljs:136, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:389
+msgid "inspect.attributes.typography.letter-spacing"
+msgstr "字母間距"
+
+#: src/app/main/ui/inspect/attributes/text.cljs:127, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:372
+msgid "inspect.attributes.typography.line-height"
+msgstr "行高"
+
+#: src/app/main/ui/inspect/attributes/text.cljs:145
+msgid "inspect.attributes.typography.text-decoration"
+msgstr "文字修飾"
+
+#: src/app/main/ui/inspect/attributes/text.cljs:147
msgid "inspect.attributes.typography.text-decoration.none"
msgstr "無"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:146
+#: src/app/main/ui/inspect/attributes/text.cljs:148
msgid "inspect.attributes.typography.text-decoration.strikethrough"
msgstr "刪除線"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:147
+#: src/app/main/ui/inspect/attributes/text.cljs:149
msgid "inspect.attributes.typography.text-decoration.underline"
msgstr "底線"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:429
+#: src/app/main/ui/inspect/attributes/text.cljs:158
+msgid "inspect.attributes.typography.text-transform"
+msgstr "文字轉換"
+
+#: src/app/main/ui/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:432
msgid "inspect.attributes.typography.text-transform.lowercase"
msgstr "全小寫"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:159
+#: src/app/main/ui/inspect/attributes/text.cljs:161
msgid "inspect.attributes.typography.text-transform.none"
msgstr "無"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:160, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:425
+#: src/app/main/ui/inspect/attributes/text.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:428
msgid "inspect.attributes.typography.text-transform.titlecase"
msgstr "詞首字母大寫"
-#: src/app/main/ui/viewer/inspect/attributes/text.cljs:161, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:419
+#: src/app/main/ui/inspect/attributes/text.cljs:164
+msgid "inspect.attributes.typography.text-transform.unset"
+msgstr "取消設定"
+
+#: src/app/main/ui/inspect/attributes/text.cljs:163, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:422
msgid "inspect.attributes.typography.text-transform.uppercase"
msgstr "全大寫"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:152
+#: src/app/main/ui/inspect/right_sidebar.cljs:163
msgid "inspect.empty.help"
msgstr "如果您想瞭解更多關於設計檢查的資訊,請訪問Penpot的幫助中心"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:155
+#: src/app/main/ui/inspect/right_sidebar.cljs:166
msgid "inspect.empty.more-info"
msgstr "有關檢查的詳細資訊"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:124
+#: src/app/main/ui/inspect/right_sidebar.cljs:158
+msgid "inspect.empty.select"
+msgstr "選擇一個形狀、版面或群組來檢查它們的屬性和程式碼"
+
+#: src/app/main/ui/inspect/right_sidebar.cljs:105
+msgid "inspect.tabs.code"
+msgstr "程式碼"
+
+#: src/app/main/ui/inspect/right_sidebar.cljs:129
msgid "inspect.tabs.code.selected.circle"
msgstr "圖形"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:126
+#: src/app/main/ui/inspect/right_sidebar.cljs:130
+msgid "inspect.tabs.code.selected.component"
+msgstr "元件"
+
+#: src/app/main/ui/inspect/right_sidebar.cljs:131
msgid "inspect.tabs.code.selected.curve"
msgstr "曲線"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:127
+#: src/app/main/ui/inspect/right_sidebar.cljs:132
msgid "inspect.tabs.code.selected.frame"
msgstr "畫板"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:128
+#: src/app/main/ui/inspect/right_sidebar.cljs:133
msgid "inspect.tabs.code.selected.group"
msgstr "群組"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:129
+#: src/app/main/ui/inspect/right_sidebar.cljs:134
msgid "inspect.tabs.code.selected.image"
msgstr "圖像"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:131
+#: src/app/main/ui/inspect/right_sidebar.cljs:135
+msgid "inspect.tabs.code.selected.mask"
+msgstr "遮罩"
+
+#: src/app/main/ui/inspect/right_sidebar.cljs:124
+msgid "inspect.tabs.code.selected.multiple"
+msgstr "已選擇 %s"
+
+#: src/app/main/ui/inspect/right_sidebar.cljs:136
msgid "inspect.tabs.code.selected.path"
msgstr "路徑"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:132
+#: src/app/main/ui/inspect/right_sidebar.cljs:137
msgid "inspect.tabs.code.selected.rect"
msgstr "矩形"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:133
+#: src/app/main/ui/inspect/right_sidebar.cljs:138
msgid "inspect.tabs.code.selected.svg-raw"
msgstr "SVG"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:134
+#: src/app/main/ui/inspect/right_sidebar.cljs:139
msgid "inspect.tabs.code.selected.text"
msgstr "文字"
-#: src/app/main/ui/viewer/inspect/right_sidebar.cljs:96
+#: src/app/main/ui/inspect/right_sidebar.cljs:101
msgid "inspect.tabs.info"
msgstr "資訊"
+#: src/app/main/ui/workspace/main_menu.cljs:162
+msgid "label.shortcuts"
+msgstr "捷徑"
+
#: src/app/main/data/common.cljs:96, src/app/main/ui/dashboard/import.cljs:503
msgid "labels.accept"
msgstr "接受"
+#: src/app/main/ui/settings/sidebar.cljs:112
+msgid "labels.access-tokens"
+msgstr "存取權杖(tokens)"
+
+#: src/app/main/ui/dashboard/team.cljs:1017
+msgid "labels.active"
+msgstr "啟用"
+
+#: src/app/main/ui/workspace/libraries.cljs:176
+msgid "labels.add"
+msgstr "新增"
+
+#: src/app/main/ui/dashboard/fonts.cljs:180
+msgid "labels.add-custom-font"
+msgstr "新增自訂字體"
+
+#: src/app/main/ui/workspace/libraries.cljs:176
+msgid "labels.adding"
+msgstr "新增..."
+
#: src/app/main/ui/dashboard/team.cljs:128, src/app/main/ui/dashboard/team.cljs:313, src/app/main/ui/dashboard/team.cljs:554, src/app/main/ui/dashboard/team.cljs:584, src/app/main/ui/onboarding/team_choice.cljs:66
msgid "labels.admin"
msgstr "管理員"
-#: src/app/main/ui/workspace/tokens/context_menu.cljs:63, src/app/main/ui/workspace/tokens/context_menu.cljs:101, src/app/main/ui/workspace/tokens/token_pill.cljs:110
+#: src/app/main/ui/onboarding/questions.cljs:169
+msgid "labels.adobe-xd"
+msgstr "Adobe XD 軟體"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:66, src/app/main/ui/workspace/tokens/context_menu.cljs:100, src/app/main/ui/workspace/tokens/token_pill.cljs:118
msgid "labels.all"
msgstr "全部"
@@ -1253,6 +1633,10 @@ msgstr "全部"
msgid "labels.and"
msgstr "及"
+#: src/app/main/ui/onboarding/team_choice.cljs:186
+msgid "labels.back"
+msgstr "返回"
+
#: src/app/main/ui/static.cljs:340
msgid "labels.bad-gateway.desc-message"
msgstr "伺服器正在進行小型維修,請稍後重試。"
@@ -1261,19 +1645,35 @@ msgstr "伺服器正在進行小型維修,請稍後重試。"
msgid "labels.bad-gateway.main-message"
msgstr "無效的閘道"
-#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:177, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:506, src/app/main/ui/workspace/tokens/modals/themes.cljs:198
+#: src/app/main/data/common.cljs:135, src/app/main/ui/dashboard/change_owner.cljs:66, src/app/main/ui/dashboard/import.cljs:489, src/app/main/ui/dashboard/team.cljs:916, src/app/main/ui/delete_shared.cljs:35, src/app/main/ui/exports/assets.cljs:161, src/app/main/ui/exports/files.cljs:192, src/app/main/ui/settings/access_tokens.cljs:176, src/app/main/ui/viewer/share_link.cljs:204, src/app/main/ui/workspace/sidebar/assets/groups.cljs:145, src/app/main/ui/workspace/tokens/form.cljs:572, src/app/main/ui/workspace/tokens/modals/themes.cljs:234
msgid "labels.cancel"
msgstr "取消"
-#: src/app/main/ui/dashboard/comments.cljs:87, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:172, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:125, src/app/main/ui/workspace/libraries.cljs:645, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:275, src/app/main/ui/workspace/tokens/modals/themes.cljs:396, src/app/main/ui/workspace/tokens/modals.cljs:64
+#: src/app/main/ui/onboarding/questions.cljs:171
+msgid "labels.canva"
+msgstr "油畫"
+
+#: src/app/main/ui/dashboard/comments.cljs:102, src/app/main/ui/dashboard/projects.cljs:99, src/app/main/ui/exports/files.cljs:210, src/app/main/ui/settings/access_tokens.cljs:171, src/app/main/ui/viewer/login.cljs:71, src/app/main/ui/viewer/share_link.cljs:175, src/app/main/ui/workspace/comments.cljs:128, src/app/main/ui/workspace/libraries.cljs:627, src/app/main/ui/workspace/sidebar/debug.cljs:40, src/app/main/ui/workspace/sidebar/layers.cljs:300, src/app/main/ui/workspace/sidebar.cljs:276, src/app/main/ui/workspace/tokens/modals/themes.cljs:59, src/app/main/ui/workspace/tokens/modals/themes.cljs:166, src/app/main/ui/workspace/tokens/modals/themes.cljs:446, src/app/main/ui/workspace/tokens/modals.cljs:64
msgid "labels.close"
msgstr "關閉"
-#: src/app/main/ui/viewer/comments.cljs:70, src/app/main/ui/workspace/comments.cljs:123
+#: src/app/main/ui/workspace/tokens/sets.cljs:219
+msgid "labels.collapse"
+msgstr "摺疊"
+
+#: src/app/main/ui/comments.cljs:881
+msgid "labels.comment"
+msgstr "留言"
+
+#: src/app/main/ui/comments.cljs:885
+msgid "labels.comment.mark-as-solved"
+msgstr "標記為已解決"
+
+#: src/app/main/ui/viewer/comments.cljs:71, src/app/main/ui/workspace/comments.cljs:126
msgid "labels.comments"
msgstr "評論"
-#: src/app/main/ui/dashboard/sidebar.cljs:1016, src/app/main/ui/workspace/main_menu.cljs:114
+#: src/app/main/ui/dashboard/sidebar.cljs:1017, src/app/main/ui/workspace/main_menu.cljs:114
msgid "labels.community"
msgstr "社群"
@@ -1281,15 +1681,27 @@ msgstr "社群"
msgid "labels.confirm-password"
msgstr "確認密碼"
-#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:101
+#: src/app/main/ui/dashboard/import.cljs:495, src/app/main/ui/exports/files.cljs:197, src/app/main/ui/onboarding/newsletter.cljs:106
msgid "labels.continue"
msgstr "繼續"
+#, unused
+msgid "labels.continue-with"
+msgstr "繼續"
+
#: src/app/main/ui/viewer/login.cljs:69
msgid "labels.continue-with-penpot"
msgstr "以Penpot帳戶繼續"
-#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:190
+#: src/app/main/ui/dashboard/team.cljs:683
+msgid "labels.copy-invitation-link"
+msgstr "複製連結"
+
+#: src/app/main/ui/static.cljs:62
+msgid "labels.copyright"
+msgstr "Kaleidos @2025"
+
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:197
msgid "labels.create"
msgstr "建立"
@@ -1301,14 +1713,26 @@ msgstr "建立新團隊"
msgid "labels.create-team.placeholder"
msgstr "輸入新團隊名稱"
+#, unused
+msgid "labels.custom-fonts"
+msgstr "自訂字體"
+
#: src/app/main/ui/settings/sidebar.cljs:80
msgid "labels.dashboard"
msgstr "控制台"
-#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:259, src/app/main/ui/dashboard/fonts.cljs:335, src/app/main/ui/dashboard/fonts.cljs:349, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:198, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:209, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:500, src/app/main/ui/workspace/tokens/modals/themes.cljs:365, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:52
+#: src/app/main/ui/dashboard/file_menu.cljs:326, src/app/main/ui/dashboard/fonts.cljs:261, src/app/main/ui/dashboard/fonts.cljs:337, src/app/main/ui/dashboard/fonts.cljs:351, src/app/main/ui/dashboard/project_menu.cljs:115, src/app/main/ui/dashboard/team.cljs:952, src/app/main/ui/settings/access_tokens.cljs:197, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:216, src/app/main/ui/workspace/sidebar/versions.cljs:136, src/app/main/ui/workspace/tokens/form.cljs:565, src/app/main/ui/workspace/tokens/modals/themes.cljs:414, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:56
msgid "labels.delete"
msgstr "刪除"
+#: src/app/main/ui/comments.cljs:976
+msgid "labels.delete-comment"
+msgstr "刪除留言"
+
+#: src/app/main/ui/comments.cljs:899
+msgid "labels.delete-comment-thread"
+msgstr "刪除 thread"
+
#: src/app/main/ui/dashboard/team.cljs:689
msgid "labels.delete-invitation"
msgstr "刪除邀請"
@@ -1317,11 +1741,23 @@ msgstr "刪除邀請"
msgid "labels.delete-multi-files"
msgstr "刪除 %s 檔案"
-#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:227, src/app/main/ui/dashboard/projects.cljs:231, src/app/main/ui/dashboard/sidebar.cljs:814
+#: src/app/main/ui/onboarding/questions.cljs:246
+msgid "labels.developer"
+msgstr "開發者"
+
+#: src/app/main/ui/onboarding/questions.cljs:260
+msgid "labels.director"
+msgstr "導演"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:206
+msgid "labels.discard"
+msgstr "捨棄"
+
+#: src/app/main/ui/dashboard/file_menu.cljs:29, src/app/main/ui/dashboard/files.cljs:79, src/app/main/ui/dashboard/files.cljs:177, src/app/main/ui/dashboard/projects.cljs:228, src/app/main/ui/dashboard/projects.cljs:232, src/app/main/ui/dashboard/sidebar.cljs:814
msgid "labels.drafts"
msgstr "草稿"
-#: src/app/main/ui/comments.cljs:903, src/app/main/ui/dashboard/fonts.cljs:256, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:205, src/app/main/ui/workspace/tokens/sidebar.cljs:198
+#: src/app/main/ui/comments.cljs:972, src/app/main/ui/dashboard/fonts.cljs:258, src/app/main/ui/dashboard/team.cljs:950, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:212, src/app/main/ui/workspace/tokens/sidebar.cljs:197
msgid "labels.edit"
msgstr "編輯"
@@ -1333,11 +1769,15 @@ msgstr "編輯檔案"
msgid "labels.editor"
msgstr "編輯者"
+#: src/app/main/ui/onboarding/questions.cljs:404
+msgid "labels.event"
+msgstr "事件"
+
#: src/app/main/ui/dashboard/team.cljs:705
msgid "labels.expired-invitation"
msgstr "過期"
-#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:359
+#: src/app/main/ui/exports/assets.cljs:170, src/app/main/ui/workspace/tokens/sidebar.cljs:418
msgid "labels.export"
msgstr "匯出"
@@ -1349,23 +1789,39 @@ msgstr "已停用迴響"
msgid "labels.feedback-sent"
msgstr "已發送迴響"
-#: src/app/main/ui/dashboard/fonts.cljs:422
+#: src/app/main/ui/onboarding/questions.cljs:165
+msgid "labels.figma"
+msgstr "Figma"
+
+#: src/app/main/ui/dashboard/fonts.cljs:424
msgid "labels.font-family"
msgstr "字型家族"
-#: src/app/main/ui/dashboard/fonts.cljs:423
+#, unused
+msgid "labels.font-providers"
+msgstr "字體提供者"
+
+#: src/app/main/ui/dashboard/fonts.cljs:425
msgid "labels.font-variants"
msgstr "樣式"
-#: src/app/main/ui/dashboard/fonts.cljs:54, src/app/main/ui/dashboard/sidebar.cljs:834
+#: src/app/main/ui/dashboard/fonts.cljs:55, src/app/main/ui/dashboard/sidebar.cljs:834
msgid "labels.fonts"
msgstr "字型"
-#: src/app/main/ui/dashboard/sidebar.cljs:1046, src/app/main/ui/workspace/main_menu.cljs:146
+#: src/app/main/ui/onboarding/questions.cljs:259
+msgid "labels.founder"
+msgstr "執行長或創辦人"
+
+#: src/app/main/ui/onboarding/questions.cljs:258
+msgid "labels.freelancer"
+msgstr "自由工作者"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:1047, src/app/main/ui/workspace/main_menu.cljs:146
msgid "labels.github-repo"
msgstr "Github 倉庫"
-#: src/app/main/ui/dashboard/sidebar.cljs:1063, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
+#: src/app/main/ui/dashboard/sidebar.cljs:1064, src/app/main/ui/settings/sidebar.cljs:125, src/app/main/ui/workspace/main_menu.cljs:175
msgid "labels.give-feedback"
msgstr "給予迴響"
@@ -1373,22 +1829,42 @@ msgstr "給予迴響"
msgid "labels.go-back"
msgstr "返回"
-#: src/app/main/ui/dashboard/sidebar.cljs:1009, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1079, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1104, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1290
+#: src/app/main/ui/onboarding/questions.cljs:248
+msgid "labels.graphic-design"
+msgstr "平面設計"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:1010, src/app/main/ui/workspace/main_menu.cljs:106, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1088, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1113, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1299
msgid "labels.help-center"
msgstr "説明中心"
-#: src/app/main/ui/viewer/comments.cljs:103, src/app/main/ui/workspace/comments.cljs:72
+#: src/app/main/ui/viewer/comments.cljs:104, src/app/main/ui/workspace/comments.cljs:73
msgid "labels.hide-resolved-comments"
msgstr "隱藏已解決的評論"
-#: src/app/main/ui/dashboard/fonts.cljs:420
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:413
+msgid "labels.import"
+msgstr "匯入"
+
+#: src/app/main/ui/dashboard/team.cljs:1018
+msgid "labels.inactive"
+msgstr "未啟用"
+
+#: src/app/main/ui/dashboard/fonts.cljs:422
msgid "labels.installed-fonts"
msgstr "已安裝的字體"
+#: src/app/main/ui/static.cljs:424
+msgid "labels.internal-error.desc-message"
+msgstr "發生了一些狀況。請重試該操作,如果問題仍然存在,請聯絡支援人員。"
+
#: src/app/main/ui/static.cljs:423
msgid "labels.internal-error.main-message"
msgstr "內部錯誤"
+#: src/app/main/ui/onboarding/questions.cljs:173
+msgid "labels.invision"
+msgstr "InVision 軟體"
+
#: src/app/main/ui/dashboard/sidebar.cljs:525, src/app/main/ui/dashboard/team.cljs:96, src/app/main/ui/dashboard/team.cljs:104, src/app/main/ui/dashboard/team.cljs:760
msgid "labels.invitations"
msgstr "邀請"
@@ -1397,14 +1873,30 @@ msgstr "邀請"
msgid "labels.language"
msgstr "語言"
+#: src/app/main/ui/dashboard/sidebar.cljs:1040, src/app/main/ui/workspace/main_menu.cljs:138
+msgid "labels.libraries-and-templates"
+msgstr "圖庫與範本"
+
+#: src/app/main/ui/auth/verify_token.cljs:100, src/app/main/ui/dashboard/grid.cljs:115, src/app/main/ui/dashboard/grid.cljs:134, src/app/main/ui/dashboard/import.cljs:253, src/app/main/ui/dashboard/placeholder.cljs:98, src/app/main/ui/ds/product/loader.cljs:85, src/app/main/ui/exports/files.cljs:62, src/app/main/ui/viewer.cljs:643, src/app/main/ui/workspace.cljs:118, src/app/main/ui.cljs:66, src/app/main/ui.cljs:104, src/app/main/ui.cljs:123
+msgid "labels.loading"
+msgstr "載入中…"
+
#: src/app/main/ui/viewer/header.cljs:210
msgid "labels.log-or-sign"
msgstr "登錄或註冊"
-#: src/app/main/ui/dashboard/sidebar.cljs:1071
+#: src/app/main/ui/static.cljs:56, src/app/main/ui/static.cljs:134
+msgid "labels.login"
+msgstr "登入"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:1072
msgid "labels.logout"
msgstr "登出"
+#: src/app/main/ui/onboarding/questions.cljs:249
+msgid "labels.marketing"
+msgstr "行銷"
+
#: src/app/main/ui/dashboard/team.cljs:506
msgid "labels.member"
msgstr "成員"
@@ -1417,10 +1909,23 @@ msgstr "成員"
msgid "labels.new-password"
msgstr "新密碼"
+#: src/app/main/ui/dashboard/templates.cljs:289, src/app/main/ui/onboarding/questions.cljs:55, 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
+msgid "labels.no-comments-available"
+msgstr "你都瞭解了!新的評論通知將顯示在這裡。"
+
#: src/app/main/ui/dashboard/team.cljs:740
msgid "labels.no-invitations"
msgstr "沒有待處理的邀請。"
+#: src/app/main/ui/dashboard/team.cljs:742
+#, markdown
+msgid "labels.no-invitations-hint"
+msgstr "點擊**邀請人員(Invite People)**按鈕,邀請人員加入團隊。"
+
#: src/app/main/ui/static.cljs
#, unused
msgid "labels.not-found.desc-message"
@@ -1430,16 +1935,29 @@ msgstr "此頁面可能不存在,或者您無權訪問。"
msgid "labels.not-found.main-message"
msgstr "喔不!"
-#: src/app/main/ui/dashboard/projects.cljs:238, src/app/main/ui/dashboard/team.cljs:1147
+#: src/app/main/ui/settings/sidebar.cljs:99
+msgid "labels.notifications"
+msgstr "通知"
+
+#: src/app/main/ui/dashboard/projects.cljs:239, src/app/main/ui/dashboard/team.cljs:1147
msgid "labels.num-of-files"
msgid_plural "labels.num-of-files"
msgstr[0] "%s 個檔案"
+#: src/app/main/ui/viewer/thumbnails.cljs:82
+msgid "labels.num-of-frames"
+msgid_plural "labels.num-of-frames"
+msgstr[0] "1 版面"
+
#: src/app/main/ui/dashboard/team.cljs:1142
msgid "labels.num-of-projects"
msgid_plural "labels.num-of-projects"
msgstr[0] "%s 個專案"
+#, unused
+msgid "labels.ok"
+msgstr "OK"
+
#: src/app/main/ui/settings/password.cljs:77
msgid "labels.old-password"
msgstr "原有密碼"
@@ -1449,10 +1967,22 @@ msgstr "原有密碼"
msgid "labels.only-yours"
msgstr "只有你"
+#: src/app/main/ui/comments.cljs:891, src/app/main/ui/comments.cljs:955, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:293, src/app/main/ui/workspace/sidebar/options/menus/text.cljs:322
+msgid "labels.options"
+msgstr "選項"
+
#, unused
msgid "labels.or"
msgstr "或"
+#: src/app/main/ui/onboarding/questions.cljs:140, src/app/main/ui/onboarding/questions.cljs:209, src/app/main/ui/onboarding/questions.cljs:298, src/app/main/ui/onboarding/questions.cljs:312, src/app/main/ui/onboarding/questions.cljs:383, src/app/main/ui/onboarding/questions.cljs:439
+msgid "labels.other"
+msgstr "其他(請註明)"
+
+#: src/app/main/ui/onboarding/questions.cljs:100, src/app/main/ui/onboarding/questions.cljs:175, src/app/main/ui/onboarding/questions.cljs:251, src/app/main/ui/onboarding/questions.cljs:261, src/app/main/ui/onboarding/questions.cljs:351, src/app/main/ui/onboarding/questions.cljs:408
+msgid "labels.other-short"
+msgstr "其他"
+
#: src/app/main/ui/dashboard/team.cljs:317, src/app/main/ui/dashboard/team.cljs:553, src/app/main/ui/dashboard/team.cljs:1128
msgid "labels.owner"
msgstr "擁有者"
@@ -1465,6 +1995,22 @@ msgstr "密碼"
msgid "labels.pending-invitation"
msgstr "待辦"
+#: src/app/main/ui/comments.cljs:678
+msgid "labels.post"
+msgstr "發佈"
+
+#: src/app/main/ui/onboarding/questions.cljs:51, src/app/main/ui/viewer.cljs:105
+msgid "labels.previous"
+msgstr "先前"
+
+#: src/app/main/ui/onboarding/questions.cljs:245
+msgid "labels.product-design"
+msgstr "產品或使用者體驗(UX)設計"
+
+#: src/app/main/ui/onboarding/questions.cljs:250
+msgid "labels.product-management"
+msgstr "產品管理"
+
#: src/app/main/ui/settings/profile.cljs:128, src/app/main/ui/settings/sidebar.cljs:89
msgid "labels.profile"
msgstr "個人檔案"
@@ -1473,7 +2019,7 @@ msgstr "個人檔案"
msgid "labels.projects"
msgstr "專案"
-#: src/app/main/ui/dashboard/sidebar.cljs:1029, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
+#: src/app/main/ui/dashboard/sidebar.cljs:1030, src/app/main/ui/settings/sidebar.cljs:118, src/app/main/ui/workspace/main_menu.cljs:130
msgid "labels.release-notes"
msgstr "更新日誌"
@@ -1491,7 +2037,7 @@ msgstr "移除"
msgid "labels.remove-member"
msgstr "移除團隊成員"
-#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:51
+#: src/app/main/ui/dashboard/file_menu.cljs:278, src/app/main/ui/dashboard/project_menu.cljs:88, src/app/main/ui/dashboard/sidebar.cljs:548, src/app/main/ui/workspace/sidebar/assets/groups.cljs:153, src/app/main/ui/workspace/sidebar/versions.cljs:130, src/app/main/ui/workspace/tokens/sets_context_menu.cljs:55
msgid "labels.rename"
msgstr "重新命名"
@@ -1499,10 +2045,34 @@ msgstr "重新命名"
msgid "labels.rename-team"
msgstr "重新命名團隊"
+#: src/app/main/ui/comments.cljs:641
+msgid "labels.replies"
+msgstr "回覆"
+
+#: src/app/main/ui/comments.cljs:646
+msgid "labels.replies.new"
+msgstr "新回覆"
+
+#: src/app/main/ui/comments.cljs:640
+msgid "labels.reply"
+msgstr "回覆"
+
+#: src/app/main/ui/comments.cljs:645
+msgid "labels.reply.new"
+msgstr "新回覆"
+
+#: src/app/main/ui/comments.cljs:721
+msgid "labels.reply.thread"
+msgstr "回覆"
+
#: src/app/main/ui/dashboard/team.cljs:686
msgid "labels.resend-invitation"
msgstr "重新發送邀請"
+#: src/app/main/ui/workspace/sidebar/versions.cljs:133, src/app/main/ui/workspace/sidebar/versions.cljs:263
+msgid "labels.restore"
+msgstr "還原"
+
#: src/app/main/ui/static.cljs:342, src/app/main/ui/static.cljs:351, src/app/main/ui/static.cljs:428
msgid "labels.retry"
msgstr "重試"
@@ -1511,14 +2081,22 @@ msgstr "重試"
msgid "labels.role"
msgstr "角色"
-#: src/app/main/ui/dashboard/fonts.cljs:385, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:191, src/app/main/ui/workspace/tokens/form.cljs:510
+#: src/app/main/ui/dashboard/fonts.cljs:387, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:198, src/app/main/ui/workspace/tokens/form.cljs:577
msgid "labels.save"
msgstr "儲存"
-#: src/app/main/ui/dashboard/fonts.cljs:425
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:506
+msgid "labels.search"
+msgstr "搜尋"
+
+#: src/app/main/ui/dashboard/fonts.cljs:427
msgid "labels.search-font"
msgstr "搜尋字體"
+#: src/app/main/ui/onboarding/questions.cljs:85, src/app/main/ui/onboarding/questions.cljs:244, src/app/main/ui/onboarding/questions.cljs:255, src/app/main/ui/onboarding/questions.cljs:265
+msgid "labels.select-option"
+msgstr "選擇選項"
+
#: src/app/main/ui/settings/feedback.cljs:79
msgid "labels.send"
msgstr "傳送"
@@ -1535,31 +2113,95 @@ msgstr "系統正在進行定期保養。"
msgid "labels.service-unavailable.main-message"
msgstr "暫停服務"
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:247
+msgid "labels.sets"
+msgstr "套"
+
#: src/app/main/ui/dashboard/sidebar.cljs:539, src/app/main/ui/dashboard/team.cljs:95, src/app/main/ui/dashboard/team.cljs:109, src/app/main/ui/settings/options.cljs:80, src/app/main/ui/settings/sidebar.cljs:105
msgid "labels.settings"
msgstr "設定"
+#: src/app/main/ui/viewer/header.cljs:206
+msgid "labels.share"
+msgstr "分享"
+
+#, unused
+msgid "labels.share-prototype"
+msgstr "分享原型"
+
#: src/app/main/ui/dashboard/sidebar.cljs:823
msgid "labels.shared-libraries"
msgstr "檔案庫"
-#: src/app/main/ui/viewer/comments.cljs:91, src/app/main/ui/workspace/comments.cljs:60, src/app/main/ui/workspace/comments.cljs:135
+#: src/app/main/ui/viewer/comments.cljs:83, src/app/main/ui/workspace/comments.cljs:55, src/app/main/ui/workspace/comments.cljs:137
+msgid "labels.show-all-comments"
+msgstr "顯示所有留言"
+
+#: src/app/main/ui/viewer/comments.cljs:116
+msgid "labels.show-comments-list"
+msgstr "顯示留言列表"
+
+#: src/app/main/ui/workspace/comments.cljs:67, src/app/main/ui/workspace/comments.cljs:139
+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
msgid "labels.show-your-comments"
msgstr "僅顯示您的評論"
-#: src/app/main/ui/dashboard/sidebar.cljs:1023, src/app/main/ui/workspace/main_menu.cljs:122
+#: src/app/main/ui/onboarding/questions.cljs:167
+msgid "labels.sketch"
+msgstr "sketch"
+
+#: src/app/main/ui/onboarding/questions.cljs:56
+msgid "labels.start"
+msgstr "開始"
+
+#: src/app/main/ui/dashboard/team.cljs:762
+msgid "labels.status"
+msgstr "狀態"
+
+#: src/app/main/ui/onboarding/questions.cljs:247
+msgid "labels.student-teacher"
+msgstr "學生或老師"
+
+#: src/app/main/ui/onboarding/questions.cljs:256
+msgid "labels.team-leader"
+msgstr "隊長"
+
+#: src/app/main/ui/onboarding/questions.cljs:257
+msgid "labels.team-member"
+msgstr "隊員"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:182
+msgid "labels.themes"
+msgstr "佈景主題"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:1024, src/app/main/ui/workspace/main_menu.cljs:122
msgid "labels.tutorials"
msgstr "教學"
+#: src/app/main/ui/dashboard/file_menu.cljs:264
+msgid "labels.unpublish-multi-files"
+msgstr "取消發布 %s 個文件"
+
#: src/app/main/ui/settings/profile.cljs:111
msgid "labels.update"
msgstr "更新"
-#: src/app/main/ui/dashboard/fonts.cljs:245
+#: src/app/main/ui/dashboard/team_form.cljs:122
+msgid "labels.update-team"
+msgstr "更新團隊"
+
+#: src/app/main/ui/dashboard/fonts.cljs:247
msgid "labels.upload"
msgstr "上傳"
-#: src/app/main/ui/dashboard/fonts.cljs:244
+#: src/app/main/ui/dashboard/fonts.cljs:174
+msgid "labels.upload-custom-fonts"
+msgstr "上傳自訂字體"
+
+#: src/app/main/ui/dashboard/fonts.cljs:246
msgid "labels.uploading"
msgstr "正在上傳…"
@@ -1575,18 +2217,80 @@ msgstr "檢視者"
msgid "labels.webhooks"
msgstr "Webhook"
+#: src/app/main/ui/comments.cljs:818
+msgid "labels.write-new-comment"
+msgstr "撰寫新留言"
+
#: src/app/main/ui/dashboard/team.cljs:262
msgid "labels.you"
msgstr "(你)"
-#: src/app/main/ui/dashboard/sidebar.cljs:999
+#: src/app/main/ui/dashboard/sidebar.cljs:1000
msgid "labels.your-account"
msgstr "你的帳戶"
+#: src/app/main/ui/onboarding/questions.cljs:403
+msgid "labels.youtube"
+msgstr "YouTube"
+
+#: src/app/main/ui/workspace/colorpicker.cljs:474, src/app/main/ui/workspace/colorpicker.cljs:475, src/app/main/ui/workspace/colorpicker.cljs:477
+msgid "media.choose-image"
+msgstr "選擇圖片"
+
+#: src/app/main/ui/workspace/colorpicker.cljs:241
+msgid "media.gradient"
+msgstr "坡度"
+
+#: src/app/main/data/workspace/media.cljs:274, src/app/main/ui/components/color_bullet.cljs:34, src/app/main/ui/components/color_bullet.cljs:47, src/app/main/ui/ds/utilities/swatch.cljs:40, src/app/main/ui/ds/utilities/swatch.cljs:53, src/app/main/ui/inspect/attributes/common.cljs:66, src/app/main/ui/workspace/colorpicker.cljs:243, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:239
+msgid "media.image"
+msgstr "圖片"
+
+#: src/app/main/ui/inspect/attributes/common.cljs:77
+msgid "media.image.short"
+msgstr "圖"
+
+#: src/app/main/ui/workspace/colorpicker.cljs:467
+msgid "media.keep-aspect-ratio"
+msgstr "維持長寬比"
+
+#: src/app/main/ui/workspace/colorpicker.cljs:228
+#, unused
+msgid "media.linear"
+msgstr "線性 (Linear)"
+
#: src/app/main/data/media.cljs:49, src/app/main/data/workspace/media.cljs:222, src/app/main/data/workspace/media.cljs:460
msgid "media.loading"
msgstr "正在載入圖片…"
+#: src/app/main/ui/workspace/colorpicker.cljs:229
+#, unused
+msgid "media.radial"
+msgstr "放射狀的"
+
+#: src/app/main/ui/workspace/colorpicker.cljs:239
+msgid "media.solid"
+msgstr "實心的"
+
+#: src/app/main/data/common.cljs:134
+msgid "modals.add-shared-confirm-empty.hint"
+msgstr "你的圖庫是空的。一旦新增為共享圖庫,您建立的資產將可在其餘文件中使用。您確定要發布它嗎?"
+
+#: src/app/main/data/common.cljs:136
+msgid "modals.add-shared-confirm.accept"
+msgstr "新增為共享圖庫"
+
+#: src/app/main/data/common.cljs:134
+msgid "modals.add-shared-confirm.hint"
+msgstr "一旦新增為共享圖庫,該文件圖庫的資產將可供您的其餘文件使用。"
+
+#: src/app/main/data/common.cljs:133
+msgid "modals.add-shared-confirm.message"
+msgstr "增加“%s”作為共享圖庫"
+
+#: src/app/main/ui/workspace/nudge.cljs:60
+msgid "modals.big-nudge"
+msgstr "大距離微調"
+
#: src/app/main/ui/settings/change_email.cljs:111
msgid "modals.change-email.confirm-email"
msgstr "驗證新電子郵件"
@@ -1607,6 +2311,30 @@ msgstr "更改電子郵件"
msgid "modals.change-email.title"
msgstr "更改你的電郵"
+#: src/app/main/ui/settings/access_tokens.cljs:153, src/app/main/ui/settings/access_tokens.cljs:159
+msgid "modals.create-access-token.copy-token"
+msgstr "複製權杖(token)"
+
+#: src/app/main/ui/settings/access_tokens.cljs:131
+msgid "modals.create-access-token.expiration-date.label"
+msgstr "截止日期"
+
+#: src/app/main/ui/settings/access_tokens.cljs:125
+msgid "modals.create-access-token.name.label"
+msgstr "名稱"
+
+#: src/app/main/ui/settings/access_tokens.cljs:127
+msgid "modals.create-access-token.name.placeholder"
+msgstr "該名稱可以幫助了解權杖(token)的用途"
+
+#: src/app/main/ui/settings/access_tokens.cljs:179
+msgid "modals.create-access-token.submit-label"
+msgstr "建立權杖(token)"
+
+#: src/app/main/ui/settings/access_tokens.cljs:112
+msgid "modals.create-access-token.title"
+msgstr "產生存取權杖(token)"
+
#: src/app/main/ui/dashboard/team.cljs:921
msgid "modals.create-webhook.submit-label"
msgstr "設置Webhook"
@@ -1623,6 +2351,22 @@ msgstr "訊息負載網址"
msgid "modals.create-webhook.url.placeholder"
msgstr "https://example.com/postreceive"
+#: src/app/main/ui/settings/access_tokens.cljs:259
+msgid "modals.delete-acces-token.accept"
+msgstr "刪除權杖(token)"
+
+#: src/app/main/ui/settings/access_tokens.cljs:258
+msgid "modals.delete-acces-token.message"
+msgstr "您確定要刪除此權杖(token)嗎?"
+
+#: src/app/main/ui/settings/access_tokens.cljs:257
+msgid "modals.delete-acces-token.title"
+msgstr "刪除權杖(token)"
+
+#: src/app/main/ui/settings/delete_account.cljs:59
+msgid "modals.delete-account.cancel"
+msgstr "取消並保留我的帳戶"
+
#: src/app/main/ui/settings/delete_account.cljs:64
msgid "modals.delete-account.confirm"
msgstr "是的,請刪除我的帳號"
@@ -1635,6 +2379,26 @@ msgstr "刪除你的帳戶後,你會失去現有專案及檔案。"
msgid "modals.delete-account.title"
msgstr "您確定要刪除您的帳號嗎?"
+#: src/app/main/ui/comments.cljs:869
+msgid "modals.delete-comment-thread.accept"
+msgstr "刪除對話"
+
+#: src/app/main/ui/comments.cljs:868
+msgid "modals.delete-comment-thread.message"
+msgstr "您確定要刪除此對話嗎?此主題下的所有留言都將被刪除。"
+
+#: src/app/main/ui/comments.cljs:867
+msgid "modals.delete-comment-thread.title"
+msgstr "刪除對話"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:147
+msgid "modals.delete-component-annotation.message"
+msgstr "您確實要刪除該註釋嗎?"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:146
+msgid "modals.delete-component-annotation.title"
+msgstr "刪除註釋"
+
#: src/app/main/ui/dashboard/file_menu.cljs:124
msgid "modals.delete-file-confirm.accept"
msgstr "刪除檔案"
@@ -1659,14 +2423,30 @@ msgstr "您確定要刪除 %s 個檔案嗎?"
msgid "modals.delete-file-multi-confirm.title"
msgstr "正在刪除 %s 個檔案"
-#: src/app/main/ui/dashboard/fonts.cljs:347
+#: src/app/main/ui/dashboard/fonts.cljs:350
+msgid "modals.delete-font-variant.message"
+msgstr "您確實要刪除該字體樣式嗎?如果在文件中使用,它將不會加載。"
+
+#: src/app/main/ui/dashboard/fonts.cljs:349
msgid "modals.delete-font-variant.title"
msgstr "正在刪除字體樣式"
-#: src/app/main/ui/workspace/context_menu.cljs:627, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
+#: src/app/main/ui/dashboard/fonts.cljs:336
+msgid "modals.delete-font.message"
+msgstr "您確實要刪除該字體嗎?如果在文件中使用,它將不會加載。"
+
+#: src/app/main/ui/dashboard/fonts.cljs:335
+msgid "modals.delete-font.title"
+msgstr "刪除字型"
+
+#: src/app/main/ui/workspace/context_menu.cljs:643, src/app/main/ui/workspace/sidebar/sitemap.cljs:71
msgid "modals.delete-page.body"
msgstr "您確定要刪除這個頁面嗎?"
+#: src/app/main/ui/workspace/context_menu.cljs:642, src/app/main/ui/workspace/sidebar/sitemap.cljs:70
+msgid "modals.delete-page.title"
+msgstr "刪除頁面"
+
#: src/app/main/ui/dashboard/project_menu.cljs:71
msgid "modals.delete-project-confirm.accept"
msgstr "刪除專案"
@@ -1684,10 +2464,34 @@ msgid "modals.delete-shared-confirm.accept"
msgid_plural "modals.delete-shared-confirm.accept"
msgstr[0] "刪除檔案"
+#: src/app/main/ui/delete_shared.cljs:55
+msgid "modals.delete-shared-confirm.activated.no-files-message"
+msgid_plural "modals.delete-shared-confirm.activated.no-files-message"
+msgstr[0] "它們未在任何文件中啟用。"
+
+#: src/app/main/ui/delete_shared.cljs:57
+msgid "modals.delete-shared-confirm.activated.scd-message"
+msgid_plural "modals.delete-shared-confirm.activated.scd-message"
+msgstr[0] "此圖庫在此處啟動: "
+
+#: src/app/main/ui/delete_shared.cljs:46
+msgid "modals.delete-shared-confirm.message"
+msgid_plural "modals.delete-shared-confirm.message"
+msgstr[0] "您確實要刪除文件嗎?"
+
+#: src/app/main/ui/delete_shared.cljs:41
+msgid "modals.delete-shared-confirm.title"
+msgid_plural "modals.delete-shared-confirm.title"
+msgstr[0] "刪除文件"
+
#: src/app/main/ui/dashboard/sidebar.cljs:444
msgid "modals.delete-team-confirm.accept"
msgstr "刪除團體"
+#: src/app/main/ui/dashboard/sidebar.cljs:443
+msgid "modals.delete-team-confirm.message"
+msgstr "您確定要刪除該團隊嗎?與團隊相關的所有專案和文件將永久刪除。"
+
#: src/app/main/ui/dashboard/sidebar.cljs:442
msgid "modals.delete-team-confirm.title"
msgstr "正在刪除團體"
@@ -1696,10 +2500,27 @@ msgstr "正在刪除團體"
msgid "modals.delete-team-member-confirm.accept"
msgstr "刪除成員"
+#: src/app/main/ui/dashboard/team.cljs:454
+msgid "modals.delete-team-member-confirm.message"
+msgstr "您確定要從團隊中刪除該成員嗎?"
+
#: src/app/main/ui/dashboard/team.cljs:453
msgid "modals.delete-team-member-confirm.title"
msgstr "刪除團隊成員"
+#: src/app/main/ui/delete_shared.cljs:59
+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:991
+msgid "modals.delete-webhook.accept"
+msgstr "刪除 webhook"
+
+#: src/app/main/ui/dashboard/team.cljs:990
+msgid "modals.delete-webhook.message"
+msgstr "您確定要刪除此 webhook 嗎?"
+
#: src/app/main/ui/dashboard/team.cljs:989
msgid "modals.delete-webhook.title"
msgstr "刪除 Webhook"
@@ -1712,10 +2533,50 @@ msgstr "修改 Webhook"
msgid "modals.edit-webhook.title"
msgstr "修改 Webhook"
+#: src/app/main/ui/dashboard/team.cljs:243
+msgid "modals.invite-member-confirm.accept"
+msgstr "發送邀請"
+
+#: src/app/main/ui/dashboard/team.cljs:239, src/app/main/ui/onboarding/team_choice.cljs:179
+msgid "modals.invite-member.emails"
+msgstr "電子郵件,以逗號分隔"
+
+#: src/app/main/ui/dashboard/team.cljs:223
+msgid "modals.invite-member.repeated-invitation"
+msgstr "有些電子郵件來自現任團隊成員。他們的邀請將不會被發送。"
+
+#: src/app/main/ui/dashboard/team.cljs:216
+msgid "modals.invite-team-member.text"
+msgstr "您可以邀請成員加入團隊,以便他們可以存取此文件和所有團隊文件。"
+
+#: src/app/main/ui/dashboard/team.cljs:212
+msgid "modals.invite-team-member.title"
+msgstr "邀請成員加入團隊"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:432, src/app/main/ui/dashboard/team.cljs:421
+msgid "modals.leave-and-close-confirm.hint"
+msgstr "由於您是該團隊的唯一成員,因此該團隊及其專案和文件將一起被刪除。"
+
+#: src/app/main/ui/dashboard/sidebar.cljs:431, src/app/main/ui/dashboard/team.cljs:420
+msgid "modals.leave-and-close-confirm.message"
+msgstr "您確定要離開 %s 團隊嗎?"
+
#: src/app/main/ui/dashboard/change_owner.cljs:56
msgid "modals.leave-and-reassign.forbidden"
msgstr "如果沒有其他成員晉升為團隊的擁有者,您則不能離開團隊。或者您可以選擇刪除該團隊。"
+#: src/app/main/ui/dashboard/change_owner.cljs:52
+msgid "modals.leave-and-reassign.hint1"
+msgstr "你是這個團隊的老大。離開前,請選擇另一位成員頂你的位。"
+
+#: src/app/main/ui/dashboard/change_owner.cljs:75
+msgid "modals.leave-and-reassign.promote-and-leave"
+msgstr "晉升並離開"
+
+#: src/app/main/ui/dashboard/change_owner.cljs:31
+msgid "modals.leave-and-reassign.select-member-to-promote"
+msgstr "選擇要上位的會員"
+
#: src/app/main/ui/dashboard/change_owner.cljs:46
msgid "modals.leave-and-reassign.title"
msgstr "離開前"
@@ -1732,18 +2593,229 @@ msgstr "您確定要離開這個團隊嗎?"
msgid "modals.leave-confirm.title"
msgstr "正在離開團隊"
+#: src/app/main/ui/delete_shared.cljs:53
+msgid "modals.move-shared-confirm.accept"
+msgid_plural "modals.move-shared-confirm.accept"
+msgstr[0] "移動"
+
+#: src/app/main/ui/delete_shared.cljs:48
+msgid "modals.move-shared-confirm.message"
+msgid_plural "modals.move-shared-confirm.message"
+msgstr[0] "您確定要移動該圖庫嗎?"
+
+#: src/app/main/ui/delete_shared.cljs:43
+msgid "modals.move-shared-confirm.title"
+msgid_plural "modals.move-shared-confirm.title"
+msgstr[0] "移動圖庫"
+
+#: src/app/main/ui/workspace/main_menu.cljs:271, src/app/main/ui/workspace/nudge.cljs:47
+msgid "modals.nudge-title"
+msgstr "微調量"
+
+#: src/app/main/ui/dashboard/team.cljs:374
+msgid "modals.promote-owner-confirm.accept"
+msgstr "轉讓所有權"
+
+#: src/app/main/ui/dashboard/team.cljs:373
+msgid "modals.promote-owner-confirm.hint"
+msgstr "如果您轉移所有權,您的角色將變為管理員,並失去對該團隊的一些權限。 "
+
#: src/app/main/ui/dashboard/team.cljs:372
msgid "modals.promote-owner-confirm.message"
msgstr "您是此團隊的當前擁有者。您是否確實要使 %s 成為團隊的新擁有者?"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:393
+#: src/app/main/ui/dashboard/team.cljs:371
+msgid "modals.promote-owner-confirm.title"
+msgstr "新團隊老大"
+
+#: src/app/main/ui/workspace/libraries.cljs:270
+msgid "modals.publish-empty-library.accept"
+msgstr "發布"
+
+#: src/app/main/ui/workspace/libraries.cljs:269
+msgid "modals.publish-empty-library.message"
+msgstr "你的圖庫是空的。您確定要發布它嗎?"
+
+#: src/app/main/ui/workspace/libraries.cljs:268
+msgid "modals.publish-empty-library.title"
+msgstr "發布空圖庫"
+
+#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
+#, unused
+msgid "modals.remove-shared-confirm.accept"
+msgstr "刪除共享圖庫"
+
+#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
+#, unused
+msgid "modals.remove-shared-confirm.hint"
+msgstr "一旦從共享圖庫中刪除,該文件的文件庫將不再可供其餘文件使用。"
+
+#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
+#, unused
+msgid "modals.remove-shared-confirm.message"
+msgstr "移除“%s”共享庫"
+
+#: src/app/main/ui/workspace/nudge.cljs:53
+msgid "modals.small-nudge"
+msgstr "小幅微調"
+
+#: src/app/main/ui/delete_shared.cljs:52
+msgid "modals.unpublish-shared-confirm.accept"
+msgid_plural "modals.unpublish-shared-confirm.accept"
+msgstr[0] "取消發布"
+
+#: src/app/main/ui/delete_shared.cljs:47
+msgid "modals.unpublish-shared-confirm.message"
+msgid_plural "modals.unpublish-shared-confirm.message"
+msgstr[0] "您確實要取消發布該圖庫嗎?"
+
+#: src/app/main/ui/delete_shared.cljs:42
+msgid "modals.unpublish-shared-confirm.title"
+msgid_plural "modals.unpublish-shared-confirm.title"
+msgstr[0] "取消圖庫"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs, src/app/main/ui/workspace/context_menu.cljs
+#, unused
+msgid "modals.update-remote-component-in-bulk.hint"
+msgstr "您即將更新共用圖庫中的元件。這可能會影響使用它的其他文件。"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs, src/app/main/ui/workspace/context_menu.cljs
+#, unused
+msgid "modals.update-remote-component-in-bulk.message"
+msgstr "更新共用圖庫中的元件"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:403
msgid "modals.update-remote-component.accept"
msgstr "更新"
-#: src/app/main/ui/workspace/sidebar/assets/common.cljs:392
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:402
msgid "modals.update-remote-component.cancel"
msgstr "取消"
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:401
+msgid "modals.update-remote-component.hint"
+msgstr "您即將更新共用圖庫中的元件。這可能會影響使用它的其他文件。"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:400
+msgid "modals.update-remote-component.message"
+msgstr "更新共用圖庫中的元件"
+
+#: src/app/main/ui/static.cljs:331
+msgid "not-found.desc-message.doesnt-exist"
+msgstr "該頁面不存在"
+
+#: src/app/main/ui/static.cljs:330
+msgid "not-found.desc-message.error"
+msgstr "404 錯誤"
+
+#: src/app/main/ui/static.cljs:135
+msgid "not-found.login.free"
+msgstr "Penpot 是一款免費的開源設計工具,用於設計和程式碼之間的協作"
+
+#: src/app/main/ui/auth/recovery_request.cljs:114
+msgid "not-found.login.sent-recovery"
+msgstr "我們已將還原用的電子郵件發送至"
+
+#: src/app/main/ui/auth/recovery_request.cljs:116
+msgid "not-found.login.sent-recovery-check"
+msgstr "檢查您的電子郵件並點擊連結以建立新密碼。"
+
+#: src/app/main/ui/static.cljs:149
+msgid "not-found.login.signup-free"
+msgstr "免費註冊"
+
+#: src/app/main/ui/static.cljs:150
+msgid "not-found.login.start-using"
+msgstr "立即開始使用 Penpot!"
+
+#: src/app/main/ui/static.cljs:64
+msgid "not-found.made-with-love"
+msgstr "滿懷愛與開源精神傾心打造"
+
+#: src/app/main/ui/static.cljs:291
+msgid "not-found.no-permission.already-requested.file"
+msgstr "您已經請求存取該文件。"
+
+#: src/app/main/ui/static.cljs:292
+msgid "not-found.no-permission.already-requested.or-others.file"
+msgstr "您已要求存取此該團隊文件或專案。"
+
+#: src/app/main/ui/static.cljs:298
+msgid "not-found.no-permission.already-requested.or-others.project"
+msgstr "您已要求存取此團隊專案或文件。"
+
+#: src/app/main/ui/static.cljs:297
+msgid "not-found.no-permission.already-requested.project"
+msgstr "您已經要求存取該專案。"
+
+#: src/app/main/ui/static.cljs:312, src/app/main/ui/static.cljs:321
+msgid "not-found.no-permission.ask"
+msgstr "請求存取"
+
+#: src/app/main/ui/static.cljs:304
+msgid "not-found.no-permission.done.remember"
+msgstr "請記住,如果團隊老大允許,您將被邀請加入該團隊。"
+
+#: src/app/main/ui/static.cljs:303
+msgid "not-found.no-permission.done.success"
+msgstr "您的請求已正確發送!"
+
+#: src/app/main/ui/static.cljs:309
+msgid "not-found.no-permission.file"
+msgstr "您無權存取此文件。"
+
+#: src/app/main/ui/static.cljs:51, src/app/main/ui/static.cljs:287, src/app/main/ui/static.cljs:293, src/app/main/ui/static.cljs:299, src/app/main/ui/static.cljs:305, src/app/main/ui/static.cljs:314, src/app/main/ui/static.cljs:323
+msgid "not-found.no-permission.go-dashboard"
+msgstr "前往您的 Penpot"
+
+#: src/app/main/ui/static.cljs:311, src/app/main/ui/static.cljs:320
+msgid "not-found.no-permission.if-approves"
+msgstr "如果團隊老大允許,你會被邀請加入團隊。"
+
+#: src/app/main/ui/static.cljs:249, src/app/main/ui/static.cljs:261
+msgid "not-found.no-permission.penpot-file"
+msgstr "Penpot 文件"
+
+#: src/app/main/ui/static.cljs:286, src/app/main/ui/static.cljs:318
+msgid "not-found.no-permission.project"
+msgstr "您無權存取此專案。"
+
+#: src/app/main/ui/static.cljs:248, src/app/main/ui/static.cljs:259
+msgid "not-found.no-permission.project-name"
+msgstr "專案"
+
+#: src/app/main/ui/static.cljs:310
+msgid "not-found.no-permission.you-can-ask.file"
+msgstr "要存取此文件,您可以詢問團隊老大。"
+
+#: src/app/main/ui/static.cljs:319
+msgid "not-found.no-permission.you-can-ask.project"
+msgstr "要存取該項目,您可以詢問團隊老大。"
+
+#: src/app/main/data/common.cljs:93
+msgid "notifications.by-code.maintenance"
+msgstr "中斷維護:我們將在5分鐘內進行短暫維護。"
+
+#: src/app/main/data/common.cljs:83
+msgid "notifications.by-code.upgrade-version"
+msgstr "有新版本可用,請重新整理頁面"
+
+#: src/app/main/ui/dashboard/team.cljs:164, src/app/main/ui/dashboard/team.cljs:636
+msgid "notifications.invitation-email-sent"
+msgstr "邀請已成功發送"
+
+#: src/app/main/ui/dashboard/team.cljs:657
+msgid "notifications.invitation-link-copied"
+msgstr "邀請連結已複製"
+
+#: src/app/main/ui/settings/delete_account.cljs:24
+msgid "notifications.profile-deletion-not-allowed"
+msgstr "您無法刪除您的個人資料。繼續操作之前重新分配您的團隊。"
+
+#: src/app/main/ui/settings/options.cljs:26, src/app/main/ui/settings/profile.cljs:30
+msgid "notifications.profile-saved"
+msgstr "個人資料保存成功!"
+
#: src/app/main/ui/settings/change_email.cljs:46
msgid "notifications.validation-email-sent"
msgstr "已將驗證信傳送至 %s。請查看您的電子郵件信箱!"
@@ -1752,10 +2824,46 @@ msgstr "已將驗證信傳送至 %s。請查看您的電子郵件信箱!"
msgid "onboarding-v2.before-start.desc1"
msgstr "我們有許多協助你開始使用Penpot的資源,例如使用者指南及我們的 Youtube 頻道。"
-#: src/app/main/ui/onboarding/newsletter.cljs:97
+#, unused
+msgid "onboarding-v2.before-start.desc2"
+msgstr "有關如何使用 Penpot 的詳細資訊。從原型設計到組織或共享設計。"
+
+#, unused
+msgid "onboarding-v2.before-start.desc2.title"
+msgstr "使用者指南"
+
+#, unused
+msgid "onboarding-v2.before-start.desc3"
+msgstr "您可以觀看我們以及社群製作的教學。"
+
+#, unused
+msgid "onboarding-v2.before-start.desc3.title"
+msgstr "影片教學"
+
+#, unused
+msgid "onboarding-v2.before-start.title"
+msgstr "開始之前"
+
+#: src/app/main/ui/onboarding/newsletter.cljs:68
+msgid "onboarding-v2.newsletter.desc"
+msgstr "訂閱 Penpot 簡報以了解最新的產品開發進度和新聞。"
+
+#: src/app/main/ui/onboarding/newsletter.cljs:88
+msgid "onboarding-v2.newsletter.news"
+msgstr "向我發送有關 Penpot 的新聞(部落格文章、影片教學、串流媒體…)。"
+
+#: src/app/main/ui/onboarding/newsletter.cljs:96
+msgid "onboarding-v2.newsletter.privacy1"
+msgstr "我們關心隱私,您可以在這裡閱讀我們的隱私宣告。 "
+
+#: src/app/main/ui/onboarding/newsletter.cljs:102
msgid "onboarding-v2.newsletter.privacy2"
msgstr "我們只會向您發送相關電子郵件。您可以隨時在我們的通訊中通過取消訂閱連結來取消訂閱。"
+#: src/app/main/ui/onboarding/newsletter.cljs:76
+msgid "onboarding-v2.newsletter.updates"
+msgstr "向我發送產品更新(新功能、發布、修復…)。"
+
#, unused
msgid "onboarding-v2.welcome.desc1"
msgstr "Penpot係由Kaleidos及與社群成員共同協作的開放原始碼軟件。所有人皆可以下方法協作:"
@@ -1764,6 +2872,266 @@ msgstr "Penpot係由Kaleidos及與社群成員共同協作的開放原始碼軟
msgid "onboarding-v2.welcome.desc2"
msgstr "這是與整個社群和 Penpot 核心團隊一起學習、分享和討論 Penpot、它的現在和未來的公共空間。"
+#, unused
+msgid "onboarding-v2.welcome.desc2.title"
+msgstr "參與社群活動"
+
+#, unused
+msgid "onboarding-v2.welcome.desc3"
+msgstr "在這裡你可以找到如何協作翻譯、功能請求、核心貢獻、漏洞搜尋等…"
+
+#, unused
+msgid "onboarding-v2.welcome.desc3.title"
+msgstr "貢獻指南"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:30
+msgid "onboarding-v2.welcome.title"
+msgstr "歡迎來到 Penpot!"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:254
+msgid "onboarding.choice.team-up.continue-creating-team"
+msgstr "繼續建立團隊"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:264
+msgid "onboarding.choice.team-up.continue-without-a-team"
+msgstr "在沒有團隊的情況下繼續"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:193
+msgid "onboarding.choice.team-up.create-team-and-invite"
+msgstr "建立團隊&邀請"
+
+#, unused
+msgid "onboarding.choice.team-up.create-team-and-send-invites"
+msgstr "建立團隊並發送邀請"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:197
+msgid "onboarding.choice.team-up.create-team-and-send-invites-description"
+msgstr "您可以以後邀請"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:240
+msgid "onboarding.choice.team-up.create-team-desc"
+msgstr "命名您的團隊後,您就可以邀請人們加入。"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:249
+msgid "onboarding.choice.team-up.create-team-placeholder"
+msgstr "輸入團隊名稱"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:194
+msgid "onboarding.choice.team-up.create-team-without-invite"
+msgstr "建立團隊"
+
+#, unused
+msgid "onboarding.choice.team-up.create-team-without-inviting"
+msgstr "無需邀請即可建立團隊"
+
+#: src/app/main/ui/dashboard/projects.cljs:95, src/app/main/ui/onboarding/team_choice.cljs:159
+msgid "onboarding.choice.team-up.invite-members"
+msgstr "邀請成員"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:160
+msgid "onboarding.choice.team-up.invite-members-info"
+msgstr "記得把每個人都包括在內。開發人員、設計師、經理......多元化加起來:)"
+
+#: src/app/main/ui/dashboard/team.cljs:228, src/app/main/ui/onboarding/team_choice.cljs:169
+msgid "onboarding.choice.team-up.roles"
+msgstr "邀請角色:"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:257
+msgid "onboarding.choice.team-up.start-without-a-team"
+msgstr "從沒有團隊開始"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:259
+msgid "onboarding.choice.team-up.start-without-a-team-description"
+msgstr "您可以晚點建立一個團隊。"
+
+#, unused
+msgid "onboarding.newsletter.accept"
+msgstr "是的,訂閱"
+
+#: src/app/main/ui/onboarding/newsletter.cljs:42
+msgid "onboarding.newsletter.acceptance-message"
+msgstr "您的訂閱請求已發送,我們將向您發送電子郵件進行確認。"
+
+#: src/app/main/ui/onboarding/newsletter.cljs:100
+msgid "onboarding.newsletter.policy"
+msgstr "隱私權政策。"
+
+#: src/app/main/ui/onboarding/newsletter.cljs:65
+msgid "onboarding.newsletter.title"
+msgstr "想要收到 Penpot 新聞嗎?"
+
+#: src/app/main/ui/onboarding/questions.cljs:113
+msgid "onboarding.questions.lets-get-started"
+msgstr "讓我們開始吧!"
+
+#: src/app/main/ui/onboarding/questions.cljs:94
+msgid "onboarding.questions.reasons.alternative"
+msgstr "尋找 Figma、XD 等的替代品"
+
+#: src/app/main/ui/onboarding/questions.cljs:88
+msgid "onboarding.questions.reasons.exploring"
+msgstr "正在探索"
+
+#: src/app/main/ui/onboarding/questions.cljs:91
+msgid "onboarding.questions.reasons.fit"
+msgstr "評估 Penpot 是否適合我的團隊"
+
+#: src/app/main/ui/onboarding/questions.cljs:97
+msgid "onboarding.questions.reasons.testing"
+msgstr "自架前測試"
+
+#: src/app/main/ui/onboarding/questions.cljs:407
+msgid "onboarding.questions.referer.article"
+msgstr "文章(部落格、貼文、電子報)"
+
+#: src/app/main/ui/onboarding/questions.cljs:405
+msgid "onboarding.questions.referer.search"
+msgstr "搜尋引擎(Google、Yahoo、Bing)"
+
+#: src/app/main/ui/onboarding/questions.cljs:406
+msgid "onboarding.questions.referer.social"
+msgstr "社群媒體(X、Linkedin、FB 等)"
+
+#: src/app/main/ui/onboarding/questions.cljs:349
+msgid "onboarding.questions.start-with.code"
+msgstr "從設計中產生真實程式碼"
+
+#: src/app/main/ui/onboarding/questions.cljs:347
+msgid "onboarding.questions.start-with.ds"
+msgstr "建立設計系統"
+
+#: src/app/main/ui/onboarding/questions.cljs:345
+msgid "onboarding.questions.start-with.prototyping"
+msgstr "原型設計"
+
+#: src/app/main/ui/onboarding/questions.cljs:341
+msgid "onboarding.questions.start-with.ui"
+msgstr "設計APP的 UI/UX"
+
+#: src/app/main/ui/onboarding/questions.cljs:343
+msgid "onboarding.questions.start-with.wireframing"
+msgstr "線框圖"
+
+#: src/app/main/ui/onboarding/questions.cljs:121
+msgid "onboarding.questions.step1.question1"
+msgstr "您將使用 Penpot 來做什麼?"
+
+#: src/app/main/ui/onboarding/questions.cljs:128
+msgid "onboarding.questions.step1.question2"
+msgstr "今天什麼風把你吹來Penpot?"
+
+#: src/app/main/ui/onboarding/questions.cljs:117
+msgid "onboarding.questions.step1.subtitle"
+msgstr "請告訴我們一些關於您的訊息,以幫助我們讓 Penpot 為您服務。您的回答將幫助我們確定新功能的優先順序,並為您指明正確的入門方向。"
+
+#: src/app/main/ui/onboarding/questions.cljs:115
+msgid "onboarding.questions.step1.title"
+msgstr "幫助我們了解你"
+
+#: src/app/main/ui/onboarding/questions.cljs:196
+msgid "onboarding.questions.step2.title"
+msgstr "這些工具中您最常使用哪一個?"
+
+#: src/app/main/ui/onboarding/questions.cljs:289
+msgid "onboarding.questions.step3.question1"
+msgstr "你做什麼工作?"
+
+#: src/app/main/ui/onboarding/questions.cljs:303
+msgid "onboarding.questions.step3.question2"
+msgstr "你的角色是什麼?"
+
+#: src/app/main/ui/onboarding/questions.cljs:317
+msgid "onboarding.questions.step3.question3"
+msgstr "貴公司的規模是多少?"
+
+#: src/app/main/ui/onboarding/questions.cljs:287
+msgid "onboarding.questions.step3.title"
+msgstr "告訴我們你的工作"
+
+#: src/app/main/ui/onboarding/questions.cljs:370
+msgid "onboarding.questions.step4.title"
+msgstr "您想從哪裡開始?"
+
+#: src/app/main/ui/onboarding/questions.cljs:428
+msgid "onboarding.questions.step5.title"
+msgstr "您是如何了解 Penpot 的?"
+
+#: src/app/main/ui/onboarding/questions.cljs:268
+msgid "onboarding.questions.team-size.11-30"
+msgstr "11-30"
+
+#: src/app/main/ui/onboarding/questions.cljs:269
+msgid "onboarding.questions.team-size.2-10"
+msgstr "2-10"
+
+#: src/app/main/ui/onboarding/questions.cljs:267
+msgid "onboarding.questions.team-size.31-50"
+msgstr "31-50"
+
+#: src/app/main/ui/onboarding/questions.cljs:270
+msgid "onboarding.questions.team-size.freelancer"
+msgstr "我是自由工作者"
+
+#: src/app/main/ui/onboarding/questions.cljs:266
+msgid "onboarding.questions.team-size.more-than-50"
+msgstr "超過 50"
+
+#: src/app/main/ui/onboarding/questions.cljs:271
+msgid "onboarding.questions.team-size.personal-project"
+msgstr "我正在做個人專案"
+
+#: src/app/main/ui/onboarding/questions.cljs:80
+msgid "onboarding.questions.use.education"
+msgstr "教育"
+
+#: src/app/main/ui/onboarding/questions.cljs:81
+msgid "onboarding.questions.use.personal"
+msgstr "個人"
+
+#: src/app/main/ui/onboarding/questions.cljs:79
+msgid "onboarding.questions.use.work"
+msgstr "工作"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:238
+msgid "onboarding.team-modal.create-team"
+msgstr "建立團隊"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:34
+msgid "onboarding.team-modal.create-team-desc"
+msgstr "團隊讓你可以與其他Penpot使用者在相同的檔案和專案中進行協作。"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:39
+msgid "onboarding.team-modal.create-team-feature-1"
+msgstr "無限的檔案和專案"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:43
+msgid "onboarding.team-modal.create-team-feature-2"
+msgstr "多人版"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:47
+msgid "onboarding.team-modal.create-team-feature-3"
+msgstr "角色管理"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:51
+msgid "onboarding.team-modal.create-team-feature-4"
+msgstr "無限成員"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:55
+msgid "onboarding.team-modal.create-team-feature-5"
+msgstr "100% 免費!"
+
+#: src/app/main/ui/onboarding/team_choice.cljs:32
+msgid "onboarding.team-modal.team-definition"
+msgstr "什麼是團隊?"
+
+#: src/app/main/ui/onboarding/templates.cljs:78
+msgid "onboarding.templates.subtitle"
+msgstr "這裡有一些模板。"
+
+#: src/app/main/ui/onboarding/templates.cljs:77
+msgid "onboarding.templates.title"
+msgstr "開始設計"
+
#, unused
msgid "onboarding.welcome.alt"
msgstr "Penpot"
@@ -1772,10 +3140,27 @@ msgstr "Penpot"
msgid "profile.recovery.go-to-login"
msgstr "前往登入"
-#: src/app/main/ui/viewer/inspect/exports.cljs:147, src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:90, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:622, 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:196, src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:162, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:355, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:366, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:386, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:397, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:413, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:315, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:380, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:397, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:172
+#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:223
+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:712, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:831, 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:162, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:342, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:357, 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:352, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:363, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:410, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:302, src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:182, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:383, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:400, src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:247, src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:173
msgid "settings.multiple"
msgstr "混合"
+#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:270
+msgid "settings.remove-color"
+msgstr "移除顏色"
+
+#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs:275
+msgid "settings.select-this-color"
+msgstr "使用此樣式選擇項目"
+
+# SECTIONS
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:415
+msgid "shortcut-section.basics"
+msgstr "基本"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:421
msgid "shortcut-section.dashboard"
msgstr "儀表板"
@@ -1788,14 +3173,59 @@ msgstr "檢視者"
msgid "shortcut-section.workspace"
msgstr "工作區"
+# SUBSECTIONS
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:56
+msgid "shortcut-subsection.alignment"
+msgstr "對齊"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:57
msgid "shortcut-subsection.edit"
msgstr "編輯"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:58
+msgid "shortcut-subsection.general-dashboard"
+msgstr "一般"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:59
+msgid "shortcut-subsection.general-viewer"
+msgstr "一般"
+
#: src/app/main/ui/workspace/main_menu.cljs:829, src/app/main/ui/workspace/sidebar/shortcuts.cljs:60
msgid "shortcut-subsection.main-menu"
msgstr "主功能表"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:61
+msgid "shortcut-subsection.modify-layers"
+msgstr "修改圖層"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:62
+msgid "shortcut-subsection.navigation-dashboard"
+msgstr "導航"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:63
+msgid "shortcut-subsection.navigation-viewer"
+msgstr "導航"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:64
+msgid "shortcut-subsection.navigation-workspace"
+msgstr "導航"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:65
+msgid "shortcut-subsection.panels"
+msgstr "面板"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:66
+msgid "shortcut-subsection.path-editor"
+msgstr "路徑"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:67
+msgid "shortcut-subsection.shape"
+msgstr "形狀"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:68
+msgid "shortcut-subsection.text-editor"
+msgstr "文字"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:69
msgid "shortcut-subsection.tools"
msgstr "工具"
@@ -1812,26 +3242,138 @@ msgstr "縮放"
msgid "shortcuts.add-comment"
msgstr "評論"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:73
+msgid "shortcuts.add-node"
+msgstr "新增節點"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:74
+msgid "shortcuts.align-bottom"
+msgstr "底部對齊"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:75
+msgid "shortcuts.align-center"
+msgstr "居中對齊"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:76
+msgid "shortcuts.align-hcenter"
+msgstr "水平居中對齊"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:77
+msgid "shortcuts.align-justify"
+msgstr "兩端對齊"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:78
+msgid "shortcuts.align-left"
+msgstr "左對齊"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:79
+msgid "shortcuts.align-right"
+msgstr "右對齊"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:80
+msgid "shortcuts.align-top"
+msgstr "頂部對齊"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:81
+msgid "shortcuts.align-vcenter"
+msgstr "垂直居中對齊"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:82
+msgid "shortcuts.artboard-selection"
+msgstr "從選擇中建立板"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:83
+msgid "shortcuts.bold"
+msgstr "切換粗體"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:84
+msgid "shortcuts.bool-difference"
+msgstr "布林差集"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:85
+msgid "shortcuts.bool-exclude"
+msgstr "布林排除"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:86
+msgid "shortcuts.bool-intersection"
+msgstr "布林交集"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:87
+msgid "shortcuts.bool-union"
+msgstr "布林聯集"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:88
+msgid "shortcuts.bring-back"
+msgstr "置於最底層"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:89
+msgid "shortcuts.bring-backward"
+msgstr "向後發送"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:90
+msgid "shortcuts.bring-forward"
+msgstr "向前移動"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:91
+msgid "shortcuts.bring-front"
+msgstr "置於最前面"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:92
+msgid "shortcuts.clear-undo"
+msgstr "清除undo"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:93
msgid "shortcuts.copy"
msgstr "複製"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:94
+msgid "shortcuts.copy-link"
+msgstr "將連結複製到剪貼簿"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:95
+msgid "shortcuts.create-component"
+msgstr "建立元件"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:96
+msgid "shortcuts.create-new-project"
+msgstr "建立新的"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:97
msgid "shortcuts.cut"
msgstr "剪下"
+#: src/app/main/ui/workspace/right_header.cljs:84, src/app/main/ui/workspace/sidebar/shortcuts.cljs:98
+msgid "shortcuts.decrease-zoom"
+msgstr "縮小"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:99
msgid "shortcuts.delete"
msgstr "刪除"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:100
+msgid "shortcuts.delete-node"
+msgstr "刪除節點"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:101
+msgid "shortcuts.detach-component"
+msgstr "分離元件"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:102
msgid "shortcuts.draw-curve"
msgstr "曲線"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:103
+msgid "shortcuts.draw-ellipse"
+msgstr "橢圓"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:104
msgid "shortcuts.draw-frame"
msgstr "畫板"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:105
+msgid "shortcuts.draw-nodes"
+msgstr "繪製路徑"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:106
msgid "shortcuts.draw-path"
msgstr "路徑"
@@ -1852,6 +3394,38 @@ msgstr "複本"
msgid "shortcuts.escape"
msgstr "取消"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:111
+msgid "shortcuts.export-shapes"
+msgstr "匯出形狀"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:112
+msgid "shortcuts.fit-all"
+msgstr "縮放以適合全部"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:113
+msgid "shortcuts.flip-horizontal"
+msgstr "水平翻轉"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:114
+msgid "shortcuts.flip-vertical"
+msgstr "垂直翻轉"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:115
+msgid "shortcuts.font-size-dec"
+msgstr "減小字體大小"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:116
+msgid "shortcuts.font-size-inc"
+msgstr "增加字體大小"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:117
+msgid "shortcuts.go-to-drafts"
+msgstr "轉至草稿"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:118
+msgid "shortcuts.go-to-libs"
+msgstr "轉至共享圖庫"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:119
msgid "shortcuts.go-to-search"
msgstr "搜尋"
@@ -1860,14 +3434,294 @@ msgstr "搜尋"
msgid "shortcuts.group"
msgstr "群組"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:121
+msgid "shortcuts.h-distribute"
+msgstr "水平分佈"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:122
+msgid "shortcuts.hide-ui"
+msgstr "顯示/隱藏 UI"
+
+#: src/app/main/ui/workspace/right_header.cljs:89, src/app/main/ui/workspace/sidebar/shortcuts.cljs:123
+msgid "shortcuts.increase-zoom"
+msgstr "放大"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:124
+msgid "shortcuts.insert-image"
+msgstr "插入圖片"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:125
+msgid "shortcuts.italic"
+msgstr "切換斜體"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:126
+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
+msgid "shortcuts.make-corner"
+msgstr "製作轉角"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:133
+msgid "shortcuts.make-curve"
+msgstr "製作曲線"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:134
+msgid "shortcuts.mask"
+msgstr "遮罩"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:135
+msgid "shortcuts.merge-nodes"
+msgstr "合併節點"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:136
+msgid "shortcuts.move"
+msgstr "移動"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:137
+msgid "shortcuts.move-fast-down"
+msgstr "快速向下移動"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:138
+msgid "shortcuts.move-fast-left"
+msgstr "快速向左移動"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:139
+msgid "shortcuts.move-fast-right"
+msgstr "快速向右移動"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:140
+msgid "shortcuts.move-fast-up"
+msgstr "快速上升"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:141
+msgid "shortcuts.move-nodes"
+msgstr "移動節點"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:142
+msgid "shortcuts.move-unit-down"
+msgstr "下移"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:143
+msgid "shortcuts.move-unit-left"
+msgstr "向左移動"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:144
+msgid "shortcuts.move-unit-right"
+msgstr "右移"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:145
+msgid "shortcuts.move-unit-up"
+msgstr "向上移動"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:146
+msgid "shortcuts.next-frame"
+msgstr "下一個畫板"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:517
+msgid "shortcuts.not-found"
+msgstr "未找到快捷方式"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:147
+msgid "shortcuts.opacity-0"
+msgstr "將不透明度設為 100%"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:148
+msgid "shortcuts.opacity-1"
+msgstr "將不透明度設為 10%"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:149
+msgid "shortcuts.opacity-2"
+msgstr "將不透明度設為 20%"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:150
+msgid "shortcuts.opacity-3"
+msgstr "將不透明度設為 30%"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:151
+msgid "shortcuts.opacity-4"
+msgstr "將不透明度設為 40%"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:152
+msgid "shortcuts.opacity-5"
+msgstr "將不透明度設為 50%"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:153
+msgid "shortcuts.opacity-6"
+msgstr "將不透明度設為 60%"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:154
+msgid "shortcuts.opacity-7"
+msgstr "將不透明度設為 70%"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:155
+msgid "shortcuts.opacity-8"
+msgstr "將不透明度設為 80%"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:156
+msgid "shortcuts.opacity-9"
+msgstr "將不透明度設為 90%"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:157
+msgid "shortcuts.open-color-picker"
+msgstr "顏色選擇器"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:158
+msgid "shortcuts.open-comments"
+msgstr "前往查看者留言區"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:159
+msgid "shortcuts.open-dashboard"
+msgstr "轉至儀表板"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:160
+msgid "shortcuts.open-inspect"
+msgstr "進入查看者檢查區塊"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:161
+msgid "shortcuts.open-interactions"
+msgstr "進入查看者互動區"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:162
+msgid "shortcuts.open-viewer"
+msgstr "進入查看者互動區"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:163
+msgid "shortcuts.open-workspace"
+msgstr "轉至工作區"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:261
msgid "shortcuts.or"
msgstr " 或 "
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:164
+msgid "shortcuts.paste"
+msgstr "貼上"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:165
+msgid "shortcuts.prev-frame"
+msgstr "上一個畫板"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:166
+msgid "shortcuts.redo"
+msgstr "復原"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:167
+msgid "shortcuts.rename"
+msgstr "重新命名"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:168
+msgid "shortcuts.reset-zoom"
+msgstr "重置縮放"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:169
+msgid "shortcuts.scale"
+msgstr "縮放"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:170
+msgid "shortcuts.search-placeholder"
+msgstr "搜尋快捷鍵"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:171
+msgid "shortcuts.select-all"
+msgstr "全選"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:172
+msgid "shortcuts.select-next"
+msgstr "選取下一層"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:173
+msgid "shortcuts.select-parent-layer"
+msgstr "選取父層"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:174
+msgid "shortcuts.select-prev"
+msgstr "選取前一層"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:175
+msgid "shortcuts.separate-nodes"
+msgstr "分離節點"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:176
+msgid "shortcuts.show-pixel-grid"
+msgstr "顯示/隱藏像素格線"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:177
+msgid "shortcuts.show-shortcuts"
+msgstr "顯示/隱藏快捷方式"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:178
+msgid "shortcuts.snap-nodes"
+msgstr "對齊到節點"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:179
+msgid "shortcuts.snap-pixel-grid"
+msgstr "對齊到像素網格"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:180
+msgid "shortcuts.start-editing"
+msgstr "開始編輯"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:181
+msgid "shortcuts.start-measure"
+msgstr "開始測量"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:182
+msgid "shortcuts.stop-measure"
+msgstr "停止測量"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:183
+msgid "shortcuts.text-align-center"
+msgstr "居中對齊"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:184
+msgid "shortcuts.text-align-justify"
+msgstr "左右對齊"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:185
+msgid "shortcuts.text-align-left"
+msgstr "左對齊"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:186
+msgid "shortcuts.text-align-right"
+msgstr "右對齊"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:187
+msgid "shortcuts.thumbnail-set"
+msgstr "設定縮圖"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:497, src/app/main/ui/workspace/sidebar/shortcuts.cljs:506
+msgid "shortcuts.title"
+msgstr "鍵盤快速鍵"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:188
msgid "shortcuts.toggle-alignment"
msgstr "切換動態對齊"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:189
+msgid "shortcuts.toggle-assets"
+msgstr "切換資產"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:190
msgid "shortcuts.toggle-colorpalette"
msgstr "切換調色板"
@@ -1876,6 +3730,14 @@ msgstr "切換調色板"
msgid "shortcuts.toggle-focus-mode"
msgstr "切換專注模式"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:192
+msgid "shortcuts.toggle-fullscreen"
+msgstr "切換全螢幕"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:193
+msgid "shortcuts.toggle-guides"
+msgstr "顯示/隱藏導引線"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:194
msgid "shortcuts.toggle-history"
msgstr "切換歷史記錄"
@@ -1884,6 +3746,14 @@ msgstr "切換歷史記錄"
msgid "shortcuts.toggle-layers"
msgstr "切換圖層"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:196
+msgid "shortcuts.toggle-layout-flex"
+msgstr "新增/移除彈性佈局"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:197
+msgid "shortcuts.toggle-layout-grid"
+msgstr "新增/移除網格佈局"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:198
msgid "shortcuts.toggle-lock"
msgstr "鎖定選擇"
@@ -1892,19 +3762,79 @@ msgstr "鎖定選擇"
msgid "shortcuts.toggle-lock-size"
msgstr "鎖定比例"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200
+msgid "shortcuts.toggle-rulers"
+msgstr "顯示/隱藏尺規"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201
+msgid "shortcuts.toggle-snap-guides"
+msgstr "對齊到導引線"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202
+msgid "shortcuts.toggle-snap-ruler-guide"
+msgstr "對齊到標尺指導線"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:203
+msgid "shortcuts.toggle-textpalette"
+msgstr "切換文字調色板"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:204
+msgid "shortcuts.toggle-theme"
+msgstr "更改主題"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:205
+msgid "shortcuts.toggle-visibility"
+msgstr "顯示 / 隱藏"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:206
+msgid "shortcuts.toggle-zoom-style"
+msgstr "切換縮放模式"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:207
+msgid "shortcuts.underline"
+msgstr "顯示/隱藏底線"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:208
+msgid "shortcuts.undo"
+msgstr "撤回"
+
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:209
msgid "shortcuts.ungroup"
msgstr "取消群組"
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:210
+msgid "shortcuts.unmask"
+msgstr "解除遮罩"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:211
+msgid "shortcuts.v-distribute"
+msgstr "垂直分佈"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:212
+msgid "shortcuts.zoom-lense-decrease"
+msgstr "縮小焦距"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:213
+msgid "shortcuts.zoom-lense-increase"
+msgstr "放大焦距"
+
+#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:214
+msgid "shortcuts.zoom-selected"
+msgstr "縮放至選取範圍"
+
#: src/app/main/ui/dashboard/files.cljs:179
msgid "title.dashboard.files"
msgstr "%s – Penpot"
-#: src/app/main/ui/dashboard/fonts.cljs:38
+#: src/app/main/ui/dashboard/fonts.cljs:40
+msgid "title.dashboard.font-providers"
+msgstr "字體提供者 - %s - Penpot"
+
+#: src/app/main/ui/dashboard/fonts.cljs:39
msgid "title.dashboard.fonts"
msgstr "字型 - %s - Penpot"
-#: src/app/main/ui/dashboard/projects.cljs:347
+#: src/app/main/ui/dashboard/projects.cljs:350
msgid "title.dashboard.projects"
msgstr "專案 - %s - Penpot"
@@ -1912,14 +3842,26 @@ msgstr "專案 - %s - Penpot"
msgid "title.dashboard.search"
msgstr "搜尋 - %s - Penpot"
+#: src/app/main/ui/dashboard/libraries.cljs:57
+msgid "title.dashboard.shared-libraries"
+msgstr "共享圖庫 - %s - Penpot"
+
#: src/app/main/ui/auth/verify_token.cljs:70, src/app/main/ui/auth.cljs:33
msgid "title.default"
msgstr "Penpot - 給團隊設計的自由"
+#: src/app/main/ui/settings/access_tokens.cljs:280
+msgid "title.settings.access-tokens"
+msgstr "個人資料 - 存取權杖(token)"
+
#: src/app/main/ui/settings/feedback.cljs:107
msgid "title.settings.feedback"
msgstr "提供回饋 - Penpot"
+#: src/app/main/ui/settings/notifications.cljs:45
+msgid "title.settings.notifications"
+msgstr "通知 - Penpot"
+
#: src/app/main/ui/settings/options.cljs:76
msgid "title.settings.options"
msgstr "設定 - Penpot"
@@ -1932,6 +3874,10 @@ msgstr "密碼 - Penpot"
msgid "title.settings.profile"
msgstr "個人資料 - Penpot"
+#: src/app/main/ui/dashboard/team.cljs:779
+msgid "title.team-invitations"
+msgstr "邀請 - %s - Penpot"
+
#: src/app/main/ui/dashboard/team.cljs:529
msgid "title.team-members"
msgstr "成員 - %s - Penpot"
@@ -1940,11 +3886,15 @@ msgstr "成員 - %s - Penpot"
msgid "title.team-settings"
msgstr "設定 - %s - Penpot"
+#: src/app/main/ui/dashboard/team.cljs:1043
+msgid "title.team-webhooks"
+msgstr "Webhooks - %s - Penpot"
+
#: src/app/main/ui/viewer.cljs:423
msgid "title.viewer"
msgstr "%s - 檢視模式 - Penpot"
-#: src/app/main/ui/workspace.cljs:202
+#: src/app/main/ui/workspace.cljs:188
msgid "title.workspace"
msgstr "%s - Penpot"
@@ -1958,88 +3908,426 @@ msgstr "這個共用連結已失效,建立一個新連結,或向擁有者要
msgid "viewer.breaking-change.message"
msgstr "抱歉!"
+#: src/app/main/ui/viewer.cljs:573
+msgid "viewer.empty-state"
+msgstr "此頁面未找到看板 。"
+
+#: src/app/main/ui/viewer.cljs:578
+msgid "viewer.frame-not-found"
+msgstr "未找到看板 。"
+
+#: src/app/main/ui/viewer/header.cljs:343
+msgid "viewer.header.comments-section"
+msgstr "留言(%s)"
+
+#: src/app/main/ui/viewer/interactions.cljs:298
+msgid "viewer.header.dont-show-interactions"
+msgstr "隱藏互動"
+
+#: src/app/main/ui/viewer/header.cljs:195
+msgid "viewer.header.fullscreen"
+msgstr "全螢幕"
+
+#: src/app/main/ui/viewer/header.cljs:352
+msgid "viewer.header.inspect-section"
+msgstr "檢視 (%s)"
+
#: src/app/main/ui/viewer/interactions.cljs:288
msgid "viewer.header.interactions"
msgstr "交互作用"
+#: src/app/main/ui/viewer/header.cljs:334
+msgid "viewer.header.interactions-section"
+msgstr "互動 (%s)"
+
#: src/app/main/ui/viewer/share_link.cljs:188
msgid "viewer.header.share.copy-link"
msgstr "複製連結"
+#: src/app/main/ui/viewer/interactions.cljs:306
+msgid "viewer.header.show-interactions"
+msgstr "顯示互動"
+
+#: src/app/main/ui/viewer/interactions.cljs:317
+msgid "viewer.header.show-interactions-on-click"
+msgstr "點擊時顯示互動"
+
#: src/app/main/ui/viewer/header.cljs:238
msgid "viewer.header.sitemap"
msgstr "網站地圖"
+#: src/app/main/ui/dashboard/team.cljs:997
+msgid "webhooks.last-delivery.success"
+msgstr "上次交付成功。"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:58
+msgid "workspace.align.hcenter"
+msgstr "水平居中對齊 (%s)"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:74
+msgid "workspace.align.hdistribute"
+msgstr "水平間距分佈 (%s)"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:50
+msgid "workspace.align.hleft"
+msgstr "左對齊 (%s)"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:66
+msgid "workspace.align.hright"
+msgstr "右對齊 (%s)"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:99
+msgid "workspace.align.vbottom"
+msgstr "底部對齊 (%s)"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:91
+msgid "workspace.align.vcenter"
+msgstr "垂直居中對齊 (%s)"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:104
+msgid "workspace.align.vdistribute"
+msgstr "垂直間距分佈 (%s)"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/align.cljs:83
+msgid "workspace.align.vtop"
+msgstr "頂部對齊 (%s)"
+
+#: src/app/main/ui/workspace/sidebar/assets.cljs:171
+msgid "workspace.assets.add-library"
+msgstr "新增圖庫"
+
#: src/app/main/ui/workspace/sidebar/assets.cljs
#, unused
msgid "workspace.assets.assets"
msgstr "資產"
-#: src/app/main/ui/dashboard/grid.cljs:147, src/app/main/ui/dashboard/grid.cljs:179, src/app/main/ui/workspace/sidebar/assets/colors.cljs:486, src/app/main/ui/workspace/sidebar/assets.cljs:158
+#: src/app/main/ui/workspace/sidebar/assets.cljs:144
+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:486, src/app/main/ui/workspace/sidebar/assets.cljs:156
msgid "workspace.assets.colors"
msgstr "顏色"
-#: src/app/main/ui/dashboard/grid.cljs:143, src/app/main/ui/dashboard/grid.cljs:158, src/app/main/ui/workspace/sidebar/assets/components.cljs:489, src/app/main/ui/workspace/sidebar/assets.cljs:149
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:494
+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:499, src/app/main/ui/workspace/sidebar/assets.cljs:147
msgid "workspace.assets.components"
msgstr "元件"
-#: src/app/main/ui/workspace/context_menu.cljs:636, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:554, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:520
+msgid "workspace.assets.components.add-component"
+msgstr "新增元件"
+
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:127
+msgid "workspace.assets.create-group"
+msgstr "建立群組"
+
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:138
+msgid "workspace.assets.create-group-hint"
+msgstr "您的項目將自動命名為「群組名稱 / 項目名稱」"
+
+#: src/app/main/ui/workspace/context_menu.cljs:652, src/app/main/ui/workspace/sidebar/assets/colors.cljs:250, src/app/main/ui/workspace/sidebar/assets/components.cljs:564, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:426, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:442
msgid "workspace.assets.delete"
msgstr "刪除"
-#: src/app/main/ui/workspace/context_menu.cljs:641, src/app/main/ui/workspace/sidebar/assets/components.cljs:549
+#: src/app/main/ui/workspace/context_menu.cljs:657, src/app/main/ui/workspace/sidebar/assets/components.cljs:559
msgid "workspace.assets.duplicate"
msgstr "複本"
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:558
+msgid "workspace.assets.duplicate-main"
+msgstr "複製主要資源"
+
#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:246, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:438
msgid "workspace.assets.edit"
msgstr "編輯"
-#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:154
+#: src/app/main/ui/workspace/sidebar/assets.cljs:185
+msgid "workspace.assets.filter"
+msgstr "篩選資源"
+
+#: src/app/main/ui/workspace/sidebar/assets/graphics.cljs:386, src/app/main/ui/workspace/sidebar/assets.cljs:152
msgid "workspace.assets.graphics"
msgstr "圖形"
-#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:558, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:515
+msgid "workspace.assets.grid-view"
+msgstr "網格視圖"
+
+#: src/app/main/ui/workspace/sidebar/assets/colors.cljs:254, src/app/main/ui/workspace/sidebar/assets/components.cljs:568, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:430, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:447
msgid "workspace.assets.group"
msgstr "群組"
-#: src/app/main/ui/workspace/sidebar/assets.cljs:186
-msgid "workspace.assets.libraries"
-msgstr "檔案庫"
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:137
+msgid "workspace.assets.group-name"
+msgstr "群組名稱"
-#: src/app/main/ui/workspace/context_menu.cljs:639, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:543, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
+#: src/app/main/ui/workspace/sidebar/assets/components.cljs:511
+msgid "workspace.assets.list-view"
+msgstr "列表視圖"
+
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:107, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:417
+msgid "workspace.assets.local-library"
+msgstr "本地圖庫"
+
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:321
+msgid "workspace.assets.not-found"
+msgstr "未找到資源"
+
+#: src/app/main/ui/workspace/sidebar/assets/file_library.cljs:112
+msgid "workspace.assets.open-library"
+msgstr "開啟圖庫檔案"
+
+#: src/app/main/ui/workspace/context_menu.cljs:655, src/app/main/ui/workspace/sidebar/assets/colors.cljs:242, src/app/main/ui/workspace/sidebar/assets/components.cljs:553, src/app/main/ui/workspace/sidebar/assets/graphics.cljs:423, src/app/main/ui/workspace/sidebar/assets/groups.cljs:62, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:433
msgid "workspace.assets.rename"
msgstr "重新命名"
-#: src/app/main/ui/dashboard/grid.cljs:151, src/app/main/ui/dashboard/grid.cljs:206, src/app/main/ui/workspace/sidebar/assets/typographies.cljs:396, src/app/main/ui/workspace/sidebar/assets.cljs:162
+#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:128
+msgid "workspace.assets.rename-group"
+msgstr "重新命名群組"
+
+#: src/app/main/ui/workspace/sidebar/assets.cljs:182
+msgid "workspace.assets.search"
+msgstr "搜尋資源"
+
+#: src/app/main/ui/workspace/sidebar/assets.cljs
+#, unused
+msgid "workspace.assets.selected-count"
+msgid_plural "workspace.assets.selected-count"
+msgstr[0] "選取了 %s 項目"
+
+#: src/app/main/ui/workspace/sidebar/assets.cljs
+#, unused
+msgid "workspace.assets.shared-library"
+msgstr "共享圖庫"
+
+#: 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:201
+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:160
msgid "workspace.assets.typography"
msgstr "字體排版設計"
+#: src/app/main/ui/workspace/sidebar/assets/typographies.cljs:404
+msgid "workspace.assets.typography.add-typography"
+msgstr "新增字體排版"
+
#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs
#, unused
msgid "workspace.assets.typography.font-id"
msgstr "字型"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:517
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:520
msgid "workspace.assets.typography.font-size"
msgstr "尺寸"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:513
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:516
msgid "workspace.assets.typography.font-variant-id"
msgstr "變體"
-#: src/app/main/ui/dashboard/grid.cljs:216, src/app/main/ui/workspace/libraries.cljs:562, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:476, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:501, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:608, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:627
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:538
+msgid "workspace.assets.typography.go-to-edit"
+msgstr "前往樣式圖庫檔案進行編輯"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:528
+msgid "workspace.assets.typography.letter-spacing"
+msgstr "字距"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:524
+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:479, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:504, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:611, src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:630
msgid "workspace.assets.typography.sample"
msgstr "Ag"
+#, unused
+msgid "workspace.assets.typography.text-styles"
+msgstr "文字樣式"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:532
+msgid "workspace.assets.typography.text-transform"
+msgstr "文字變換"
+
#: src/app/main/ui/workspace/sidebar/assets/groups.cljs:65
msgid "workspace.assets.ungroup"
msgstr "取消群組"
+#: src/app/main/ui/workspace/context_menu.cljs:764
+msgid "workspace.context-menu.grid-cells.area"
+msgstr "建立區域"
+
+#: src/app/main/ui/workspace/context_menu.cljs:767
+msgid "workspace.context-menu.grid-cells.create-board"
+msgstr "建立版面"
+
+#: src/app/main/ui/workspace/context_menu.cljs:759
+msgid "workspace.context-menu.grid-cells.merge"
+msgstr "合併單元格"
+
+#: src/app/main/ui/workspace/context_menu.cljs:722
+msgid "workspace.context-menu.grid-track.column.add-after"
+msgstr "在右邊新增 1 列"
+
+#: src/app/main/ui/workspace/context_menu.cljs:721
+msgid "workspace.context-menu.grid-track.column.add-before"
+msgstr "在左邊新增 1 列"
+
+#: src/app/main/ui/workspace/context_menu.cljs:723
+msgid "workspace.context-menu.grid-track.column.delete"
+msgstr "刪除欄位"
+
+#: src/app/main/ui/workspace/context_menu.cljs:724
+msgid "workspace.context-menu.grid-track.column.delete-shapes"
+msgstr "刪除欄位和圖形"
+
+#: src/app/main/ui/workspace/context_menu.cljs:720
+msgid "workspace.context-menu.grid-track.column.duplicate"
+msgstr "複製欄位"
+
+#: src/app/main/ui/workspace/context_menu.cljs:729
+msgid "workspace.context-menu.grid-track.row.add-after"
+msgstr "在下方新增 1 行"
+
+#: src/app/main/ui/workspace/context_menu.cljs:728
+msgid "workspace.context-menu.grid-track.row.add-before"
+msgstr "在上方新增 1 行"
+
+#: src/app/main/ui/workspace/context_menu.cljs:730
+msgid "workspace.context-menu.grid-track.row.delete"
+msgstr "刪除列"
+
+#: src/app/main/ui/workspace/context_menu.cljs:731
+msgid "workspace.context-menu.grid-track.row.delete-shapes"
+msgstr "刪除列和圖形"
+
+#: src/app/main/ui/workspace/context_menu.cljs:727
+msgid "workspace.context-menu.grid-track.row.duplicate"
+msgstr "複製列"
+
+#: src/app/main/ui/workspace/sidebar/layers.cljs:528
+msgid "workspace.focus.focus-mode"
+msgstr "焦點模式"
+
+#: src/app/main/ui/workspace/context_menu.cljs:380, src/app/main/ui/workspace/context_menu.cljs:679
+msgid "workspace.focus.focus-off"
+msgstr "退出焦點模式"
+
+#: src/app/main/ui/workspace/context_menu.cljs:379
+msgid "workspace.focus.focus-on"
+msgstr "啟用焦點模式"
+
+#, unused
+msgid "workspace.focus.selection"
+msgstr "選取"
+
+#: src/app/util/color.cljs:34
+msgid "workspace.gradients.linear"
+msgstr "線性漸層"
+
+#: src/app/util/color.cljs:35
+msgid "workspace.gradients.radial"
+msgstr "放射狀漸層"
+
+#: src/app/main/ui/workspace/main_menu.cljs:243
+msgid "workspace.header.menu.disable-dynamic-alignment"
+msgstr "關閉動態對齊"
+
+#: src/app/main/ui/workspace/main_menu.cljs:197
+msgid "workspace.header.menu.disable-scale-content"
+msgstr "關閉等比縮放"
+
+#: src/app/main/ui/workspace/header.cljs
+#, unused
+msgid "workspace.header.menu.disable-scale-text"
+msgstr "關閉文字縮放"
+
+#: src/app/main/ui/workspace/main_menu.cljs:228
+msgid "workspace.header.menu.disable-snap-guides"
+msgstr "禁用對齊至導向線"
+
+#: src/app/main/ui/workspace/main_menu.cljs:258
+msgid "workspace.header.menu.disable-snap-pixel-grid"
+msgstr "關閉對齊至像素"
+
+#: src/app/main/ui/workspace/main_menu.cljs:212
+msgid "workspace.header.menu.disable-snap-ruler-guides"
+msgstr "關閉對齊至尺規導向線"
+
+#: src/app/main/ui/workspace/main_menu.cljs:244
+msgid "workspace.header.menu.enable-dynamic-alignment"
+msgstr "啟用動態對齊"
+
+#: src/app/main/ui/workspace/main_menu.cljs:198
+msgid "workspace.header.menu.enable-scale-content"
+msgstr "啟用等比縮放"
+
+#: src/app/main/ui/workspace/header.cljs
+#, unused
+msgid "workspace.header.menu.enable-scale-text"
+msgstr "啟用文字縮放"
+
+#: src/app/main/ui/workspace/main_menu.cljs:229
+msgid "workspace.header.menu.enable-snap-guides"
+msgstr "對齊至導向線"
+
+#: src/app/main/ui/workspace/main_menu.cljs:259
+msgid "workspace.header.menu.enable-snap-pixel-grid"
+msgstr "啟用對齊至像素"
+
+#: src/app/main/ui/workspace/main_menu.cljs:213
+msgid "workspace.header.menu.enable-snap-ruler-guides"
+msgstr "對齊至尺規導向線"
+
+#: src/app/main/ui/workspace/main_menu.cljs:388
+msgid "workspace.header.menu.hide-artboard-names"
+msgstr "隱藏版面名稱"
+
+#: src/app/main/ui/workspace/main_menu.cljs:342
+msgid "workspace.header.menu.hide-guides"
+msgstr "隱藏導向線"
+
+#: src/app/main/ui/workspace/main_menu.cljs:359
+msgid "workspace.header.menu.hide-palette"
+msgstr "隱藏顏色調色盤"
+
+#: src/app/main/ui/workspace/main_menu.cljs:400
+msgid "workspace.header.menu.hide-pixel-grid"
+msgstr "隱藏像素網格"
+
+#: src/app/main/ui/workspace/main_menu.cljs:326
+msgid "workspace.header.menu.hide-rules"
+msgstr "隱藏尺規"
+
+#: src/app/main/ui/workspace/main_menu.cljs:373
+msgid "workspace.header.menu.hide-textpalette"
+msgstr "隱藏字型面板"
+
+#: src/app/main/ui/workspace/main_menu.cljs:855
+msgid "workspace.header.menu.option.edit"
+msgstr "編輯"
+
#: src/app/main/ui/workspace/main_menu.cljs:844
msgid "workspace.header.menu.option.file"
msgstr "檔案"
+#: src/app/main/ui/workspace/main_menu.cljs:901
+msgid "workspace.header.menu.option.help-info"
+msgstr "幫助和資訊"
+
+#: src/app/main/ui/workspace/main_menu.cljs:910
+msgid "workspace.header.menu.option.power-up"
+msgstr "升級您的計劃"
+
#: src/app/main/ui/workspace/main_menu.cljs:877
msgid "workspace.header.menu.option.preferences"
msgstr "偏好設定"
@@ -2048,38 +4336,203 @@ msgstr "偏好設定"
msgid "workspace.header.menu.option.view"
msgstr "檢視"
+#: src/app/main/ui/workspace/main_menu.cljs:471
+msgid "workspace.header.menu.redo"
+msgstr "復原上一步操作"
+
#: src/app/main/ui/workspace/main_menu.cljs:442
msgid "workspace.header.menu.select-all"
msgstr "全選"
-#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:126
+#: src/app/main/ui/workspace/main_menu.cljs:389
+msgid "workspace.header.menu.show-artboard-names"
+msgstr "顯示版面名稱"
+
+#: src/app/main/ui/workspace/main_menu.cljs:343
+msgid "workspace.header.menu.show-guides"
+msgstr "顯示導向線"
+
+#: src/app/main/ui/workspace/main_menu.cljs:360
+msgid "workspace.header.menu.show-palette"
+msgstr "顯示顏色調色盤"
+
+#: src/app/main/ui/workspace/main_menu.cljs:401
+msgid "workspace.header.menu.show-pixel-grid"
+msgstr "顯示像素網格"
+
+#: src/app/main/ui/workspace/main_menu.cljs:327
+msgid "workspace.header.menu.show-rules"
+msgstr "顯示尺規"
+
+#: src/app/main/ui/workspace/main_menu.cljs:374
+msgid "workspace.header.menu.show-textpalette"
+msgstr "顯示字型面板"
+
+#: src/app/main/ui/workspace/main_menu.cljs:284
+msgid "workspace.header.menu.toggle-dark-theme"
+msgstr "切換到深色主題"
+
+#: src/app/main/ui/workspace/main_menu.cljs:283
+msgid "workspace.header.menu.toggle-light-theme"
+msgstr "切換到明亮主題"
+
+#: src/app/main/ui/workspace/main_menu.cljs:457
+msgid "workspace.header.menu.undo"
+msgstr "撤回"
+
+#: src/app/main/ui/viewer/header.cljs:98, src/app/main/ui/workspace/right_header.cljs:94
msgid "workspace.header.reset-zoom"
msgstr "重設"
-#: src/app/main/ui/workspace/right_header.cljs:58
+#: src/app/main/ui/workspace/left_header.cljs:127
+msgid "workspace.header.save-error"
+msgstr "儲存時出錯"
+
+#: src/app/main/ui/workspace/left_header.cljs:126
msgid "workspace.header.saved"
msgstr "已儲存"
-#: src/app/main/ui/workspace/header.cljs
-#, unused
+#: src/app/main/ui/workspace/left_header.cljs:124, src/app/main/ui/workspace/left_header.cljs:125
msgid "workspace.header.saving"
msgstr "正在儲存"
+#: src/app/main/ui/workspace/right_header.cljs:221
+msgid "workspace.header.share"
+msgstr "共享"
+
+#: src/app/main/ui/workspace/right_header.cljs:48, src/app/main/ui/workspace/right_header.cljs:53
+#, unused
+msgid "workspace.header.unsaved"
+msgstr "變更尚未儲存"
+
+#: src/app/main/ui/workspace/right_header.cljs:226
+msgid "workspace.header.viewer"
+msgstr "檢視模式 (%s)"
+
+#: src/app/main/ui/viewer/header.cljs:79, src/app/main/ui/workspace/right_header.cljs:77
+msgid "workspace.header.zoom"
+msgstr "縮放"
+
+#: src/app/main/ui/viewer/header.cljs:109
+msgid "workspace.header.zoom-fill"
+msgstr "填滿 - 按比例縮放以填滿"
+
+#: src/app/main/ui/viewer/header.cljs:102
+msgid "workspace.header.zoom-fit"
+msgstr "填滿 - 按比例縮小以適合"
+
+#: src/app/main/ui/workspace/right_header.cljs:97
+msgid "workspace.header.zoom-fit-all"
+msgstr "縮放至適合顯示全部"
+
+#: src/app/main/ui/viewer/header.cljs:116
+msgid "workspace.header.zoom-full-screen"
+msgstr "全螢幕"
+
+#: src/app/main/ui/workspace/right_header.cljs:104
+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:616
+msgid "workspace.layout_grid.editor.options.edit-grid"
+msgstr "編輯網格"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1304
+msgid "workspace.layout_grid.editor.options.exit"
+msgstr "離開"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:486, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:487
+msgid "workspace.layout_grid.editor.padding.expand"
+msgstr "顯示四邊內距選項"
+
+#: src/app/main/ui/workspace/viewport/grid_layout_editor.cljs:59
+msgid "workspace.layout_grid.editor.title"
+msgstr "編輯網格"
+
+#: src/app/main/ui/workspace/viewport/grid_layout_editor.cljs:65
+msgid "workspace.layout_grid.editor.top-bar.done"
+msgstr "完成"
+
+#: src/app/main/ui/workspace/viewport/grid_layout_editor.cljs:62
+msgid "workspace.layout_grid.editor.top-bar.locate"
+msgstr "定位"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1330
+msgid "workspace.layout_grid.editor.top-bar.locate.tooltip"
+msgstr "定位網格佈局"
+
#: src/app/main/ui/workspace/libraries.cljs
#, unused
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:141
+msgid "workspace.libraries.colors.empty-palette"
+msgstr "您的圖庫中還沒有顏色樣式"
+
+#: src/app/main/ui/workspace/text_palette.cljs:161
+msgid "workspace.libraries.colors.empty-typography-palette"
+msgstr "您的圖庫中還沒有字體樣式"
+
+#: 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 "檔案圖庫"
+
#: src/app/main/ui/workspace/colorpicker.cljs
#, unused
msgid "workspace.libraries.colors.hsv"
msgstr "HSV"
-#: src/app/main/ui/workspace/colorpicker.cljs:344
+#: src/app/main/ui/workspace/color_palette_ctx_menu.cljs:111, src/app/main/ui/workspace/colorpicker/libraries.cljs:47
+msgid "workspace.libraries.colors.recent-colors"
+msgstr "最近使用的顏色"
+
+#: src/app/main/ui/workspace/colorpicker.cljs
+#, unused
+msgid "workspace.libraries.colors.rgb-complementary"
+msgstr "RGB 互補色"
+
+#: src/app/main/ui/workspace/colorpicker.cljs:340
msgid "workspace.libraries.colors.rgba"
msgstr "RGBA"
-#: src/app/main/ui/workspace/libraries.cljs:629, src/app/main/ui/workspace/libraries.cljs:649
+#: src/app/main/ui/workspace/colorpicker.cljs:511
+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
+msgid "workspace.libraries.empty.add-some"
+msgstr "或增加這些來試試:"
+
+#: src/app/main/ui/workspace/libraries.cljs:365
+msgid "workspace.libraries.empty.no-libraries"
+msgstr "您的團隊中沒有共享圖庫,您可以尋找"
+
+#: src/app/main/ui/workspace/libraries.cljs:369
+msgid "workspace.libraries.empty.some-templates"
+msgstr "這裡的一些範本"
+
+#: src/app/main/ui/workspace/libraries.cljs:297
+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
+msgid "workspace.libraries.in-this-file"
+msgstr "此檔案中的圖庫"
+
+#: src/app/main/ui/workspace/libraries.cljs:611, src/app/main/ui/workspace/libraries.cljs:631
msgid "workspace.libraries.libraries"
msgstr "檔案庫"
@@ -2088,22 +4541,135 @@ msgstr "檔案庫"
msgid "workspace.libraries.library"
msgstr "檔案庫"
-#: src/app/main/ui/workspace/libraries.cljs:503
+#: src/app/main/ui/workspace/libraries.cljs:467
+msgid "workspace.libraries.library-updates"
+msgstr "圖庫更新"
+
+#: src/app/main/ui/workspace/libraries.cljs:360
+msgid "workspace.libraries.loading"
+msgstr "載入中…"
+
+#: src/app/main/ui/workspace/libraries.cljs:387
+#, unused
+msgid "workspace.libraries.more-templates"
+msgstr "您可以搜尋 "
+
+#: src/app/main/ui/workspace/libraries.cljs:465
+msgid "workspace.libraries.no-libraries-need-sync"
+msgstr "沒有需要更新的共享圖庫"
+
+#: src/app/main/ui/workspace/libraries.cljs:378
+msgid "workspace.libraries.no-matches-for"
+msgstr "沒有找到符合 '%s' 的"
+
+#: src/app/main/ui/workspace/libraries.cljs:334
+msgid "workspace.libraries.search-shared-libraries"
+msgstr "搜尋共享圖庫"
+
+#: src/app/main/ui/workspace/libraries.cljs:330
+msgid "workspace.libraries.shared-libraries"
+msgstr "共享圖庫"
+
+#: src/app/main/ui/workspace/libraries.cljs:352
+msgid "workspace.libraries.shared-library-btn"
+msgstr "連接圖庫"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:309
+msgid "workspace.libraries.text.multiple-typography"
+msgstr "多種字體樣式"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:312
+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
+msgid "workspace.libraries.unlink-library-btn"
+msgstr "取消圖庫連接"
+
+#: src/app/main/ui/workspace/libraries.cljs:487
msgid "workspace.libraries.update"
msgstr "更新"
-#: src/app/main/ui/workspace/libraries.cljs:632
+#: src/app/main/ui/workspace/libraries.cljs:563
+msgid "workspace.libraries.update.see-all-changes"
+msgstr "查看所有變更"
+
+#: src/app/main/ui/workspace/libraries.cljs:614
msgid "workspace.libraries.updates"
msgstr "更新"
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:745
+msgid "workspace.options.add-interaction"
+msgstr "按一下 + 按鈕來新增互動。"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:91
+msgid "workspace.options.blur-options.add-blur"
+msgstr "加入模糊效果"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:112
+msgid "workspace.options.blur-options.remove-blur"
+msgstr "移除模糊效果"
+
#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:87, src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:105
msgid "workspace.options.blur-options.title"
msgstr "模糊"
-#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:590, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:595
+#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:86
+msgid "workspace.options.blur-options.title.group"
+msgstr "群組模糊效果"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:85
+msgid "workspace.options.blur-options.title.multiple"
+msgstr "選擇模糊效果"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/blur.cljs:108
+msgid "workspace.options.blur-options.toggle-blur"
+msgstr "切換模糊效果"
+
+#: src/app/main/ui/workspace/sidebar/options/page.cljs:42, src/app/main/ui/workspace/sidebar/options/page.cljs:50
+msgid "workspace.options.canvas-background"
+msgstr "畫布背景"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:428
+msgid "workspace.options.clip-content"
+msgstr "裁切內容"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:678, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:683, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:812
msgid "workspace.options.component"
msgstr "元件"
+#: src/app/main/ui/inspect/annotation.cljs:19, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:188
+msgid "workspace.options.component.annotation"
+msgstr "註解"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:688
+msgid "workspace.options.component.copy"
+msgstr "複製"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:180
+msgid "workspace.options.component.create-annotation"
+msgstr "建立註解"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:179
+msgid "workspace.options.component.edit-annotation"
+msgstr "建立註解"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:687, src/app/main/ui/workspace/sidebar/options/menus/component.cljs:815
+msgid "workspace.options.component.main"
+msgstr "主要"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:497
+msgid "workspace.options.component.swap"
+msgstr "替換元件"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs:541
+msgid "workspace.options.component.swap.empty"
+msgstr "這個圖庫目前沒有資源"
+
#: src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:163
msgid "workspace.options.constraints"
msgstr "約束條件"
@@ -2132,6 +4698,10 @@ msgstr "左和右"
msgid "workspace.options.constraints.right"
msgstr "右"
+#: src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:142, src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:153
+msgid "workspace.options.constraints.scale"
+msgstr "縮放"
+
#: src/app/main/ui/workspace/sidebar/options/menus/constraints.cljs:149
msgid "workspace.options.constraints.top"
msgstr "上"
@@ -2144,7 +4714,7 @@ msgstr "上和下"
msgid "workspace.options.design"
msgstr "設計"
-#: src/app/main/ui/viewer/inspect/exports.cljs:139
+#: src/app/main/ui/inspect/exports.cljs:140
msgid "workspace.options.export"
msgstr "匯出"
@@ -2153,12 +4723,20 @@ msgstr "匯出"
msgid "workspace.options.export-multiple"
msgstr "匯出已選取項目"
-#: src/app/main/ui/viewer/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
+#: src/app/main/ui/inspect/exports.cljs:196, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:249
msgid "workspace.options.export-object"
msgid_plural "workspace.options.export-object"
msgstr[0] "匯出 %s 元素"
-#: src/app/main/ui/viewer/inspect/exports.cljs:178, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:228
+#: src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:188
+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
+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
msgid "workspace.options.export.suffix"
msgstr "後綴"
@@ -2166,7 +4744,7 @@ msgstr "後綴"
msgid "workspace.options.exporting-complete"
msgstr "完成匯出"
-#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/viewer/inspect/exports.cljs:194, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:247
+#: src/app/main/ui/exports/assets.cljs:169, src/app/main/ui/exports/assets.cljs:240, src/app/main/ui/inspect/exports.cljs:195, src/app/main/ui/workspace/sidebar/options/menus/exports.cljs:248
msgid "workspace.options.exporting-object"
msgstr "正在匯出…"
@@ -2182,6 +4760,39 @@ msgstr "匯出異常緩慢"
msgid "workspace.options.fill"
msgstr "填充"
+#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:151
+msgid "workspace.options.fill.add-fill"
+msgstr "新增填充顏色"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:164
+msgid "workspace.options.fill.remove-fill"
+msgstr "移除填充顏色"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:340, src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:341
+msgid "workspace.options.fit-content"
+msgstr "調整畫布以符合內容大小"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:182
+msgid "workspace.options.flows.add-flow-start"
+msgstr "新增流程起點"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:178
+msgid "workspace.options.flows.flow"
+msgstr "流程"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
+#, unused
+msgid "workspace.options.flows.flow-start"
+msgstr "流程起點"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:164
+msgid "workspace.options.flows.flow-starts"
+msgstr "流程起點"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:154
+msgid "workspace.options.flows.remove-flow"
+msgstr "移除流程"
+
#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:31
msgid "workspace.options.grid.auto"
msgstr "自動"
@@ -2190,15 +4801,32 @@ msgstr "自動"
msgid "workspace.options.grid.column"
msgstr "欄"
+#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs
+#, unused
+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
+msgid "workspace.options.grid.params.color"
+msgstr "顏色"
+
#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs
#, unused
msgid "workspace.options.grid.params.columns"
msgstr "欄"
+#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:263
+msgid "workspace.options.grid.params.gutter"
+msgstr "網格間距"
+
#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:250
msgid "workspace.options.grid.params.height"
msgstr "高度"
+#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:274
+msgid "workspace.options.grid.params.margin"
+msgstr "邊距"
+
#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs
#, unused
msgid "workspace.options.grid.params.rows"
@@ -2234,10 +4862,18 @@ msgstr "左"
msgid "workspace.options.grid.params.type.right"
msgstr "右"
+#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:229
+msgid "workspace.options.grid.params.type.stretch"
+msgstr "延展"
+
#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:231
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
+msgid "workspace.options.grid.params.use-default"
+msgstr "使用預設"
+
#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:251
msgid "workspace.options.grid.params.width"
msgstr "寬度"
@@ -2250,54 +4886,379 @@ msgstr "列"
msgid "workspace.options.grid.square"
msgstr "正方形"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:362
+#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:50
+msgid "workspace.options.group-fill"
+msgstr "群組填充"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:42
+msgid "workspace.options.group-stroke"
+msgstr "群組描邊"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:323
+msgid "workspace.options.guides.add-guide"
+msgstr "新增輔助線"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:187
+msgid "workspace.options.guides.remove-guide"
+msgstr "移除輔助線"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:320
+msgid "workspace.options.guides.title"
+msgstr "輔助線"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:183
+msgid "workspace.options.guides.toggle-guide"
+msgstr "切換輔助線"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:359
msgid "workspace.options.height"
msgstr "高度"
+#: src/app/main/ui/workspace/sidebar/options.cljs:193, src/app/main/ui/workspace/sidebar/options.cljs:196
+msgid "workspace.options.inspect"
+msgstr "檢視"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:474
+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
+msgid "workspace.options.interaction-after-delay"
+msgstr "延遲執行"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:620
msgid "workspace.options.interaction-animation"
msgstr "動畫"
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:412
+msgid "workspace.options.interaction-animation-dissolve"
+msgstr "淡出"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:411
msgid "workspace.options.interaction-animation-none"
msgstr "無"
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:418
+msgid "workspace.options.interaction-animation-push"
+msgstr "推動"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:413
+msgid "workspace.options.interaction-animation-slide"
+msgstr "滑動"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:397
msgid "workspace.options.interaction-auto"
msgstr "自動"
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:610
+msgid "workspace.options.interaction-background"
+msgstr "新增背景疊加層"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:596
+msgid "workspace.options.interaction-close-outside"
+msgstr "點擊外部時關閉"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:378
+msgid "workspace.options.interaction-close-overlay"
+msgstr "關閉疊加層"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:57
+msgid "workspace.options.interaction-close-overlay-dest"
+msgstr "關閉疊加層:%s"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:462
msgid "workspace.options.interaction-delay"
msgstr "延遲"
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:484
+msgid "workspace.options.interaction-destination"
+msgstr "終點"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:667
+msgid "workspace.options.interaction-duration"
+msgstr "持續時間"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:680
+msgid "workspace.options.interaction-easing"
+msgstr "緩衝效果"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:422
+msgid "workspace.options.interaction-easing-ease"
+msgstr "緩衝"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:423
+msgid "workspace.options.interaction-easing-ease-in"
+msgstr "緩慢開始"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:425
+msgid "workspace.options.interaction-easing-ease-in-out"
+msgstr "先慢後快再慢"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:424
+msgid "workspace.options.interaction-easing-ease-out"
+msgstr "逐漸減速"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:421
msgid "workspace.options.interaction-easing-linear"
msgstr "線性"
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
+#, unused
+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
+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
+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
msgid "workspace.options.interaction-ms"
msgstr "毫秒"
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:375
+msgid "workspace.options.interaction-navigate-to"
+msgstr "導航至"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:51
+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
+msgid "workspace.options.interaction-none"
+msgstr "(尚未設置)"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:697
+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
+msgid "workspace.options.interaction-on-click"
+msgstr "點擊觸發"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:376
+msgid "workspace.options.interaction-open-overlay"
+msgstr "開啟覆蓋層"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:53
+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
+msgid "workspace.options.interaction-open-url"
+msgstr "開啟URL"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
+#, unused
+msgid "workspace.options.interaction-out"
+msgstr "離開"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:409
+msgid "workspace.options.interaction-pos-bottom-center"
+msgstr "底部中心"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:407
+msgid "workspace.options.interaction-pos-bottom-left"
+msgstr "左下角"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:408
+msgid "workspace.options.interaction-pos-bottom-right"
+msgstr "右下角"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:403
+msgid "workspace.options.interaction-pos-center"
+msgstr "置中"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:402
msgid "workspace.options.interaction-pos-manual"
msgstr "手動"
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:406
+msgid "workspace.options.interaction-pos-top-center"
+msgstr "頂部中心"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:404
+msgid "workspace.options.interaction-pos-top-left"
+msgstr "左上角"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:405
+msgid "workspace.options.interaction-pos-top-right"
+msgstr "右上角"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:530
msgid "workspace.options.interaction-position"
msgstr "位置"
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:500
+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
+msgid "workspace.options.interaction-prev-screen"
+msgstr "上一個畫面"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:521
+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
+msgid "workspace.options.interaction-self"
+msgstr "自身"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:377
+msgid "workspace.options.interaction-toggle-overlay"
+msgstr "切換覆蓋層"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:55
+msgid "workspace.options.interaction-toggle-overlay-dest"
+msgstr "切換覆蓋層:%s"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:451
+msgid "workspace.options.interaction-trigger"
+msgstr "觸發"
+
#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:509
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
+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
+msgid "workspace.options.interaction-while-pressing"
+msgstr "當按住時"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:731
+msgid "workspace.options.interactions"
+msgstr "互動"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:735
+msgid "workspace.options.interactions.add-interaction"
+msgstr "新增互動"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs
+#, unused
+msgid "workspace.options.interactions.remove-interaction"
+msgstr "移除互動"
+
#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:152
msgid "workspace.options.layer-options.blend-mode.color"
msgstr "顏色"
-#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:561
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:141
+msgid "workspace.options.layer-options.blend-mode.color-burn"
+msgstr "顏色加深"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:144
+msgid "workspace.options.layer-options.blend-mode.color-dodge"
+msgstr "顏色增亮"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:139
+msgid "workspace.options.layer-options.blend-mode.darken"
+msgstr "變暗"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:148
+msgid "workspace.options.layer-options.blend-mode.difference"
+msgstr "差值"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:149
+msgid "workspace.options.layer-options.blend-mode.exclusion"
+msgstr "排除"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:147
+msgid "workspace.options.layer-options.blend-mode.hard-light"
+msgstr "強光"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:150
+msgid "workspace.options.layer-options.blend-mode.hue"
+msgstr "色調"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:142
+msgid "workspace.options.layer-options.blend-mode.lighten"
+msgstr "變亮"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:153
+msgid "workspace.options.layer-options.blend-mode.luminosity"
+msgstr "亮度"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:140
+msgid "workspace.options.layer-options.blend-mode.multiply"
+msgstr "圖層混合"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:138
+msgid "workspace.options.layer-options.blend-mode.normal"
+msgstr "正常"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:145
+msgid "workspace.options.layer-options.blend-mode.overlay"
+msgstr "疊層"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:151
+msgid "workspace.options.layer-options.blend-mode.saturation"
+msgstr "飽和度"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:143
+msgid "workspace.options.layer-options.blend-mode.screen"
+msgstr "螢幕疊加"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:146
+msgid "workspace.options.layer-options.blend-mode.soft-light"
+msgstr "柔光"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs
+#, unused
+msgid "workspace.options.layer-options.title"
+msgstr "圖層"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs
+#, unused
+msgid "workspace.options.layer-options.title.group"
+msgstr "群組圖層"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs
+#, unused
+msgid "workspace.options.layer-options.title.multiple"
+msgstr "選擇圖層"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:191, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:197
+msgid "workspace.options.layer-options.toggle-layer"
+msgstr "切換圖層可見性"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs
+#, unused
+msgid "workspace.options.layout-item.advanced-ops"
+msgstr "進階選項"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:563
msgid "workspace.options.layout-item.layout-item-max-h"
msgstr "最高"
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:530
+msgid "workspace.options.layout-item.layout-item-max-w"
+msgstr "Max.Width"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:547
+msgid "workspace.options.layout-item.layout-item-min-h"
+msgstr "Min.Height"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs:514
+msgid "workspace.options.layout-item.layout-item-min-w"
+msgstr "Min.Width"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs
+#, unused
+msgid "workspace.options.layout-item.title.layout-item-max-h"
+msgstr "最大高度"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs
+#, unused
+msgid "workspace.options.layout-item.title.layout-item-max-w"
+msgstr "最大寬度"
+
#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs
#, unused
msgid "workspace.options.layout-item.title.layout-item-min-h"
@@ -2313,25 +5274,99 @@ msgstr "最小寬度"
msgid "workspace.options.layout.bottom"
msgstr "下"
+#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
+#, unused
+msgid "workspace.options.layout.direction.column"
+msgstr "欄位"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
+#, unused
+msgid "workspace.options.layout.direction.column-reverse"
+msgstr "反轉欄位"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
+#, unused
+msgid "workspace.options.layout.direction.row"
+msgstr "列"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
+#, unused
+msgid "workspace.options.layout.direction.row-reverse"
+msgstr "反轉列"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
+#, unused
+msgid "workspace.options.layout.gap"
+msgstr "間距"
+
#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
#, unused
msgid "workspace.options.layout.left"
msgstr "左"
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs
+#, unused
+msgid "workspace.options.layout.margin"
+msgstr "邊距"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs
+#, unused
+msgid "workspace.options.layout.margin-all"
+msgstr "所有邊"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_item.cljs
+#, unused
+msgid "workspace.options.layout.margin-simple"
+msgstr "簡單邊距"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
+#, unused
+msgid "workspace.options.layout.packed"
+msgstr "緊湊排版"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
+#, unused
+msgid "workspace.options.layout.padding"
+msgstr "內邊距"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
+#, unused
+msgid "workspace.options.layout.padding-all"
+msgstr "所有邊界"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
+#, unused
+msgid "workspace.options.layout.padding-simple"
+msgstr "簡單內邊距"
+
#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
#, unused
msgid "workspace.options.layout.right"
msgstr "右"
+#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
+#, unused
+msgid "workspace.options.layout.space-around"
+msgstr "圍繞間距"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
+#, unused
+msgid "workspace.options.layout.space-between"
+msgstr "元素間距"
+
#: src/app/main/ui/workspace/sidebar/options/menus/layout.cljs
#, unused
msgid "workspace.options.layout.top"
msgstr "上"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:171
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:157
msgid "workspace.options.more-colors"
msgstr "更多顏色"
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:141
+msgid "workspace.options.more-lib-colors"
+msgstr "更多圖層顏色"
+
#: src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:176
msgid "workspace.options.opacity"
msgstr "不透明度"
@@ -2349,7 +5384,31 @@ msgstr "原型"
msgid "workspace.options.radius"
msgstr "圓角半徑"
-#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:118
+msgid "workspace.options.radius-bottom-left"
+msgstr "左下角"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:126
+msgid "workspace.options.radius-bottom-right"
+msgstr "右下角"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:102
+msgid "workspace.options.radius-top-left"
+msgstr "左上角"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:110
+msgid "workspace.options.radius-top-right"
+msgstr "右上角"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:135
+msgid "workspace.options.radius.hide-all-corners"
+msgstr "合併獨立圓角半徑"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/border_radius.cljs:136
+msgid "workspace.options.radius.show-single-corners"
+msgstr "顯示獨立圓角半徑"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:189
msgid "workspace.options.recent-fonts"
msgstr "最近"
@@ -2357,46 +5416,171 @@ msgstr "最近"
msgid "workspace.options.retry"
msgstr "重試"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:406
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:403
msgid "workspace.options.rotation"
msgstr "旋轉"
-#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:128
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:186
+msgid "workspace.options.search-font"
+msgstr "搜尋字型"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:749
+msgid "workspace.options.select-a-shape"
+msgstr "選擇一個形狀、畫板或組合,並拖動連接至其他畫板。"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/color_selection.cljs:114
msgid "workspace.options.selection-color"
msgstr "已選顏色"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:202, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:204
+#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:49
+msgid "workspace.options.selection-fill"
+msgstr "選取填充"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:41
+msgid "workspace.options.selection-stroke"
+msgstr "選取描邊"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:292
+msgid "workspace.options.shadow-options.add-shadow"
+msgstr "新增陰影"
+
+#: src/app/main/ui/inspect/attributes/shadow.cljs:40, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:168, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:170
msgid "workspace.options.shadow-options.blur"
msgstr "模糊"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:200
+msgid "workspace.options.shadow-options.color"
+msgstr "陰影顏色"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:112
+msgid "workspace.options.shadow-options.drop-shadow"
+msgstr "陰影效果"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:113
+msgid "workspace.options.shadow-options.inner-shadow"
+msgstr "內陰影"
+
+#: src/app/main/ui/inspect/attributes/shadow.cljs:38, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:158
msgid "workspace.options.shadow-options.offsetx"
msgstr "X"
-#: src/app/main/ui/viewer/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:228
+#: src/app/main/ui/inspect/attributes/shadow.cljs:39, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:190
msgid "workspace.options.shadow-options.offsety"
msgstr "Y"
-#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:300
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:148, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:305
+msgid "workspace.options.shadow-options.remove-shadow"
+msgstr "移除陰影"
+
+#: src/app/main/ui/inspect/attributes/shadow.cljs:41, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:179, src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:181
+msgid "workspace.options.shadow-options.spread"
+msgstr "擴散"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:287
msgid "workspace.options.shadow-options.title"
msgstr "陰影"
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:286
+msgid "workspace.options.shadow-options.title.group"
+msgstr "群組陰影"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:285
+msgid "workspace.options.shadow-options.title.multiple"
+msgstr "選取陰影"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/shadow.cljs:144
+msgid "workspace.options.shadow-options.toggle-shadow"
+msgstr "切換陰影"
+
#: src/app/main/ui/workspace/sidebar/options/menus/fill.cljs:193
msgid "workspace.options.show-fill-on-export"
msgstr "在匯出中顯示"
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:442
+msgid "workspace.options.show-in-viewer"
+msgstr "在檢視模式中顯示"
+
#: src/app/main/ui/workspace/sidebar/options/menus/frame_grid.cljs:164
msgid "workspace.options.size"
msgstr "尺寸"
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:302
+msgid "workspace.options.size-presets"
+msgstr "尺寸預設"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:43
+msgid "workspace.options.stroke"
+msgstr "邊框"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs
+#, unused
+msgid "workspace.options.stroke-cap.circle-marker"
+msgstr "圓形標記"
+
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:131
+msgid "workspace.options.stroke-cap.circle-marker-short"
+msgstr "圓形"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs
+#, unused
+msgid "workspace.options.stroke-cap.diamond-marker"
+msgstr "鑽石標記"
+
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:132
+msgid "workspace.options.stroke-cap.diamond-marker-short"
+msgstr "鑽石"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs
+#, unused
+msgid "workspace.options.stroke-cap.line-arrow"
+msgstr "箭頭線"
+
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:128
+msgid "workspace.options.stroke-cap.line-arrow-short"
+msgstr "箭頭"
+
#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:126
msgid "workspace.options.stroke-cap.none"
msgstr "無"
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:134
+msgid "workspace.options.stroke-cap.round"
+msgstr "圓角"
+
#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:135
msgid "workspace.options.stroke-cap.square"
msgstr "正方形"
+#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs
+#, unused
+msgid "workspace.options.stroke-cap.square-marker"
+msgstr "方形標記"
+
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:130
+msgid "workspace.options.stroke-cap.square-marker-short"
+msgstr "矩形"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs
+#, unused
+msgid "workspace.options.stroke-cap.triangle-arrow"
+msgstr "三角箭頭"
+
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:129
+msgid "workspace.options.stroke-cap.triangle-arrow-short"
+msgstr "三角"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:192
+msgid "workspace.options.stroke-color"
+msgstr "描邊顏色"
+
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:166
+msgid "workspace.options.stroke-width"
+msgstr "描邊寬度"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:171
+msgid "workspace.options.stroke.add-stroke"
+msgstr "新增描邊顏色"
+
#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:89
msgid "workspace.options.stroke.center"
msgstr "置中"
@@ -2413,14 +5597,34 @@ msgstr "點線"
msgid "workspace.options.stroke.inner"
msgstr "裏面"
+#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:108
+msgid "workspace.options.stroke.mixed"
+msgstr "混合"
+
#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:91
msgid "workspace.options.stroke.outer"
msgstr "外面"
+#: src/app/main/ui/workspace/sidebar/options/menus/stroke.cljs:184
+msgid "workspace.options.stroke.remove-stroke"
+msgstr "移除描邊"
+
#: src/app/main/ui/workspace/sidebar/options/rows/stroke_row.cljs:105
msgid "workspace.options.stroke.solid"
msgstr "實線"
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:117
+msgid "workspace.options.text-options.align-bottom"
+msgstr "對齊底部"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:113
+msgid "workspace.options.text-options.align-middle"
+msgstr "對齊中間"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:109
+msgid "workspace.options.text-options.align-top"
+msgstr "對齊頂部"
+
#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:84
msgid "workspace.options.text-options.direction-ltr"
msgstr "左至右"
@@ -2429,6 +5633,26 @@ msgstr "左至右"
msgid "workspace.options.text-options.direction-rtl"
msgstr "右至左"
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:151
+msgid "workspace.options.text-options.grow-auto-height"
+msgstr "自動高度"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:147
+msgid "workspace.options.text-options.grow-auto-width"
+msgstr "自動寬度"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:143
+msgid "workspace.options.text-options.grow-fixed"
+msgstr "固定"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:392
+msgid "workspace.options.text-options.letter-spacing"
+msgstr "字母間距"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs:374
+msgid "workspace.options.text-options.line-height"
+msgstr "線高"
+
#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs
#, unused
msgid "workspace.options.text-options.lowercase"
@@ -2439,14 +5663,43 @@ msgstr "小寫"
msgid "workspace.options.text-options.none"
msgstr "無"
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:178
+msgid "workspace.options.text-options.strikethrough"
+msgstr "刪除線 (%s)"
+
#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:53
msgid "workspace.options.text-options.text-align-center"
msgstr "置中 (%s)"
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:61
+msgid "workspace.options.text-options.text-align-justify"
+msgstr "對齊兩端 (%s)"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:49
+msgid "workspace.options.text-options.text-align-left"
+msgstr "左對齊 (%s)"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:57
+msgid "workspace.options.text-options.text-align-right"
+msgstr "右對齊 (%s)"
+
#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:191
msgid "workspace.options.text-options.title"
msgstr "文字"
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:190
+msgid "workspace.options.text-options.title-group"
+msgstr "群組文字"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:189
+msgid "workspace.options.text-options.title-selection"
+msgstr "選取文字"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/typography.cljs
+#, unused
+msgid "workspace.options.text-options.titlecase"
+msgstr "標題大小寫"
+
#: src/app/main/ui/workspace/sidebar/options/menus/text.cljs:173
msgid "workspace.options.text-options.underline"
msgstr "底線"
@@ -2456,11 +5709,19 @@ msgstr "底線"
msgid "workspace.options.text-options.uppercase"
msgstr "大寫"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:383
+#: src/app/main/ui/workspace/sidebar/options/menus/interactions.cljs:753
+msgid "workspace.options.use-play-button"
+msgstr "使用標題上的播放按鈕來執行原型檢視。"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:348
+msgid "workspace.options.width"
+msgstr "寬度"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:380
msgid "workspace.options.x"
msgstr "X軸"
-#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:394
+#: src/app/main/ui/workspace/sidebar/options/menus/measures.cljs:391
msgid "workspace.options.y"
msgstr "Y 軸"
@@ -2480,90 +5741,734 @@ msgstr "繪製節點 (%s)"
msgid "workspace.path.actions.join-nodes"
msgstr "聯接節點 (%s)"
-#: src/app/main/ui/workspace/context_menu.cljs:185
+#: src/app/main/ui/workspace/viewport/path_actions.cljs:204
+msgid "workspace.path.actions.make-corner"
+msgstr "到角落 (%s)"
+
+#: src/app/main/ui/workspace/viewport/path_actions.cljs:211
+msgid "workspace.path.actions.make-curve"
+msgstr "\"轉為曲線 (%s)\""
+
+#: src/app/main/ui/workspace/viewport/path_actions.cljs:182
+msgid "workspace.path.actions.merge-nodes"
+msgstr "合併節點(%s)"
+
+#: src/app/main/ui/workspace/viewport/path_actions.cljs:159
+msgid "workspace.path.actions.move-nodes"
+msgstr "移動節點(%s)"
+
+#: src/app/main/ui/workspace/viewport/path_actions.cljs:196
+msgid "workspace.path.actions.separate-nodes"
+msgstr "分離節點(%s)"
+
+#: src/app/main/ui/workspace/viewport/path_actions.cljs:218
+msgid "workspace.path.actions.snap-nodes"
+msgstr "對齊節點(%s)"
+
+#: src/app/main/ui/workspace/plugins.cljs:83
+msgid "workspace.plugins.button-open"
+msgstr "開啟"
+
+#: src/app/main/ui/workspace/plugins.cljs:202
+#, markdown
+msgid "workspace.plugins.discover"
+msgstr "探索更多外掛(%s)"
+
+#: src/app/main/ui/workspace/plugins.cljs:209
+msgid "workspace.plugins.empty-plugins"
+msgstr "尚未安裝任何外掛"
+
+#: src/app/main/ui/workspace/plugins.cljs:196
+msgid "workspace.plugins.error.manifest"
+msgstr "外掛清單有誤。"
+
+#: src/app/main/data/plugins.cljs:86, src/app/main/ui/workspace/main_menu.cljs:743, src/app/main/ui/workspace/plugins.cljs:82
+msgid "workspace.plugins.error.need-editor"
+msgstr "您需要具備編輯者權限才能使用此外掛"
+
+#: src/app/main/ui/workspace/plugins.cljs:192
+msgid "workspace.plugins.error.url"
+msgstr "此外掛不存在,或 URL 不正確。"
+
+#: src/app/main/ui/workspace/plugins.cljs:188
+msgid "workspace.plugins.install"
+msgstr "安裝"
+
+#: src/app/main/ui/workspace/plugins.cljs:218
+msgid "workspace.plugins.installed-plugins"
+msgstr "安裝外掛"
+
+#: src/app/main/ui/workspace/main_menu.cljs:698
+msgid "workspace.plugins.menu.plugins-manager"
+msgstr "外掛管理員"
+
+#: src/app/main/ui/workspace/main_menu.cljs:889
+msgid "workspace.plugins.menu.title"
+msgstr "外掛"
+
+#: src/app/main/ui/workspace/plugins.cljs:372
+msgid "workspace.plugins.permissions-update.title"
+msgstr "更新此外掛"
+
+#: src/app/main/ui/workspace/plugins.cljs:376
+msgid "workspace.plugins.permissions-update.warning"
+msgstr "此外掛自您上次打開以來已被修改。現在它還需要存取以下內容:"
+
+#: src/app/main/ui/workspace/plugins.cljs:283
+msgid "workspace.plugins.permissions.allow-download"
+msgstr "開始檔案下載。"
+
+#: src/app/main/ui/workspace/plugins.cljs:276
+msgid "workspace.plugins.permissions.comment-read"
+msgstr "閱讀您的留言和回覆。"
+
+#: src/app/main/ui/workspace/plugins.cljs:270
+msgid "workspace.plugins.permissions.comment-write"
+msgstr "閱讀並修改您的留言,並以您的名義回覆。"
+
+#: src/app/main/ui/workspace/plugins.cljs:243
+msgid "workspace.plugins.permissions.content-read"
+msgstr "使用者有權存取閱讀的檔案內容。"
+
+#: src/app/main/ui/workspace/plugins.cljs:237
+msgid "workspace.plugins.permissions.content-write"
+msgstr "使用者有權存取閱讀以及修改檔案內容。"
+
+#: src/app/main/ui/workspace/plugins.cljs:323
+msgid "workspace.plugins.permissions.disclaimer"
+msgstr "請注意,此外掛由外部廠商建立,因此在授權存取之前,請確保您信任它。我們重視您的資料隱私與安全。如有任何疑慮,請聯絡我們的客服。"
+
+#: src/app/main/ui/workspace/plugins.cljs:263
+msgid "workspace.plugins.permissions.library-read"
+msgstr "讀取您的圖庫與資源。"
+
+#: src/app/main/ui/workspace/plugins.cljs:257
+msgid "workspace.plugins.permissions.library-write"
+msgstr "讀取以及修改您的圖庫與資源。"
+
+#: src/app/main/ui/workspace/plugins.cljs:316
+msgid "workspace.plugins.permissions.title"
+msgstr "'%s' 外掛需要訪問以下內容:"
+
+#: src/app/main/ui/workspace/plugins.cljs:250
+msgid "workspace.plugins.permissions.user-read"
+msgstr "讀取當前使用者的個人資料資訊。"
+
+#: src/app/main/ui/workspace/plugins.cljs:214
+msgid "workspace.plugins.plugin-list-link"
+msgstr "外掛列表"
+
+#: src/app/main/ui/workspace/plugins.cljs:86
+msgid "workspace.plugins.remove-plugin"
+msgstr "移除外掛"
+
+#: src/app/main/ui/workspace/plugins.cljs:183
+msgid "workspace.plugins.search-placeholder"
+msgstr "寫入外掛網址"
+
+#, unused
+msgid "workspace.plugins.success"
+msgstr "外掛已正確載入。"
+
+#: src/app/main/ui/workspace/plugins.cljs:177
+msgid "workspace.plugins.title"
+msgstr "外掛"
+
+#: src/app/main/ui/workspace/plugins.cljs:436
+msgid "workspace.plugins.try-out.cancel"
+msgstr "不是現在"
+
+#: src/app/main/ui/workspace/plugins.cljs:429
+msgid "workspace.plugins.try-out.message"
+msgstr "想看看嗎?它將在您當前的團隊中以新草稿開啟。(如果不想,您隨時可以在任何檔案的已安裝外掛中找到它。)"
+
+#: src/app/main/ui/workspace/plugins.cljs:425
+msgid "workspace.plugins.try-out.title"
+msgstr "'%s' 外掛已為您的使用者安裝!"
+
+#: src/app/main/ui/workspace/plugins.cljs:442
+msgid "workspace.plugins.try-out.try"
+msgstr "嘗試外掛"
+
+#: src/app/main/ui/workspace/context_menu.cljs:542
+msgid "workspace.shape.menu.add-flex"
+msgstr "新增彈性布局"
+
+#: src/app/main/ui/workspace/context_menu.cljs:546
+msgid "workspace.shape.menu.add-grid"
+msgstr "新增網格佈局"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1013, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1039
+msgid "workspace.shape.menu.add-layout"
+msgstr "新增佈局"
+
+#: src/app/main/ui/workspace/context_menu.cljs:266
+msgid "workspace.shape.menu.back"
+msgstr "送到最底層"
+
+#: src/app/main/ui/workspace/context_menu.cljs:263
+msgid "workspace.shape.menu.backward"
+msgstr "向後移動"
+
+#: src/app/main/ui/workspace/context_menu.cljs:186
msgid "workspace.shape.menu.copy"
msgstr "複製"
-#: src/app/main/ui/workspace/context_menu.cljs:191
+#: src/app/main/ui/workspace/context_menu.cljs:204
+msgid "workspace.shape.menu.copy-css"
+msgstr "複製為 CSS"
+
+#: src/app/main/ui/workspace/context_menu.cljs:206
+msgid "workspace.shape.menu.copy-css-nested"
+msgstr "複製為 CSS(巢狀層級)"
+
+#: src/app/main/ui/workspace/context_menu.cljs:189
+msgid "workspace.shape.menu.copy-link"
+msgstr "複製連結到剪貼簿"
+
+#: src/app/main/ui/workspace/context_menu.cljs:202
+msgid "workspace.shape.menu.copy-paste-as"
+msgstr "複製/貼上為 ..."
+
+#: src/app/main/ui/workspace/context_menu.cljs:214
+msgid "workspace.shape.menu.copy-props"
+msgstr "複製屬性"
+
+#: src/app/main/ui/workspace/context_menu.cljs:211
+msgid "workspace.shape.menu.copy-text"
+msgstr "複製為純文字"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:454
+msgid "workspace.shape.menu.create-annotation"
+msgstr "建立注釋"
+
+#: src/app/main/ui/workspace/context_menu.cljs:366
+msgid "workspace.shape.menu.create-artboard-from-selection"
+msgstr "選擇面板"
+
+#: src/app/main/ui/workspace/context_menu.cljs:568
+msgid "workspace.shape.menu.create-component"
+msgstr "建立元件"
+
+#: src/app/main/ui/workspace/context_menu.cljs:572
+msgid "workspace.shape.menu.create-multiple-components"
+msgstr "建立多個元件"
+
+#: src/app/main/ui/workspace/context_menu.cljs:192
msgid "workspace.shape.menu.cut"
msgstr "剪下"
-#: src/app/main/ui/workspace/context_menu.cljs:585, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:764, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1052
+#: src/app/main/ui/workspace/context_menu.cljs:598, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:773, src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1061
msgid "workspace.shape.menu.delete"
msgstr "刪除"
-#: src/app/main/ui/workspace/context_menu.cljs:197
+#: src/app/main/ui/workspace/context_menu.cljs:489
+msgid "workspace.shape.menu.delete-flow-start"
+msgstr "刪除流程開始"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:459
+msgid "workspace.shape.menu.detach-instance"
+msgstr "分離實例"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:458
+msgid "workspace.shape.menu.detach-instances-in-bulk"
+msgstr "分離實例"
+
+#: src/app/main/ui/workspace/context_menu.cljs:430, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:75
+msgid "workspace.shape.menu.difference"
+msgstr "差異"
+
+#: src/app/main/ui/workspace/context_menu.cljs:198
msgid "workspace.shape.menu.duplicate"
msgstr "複本"
-#: src/app/main/ui/workspace/context_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:416
msgid "workspace.shape.menu.edit"
msgstr "編輯"
-#: src/app/main/ui/workspace/context_menu.cljs:350
+#: src/app/main/ui/workspace/context_menu.cljs:436, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
+msgid "workspace.shape.menu.exclude"
+msgstr "排除"
+
+#: src/app/main/ui/workspace/context_menu.cljs:443, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:89
+msgid "workspace.shape.menu.flatten"
+msgstr "扁平化"
+
+#: src/app/main/ui/workspace/context_menu.cljs:283
+msgid "workspace.shape.menu.flip-horizontal"
+msgstr "水平翻轉"
+
+#: src/app/main/ui/workspace/context_menu.cljs:279
+msgid "workspace.shape.menu.flip-vertical"
+msgstr "垂直翻轉"
+
+#: src/app/main/ui/workspace/context_menu.cljs:491
+msgid "workspace.shape.menu.flow-start"
+msgstr "流程開始"
+
+#: src/app/main/ui/workspace/context_menu.cljs:257
+msgid "workspace.shape.menu.forward"
+msgstr "向前移動"
+
+#: src/app/main/ui/workspace/context_menu.cljs:260
+msgid "workspace.shape.menu.front"
+msgstr "帶到最前面"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs, src/app/main/ui/workspace/context_menu.cljs
+#, unused
+msgid "workspace.shape.menu.go-main"
+msgstr "前往主要元件檔案"
+
+#: src/app/main/ui/workspace/context_menu.cljs:352
msgid "workspace.shape.menu.group"
msgstr "群組"
-#: src/app/main/ui/workspace/context_menu.cljs:458, src/app/main/ui/workspace/sidebar/layer_item.cljs:145
+#: src/app/main/ui/workspace/context_menu.cljs:460, src/app/main/ui/workspace/sidebar/layer_item.cljs:151
msgid "workspace.shape.menu.hide"
msgstr "隱藏"
-#: src/app/main/ui/workspace/context_menu.cljs:658, src/app/main/ui/workspace/main_menu.cljs:414
+#: src/app/main/ui/workspace/context_menu.cljs:674, src/app/main/ui/workspace/main_menu.cljs:414
msgid "workspace.shape.menu.hide-ui"
msgstr "顯示/隱藏使用者介面"
-#: src/app/main/ui/workspace/context_menu.cljs:466, src/app/main/ui/workspace/sidebar/layer_item.cljs:153, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
+#: src/app/main/ui/workspace/context_menu.cljs:433, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
+msgid "workspace.shape.menu.intersection"
+msgstr "交集"
+
+#: src/app/main/ui/workspace/context_menu.cljs:468, src/app/main/ui/workspace/sidebar/layer_item.cljs:159, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:204
msgid "workspace.shape.menu.lock"
msgstr "鎖定"
-#: src/app/main/ui/workspace/context_menu.cljs:194, src/app/main/ui/workspace/context_menu.cljs:655
+#: src/app/main/ui/workspace/context_menu.cljs:357
+msgid "workspace.shape.menu.mask"
+msgstr "遮罩"
+
+#: src/app/main/ui/workspace/context_menu.cljs:195, src/app/main/ui/workspace/context_menu.cljs:671
msgid "workspace.shape.menu.paste"
msgstr "貼上"
-#: src/app/main/ui/workspace/context_menu.cljs:424
+#: src/app/main/ui/workspace/context_menu.cljs:218
+msgid "workspace.shape.menu.paste-props"
+msgstr "貼上屬性"
+
+#: src/app/main/ui/workspace/context_menu.cljs:426
msgid "workspace.shape.menu.path"
msgstr "路徑"
-#: src/app/main/ui/workspace/context_menu.cljs:246
+#: src/app/main/ui/workspace/context_menu.cljs:532
+msgid "workspace.shape.menu.remove-flex"
+msgstr "移除彈性佈局"
+
+#: src/app/main/ui/workspace/context_menu.cljs:535
+msgid "workspace.shape.menu.remove-grid"
+msgstr "移除網格佈局"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/layout_container.cljs:1031
+msgid "workspace.shape.menu.remove-layout"
+msgstr "移除佈局"
+
+#: src/app/main/ui/workspace/context_menu.cljs:313
+msgid "workspace.shape.menu.rename"
+msgstr "重新命名"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:463
+msgid "workspace.shape.menu.reset-overrides"
+msgstr "重設覆蓋"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:466
+msgid "workspace.shape.menu.restore-main"
+msgstr "還原主要元件"
+
+#: src/app/main/ui/workspace/context_menu.cljs:247
msgid "workspace.shape.menu.select-layer"
msgstr "選擇圖層"
-#: src/app/main/ui/workspace/context_menu.cljs:455, src/app/main/ui/workspace/sidebar/layer_item.cljs:144
+#: src/app/main/ui/workspace/context_menu.cljs:457, src/app/main/ui/workspace/sidebar/layer_item.cljs:150
msgid "workspace.shape.menu.show"
msgstr "顯示"
-#: src/app/main/ui/workspace/context_menu.cljs:297
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:451
+msgid "workspace.shape.menu.show-in-assets"
+msgstr "在資源面板中顯示"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:469, src/app/main/ui/workspace/sidebar/assets/components.cljs:573
+msgid "workspace.shape.menu.show-main"
+msgstr "顯示主要元件"
+
+#: src/app/main/ui/workspace/context_menu.cljs:298
msgid "workspace.shape.menu.thumbnail-remove"
msgstr "移除縮圖"
-#: src/app/main/ui/workspace/context_menu.cljs:299
+#: src/app/main/ui/workspace/context_menu.cljs:300
msgid "workspace.shape.menu.thumbnail-set"
msgstr "設置為縮圖"
-#: src/app/main/ui/workspace/context_menu.cljs:346
+#: src/app/main/ui/workspace/context_menu.cljs:421
+msgid "workspace.shape.menu.transform-to-path"
+msgstr "轉換為路徑"
+
+#: src/app/main/ui/workspace/context_menu.cljs:348
msgid "workspace.shape.menu.ungroup"
msgstr "取消群組"
-#: src/app/main/ui/workspace/context_menu.cljs:463, src/app/main/ui/workspace/sidebar/layer_item.cljs:152, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
+#: src/app/main/ui/workspace/context_menu.cljs:427, src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:70
+msgid "workspace.shape.menu.union"
+msgstr "合併"
+
+#: src/app/main/ui/workspace/context_menu.cljs:465, src/app/main/ui/workspace/sidebar/layer_item.cljs:158, src/app/main/ui/workspace/sidebar/options/menus/layer.cljs:210
msgid "workspace.shape.menu.unlock"
msgstr "解除鎖定"
+#: src/app/main/ui/workspace/context_menu.cljs:362
+msgid "workspace.shape.menu.unmask"
+msgstr "取消遮罩"
+
+#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs, src/app/main/ui/workspace/sidebar/options/menus/component.cljs, src/app/main/ui/workspace/context_menu.cljs, src/app/main/ui/workspace/context_menu.cljs
+#, unused
+msgid "workspace.shape.menu.update-components-in-bulk"
+msgstr "更新主要元件"
+
+#: src/app/main/ui/workspace/sidebar/assets/common.cljs:472
+msgid "workspace.shape.menu.update-main"
+msgstr "更新主要元件"
+
+#: src/app/main/ui/components/tab_container.cljs:52, src/app/main/ui/workspace/sidebar.cljs:51
+msgid "workspace.sidebar.collapse"
+msgstr "摺疊側邊欄"
+
+#: src/app/main/ui/workspace/sidebar/collapsable_button.cljs:25, src/app/main/ui/workspace/sidebar/collapsable_button.cljs:29
+msgid "workspace.sidebar.expand"
+msgstr "展開側邊欄"
+
+#: src/app/main/ui/workspace/right_header.cljs:212, src/app/main/ui/workspace/right_header.cljs:213
+msgid "workspace.sidebar.history"
+msgstr "歷史紀錄"
+
+#: src/app/main/ui/workspace/sidebar/layers.cljs:525, src/app/main/ui/workspace/sidebar.cljs:128, src/app/main/ui/workspace/sidebar.cljs:132, src/app/main/ui/workspace/sidebar.cljs:141
+msgid "workspace.sidebar.layers"
+msgstr "層級"
+
+#: src/app/main/ui/workspace/sidebar/layers.cljs:311, src/app/main/ui/workspace/sidebar/layers.cljs:383
+msgid "workspace.sidebar.layers.components"
+msgstr "元件"
+
+#: src/app/main/ui/workspace/sidebar/layers.cljs:308, src/app/main/ui/workspace/sidebar/layers.cljs:341
+msgid "workspace.sidebar.layers.frames"
+msgstr "版面"
+
+#: src/app/main/ui/workspace/sidebar/layers.cljs:309, src/app/main/ui/workspace/sidebar/layers.cljs:355
+msgid "workspace.sidebar.layers.groups"
+msgstr "群組"
+
#: src/app/main/ui/workspace/sidebar/layers.cljs:313, src/app/main/ui/workspace/sidebar/layers.cljs:411
msgid "workspace.sidebar.layers.images"
msgstr "圖像"
+#: src/app/main/ui/workspace/sidebar/layers.cljs:310, src/app/main/ui/workspace/sidebar/layers.cljs:369
+msgid "workspace.sidebar.layers.masks"
+msgstr "遮罩"
+
+#: src/app/main/ui/workspace/sidebar/layers.cljs:291
+msgid "workspace.sidebar.layers.search"
+msgstr "搜尋圖層"
+
+#: src/app/main/ui/workspace/sidebar/layers.cljs:314, src/app/main/ui/workspace/sidebar/layers.cljs:425
+msgid "workspace.sidebar.layers.shapes"
+msgstr "形狀"
+
#: src/app/main/ui/workspace/sidebar/layers.cljs:312, src/app/main/ui/workspace/sidebar/layers.cljs:397
msgid "workspace.sidebar.layers.texts"
msgstr "文字"
+#: src/app/main/ui/inspect/attributes/svg.cljs:56, src/app/main/ui/workspace/sidebar/options/menus/svg_attrs.cljs:101
+msgid "workspace.sidebar.options.svg-attrs.title"
+msgstr "匯入的 SVG 屬性"
+
#: src/app/main/ui/workspace/sidebar/sitemap.cljs:239
msgid "workspace.sidebar.sitemap"
msgstr "頁"
+#: src/app/main/ui/workspace/sidebar/sitemap.cljs:249
+msgid "workspace.sidebar.sitemap.add-page"
+msgstr "增加頁面"
+
+#: src/app/main/ui/workspace/left_header.cljs:97
+msgid "workspace.sitemap"
+msgstr "網站地圖"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:47
+#, unused
+msgid "workspace.token-set.not-active"
+msgstr "權杖集未啟用"
+
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:84
+msgid "workspace.token.active-themes"
+msgstr "%s 個啟用的主題"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs
+#, unused
+msgid "workspace.token.add set"
+msgstr "新增集"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:136
+msgid "workspace.token.applied-to"
+msgstr "應用於"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:391
+msgid "workspace.token.back-to-themes"
+msgstr "返回主題列表"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:54
+msgid "workspace.token.create-new-theme"
+msgstr "立即建立您的第一個主題。"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:134, src/app/main/ui/workspace/tokens/sidebar.cljs:190
+msgid "workspace.token.create-one"
+msgstr "建立一個。"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:492
+msgid "workspace.token.create-token"
+msgstr "建立新的 %s 權杖(token)"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:278
+msgid "workspace.token.delete"
+msgstr "刪除權杖(token)"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:159
+msgid "workspace.token.delete-theme-title"
+msgstr "刪除主題"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:275
+msgid "workspace.token.duplicate"
+msgstr "複製權杖(token)"
+
+#: src/app/main/ui/workspace/tokens/context_menu.cljs:262
+msgid "workspace.token.edit"
+msgstr "編輯權杖(token)"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:383
+msgid "workspace.token.edit-theme-title"
+msgstr "編輯主題"
+
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:72
+msgid "workspace.token.edit-themes"
+msgstr "編輯主題"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:491
+msgid "workspace.token.edit-token"
+msgstr "編輯權杖(token)"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:544
+msgid "workspace.token.enter-token-description"
+msgstr "新增描述(選填)"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:498
+msgid "workspace.token.enter-token-name"
+msgstr "輸入 %s 權杖(token)名稱"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs
+#, unused
+msgid "workspace.token.grouping-set-alert"
+msgstr "權杖(token)集分組尚未支援。"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:196
+msgid "workspace.token.label.group"
+msgstr "群組"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:206
+msgid "workspace.token.label.theme"
+msgstr "主題"
+
+#: src/app/main/ui/workspace/tokens/theme_select.cljs:89
+msgid "workspace.token.no-active-theme"
+msgstr "目前沒有啟用的主題"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:110
+msgid "workspace.token.no-permisions-set"
+msgstr "您需要是編輯者才能啟用/停用集"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:199
+msgid "workspace.token.no-permission-themes"
+msgstr "您需要是編輯者才能使用主題"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:504
+msgid "workspace.token.no-sets-create"
+msgstr "目前尚未定義任何集,請先建立一個。"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:131, src/app/main/ui/workspace/tokens/sets.cljs:137
+msgid "workspace.token.no-sets-yet"
+msgstr "目前尚未定義任何集。"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:186
+msgid "workspace.token.no-themes"
+msgstr "目前尚未定義主題。"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:50
+msgid "workspace.token.no-themes-currently"
+msgstr "現主時您沒有任何主題。"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:122
+#, fuzzy
+msgid "workspace.token.original-value"
+msgstr "原始值:%s"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:128
+msgid "workspace.token.ref-not-valid"
+msgstr "參照無效或不在任何啟用的集內"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:217, src/app/main/ui/workspace/tokens/form.cljs:221, src/app/main/ui/workspace/tokens/token_pill.cljs:123
+#, fuzzy
+msgid "workspace.token.resolved-value"
+msgstr "解析後的值:%s"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:240
+msgid "workspace.token.save-theme"
+msgstr "儲存主題"
+
+#: src/app/main/ui/workspace/tokens/sets.cljs:239, src/app/main/ui/workspace/tokens/sets.cljs:340
+msgid "workspace.token.select-set"
+msgstr "選擇集。"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:396
+msgid "workspace.token.set-selection-theme"
+msgstr "定義此主題選項應使用哪些權杖(token)集:"
+
+#: src/app/main/ui/workspace/tokens/modals/themes.cljs:136
+msgid "workspace.token.theme-name"
+msgstr "主題 %s"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:545
+msgid "workspace.token.token-description"
+msgstr "描述"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:501
+msgid "workspace.token.token-name"
+msgstr "名稱"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:59
+msgid "workspace.token.token-name-validation-error"
+msgstr ""
+" 不是有效的權杖(token)名稱。\n"
+"權杖名稱應該只包含字母和數字,並由 . 字元分隔,且不得以 $ 符號開頭。"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:526
+msgid "workspace.token.token-value"
+msgstr "值"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:322
+msgid "workspace.token.tokens-section-title"
+msgstr "權杖(TOKENS) - %s"
+
+#: src/app/main/ui/workspace/tokens/sidebar.cljs:405
+msgid "workspace.token.tools"
+msgstr "工具"
+
+#: src/app/main/ui/workspace/tokens/token_pill.cljs:131
+msgid "workspace.token.value-not-valid"
+msgstr "該值無效"
+
+#: src/app/main/ui/workspace/tokens/form.cljs:520
+msgid "workspace.token.warning-name-change"
+msgstr "重新命名此權杖(token)將會中斷對其舊名稱的任何參照。"
+
+#: src/app/main/ui/workspace/sidebar.cljs:135, src/app/main/ui/workspace/sidebar.cljs:144
+msgid "workspace.toolbar.assets"
+msgstr "資源"
+
+#: src/app/main/ui/workspace/palette.cljs:165, src/app/main/ui/workspace/palette.cljs:166
+msgid "workspace.toolbar.color-palette"
+msgstr "色彩調色板(%s)"
+
+#: src/app/main/ui/workspace/right_header.cljs:201, src/app/main/ui/workspace/right_header.cljs:202
+msgid "workspace.toolbar.comments"
+msgstr "留言 (%s)"
+
+#: src/app/main/ui/workspace/top_toolbar.cljs:190, src/app/main/ui/workspace/top_toolbar.cljs:191
+msgid "workspace.toolbar.curve"
+msgstr "曲線(%s)"
+
+#: src/app/main/ui/workspace/top_toolbar.cljs:170, src/app/main/ui/workspace/top_toolbar.cljs:171
+msgid "workspace.toolbar.ellipse"
+msgstr "橢圓(%s)"
+
+#: src/app/main/ui/workspace/top_toolbar.cljs:132, src/app/main/ui/workspace/top_toolbar.cljs:153
+msgid "workspace.toolbar.frame"
+msgstr "版面(%s)"
+
+#: src/app/main/ui/workspace/top_toolbar.cljs:61, src/app/main/ui/workspace/top_toolbar.cljs:62
+msgid "workspace.toolbar.image"
+msgstr "圖片(%s)"
+
+#: src/app/main/ui/workspace/top_toolbar.cljs:142, src/app/main/ui/workspace/top_toolbar.cljs:143
+msgid "workspace.toolbar.move"
+msgstr "移動(%s)"
+
+#: src/app/main/ui/workspace/top_toolbar.cljs:199, src/app/main/ui/workspace/top_toolbar.cljs:200
+msgid "workspace.toolbar.path"
+msgstr "路徑(%s)"
+
+#: src/app/main/ui/workspace/top_toolbar.cljs:210, src/app/main/ui/workspace/top_toolbar.cljs:211
+msgid "workspace.toolbar.plugins"
+msgstr "外掛(%s)"
+
+#: src/app/main/ui/workspace/top_toolbar.cljs:161, src/app/main/ui/workspace/top_toolbar.cljs:162
+msgid "workspace.toolbar.rect"
+msgstr "矩形(%s)"
+
+#: src/app/main/ui/workspace/left_toolbar.cljs
+#, unused
+msgid "workspace.toolbar.shortcuts"
+msgstr "捷徑(%s)"
+
+#: src/app/main/ui/workspace/top_toolbar.cljs:179, src/app/main/ui/workspace/top_toolbar.cljs:180
+msgid "workspace.toolbar.text"
+msgstr "文字(%s)"
+
+#: src/app/main/ui/workspace/palette.cljs:173, src/app/main/ui/workspace/palette.cljs:174
+msgid "workspace.toolbar.text-palette"
+msgstr "字體(%s)"
+
+#: src/app/main/ui/workspace/top_toolbar.cljs:229, src/app/main/ui/workspace/top_toolbar.cljs:230
+msgid "workspace.toolbar.toggle-toolbar"
+msgstr "切換工具欄"
+
+#: src/app/main/ui/workspace/viewport/top_bar.cljs:39
+msgid "workspace.top-bar.read-only.done"
+msgstr "完成"
+
+#: src/app/main/ui/workspace/viewport/top_bar.cljs:36
+#, markdown
+msgid "workspace.top-bar.view-only"
+msgstr "檢視程式碼(僅供檢視)"
+
+#: src/app/main/ui/workspace/sidebar/history.cljs:331
+msgid "workspace.undo.empty"
+msgstr "目前為止沒有歷史變更記錄"
+
+#: src/app/main/ui/workspace/sidebar/history.cljs:145
+msgid "workspace.undo.entry.delete"
+msgstr "刪除 %s"
+
+#: src/app/main/ui/workspace/sidebar/history.cljs:144
+msgid "workspace.undo.entry.modify"
+msgstr "修改 %s"
+
+#: src/app/main/ui/workspace/sidebar/history.cljs:146
+msgid "workspace.undo.entry.move"
+msgstr "移除物件"
+
#: src/app/main/ui/workspace/sidebar/history.cljs:109
msgid "workspace.undo.entry.multiple.circle"
msgstr "圖形"
+#: src/app/main/ui/workspace/sidebar/history.cljs:110
+msgid "workspace.undo.entry.multiple.color"
+msgstr "顏色資源"
+
+#: src/app/main/ui/workspace/sidebar/history.cljs:111
+msgid "workspace.undo.entry.multiple.component"
+msgstr "元件"
+
#: src/app/main/ui/workspace/sidebar/history.cljs:112
msgid "workspace.undo.entry.multiple.curve"
msgstr "曲線"
@@ -2572,6 +6477,14 @@ msgstr "曲線"
msgid "workspace.undo.entry.multiple.frame"
msgstr "畫板"
+#: src/app/main/ui/workspace/sidebar/history.cljs:114
+msgid "workspace.undo.entry.multiple.group"
+msgstr "群組"
+
+#: src/app/main/ui/workspace/sidebar/history.cljs:115
+msgid "workspace.undo.entry.multiple.media"
+msgstr "圖形資源"
+
#: src/app/main/ui/workspace/sidebar/history.cljs:116
msgid "workspace.undo.entry.multiple.multiple"
msgstr "物件"
@@ -2600,6 +6513,10 @@ msgstr "文字"
msgid "workspace.undo.entry.multiple.typography"
msgstr "字元樣式資產"
+#: src/app/main/ui/workspace/sidebar/history.cljs:143
+msgid "workspace.undo.entry.new"
+msgstr "新增 %s"
+
#: src/app/main/ui/workspace/sidebar/history.cljs:123
msgid "workspace.undo.entry.single.circle"
msgstr "圓圈"
@@ -2608,6 +6525,10 @@ msgstr "圓圈"
msgid "workspace.undo.entry.single.color"
msgstr "顏色素材"
+#: src/app/main/ui/workspace/sidebar/history.cljs:125
+msgid "workspace.undo.entry.single.component"
+msgstr "元件"
+
#: src/app/main/ui/workspace/sidebar/history.cljs:126
msgid "workspace.undo.entry.single.curve"
msgstr "曲線"
@@ -2624,6 +6545,10 @@ msgstr "群組"
msgid "workspace.undo.entry.single.image"
msgstr "影像"
+#: src/app/main/ui/workspace/sidebar/history.cljs:130
+msgid "workspace.undo.entry.single.media"
+msgstr "圖形資產"
+
#: src/app/main/ui/workspace/sidebar/history.cljs:131
msgid "workspace.undo.entry.single.multiple"
msgstr "物件"
@@ -2648,6 +6573,10 @@ msgstr "形狀"
msgid "workspace.undo.entry.single.text"
msgstr "文字"
+#: src/app/main/ui/workspace/sidebar/history.cljs:137
+msgid "workspace.undo.entry.single.typography"
+msgstr "字型排版資產"
+
#: src/app/main/ui/workspace/sidebar/history.cljs:147
msgid "workspace.undo.entry.unknown"
msgstr "操作覆蓋%s"
@@ -2657,18 +6586,99 @@ msgstr "操作覆蓋%s"
msgid "workspace.undo.title"
msgstr "歷史"
-#: src/app/main/data/workspace/libraries.cljs:1223, src/app/main/ui/workspace/sidebar/versions.cljs:261
+#: src/app/main/data/workspace/libraries.cljs:1224, src/app/main/ui/workspace/sidebar/versions.cljs:261
msgid "workspace.updates.dismiss"
msgstr "解散"
-#: src/app/main/data/workspace/libraries.cljs:1219
+#: src/app/main/data/workspace/libraries.cljs:1222
+msgid "workspace.updates.more-info"
+msgstr "更多資訊"
+
+#: src/app/main/data/workspace/libraries.cljs:1220
msgid "workspace.updates.there-are-updates"
msgstr "共用檔案庫有更新"
-#: src/app/main/data/workspace/libraries.cljs:1225
+#: src/app/main/data/workspace/libraries.cljs:1226
msgid "workspace.updates.update"
msgstr "更新"
+#: src/app/main/ui/workspace/sidebar/versions.cljs:184
+msgid "workspace.versions.autosaved.entry"
+msgstr "%s 個自動儲存版本"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:182
+msgid "workspace.versions.autosaved.version"
+msgstr "自動儲存 %s"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:203
+msgid "workspace.versions.button.pin"
+msgstr "固定版本"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:198
+msgid "workspace.versions.button.restore"
+msgstr "還原版本"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:327, src/app/main/ui/workspace/sidebar/versions.cljs:329
+msgid "workspace.versions.button.save"
+msgstr "儲存版本"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:336
+msgid "workspace.versions.empty"
+msgstr "目前沒有版本"
+
+#: src/app/main/ui/ds/product/autosaved_milestone.cljs:53
+msgid "workspace.versions.expand-snapshot"
+msgstr "展開快照"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:309
+msgid "workspace.versions.filter.all"
+msgstr "所有版本"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:308
+msgid "workspace.versions.filter.label"
+msgstr "版本篩選"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:310
+msgid "workspace.versions.filter.mine"
+msgstr "我的版本"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:316
+msgid "workspace.versions.filter.user"
+msgstr "%s的版本"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:322
+msgid "workspace.versions.loading"
+msgstr "載入中..."
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:259
+msgid "workspace.versions.restore-warning"
+msgstr "請問您想要還原此版本嗎?"
+
+#, unused
+msgid "workspace.versions.snapshot-menu"
+msgstr "開啟快照選單"
+
+#: src/app/main/ui/workspace/sidebar.cljs:285
+msgid "workspace.versions.tab.actions"
+msgstr "操作"
+
+#: src/app/main/ui/workspace/sidebar.cljs:282
+msgid "workspace.versions.tab.history"
+msgstr "歷史紀錄"
+
+#: src/app/main/ui/ds/product/autosaved_milestone.cljs:67, src/app/main/ui/ds/product/user_milestone.cljs:74
+msgid "workspace.versions.version-menu"
+msgstr "開啟版本選單"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:365
+#, markdown
+msgid "workspace.versions.warning.subtext"
+msgstr "如果您希望提高此限制量,請來信至 [support@penpot.app](%s)"
+
+#: src/app/main/ui/workspace/sidebar/versions.cljs:361
+msgid "workspace.versions.warning.text"
+msgstr "自動儲存的版本將保留 %s 天。"
+
#, unused
msgid "workspace.viewport.click-to-close-path"
msgstr "點擊以關閉路徑"
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
index 0168c8bc8a..b4d4e23183 100644
--- a/frontend/yarn.lock
+++ b/frontend/yarn.lock
@@ -460,7 +460,7 @@ __metadata:
languageName: node
linkType: hard
-"@bundled-es-modules/glob@npm:^10.3.13":
+"@bundled-es-modules/glob@npm:^10.4.2":
version: 10.4.2
resolution: "@bundled-es-modules/glob@npm:10.4.2"
dependencies:
@@ -476,18 +476,27 @@ __metadata:
languageName: node
linkType: hard
-"@bundled-es-modules/memfs@npm:^4.8.1":
- version: 4.9.4
- resolution: "@bundled-es-modules/memfs@npm:4.9.4"
+"@bundled-es-modules/memfs@npm:^4.9.4":
+ version: 4.17.0
+ resolution: "@bundled-es-modules/memfs@npm:4.17.0"
dependencies:
- assert: "npm:^2.0.0"
+ assert: "npm:^2.1.0"
buffer: "npm:^6.0.3"
events: "npm:^3.3.0"
- memfs: "npm:^4.9.3"
+ memfs: "npm:^4.17.0"
path: "npm:^0.12.7"
stream: "npm:^0.0.3"
util: "npm:^0.12.5"
- checksum: 10c0/e3548c14379183fb74aa9a94407c1cdb8587320216fb557c0af7277d2dccf23f10a2edf8726e99f878758730c0c8d71524f77e19b26660a067b01d9afa07c891
+ checksum: 10c0/88b573e52afe2f14b0c06f1f4337883ccf3155b7c3f667af8ead248b84ba2743e4eee90eb283ec967a8486576509bb6d42ce1c43714253f70ee23c5e5e24bc73
+ languageName: node
+ linkType: hard
+
+"@bundled-es-modules/postcss-calc-ast-parser@npm:^0.1.6":
+ version: 0.1.6
+ resolution: "@bundled-es-modules/postcss-calc-ast-parser@npm:0.1.6"
+ dependencies:
+ postcss-calc-ast-parser: "npm:^0.1.4"
+ checksum: 10c0/a42abc7446328a0a0728fa675560d950995c33ed5a997e7e49885bd7ddd575243a892d9834bc311558a1fbf298d55542aad8f60c46aa6766bfc3dc82baa341f0
languageName: node
linkType: hard
@@ -1464,16 +1473,16 @@ __metadata:
languageName: node
linkType: soft
-"@penpot/svgo@penpot/svgo#c6fba7a4dcfbc27b643e7fc0c94fc98cf680b77b":
+"@penpot/svgo@penpot/svgo#v3.1":
version: 4.0.0
- resolution: "@penpot/svgo@https://github.com/penpot/svgo.git#commit=c6fba7a4dcfbc27b643e7fc0c94fc98cf680b77b"
+ resolution: "@penpot/svgo@https://github.com/penpot/svgo.git#commit=a46262c12c0d967708395972c374eb2adead4180"
dependencies:
"@trysound/sax": "npm:0.2.0"
css-select: "npm:^5.1.0"
- css-tree: "npm:^3.0.0"
+ css-tree: "npm:^3.1.0"
csso: "npm:^5.0.5"
lodash: "npm:^4.17.21"
- checksum: 10c0/af452f31196bcd237c390a12fea2da4c1d4005ae6d759c38f2169c9975c2178f85ec72077e96a8a40ded38748c2c1449dbdaf0d15f37ca3237622d766ac49ec8
+ checksum: 10c0/db5f81c99dec2765721d73b69bb30594869ebf657380dfb46709c79775b6c0dc1af678fe9fe51bbe2272a2c78d19c2694a12ec6578bcc41235fa4aff475c9416
languageName: node
linkType: hard
@@ -2434,27 +2443,26 @@ __metadata:
languageName: node
linkType: hard
-"@tokens-studio/sd-transforms@npm:^0.16.1":
- version: 0.16.1
- resolution: "@tokens-studio/sd-transforms@npm:0.16.1"
+"@tokens-studio/sd-transforms@npm:1.2.11":
+ version: 1.2.11
+ resolution: "@tokens-studio/sd-transforms@npm:1.2.11"
dependencies:
- "@tokens-studio/types": "npm:^0.4.0"
- color2k: "npm:^2.0.1"
+ "@bundled-es-modules/deepmerge": "npm:^4.3.1"
+ "@bundled-es-modules/postcss-calc-ast-parser": "npm:^0.1.6"
+ "@tokens-studio/types": "npm:^0.5.1"
colorjs.io: "npm:^0.4.3"
- deepmerge: "npm:^4.3.1"
expr-eval-fork: "npm:^2.0.2"
is-mergeable-object: "npm:^1.1.1"
- postcss-calc-ast-parser: "npm:^0.1.4"
peerDependencies:
- style-dictionary: ^4.0.0-prerelease.27
- checksum: 10c0/496a22026ffa25e3f6d8438a1fb39d67383fa55c89de9ac6759e2dce10a16268f5009e4809d03ceab38597fc02025a90eb1d32083b98a9353feded83831549c9
+ style-dictionary: ">=4.3.0 < 6"
+ checksum: 10c0/58c278a2d738bb2f84e0e01c84d2a96191495440a9a52087cf9ee0e51ae272392cb93d17a3978e1f814e4a4c885aa349227bc0c7f0998a21cfc308988687c0e9
languageName: node
linkType: hard
-"@tokens-studio/types@npm:^0.4.0":
- version: 0.4.0
- resolution: "@tokens-studio/types@npm:0.4.0"
- checksum: 10c0/0641385653c94704f63dc5e10699c49bdbb1e1d8cba54af31bf50c3be85056123109bb2fe5091b1ccebaa9eba4c4afce3148a3b850919ed67bc81e3294ae839c
+"@tokens-studio/types@npm:^0.5.1":
+ version: 0.5.2
+ resolution: "@tokens-studio/types@npm:0.5.2"
+ checksum: 10c0/aed7fef091d2f2fefbe4541b8274172e4d0d3e3183daccf6ab40414e2c04afd45f2d2385ae79bb309e59c84a4d22f15a63f0cc8bfba8f0494e77b611594047ad
languageName: node
linkType: hard
@@ -2577,6 +2585,15 @@ __metadata:
languageName: node
linkType: hard
+"@types/node@npm:^22.10.5":
+ version: 22.14.0
+ resolution: "@types/node@npm:22.14.0"
+ dependencies:
+ undici-types: "npm:~6.21.0"
+ checksum: 10c0/9d79f3fa1af9c2c869514f419c4a4905b34c10e12915582fd1784868ac4e74c6d306cf5eb47ef889b6750ab85a31be96618227b86739c4a3e0b1c15063f384c6
+ languageName: node
+ linkType: hard
+
"@types/node@npm:^22.12.0":
version: 22.12.0
resolution: "@types/node@npm:22.12.0"
@@ -3093,7 +3110,7 @@ __metadata:
languageName: node
linkType: hard
-"assert@npm:^2.0.0":
+"assert@npm:^2.1.0":
version: 2.1.0
resolution: "assert@npm:2.1.0"
dependencies:
@@ -3937,13 +3954,6 @@ __metadata:
languageName: node
linkType: hard
-"color2k@npm:^2.0.1":
- version: 2.0.3
- resolution: "color2k@npm:2.0.3"
- checksum: 10c0/e7c13d212c9d1abb1690e378bbc0a6fb1751e4b02e9a73ba3b2ade9d54da673834597d342791d577d1ce400ec486c7f92c5098f9fa85cd113bcfde57420a2bb9
- languageName: node
- linkType: hard
-
"color@npm:^3.1.3":
version: 3.2.1
resolution: "color@npm:3.2.1"
@@ -4015,13 +4025,6 @@ __metadata:
languageName: node
linkType: hard
-"commander@npm:^8.3.0":
- version: 8.3.0
- resolution: "commander@npm:8.3.0"
- checksum: 10c0/8b043bb8322ea1c39664a1598a95e0495bfe4ca2fad0d84a92d7d1d8d213e2a155b441d2470c8e08de7c4a28cf2bc6e169211c49e1b21d9f7edc6ae4d9356060
- languageName: node
- linkType: hard
-
"commondir@npm:^1.0.1":
version: 1.0.1
resolution: "commondir@npm:1.0.1"
@@ -4326,13 +4329,13 @@ __metadata:
languageName: node
linkType: hard
-"css-tree@npm:^3.0.0":
- version: 3.0.1
- resolution: "css-tree@npm:3.0.1"
+"css-tree@npm:^3.1.0":
+ version: 3.1.0
+ resolution: "css-tree@npm:3.1.0"
dependencies:
- mdn-data: "npm:2.12.1"
+ mdn-data: "npm:2.12.2"
source-map-js: "npm:^1.0.1"
- checksum: 10c0/9f117f3067e68e9edb0b3db0134f420db1a62bede3e84d8835767ecfaa6f8ced5e87989cf39b65ffe65d788c134c8ea9abd7393d7c35838a9da84326adf57a9b
+ checksum: 10c0/b5715852c2f397c715ca00d56ec53fc83ea596295ae112eb1ba6a1bda3b31086380e596b1d8c4b980fe6da09e7d0fc99c64d5bb7313030dd0fba9c1415f30979
languageName: node
linkType: hard
@@ -5883,7 +5886,7 @@ __metadata:
"@penpot/draft-js": "portal:./vendor/draft-js"
"@penpot/hljs": "portal:./vendor/hljs"
"@penpot/mousetrap": "portal:./vendor/mousetrap"
- "@penpot/svgo": "penpot/svgo#c6fba7a4dcfbc27b643e7fc0c94fc98cf680b77b"
+ "@penpot/svgo": "penpot/svgo#v3.1"
"@penpot/text-editor": "portal:./text-editor"
"@playwright/test": "npm:1.48.1"
"@storybook/addon-essentials": "npm:^8.5.2"
@@ -5894,7 +5897,7 @@ __metadata:
"@storybook/react-vite": "npm:^8.5.2"
"@storybook/test": "npm:^8.5.2"
"@storybook/test-runner": "npm:^0.21.0"
- "@tokens-studio/sd-transforms": "npm:^0.16.1"
+ "@tokens-studio/sd-transforms": "npm:1.2.11"
"@types/node": "npm:^22.12.0"
autoprefixer: "npm:^10.4.20"
compression: "npm:^1.7.5"
@@ -5946,7 +5949,7 @@ __metadata:
shadow-cljs: "npm:2.28.20"
source-map-support: "npm:^0.5.21"
storybook: "npm:^8.5.2"
- style-dictionary: "npm:4.0.0-prerelease.36"
+ style-dictionary: "npm:5.0.0-rc.1"
svg-sprite: "npm:^2.0.4"
tdigest: "npm:^0.1.2"
tinycolor2: "npm:^1.6.0"
@@ -8270,10 +8273,10 @@ __metadata:
languageName: node
linkType: hard
-"mdn-data@npm:2.12.1":
- version: 2.12.1
- resolution: "mdn-data@npm:2.12.1"
- checksum: 10c0/1a09f441bdd423f2b0ab712665a1a3329fe7b15e9a2dad8c1c10c521ddb204ed186e7ac91052fd53a5ae0a07ac6eae53b5bcbb59ba8a1fb654268611297eea4a
+"mdn-data@npm:2.12.2":
+ version: 2.12.2
+ resolution: "mdn-data@npm:2.12.2"
+ checksum: 10c0/b22443b71d70f72ccc3c6ba1608035431a8fc18c3c8fc53523f06d20e05c2ac10f9b53092759a2ca85cf02f0d37036f310b581ce03e7b99ac74d388ef8152ade
languageName: node
linkType: hard
@@ -8284,15 +8287,15 @@ __metadata:
languageName: node
linkType: hard
-"memfs@npm:^4.9.3":
- version: 4.14.0
- resolution: "memfs@npm:4.14.0"
+"memfs@npm:^4.17.0":
+ version: 4.17.0
+ resolution: "memfs@npm:4.17.0"
dependencies:
"@jsonjoy.com/json-pack": "npm:^1.0.3"
"@jsonjoy.com/util": "npm:^1.3.0"
tree-dump: "npm:^1.0.1"
tslib: "npm:^2.0.0"
- checksum: 10c0/d1de2e4b3c269f5b5f27b63f60bb8ea9ae5800843776e0bed4548f2957dcd55237ac5eab3a5ffe0d561a6be53e42c055a7bc79efc1613563b14e14c287ef3b0a
+ checksum: 10c0/2901f69e80e1fbefa8aafe994a253fff6f34eb176d8b80d57476311611e516a11ab4dd93f852c8739fe04f2b57d6a4ca7a1828fa0bd401ce631bcac214b3d58b
languageName: node
linkType: hard
@@ -9294,10 +9297,10 @@ __metadata:
languageName: node
linkType: hard
-"path-unified@npm:^0.1.0":
- version: 0.1.0
- resolution: "path-unified@npm:0.1.0"
- checksum: 10c0/26c314221bcc0ca3ce59b67f50dffb6f37214d294fd9dfeb0219e9f12b93d8852c8525d32be9387011d902d361669a43e22ec419d522055794790222665b2de9
+"path-unified@npm:^0.2.0":
+ version: 0.2.0
+ resolution: "path-unified@npm:0.2.0"
+ checksum: 10c0/5229bbcbb093b1c76e7a8f568dd7d362bae6bd9348099968252aa17b1ffd86ef845d560a6b483bb2e6a3b2c25a5e8288707b03e41b66b2761aa1e2ba67b07d5b
languageName: node
linkType: hard
@@ -9650,6 +9653,15 @@ __metadata:
languageName: node
linkType: hard
+"prettier@npm:^3.3.3":
+ version: 3.5.3
+ resolution: "prettier@npm:3.5.3"
+ bin:
+ prettier: bin/prettier.cjs
+ checksum: 10c0/3880cb90b9dc0635819ab52ff571518c35bd7f15a6e80a2054c05dbc8a3aa6e74f135519e91197de63705bcb38388ded7e7230e2178432a1468005406238b877
+ languageName: node
+ linkType: hard
+
"pretty-format@npm:^27.0.2":
version: 27.5.1
resolution: "pretty-format@npm:27.5.1"
@@ -11430,25 +11442,27 @@ __metadata:
languageName: node
linkType: hard
-"style-dictionary@npm:4.0.0-prerelease.36":
- version: 4.0.0-prerelease.36
- resolution: "style-dictionary@npm:4.0.0-prerelease.36"
+"style-dictionary@npm:5.0.0-rc.1":
+ version: 5.0.0-rc.1
+ resolution: "style-dictionary@npm:5.0.0-rc.1"
dependencies:
"@bundled-es-modules/deepmerge": "npm:^4.3.1"
- "@bundled-es-modules/glob": "npm:^10.3.13"
- "@bundled-es-modules/memfs": "npm:^4.8.1"
+ "@bundled-es-modules/glob": "npm:^10.4.2"
+ "@bundled-es-modules/memfs": "npm:^4.9.4"
+ "@types/node": "npm:^22.10.5"
"@zip.js/zip.js": "npm:^2.7.44"
chalk: "npm:^5.3.0"
change-case: "npm:^5.3.0"
- commander: "npm:^8.3.0"
+ commander: "npm:^12.1.0"
is-plain-obj: "npm:^4.1.0"
json5: "npm:^2.2.2"
patch-package: "npm:^8.0.0"
- path-unified: "npm:^0.1.0"
+ path-unified: "npm:^0.2.0"
+ prettier: "npm:^3.3.3"
tinycolor2: "npm:^1.6.0"
bin:
style-dictionary: bin/style-dictionary.js
- checksum: 10c0/8707b3cced5ee7a858c425b296b53f3b9055f388839ab77ec94f9ed012ca99db43ce28fb540cec1659b92680a2769b1ed24d9af891ea98b9b298895341781f30
+ checksum: 10c0/ab7423711472a9af898a8e9a5a4e810e34ff78c6ed175b4b7b5d16e1517db19eb61fd858bae891e75b15b4e65b097929d4add3dc165a535f5dca7784355d4037
languageName: node
linkType: hard
@@ -12050,6 +12064,13 @@ __metadata:
languageName: node
linkType: hard
+"undici-types@npm:~6.21.0":
+ version: 6.21.0
+ resolution: "undici-types@npm:6.21.0"
+ checksum: 10c0/c01ed51829b10aa72fc3ce64b747f8e74ae9b60eafa19a7b46ef624403508a54c526ffab06a14a26b3120d055e1104d7abe7c9017e83ced038ea5cf52f8d5e04
+ languageName: node
+ linkType: hard
+
"unique-filename@npm:^3.0.0":
version: 3.0.0
resolution: "unique-filename@npm:3.0.0"
diff --git a/render-wasm/Cargo.lock b/render-wasm/Cargo.lock
index 72fe0a9f22..0416a66974 100644
--- a/render-wasm/Cargo.lock
+++ b/render-wasm/Cargo.lock
@@ -896,9 +896,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
[[package]]
name = "indexmap"
-version = "2.6.0"
+version = "2.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da"
+checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652"
dependencies = [
"equivalent",
"hashbrown",
@@ -1507,8 +1507,10 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
name = "render"
version = "0.1.0"
dependencies = [
+ "base64",
"cargo-watch",
"gl",
+ "indexmap",
"skia-safe",
"uuid",
]
diff --git a/render-wasm/Cargo.toml b/render-wasm/Cargo.toml
index fc5c3d61bc..72570a1274 100644
--- a/render-wasm/Cargo.toml
+++ b/render-wasm/Cargo.toml
@@ -6,12 +6,20 @@ repository = "https://github.com/penpot/penpot"
license-file = "../LICENSE"
description = "Wasm-based canvas renderer for Penpot"
+[features]
+default = []
+profile = ["profile-macros", "profile-raf"]
+profile-macros = []
+profile-raf = []
+
[[bin]]
name = "render_wasm"
path = "src/main.rs"
[dependencies]
+base64 = "0.22.1"
gl = "0.14.0"
+indexmap = "2.7.1"
skia-safe = { version = "0.81.0", default-features = false, features = ["gl", "svg", "textlayout", "binary-cache"]}
uuid = { version = "1.11.0", features = ["v4"] }
diff --git a/render-wasm/_build_env b/render-wasm/_build_env
index c5299dd46d..996fe32346 100644
--- a/render-wasm/_build_env
+++ b/render-wasm/_build_env
@@ -7,7 +7,7 @@ else
fi
EMCC_CFLAGS="--no-entry \
- -Os \
+ --js-library src/js/wapi.js \
-sASSERTIONS=1 \
-sALLOW_TABLE_GROWTH=1 \
-sALLOW_MEMORY_GROWTH=1 \
@@ -24,16 +24,19 @@ EMSDK_QUIET=1 . /usr/local/emsdk/emsdk_env.sh;
export EM_CACHE="/tmp/emsdk_cache";
-_CARGO_PARAMS="--target=wasm32-unknown-emscripten";
+_CARGO_PARAMS="${@:2}";
if [ "$_BUILD_MODE" = "release" ]; then
_CARGO_PARAMS="--release $_CARGO_PARAMS"
EMCC_CFLAGS="-Os $EMCC_CFLAGS"
else
- EMCC_CFLAGS="$EMCC_CFLAGS -sMALLOC=emmalloc-debug"
+ # TODO: Extra parameters that could be good to look into:
+ # -gseparate-dwarf
+ # -gsplit-dwarf
+ # -gsource-map
+ EMCC_CFLAGS="-g $EMCC_CFLAGS -sVERBOSE=1 -sMALLOC=emmalloc-debug"
fi
export EMCC_CFLAGS;
export _CARGO_PARAMS;
-export SKIA_BINARIES_URL="https://github.com/penpot/skia-binaries/releases/download/0.81.0-1/skia-binaries-24dee32a277b6c7b5357-wasm32-unknown-emscripten-gl-svg-textlayout-binary-cache.tar.gz"
diff --git a/render-wasm/build b/render-wasm/build
index 9de720e0c9..84536136be 100755
--- a/render-wasm/build
+++ b/render-wasm/build
@@ -4,7 +4,10 @@ set -x
_SCRIPT_DIR=$(dirname $0);
pushd $_SCRIPT_DIR;
-. ./_build_env
+. ./_build_env
+
+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.81.0-3/skia-binaries-24dee32a277b6c7b5357-wasm32-unknown-emscripten-gl-svg-textlayout-binary-cache.tar.gz"}
cargo build $_CARGO_PARAMS
diff --git a/render-wasm/docs/serialization.md b/render-wasm/docs/serialization.md
index 35fdab183b..7318c62a25 100644
--- a/render-wasm/docs/serialization.md
+++ b/render-wasm/docs/serialization.md
@@ -142,7 +142,7 @@ Shadow styles are serialized as `u8`:
## Layout
-### Direction
+### Flex Direction
| Value | Field |
| ----- | ------------- |
@@ -152,6 +152,14 @@ Shadow styles are serialized as `u8`:
| 3 | ColumnReverse |
| \_ | error |
+### Grid Direction
+
+| Value | Field |
+| ----- | ------------- |
+| 0 | Row |
+| 1 | Column |
+| \_ | error |
+
### Align Items
| Value | Field |
@@ -208,6 +216,28 @@ Shadow styles are serialized as `u8`:
| 6 | Stretch |
| \_ | error |
+### Align Self
+
+| Value | Field |
+| ----- | ------- |
+| 0 | Auto |
+| 1 | Start |
+| 2 | End |
+| 3 | Center |
+| 4 | Stretch |
+| \_ | error |
+
+### Justify Self
+
+| Value | Field |
+| ----- | ------- |
+| 0 | Auto |
+| 1 | Start |
+| 2 | End |
+| 3 | Center |
+| 4 | Stretch |
+| \_ | error |
+
### Wrap type
| Value | Field |
@@ -225,6 +255,18 @@ Shadow styles are serialized as `u8`:
| 2 | Auto |
| \_ | error |
+### Grid Track Type
+
+| Value | Field |
+| ----- | ------- |
+| 0 | Percent |
+| 1 | Flex |
+| 2 | Auto |
+| 3 | Fixed |
+| \_ | error |
+
+
+
## Font
### Style
diff --git a/render-wasm/src/debug.rs b/render-wasm/src/debug.rs
deleted file mode 100644
index ff427339ca..0000000000
--- a/render-wasm/src/debug.rs
+++ /dev/null
@@ -1 +0,0 @@
-pub const DEBUG_VISIBLE: u32 = 0x01;
diff --git a/render-wasm/src/emscripten.rs b/render-wasm/src/emscripten.rs
new file mode 100644
index 0000000000..69c4b9cfc8
--- /dev/null
+++ b/render-wasm/src/emscripten.rs
@@ -0,0 +1,67 @@
+#[macro_export]
+macro_rules! run_script {
+ ($s:expr) => {{
+ extern "C" {
+ pub fn emscripten_run_script(script: *const i8);
+ }
+
+ match std::ffi::CString::new($s) {
+ Ok(cstr) => unsafe { emscripten_run_script(cstr.as_ptr()) },
+ Err(e) => panic!("Failed to create CString: {}", e),
+ }
+ }};
+}
+
+#[macro_export]
+macro_rules! run_script_int {
+ ($s:expr) => {{
+ extern "C" {
+ pub fn emscripten_run_script_int(script: *const i8) -> i32;
+ }
+
+ match std::ffi::CString::new($s) {
+ Ok(cstr) => unsafe { emscripten_run_script_int(cstr.as_ptr()) },
+ Err(e) => panic!("Failed to create CString: {}", e),
+ }
+ }};
+}
+
+#[macro_export]
+macro_rules! get_now {
+ () => {{
+ extern "C" {
+ pub fn emscripten_get_now() -> f64;
+ }
+ unsafe { emscripten_get_now() }
+ }};
+}
+
+#[macro_export]
+macro_rules! init_gl {
+ () => {{
+ extern "C" {
+ fn emscripten_GetProcAddress(
+ name: *const ::std::os::raw::c_char,
+ ) -> *const ::std::os::raw::c_void;
+ }
+
+ unsafe {
+ gl::load_with(|addr| {
+ let addr = std::ffi::CString::new(addr).unwrap();
+ emscripten_GetProcAddress(addr.into_raw() as *const _) as *const _
+ });
+ }
+ }};
+}
+
+#[allow(unused_imports)]
+pub use run_script;
+
+#[allow(unused_imports)]
+pub use run_script_int;
+
+#[allow(unused_imports)]
+pub use get_now;
+
+#[allow(unused_imports)]
+pub use init_gl;
diff --git a/render-wasm/src/fonts/RobotoMono-Regular.ttf b/render-wasm/src/fonts/RobotoMono-Regular.ttf
deleted file mode 100644
index 6df2b25360..0000000000
Binary files a/render-wasm/src/fonts/RobotoMono-Regular.ttf and /dev/null differ
diff --git a/render-wasm/src/fonts/sourcesanspro-regular.ttf b/render-wasm/src/fonts/sourcesanspro-regular.ttf
new file mode 100644
index 0000000000..cb2f335971
Binary files /dev/null and b/render-wasm/src/fonts/sourcesanspro-regular.ttf differ
diff --git a/render-wasm/src/js/wapi.js b/render-wasm/src/js/wapi.js
new file mode 100644
index 0000000000..e732fdbe6d
--- /dev/null
+++ b/render-wasm/src/js/wapi.js
@@ -0,0 +1,8 @@
+addToLibrary({
+ wapi_requestAnimationFrame: function wapi_requestAnimationFrame() {
+ return window.requestAnimationFrame(Module._process_animation_frame);
+ },
+ wapi_cancelAnimationFrame: function wapi_cancelAnimationFrame(frameId) {
+ return window.cancelAnimationFrame(frameId);
+ }
+});
diff --git a/render-wasm/src/main.rs b/render-wasm/src/main.rs
index 9b53011fb3..ed640777d8 100644
--- a/render-wasm/src/main.rs
+++ b/render-wasm/src/main.rs
@@ -1,39 +1,39 @@
use skia_safe as skia;
-mod debug;
+#[cfg(target_arch = "wasm32")]
+mod emscripten;
mod math;
mod mem;
+mod options;
+mod performance;
mod render;
mod shapes;
mod state;
mod utils;
+mod uuid;
mod view;
+mod wapi;
mod wasm;
use crate::mem::SerializableResult;
-use crate::shapes::{BoolType, ConstraintH, ConstraintV, TransformEntry, Type};
-
+use crate::shapes::{BoolType, ConstraintH, ConstraintV, StructureEntry, TransformEntry, Type};
use crate::utils::uuid_from_u32_quartet;
+use crate::uuid::Uuid;
+use indexmap::IndexSet;
use state::State;
pub(crate) static mut STATE: Option> = None;
-extern "C" {
- fn emscripten_GetProcAddress(
- name: *const ::std::os::raw::c_char,
- ) -> *const ::std::os::raw::c_void;
-}
-
#[macro_export]
macro_rules! with_state {
- ($state:ident, $block:block) => {
+ ($state:ident, $block:block) => {{
let $state = unsafe {
#[allow(static_mut_refs)]
STATE.as_mut()
}
.expect("Got an invalid state pointer");
$block
- };
+ }};
}
#[macro_export]
@@ -50,15 +50,6 @@ macro_rules! with_current_shape {
};
}
-fn init_gl() {
- unsafe {
- gl::load_with(|addr| {
- let addr = std::ffi::CString::new(addr).unwrap();
- emscripten_GetProcAddress(addr.into_raw() as *const _) as *const _
- });
- }
-}
-
/// This is called from JS after the WebGL context has been created.
#[no_mangle]
pub extern "C" fn init(width: i32, height: i32) {
@@ -75,10 +66,9 @@ pub extern "C" fn clean_up() {
}
#[no_mangle]
-pub extern "C" fn clear_cache() {
+pub extern "C" fn clear_drawing_cache() {
with_state!(state, {
- let render_state = state.render_state();
- render_state.clear_cache();
+ state.rebuild_tiles();
});
}
@@ -106,20 +96,26 @@ pub extern "C" fn render(timestamp: i32) {
});
}
-#[no_mangle]
-pub extern "C" fn render_from_cache() {
- with_state!(state, {
- state.render_from_cache();
- });
-}
-
#[no_mangle]
pub extern "C" fn process_animation_frame(timestamp: i32) {
- with_state!(state, {
- state
- .process_animation_frame(timestamp)
- .expect("Error processing animation frame");
+ let result = std::panic::catch_unwind(|| {
+ with_state!(state, {
+ state
+ .process_animation_frame(timestamp)
+ .expect("Error processing animation frame");
+ });
});
+
+ match result {
+ Ok(_) => {}
+ Err(err) => {
+ match err.downcast_ref::() {
+ Some(message) => println!("process_animation_frame error: {}", message),
+ None => println!("process_animation_frame error: {:?}", err),
+ }
+ std::panic::resume_unwind(err);
+ }
+ }
}
#[no_mangle]
@@ -140,22 +136,17 @@ pub extern "C" fn resize_viewbox(width: i32, height: i32) {
pub extern "C" fn set_view(zoom: f32, x: f32, y: f32) {
with_state!(state, {
let render_state = state.render_state();
- render_state.invalidate_cache_if_needed();
+ let zoom_changed = zoom != render_state.viewbox.zoom;
render_state.viewbox.set_all(zoom, x, y);
- });
-}
-
-#[no_mangle]
-pub extern "C" fn set_view_zoom(zoom: f32) {
- with_state!(state, {
- state.render_state().viewbox.set_zoom(zoom);
- });
-}
-
-#[no_mangle]
-pub extern "C" fn set_view_xy(x: f32, y: f32) {
- with_state!(state, {
- state.render_state().viewbox.set_pan_xy(x, y);
+ if zoom_changed {
+ with_state!(state, {
+ if state.render_state.options.is_profile_rebuild_tiles() {
+ state.rebuild_tiles();
+ } else {
+ state.rebuild_tiles_shallow();
+ }
+ });
+ }
});
}
@@ -168,12 +159,11 @@ pub extern "C" fn use_shape(a: u32, b: u32, c: u32, d: u32) {
}
#[no_mangle]
-pub unsafe extern "C" fn set_parent(a: u32, b: u32, c: u32, d: u32) {
- let state = unsafe { STATE.as_mut() }.expect("Got an invalid state pointer");
- let id = uuid_from_u32_quartet(a, b, c, d);
- if let Some(shape) = state.current_shape() {
+pub extern "C" fn set_parent(a: u32, b: u32, c: u32, d: u32) {
+ with_current_shape!(state, |shape: &mut Shape| {
+ let id = uuid_from_u32_quartet(a, b, c, d);
shape.set_parent(id);
- }
+ });
}
#[no_mangle]
@@ -191,7 +181,7 @@ pub extern "C" fn set_shape_bool_type(raw_bool_type: u8) {
}
#[no_mangle]
-pub unsafe extern "C" fn set_shape_type(shape_type: u8) {
+pub extern "C" fn set_shape_type(shape_type: u8) {
with_current_shape!(state, |shape: &mut Shape| {
shape.set_shape_type(Type::from(shape_type));
});
@@ -199,8 +189,8 @@ pub unsafe extern "C" fn set_shape_type(shape_type: u8) {
#[no_mangle]
pub extern "C" fn set_shape_selrect(left: f32, top: f32, right: f32, bottom: f32) {
- with_current_shape!(state, |shape: &mut Shape| {
- shape.set_selrect(left, top, right, bottom);
+ with_state!(state, {
+ state.set_selrect_for_current_shape(left, top, right, bottom);
});
}
@@ -234,72 +224,30 @@ pub extern "C" fn add_shape_child(a: u32, b: u32, c: u32, d: u32) {
}
#[no_mangle]
-pub extern "C" fn clear_shape_children() {
- with_current_shape!(state, |shape: &mut Shape| {
- shape.clear_children();
- });
-}
+pub extern "C" fn set_children() {
+ let bytes = mem::bytes_or_empty();
-#[no_mangle]
-pub extern "C" fn add_shape_solid_fill(raw_color: u32) {
- with_current_shape!(state, |shape: &mut Shape| {
- let color = skia::Color::new(raw_color);
- shape.add_fill(shapes::Fill::Solid(color));
- });
-}
-
-#[no_mangle]
-pub extern "C" fn add_shape_linear_fill(
- start_x: f32,
- start_y: f32,
- end_x: f32,
- end_y: f32,
- opacity: f32,
-) {
- with_current_shape!(state, |shape: &mut Shape| {
- shape.add_fill(shapes::Fill::new_linear_gradient(
- (start_x, start_y),
- (end_x, end_y),
- opacity,
- ));
- });
-}
-
-#[no_mangle]
-pub extern "C" fn add_shape_radial_fill(
- start_x: f32,
- start_y: f32,
- end_x: f32,
- end_y: f32,
- opacity: f32,
- width: f32,
-) {
- with_current_shape!(state, |shape: &mut Shape| {
- shape.add_fill(shapes::Fill::new_radial_gradient(
- (start_x, start_y),
- (end_x, end_y),
- opacity,
- width,
- ));
- });
-}
-
-#[no_mangle]
-pub extern "C" fn add_shape_fill_stops() {
- let bytes = mem::bytes();
-
- let entries: Vec<_> = bytes
- .chunks(size_of::())
- .map(|data| shapes::RawStopData::from_bytes(data.try_into().unwrap()))
+ let entries: IndexSet = bytes
+ .chunks(size_of::<::BytesType>())
+ .map(|data| Uuid::from_bytes(data.try_into().unwrap()))
.collect();
+ let mut deleted = IndexSet::new();
+
with_current_shape!(state, |shape: &mut Shape| {
- shape
- .add_fill_gradient_stops(entries)
- .expect("could not add gradient stops");
+ (_, deleted) = shape.compute_children_differences(&entries);
+ shape.children = entries.clone();
});
- mem::free_bytes();
+ with_state!(state, {
+ for id in deleted {
+ state.delete_shape(id);
+ }
+ });
+
+ if !bytes.is_empty() {
+ mem::free_bytes();
+ }
}
#[no_mangle]
@@ -308,11 +256,8 @@ pub extern "C" fn store_image(a: u32, b: u32, c: u32, d: u32) {
let id = uuid_from_u32_quartet(a, b, c, d);
let image_bytes = mem::bytes();
- match state.render_state().add_image(id, &image_bytes) {
- Err(msg) => {
- eprintln!("{}", msg);
- }
- _ => {}
+ if let Err(msg) = state.render_state().add_image(id, &image_bytes) {
+ eprintln!("{}", msg);
}
mem::free_bytes();
@@ -323,35 +268,8 @@ pub extern "C" fn store_image(a: u32, b: u32, c: u32, d: u32) {
pub extern "C" fn is_image_cached(a: u32, b: u32, c: u32, d: u32) -> bool {
with_state!(state, {
let id = uuid_from_u32_quartet(a, b, c, d);
- return state.render_state().has_image(&id);
- });
-}
-
-#[no_mangle]
-pub extern "C" fn add_shape_image_fill(
- a: u32,
- b: u32,
- c: u32,
- d: u32,
- alpha: f32,
- width: i32,
- height: i32,
-) {
- with_current_shape!(state, |shape: &mut Shape| {
- let id = uuid_from_u32_quartet(a, b, c, d);
- shape.add_fill(shapes::Fill::new_image_fill(
- id,
- (alpha * 0xff as f32).floor() as u8,
- (width, height),
- ));
- });
-}
-
-#[no_mangle]
-pub extern "C" fn clear_shape_fills() {
- with_current_shape!(state, |shape: &mut Shape| {
- shape.clear_fills();
- });
+ state.render_state().has_image(&id)
+ })
}
#[no_mangle]
@@ -424,101 +342,6 @@ pub extern "C" fn set_shape_path_content() {
});
}
-#[no_mangle]
-pub extern "C" fn add_shape_center_stroke(width: f32, style: u8, cap_start: u8, cap_end: u8) {
- with_current_shape!(state, |shape: &mut Shape| {
- shape.add_stroke(shapes::Stroke::new_center_stroke(
- width, style, cap_start, cap_end,
- ));
- });
-}
-
-#[no_mangle]
-pub extern "C" fn add_shape_inner_stroke(width: f32, style: u8, cap_start: u8, cap_end: u8) {
- with_current_shape!(state, |shape: &mut Shape| {
- shape.add_stroke(shapes::Stroke::new_inner_stroke(
- width, style, cap_start, cap_end,
- ));
- });
-}
-
-#[no_mangle]
-pub extern "C" fn add_shape_outer_stroke(width: f32, style: u8, cap_start: u8, cap_end: u8) {
- with_current_shape!(state, |shape: &mut Shape| {
- shape.add_stroke(shapes::Stroke::new_outer_stroke(
- width, style, cap_start, cap_end,
- ));
- });
-}
-
-#[no_mangle]
-pub extern "C" fn add_shape_stroke_solid_fill(raw_color: u32) {
- with_current_shape!(state, |shape: &mut Shape| {
- let color = skia::Color::new(raw_color);
- shape
- .set_stroke_fill(shapes::Fill::Solid(color))
- .expect("could not add stroke solid fill");
- });
-}
-
-#[no_mangle]
-pub extern "C" fn add_shape_stroke_linear_fill(
- start_x: f32,
- start_y: f32,
- end_x: f32,
- end_y: f32,
- opacity: f32,
-) {
- with_current_shape!(state, |shape: &mut Shape| {
- shape
- .set_stroke_fill(shapes::Fill::new_linear_gradient(
- (start_x, start_y),
- (end_x, end_y),
- opacity,
- ))
- .expect("could not add stroke linear fill");
- });
-}
-
-#[no_mangle]
-pub extern "C" fn add_shape_stroke_radial_fill(
- start_x: f32,
- start_y: f32,
- end_x: f32,
- end_y: f32,
- opacity: f32,
- width: f32,
-) {
- with_current_shape!(state, |shape: &mut Shape| {
- shape
- .set_stroke_fill(shapes::Fill::new_radial_gradient(
- (start_x, start_y),
- (end_x, end_y),
- opacity,
- width,
- ))
- .expect("could not add stroke radial fill");
- });
-}
-
-#[no_mangle]
-pub extern "C" fn add_shape_stroke_stops() {
- let bytes = mem::bytes();
-
- let entries: Vec<_> = bytes
- .chunks(size_of::())
- .map(|data| shapes::RawStopData::from_bytes(data.try_into().unwrap()))
- .collect();
-
- with_current_shape!(state, |shape: &mut Shape| {
- shape
- .add_stroke_gradient_stops(entries)
- .expect("could not add gradient stops");
- });
-
- mem::free_bytes();
-}
-
// 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 {
@@ -537,35 +360,6 @@ fn extract_string(start: &mut usize, bytes: &[u8]) -> String {
}
}
-#[no_mangle]
-pub extern "C" fn add_shape_image_stroke(
- a: u32,
- b: u32,
- c: u32,
- d: u32,
- alpha: f32,
- width: i32,
- height: i32,
-) {
- with_current_shape!(state, |shape: &mut Shape| {
- let id = uuid_from_u32_quartet(a, b, c, d);
- shape
- .set_stroke_fill(shapes::Fill::new_image_fill(
- id,
- (alpha * 0xff as f32).floor() as u8,
- (width, height),
- ))
- .expect("could not add stroke image fill");
- });
-}
-
-#[no_mangle]
-pub extern "C" fn clear_shape_strokes() {
- with_current_shape!(state, |shape: &mut Shape| {
- shape.clear_strokes();
- });
-}
-
#[no_mangle]
pub extern "C" fn set_shape_corners(r1: f32, r2: f32, r3: f32, r4: f32) {
with_current_shape!(state, |shape: &mut Shape| {
@@ -597,13 +391,37 @@ pub extern "C" fn propagate_modifiers() -> *mut u8 {
with_state!(state, {
let result = shapes::propagate_modifiers(state, entries);
- return mem::write_vec(result);
+ mem::write_vec(result)
+ })
+}
+
+#[no_mangle]
+pub extern "C" fn set_structure_modifiers() {
+ let bytes = mem::bytes();
+
+ let entries: Vec<_> = bytes
+ .chunks(40)
+ .map(|data| StructureEntry::from_bytes(data.try_into().unwrap()))
+ .collect();
+
+ with_state!(state, {
+ for entry in entries {
+ state.structure.entry(entry.parent).or_insert_with(Vec::new);
+ state
+ .structure
+ .get_mut(&entry.parent)
+ .expect("Parent not found for entry")
+ .push(entry);
+ }
});
+
+ mem::free_bytes();
}
#[no_mangle]
pub extern "C" fn clean_modifiers() {
with_state!(state, {
+ state.structure.clear();
state.modifiers.clear();
});
}
@@ -621,7 +439,7 @@ pub extern "C" fn set_modifiers() {
for entry in entries {
state.modifiers.insert(entry.id, entry.transform);
}
- state.render_state().clear_cache();
+ state.rebuild_modifier_tiles();
});
}
@@ -650,6 +468,13 @@ pub extern "C" fn clear_shape_shadows() {
});
}
+#[no_mangle]
+pub extern "C" fn update_shape_tiles() {
+ with_state!(state, {
+ state.update_tile_for_current_shape();
+ });
+}
+
#[no_mangle]
pub extern "C" fn set_flex_layout_data(
dir: u8,
@@ -665,7 +490,7 @@ pub extern "C" fn set_flex_layout_data(
padding_bottom: f32,
padding_left: f32,
) {
- let dir = shapes::Direction::from_u8(dir);
+ 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);
@@ -743,14 +568,91 @@ pub extern "C" fn set_layout_child_data(
}
#[no_mangle]
-pub extern "C" fn set_grid_layout_data() {}
+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!(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 add_grid_track() {}
+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!(state, |shape: &mut Shape| {
+ shape.set_grid_columns(entries);
+ });
+
+ mem::free_bytes();
+}
#[no_mangle]
-pub extern "C" fn set_grid_cell() {}
+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!(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!(state, |shape: &mut Shape| {
+ shape.set_grid_cells(entries);
+ });
+
+ mem::free_bytes();
+}
fn main() {
- init_gl();
+ #[cfg(target_arch = "wasm32")]
+ init_gl!();
}
diff --git a/render-wasm/src/math.rs b/render-wasm/src/math.rs
index ada204936a..f62e22250b 100644
--- a/render-wasm/src/math.rs
+++ b/render-wasm/src/math.rs
@@ -5,6 +5,8 @@ pub type Matrix = skia::Matrix;
pub type Vector = skia::Vector;
pub type Point = skia::Point;
+const THRESHOLD: f32 = 0.001;
+
pub trait VectorExt {
fn new_points(a: &Point, b: &Point) -> Vector;
}
@@ -16,7 +18,20 @@ impl VectorExt for Vector {
}
}
-#[derive(Debug, Clone, PartialEq)]
+pub fn is_close_to(current: f32, value: f32) -> bool {
+ (current - value).abs() <= THRESHOLD
+}
+
+pub fn identitish(m: Matrix) -> bool {
+ is_close_to(m.scale_x(), 1.0)
+ && is_close_to(m.scale_y(), 1.0)
+ && is_close_to(m.translate_x(), 0.0)
+ && is_close_to(m.translate_y(), 0.0)
+ && is_close_to(m.skew_x(), 0.0)
+ && is_close_to(m.skew_y(), 0.0)
+}
+
+#[derive(Debug, Copy, Clone, PartialEq)]
pub struct Bounds {
pub nw: Point,
pub ne: Point,
@@ -95,9 +110,9 @@ impl Bounds {
self.sw = mtx.map_point(self.sw);
}
- // pub fn box_bounds(&self, other: &Self) -> Option {
- // self.from_points(other.points())
- // }
+ pub fn box_bounds(&self, other: &Self) -> Option {
+ self.from_points(other.points())
+ }
pub fn from_points(&self, points: Vec) -> Option {
let hv = self.horizontal_vec();
@@ -280,6 +295,14 @@ impl Bounds {
let m = self.transform_matrix().unwrap_or(Matrix::default());
m.scale_y() < 0.0
}
+
+ pub fn to_rect(&self) -> Rect {
+ let minx = self.nw.x.min(self.ne.x).min(self.sw.x).min(self.se.x);
+ let miny = self.nw.y.min(self.ne.y).min(self.sw.y).min(self.se.y);
+ let maxx = self.nw.x.max(self.ne.x).max(self.sw.x).max(self.se.x);
+ let maxy = self.nw.y.max(self.ne.y).max(self.sw.y).max(self.se.y);
+ Rect::from_ltrb(minx, miny, maxx, maxy)
+ }
}
#[derive(Debug, Clone, PartialEq)]
diff --git a/render-wasm/src/mem.rs b/render-wasm/src/mem.rs
index f9a71c4a2b..0b0edfd9c4 100644
--- a/render-wasm/src/mem.rs
+++ b/render-wasm/src/mem.rs
@@ -1,5 +1,9 @@
+use std::alloc::{alloc, Layout};
+use std::ptr;
use std::sync::Mutex;
+const LAYOUT_ALIGN: usize = 4;
+
static BUFFERU8: Mutex>>> = Mutex::new(None);
#[no_mangle]
@@ -10,11 +14,17 @@ pub extern "C" fn alloc_bytes(len: usize) -> *mut u8 {
panic!("Bytes already allocated");
}
- let mut new_buffer = Box::new(vec![0u8; len]);
- let ptr = new_buffer.as_mut_ptr();
-
- *guard = Some(new_buffer);
- ptr
+ unsafe {
+ let layout = Layout::from_size_align_unchecked(len, LAYOUT_ALIGN);
+ let ptr = alloc(layout) as *mut u8;
+ if ptr.is_null() {
+ panic!("Allocation failed");
+ }
+ // TODO: Maybe this could be removed.
+ ptr::write_bytes(ptr, 0, len);
+ *guard = Some(Box::new(Vec::from_raw_parts(ptr, len, len)));
+ ptr
+ }
}
pub fn write_bytes(bytes: Vec) -> *mut u8 {
@@ -46,6 +56,12 @@ pub fn bytes() -> Vec {
.map_or_else(|| panic!("Buffer is not initialized"), |buffer| *buffer)
}
+pub fn bytes_or_empty() -> Vec {
+ let mut guard = BUFFERU8.lock().unwrap();
+
+ guard.take().map_or_else(|| Vec::new(), |buffer| *buffer)
+}
+
pub trait SerializableResult {
type BytesType;
fn from_bytes(bytes: Self::BytesType) -> Self;
diff --git a/render-wasm/src/options.rs b/render-wasm/src/options.rs
new file mode 100644
index 0000000000..37afacfc21
--- /dev/null
+++ b/render-wasm/src/options.rs
@@ -0,0 +1,2 @@
+pub const DEBUG_VISIBLE: u32 = 0x01;
+pub const PROFILE_REBUILD_TILES: u32 = 0x02;
diff --git a/render-wasm/src/performance.rs b/render-wasm/src/performance.rs
new file mode 100644
index 0000000000..b19fafa0ea
--- /dev/null
+++ b/render-wasm/src/performance.rs
@@ -0,0 +1,168 @@
+#[allow(unused_imports)]
+#[cfg(target_arch = "wasm32")]
+use crate::get_now;
+
+#[allow(dead_code)]
+#[cfg(target_arch = "wasm32")]
+pub fn get_time() -> i32 {
+ crate::get_now!() as i32
+}
+
+#[allow(dead_code)]
+#[cfg(not(target_arch = "wasm32"))]
+pub fn get_time() -> i32 {
+ let now = std::time::Instant::now();
+ now.elapsed().as_millis() as i32
+}
+
+#[macro_export]
+macro_rules! mark {
+ ($name:expr) => {
+ #[cfg(all(feature = "profile-macros", target_arch = "wasm32"))]
+ {
+ use crate::run_script;
+ run_script!(format!("performance.mark('{}')", $name));
+ }
+ };
+}
+
+#[macro_export]
+macro_rules! measure {
+ ($name:expr) => {
+ #[cfg(all(feature = "profile-macros", target_arch = "wasm32"))]
+ {
+ use crate::run_script;
+ run_script!(format!("performance.measure('{}')", $name));
+ }
+ };
+ ($name:expr, $mark_begin:expr) => {
+ #[cfg(all(feature = "profile-macros", target_arch = "wasm32"))]
+ {
+ use crate::run_script;
+ run_script!(format!(
+ "performance.measure('{}','{}')",
+ $name, $mark_begin
+ ));
+ }
+ };
+ ($name:expr, $mark_begin:expr, $mark_end:expr) => {
+ #[cfg(all(feature = "profile-macros", target_arch = "wasm32"))]
+ {
+ use crate::run_script;
+ run_script!(format!(
+ "performance.measure('{}','{}','{}')",
+ $name, $mark_begin, $mark_end
+ ));
+ }
+ };
+}
+
+#[macro_export]
+macro_rules! begin_mark_name {
+ ($name:expr) => {
+ format!("{}::begin", $name)
+ };
+}
+
+#[macro_export]
+macro_rules! end_mark_name {
+ ($name:expr) => {
+ format!("{}::end", $name)
+ };
+}
+
+#[macro_export]
+macro_rules! measure_marks {
+ ($name:expr) => {
+ #[cfg(all(feature = "profile-macros", target_arch = "wasm32"))]
+ {
+ use crate::{begin_mark_name, end_mark_name, measure};
+ measure!($name, begin_mark_name!($name), end_mark_name!($name));
+ }
+ };
+}
+
+#[macro_export]
+macro_rules! clear_marks {
+ () => {
+ use crate::run_script;
+ run_script!("performance.clearMarks()");
+ };
+ ($($name:expr),*) => {
+ format!("{}", [$(format!("performance.clearMarks('{}')", $name)),*].join("; "))
+ };
+}
+
+#[macro_export]
+macro_rules! clear_measures {
+ () => {
+ use crate::run_script;
+ run_script!("performance.clearMeasures()");
+ };
+ ($($name:expr),*) => {
+ format!("{}", [$(format!("performance.clearMeasures('{}')", $name)),*].join("; "))
+ };
+}
+
+#[macro_export]
+macro_rules! begin_measure {
+ ($name:expr) => {
+ #[cfg(all(feature = "profile-macros", target_arch = "wasm32"))]
+ {
+ use crate::{begin_mark_name, mark};
+ mark!(begin_mark_name!($name));
+ }
+ };
+ ($name:expr, $clear_marks:expr) => {
+ #[cfg(all(feature = "profile-macros", target_arch = "wasm32"))]
+ {
+ use crate::{begin_mark_name, clear_marks, end_mark_name, mark};
+ if $clear_marks {
+ clear_marks!(begin_mark_name!($name), end_mark_name($name));
+ }
+ mark!(begin_mark_name!($name));
+ }
+ };
+}
+
+#[macro_export]
+macro_rules! end_measure {
+ ($name:expr) => {
+ #[cfg(all(feature = "profile-macros", target_arch = "wasm32"))]
+ {
+ use crate::{end_mark_name, mark, measure_marks};
+ mark!(end_mark_name!($name));
+ measure_marks!($name);
+ }
+ };
+ ($name:expr, $clear_marks:expr) => {
+ #[cfg(all(feature = "profile-macros", target_arch = "wasm32"))]
+ {
+ use crate::{begin_mark_name, clear_marks, end_mark_name, mark, measure_marks};
+ mark!(end_mark_name!($name));
+ measure_marks!($name);
+ if $clear_marks {
+ clear_marks!(begin_mark_name!($name), end_mark_name($name));
+ }
+ }
+ };
+}
+
+// We need to reexport the macro to make it public.
+#[allow(unused_imports)]
+pub use clear_marks;
+
+#[allow(unused_imports)]
+pub use clear_measures;
+
+#[allow(unused_imports)]
+pub use mark;
+
+#[allow(unused_imports)]
+pub use measure;
+
+#[allow(unused_imports)]
+pub use begin_measure;
+
+#[allow(unused_imports)]
+pub use end_measure;
diff --git a/render-wasm/src/render.rs b/render-wasm/src/render.rs
index 318df808e2..e7e77db654 100644
--- a/render-wasm/src/render.rs
+++ b/render-wasm/src/render.rs
@@ -1,11 +1,13 @@
-use skia_safe::{self as skia, Contains, Matrix, RRect, Rect};
-use std::collections::HashMap;
-use uuid::Uuid;
+use skia_safe::{self as skia, Matrix, RRect, Rect};
+use crate::uuid::Uuid;
+use std::collections::{HashMap, HashSet, VecDeque};
+
+use crate::performance;
use crate::view::Viewbox;
+use crate::wapi;
mod blend;
-mod cache;
mod debug;
mod fills;
mod fonts;
@@ -16,9 +18,9 @@ mod shadows;
mod strokes;
mod surfaces;
mod text;
+mod tiles;
-use crate::shapes::{Corners, Shape, Type};
-use cache::CachedSurfaceImage;
+use crate::shapes::{modified_children_ids, Corners, Shape, StructureEntry, Type};
use gpu_state::GpuState;
use options::RenderOptions;
use surfaces::{SurfaceId, Surfaces};
@@ -27,19 +29,11 @@ pub use blend::BlendMode;
pub use fonts::*;
pub use images::*;
+// This is the extra are used for tile rendering.
+const VIEWPORT_INTEREST_AREA_THRESHOLD: i32 = 1;
const MAX_BLOCKING_TIME_MS: i32 = 32;
const NODE_BATCH_THRESHOLD: i32 = 10;
-extern "C" {
- fn emscripten_run_script(script: *const i8);
- fn emscripten_run_script_int(script: *const i8) -> i32;
-}
-
-fn get_time() -> i32 {
- let script = std::ffi::CString::new("performance.now()").unwrap();
- unsafe { emscripten_run_script_int(script.as_ptr()) }
-}
-
pub struct NodeRenderState {
pub id: Uuid,
// We use this bool to keep that we've traversed all the children inside this node.
@@ -56,7 +50,7 @@ impl NodeRenderState {
pub fn get_children_clip_bounds(
&self,
element: &Shape,
- modifiers: &HashMap,
+ modifiers: Option<&Matrix>,
) -> Option<(Rect, Option, Matrix)> {
if self.id.is_nil() || !element.clip() {
return self.clip_bounds;
@@ -67,7 +61,7 @@ impl NodeRenderState {
transform.post_translate(bounds.center());
transform.pre_translate(-bounds.center());
- if let Some(modifier) = modifiers.get(&element.id) {
+ if let Some(modifier) = modifiers {
transform.post_concat(modifier);
}
@@ -85,8 +79,7 @@ pub(crate) struct RenderState {
gpu_state: GpuState,
pub options: RenderOptions,
pub surfaces: Surfaces,
- fonts: FontStore,
- pub cached_surface_image: Option,
+ pub fonts: FontStore,
pub viewbox: Viewbox,
pub images: ImageStore,
pub background_color: skia::Color,
@@ -95,40 +88,50 @@ pub(crate) struct RenderState {
// Indicates whether the rendering process has pending frames.
pub render_in_progress: bool,
// Stack of nodes pending to be rendered.
- pub pending_nodes: Vec,
- pub render_complete: bool,
+ pub pending_nodes: VecDeque,
+ pub current_tile: Option,
pub sampling_options: skia::SamplingOptions,
+ pub render_area: Rect,
+ pub tiles: tiles::TileHashMap,
+ pub pending_tiles: Vec,
}
impl RenderState {
pub fn new(width: i32, height: i32) -> RenderState {
// This needs to be done once per WebGL context.
let mut gpu_state = GpuState::new();
-
let sampling_options =
skia::SamplingOptions::new(skia::FilterMode::Linear, skia::MipmapMode::Nearest);
- let surfaces = Surfaces::new(&mut gpu_state, (width, height), sampling_options);
let fonts = FontStore::new();
+ let surfaces = Surfaces::new(
+ &mut gpu_state,
+ (width, height),
+ sampling_options,
+ tiles::get_tile_dimensions(),
+ );
// This is used multiple times everywhere so instead of creating new instances every
// time we reuse this one.
+
+ let tiles = tiles::TileHashMap::new();
+
RenderState {
gpu_state,
- surfaces,
- cached_surface_image: None,
- // font_provider,
- // font_collection,
- fonts,
options: RenderOptions::default(),
+ surfaces,
+ fonts,
viewbox: Viewbox::new(width as f32, height as f32),
images: ImageStore::new(),
background_color: skia::Color::TRANSPARENT,
render_request_id: None,
render_in_progress: false,
- pending_nodes: vec![],
- render_complete: true,
+ pending_nodes: VecDeque::new(),
+ current_tile: None,
sampling_options,
+ render_area: Rect::new_empty(),
+ tiles,
+ pending_tiles: vec![],
}
}
@@ -141,7 +144,7 @@ impl RenderState {
}
pub fn add_image(&mut self, id: Uuid, image_data: &[u8]) -> Result<(), String> {
- self.images.add(id, image_data)
+ self.images.add(id, image_data, &mut self.gpu_state.context)
}
pub fn has_image(&mut self, id: &Uuid) -> bool {
@@ -149,7 +152,7 @@ impl RenderState {
}
pub fn set_debug_flags(&mut self, debug: u32) {
- self.options.debug_flags = debug;
+ self.options.flags = debug;
}
pub fn set_dpr(&mut self, dpr: f32) {
@@ -164,7 +167,6 @@ impl RenderState {
pub fn set_background_color(&mut self, color: skia::Color) {
self.background_color = color;
- let _ = self.render_from_cache();
}
pub fn resize(&mut self, width: i32, height: i32) {
@@ -182,45 +184,30 @@ impl RenderState {
}
pub fn reset_canvas(&mut self) {
- self.surfaces.canvas(SurfaceId::Fills).restore_to_count(1);
- self.surfaces
- .canvas(SurfaceId::DropShadows)
- .restore_to_count(1);
- self.surfaces.canvas(SurfaceId::Strokes).restore_to_count(1);
- self.surfaces.canvas(SurfaceId::Current).restore_to_count(1);
-
- self.surfaces.apply_mut(
- &[
- SurfaceId::Fills,
- SurfaceId::Strokes,
- SurfaceId::Current,
- SurfaceId::DropShadows,
- SurfaceId::Shadow,
- SurfaceId::Overlay,
- ],
- |s| {
- s.canvas().clear(self.background_color).reset_matrix();
- },
- );
-
- self.surfaces
- .canvas(SurfaceId::Debug)
- .clear(skia::Color::TRANSPARENT)
- .reset_matrix();
+ self.surfaces.reset(self.background_color);
}
- pub fn apply_render_to_final_canvas(&mut self) {
- self.surfaces.draw_into(
- SurfaceId::Current,
- SurfaceId::Target,
- Some(&skia::Paint::default()),
- );
+ pub fn apply_render_to_final_canvas(&mut self, rect: skia::Rect) {
+ let x = self.current_tile.unwrap().0;
+ let y = self.current_tile.unwrap().1;
+
+ self.surfaces.cache_current_tile_texture((x, y));
+
+ self.surfaces
+ .draw_cached_tile_surface(self.current_tile.unwrap(), rect);
+
+ if self.options.is_debug_visible() {
+ debug::render_workspace_current_tile(
+ self,
+ "".to_string(),
+ self.current_tile.unwrap(),
+ rect,
+ );
+ }
}
- pub fn apply_drawing_to_render_canvas(&mut self, shape: &Shape) {
- self.surfaces
- .flush_and_submit(&mut self.gpu_state, SurfaceId::Fills);
-
+ pub fn apply_drawing_to_render_canvas(&mut self, shape: Option<&Shape>) {
+ performance::begin_measure!("apply_drawing_to_render_canvas");
self.surfaces
.flush_and_submit(&mut self.gpu_state, SurfaceId::DropShadows);
@@ -230,18 +217,26 @@ impl RenderState {
Some(&skia::Paint::default()),
);
+ self.surfaces
+ .flush_and_submit(&mut self.gpu_state, SurfaceId::Fills);
+
self.surfaces.draw_into(
SurfaceId::Fills,
SurfaceId::Current,
Some(&skia::Paint::default()),
);
- let render_overlay_below_strokes = shape.fills().len() > 0;
+ let mut render_overlay_below_strokes = false;
+ if let Some(shape) = shape {
+ render_overlay_below_strokes = shape.has_fills();
+ }
+
if render_overlay_below_strokes {
self.surfaces
- .flush_and_submit(&mut self.gpu_state, SurfaceId::Overlay);
+ .flush_and_submit(&mut self.gpu_state, SurfaceId::InnerShadows);
+
self.surfaces.draw_into(
- SurfaceId::Overlay,
+ SurfaceId::InnerShadows,
SurfaceId::Current,
Some(&skia::Paint::default()),
);
@@ -249,6 +244,7 @@ impl RenderState {
self.surfaces
.flush_and_submit(&mut self.gpu_state, SurfaceId::Strokes);
+
self.surfaces.draw_into(
SurfaceId::Strokes,
SurfaceId::Current,
@@ -257,24 +253,22 @@ impl RenderState {
if !render_overlay_below_strokes {
self.surfaces
- .flush_and_submit(&mut self.gpu_state, SurfaceId::Overlay);
+ .flush_and_submit(&mut self.gpu_state, SurfaceId::InnerShadows);
+
self.surfaces.draw_into(
- SurfaceId::Overlay,
+ SurfaceId::InnerShadows,
SurfaceId::Current,
Some(&skia::Paint::default()),
);
}
- self.surfaces
- .draw_into(SurfaceId::Overlay, SurfaceId::Current, None);
self.surfaces
.flush_and_submit(&mut self.gpu_state, SurfaceId::Current);
self.surfaces.apply_mut(
&[
- SurfaceId::Shadow,
SurfaceId::DropShadows,
- SurfaceId::Overlay,
+ SurfaceId::InnerShadows,
SurfaceId::Fills,
SurfaceId::Strokes,
],
@@ -284,43 +278,45 @@ impl RenderState {
);
}
- pub fn invalidate_cache_if_needed(&mut self) {
- if let Some(ref mut cached_surface_image) = self.cached_surface_image {
- cached_surface_image.invalidate_if_dirty(&self.viewbox);
- }
- }
-
pub fn render_shape(
&mut self,
shape: &mut Shape,
modifiers: Option<&Matrix>,
clip_bounds: Option<(Rect, Option, Matrix)>,
) {
- let surface_ids = &[SurfaceId::Fills, SurfaceId::Strokes, SurfaceId::DropShadows];
+ let surface_ids = &[
+ SurfaceId::Fills,
+ SurfaceId::Strokes,
+ SurfaceId::DropShadows,
+ SurfaceId::InnerShadows,
+ ];
self.surfaces.apply_mut(surface_ids, |s| {
s.canvas().save();
});
+ let antialias = shape.should_use_antialias(self.get_scale());
+
// set clipping
if let Some((bounds, corners, transform)) = clip_bounds {
- self.surfaces.apply_mut(
- &[SurfaceId::Fills, SurfaceId::Strokes, SurfaceId::DropShadows],
- |s| {
- s.canvas().concat(&transform);
- },
- );
+ self.surfaces.apply_mut(surface_ids, |s| {
+ s.canvas().concat(&transform);
+ });
if let Some(corners) = corners {
let rrect = RRect::new_rect_radii(bounds, &corners);
self.surfaces.apply_mut(surface_ids, |s| {
- s.canvas().clip_rrect(rrect, skia::ClipOp::Intersect, true);
+ s.canvas()
+ .clip_rrect(rrect, skia::ClipOp::Intersect, antialias);
});
} else {
self.surfaces.apply_mut(surface_ids, |s| {
- s.canvas().clip_rect(bounds, skia::ClipOp::Intersect, true);
+ s.canvas()
+ .clip_rect(bounds, skia::ClipOp::Intersect, antialias);
});
}
+ // This renders a red line around clipped
+ // shapes (frames).
if self.options.is_debug_visible() {
let mut paint = skia::Paint::default();
paint.set_style(skia::PaintStyle::Stroke);
@@ -372,199 +368,162 @@ impl RenderState {
}
}
Type::Text(text_content) => {
- text::render(self, text_content);
+ self.surfaces.apply_mut(&[SurfaceId::Fills], |s| {
+ s.canvas().concat(&matrix);
+ });
+
+ let paragraphs = text_content.to_skia_paragraphs(&self.fonts.font_collection());
+
+ shadows::render_text_drop_shadows(self, &shape, ¶graphs, antialias);
+ text::render(self, &shape, ¶graphs, None, None);
+ shadows::render_text_inner_shadows(self, &shape, ¶graphs, antialias);
}
_ => {
self.surfaces.apply_mut(
- &[SurfaceId::Fills, SurfaceId::Strokes, SurfaceId::DropShadows],
+ &[
+ SurfaceId::Fills,
+ SurfaceId::Strokes,
+ SurfaceId::DropShadows,
+ SurfaceId::InnerShadows,
+ ],
|s| {
s.canvas().concat(&matrix);
},
);
for fill in shape.fills().rev() {
- fills::render(self, &shape, fill);
+ fills::render(self, &shape, fill, antialias);
}
for stroke in shape.strokes().rev() {
- strokes::render(self, &shape, stroke);
+ shadows::render_stroke_drop_shadows(self, &shape, stroke, antialias);
+ strokes::render(self, &shape, stroke, None, None, antialias);
+ shadows::render_stroke_inner_shadows(self, &shape, stroke, antialias);
}
- for shadow in shape.inner_shadows().rev().filter(|s| !s.hidden()) {
- shadows::render_inner_shadow(
- self,
- shadow,
- self.viewbox.zoom * self.options.dpr(),
- shape.fills().len() > 0,
- );
- }
-
- shadows::render_drop_shadows(self, &shape);
+ shadows::render_fill_inner_shadows(self, &shape, antialias);
+ shadows::render_fill_drop_shadows(self, &shape, antialias);
}
};
- self.apply_drawing_to_render_canvas(&shape);
+ self.apply_drawing_to_render_canvas(Some(&shape));
self.surfaces.apply_mut(
- &[SurfaceId::Fills, SurfaceId::Strokes, SurfaceId::DropShadows],
+ &[
+ SurfaceId::Fills,
+ SurfaceId::Strokes,
+ SurfaceId::DropShadows,
+ SurfaceId::InnerShadows,
+ ],
|s| {
s.canvas().restore();
},
);
}
+ pub fn update_render_context(&mut self, tile: tiles::Tile) {
+ self.current_tile = Some(tile);
+ self.render_area = tiles::get_tile_rect(self.viewbox, tile);
+ self.surfaces
+ .update_render_context(self.render_area, self.viewbox);
+ }
+
pub fn start_render_loop(
&mut self,
tree: &mut HashMap,
modifiers: &HashMap,
+ structure: &HashMap>,
timestamp: i32,
) -> Result<(), String> {
if self.render_in_progress {
if let Some(frame_id) = self.render_request_id {
- self.cancel_animation_frame(frame_id);
+ wapi::cancel_animation_frame!(frame_id);
}
}
+ performance::begin_measure!("render");
+ performance::begin_measure!("start_render_loop");
+ let scale = self.get_scale();
self.reset_canvas();
self.surfaces.apply_mut(
- &[SurfaceId::Fills, SurfaceId::Strokes, SurfaceId::DropShadows],
+ &[
+ SurfaceId::Fills,
+ SurfaceId::Strokes,
+ SurfaceId::DropShadows,
+ SurfaceId::InnerShadows,
+ ],
|s| {
- s.canvas().scale((
- self.viewbox.zoom * self.options.dpr(),
- self.viewbox.zoom * self.options.dpr(),
- ));
- s.canvas()
- .translate((self.viewbox.pan_x, self.viewbox.pan_y));
+ s.canvas().scale((scale, scale));
},
);
- self.pending_nodes = vec![NodeRenderState {
- id: Uuid::nil(),
- visited_children: false,
- clip_bounds: None,
- visited_mask: false,
- mask: false,
- }];
- self.render_in_progress = true;
- self.process_animation_frame(tree, modifiers, timestamp)?;
- self.render_complete = true;
- Ok(())
- }
+ // First we retrieve the extended area of the viewport that we could render.
+ let (isx, isy, iex, iey) = tiles::get_tiles_for_viewbox_with_interest(
+ self.viewbox,
+ VIEWPORT_INTEREST_AREA_THRESHOLD,
+ );
+ // Then we get the real amount of tiles rendered for the current viewbox.
+ let (sx, sy, ex, ey) = tiles::get_tiles_for_viewbox(self.viewbox);
+ debug::render_debug_tiles_for_viewbox(self, isx, isy, iex, iey);
+ let tile_center = ((iex - isx) / 2, (iey - isy) / 2);
- pub fn request_animation_frame(&mut self) -> i32 {
- let script =
- std::ffi::CString::new("requestAnimationFrame(_process_animation_frame)").unwrap();
- unsafe { emscripten_run_script_int(script.as_ptr()) }
- }
-
- pub fn cancel_animation_frame(&mut self, frame_id: i32) {
- let cancel_script = format!("cancelAnimationFrame({})", frame_id);
- let c_cancel_script = std::ffi::CString::new(cancel_script).unwrap();
- unsafe {
- emscripten_run_script(c_cancel_script.as_ptr());
+ performance::begin_measure!("tile_cache");
+ self.pending_tiles = vec![];
+ self.surfaces.cache_clear_visited();
+ for y in isy..=iey {
+ for x in isx..=iex {
+ let tile = (x, y);
+ let distance = tiles::manhattan_distance(tile, tile_center);
+ self.pending_tiles.push((x, y, distance));
+ // We only need to mark! as visited the visible
+ // tiles, the ones that are outside the viewport
+ // should not be rendered.
+ if x >= sx && x <= ex && y >= sy && y <= ey {
+ self.surfaces.cache_visit(tile);
+ }
+ }
}
+ performance::end_measure!("tile_cache");
+
+ self.pending_nodes = VecDeque::new();
+ // reorder by distance to the center.
+ self.pending_tiles.sort_by(|a, b| b.2.cmp(&a.2));
+ self.current_tile = None;
+ self.render_in_progress = true;
+ self.apply_drawing_to_render_canvas(None);
+ self.process_animation_frame(tree, modifiers, structure, timestamp)?;
+ performance::end_measure!("start_render_loop");
+ Ok(())
}
pub fn process_animation_frame(
&mut self,
tree: &mut HashMap,
modifiers: &HashMap,
+ structure: &HashMap>,
timestamp: i32,
) -> Result<(), String> {
+ performance::begin_measure!("process_animation_frame");
if self.render_in_progress {
- self.render_shape_tree(tree, modifiers, timestamp)?;
+ self.render_shape_tree(tree, modifiers, structure, timestamp)?;
+ self.flush();
+
if self.render_in_progress {
if let Some(frame_id) = self.render_request_id {
- self.cancel_animation_frame(frame_id);
+ wapi::cancel_animation_frame!(frame_id);
}
- self.render_request_id = Some(self.request_animation_frame());
+ self.render_request_id = Some(wapi::request_animation_frame!());
+ } else {
+ performance::end_measure!("render");
}
}
-
- // self.render_in_progress can have changed
- if self.render_in_progress {
- if self.cached_surface_image.is_some() {
- self.render_from_cache()?;
- }
- return Ok(());
- }
-
- // Chech if cached_surface_image is not set or is invalid
- if self
- .cached_surface_image
- .as_ref()
- .is_none_or(|img| img.invalid)
- {
- self.cached_surface_image = Some(CachedSurfaceImage {
- image: self.surfaces.snapshot(SurfaceId::Current),
- viewbox: self.viewbox,
- invalid: false,
- has_all_shapes: self.render_complete,
- });
- }
-
- if self.options.is_debug_visible() {
- self.render_debug();
- }
-
- debug::render_wasm_label(self);
- self.apply_render_to_final_canvas();
- self.flush();
+ performance::end_measure!("process_animation_frame");
Ok(())
}
- pub fn clear_cache(&mut self) {
- self.cached_surface_image = None;
- }
-
- pub fn render_from_cache(&mut self) -> Result<(), String> {
- let cached = self
- .cached_surface_image
- .as_ref()
- .ok_or("Uninitialized cached surface image")?;
-
- let image = &cached.image;
- let paint = skia::Paint::default();
- self.surfaces.canvas(SurfaceId::Target).save();
- self.surfaces.canvas(SurfaceId::Fills).save();
- self.surfaces.canvas(SurfaceId::Strokes).save();
- self.surfaces.canvas(SurfaceId::DropShadows).save();
-
- let navigate_zoom = self.viewbox.zoom / cached.viewbox.zoom;
- let navigate_x = cached.viewbox.zoom * (self.viewbox.pan_x - cached.viewbox.pan_x);
- let navigate_y = cached.viewbox.zoom * (self.viewbox.pan_y - cached.viewbox.pan_y);
-
- self.surfaces
- .canvas(SurfaceId::Target)
- .scale((navigate_zoom, navigate_zoom));
- self.surfaces.canvas(SurfaceId::Target).translate((
- navigate_x * self.options.dpr(),
- navigate_y * self.options.dpr(),
- ));
- self.surfaces
- .canvas(SurfaceId::Target)
- .clear(self.background_color);
- self.surfaces
- .canvas(SurfaceId::Target)
- .draw_image(image, (0, 0), Some(&paint));
-
- self.surfaces.canvas(SurfaceId::Target).restore();
- self.surfaces.canvas(SurfaceId::Fills).restore();
- self.surfaces.canvas(SurfaceId::Strokes).restore();
- self.surfaces.canvas(SurfaceId::DropShadows).restore();
-
- self.flush();
-
- Ok(())
- }
-
- fn render_debug(&mut self) {
- debug::render(self);
- }
-
pub fn render_shape_enter(&mut self, element: &mut Shape, mask: bool) {
// Masked groups needs two rendering passes, the first one rendering
// the content and the second one rendering the mask so we need to do
- // an extra save_layer to keep all the masked group separate from other
- // already drawn elements.
+ // an extra save_layer to keep all the masked group separate from
+ // other already drawn elements.
match element.shape_type {
Type::Group(group) => {
if group.masked {
@@ -594,7 +553,7 @@ impl RenderState {
.save_layer(&mask_rec);
}
- if let Some(image_filter) = element.image_filter(self.viewbox.zoom * self.options.dpr()) {
+ if let Some(image_filter) = element.image_filter(self.get_scale()) {
paint.set_image_filter(image_filter);
}
@@ -621,118 +580,349 @@ impl RenderState {
self.surfaces.canvas(SurfaceId::Current).restore();
}
+ pub fn get_current_tile_bounds(&mut self) -> Rect {
+ let (tile_x, tile_y) = self.current_tile.unwrap();
+ let scale = self.get_scale();
+ let offset_x = self.viewbox.area.left * scale;
+ let offset_y = self.viewbox.area.top * scale;
+ Rect::from_xywh(
+ (tile_x as f32 * tiles::TILE_SIZE) - offset_x,
+ (tile_y as f32 * tiles::TILE_SIZE) - offset_y,
+ tiles::TILE_SIZE,
+ tiles::TILE_SIZE,
+ )
+ }
+
pub fn render_shape_tree(
&mut self,
tree: &mut HashMap,
modifiers: &HashMap,
+ structure: &HashMap>,
timestamp: i32,
) -> Result<(), String> {
if !self.render_in_progress {
return Ok(());
}
- let mut i = 0;
- while let Some(node_render_state) = self.pending_nodes.pop() {
- let NodeRenderState {
- id: node_id,
- visited_children,
- clip_bounds,
- visited_mask,
- mask,
- } = node_render_state;
- let element = tree.get_mut(&node_id).ok_or(
- "Error: Element with root_id {node_render_state.id} not found in the tree."
- .to_string(),
- )?;
+ let scale = self.get_scale();
+ let mut should_stop = false;
- let render_complete = self.viewbox.area.contains(element.selrect());
- if visited_children {
- if !visited_mask {
- match element.shape_type {
- Type::Group(group) => {
- // When we're dealing with masked groups we need to
- // do a separate extra step to draw the mask (the last
- // element of a masked group) and blend (using
- // the blend mode 'destination-in') the content
- // of the group and the mask.
- if group.masked {
- self.pending_nodes.push(NodeRenderState {
- id: node_id,
- visited_children: true,
- clip_bounds: None,
- visited_mask: true,
- mask: false,
- });
- if let Some(&mask_id) = element.mask_id() {
- self.pending_nodes.push(NodeRenderState {
- id: mask_id,
- visited_children: false,
- clip_bounds: None,
- visited_mask: false,
- mask: true,
- });
+ while !should_stop {
+ if let Some(current_tile) = self.current_tile {
+ if self.surfaces.has_cached_tile_surface(current_tile) {
+ performance::begin_measure!("render_shape_tree::cached");
+ let tile_rect = self.get_current_tile_bounds();
+ self.surfaces
+ .draw_cached_tile_surface(current_tile, tile_rect);
+ performance::end_measure!("render_shape_tree::cached");
+
+ if self.options.is_debug_visible() {
+ debug::render_workspace_current_tile(
+ self,
+ "Cached".to_string(),
+ current_tile,
+ tile_rect,
+ );
+ }
+ } else {
+ performance::begin_measure!("render_shape_tree::uncached");
+ let mut i = 0;
+ let mut is_empty = true;
+ while let Some(node_render_state) = self.pending_nodes.pop_front() {
+ let NodeRenderState {
+ id: node_id,
+ visited_children,
+ clip_bounds,
+ visited_mask,
+ mask,
+ } = node_render_state;
+
+ is_empty = false;
+ let element = tree.get_mut(&node_id).ok_or(
+ "Error: Element with root_id {node_render_state.id} not found in the tree."
+ .to_string(),
+ )?;
+
+ // If the shape is not in the tile set, then we update
+ // it.
+ if let None = self.tiles.get_tiles_of(node_id) {
+ self.update_tile_for(element);
+ }
+
+ if visited_children {
+ if !visited_mask {
+ match element.shape_type {
+ Type::Group(group) => {
+ // When we're dealing with masked groups we need to
+ // do a separate extra step to draw the mask (the last
+ // element of a masked group) and blend (using
+ // the blend mode 'destination-in') the content
+ // of the group and the mask.
+ if group.masked {
+ self.pending_nodes.push_back(NodeRenderState {
+ id: node_id,
+ visited_children: true,
+ clip_bounds: None,
+ visited_mask: true,
+ mask: false,
+ });
+ if let Some(&mask_id) = element.mask_id() {
+ self.pending_nodes.push_back(NodeRenderState {
+ id: mask_id,
+ visited_children: false,
+ clip_bounds: None,
+ visited_mask: false,
+ mask: true,
+ });
+ }
+ }
+ }
+ _ => {}
}
}
+ self.render_shape_exit(element, visited_mask);
+ continue;
}
- _ => {}
+
+ if !node_render_state.id.is_nil() {
+ // If we didn't visited_children this shape, then we need to do
+ let mut transformed_element = element.clone();
+ if let Some(modifier) = modifiers.get(&node_id) {
+ transformed_element.apply_transform(modifier);
+ }
+ if !transformed_element.extrect().intersects(self.render_area)
+ || transformed_element.hidden()
+ || transformed_element.visually_insignificant(scale)
+ {
+ debug::render_debug_shape(self, &transformed_element, false);
+ continue;
+ } else {
+ debug::render_debug_shape(self, &transformed_element, true);
+ }
+ }
+
+ self.render_shape_enter(element, mask);
+ if !node_render_state.id.is_nil() {
+ self.render_shape(element, modifiers.get(&element.id), clip_bounds);
+ } else {
+ self.apply_drawing_to_render_canvas(Some(&element));
+ }
+
+ // Set the node as visited_children before processing children
+ self.pending_nodes.push_back(NodeRenderState {
+ id: node_id,
+ visited_children: true,
+ clip_bounds: None,
+ visited_mask: false,
+ mask: mask,
+ });
+
+ if element.is_recursive() {
+ let children_clip_bounds = node_render_state
+ .get_children_clip_bounds(element, modifiers.get(&element.id));
+
+ let mut children_ids =
+ modified_children_ids(element, structure.get(&element.id));
+
+ // Z-index ordering on Layouts
+ if element.has_layout() {
+ children_ids.sort_by(|id1, id2| {
+ let z1 = tree.get(id1).map_or_else(|| 0, |s| s.z_index());
+ let z2 = tree.get(id2).map_or_else(|| 0, |s| s.z_index());
+ z1.cmp(&z2)
+ });
+ }
+
+ for child_id in children_ids.iter().rev() {
+ self.pending_nodes.push_back(NodeRenderState {
+ id: *child_id,
+ visited_children: false,
+ clip_bounds: children_clip_bounds,
+ visited_mask: false,
+ mask: false,
+ });
+ }
+ }
+
+ // We try to avoid doing too many calls to get_time
+ if i % NODE_BATCH_THRESHOLD == 0
+ && performance::get_time() - timestamp > MAX_BLOCKING_TIME_MS
+ {
+ return Ok(());
+ }
+ i += 1;
+ }
+ performance::end_measure!("render_shape_tree::uncached");
+ let tile_rect = self.get_current_tile_bounds();
+ if !is_empty {
+ self.apply_render_to_final_canvas(tile_rect);
+ } else {
+ self.surfaces.apply_mut(&[SurfaceId::Target], |s| {
+ let mut paint = skia::Paint::default();
+ paint.set_color(self.background_color);
+ s.canvas().draw_rect(tile_rect, &paint);
+ });
}
}
- self.render_shape_exit(element, visited_mask);
- continue;
}
- // If we didn't visited_children this shape, then we need to do
- if !node_render_state.id.is_nil() {
- if !element.selrect().intersects(self.viewbox.area) || element.hidden() {
- debug::render_debug_shape(self, element, false);
- self.render_complete = render_complete;
- continue;
- } else {
- debug::render_debug_shape(self, element, true);
+ self.surfaces
+ .canvas(SurfaceId::Current)
+ .clear(self.background_color);
+
+ let Some(root) = tree.get(&Uuid::nil()) else {
+ return Err(String::from("Root shape not found"));
+ };
+ let root_ids = modified_children_ids(&root, structure.get(&root.id));
+
+ // If we finish processing every node rendering is complete
+ // let's check if there are more pending nodes
+ if let Some(next_tile_with_distance) = self.pending_tiles.pop() {
+ let (x, y, _) = next_tile_with_distance;
+ let next_tile = (x, y);
+ self.update_render_context(next_tile);
+
+ if !self.surfaces.has_cached_tile_surface(next_tile) {
+ if let Some(ids) = self.tiles.get_shapes_at(next_tile) {
+ // We only need first level shapes
+ let mut valid_ids: Vec = ids
+ .iter()
+ .filter_map(|id| root_ids.get(id).map(|_| *id))
+ .collect();
+
+ // These shapes for the tile should be ordered as they are in the parent node
+ valid_ids.sort_by_key(|id| root_ids.get_index_of(id));
+
+ self.pending_nodes.extend(valid_ids.into_iter().map(|id| {
+ NodeRenderState {
+ id,
+ visited_children: false,
+ clip_bounds: None,
+ visited_mask: false,
+ mask: false,
+ }
+ }));
+ }
}
- }
-
- self.render_shape_enter(element, mask);
- if !node_render_state.id.is_nil() {
- self.render_shape(element, modifiers.get(&element.id), clip_bounds);
} else {
- self.apply_drawing_to_render_canvas(&element);
+ should_stop = true;
}
-
- // Set the node as visited_children before processing children
- self.pending_nodes.push(NodeRenderState {
- id: node_id,
- visited_children: true,
- clip_bounds: None,
- visited_mask: false,
- mask: mask,
- });
-
- if element.is_recursive() {
- let children_clip_bounds =
- node_render_state.get_children_clip_bounds(element, &modifiers);
-
- for child_id in element.children_ids().iter().rev() {
- self.pending_nodes.push(NodeRenderState {
- id: *child_id,
- visited_children: false,
- clip_bounds: children_clip_bounds,
- visited_mask: false,
- mask: false,
- });
- }
- }
-
- // We try to avoid doing too many calls to get_time
- if i % NODE_BATCH_THRESHOLD == 0 && get_time() - timestamp > MAX_BLOCKING_TIME_MS {
- return Ok(());
- }
-
- i += 1;
+ }
+ self.render_in_progress = false;
+ if self.options.is_debug_visible() {
+ debug::render(self);
}
- // If we finish processing every node rendering is complete
- self.render_in_progress = false;
+ debug::render_wasm_label(self);
+ self.flush();
+
Ok(())
}
+
+ pub fn get_tiles_for_shape(&mut self, shape: &Shape) -> (i32, i32, i32, i32) {
+ let tile_size = tiles::get_tile_size(self.viewbox);
+ tiles::get_tiles_for_rect(shape.extrect(), tile_size)
+ }
+
+ pub fn update_tile_for(&mut self, shape: &Shape) {
+ let (rsx, rsy, rex, rey) = self.get_tiles_for_shape(shape);
+ let new_tiles: HashSet<(i32, i32)> = (rsx..=rex)
+ .flat_map(|x| (rsy..=rey).map(move |y| (x, y)))
+ .collect();
+
+ // Update tiles where the shape was
+ if let Some(tiles) = self.tiles.get_tiles_of(shape.id) {
+ for tile in tiles.iter() {
+ self.surfaces.remove_cached_tile_surface(*tile);
+ }
+ // Remove shape from tiles not used
+ let diff: HashSet<_> = tiles.difference(&new_tiles).cloned().collect();
+ for tile in diff.iter() {
+ self.tiles.remove_shape_at(*tile, shape.id);
+ }
+ }
+
+ // Update tiles matching the actual selrect
+ for tile in new_tiles {
+ self.tiles.add_shape_at(tile, shape.id);
+ self.surfaces.remove_cached_tile_surface(tile);
+ }
+ }
+
+ pub fn rebuild_tiles_shallow(
+ &mut self,
+ tree: &mut HashMap,
+ modifiers: &HashMap,
+ structure: &HashMap>,
+ ) {
+ performance::begin_measure!("rebuild_tiles_shallow");
+ self.tiles.invalidate();
+ self.surfaces.remove_cached_tiles();
+ let mut nodes = vec![Uuid::nil()];
+ while let Some(shape_id) = nodes.pop() {
+ if let Some(shape) = tree.get(&shape_id) {
+ let mut shape = shape.clone();
+ if shape_id != Uuid::nil() {
+ if let Some(modifier) = modifiers.get(&shape_id) {
+ shape.apply_transform(modifier);
+ }
+ self.update_tile_for(&shape);
+ } else {
+ // We only need to rebuild tiles from the first level.
+ let children = modified_children_ids(&shape, structure.get(&shape.id));
+ for child_id in children.iter() {
+ nodes.push(*child_id);
+ }
+ }
+ }
+ }
+ performance::end_measure!("rebuild_tiles_shallow");
+ }
+
+ pub fn rebuild_tiles(
+ &mut self,
+ tree: &mut HashMap,
+ modifiers: &HashMap,
+ structure: &HashMap>,
+ ) {
+ performance::begin_measure!("rebuild_tiles");
+ self.tiles.invalidate();
+ self.surfaces.remove_cached_tiles();
+ let mut nodes = vec![Uuid::nil()];
+ while let Some(shape_id) = nodes.pop() {
+ if let Some(shape) = tree.get(&shape_id) {
+ let mut shape = shape.clone();
+ if shape_id != Uuid::nil() {
+ if let Some(modifier) = modifiers.get(&shape_id) {
+ shape.apply_transform(modifier);
+ }
+ self.update_tile_for(&shape);
+ }
+
+ let children = modified_children_ids(&shape, structure.get(&shape.id));
+ for child_id in children.iter() {
+ nodes.push(*child_id);
+ }
+ }
+ }
+ performance::end_measure!("rebuild_tiles");
+ }
+
+ pub fn rebuild_modifier_tiles(
+ &mut self,
+ tree: &mut HashMap,
+ modifiers: &HashMap,
+ ) {
+ for (uuid, matrix) in modifiers {
+ if let Some(shape) = tree.get(uuid) {
+ let mut shape: Shape = shape.clone();
+ shape.apply_transform(matrix);
+ self.update_tile_for(&shape);
+ }
+ }
+ }
+
+ pub fn get_scale(&self) -> f32 {
+ self.viewbox.zoom() * self.options.dpr()
+ }
}
diff --git a/render-wasm/src/render/cache.rs b/render-wasm/src/render/cache.rs
deleted file mode 100644
index 04c0ec6433..0000000000
--- a/render-wasm/src/render/cache.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-use super::{Image, Viewbox};
-use skia::Contains;
-use skia_safe as skia;
-
-pub(crate) struct CachedSurfaceImage {
- pub image: Image,
- pub viewbox: Viewbox,
- pub invalid: bool,
- pub has_all_shapes: bool,
-}
-
-impl CachedSurfaceImage {
- pub fn invalidate_if_dirty(&mut self, viewbox: &Viewbox) {
- if !self.has_all_shapes && !self.viewbox.area.contains(viewbox.area) {
- self.invalid = true;
- }
- }
-}
diff --git a/render-wasm/src/render/debug.rs b/render-wasm/src/render/debug.rs
index 176f1aec60..230464139d 100644
--- a/render-wasm/src/render/debug.rs
+++ b/render-wasm/src/render/debug.rs
@@ -1,71 +1,216 @@
use crate::shapes::Shape;
-use skia_safe as skia;
+use skia_safe::{self as skia, Rect};
-use super::{RenderState, SurfaceId};
+use super::{tiles, RenderState, SurfaceId};
+
+#[cfg(target_arch = "wasm32")]
+use crate::run_script;
+
+const DEBUG_SCALE: f32 = 0.2;
+
+fn get_debug_rect(rect: Rect) -> Rect {
+ skia::Rect::from_xywh(
+ 100. + rect.x() * DEBUG_SCALE,
+ 100. + rect.y() * DEBUG_SCALE,
+ rect.width() * DEBUG_SCALE,
+ rect.height() * DEBUG_SCALE,
+ )
+}
fn render_debug_view(render_state: &mut RenderState) {
let mut paint = skia::Paint::default();
paint.set_style(skia::PaintStyle::Stroke);
- paint.set_color(skia::Color::from_argb(255, 255, 0, 255));
+ paint.set_color(skia::Color::from_rgb(255, 0, 255));
paint.set_stroke_width(1.);
- let mut scaled_rect = render_state.viewbox.area.clone();
- let x = 100. + scaled_rect.x() * 0.2;
- let y = 100. + scaled_rect.y() * 0.2;
- let width = scaled_rect.width() * 0.2;
- let height = scaled_rect.height() * 0.2;
- scaled_rect.set_xywh(x, y, width, height);
-
+ let rect = get_debug_rect(render_state.viewbox.area.clone());
render_state
.surfaces
.canvas(SurfaceId::Debug)
- .draw_rect(scaled_rect, &paint);
+ .draw_rect(rect, &paint);
}
pub fn render_wasm_label(render_state: &mut RenderState) {
- let font_provider = render_state.fonts().font_provider();
- let typeface = font_provider
- .match_family_style("robotomono-regular", skia::FontStyle::default())
- .unwrap();
-
- let canvas = render_state.surfaces.canvas(SurfaceId::Current);
+ let canvas = render_state.surfaces.canvas(SurfaceId::Debug);
let skia::ISize { width, height } = canvas.base_layer_size();
- let p = skia::Point::new(width as f32 - 100.0, height as f32 - 25.0);
let mut paint = skia::Paint::default();
paint.set_color(skia::Color::from_argb(100, 0, 0, 0));
- let font = skia::Font::new(typeface, 10.0);
- canvas.draw_str("WASM RENDERER", p, &font, &paint);
+ let str = if render_state.options.is_debug_visible() {
+ "WASM RENDERER (DEBUG)"
+ } else {
+ "WASM RENDERER"
+ };
+ let (scalar, _) = render_state.fonts.debug_font().measure_str(str, None);
+ let p = skia::Point::new(width as f32 - 25.0 - scalar, height as f32 - 25.0);
+
+ let debug_font = render_state.fonts.debug_font();
+ canvas.draw_str(str, p, &debug_font, &paint);
}
pub fn render_debug_shape(render_state: &mut RenderState, element: &Shape, intersected: bool) {
let mut paint = skia::Paint::default();
paint.set_style(skia::PaintStyle::Stroke);
paint.set_color(if intersected {
- skia::Color::from_argb(255, 255, 255, 0)
+ skia::Color::from_rgb(255, 255, 0)
} else {
- skia::Color::from_argb(255, 0, 255, 255)
+ skia::Color::from_rgb(0, 255, 255)
});
paint.set_stroke_width(1.);
- let mut scaled_rect = element.selrect();
- let x = 100. + scaled_rect.x() * 0.2;
- let y = 100. + scaled_rect.y() * 0.2;
- let width = scaled_rect.width() * 0.2;
- let height = scaled_rect.height() * 0.2;
- scaled_rect.set_xywh(x, y, width, height);
-
+ let rect = get_debug_rect(element.extrect());
render_state
.surfaces
.canvas(SurfaceId::Debug)
- .draw_rect(scaled_rect, &paint);
+ .draw_rect(rect, &paint);
+}
+
+pub fn render_debug_tiles_for_viewbox(
+ render_state: &mut RenderState,
+ sx: i32,
+ sy: i32,
+ ex: i32,
+ ey: i32,
+) {
+ let canvas = render_state.surfaces.canvas(SurfaceId::Debug);
+ let mut paint = skia::Paint::default();
+ paint.set_style(skia::PaintStyle::Stroke);
+ paint.set_color(skia::Color::from_rgb(255, 0, 127));
+ paint.set_stroke_width(1.);
+ let str_rect = format!("{} {} {} {}", sx, sy, ex, ey);
+
+ let debug_font = render_state.fonts.debug_font();
+ canvas.draw_str(
+ str_rect,
+ skia::Point::new(100.0, 150.0),
+ &debug_font,
+ &paint,
+ );
+}
+
+// Renders the tiles in the viewbox
+pub fn render_debug_viewbox_tiles(render_state: &mut RenderState) {
+ let canvas = render_state.surfaces.canvas(SurfaceId::Debug);
+ let mut paint = skia::Paint::default();
+ paint.set_style(skia::PaintStyle::Stroke);
+ paint.set_color(skia::Color::from_rgb(255, 0, 127));
+ paint.set_stroke_width(1.);
+
+ let tile_size = tiles::get_tile_size(render_state.viewbox);
+ let (sx, sy, ex, ey) = tiles::get_tiles_for_rect(render_state.viewbox.area, tile_size);
+ let str_rect = format!("{} {} {} {}", sx, sy, ex, ey);
+
+ let debug_font = render_state.fonts.debug_font();
+ canvas.draw_str(
+ str_rect,
+ skia::Point::new(100.0, 100.0),
+ &debug_font,
+ &paint,
+ );
+
+ for y in sy..=ey {
+ for x in sx..=ex {
+ let rect = Rect::from_xywh(
+ x as f32 * tile_size,
+ y as f32 * tile_size,
+ tile_size,
+ tile_size,
+ );
+ let debug_rect = get_debug_rect(rect);
+ let p = skia::Point::new(debug_rect.x(), debug_rect.y() - 1.);
+ let str = format!("{}:{}", x, y);
+ let debug_font = render_state.fonts.debug_font();
+ canvas.draw_str(str, p, &debug_font, &paint);
+ canvas.draw_rect(&debug_rect, &paint);
+ }
+ }
+}
+
+pub fn render_debug_tiles(render_state: &mut RenderState) {
+ let canvas = render_state.surfaces.canvas(SurfaceId::Debug);
+ let mut paint = skia::Paint::default();
+ paint.set_style(skia::PaintStyle::Stroke);
+ paint.set_color(skia::Color::from_rgb(127, 0, 255));
+ paint.set_stroke_width(1.);
+
+ let tile_size = tiles::get_tile_size(render_state.viewbox);
+ let (sx, sy, ex, ey) = tiles::get_tiles_for_rect(render_state.viewbox.area, tile_size);
+ for y in sy..=ey {
+ for x in sx..=ex {
+ let tile = (x, y);
+ let shape_count = render_state.tiles.get_shapes_at(tile).iter().len();
+ if shape_count == 0 {
+ continue;
+ }
+
+ let rect = Rect::from_xywh(
+ x as f32 * tile_size,
+ y as f32 * tile_size,
+ tile_size,
+ tile_size,
+ );
+ let debug_rect = get_debug_rect(rect);
+ let p = skia::Point::new(debug_rect.x(), debug_rect.y() - 1.);
+ let str = format!("{}:{} {}", x, y, shape_count);
+
+ let debug_font = render_state.fonts.debug_font();
+ canvas.draw_str(str, p, &debug_font, &paint);
+ canvas.draw_rect(&debug_rect, &paint);
+ }
+ }
}
pub fn render(render_state: &mut RenderState) {
render_debug_view(render_state);
+ render_debug_viewbox_tiles(render_state);
+ render_debug_tiles(render_state);
render_state.surfaces.draw_into(
SurfaceId::Debug,
- SurfaceId::Current,
+ SurfaceId::Target,
Some(&skia::Paint::default()),
);
}
+
+#[cfg(target_arch = "wasm32")]
+#[allow(dead_code)]
+pub fn console_debug_surface(render_state: &mut RenderState, id: SurfaceId) {
+ let base64_image = render_state.surfaces.base64_snapshot(id);
+
+ run_script!(format!("console.log('%c ', 'font-size: 1px; background: url(data:image/png;base64,{base64_image}) no-repeat; padding: 100px; background-size: contain;')"))
+}
+
+#[allow(dead_code)]
+#[cfg(target_arch = "wasm32")]
+pub fn console_debug_surface_rect(render_state: &mut RenderState, id: SurfaceId, rect: skia::Rect) {
+ let int_rect = skia::IRect::from_ltrb(
+ rect.left as i32,
+ rect.top as i32,
+ rect.right as i32,
+ rect.bottom as i32,
+ );
+
+ let base64_image = render_state.surfaces.base64_snapshot_rect(id, int_rect);
+
+ if let Some(base64_image) = base64_image {
+ run_script!(format!("console.log('%c ', 'font-size: 1px; background: url(data:image/png;base64,{base64_image}) no-repeat; padding: 100px; background-size: contain;')"))
+ }
+}
+
+pub fn render_workspace_current_tile(
+ render_state: &mut RenderState,
+ prefix: String,
+ tile: tiles::Tile,
+ rect: skia::Rect,
+) {
+ let canvas = render_state.surfaces.canvas(SurfaceId::Target);
+ let mut p = skia::Paint::default();
+ p.set_stroke_width(1.);
+ p.set_style(skia::PaintStyle::Stroke);
+ canvas.draw_rect(&rect, &p);
+
+ let point = skia::Point::new(rect.x() + 10., rect.y() + 20.);
+ p.set_stroke_width(1.);
+ let str = format!("{prefix} {}:{}", tile.0, tile.1);
+ let debug_font = render_state.fonts.debug_font();
+ canvas.draw_str(str, point, &debug_font, &p);
+}
diff --git a/render-wasm/src/render/fills.rs b/render-wasm/src/render/fills.rs
index 1efdc8fd82..3bdf61d334 100644
--- a/render-wasm/src/render/fills.rs
+++ b/render-wasm/src/render/fills.rs
@@ -9,6 +9,7 @@ fn draw_image_fill(
shape: &Shape,
image_fill: &ImageFill,
paint: &Paint,
+ antialias: bool,
) {
let image = render_state.images.get(&image_fill.id());
if image.is_none() {
@@ -62,15 +63,15 @@ fn draw_image_fill(
..
}) => {
let rrect: RRect = RRect::new_rect_radii(container, &corners);
- canvas.clip_rrect(rrect, skia::ClipOp::Intersect, true);
+ canvas.clip_rrect(rrect, skia::ClipOp::Intersect, antialias);
}
Type::Rect(_) | Type::Frame(_) => {
- canvas.clip_rect(container, skia::ClipOp::Intersect, true);
+ canvas.clip_rect(container, skia::ClipOp::Intersect, antialias);
}
Type::Circle => {
let mut oval_path = skia::Path::new();
oval_path.add_oval(container, None);
- canvas.clip_path(&oval_path, skia::ClipOp::Intersect, true);
+ canvas.clip_path(&oval_path, skia::ClipOp::Intersect, antialias);
}
shape_type @ (Type::Path(_) | Type::Bool(_)) => {
if let Some(path) = shape_type.path() {
@@ -78,13 +79,13 @@ fn draw_image_fill(
canvas.clip_path(
&path.to_skia_path().transform(&path_transform),
skia::ClipOp::Intersect,
- true,
+ antialias,
);
}
}
}
Type::SVGRaw(_) => {
- canvas.clip_rect(container, skia::ClipOp::Intersect, true);
+ canvas.clip_rect(container, skia::ClipOp::Intersect, antialias);
}
Type::Group(_) => unreachable!("A group should not have fills"),
Type::Text(_) => unimplemented!("TODO"),
@@ -108,12 +109,12 @@ 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) {
- let paint = &fill.to_paint(&shape.selrect);
+pub fn render(render_state: &mut RenderState, shape: &Shape, fill: &Fill, antialias: bool) {
+ let paint = &fill.to_paint(&shape.selrect, antialias);
match (fill, &shape.shape_type) {
(Fill::Image(image_fill), _) => {
- draw_image_fill(render_state, shape, image_fill, paint);
+ draw_image_fill(render_state, shape, image_fill, paint, antialias);
}
(_, Type::Rect(_) | Type::Frame(_)) => {
render_state
diff --git a/render-wasm/src/render/fonts.rs b/render-wasm/src/render/fonts.rs
index 0dd881181d..dd8d24f2b3 100644
--- a/render-wasm/src/render/fonts.rs
+++ b/render-wasm/src/render/fonts.rs
@@ -1,41 +1,55 @@
-use skia_safe::{self as skia, textlayout, FontMgr};
+use skia_safe::{self as skia, textlayout, Font, FontMgr};
-use crate::shapes::FontFamily;
+use crate::shapes::{FontFamily, FontStyle};
+use crate::uuid::Uuid;
-const DEFAULT_FONT_BYTES: &[u8] = include_bytes!("../fonts/RobotoMono-Regular.ttf");
const EMOJI_FONT_BYTES: &[u8] = include_bytes!("../fonts/NotoColorEmoji-Regular.ttf");
-pub static DEFAULT_FONT: &'static str = "robotomono-regular";
pub static DEFAULT_EMOJI_FONT: &'static str = "noto-color-emoji";
+const DEFAULT_FONT_BYTES: &[u8] = include_bytes!("../fonts/sourcesanspro-regular.ttf");
+
+pub fn default_font() -> String {
+ let family = FontFamily::new(default_font_uuid(), 400, FontStyle::Normal);
+ format!("{}", family)
+}
+
+fn default_font_uuid() -> Uuid {
+ Uuid::nil()
+}
+
pub struct FontStore {
- // TODO: we should probably have just one of those
+ font_mgr: FontMgr,
font_provider: textlayout::TypefaceFontProvider,
font_collection: textlayout::FontCollection,
+ debug_font: Font,
}
impl FontStore {
pub fn new() -> Self {
- let mut font_provider = skia::textlayout::TypefaceFontProvider::new();
+ let font_mgr = FontMgr::new();
- let default_font = skia::FontMgr::default()
- .new_from_data(DEFAULT_FONT_BYTES, None)
- .expect("Failed to load font");
+ let mut font_provider = load_default_provider(&font_mgr);
- font_provider.register_typeface(default_font, DEFAULT_FONT);
-
- let emoji_font = skia::FontMgr::default()
+ // TODO: Load emoji font lazily
+ let emoji_font = font_mgr
.new_from_data(EMOJI_FONT_BYTES, None)
.expect("Failed to load font");
-
font_provider.register_typeface(emoji_font, DEFAULT_EMOJI_FONT);
let mut font_collection = skia::textlayout::FontCollection::new();
- font_collection.set_default_font_manager(FontMgr::default(), None);
- font_collection.set_dynamic_font_manager(FontMgr::from(font_provider.clone()));
+ font_collection.set_default_font_manager(FontMgr::from(font_provider.clone()), None);
+
+ let debug_typeface = font_provider
+ .match_family_style(default_font().as_str(), skia::FontStyle::default())
+ .unwrap();
+
+ let debug_font = skia::Font::new(debug_typeface, 10.0);
Self {
+ font_mgr,
font_provider,
font_collection,
+ debug_font,
}
}
@@ -47,20 +61,25 @@ impl FontStore {
&self.font_collection
}
+ pub fn debug_font(&self) -> &Font {
+ &self.debug_font
+ }
+
pub fn add(&mut self, family: FontFamily, font_data: &[u8]) -> Result<(), String> {
if self.has_family(&family) {
return Ok(());
}
let alias = format!("{}", family);
- let typeface = skia::FontMgr::default()
+ let typeface = self
+ .font_mgr
.new_from_data(font_data, None)
.ok_or("Failed to create typeface")?;
self.font_provider
.register_typeface(typeface, alias.as_str());
- self.refresh_font_collection();
+ self.font_collection.clear_caches();
Ok(())
}
@@ -69,12 +88,16 @@ impl FontStore {
let serialized = format!("{}", family);
self.font_provider.family_names().any(|x| x == serialized)
}
-
- fn refresh_font_collection(&mut self) {
- self.font_collection = skia::textlayout::FontCollection::new();
- self.font_collection
- .set_default_font_manager(FontMgr::default(), None);
- self.font_collection
- .set_dynamic_font_manager(FontMgr::from(self.font_provider.clone()));
- }
+}
+
+fn load_default_provider(font_mgr: &FontMgr) -> skia::textlayout::TypefaceFontProvider {
+ let mut font_provider = skia::textlayout::TypefaceFontProvider::new();
+
+ let family = FontFamily::new(default_font_uuid(), 400, FontStyle::Normal);
+ let font = font_mgr
+ .new_from_data(DEFAULT_FONT_BYTES, None)
+ .expect("Failed to load font");
+ font_provider.register_typeface(font, family.alias().as_str());
+
+ font_provider
}
diff --git a/render-wasm/src/render/images.rs b/render-wasm/src/render/images.rs
index a1d9f5fe76..138fc4a7f8 100644
--- a/render-wasm/src/render/images.rs
+++ b/render-wasm/src/render/images.rs
@@ -1,6 +1,9 @@
+use crate::math::Rect as MathRect;
+use crate::uuid::Uuid;
+
use skia_safe as skia;
+use skia_safe::gpu::{surfaces, Budgeted, DirectContext};
use std::collections::HashMap;
-use uuid::Uuid;
pub type Image = skia::Image;
@@ -15,11 +18,41 @@ impl ImageStore {
}
}
- pub fn add(&mut self, id: Uuid, image_data: &[u8]) -> Result<(), String> {
- let image_data = skia::Data::new_copy(image_data);
+ pub fn add(
+ &mut self,
+ id: Uuid,
+ image_data: &[u8],
+ context: &mut DirectContext,
+ ) -> Result<(), String> {
+ let image_data = unsafe { skia::Data::new_bytes(image_data) };
let image = Image::from_encoded(image_data).ok_or("Error decoding image data")?;
- self.images.insert(id, image);
+ let width = image.width();
+ let height = image.height();
+
+ let image_info = skia::ImageInfo::new_n32_premul((width, height), None);
+ let mut surface = surfaces::render_target(
+ context,
+ Budgeted::Yes,
+ &image_info,
+ None,
+ None,
+ None,
+ None,
+ false,
+ )
+ .ok_or("Can't create GPU surface")?;
+
+ let dest_rect = MathRect::from_xywh(0.0, 0.0, width as f32, height as f32);
+
+ surface
+ .canvas()
+ .draw_image_rect(&image, None, dest_rect, &skia::Paint::default());
+
+ let gpu_image = surface.image_snapshot();
+
+ // This way we store the image as a texture
+ self.images.insert(id, gpu_image);
Ok(())
}
diff --git a/render-wasm/src/render/options.rs b/render-wasm/src/render/options.rs
index 5e27f674b8..fc80bf2014 100644
--- a/render-wasm/src/render/options.rs
+++ b/render-wasm/src/render/options.rs
@@ -1,15 +1,15 @@
-use crate::debug;
+use crate::options;
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct RenderOptions {
- pub debug_flags: u32,
+ pub flags: u32,
pub dpr: Option,
}
impl Default for RenderOptions {
fn default() -> Self {
Self {
- debug_flags: 0x00,
+ flags: 0x00,
dpr: None,
}
}
@@ -17,7 +17,11 @@ impl Default for RenderOptions {
impl RenderOptions {
pub fn is_debug_visible(&self) -> bool {
- self.debug_flags & debug::DEBUG_VISIBLE == debug::DEBUG_VISIBLE
+ self.flags & options::DEBUG_VISIBLE == options::DEBUG_VISIBLE
+ }
+
+ pub fn is_profile_rebuild_tiles(&self) -> bool {
+ self.flags & options::PROFILE_REBUILD_TILES == options::PROFILE_REBUILD_TILES
}
pub fn dpr(&self) -> f32 {
diff --git a/render-wasm/src/render/shadows.rs b/render-wasm/src/render/shadows.rs
index 17fca69d2d..d7a9e637e6 100644
--- a/render-wasm/src/render/shadows.rs
+++ b/render-wasm/src/render/shadows.rs
@@ -1,87 +1,164 @@
-use skia_safe::{self as skia};
-
use super::{RenderState, SurfaceId};
-use crate::shapes::{Shadow, Shape, Type};
+use crate::render::strokes;
+use crate::render::text::{self};
+use crate::shapes::{Shadow, Shape, Stroke, Type};
+use skia_safe::{textlayout::Paragraph, Paint};
-pub fn render_drop_shadows(render_state: &mut RenderState, shape: &Shape) {
- if shape.fills().len() > 0 {
+// 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);
- }
- } else {
- let scale = render_state.viewbox.zoom * render_state.options.dpr();
- for shadow in shape.drop_shadows().rev().filter(|s| !s.hidden()) {
- render_stroke_drop_shadow(render_state, &shadow, scale);
+ render_fill_drop_shadow(render_state, &shape, &shadow, antialias);
}
}
}
-fn render_fill_drop_shadow(render_state: &mut RenderState, shape: &Shape, shadow: &Shadow) {
- let paint = &shadow.get_drop_shadow_paint();
+fn render_fill_drop_shadow(
+ render_state: &mut RenderState,
+ shape: &Shape,
+ shadow: &Shadow,
+ antialias: bool,
+) {
+ let paint = &shadow.get_drop_shadow_paint(antialias);
+ 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);
+ }
+ }
+}
+
+fn render_fill_inner_shadow(
+ render_state: &mut RenderState,
+ shape: &Shape,
+ shadow: &Shadow,
+ antialias: bool,
+) {
+ let paint = &shadow.get_inner_shadow_paint(antialias);
+ 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,
+ Some(SurfaceId::Strokes), // FIXME
+ filter.as_ref(),
+ antialias,
+ )
+ }
+ }
+}
+
+pub fn render_stroke_inner_shadows(
+ render_state: &mut RenderState,
+ shape: &Shape,
+ stroke: &Stroke,
+ antialias: bool,
+) {
+ if !shape.has_fills() {
+ for shadow in shape.inner_shadows().rev().filter(|s| !s.hidden()) {
+ let filter = shadow.get_inner_shadow_filter();
+ strokes::render(
+ render_state,
+ &shape,
+ stroke,
+ Some(SurfaceId::Strokes), // FIXME
+ filter.as_ref(),
+ antialias,
+ )
+ }
+ }
+}
+
+pub fn render_text_drop_shadows(
+ render_state: &mut RenderState,
+ shape: &Shape,
+ paragraphs: &[Paragraph],
+ antialias: bool,
+) {
+ for shadow in shape.drop_shadows().rev().filter(|s| !s.hidden()) {
+ render_text_drop_shadow(render_state, &shape, &shadow, ¶graphs, antialias);
+ }
+}
+
+pub fn render_text_drop_shadow(
+ render_state: &mut RenderState,
+ shape: &Shape,
+ shadow: &Shadow,
+ paragraphs: &[Paragraph],
+ antialias: bool,
+) {
+ let paint = &shadow.get_drop_shadow_paint(antialias);
+
+ text::render(
+ render_state,
+ shape,
+ ¶graphs,
+ Some(SurfaceId::DropShadows),
+ Some(paint),
+ );
+}
+
+pub fn render_text_inner_shadows(
+ render_state: &mut RenderState,
+ shape: &Shape,
+ paragraphs: &[Paragraph],
+ antialias: bool,
+) {
+ for shadow in shape.inner_shadows().rev().filter(|s| !s.hidden()) {
+ render_text_inner_shadow(render_state, &shape, &shadow, ¶graphs, antialias);
+ }
+}
+
+pub fn render_text_inner_shadow(
+ render_state: &mut RenderState,
+ shape: &Shape,
+ shadow: &Shadow,
+ paragraphs: &[Paragraph],
+ antialias: bool,
+) {
+ let paint = &shadow.get_inner_shadow_paint(antialias);
+
+ text::render(
+ render_state,
+ shape,
+ ¶graphs,
+ Some(SurfaceId::InnerShadows),
+ Some(paint),
+ );
+}
+
+fn render_shadow_paint(
+ render_state: &mut RenderState,
+ shape: &Shape,
+ paint: &Paint,
+ surface_id: SurfaceId,
+) {
match &shape.shape_type {
Type::Rect(_) | Type::Frame(_) => {
- render_state
- .surfaces
- .draw_rect_to(SurfaceId::DropShadows, shape, paint);
+ render_state.surfaces.draw_rect_to(surface_id, shape, paint);
}
Type::Circle => {
render_state
.surfaces
- .draw_circle_to(SurfaceId::DropShadows, shape, paint);
+ .draw_circle_to(surface_id, shape, paint);
}
Type::Path(_) | Type::Bool(_) => {
- render_state
- .surfaces
- .draw_path_to(SurfaceId::DropShadows, shape, paint);
+ render_state.surfaces.draw_path_to(surface_id, shape, paint);
}
_ => {}
}
}
-
-fn render_stroke_drop_shadow(render_state: &mut RenderState, shadow: &Shadow, scale: f32) {
- let shadow_paint = &shadow.to_paint(scale);
-
- render_state
- .surfaces
- .draw_into(SurfaceId::Strokes, SurfaceId::Shadow, Some(shadow_paint));
-
- render_state.surfaces.draw_into(
- SurfaceId::Shadow,
- SurfaceId::Current,
- Some(&skia::Paint::default()),
- );
-
- render_state
- .surfaces
- .canvas(SurfaceId::Shadow)
- .clear(skia::Color::TRANSPARENT);
-}
-
-pub fn render_inner_shadow(
- render_state: &mut RenderState,
- shadow: &Shadow,
- scale: f32,
- render_over_fills: bool,
-) {
- let shadow_paint = shadow.to_paint(scale);
-
- if render_over_fills {
- render_state
- .surfaces
- .draw_into(SurfaceId::Fills, SurfaceId::Shadow, Some(&shadow_paint));
- } else {
- render_state
- .surfaces
- .draw_into(SurfaceId::Strokes, SurfaceId::Shadow, Some(&shadow_paint));
- }
-
- render_state
- .surfaces
- .draw_into(SurfaceId::Shadow, SurfaceId::Overlay, None);
-
- render_state
- .surfaces
- .canvas(SurfaceId::Shadow)
- .clear(skia::Color::TRANSPARENT);
-}
diff --git a/render-wasm/src/render/strokes.rs b/render-wasm/src/render/strokes.rs
index 48665ccddd..b906685ecb 100644
--- a/render-wasm/src/render/strokes.rs
+++ b/render-wasm/src/render/strokes.rs
@@ -3,7 +3,7 @@ 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, RRect};
+use skia_safe::{self as skia, ImageFilter, RRect};
use super::{RenderState, SurfaceId};
@@ -15,13 +15,19 @@ fn draw_stroke_on_rect(
corners: &Option,
svg_attrs: &HashMap,
scale: f32,
+ shadow: Option<&ImageFilter>,
+ antialias: bool,
) {
// Draw the different kind of strokes for a rect is straightforward, we just need apply a stroke to:
// - The same rect if it's a center stroke
// - A bigger rect if it's an outer stroke
// - A smaller rect if it's an outer stroke
let stroke_rect = stroke.outer_rect(rect);
- let paint = stroke.to_paint(selrect, svg_attrs, scale);
+ let mut paint = stroke.to_paint(selrect, svg_attrs, scale, antialias);
+
+ if let Some(filter) = shadow {
+ paint.set_image_filter(filter.clone());
+ }
match corners {
Some(radii) => {
@@ -42,16 +48,24 @@ fn draw_stroke_on_circle(
selrect: &Rect,
svg_attrs: &HashMap,
scale: f32,
+ shadow: Option<&ImageFilter>,
+ antialias: bool,
) {
// Draw the different kind of strokes for an oval is straightforward, we just need apply a stroke to:
// - The same oval if it's a center stroke
// - A bigger oval if it's an outer stroke
// - A smaller oval if it's an outer stroke
let stroke_rect = stroke.outer_rect(rect);
- canvas.draw_oval(&stroke_rect, &stroke.to_paint(selrect, svg_attrs, scale));
+ let mut paint = stroke.to_paint(selrect, svg_attrs, scale, antialias);
+
+ if let Some(filter) = shadow {
+ paint.set_image_filter(filter.clone());
+ }
+
+ canvas.draw_oval(&stroke_rect, &paint);
}
-fn draw_stroke_on_path(
+pub fn draw_stroke_on_path(
canvas: &skia::Canvas,
stroke: &Stroke,
path: &Path,
@@ -59,36 +73,45 @@ fn draw_stroke_on_path(
path_transform: Option<&Matrix>,
svg_attrs: &HashMap,
scale: f32,
+ shadow: Option<&ImageFilter>,
+ antialias: bool,
) {
let mut skia_path = path.to_skia_path();
skia_path.transform(path_transform.unwrap());
let is_open = path.is_open();
- let paint_stroke = stroke.to_stroked_paint(is_open, selrect, svg_attrs, scale);
+ let mut paint: skia_safe::Handle<_> =
+ stroke.to_stroked_paint(path.is_open(), selrect, svg_attrs, scale, antialias);
+
+ if let Some(filter) = shadow {
+ paint.set_image_filter(filter.clone());
+ }
+
// Draw the different kind of strokes for a path requires different strategies:
match stroke.render_kind(is_open) {
// For inner stroke we draw a center stroke (with double width) and clip to the original path (that way the extra outer stroke is removed)
StrokeKind::InnerStroke => {
- canvas.clip_path(&skia_path, skia::ClipOp::Intersect, true);
- canvas.draw_path(&skia_path, &paint_stroke);
+ canvas.save(); // As we are using clear for surfaces we use save and restore here to still be able to clean the full surface
+ canvas.clip_path(&skia_path, skia::ClipOp::Intersect, antialias);
+ canvas.draw_path(&skia_path, &paint);
+ canvas.restore();
}
// For center stroke we don't need to do anything extra
StrokeKind::CenterStroke => {
- canvas.draw_path(&skia_path, &paint_stroke);
+ canvas.draw_path(&skia_path, &paint);
}
// For outer stroke we draw a center stroke (with double width) and use another path with blend mode clear to remove the inner stroke added
StrokeKind::OuterStroke => {
- let mut paint = skia::Paint::default();
- paint.set_blend_mode(skia::BlendMode::SrcOver);
- paint.set_anti_alias(true);
- let layer_rec = skia::canvas::SaveLayerRec::default().paint(&paint);
+ let mut outer_paint = skia::Paint::default();
+ outer_paint.set_blend_mode(skia::BlendMode::SrcOver);
+ outer_paint.set_anti_alias(antialias);
+ let layer_rec = skia::canvas::SaveLayerRec::default().paint(&outer_paint);
canvas.save_layer(&layer_rec);
-
- canvas.draw_path(&skia_path, &paint_stroke);
+ canvas.draw_path(&skia_path, &paint);
let mut clear_paint = skia::Paint::default();
clear_paint.set_blend_mode(skia::BlendMode::Clear);
- clear_paint.set_anti_alias(true);
+ clear_paint.set_anti_alias(antialias);
canvas.draw_path(&skia_path, &clear_paint);
canvas.restore();
@@ -103,6 +126,7 @@ fn draw_stroke_on_path(
is_open,
svg_attrs,
scale,
+ antialias,
);
}
@@ -152,7 +176,8 @@ fn handle_stroke_caps(
canvas: &skia::Canvas,
is_open: bool,
svg_attrs: &HashMap,
- dpr_scale: f32,
+ scale: f32,
+ antialias: bool,
) {
let points_count = path.count_points();
let mut points = vec![Point::default(); points_count];
@@ -163,7 +188,8 @@ fn handle_stroke_caps(
let first_point = points.first().unwrap();
let last_point = points.last().unwrap();
- let mut paint_stroke = stroke.to_stroked_paint(is_open, selrect, svg_attrs, dpr_scale);
+ let mut paint_stroke =
+ stroke.to_stroked_paint(is_open, selrect, svg_attrs, scale, antialias);
handle_stroke_cap(
canvas,
@@ -323,6 +349,7 @@ fn draw_image_stroke_in_container(
shape: &Shape,
stroke: &Stroke,
image_fill: &ImageFill,
+ antialias: bool,
) {
let image = render_state.images.get(&image_fill.id());
if image.is_none() {
@@ -330,16 +357,16 @@ fn draw_image_stroke_in_container(
}
let size = image_fill.size();
- let canvas = render_state.surfaces.canvas(SurfaceId::Fills);
+ let scale = render_state.get_scale();
+ let canvas = render_state.surfaces.canvas(SurfaceId::Strokes);
let container = &shape.selrect;
let path_transform = shape.to_path_transform();
let svg_attrs = &shape.svg_attrs;
- let dpr_scale = render_state.viewbox.zoom * render_state.options.dpr();
// Save canvas and layer state
let mut pb = skia::Paint::default();
pb.set_blend_mode(skia::BlendMode::SrcOver);
- pb.set_anti_alias(true);
+ pb.set_anti_alias(antialias);
let layer_rec = skia::canvas::SaveLayerRec::default().paint(&pb);
canvas.save_layer(&layer_rec);
@@ -356,12 +383,21 @@ fn draw_image_stroke_in_container(
&outer_rect,
&shape_type.corners(),
svg_attrs,
- dpr_scale,
+ scale,
+ None,
+ antialias,
);
}
- Type::Circle => {
- draw_stroke_on_circle(canvas, stroke, container, &outer_rect, svg_attrs, dpr_scale)
- }
+ Type::Circle => draw_stroke_on_circle(
+ canvas,
+ stroke,
+ container,
+ &outer_rect,
+ svg_attrs,
+ scale,
+ None,
+ antialias,
+ ),
shape_type @ (Type::Path(_) | Type::Bool(_)) => {
if let Some(p) = shape_type.path() {
@@ -371,20 +407,21 @@ fn draw_image_stroke_in_container(
let stroke_kind = stroke.render_kind(p.is_open());
match stroke_kind {
StrokeKind::InnerStroke => {
- canvas.clip_path(&path, skia::ClipOp::Intersect, true);
+ canvas.clip_path(&path, skia::ClipOp::Intersect, antialias);
}
StrokeKind::CenterStroke => {}
StrokeKind::OuterStroke => {
- canvas.clip_path(&path, skia::ClipOp::Difference, true);
+ canvas.clip_path(&path, skia::ClipOp::Difference, antialias);
}
}
let is_open = p.is_open();
- let mut paint = stroke.to_stroked_paint(is_open, &outer_rect, svg_attrs, dpr_scale);
+ let mut paint =
+ stroke.to_stroked_paint(is_open, &outer_rect, svg_attrs, scale, antialias);
canvas.draw_path(&path, &paint);
- canvas.restore();
if stroke.render_kind(is_open) == StrokeKind::OuterStroke {
- // Small extra inner stroke to overlap with the fill and avoid unnecesary artifacts
- paint.set_stroke_width(1. / dpr_scale);
+ // Small extra inner stroke to overlap with the fill
+ // and avoid unnecesary artifacts.
+ paint.set_stroke_width(1. / scale);
canvas.draw_path(&path, &paint);
}
handle_stroke_caps(
@@ -394,23 +431,33 @@ fn draw_image_stroke_in_container(
canvas,
is_open,
svg_attrs,
- dpr_scale,
+ scale,
+ antialias,
);
+ canvas.restore();
}
}
_ => unreachable!("This shape should not have strokes"),
}
- // Draw the image. We are using now the SrcIn blend mode, so the rendered piece of image will the area of the stroke over the image.
+ // Draw the image. We are using now the SrcIn blend mode,
+ // so the rendered piece of image will the area of the
+ // stroke over the image.
let mut image_paint = skia::Paint::default();
image_paint.set_blend_mode(skia::BlendMode::SrcIn);
- image_paint.set_anti_alias(true);
+ image_paint.set_anti_alias(antialias);
// Compute scaled rect and clip to it
let dest_rect = calculate_scaled_rect(size, container, stroke.delta());
- canvas.clip_rect(dest_rect, skia::ClipOp::Intersect, true);
- canvas.draw_image_rect(image.unwrap(), None, dest_rect, &image_paint);
+ canvas.clip_rect(dest_rect, skia::ClipOp::Intersect, antialias);
+ canvas.draw_image_rect_with_sampling_options(
+ image.unwrap(),
+ None,
+ dest_rect,
+ render_state.sampling_options,
+ &image_paint,
+ );
// Clear outer stroke for paths if necessary. When adding an outer stroke we need to empty the stroke added too in the inner area.
if let Type::Path(p) = &shape.shape_type {
@@ -419,7 +466,7 @@ fn draw_image_stroke_in_container(
path.transform(&path_transform.unwrap());
let mut clear_paint = skia::Paint::default();
clear_paint.set_blend_mode(skia::BlendMode::Clear);
- clear_paint.set_anti_alias(true);
+ clear_paint.set_anti_alias(antialias);
canvas.draw_path(&path, &clear_paint);
}
}
@@ -431,15 +478,26 @@ fn draw_image_stroke_in_container(
/**
* This SHOULD be the only public function in this module.
*/
-pub fn render(render_state: &mut RenderState, shape: &Shape, stroke: &Stroke) {
- let canvas = render_state.surfaces.canvas(SurfaceId::Strokes);
- let dpr_scale = render_state.viewbox.zoom * render_state.options.dpr();
+pub fn render(
+ render_state: &mut RenderState,
+ shape: &Shape,
+ stroke: &Stroke,
+ surface_id: Option,
+ shadow: Option<&ImageFilter>,
+ antialias: bool,
+) {
+ let scale = render_state.get_scale();
+ let canvas = render_state
+ .surfaces
+ .canvas(surface_id.unwrap_or(SurfaceId::Strokes));
let selrect = shape.selrect;
let path_transform = shape.to_path_transform();
let svg_attrs = &shape.svg_attrs;
- if let Fill::Image(image_fill) = &stroke.fill {
- draw_image_stroke_in_container(render_state, shape, stroke, image_fill);
+ if !shadow.is_some() && matches!(stroke.fill, Fill::Image(_)) {
+ if let Fill::Image(image_fill) = &stroke.fill {
+ draw_image_stroke_in_container(render_state, shape, stroke, image_fill, antialias);
+ }
} else {
match &shape.shape_type {
shape_type @ (Type::Rect(_) | Type::Frame(_)) => {
@@ -450,15 +508,16 @@ pub fn render(render_state: &mut RenderState, shape: &Shape, stroke: &Stroke) {
&selrect,
&shape_type.corners(),
svg_attrs,
- dpr_scale,
+ scale,
+ shadow,
+ antialias,
);
}
- Type::Circle => {
- draw_stroke_on_circle(canvas, stroke, &selrect, &selrect, &svg_attrs, dpr_scale)
- }
+ Type::Circle => draw_stroke_on_circle(
+ canvas, stroke, &selrect, &selrect, svg_attrs, scale, shadow, antialias,
+ ),
shape_type @ (Type::Path(_) | Type::Bool(_)) => {
if let Some(path) = shape_type.path() {
- let svg_attrs = &shape.svg_attrs;
draw_stroke_on_path(
canvas,
stroke,
@@ -466,7 +525,9 @@ pub fn render(render_state: &mut RenderState, shape: &Shape, stroke: &Stroke) {
&selrect,
path_transform.as_ref(),
svg_attrs,
- dpr_scale,
+ scale,
+ shadow,
+ antialias,
);
}
}
diff --git a/render-wasm/src/render/surfaces.rs b/render-wasm/src/render/surfaces.rs
index 8ff0db278a..a1c2cb02ca 100644
--- a/render-wasm/src/render/surfaces.rs
+++ b/render-wasm/src/render/surfaces.rs
@@ -1,6 +1,17 @@
-use super::gpu_state::GpuState;
use crate::shapes::Shape;
-use skia_safe::{self as skia, Paint, RRect};
+use crate::view::Viewbox;
+use skia_safe::{self as skia, IRect, Paint, RRect};
+
+use super::{gpu_state::GpuState, tiles::Tile};
+
+use base64::{engine::general_purpose, Engine as _};
+use std::collections::HashMap;
+
+const TEXTURES_CACHE_CAPACITY: usize = 512;
+const TEXTURES_BATCH_DELETE: usize = 32;
+// This is the amount of extra space we're going to give to all the surfaces to render shapes.
+// If it's too big it could affect performance.
+const TILE_SIZE_MULTIPLIER: i32 = 2;
#[derive(Debug, PartialEq, Clone, Copy)]
pub enum SurfaceId {
@@ -8,9 +19,8 @@ pub enum SurfaceId {
Current,
Fills,
Strokes,
- Shadow,
DropShadows,
- Overlay,
+ InnerShadows,
Debug,
}
@@ -24,42 +34,51 @@ pub struct Surfaces {
// keeps the current shape's strokes
shape_strokes: skia::Surface,
// used for rendering shadows
- shadow: skia::Surface,
- // used for new shadow rendering
drop_shadows: skia::Surface,
- // for drawing the things that are over shadows.
- overlay: skia::Surface,
+ // used fo rendering over shadows.
+ inner_shadows: skia::Surface,
// for drawing debug info.
debug: skia::Surface,
-
+ // for drawing tiles.
+ tiles: TileTextureCache,
sampling_options: skia::SamplingOptions,
+ margins: skia::ISize,
}
+#[allow(dead_code)]
impl Surfaces {
pub fn new(
gpu_state: &mut GpuState,
(width, height): (i32, i32),
sampling_options: skia::SamplingOptions,
+ tile_dims: skia::ISize,
) -> Self {
+ let extra_tile_dims = skia::ISize::new(
+ tile_dims.width * TILE_SIZE_MULTIPLIER,
+ tile_dims.height * TILE_SIZE_MULTIPLIER,
+ );
+ let margins = skia::ISize::new(extra_tile_dims.width / 4, extra_tile_dims.height / 4);
+
let mut target = gpu_state.create_target_surface(width, height);
- let current = target.new_surface_with_dimensions((width, height)).unwrap();
- let shadow = target.new_surface_with_dimensions((width, height)).unwrap();
- let drop_shadows = target.new_surface_with_dimensions((width, height)).unwrap();
- let overlay = target.new_surface_with_dimensions((width, height)).unwrap();
- let shape_fills = target.new_surface_with_dimensions((width, height)).unwrap();
- let shape_strokes = target.new_surface_with_dimensions((width, height)).unwrap();
+ let current = target.new_surface_with_dimensions(extra_tile_dims).unwrap();
+ let drop_shadows = target.new_surface_with_dimensions(extra_tile_dims).unwrap();
+ let inner_shadows = target.new_surface_with_dimensions(extra_tile_dims).unwrap();
+ let shape_fills = target.new_surface_with_dimensions(extra_tile_dims).unwrap();
+ let shape_strokes = target.new_surface_with_dimensions(extra_tile_dims).unwrap();
let debug = target.new_surface_with_dimensions((width, height)).unwrap();
+ let tiles = TileTextureCache::new();
Surfaces {
target,
current,
- shadow,
drop_shadows,
- overlay,
+ inner_shadows,
shape_fills,
shape_strokes,
debug,
+ tiles,
sampling_options,
+ margins,
}
}
@@ -67,8 +86,26 @@ impl Surfaces {
self.reset_from_target(gpu_state.create_target_surface(new_width, new_height));
}
- pub fn snapshot(&mut self, id: SurfaceId) -> skia::Image {
- self.get_mut(id).image_snapshot()
+ pub fn base64_snapshot(&mut self, id: SurfaceId) -> String {
+ let surface = self.get_mut(id);
+ let image = surface.image_snapshot();
+ let mut context = surface.direct_context();
+ let encoded_image = image
+ .encode(context.as_mut(), skia::EncodedImageFormat::PNG, None)
+ .unwrap();
+ general_purpose::STANDARD.encode(&encoded_image.as_bytes())
+ }
+
+ pub fn base64_snapshot_rect(&mut self, id: SurfaceId, irect: skia::IRect) -> Option {
+ let surface = self.get_mut(id);
+ if let Some(image) = surface.image_snapshot_with_bounds(irect) {
+ let mut context = surface.direct_context();
+ let encoded_image = image
+ .encode(context.as_mut(), skia::EncodedImageFormat::PNG, None)
+ .unwrap();
+ return Some(general_purpose::STANDARD.encode(&encoded_image.as_bytes()));
+ }
+ None
}
pub fn canvas(&mut self, id: SurfaceId) -> &skia::Canvas {
@@ -95,13 +132,32 @@ impl Surfaces {
}
}
+ pub fn update_render_context(&mut self, render_area: skia::Rect, viewbox: Viewbox) {
+ let translation = (
+ -render_area.left() + self.margins.width as f32 / viewbox.zoom,
+ -render_area.top() + self.margins.height as f32 / viewbox.zoom,
+ );
+ self.apply_mut(
+ &[
+ SurfaceId::Fills,
+ SurfaceId::Strokes,
+ SurfaceId::DropShadows,
+ SurfaceId::InnerShadows,
+ ],
+ |s| {
+ s.canvas().restore();
+ s.canvas().save();
+ s.canvas().translate(translation);
+ },
+ );
+ }
+
fn get_mut(&mut self, id: SurfaceId) -> &mut skia::Surface {
match id {
SurfaceId::Target => &mut self.target,
SurfaceId::Current => &mut self.current,
- SurfaceId::Shadow => &mut self.shadow,
SurfaceId::DropShadows => &mut self.drop_shadows,
- SurfaceId::Overlay => &mut self.overlay,
+ SurfaceId::InnerShadows => &mut self.inner_shadows,
SurfaceId::Fills => &mut self.shape_fills,
SurfaceId::Strokes => &mut self.shape_strokes,
SurfaceId::Debug => &mut self.debug,
@@ -111,12 +167,8 @@ impl Surfaces {
fn reset_from_target(&mut self, target: skia::Surface) {
let dim = (target.width(), target.height());
self.target = target;
- self.current = self.target.new_surface_with_dimensions(dim).unwrap();
- self.overlay = self.target.new_surface_with_dimensions(dim).unwrap();
- self.shadow = self.target.new_surface_with_dimensions(dim).unwrap();
- self.drop_shadows = self.target.new_surface_with_dimensions(dim).unwrap();
- self.shape_fills = self.target.new_surface_with_dimensions(dim).unwrap();
self.debug = self.target.new_surface_with_dimensions(dim).unwrap();
+ // The rest are tile size surfaces
}
pub fn draw_rect_to(&mut self, id: SurfaceId, shape: &Shape, paint: &Paint) {
@@ -137,4 +189,138 @@ impl Surfaces {
self.canvas(id).draw_path(&path, paint);
}
}
+
+ 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::Strokes).restore_to_count(1);
+ self.canvas(SurfaceId::Current).restore_to_count(1);
+ self.apply_mut(
+ &[
+ SurfaceId::Fills,
+ SurfaceId::Strokes,
+ SurfaceId::Current,
+ SurfaceId::DropShadows,
+ SurfaceId::InnerShadows,
+ ],
+ |s| {
+ s.canvas().clear(color).reset_matrix();
+ },
+ );
+
+ self.canvas(SurfaceId::Debug)
+ .clear(skia::Color::TRANSPARENT)
+ .reset_matrix();
+ }
+
+ pub fn cache_clear_visited(&mut self) {
+ self.tiles.clear_visited();
+ }
+
+ pub fn cache_visit(&mut self, tile: Tile) {
+ self.tiles.visit(tile);
+ }
+
+ pub fn cache_current_tile_texture(&mut self, tile: Tile) {
+ let snapshot = self.current.image_snapshot();
+ let rect = IRect::from_xywh(
+ self.margins.width,
+ self.margins.height,
+ snapshot.width() - TILE_SIZE_MULTIPLIER * self.margins.width,
+ snapshot.height() - TILE_SIZE_MULTIPLIER * self.margins.height,
+ );
+
+ let mut context = self.current.direct_context();
+ if let Some(snapshot) = snapshot.make_subset(&mut context, &rect) {
+ self.tiles.add(tile, snapshot);
+ }
+ }
+
+ pub fn has_cached_tile_surface(&mut self, tile: Tile) -> bool {
+ self.tiles.has(tile)
+ }
+
+ pub fn remove_cached_tile_surface(&mut self, tile: Tile) -> bool {
+ self.tiles.remove(tile)
+ }
+
+ pub fn draw_cached_tile_surface(&mut self, tile: Tile, rect: skia::Rect) {
+ let image = self.tiles.get(tile).unwrap();
+ self.target
+ .canvas()
+ .draw_image_rect(&image, None, rect, &skia::Paint::default());
+ }
+
+ pub fn remove_cached_tiles(&mut self) {
+ self.tiles.clear();
+ }
+}
+
+pub struct TileTextureCache {
+ grid: HashMap,
+ visited: HashMap,
+}
+
+impl TileTextureCache {
+ pub fn new() -> Self {
+ Self {
+ grid: HashMap::new(),
+ visited: HashMap::new(),
+ }
+ }
+
+ pub fn has(&mut self, tile: Tile) -> bool {
+ return self.grid.contains_key(&tile);
+ }
+
+ fn remove_list(&mut self, marked: Vec) {
+ for tile in marked.iter() {
+ self.grid.remove(tile);
+ }
+ }
+
+ pub fn add(&mut self, tile: Tile, image: skia::Image) {
+ if self.grid.len() > TEXTURES_CACHE_CAPACITY {
+ let marked: Vec<_> = self
+ .grid
+ .iter_mut()
+ .filter_map(|(tile, _)| {
+ if !self.visited.contains_key(tile) {
+ Some(tile.clone())
+ } else {
+ None
+ }
+ })
+ .take(TEXTURES_BATCH_DELETE)
+ .collect();
+ self.remove_list(marked);
+ }
+ self.grid.insert(tile, image);
+ }
+
+ pub fn get(&mut self, tile: Tile) -> Result<&mut skia::Image, String> {
+ let image = self.grid.get_mut(&tile).unwrap();
+ Ok(image)
+ }
+
+ pub fn remove(&mut self, tile: Tile) -> bool {
+ if !self.grid.contains_key(&tile) {
+ return false;
+ }
+ self.grid.remove(&tile);
+ true
+ }
+
+ pub fn clear(&mut self) {
+ self.grid.clear();
+ }
+
+ pub fn clear_visited(&mut self) {
+ self.visited.clear();
+ }
+
+ pub fn visit(&mut self, tile: Tile) {
+ self.visited.insert(tile, true);
+ }
}
diff --git a/render-wasm/src/render/text.rs b/render-wasm/src/render/text.rs
index c494dcb9dc..9ef6cdb1d2 100644
--- a/render-wasm/src/render/text.rs
+++ b/render-wasm/src/render/text.rs
@@ -1,13 +1,25 @@
-use super::{RenderState, SurfaceId};
-use crate::shapes::TextContent;
+use super::{RenderState, Shape, SurfaceId};
+use skia_safe::{self as skia, canvas::SaveLayerRec, paint, textlayout::Paragraph};
-pub fn render(render_state: &mut RenderState, text: &TextContent) {
+pub fn render(
+ render_state: &mut RenderState,
+ shape: &Shape,
+ paragraphs: &[Paragraph],
+ surface_id: Option,
+ paint: Option<&paint::Paint>,
+) {
let mut offset_y = 0.0;
- for mut skia_paragraph in text.to_paragraphs(&render_state.fonts().font_collection()) {
- skia_paragraph.layout(text.width());
+ let default_paint = skia::Paint::default();
+ let mask = SaveLayerRec::default().paint(&paint.unwrap_or(&default_paint));
+ let canvas = render_state
+ .surfaces
+ .canvas(surface_id.unwrap_or(SurfaceId::Fills));
- let xy = (text.x(), text.y() + offset_y);
- skia_paragraph.paint(render_state.surfaces.canvas(SurfaceId::Fills), xy);
+ canvas.save_layer(&mask);
+ for skia_paragraph in paragraphs {
+ let xy = (shape.selrect().x(), shape.selrect.y() + offset_y);
+ skia_paragraph.paint(canvas, xy);
offset_y += skia_paragraph.height();
}
+ canvas.restore();
}
diff --git a/render-wasm/src/render/tiles.rs b/render-wasm/src/render/tiles.rs
new file mode 100644
index 0000000000..d14e5fed91
--- /dev/null
+++ b/render-wasm/src/render/tiles.rs
@@ -0,0 +1,114 @@
+use crate::uuid::Uuid;
+use crate::view::Viewbox;
+use indexmap::IndexSet;
+use skia_safe as skia;
+use std::collections::{HashMap, HashSet};
+
+pub type Tile = (i32, i32);
+pub type TileWithDistance = (i32, i32, i32);
+
+pub const TILE_SIZE: f32 = 512.;
+
+// @see https://en.wikipedia.org/wiki/Taxicab_geometry
+pub fn manhattan_distance(a: (i32, i32), b: (i32, i32)) -> i32 {
+ (a.0 - b.0).abs() + (a.1 - b.1).abs()
+}
+
+pub fn get_tile_dimensions() -> skia::ISize {
+ (TILE_SIZE as i32, TILE_SIZE as i32).into()
+}
+
+pub fn get_tiles_for_rect(rect: skia::Rect, tile_size: f32) -> (i32, i32, i32, i32) {
+ // start
+ let sx = (rect.left / tile_size).floor() as i32;
+ let sy = (rect.top / tile_size).floor() as i32;
+ // end
+ let ex = (rect.right / tile_size).floor() as i32;
+ let ey = (rect.bottom / tile_size).floor() as i32;
+ (sx, sy, ex, ey)
+}
+
+pub fn get_tiles_for_viewbox(viewbox: Viewbox) -> (i32, i32, i32, i32) {
+ let tile_size = get_tile_size(viewbox);
+ get_tiles_for_rect(viewbox.area, tile_size)
+}
+
+pub fn get_tiles_for_viewbox_with_interest(
+ viewbox: Viewbox,
+ interest: i32,
+) -> (i32, i32, i32, i32) {
+ let (sx, sy, ex, ey) = get_tiles_for_viewbox(viewbox);
+ (sx - interest, sy - interest, ex + interest, ey + interest)
+}
+
+pub fn get_tile_pos(viewbox: Viewbox, (x, y): Tile) -> (f32, f32) {
+ (
+ x as f32 * get_tile_size(viewbox),
+ y as f32 * get_tile_size(viewbox),
+ )
+}
+
+pub fn get_tile_size(viewbox: Viewbox) -> f32 {
+ // TODO: * self.options.dpr() too?
+ 1. / viewbox.zoom * TILE_SIZE
+}
+
+pub fn get_tile_rect(viewbox: Viewbox, tile: Tile) -> skia::Rect {
+ let (tx, ty) = get_tile_pos(viewbox, tile);
+ let ts = get_tile_size(viewbox);
+ skia::Rect::from_xywh(tx, ty, ts, ts)
+}
+
+// This structure is usseful to keep all the shape uuids by shape id.
+pub struct TileHashMap {
+ grid: HashMap>,
+ index: HashMap>,
+}
+
+impl TileHashMap {
+ pub fn new() -> Self {
+ TileHashMap {
+ grid: HashMap::new(),
+ index: HashMap::new(),
+ }
+ }
+
+ pub fn get_shapes_at(&mut self, tile: Tile) -> Option<&IndexSet> {
+ return self.grid.get(&tile);
+ }
+
+ pub fn remove_shape_at(&mut self, tile: Tile, id: Uuid) {
+ if let Some(shapes) = self.grid.get_mut(&tile) {
+ shapes.shift_remove(&id);
+ }
+
+ if let Some(tiles) = self.index.get_mut(&id) {
+ tiles.remove(&tile);
+ }
+ }
+
+ pub fn get_tiles_of(&mut self, shape_id: Uuid) -> Option<&HashSet> {
+ self.index.get(&shape_id)
+ }
+
+ pub fn add_shape_at(&mut self, tile: Tile, shape_id: Uuid) {
+ if !self.grid.contains_key(&tile) {
+ self.grid.insert(tile, IndexSet::new());
+ }
+
+ if !self.index.contains_key(&shape_id) {
+ self.index.insert(shape_id, HashSet::new());
+ }
+
+ let tile_set = self.grid.get_mut(&tile).unwrap();
+ tile_set.insert(shape_id);
+
+ let index_set = self.index.get_mut(&shape_id).unwrap();
+ index_set.insert(tile);
+ }
+
+ pub fn invalidate(&mut self) {
+ self.grid.clear();
+ self.index.clear();
+ }
+}
diff --git a/render-wasm/src/shapes.rs b/render-wasm/src/shapes.rs
index ec58b4f0e7..caf9056c82 100644
--- a/render-wasm/src/shapes.rs
+++ b/render-wasm/src/shapes.rs
@@ -1,9 +1,8 @@
use skia_safe::{self as skia};
-use std::collections::HashMap;
-use uuid::Uuid;
-
use crate::render::BlendMode;
+use crate::uuid::Uuid;
+use std::collections::{HashMap, HashSet};
mod blurs;
mod bools;
@@ -41,6 +40,10 @@ pub use transform::*;
use crate::math;
use crate::math::{Bounds, Matrix, Point};
+use indexmap::IndexSet;
+
+const MIN_VISIBLE_SIZE: f32 = 2.0;
+const ANTIALIAS_THRESHOLD: f32 = 15.0;
#[derive(Debug, Clone, PartialEq)]
pub enum Type {
@@ -157,7 +160,7 @@ pub struct Shape {
pub id: Uuid,
pub parent_id: Option,
pub shape_type: Type,
- pub children: Vec,
+ pub children: IndexSet,
pub selrect: math::Rect,
pub transform: Matrix,
pub rotation: f32,
@@ -182,7 +185,7 @@ impl Shape {
id,
parent_id: None,
shape_type: Type::Rect(Rect::default()),
- children: Vec::::new(),
+ children: IndexSet::::new(),
selrect: math::Rect::new_empty(),
transform: Matrix::default(),
rotation: 0.,
@@ -318,7 +321,7 @@ impl Shape {
pub fn set_flex_layout_data(
&mut self,
- direction: Direction,
+ direction: FlexDirection,
row_gap: f32,
column_gap: f32,
align_items: AlignItems,
@@ -334,7 +337,6 @@ impl Shape {
match &mut self.shape_type {
Type::Frame(data) => {
let layout_data = LayoutData {
- direction,
align_items,
align_content,
justify_items,
@@ -343,11 +345,12 @@ impl Shape {
padding_right,
padding_bottom,
padding_left,
+ row_gap,
+ column_gap,
};
let flex_data = FlexData {
- row_gap,
- column_gap,
+ direction,
wrap_type,
};
@@ -357,16 +360,88 @@ impl Shape {
}
}
+ pub fn set_grid_layout_data(
+ &mut self,
+ direction: GridDirection,
+ row_gap: f32,
+ column_gap: f32,
+ align_items: AlignItems,
+ align_content: AlignContent,
+ justify_items: JustifyItems,
+ justify_content: JustifyContent,
+ padding_top: f32,
+ padding_right: f32,
+ padding_bottom: f32,
+ padding_left: f32,
+ ) {
+ match &mut self.shape_type {
+ Type::Frame(data) => {
+ let layout_data = LayoutData {
+ align_items,
+ align_content,
+ justify_items,
+ justify_content,
+ padding_top,
+ padding_right,
+ padding_bottom,
+ padding_left,
+ row_gap,
+ column_gap,
+ };
+
+ let mut grid_data = GridData::default();
+ grid_data.direction = direction;
+ data.layout = Some(Layout::GridLayout(layout_data, grid_data));
+ }
+ _ => {}
+ }
+ }
+
+ 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();
+ }
+
+ 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();
+ }
+
+ 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();
+ }
+
pub fn set_blur(&mut self, blur_type: u8, hidden: bool, value: f32) {
self.blur = Blur::new(blur_type, hidden, value);
}
pub fn add_child(&mut self, id: Uuid) {
- self.children.push(id);
+ self.children.insert(id);
}
- pub fn clear_children(&mut self) {
- self.children.clear();
+ pub fn compute_children_differences(
+ &mut self,
+ children: &IndexSet,
+ ) -> (IndexSet, IndexSet) {
+ let added = children.difference(&self.children).cloned().collect();
+ let removed = self.children.difference(children).cloned().collect();
+ (added, removed)
}
pub fn fills(&self) -> std::slice::Iter {
@@ -381,21 +456,6 @@ impl Shape {
self.fills.clear();
}
- pub fn add_fill_gradient_stops(&mut self, buffer: Vec) -> Result<(), String> {
- let fill = self.fills.last_mut().ok_or("Shape has no fills")?;
- let gradient = match fill {
- Fill::LinearGradient(g) => Ok(g),
- Fill::RadialGradient(g) => Ok(g),
- _ => Err("Active fill is not a gradient"),
- }?;
-
- for stop in buffer.into_iter() {
- gradient.add_stop(stop.color(), stop.offset());
- }
-
- Ok(())
- }
-
pub fn strokes(&self) -> std::slice::Iter {
self.strokes.iter()
}
@@ -410,22 +470,6 @@ impl Shape {
Ok(())
}
- pub fn add_stroke_gradient_stops(&mut self, buffer: Vec) -> Result<(), String> {
- let stroke = self.strokes.last_mut().ok_or("Shape has no strokes")?;
- let fill = &mut stroke.fill;
- let gradient = match fill {
- Fill::LinearGradient(g) => Ok(g),
- Fill::RadialGradient(g) => Ok(g),
- _ => Err("Active stroke is not a gradient"),
- }?;
-
- for stop in buffer.into_iter() {
- gradient.add_stop(stop.color(), stop.offset());
- }
-
- Ok(())
- }
-
pub fn clear_strokes(&mut self) {
self.strokes.clear();
}
@@ -505,6 +549,21 @@ impl Shape {
self.hidden
}
+ #[allow(dead_code)]
+ pub fn width(&self) -> f32 {
+ self.selrect.width()
+ }
+
+ pub fn visually_insignificant(&self, scale: f32) -> bool {
+ self.selrect.width() * scale < MIN_VISIBLE_SIZE
+ || self.selrect.height() * scale < MIN_VISIBLE_SIZE
+ }
+
+ pub fn should_use_antialias(&self, scale: f32) -> bool {
+ self.selrect.width() * scale > ANTIALIAS_THRESHOLD
+ || self.selrect.height() * scale > ANTIALIAS_THRESHOLD
+ }
+
// TODO: Maybe store this inside the shape
pub fn bounds(&self) -> Bounds {
let mut bounds = Bounds::new(
@@ -531,6 +590,33 @@ impl Shape {
self.selrect
}
+ pub fn extrect(&self) -> math::Rect {
+ let mut rect = self.bounds().to_rect();
+ for shadow in self.shadows.iter() {
+ let (x, y) = shadow.offset;
+ let mut shadow_rect = rect.clone();
+ 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;
+
+ 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;
+ }
+
+ rect
+ }
+
pub fn center(&self) -> Point {
self.selrect.center()
}
@@ -543,17 +629,17 @@ impl Shape {
self.children.first()
}
- pub fn children_ids(&self) -> Vec {
+ pub fn children_ids(&self) -> IndexSet {
if let Type::Bool(_) = self.shape_type {
- vec![]
+ IndexSet::::new()
} else if let Type::Group(group) = self.shape_type {
if group.masked {
- self.children[1..self.children.len()].to_vec()
+ self.children.iter().skip(1).cloned().collect()
} else {
- self.children.clone()
+ self.children.clone().into_iter().collect()
}
} else {
- self.children.clone()
+ self.children.clone().into_iter().collect()
}
}
@@ -574,7 +660,10 @@ impl Shape {
}
pub fn is_recursive(&self) -> bool {
- !matches!(self.shape_type, Type::SVGRaw(_))
+ matches!(
+ self.shape_type,
+ Type::Frame(_) | Type::Group(_) | Type::Bool(_)
+ )
}
pub fn add_shadow(&mut self, shadow: Shadow) {
@@ -611,25 +700,10 @@ impl Shape {
}
}
- pub fn add_text_leaf(
- &mut self,
- text_str: String,
- font_family: FontFamily,
- font_size: f32,
- ) -> Result<(), String> {
+ pub fn add_paragraph(&mut self, paragraph: Paragraph) -> Result<(), String> {
match self.shape_type {
Type::Text(ref mut text) => {
- text.add_leaf(text_str, font_family, font_size)?;
- Ok(())
- }
- _ => Err("Shape is not a text".to_string()),
- }
- }
-
- pub fn add_text_paragraph(&mut self) -> Result<(), String> {
- match self.shape_type {
- Type::Text(ref mut text) => {
- text.add_paragraph();
+ text.add_paragraph(paragraph);
Ok(())
}
_ => Err("Shape is not a text".to_string()),
@@ -671,12 +745,13 @@ impl Shape {
let width = bounds.width();
let height = bounds.height();
- self.selrect = math::Rect::from_xywh(
+ let new_selrect = math::Rect::from_xywh(
center.x - width / 2.0,
center.y - height / 2.0,
width,
height,
);
+ self.selrect = new_selrect;
}
pub fn apply_transform(&mut self, transform: &Matrix) {
@@ -691,6 +766,20 @@ impl Shape {
}
}
+ pub fn is_absolute(&self) -> bool {
+ match &self.layout_item {
+ Some(LayoutItem { is_absolute, .. }) => *is_absolute,
+ _ => false,
+ }
+ }
+
+ pub fn z_index(&self) -> i32 {
+ match &self.layout_item {
+ Some(LayoutItem { z_index, .. }) => *z_index,
+ _ => 0,
+ }
+ }
+
pub fn is_layout_vertical_auto(&self) -> bool {
match &self.layout_item {
Some(LayoutItem { v_sizing, .. }) => v_sizing == &Sizing::Auto,
@@ -718,6 +807,44 @@ impl Shape {
_ => false,
}
}
+
+ pub fn has_fills(&self) -> bool {
+ !self.fills.is_empty()
+ }
+}
+
+/*
+ Returns the list of children taking into account the structure modifiers
+*/
+pub fn modified_children_ids(
+ element: &Shape,
+ structure: Option<&Vec>,
+) -> IndexSet {
+ if let Some(structure) = structure {
+ let mut result: Vec = Vec::from_iter(element.children_ids().iter().map(|id| *id));
+ let mut to_remove = HashSet::<&Uuid>::new();
+
+ for st in structure {
+ match st.entry_type {
+ StructureEntryType::AddChild => {
+ result.insert(st.index as usize, st.id);
+ }
+ StructureEntryType::RemoveChild => {
+ to_remove.insert(&st.id);
+ }
+ }
+ }
+
+ let ret: IndexSet = result
+ .iter()
+ .filter(|id| !to_remove.contains(id))
+ .map(|id| *id)
+ .collect();
+
+ ret
+ } else {
+ element.children_ids()
+ }
}
#[cfg(test)]
diff --git a/render-wasm/src/shapes/fills.rs b/render-wasm/src/shapes/fills.rs
index d94c21fc00..f85ba75068 100644
--- a/render-wasm/src/shapes/fills.rs
+++ b/render-wasm/src/shapes/fills.rs
@@ -1,32 +1,107 @@
use skia_safe::{self as skia, Rect};
use super::Color;
-use uuid::Uuid;
+use crate::uuid::Uuid;
+
+const MAX_GRADIENT_STOPS: usize = 16;
+const BASE_GRADIENT_DATA_SIZE: usize = 28;
+const RAW_GRADIENT_DATA_SIZE: usize =
+ BASE_GRADIENT_DATA_SIZE + RAW_STOP_DATA_SIZE * MAX_GRADIENT_STOPS;
+
+#[derive(Debug)]
+#[repr(C)]
+pub struct RawGradientData {
+ start_x: f32,
+ start_y: f32,
+ end_x: f32,
+ end_y: f32,
+ opacity: f32,
+ width: f32,
+ stop_count: u32,
+ stops: [RawStopData; MAX_GRADIENT_STOPS],
+}
+
+impl From<[u8; RAW_GRADIENT_DATA_SIZE]> for RawGradientData {
+ fn from(bytes: [u8; RAW_GRADIENT_DATA_SIZE]) -> Self {
+ Self {
+ start_x: f32::from_le_bytes([bytes[0], bytes[1], bytes[2], bytes[3]]),
+ start_y: f32::from_le_bytes([bytes[4], bytes[5], bytes[6], bytes[7]]),
+ end_x: f32::from_le_bytes([bytes[8], bytes[9], bytes[10], bytes[11]]),
+ end_y: f32::from_le_bytes([bytes[12], bytes[13], bytes[14], bytes[15]]),
+ opacity: f32::from_le_bytes([bytes[16], bytes[17], bytes[18], bytes[19]]),
+ width: f32::from_le_bytes([bytes[20], bytes[21], bytes[22], bytes[23]]),
+ stop_count: u32::from_le_bytes([bytes[24], bytes[25], bytes[26], bytes[27]]),
+ // FIXME: 2025-04-22: use `array_chunks` once the next release is out
+ // and we update our devenv.
+ // See https://github.com/rust-lang/rust/issues/74985
+ stops: bytes[28..]
+ .chunks_exact(RAW_STOP_DATA_SIZE)
+ .map(|chunk| RawStopData::try_from(chunk).unwrap())
+ .collect::>()
+ .try_into()
+ .unwrap(),
+ }
+ }
+}
+
+impl RawGradientData {
+ pub fn start(&self) -> (f32, f32) {
+ (self.start_x, self.start_y)
+ }
+
+ pub fn end(&self) -> (f32, f32) {
+ (self.end_x, self.end_y)
+ }
+
+ pub fn opacity(&self) -> f32 {
+ self.opacity
+ }
+
+ pub fn width(&self) -> f32 {
+ self.width
+ }
+}
+
+pub const RAW_STOP_DATA_SIZE: usize = 8;
#[derive(Debug)]
#[repr(C)]
pub struct RawStopData {
- color: [u8; 4],
- offset: u8,
+ color: u32,
+ offset: f32,
}
impl RawStopData {
pub fn color(&self) -> skia::Color {
- skia::Color::from_argb(self.color[3], self.color[0], self.color[1], self.color[2])
+ skia::Color::from(self.color)
}
pub fn offset(&self) -> f32 {
- self.offset as f32 / 100.0
+ self.offset
}
+}
- pub fn from_bytes(bytes: [u8; 5]) -> Self {
+impl From<[u8; RAW_STOP_DATA_SIZE]> for RawStopData {
+ fn from(bytes: [u8; RAW_STOP_DATA_SIZE]) -> Self {
Self {
- color: [bytes[0], bytes[1], bytes[2], bytes[3]],
- offset: bytes[4],
+ color: u32::from_le_bytes([bytes[0], bytes[1], bytes[2], bytes[3]]),
+ offset: f32::from_le_bytes([bytes[4], bytes[5], bytes[6], bytes[7]]),
}
}
}
+// FIXME: We won't need this once we use `array_chunks`. See comment above.
+impl TryFrom<&[u8]> for RawStopData {
+ type Error = String;
+
+ fn try_from(bytes: &[u8]) -> Result {
+ let data: [u8; RAW_STOP_DATA_SIZE] = bytes
+ .try_into()
+ .map_err(|_| "Invalid stop data".to_string())?;
+ Ok(RawStopData::from(data))
+ }
+}
+
#[derive(Debug, Clone, PartialEq)]
pub struct Gradient {
colors: Vec,
@@ -38,9 +113,11 @@ pub struct Gradient {
}
impl Gradient {
- pub fn add_stop(&mut self, color: Color, offset: f32) {
- self.colors.push(color);
- self.offsets.push(offset);
+ fn add_stops(&mut self, stops: &[(Color, f32)]) {
+ let colors = stops.iter().map(|(color, _)| *color);
+ let offsets = stops.iter().map(|(_, offset)| *offset);
+ self.colors.extend(colors);
+ self.offsets.extend(offsets);
}
fn to_linear_shader(&self, rect: &Rect) -> Option {
@@ -96,6 +173,43 @@ impl Gradient {
}
}
+impl From for Gradient {
+ fn from(raw_gradient: RawGradientData) -> Self {
+ let stops = raw_gradient
+ .stops
+ .iter()
+ .take(raw_gradient.stop_count as usize)
+ .map(|stop| (stop.color(), stop.offset()))
+ .collect::>();
+
+ let mut gradient = Gradient {
+ start: raw_gradient.start(),
+ end: raw_gradient.end(),
+ opacity: raw_gradient.opacity(),
+ colors: vec![],
+ offsets: vec![],
+ width: raw_gradient.width(),
+ };
+
+ gradient.add_stops(&stops);
+
+ gradient
+ }
+}
+
+impl TryFrom<&[u8]> for Gradient {
+ type Error = String;
+
+ fn try_from(bytes: &[u8]) -> Result {
+ let raw_gradient_bytes: [u8; RAW_GRADIENT_DATA_SIZE] = bytes[0..RAW_GRADIENT_DATA_SIZE]
+ .try_into()
+ .map_err(|_| "Invalid gradient data".to_string())?;
+ let gradient = RawGradientData::from(raw_gradient_bytes).into();
+
+ Ok(gradient)
+ }
+}
+
#[derive(Debug, Clone, PartialEq)]
pub struct ImageFill {
id: Uuid,
@@ -123,32 +237,6 @@ pub enum Fill {
}
impl Fill {
- pub fn new_linear_gradient(start: (f32, f32), end: (f32, f32), opacity: f32) -> Self {
- Self::LinearGradient(Gradient {
- start,
- end,
- opacity,
- colors: vec![],
- offsets: vec![],
- width: 0.,
- })
- }
- pub fn new_radial_gradient(
- start: (f32, f32),
- end: (f32, f32),
- opacity: f32,
- width: f32,
- ) -> Self {
- Self::RadialGradient(Gradient {
- start,
- end,
- opacity,
- colors: vec![],
- offsets: vec![],
- width,
- })
- }
-
pub fn new_image_fill(id: Uuid, opacity: u8, (width, height): (i32, i32)) -> Self {
Self::Image(ImageFill {
id,
@@ -158,38 +246,38 @@ impl Fill {
})
}
- pub fn to_paint(&self, rect: &Rect) -> skia::Paint {
+ pub fn to_paint(&self, rect: &Rect, anti_alias: bool) -> skia::Paint {
match self {
Self::Solid(color) => {
let mut p = skia::Paint::default();
p.set_color(*color);
p.set_style(skia::PaintStyle::Fill);
- p.set_anti_alias(true);
+ p.set_anti_alias(anti_alias);
p.set_blend_mode(skia::BlendMode::SrcOver);
p
}
Self::LinearGradient(gradient) => {
let mut p = skia::Paint::default();
- p.set_shader(gradient.to_linear_shader(&rect));
+ p.set_shader(gradient.to_linear_shader(rect));
p.set_alpha((gradient.opacity * 255.) as u8);
p.set_style(skia::PaintStyle::Fill);
- p.set_anti_alias(true);
+ p.set_anti_alias(anti_alias);
p.set_blend_mode(skia::BlendMode::SrcOver);
p
}
Self::RadialGradient(gradient) => {
let mut p = skia::Paint::default();
- p.set_shader(gradient.to_radial_shader(&rect));
+ p.set_shader(gradient.to_radial_shader(rect));
p.set_alpha((gradient.opacity * 255.) as u8);
p.set_style(skia::PaintStyle::Fill);
- p.set_anti_alias(true);
+ p.set_anti_alias(anti_alias);
p.set_blend_mode(skia::BlendMode::SrcOver);
p
}
Self::Image(image_fill) => {
let mut p = skia::Paint::default();
p.set_style(skia::PaintStyle::Fill);
- p.set_anti_alias(true);
+ p.set_anti_alias(anti_alias);
p.set_blend_mode(skia::BlendMode::SrcOver);
p.set_alpha(image_fill.opacity);
p
diff --git a/render-wasm/src/shapes/fonts.rs b/render-wasm/src/shapes/fonts.rs
index 58104af062..7a4524cad5 100644
--- a/render-wasm/src/shapes/fonts.rs
+++ b/render-wasm/src/shapes/fonts.rs
@@ -1,6 +1,6 @@
use std::fmt;
-use uuid::Uuid;
+use crate::uuid::Uuid;
#[derive(Debug, PartialEq, Clone, Copy)]
pub enum FontStyle {
@@ -39,6 +39,10 @@ impl FontFamily {
pub fn new(id: Uuid, weight: u32, style: FontStyle) -> Self {
Self { id, style, weight }
}
+
+ pub fn alias(&self) -> String {
+ format!("{}", self)
+ }
}
impl fmt::Display for FontFamily {
diff --git a/render-wasm/src/shapes/layouts.rs b/render-wasm/src/shapes/layouts.rs
index 3dcdf2e166..b6fea8b85d 100644
--- a/render-wasm/src/shapes/layouts.rs
+++ b/render-wasm/src/shapes/layouts.rs
@@ -1,3 +1,6 @@
+use crate::utils::uuid_from_u32_quartet;
+use crate::uuid::Uuid;
+
#[derive(Debug, Clone, PartialEq)]
#[allow(dead_code)]
pub enum Layout {
@@ -6,14 +9,14 @@ pub enum Layout {
}
#[derive(Debug, Clone, PartialEq)]
-pub enum Direction {
+pub enum FlexDirection {
Row,
RowReverse,
Column,
ColumnReverse,
}
-impl Direction {
+impl FlexDirection {
pub fn from_u8(value: u8) -> Self {
match value {
0 => Self::Row,
@@ -26,6 +29,22 @@ impl Direction {
}
#[derive(Debug, Clone, PartialEq)]
+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,
End,
@@ -45,7 +64,7 @@ impl AlignItems {
}
}
-#[derive(Debug, Clone, PartialEq)]
+#[derive(Debug, Clone, PartialEq, Copy)]
pub enum AlignContent {
Start,
End,
@@ -71,7 +90,7 @@ impl AlignContent {
}
}
-#[derive(Debug, Clone, PartialEq)]
+#[derive(Debug, Clone, PartialEq, Copy)]
pub enum JustifyItems {
Start,
End,
@@ -91,7 +110,7 @@ impl JustifyItems {
}
}
-#[derive(Debug, Clone, PartialEq)]
+#[derive(Debug, Clone, PartialEq, Copy)]
pub enum JustifyContent {
Start,
End,
@@ -132,9 +151,82 @@ impl WrapType {
}
}
}
+#[derive(Debug, Copy, Clone, PartialEq)]
+pub enum GridTrackType {
+ Percent,
+ Flex,
+ Auto,
+ 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 struct GridTrack {
+ pub track_type: GridTrackType,
+ pub value: f32,
+}
+
+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),
+ }
+ }
+}
+
+#[derive(Debug, Clone, PartialEq)]
+pub struct GridCell {
+ pub row: i32,
+ pub row_span: i32,
+ pub column: i32,
+ pub column_span: i32,
+ pub align_self: Option,
+ pub justify_self: Option,
+ 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 {
@@ -156,7 +248,6 @@ impl Sizing {
#[derive(Debug, Clone, PartialEq)]
pub struct LayoutData {
- pub direction: Direction,
pub align_items: AlignItems,
pub align_content: AlignContent,
pub justify_items: JustifyItems,
@@ -165,33 +256,13 @@ pub struct LayoutData {
pub padding_right: f32,
pub padding_bottom: f32,
pub padding_left: f32,
-}
-
-impl LayoutData {
- pub fn is_reverse(&self) -> bool {
- match &self.direction {
- Direction::RowReverse | Direction::ColumnReverse => true,
- _ => false,
- }
- }
- pub fn is_row(&self) -> bool {
- match &self.direction {
- Direction::RowReverse | Direction::Row => true,
- _ => false,
- }
- }
-
- #[allow(dead_code)]
- pub fn is_column(&self) -> bool {
- match &self.direction {
- Direction::ColumnReverse | Direction::Column => true,
- _ => false,
- }
- }
+ pub row_gap: f32,
+ pub column_gap: f32,
}
#[derive(Debug, Copy, Clone, PartialEq)]
pub enum AlignSelf {
+ Auto,
Start,
End,
Center,
@@ -201,10 +272,33 @@ pub enum AlignSelf {
impl AlignSelf {
pub fn from_u8(value: u8) -> Option {
match value {
- 0 => Some(Self::Start),
- 1 => Some(Self::End),
- 2 => Some(Self::Center),
- 3 => Some(Self::Stretch),
+ 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,
}
}
@@ -212,11 +306,26 @@ impl AlignSelf {
#[derive(Debug, Clone, PartialEq)]
pub struct FlexData {
- pub row_gap: f32,
- pub column_gap: f32,
+ pub direction: FlexDirection,
pub wrap_type: WrapType,
}
+impl FlexData {
+ pub fn is_reverse(&self) -> bool {
+ match &self.direction {
+ FlexDirection::RowReverse | FlexDirection::ColumnReverse => true,
+ _ => false,
+ }
+ }
+
+ pub fn is_row(&self) -> bool {
+ match &self.direction {
+ FlexDirection::RowReverse | FlexDirection::Row => true,
+ _ => false,
+ }
+ }
+}
+
impl FlexData {
pub fn is_wrap(&self) -> bool {
match self.wrap_type {
@@ -228,9 +337,78 @@ impl FlexData {
#[derive(Debug, Clone, PartialEq)]
pub struct GridData {
+ pub direction: GridDirection,
pub rows: Vec,
pub columns: Vec,
- // layout-grid-cells ;; map of id->grid-cell
+ pub cells: Vec,
+}
+
+impl GridData {
+ pub fn default() -> Self {
+ Self {
+ direction: GridDirection::Row,
+ rows: vec![],
+ columns: vec![],
+ cells: vec![],
+ }
+ }
+}
+
+#[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)]
diff --git a/render-wasm/src/shapes/modifiers.rs b/render-wasm/src/shapes/modifiers.rs
index 2ca02ffaa0..491b5ba7e6 100644
--- a/render-wasm/src/shapes/modifiers.rs
+++ b/render-wasm/src/shapes/modifiers.rs
@@ -1,19 +1,18 @@
use std::collections::{HashMap, HashSet, VecDeque};
-
mod common;
mod constraints;
mod flex_layout;
mod grid_layout;
-use uuid::Uuid;
-
use common::GetBounds;
-use crate::math::{Bounds, Matrix, Point};
+use crate::math::{identitish, Bounds, Matrix, Point};
use crate::shapes::{
- ConstraintH, ConstraintV, Frame, Group, Layout, Modifier, Shape, TransformEntry, Type,
+ modified_children_ids, ConstraintH, ConstraintV, Frame, Group, Layout, Modifier, Shape,
+ StructureEntry, TransformEntry, Type,
};
use crate::state::State;
+use crate::uuid::Uuid;
fn propagate_children(
shape: &Shape,
@@ -22,14 +21,17 @@ fn propagate_children(
parent_bounds_after: &Bounds,
transform: Matrix,
bounds: &HashMap,
+ structure: &HashMap>,
) -> VecDeque {
- if shape.children.len() == 0 {
+ let children_ids = modified_children_ids(shape, structure.get(&shape.id));
+
+ if children_ids.len() == 0 || identitish(transform) {
return VecDeque::new();
}
let mut result = VecDeque::new();
- for child_id in shape.children.iter() {
+ for child_id in children_ids.iter() {
let Some(child) = shapes.get(child_id) else {
continue;
};
@@ -39,7 +41,13 @@ fn propagate_children(
let constraint_h = match &shape.shape_type {
Type::Frame(Frame {
layout: Some(_), ..
- }) => ConstraintH::Left,
+ }) => {
+ if child.is_absolute() {
+ child.constraint_h(ConstraintH::Left)
+ } else {
+ ConstraintH::Left
+ }
+ }
Type::Frame(_) => child.constraint_h(ConstraintH::Left),
_ => child.constraint_h(ConstraintH::Scale),
};
@@ -47,7 +55,13 @@ fn propagate_children(
let constraint_v = match &shape.shape_type {
Type::Frame(Frame {
layout: Some(_), ..
- }) => ConstraintV::Top,
+ }) => {
+ if child.is_absolute() {
+ child.constraint_v(ConstraintV::Top)
+ } else {
+ ConstraintV::Top
+ }
+ }
Type::Frame(_) => child.constraint_v(ConstraintV::Top),
_ => child.constraint_v(ConstraintV::Scale),
};
@@ -71,10 +85,13 @@ fn calculate_group_bounds(
shape: &Shape,
shapes: &HashMap,
bounds: &HashMap,
+ structure: &HashMap>,
) -> Option {
let shape_bounds = bounds.find(&shape);
let mut result = Vec::::new();
- for child_id in shape.children.iter() {
+
+ let children_ids = modified_children_ids(shape, structure.get(&shape.id));
+ for child_id in children_ids.iter() {
let Some(child) = shapes.get(child_id) else {
continue;
};
@@ -93,6 +110,13 @@ pub fn propagate_modifiers(state: &State, modifiers: Vec) -> Vec
.iter()
.map(|entry| Modifier::Transform(entry.clone()))
.collect();
+
+ for (id, _) in &state.structure {
+ if id != &Uuid::nil() {
+ entries.push_back(Modifier::Reflow(*id));
+ }
+ }
+
let mut modifiers = HashMap::::new();
let mut bounds = HashMap::::new();
@@ -108,7 +132,6 @@ pub fn propagate_modifiers(state: &State, modifiers: Vec) -> Vec
while let Some(modifier) = entries.pop_front() {
match modifier {
Modifier::Transform(entry) => {
- // println!("Transform {}", entry.id);
let Some(shape) = state.shapes.get(&entry.id) else {
continue;
};
@@ -124,6 +147,7 @@ pub fn propagate_modifiers(state: &State, modifiers: Vec) -> Vec
&shape_bounds_after,
entry.transform,
&bounds,
+ &state.structure,
);
entries.append(&mut children);
@@ -149,26 +173,53 @@ pub fn propagate_modifiers(state: &State, modifiers: Vec) -> Vec
continue;
};
+ let mut reflow_parent = false;
+
match &shape.shape_type {
Type::Frame(Frame {
layout: Some(_), ..
}) => {
if !reflown.contains(&id) {
- layout_reflows.push(id);
- reflown.insert(id);
+ let mut skip_reflow = false;
+ if shape.is_layout_horizontal_fill()
+ || shape.is_layout_vertical_fill()
+ {
+ if let Some(parent_id) = shape.parent_id {
+ if !reflown.contains(&parent_id) {
+ // If this is a fill layout but the parent has not been reflown yet
+ // we wait for the next iteration for reflow
+ skip_reflow = true;
+ reflow_parent = true;
+ }
+ }
+ }
+
+ if shape.is_layout_vertical_auto()
+ || shape.is_layout_horizontal_auto()
+ {
+ reflow_parent = true;
+ }
+
+ if !skip_reflow {
+ layout_reflows.push(id);
+ }
}
}
Type::Group(Group { masked: true }) => {
- if let Some(child) = shapes.get(&shape.children[0]) {
+ let children_ids =
+ modified_children_ids(shape, state.structure.get(&shape.id));
+ if let Some(child) = shapes.get(&children_ids[0]) {
let child_bounds = bounds.find(&child);
bounds.insert(shape.id, child_bounds);
+ reflow_parent = true;
}
}
Type::Group(_) => {
if let Some(shape_bounds) =
- calculate_group_bounds(shape, shapes, &bounds)
+ calculate_group_bounds(shape, shapes, &bounds, &state.structure)
{
bounds.insert(shape.id, shape_bounds);
+ reflow_parent = true;
}
}
Type::Bool(_) => {
@@ -176,9 +227,10 @@ pub fn propagate_modifiers(state: &State, modifiers: Vec) -> Vec
// new path... impossible right now. I'm going to use for the moment the group
// calculation
if let Some(shape_bounds) =
- calculate_group_bounds(shape, shapes, &bounds)
+ calculate_group_bounds(shape, shapes, &bounds, &state.structure)
{
bounds.insert(shape.id, shape_bounds);
+ reflow_parent = true;
}
}
_ => {
@@ -187,7 +239,7 @@ pub fn propagate_modifiers(state: &State, modifiers: Vec) -> Vec
}
if let Some(parent) = shape.parent_id.and_then(|id| shapes.get(&id)) {
- if parent.has_layout() || parent.is_group_like() {
+ if reflow_parent && (parent.has_layout() || parent.is_group_like()) {
entries.push_back(Modifier::reflow(parent.id));
}
}
@@ -196,6 +248,10 @@ pub fn propagate_modifiers(state: &State, modifiers: Vec) -> Vec
}
for id in layout_reflows.iter() {
+ if reflown.contains(&id) {
+ continue;
+ }
+
let Some(shape) = state.shapes.get(&id) else {
continue;
};
@@ -205,16 +261,29 @@ pub fn propagate_modifiers(state: &State, modifiers: Vec) -> Vec
};
if let Some(Layout::FlexLayout(layout_data, flex_data)) = &frame_data.layout {
- let mut children =
- flex_layout::reflow_flex_layout(shape, layout_data, flex_data, shapes, &bounds);
+ let mut children = flex_layout::reflow_flex_layout(
+ shape,
+ layout_data,
+ flex_data,
+ shapes,
+ &mut bounds,
+ &state.structure,
+ );
entries.append(&mut children);
}
if let Some(Layout::GridLayout(layout_data, grid_data)) = &frame_data.layout {
- let mut children =
- grid_layout::reflow_grid_layout(shape, layout_data, grid_data, shapes, &bounds);
+ let mut children = grid_layout::reflow_grid_layout(
+ shape,
+ layout_data,
+ grid_data,
+ shapes,
+ &mut bounds,
+ &state.structure,
+ );
entries.append(&mut children);
}
+ reflown.insert(*id);
}
layout_reflows = Vec::new();
}
@@ -263,7 +332,8 @@ mod tests {
&bounds_before,
&bounds_after,
transform,
- &HashMap::::new(),
+ &HashMap::new(),
+ &HashMap::new(),
);
assert_eq!(result.len(), 1);
@@ -292,7 +362,7 @@ mod tests {
shapes.insert(parent_id, parent.clone());
let bounds =
- calculate_group_bounds(&parent, &shapes, HashMap::::new()).unwrap();
+ calculate_group_bounds(&parent, &shapes, &HashMap::new(), &HashMap::new()).unwrap();
assert_eq!(bounds.width(), 3.0);
assert_eq!(bounds.height(), 3.0);
diff --git a/render-wasm/src/shapes/modifiers/common.rs b/render-wasm/src/shapes/modifiers/common.rs
index 9324adb90f..8b071ee542 100644
--- a/render-wasm/src/shapes/modifiers/common.rs
+++ b/render-wasm/src/shapes/modifiers/common.rs
@@ -1,8 +1,8 @@
use std::collections::HashMap;
-use uuid::Uuid;
use crate::math::Bounds;
use crate::shapes::Shape;
+use crate::uuid::Uuid;
pub trait GetBounds {
fn find(&self, shape: &Shape) -> Bounds;
diff --git a/render-wasm/src/shapes/modifiers/flex_layout.rs b/render-wasm/src/shapes/modifiers/flex_layout.rs
index 10ec4caffa..51022a35fb 100644
--- a/render-wasm/src/shapes/modifiers/flex_layout.rs
+++ b/render-wasm/src/shapes/modifiers/flex_layout.rs
@@ -1,11 +1,12 @@
#![allow(dead_code)]
use crate::math::{self as math, Bounds, Matrix, Point, Vector, VectorExt};
use crate::shapes::{
- AlignContent, AlignItems, AlignSelf, FlexData, JustifyContent, LayoutData, LayoutItem,
- Modifier, Shape,
+ modified_children_ids, AlignContent, AlignItems, AlignSelf, FlexData, JustifyContent,
+ LayoutData, LayoutItem, Modifier, Shape, StructureEntry,
};
+use crate::uuid::Uuid;
+
use std::collections::{HashMap, VecDeque};
-use uuid::Uuid;
use super::common::GetBounds;
@@ -67,7 +68,7 @@ impl LayoutAxis {
layout_data: &LayoutData,
flex_data: &FlexData,
) -> Self {
- if layout_data.is_row() {
+ if flex_data.is_row() {
Self {
main_size: layout_bounds.width(),
across_size: layout_bounds.height(),
@@ -77,8 +78,8 @@ impl LayoutAxis {
padding_main_end: layout_data.padding_right,
padding_across_start: layout_data.padding_top,
padding_across_end: layout_data.padding_bottom,
- gap_main: flex_data.column_gap,
- gap_across: flex_data.row_gap,
+ gap_main: layout_data.column_gap,
+ gap_across: layout_data.row_gap,
is_auto_main: shape.is_layout_horizontal_auto(),
is_auto_across: shape.is_layout_vertical_auto(),
}
@@ -92,8 +93,8 @@ impl LayoutAxis {
padding_main_end: layout_data.padding_bottom,
padding_across_start: layout_data.padding_left,
padding_across_end: layout_data.padding_right,
- gap_main: flex_data.row_gap,
- gap_across: flex_data.column_gap,
+ gap_main: layout_data.row_gap,
+ gap_across: layout_data.column_gap,
is_auto_main: shape.is_layout_vertical_auto(),
is_auto_across: shape.is_layout_horizontal_auto(),
}
@@ -116,15 +117,15 @@ struct ChildAxis {
max_across_size: f32,
is_fill_main: bool,
is_fill_across: bool,
- is_absolute: bool,
z_index: i32,
+ bounds: Bounds,
}
impl ChildAxis {
- fn new(child: &Shape, child_bounds: &Bounds, layout_data: &LayoutData) -> Self {
+ fn new(child: &Shape, child_bounds: &Bounds, flex_data: &FlexData) -> Self {
let id = child.id;
let layout_item = child.layout_item;
- let mut result = if layout_data.is_row() {
+ let mut result = if flex_data.is_row() {
Self {
id,
main_size: child_bounds.width(),
@@ -139,8 +140,8 @@ impl ChildAxis {
max_across_size: layout_item.and_then(|i| i.max_h).unwrap_or(MAX_SIZE),
is_fill_main: child.is_layout_horizontal_fill(),
is_fill_across: child.is_layout_vertical_fill(),
- is_absolute: layout_item.map(|i| i.is_absolute).unwrap_or(false),
z_index: layout_item.map(|i| i.z_index).unwrap_or(0),
+ bounds: child_bounds.clone(),
}
} else {
Self {
@@ -157,8 +158,8 @@ impl ChildAxis {
max_main_size: layout_item.and_then(|i| i.max_h).unwrap_or(MAX_SIZE),
is_fill_main: child.is_layout_vertical_fill(),
is_fill_across: child.is_layout_horizontal_fill(),
- is_absolute: layout_item.map(|i| i.is_absolute).unwrap_or(false),
z_index: layout_item.map(|i| i.z_index).unwrap_or(0),
+ bounds: child_bounds.clone(),
}
};
@@ -174,18 +175,19 @@ impl ChildAxis {
fn initialize_tracks(
shape: &Shape,
+ layout_bounds: &Bounds,
layout_axis: &LayoutAxis,
- layout_data: &LayoutData,
flex_data: &FlexData,
shapes: &HashMap,
bounds: &HashMap,
+ structure: &HashMap>,
) -> Vec {
let mut tracks = Vec::::new();
let mut current_track = TrackData::default();
- let mut children = shape.children.clone();
+ let mut children = modified_children_ids(shape, structure.get(&shape.id));
let mut first = true;
- if !layout_data.is_reverse() {
+ if !flex_data.is_reverse() {
children.reverse();
}
@@ -194,19 +196,32 @@ fn initialize_tracks(
continue;
};
- let child_bounds = bounds.find(child);
- let child_axis = ChildAxis::new(child, &child_bounds, layout_data);
+ if child.is_absolute() || child.hidden() {
+ continue;
+ }
- let child_main_size = if child_axis.is_fill_main {
- child_axis.min_main_size
- } else {
- child_axis.main_size
- };
- let child_across_size = if child_axis.is_fill_across {
- child_axis.min_across_size
- } else {
- child_axis.across_size
- };
+ let default_bounds = bounds.find(child);
+ let child_bounds = layout_bounds
+ .box_bounds(&default_bounds)
+ .unwrap_or(default_bounds);
+
+ let child_axis = ChildAxis::new(child, &child_bounds, flex_data);
+
+ let child_main_size = child_axis.margin_main_start
+ + child_axis.margin_main_end
+ + if child_axis.is_fill_main {
+ child_axis.min_main_size
+ } else {
+ child_axis.main_size
+ };
+
+ let child_across_size = child_axis.margin_across_start
+ + child_axis.margin_across_end
+ + if child_axis.is_fill_across {
+ child_axis.min_across_size
+ } else {
+ child_axis.across_size
+ };
let child_max_across_size = if child_axis.is_fill_across {
child_axis.max_across_size
@@ -271,6 +286,7 @@ fn distribute_fill_main_space(layout_axis: &LayoutAxis, tracks: &mut Vec {
- let total_across_size_gap: f32 =
- total_across_size + (tracks.len() - 1) as f32 * layout_axis.gap_across;
+ let total_across_size_gap: f32 =
+ total_across_size + (tracks.len() - 1) as f32 * layout_axis.gap_across;
- let delta =
- layout_axis.across_size - total_across_size_gap - layout_axis.padding_across_end;
- let mut next_anchor = layout_bounds.nw + layout_axis.across_v * delta;
+ let (real_margin, real_gap) = match align_content {
+ AlignContent::End => (
+ layout_axis.across_size - total_across_size_gap - layout_axis.padding_across_end,
+ layout_axis.gap_across,
+ ),
- for track in tracks.iter_mut() {
- track.anchor = next_anchor;
- next_anchor = next_anchor
- + layout_axis.across_v * (track.across_size + layout_axis.gap_across);
- }
- }
+ AlignContent::Center => (
+ (layout_axis.across_size - total_across_size_gap) / 2.0,
+ layout_axis.gap_across,
+ ),
- AlignContent::Center => {
- let total_across_size_gap: f32 =
- total_across_size + (tracks.len() - 1) as f32 * layout_axis.gap_across;
- let center_margin = (layout_axis.across_size - total_across_size_gap) / 2.0;
-
- let mut next_anchor = layout_bounds.nw + layout_axis.across_v * center_margin;
-
- for track in tracks.iter_mut() {
- track.anchor = next_anchor;
- next_anchor = next_anchor
- + layout_axis.across_v * (track.across_size + layout_axis.gap_across);
- }
- }
-
- AlignContent::SpaceBetween => {
- let mut next_anchor =
- layout_bounds.nw + layout_axis.across_v * layout_axis.padding_across_start;
-
- let effective_gap = f32::max(
+ AlignContent::SpaceBetween => (
+ layout_axis.padding_across_start,
+ f32::max(
layout_axis.gap_across,
(layout_axis.across_space() - total_across_size) / (tracks.len() - 1) as f32,
- );
-
- for track in tracks.iter_mut() {
- track.anchor = next_anchor;
- next_anchor =
- next_anchor + layout_axis.across_v * (track.across_size + effective_gap);
- }
- }
+ ),
+ ),
AlignContent::SpaceAround => {
let effective_gap =
(layout_axis.across_space() - total_across_size) / tracks.len() as f32;
-
- let mut next_anchor = layout_bounds.nw
- + layout_axis.across_v * (layout_axis.padding_across_start + effective_gap / 2.0);
-
- for track in tracks.iter_mut() {
- track.anchor = next_anchor;
- next_anchor =
- next_anchor + layout_axis.across_v * (track.across_size + effective_gap);
- }
+ (effective_gap / 2.0, effective_gap)
}
AlignContent::SpaceEvenly => {
let effective_gap =
(layout_axis.across_space() - total_across_size) / (tracks.len() + 1) as f32;
-
- let mut next_anchor = layout_bounds.nw
- + layout_axis.across_v * (layout_axis.padding_across_start + effective_gap);
-
- for track in tracks.iter_mut() {
- track.anchor = next_anchor;
- next_anchor =
- next_anchor + layout_axis.across_v * (track.across_size + effective_gap);
- }
+ (
+ layout_axis.padding_across_start + effective_gap,
+ effective_gap,
+ )
}
- _ => {
- let mut next_anchor =
- layout_bounds.nw + layout_axis.across_v * layout_axis.padding_across_start;
+ _ => (layout_axis.padding_across_start, layout_axis.gap_across),
+ };
- for track in tracks.iter_mut() {
- track.anchor = next_anchor;
- next_anchor = next_anchor
- + layout_axis.across_v * (track.across_size + layout_axis.gap_across);
- }
- }
+ let mut next_anchor = layout_bounds.nw + layout_axis.across_v * real_margin;
+
+ for track in tracks.iter_mut() {
+ track.anchor = next_anchor;
+ next_anchor = next_anchor + layout_axis.across_v * real_gap;
}
}
@@ -444,9 +422,18 @@ fn calculate_track_data(
layout_bounds: &Bounds,
shapes: &HashMap,
bounds: &HashMap,
+ structure: &HashMap>,
) -> Vec {
let layout_axis = LayoutAxis::new(shape, layout_bounds, layout_data, flex_data);
- let mut tracks = initialize_tracks(shape, &layout_axis, layout_data, flex_data, shapes, bounds);
+ let mut tracks = initialize_tracks(
+ shape,
+ layout_bounds,
+ &layout_axis,
+ flex_data,
+ shapes,
+ bounds,
+ structure,
+ );
if !layout_axis.is_auto_main {
distribute_fill_main_space(&layout_axis, &mut tracks);
@@ -510,24 +497,26 @@ fn next_anchor(
prev_anchor: Point,
total_shapes_size: f32,
) -> Point {
- let delta = match layout_data.justify_content {
- JustifyContent::SpaceBetween => {
- let effective_gap =
- (layout_axis.main_space() - total_shapes_size) / (track.shapes.len() - 1) as f32;
- child_axis.main_size + f32::max(layout_axis.gap_main, effective_gap)
- }
- JustifyContent::SpaceAround => {
- let effective_gap =
- (layout_axis.main_space() - total_shapes_size) / (track.shapes.len()) as f32;
- child_axis.main_size + f32::max(layout_axis.gap_main, effective_gap)
- }
- JustifyContent::SpaceEvenly => {
- let effective_gap =
- (layout_axis.main_space() - total_shapes_size) / (track.shapes.len() + 1) as f32;
- child_axis.main_size + f32::max(layout_axis.gap_main, effective_gap)
- }
- _ => child_axis.main_size + layout_axis.gap_main,
- };
+ let delta = child_axis.margin_main_start
+ + child_axis.margin_main_end
+ + match layout_data.justify_content {
+ JustifyContent::SpaceBetween => {
+ let effective_gap = (layout_axis.main_space() - total_shapes_size)
+ / (track.shapes.len() - 1) as f32;
+ child_axis.main_size + f32::max(layout_axis.gap_main, effective_gap)
+ }
+ JustifyContent::SpaceAround => {
+ let effective_gap =
+ (layout_axis.main_space() - total_shapes_size) / (track.shapes.len()) as f32;
+ child_axis.main_size + f32::max(layout_axis.gap_main, effective_gap)
+ }
+ JustifyContent::SpaceEvenly => {
+ let effective_gap = (layout_axis.main_space() - total_shapes_size)
+ / (track.shapes.len() + 1) as f32;
+ child_axis.main_size + f32::max(layout_axis.gap_main, effective_gap)
+ }
+ _ => child_axis.main_size + layout_axis.gap_main,
+ };
prev_anchor + layout_axis.main_v * delta
}
@@ -539,22 +528,23 @@ fn child_position(
child_axis: &ChildAxis,
track: &TrackData,
) -> Point {
- let delta = match child.layout_item {
- Some(LayoutItem {
- align_self: Some(align_self),
- ..
- }) => match align_self {
- AlignSelf::Center => (track.across_size - child_axis.across_size) / 2.0,
- AlignSelf::End => track.across_size - child_axis.across_size,
- _ => 0.0,
- },
- _ => match layout_data.align_items {
- AlignItems::Center => (track.across_size - child_axis.across_size) / 2.0,
- AlignItems::End => track.across_size - child_axis.across_size,
- _ => 0.0,
- },
- };
- shape_anchor + layout_axis.across_v * delta
+ let delta = child_axis.margin_across_start
+ + match child.layout_item {
+ Some(LayoutItem {
+ align_self: Some(align_self),
+ ..
+ }) => match align_self {
+ AlignSelf::Center => (track.across_size - child_axis.across_size) / 2.0,
+ AlignSelf::End => track.across_size - child_axis.across_size,
+ _ => 0.0,
+ },
+ _ => match layout_data.align_items {
+ AlignItems::Center => (track.across_size - child_axis.across_size) / 2.0,
+ AlignItems::End => track.across_size - child_axis.across_size,
+ _ => 0.0,
+ },
+ };
+ shape_anchor + layout_axis.main_v * child_axis.margin_main_start + layout_axis.across_v * delta
}
pub fn reflow_flex_layout(
@@ -562,12 +552,21 @@ pub fn reflow_flex_layout(
layout_data: &LayoutData,
flex_data: &FlexData,
shapes: &HashMap,
- bounds: &HashMap,
+ bounds: &mut HashMap,
+ structure: &HashMap>,
) -> VecDeque {
let mut result = VecDeque::new();
let layout_bounds = &bounds.find(&shape);
let layout_axis = LayoutAxis::new(shape, layout_bounds, layout_data, flex_data);
- let tracks = calculate_track_data(shape, layout_data, flex_data, layout_bounds, shapes, bounds);
+ let tracks = calculate_track_data(
+ shape,
+ layout_data,
+ flex_data,
+ layout_bounds,
+ shapes,
+ bounds,
+ structure,
+ );
for track in tracks.iter() {
let total_shapes_size = track.shapes.iter().map(|s| s.main_size).sum::();
@@ -587,10 +586,10 @@ pub fn reflow_flex_layout(
child_axis,
track,
);
- let child_bounds = bounds.find(child);
+ let child_bounds = &child_axis.bounds;
let delta_v = Vector::new_points(&child_bounds.nw, &position);
- let (new_width, new_height) = if layout_data.is_row() {
+ let (new_width, new_height) = if flex_data.is_row() {
(child_axis.main_size, child_axis.across_size)
} else {
(child_axis.across_size, child_axis.main_size)
@@ -633,8 +632,8 @@ pub fn reflow_flex_layout(
let auto_across_size = if layout_axis.is_auto_across {
tracks.iter().map(|track| track.across_size).sum::()
+ (tracks.len() - 1) as f32 * layout_axis.gap_across
- + layout_axis.padding_main_start
- + layout_axis.padding_main_end
+ + layout_axis.padding_across_start
+ + layout_axis.padding_across_end
} else {
0.0
};
@@ -648,13 +647,13 @@ pub fn reflow_flex_layout(
})
.reduce(f32::max)
.unwrap_or(0.01)
- + layout_axis.padding_across_start
- + layout_axis.padding_across_end
+ + layout_axis.padding_main_start
+ + layout_axis.padding_main_end
} else {
0.0
};
- let (scale_width, scale_height) = if layout_data.is_row() {
+ let (scale_width, scale_height) = if flex_data.is_row() {
(
if layout_axis.is_auto_main {
auto_main_size / width
@@ -695,7 +694,9 @@ pub fn reflow_flex_layout(
scale.pre_translate(-origin);
scale.pre_concat(&parent_transform_inv);
+ let layout_bounds_after = layout_bounds.transform(&scale);
result.push_back(Modifier::parent(shape.id, scale));
+ bounds.insert(shape.id, layout_bounds_after);
}
result
}
diff --git a/render-wasm/src/shapes/modifiers/grid_layout.rs b/render-wasm/src/shapes/modifiers/grid_layout.rs
index 26714cbb04..bbac9efa2d 100644
--- a/render-wasm/src/shapes/modifiers/grid_layout.rs
+++ b/render-wasm/src/shapes/modifiers/grid_layout.rs
@@ -1,15 +1,755 @@
-use crate::math::Bounds;
-use crate::shapes::{GridData, LayoutData, Modifier, Shape};
+use crate::math::{self as math, intersect_rays, Bounds, Matrix, Point, Ray, Vector, VectorExt};
+use crate::shapes::{
+ modified_children_ids, AlignContent, AlignItems, AlignSelf, GridCell, GridData, GridTrack,
+ GridTrackType, JustifyContent, JustifyItems, JustifySelf, LayoutData, LayoutItem, Modifier,
+ Shape, StructureEntry,
+};
+use crate::uuid::Uuid;
+use indexmap::IndexSet;
use std::collections::{HashMap, VecDeque};
-use uuid::Uuid;
-pub fn reflow_grid_layout(
- _shape: &Shape,
- _layout_data: &LayoutData,
- _grid_data: &GridData,
- _shapes: &HashMap,
- _bounds: &HashMap,
-) -> VecDeque {
- // TODO
- VecDeque::new()
+use super::common::GetBounds;
+
+const MIN_SIZE: f32 = 0.01;
+const MAX_SIZE: f32 = f32::INFINITY;
+
+#[derive(Debug)]
+struct CellData<'a> {
+ shape: &'a Shape,
+ anchor: Point,
+ width: f32,
+ height: f32,
+ align_self: Option,
+ justify_self: Option,
+}
+
+#[derive(Debug)]
+struct TrackData {
+ track_type: GridTrackType,
+ value: f32,
+ size: f32,
+ max_size: f32,
+ anchor_start: Point,
+ anchor_end: Point,
+}
+
+fn calculate_tracks(
+ is_column: bool,
+ shape: &Shape,
+ layout_data: &LayoutData,
+ grid_data: &GridData,
+ layout_bounds: &Bounds,
+ cells: &Vec,
+ shapes: &HashMap,
+ bounds: &HashMap,
+) -> Vec {
+ let layout_size = if is_column {
+ layout_bounds.width() - layout_data.padding_left - layout_data.padding_right
+ } else {
+ layout_bounds.height() - layout_data.padding_top - layout_data.padding_bottom
+ };
+
+ let grid_tracks = if is_column {
+ &grid_data.columns
+ } else {
+ &grid_data.rows
+ };
+
+ let mut tracks = init_tracks(grid_tracks, layout_size);
+ set_auto_base_size(is_column, &mut tracks, cells, shapes, bounds);
+ set_auto_multi_span(is_column, &mut tracks, cells, shapes, bounds);
+ set_flex_multi_span(is_column, &mut tracks, cells, shapes, bounds);
+ set_fr_value(is_column, shape, layout_data, &mut tracks, layout_size);
+ stretch_tracks(is_column, shape, layout_data, &mut tracks, layout_size);
+ assign_anchors(is_column, layout_data, &layout_bounds, &mut tracks);
+ return tracks;
+}
+
+fn init_tracks(track: &Vec, size: f32) -> Vec {
+ track
+ .iter()
+ .map(|t| {
+ let (size, max_size) = match t.track_type {
+ GridTrackType::Fixed => (t.value, t.value),
+ GridTrackType::Percent => (size * t.value / 100.0, size * t.value / 100.0),
+ _ => (MIN_SIZE, MAX_SIZE),
+ };
+ TrackData {
+ track_type: t.track_type,
+ value: t.value,
+ size,
+ max_size,
+ anchor_start: Point::default(),
+ anchor_end: Point::default(),
+ }
+ })
+ .collect()
+}
+
+fn min_size(column: bool, shape: &Shape, bounds: &HashMap) -> f32 {
+ if column && shape.is_layout_horizontal_fill() {
+ shape.layout_item.and_then(|i| i.min_w).unwrap_or(MIN_SIZE)
+ } else if !column && shape.is_layout_vertical_fill() {
+ shape.layout_item.and_then(|i| i.min_h).unwrap_or(MIN_SIZE)
+ } else if column {
+ let bounds = bounds.find(shape);
+ bounds.width()
+ } else {
+ let bounds = bounds.find(shape);
+ bounds.height()
+ }
+}
+
+// Go through cells to adjust auto sizes for span=1. Base is the max of its children
+fn set_auto_base_size(
+ column: bool,
+ tracks: &mut Vec,
+ cells: &Vec,
+ shapes: &HashMap,
+ bounds: &HashMap,
+) {
+ for cell in cells {
+ let (prop, prop_span) = if column {
+ (cell.column, cell.column_span)
+ } else {
+ (cell.row, cell.row_span)
+ };
+
+ if prop_span != 1 || (prop as usize) >= tracks.len() {
+ continue;
+ }
+
+ let track = &mut tracks[(prop - 1) as usize];
+
+ // We change the size for auto+flex tracks
+ if track.track_type != GridTrackType::Auto && track.track_type != GridTrackType::Flex {
+ continue;
+ }
+
+ let Some(shape) = cell.shape.and_then(|id| shapes.get(&id)) else {
+ continue;
+ };
+
+ let min_size = min_size(column, shape, bounds);
+ track.size = f32::max(track.size, min_size);
+ }
+}
+
+fn track_index(is_column: bool, c: &GridCell) -> (usize, usize) {
+ if is_column {
+ (
+ (c.column - 1) as usize,
+ (c.column + c.column_span - 1) as usize,
+ )
+ } else {
+ ((c.row - 1) as usize, (c.row + c.row_span - 1) as usize)
+ }
+}
+
+fn has_flex(is_column: bool, cell: &GridCell, tracks: &mut Vec) -> bool {
+ let (start, end) = track_index(is_column, cell);
+ (start..end).any(|i| tracks[i].track_type == GridTrackType::Flex)
+}
+
+// Adjust multi-spaned cells with no flex columns
+fn set_auto_multi_span(
+ column: bool,
+ tracks: &mut Vec,
+ cells: &Vec,
+ shapes: &HashMap,
+ bounds: &HashMap,
+) {
+ // Remove groups with flex (will be set in flex_multi_span)
+ let mut selected_cells: Vec<&GridCell> = cells
+ .iter()
+ .filter(|c| {
+ if column {
+ c.column_span > 1
+ } else {
+ c.row_span > 1
+ }
+ })
+ .filter(|c| !has_flex(column, c, tracks))
+ .collect();
+
+ // Sort descendant order of prop-span
+ selected_cells.sort_by(|a, b| {
+ if column {
+ b.column_span.cmp(&a.row_span)
+ } else {
+ b.row_span.cmp(&a.row_span)
+ }
+ });
+
+ for cell in selected_cells {
+ let Some(child) = cell.shape.and_then(|id| shapes.get(&id)) else {
+ continue;
+ };
+
+ // Retrieve the value we need to distribute (fixed cell size minus gaps)
+ let mut dist = min_size(column, child, bounds);
+ let mut num_auto = 0;
+
+ let (start, end) = track_index(column, cell);
+
+ // Distribute the size between the tracks that already have a set value
+ for i in start..end {
+ dist = dist - tracks[i].size;
+
+ if tracks[i].track_type == GridTrackType::Auto {
+ num_auto = num_auto + 1;
+ }
+ }
+
+ // If we still have more space we distribute equally between all auto tracks
+ while dist > MIN_SIZE && num_auto > 0 {
+ let rest = dist / num_auto as f32;
+
+ // Distribute the space between auto tracks
+ for i in start..end {
+ if tracks[i].track_type == GridTrackType::Auto {
+ // dist = dist - track[i].size;
+ let new_size = if tracks[i].size + rest < tracks[i].max_size {
+ tracks[i].size + rest
+ } else {
+ num_auto = num_auto - 1;
+ tracks[i].max_size
+ };
+
+ let aloc = new_size - tracks[i].size;
+ dist = dist - aloc;
+ tracks[i].size = tracks[i].size + aloc;
+ }
+ }
+ }
+ }
+}
+
+// Adjust multi-spaned cells with flex columns
+fn set_flex_multi_span(
+ column: bool,
+ tracks: &mut Vec,
+ cells: &Vec,
+ shapes: &HashMap,
+ bounds: &HashMap,
+) {
+ // Remove groups without flex
+ let mut selected_cells: Vec<&GridCell> = cells
+ .iter()
+ .filter(|c| {
+ if column {
+ c.column_span > 1
+ } else {
+ c.row_span > 1
+ }
+ })
+ .filter(|c| has_flex(column, c, tracks))
+ .collect();
+
+ // Sort descendant order of prop-span
+ selected_cells.sort_by(|a, b| {
+ if column {
+ b.column_span.cmp(&a.row_span)
+ } else {
+ b.row_span.cmp(&a.row_span)
+ }
+ });
+
+ // Retrieve the value that we need to distribute and the number of frs
+ for cell in selected_cells {
+ let Some(child) = cell.shape.and_then(|id| shapes.get(&id)) else {
+ continue;
+ };
+
+ // Retrieve the value we need to distribute (fixed cell size minus gaps)
+ let mut dist = min_size(column, child, bounds);
+ let mut num_flex = 0.0;
+ let mut num_auto = 0;
+
+ let (start, end) = track_index(column, cell);
+
+ // Distribute the size between the tracks that already have a set value
+ for i in start..end {
+ dist = dist - tracks[i].size;
+
+ match tracks[i].track_type {
+ GridTrackType::Flex => {
+ num_flex = num_flex + tracks[i].value;
+ num_auto = num_auto + 1;
+ }
+ GridTrackType::Auto => {
+ num_auto = num_auto + 1;
+ }
+ _ => {}
+ }
+ }
+
+ if dist <= MIN_SIZE {
+ // No space available to distribute
+ continue;
+ }
+
+ let rest = dist / num_flex as f32;
+
+ // Distribute the space between flex tracks in proportion to the division
+ for i in start..end {
+ if tracks[i].track_type == GridTrackType::Flex {
+ let new_size = f32::min(tracks[i].size + rest, tracks[i].max_size);
+ let aloc = new_size - tracks[i].size;
+ dist = dist - aloc;
+ tracks[i].size = tracks[i].size + aloc;
+ }
+ }
+
+ // Distribute the space between auto tracks if any
+ while dist > MIN_SIZE && num_auto > 0 {
+ let rest = dist / num_auto as f32;
+
+ for i in start..end {
+ if tracks[i].track_type == GridTrackType::Auto
+ || tracks[i].track_type == GridTrackType::Flex
+ {
+ let new_size = if tracks[i].size + rest < tracks[i].max_size {
+ tracks[i].size + rest
+ } else {
+ num_auto = num_auto - 1;
+ tracks[i].max_size
+ };
+
+ let aloc = new_size - tracks[i].size;
+ dist = dist - aloc;
+ tracks[i].size = tracks[i].size + aloc;
+ }
+ }
+ }
+ }
+}
+
+// Calculate the `fr` unit and adjust the size
+fn set_fr_value(
+ column: bool,
+ shape: &Shape,
+ layout_data: &LayoutData,
+ tracks: &mut Vec,
+ layout_size: f32,
+) {
+ let tot_gap: f32 = if column {
+ layout_data.column_gap * (tracks.len() - 1) as f32
+ } else {
+ layout_data.row_gap * (tracks.len() - 1) as f32
+ };
+
+ // Total size already used
+ let tot_size: f32 = tracks
+ .iter()
+ .filter(|t| t.track_type != GridTrackType::Flex)
+ .map(|t| t.size)
+ .sum::()
+ + tot_gap;
+
+ let tot_frs: f32 = tracks
+ .iter()
+ .filter(|t| t.track_type == GridTrackType::Flex)
+ .map(|t| t.value)
+ .sum();
+
+ let cur_fr_size = tracks
+ .iter()
+ .filter(|t| t.track_type == GridTrackType::Flex)
+ .map(|t| t.size / t.value)
+ .reduce(f32::max)
+ .unwrap_or(0.0);
+
+ // Divide the space between FRS
+ let fr = if column && shape.is_layout_horizontal_auto()
+ || !column && shape.is_layout_vertical_auto()
+ {
+ cur_fr_size
+ } else {
+ f32::max(cur_fr_size, (layout_size - tot_size) / tot_frs)
+ };
+
+ // Assign the space to the FRS
+ tracks
+ .iter_mut()
+ .filter(|t| t.track_type == GridTrackType::Flex)
+ .for_each(|t| t.size = f32::min(fr * t.value, t.max_size));
+}
+
+fn stretch_tracks(
+ column: bool,
+ shape: &Shape,
+ layout_data: &LayoutData,
+ tracks: &mut Vec,
+ layout_size: f32,
+) {
+ if (column
+ && (layout_data.justify_content != JustifyContent::Stretch
+ || shape.is_layout_horizontal_auto()))
+ || (!column
+ && (layout_data.align_content != AlignContent::Stretch
+ || shape.is_layout_vertical_auto()))
+ {
+ return;
+ }
+
+ let tot_gap: f32 = if column {
+ layout_data.column_gap * (tracks.len() - 1) as f32
+ } else {
+ layout_data.row_gap * (tracks.len() - 1) as f32
+ };
+
+ // Total size already used
+ let tot_size: f32 = tracks.iter().map(|t| t.size).sum::() + tot_gap;
+
+ let auto_tracks = tracks
+ .iter_mut()
+ .filter(|t| t.track_type == GridTrackType::Auto)
+ .count() as f32;
+
+ let free_space = layout_size - tot_size;
+ let add_size = free_space / auto_tracks;
+
+ // Assign the space to the FRS
+ tracks
+ .iter_mut()
+ .filter(|t| t.track_type == GridTrackType::Auto)
+ .for_each(|t| t.size = f32::min(t.max_size, t.size + add_size));
+}
+
+fn justify_to_align(justify: JustifyContent) -> AlignContent {
+ match justify {
+ JustifyContent::Start => AlignContent::Start,
+ JustifyContent::End => AlignContent::End,
+ JustifyContent::Center => AlignContent::Center,
+ JustifyContent::SpaceBetween => AlignContent::SpaceBetween,
+ JustifyContent::SpaceAround => AlignContent::SpaceAround,
+ JustifyContent::SpaceEvenly => AlignContent::SpaceEvenly,
+ JustifyContent::Stretch => AlignContent::Stretch,
+ }
+}
+
+fn assign_anchors(
+ column: bool,
+ layout_data: &LayoutData,
+ layout_bounds: &Bounds,
+ tracks: &mut Vec,
+) {
+ let tot_track_length = tracks.iter().map(|t| t.size).sum::();
+
+ let mut cursor = layout_bounds.nw;
+
+ let (v, gap, size, padding_start, padding_end, align) = if column {
+ (
+ layout_bounds.hv(1.0),
+ layout_data.column_gap,
+ layout_bounds.width(),
+ layout_data.padding_left,
+ layout_data.padding_right,
+ justify_to_align(layout_data.justify_content),
+ )
+ } else {
+ (
+ layout_bounds.vv(1.0),
+ layout_data.row_gap,
+ layout_bounds.height(),
+ layout_data.padding_top,
+ layout_data.padding_bottom,
+ layout_data.align_content,
+ )
+ };
+
+ let tot_gap = gap * (tracks.len() - 1) as f32;
+ let tot_size = tot_track_length + tot_gap;
+ let padding = padding_start + padding_end;
+ let pad_size = size - padding;
+
+ let (real_margin, real_gap) = match align {
+ AlignContent::End => (size - padding_end - tot_size, gap),
+ AlignContent::Center => ((size - tot_size) / 2.0, gap),
+ AlignContent::SpaceAround => {
+ let effective_gap = (pad_size - tot_track_length) / tracks.len() as f32;
+ (padding_start + effective_gap / 2.0, effective_gap)
+ }
+ AlignContent::SpaceBetween => (
+ padding_start,
+ f32::max(
+ gap,
+ (pad_size - tot_track_length) / (tracks.len() - 1) as f32,
+ ),
+ ),
+ _ => (padding_start + 0.0, gap),
+ };
+
+ cursor = cursor + (v * real_margin);
+
+ for track in tracks {
+ track.anchor_start = cursor;
+ track.anchor_end = cursor + (v * track.size);
+ cursor = track.anchor_end + (v * real_gap);
+ }
+}
+
+fn cell_bounds(
+ layout_bounds: &Bounds,
+ column_start: Point,
+ column_end: Point,
+ row_start: Point,
+ row_end: Point,
+) -> Option {
+ let hv = layout_bounds.hv(1.0);
+ let vv = layout_bounds.vv(1.0);
+ let nw = intersect_rays(&Ray::new(column_start, vv), &Ray::new(row_start, hv))?;
+ let ne = intersect_rays(&Ray::new(column_end, vv), &Ray::new(row_start, hv))?;
+ let sw = intersect_rays(&Ray::new(column_start, vv), &Ray::new(row_end, hv))?;
+ let se = intersect_rays(&Ray::new(column_end, vv), &Ray::new(row_end, hv))?;
+ Some(Bounds::new(nw, ne, se, sw))
+}
+
+fn create_cell_data<'a>(
+ layout_bounds: &Bounds,
+ children: &IndexSet,
+ shapes: &'a HashMap,
+ cells: &Vec,
+ column_tracks: &Vec,
+ row_tracks: &Vec,
+) -> Vec> {
+ let mut result = Vec::>::new();
+
+ for cell in cells {
+ let Some(shape_id) = cell.shape else {
+ continue;
+ };
+
+ if !children.contains(&shape_id) {
+ continue;
+ }
+
+ let Some(shape) = shapes.get(&shape_id) else {
+ continue;
+ };
+
+ let column_start = (cell.column - 1) as usize;
+ let column_end = (cell.column + cell.column_span - 2) as usize;
+ let row_start = (cell.row - 1) as usize;
+ let row_end = (cell.row + cell.row_span - 2) as usize;
+
+ if column_start >= column_tracks.len()
+ || column_end >= column_tracks.len()
+ || row_start >= row_tracks.len()
+ || row_end >= row_tracks.len()
+ {
+ continue;
+ }
+
+ let Some(cell_bounds) = cell_bounds(
+ layout_bounds,
+ column_tracks[column_start].anchor_start,
+ column_tracks[column_end].anchor_end,
+ row_tracks[row_start].anchor_start,
+ row_tracks[row_end].anchor_end,
+ ) else {
+ continue;
+ };
+
+ result.push(CellData {
+ shape,
+ anchor: cell_bounds.nw,
+ width: cell_bounds.width(),
+ height: cell_bounds.height(),
+ align_self: cell.align_self,
+ justify_self: cell.justify_self,
+ });
+ }
+
+ result
+}
+
+fn child_position(
+ child: &Shape,
+ layout_bounds: &Bounds,
+ layout_data: &LayoutData,
+ child_bounds: &Bounds,
+ layout_item: Option,
+ cell: &CellData,
+) -> Point {
+ let hv = layout_bounds.hv(1.0);
+ let vv = layout_bounds.vv(1.0);
+
+ let margin_left = layout_item.map(|i| i.margin_left).unwrap_or(0.0);
+ let margin_top = layout_item.map(|i| i.margin_top).unwrap_or(0.0);
+ let margin_right = layout_item.map(|i| i.margin_right).unwrap_or(0.0);
+ let margin_bottom = layout_item.map(|i| i.margin_bottom).unwrap_or(0.0);
+
+ let vpos = match (cell.align_self, layout_data.align_items) {
+ (Some(AlignSelf::Start), _) => margin_top,
+ (Some(AlignSelf::Center), _) => (cell.height - child_bounds.height()) / 2.0,
+ (Some(AlignSelf::End), _) => margin_bottom + cell.height - child_bounds.height(),
+ (_, AlignItems::Center) => (cell.height - child_bounds.height()) / 2.0,
+ (_, AlignItems::End) => margin_bottom + cell.height - child_bounds.height(),
+ _ => margin_top,
+ };
+
+ let vpos = if child.is_layout_vertical_fill() {
+ margin_top
+ } else {
+ vpos
+ };
+
+ let hpos = match (cell.justify_self, layout_data.justify_items) {
+ (Some(JustifySelf::Start), _) => margin_left,
+ (Some(JustifySelf::Center), _) => (cell.width - child_bounds.width()) / 2.0,
+ (Some(JustifySelf::End), _) => margin_right + cell.width - child_bounds.width(),
+ (_, JustifyItems::Center) => (cell.width - child_bounds.width()) / 2.0,
+ (_, JustifyItems::End) => margin_right + cell.width - child_bounds.width(),
+ _ => margin_left,
+ };
+
+ let hpos = if child.is_layout_horizontal_fill() {
+ margin_left
+ } else {
+ hpos
+ };
+
+ cell.anchor + vv * vpos + hv * hpos
+}
+
+pub fn reflow_grid_layout<'a>(
+ shape: &Shape,
+ layout_data: &LayoutData,
+ grid_data: &GridData,
+ shapes: &'a HashMap,
+ bounds: &mut HashMap,
+ structure: &HashMap>,
+) -> VecDeque {
+ let mut result = VecDeque::new();
+ let layout_bounds = bounds.find(shape);
+ let children = modified_children_ids(shape, structure.get(&shape.id));
+
+ let column_tracks = calculate_tracks(
+ true,
+ shape,
+ layout_data,
+ grid_data,
+ &layout_bounds,
+ &grid_data.cells,
+ shapes,
+ bounds,
+ );
+
+ let row_tracks = calculate_tracks(
+ false,
+ shape,
+ layout_data,
+ grid_data,
+ &layout_bounds,
+ &grid_data.cells,
+ shapes,
+ bounds,
+ );
+
+ let cells = create_cell_data(
+ &layout_bounds,
+ &children,
+ shapes,
+ &grid_data.cells,
+ &column_tracks,
+ &row_tracks,
+ );
+
+ for cell in cells.iter() {
+ let child = cell.shape;
+ let child_bounds = bounds.find(child);
+
+ let mut new_width = child_bounds.width();
+ if child.is_layout_horizontal_fill() {
+ let margin_left = child.layout_item.map(|i| i.margin_left).unwrap_or(0.0);
+ new_width = cell.width - margin_left;
+ let min_width = child.layout_item.and_then(|i| i.min_w).unwrap_or(MIN_SIZE);
+ let max_width = child.layout_item.and_then(|i| i.max_w).unwrap_or(MAX_SIZE);
+ new_width = new_width.clamp(min_width, max_width);
+ }
+
+ let mut new_height = child_bounds.height();
+ if child.is_layout_vertical_fill() {
+ let margin_top = child.layout_item.map(|i| i.margin_top).unwrap_or(0.0);
+ new_height = cell.height - margin_top;
+ let min_height = child.layout_item.and_then(|i| i.min_h).unwrap_or(MIN_SIZE);
+ let max_height = child.layout_item.and_then(|i| i.max_h).unwrap_or(MAX_SIZE);
+ new_height = new_height.clamp(min_height, max_height);
+ }
+
+ let mut transform = Matrix::default();
+
+ if (new_width - child_bounds.width()).abs() > MIN_SIZE
+ || (new_height - child_bounds.height()).abs() > MIN_SIZE
+ {
+ transform.post_concat(&math::resize_matrix(
+ &layout_bounds,
+ &child_bounds,
+ new_width,
+ new_height,
+ ));
+ }
+
+ let position = child_position(
+ &child,
+ &layout_bounds,
+ &layout_data,
+ &child_bounds,
+ child.layout_item,
+ cell,
+ );
+
+ let delta_v = Vector::new_points(&child_bounds.nw, &position);
+
+ if delta_v.x.abs() > MIN_SIZE || delta_v.y.abs() > MIN_SIZE {
+ transform.post_concat(&Matrix::translate(delta_v));
+ }
+
+ result.push_back(Modifier::transform(child.id, transform));
+ }
+
+ if shape.is_layout_horizontal_auto() || shape.is_layout_vertical_auto() {
+ let width = layout_bounds.width();
+ let height = layout_bounds.height();
+
+ let mut scale_width = 1.0;
+ let mut scale_height = 1.0;
+
+ if shape.is_layout_horizontal_auto() {
+ let auto_width = column_tracks.iter().map(|t| t.size).sum::()
+ + layout_data.padding_left
+ + layout_data.padding_right
+ + (column_tracks.len() - 1) as f32 * layout_data.column_gap;
+ scale_width = auto_width / width;
+ }
+
+ if shape.is_layout_vertical_auto() {
+ let auto_height = row_tracks.iter().map(|t| t.size).sum::()
+ + layout_data.padding_top
+ + layout_data.padding_bottom
+ + (row_tracks.len() - 1) as f32 * layout_data.row_gap;
+ scale_height = auto_height / height;
+ }
+
+ let parent_transform = layout_bounds
+ .transform_matrix()
+ .unwrap_or(Matrix::default());
+
+ let parent_transform_inv = &parent_transform.invert().unwrap();
+ let origin = parent_transform_inv.map_point(layout_bounds.nw);
+
+ let mut scale = Matrix::scale((scale_width, scale_height));
+ scale.post_translate(origin);
+ scale.post_concat(&parent_transform);
+ scale.pre_translate(-origin);
+ scale.pre_concat(&parent_transform_inv);
+
+ let layout_bounds_after = layout_bounds.transform(&scale);
+ result.push_back(Modifier::parent(shape.id, scale));
+ bounds.insert(shape.id, layout_bounds_after);
+ }
+
+ result
}
diff --git a/render-wasm/src/shapes/paths.rs b/render-wasm/src/shapes/paths.rs
index 5f0741842c..a09ec3c545 100644
--- a/render-wasm/src/shapes/paths.rs
+++ b/render-wasm/src/shapes/paths.rs
@@ -76,18 +76,6 @@ pub struct Path {
open: bool,
}
-fn starts_and_ends_at_same_point(path: &skia::Path) -> bool {
- if path.count_points() < 2 {
- return false; // A path with fewer than 2 points cannot be closed
- }
-
- let start_point = path.get_point(0); // First point of the path
- let end_point = path.get_point(path.count_points() - 1); // Last point of the path
-
- // Compare the start and end points
- start_point == end_point
-}
-
impl Default for Path {
fn default() -> Self {
Path::try_from(Vec::new()).unwrap()
@@ -105,29 +93,36 @@ impl TryFrom> for Path {
.collect::, String>>()?;
let mut skia_path = skia::Path::new();
+ let mut start = None;
+
for segment in segments.iter() {
- match *segment {
+ let destination = match *segment {
Segment::MoveTo(xy) => {
+ start = Some(xy);
skia_path.move_to(xy);
+ None
}
Segment::LineTo(xy) => {
skia_path.line_to(xy);
+ Some(xy)
}
Segment::CurveTo((c1, c2, xy)) => {
skia_path.cubic_to(c1, c2, xy);
+ Some(xy)
}
Segment::Close => {
skia_path.close();
open = false;
+ None
+ }
+ };
+ if let (Some(start), Some(destination)) = (start, destination) {
+ if destination == start {
+ skia_path.close();
+ open = false;
}
}
}
-
- if !skia_path.is_last_contour_closed() && starts_and_ends_at_same_point(&skia_path) {
- skia_path.close();
- open = false;
- }
-
Ok(Path {
segments,
skia_path,
diff --git a/render-wasm/src/shapes/shadows.rs b/render-wasm/src/shapes/shadows.rs
index 755d8e063c..a8f226c41b 100644
--- a/render-wasm/src/shapes/shadows.rs
+++ b/render-wasm/src/shapes/shadows.rs
@@ -1,4 +1,4 @@
-use skia_safe::{self as skia, image_filters, ImageFilter};
+use skia_safe::{self as skia, image_filters, ImageFilter, Paint};
use super::Color;
@@ -62,81 +62,17 @@ impl Shadow {
self.hidden
}
- pub fn to_paint(&self, scale: f32) -> skia::Paint {
- let mut paint = skia::Paint::default();
-
- let image_filter = match self.style {
- ShadowStyle::Drop => self.drop_shadow_filters(scale),
- ShadowStyle::Inner => self.inner_shadow_filters(scale),
- };
-
- paint.set_image_filter(image_filter);
- paint.set_anti_alias(true);
-
- paint
- }
-
- fn drop_shadow_filters(&self, scale: f32) -> Option {
- let mut filter = image_filters::drop_shadow_only(
- (self.offset.0 * scale, self.offset.1 * scale),
- (self.blur * scale, self.blur * scale),
- self.color,
- None,
- None,
- None,
- );
-
- if self.spread > 0. {
- filter =
- image_filters::dilate((self.spread * scale, self.spread * scale), filter, None);
- }
-
- filter
- }
-
- fn inner_shadow_filters(&self, scale: f32) -> Option {
- let sigma = self.blur * 0.5;
- let mut filter = skia::image_filters::drop_shadow_only(
- (self.offset.0 * scale, self.offset.1 * scale), // DPR?
- (sigma * scale, sigma * scale),
- skia::Color::BLACK,
- None,
- None,
- None,
- );
-
- filter = skia::image_filters::color_filter(
- skia::color_filters::blend(self.color, skia::BlendMode::SrcOut).unwrap(),
- filter,
- None,
- );
-
- if self.spread > 0. {
- filter = skia::image_filters::dilate(
- (self.spread * scale, self.spread * scale),
- filter,
- None,
- );
- }
-
- filter = skia::image_filters::blend(skia::BlendMode::SrcIn, None, filter, None);
-
- filter
- }
-
- // New methods for DropShadow
- pub fn get_drop_shadow_paint(&self) -> skia::Paint {
- let mut paint = skia::Paint::default();
-
+ pub fn get_drop_shadow_paint(&self, antialias: bool) -> Paint {
+ let mut paint = Paint::default();
let image_filter = self.get_drop_shadow_filter();
paint.set_image_filter(image_filter);
- paint.set_anti_alias(true);
+ paint.set_anti_alias(antialias);
paint
}
- fn get_drop_shadow_filter(&self) -> Option {
+ pub fn get_drop_shadow_filter(&self) -> Option {
let mut filter = image_filters::drop_shadow_only(
(self.offset.0, self.offset.1),
(self.blur, self.blur),
@@ -152,4 +88,41 @@ impl Shadow {
filter
}
+
+ pub fn get_inner_shadow_paint(&self, antialias: bool) -> Paint {
+ let mut paint = Paint::default();
+
+ let image_filter = self.get_inner_shadow_filter();
+
+ paint.set_image_filter(image_filter);
+ paint.set_anti_alias(antialias);
+
+ paint
+ }
+
+ pub fn get_inner_shadow_filter(&self) -> Option {
+ let sigma = self.blur * 0.5;
+ let mut filter = skia::image_filters::drop_shadow_only(
+ (self.offset.0, self.offset.1), // DPR?
+ (sigma, sigma),
+ skia::Color::WHITE,
+ None,
+ None,
+ None,
+ );
+
+ filter = skia::image_filters::color_filter(
+ skia::color_filters::blend(self.color, skia::BlendMode::SrcOut).unwrap(),
+ filter,
+ None,
+ );
+
+ if self.spread > 0. {
+ filter = skia::image_filters::dilate((self.spread, self.spread), filter, None);
+ }
+
+ filter = skia::image_filters::blend(skia::BlendMode::SrcIn, None, filter, None);
+
+ filter
+ }
}
diff --git a/render-wasm/src/shapes/strokes.rs b/render-wasm/src/shapes/strokes.rs
index d68b95bbdb..c1372d224c 100644
--- a/render-wasm/src/shapes/strokes.rs
+++ b/render-wasm/src/shapes/strokes.rs
@@ -116,8 +116,8 @@ impl Stroke {
pub fn delta(&self) -> f32 {
match self.kind {
StrokeKind::InnerStroke => 0.,
- StrokeKind::CenterStroke => self.width / 2.,
- StrokeKind::OuterStroke => self.width,
+ StrokeKind::CenterStroke => self.width,
+ StrokeKind::OuterStroke => self.width * 2.,
}
}
@@ -160,8 +160,9 @@ impl Stroke {
rect: &Rect,
svg_attrs: &HashMap,
scale: f32,
+ antialias: bool,
) -> skia::Paint {
- let mut paint = self.fill.to_paint(rect);
+ let mut paint = self.fill.to_paint(rect, antialias);
paint.set_style(skia::PaintStyle::Stroke);
let width = match self.kind {
@@ -171,7 +172,7 @@ impl Stroke {
};
paint.set_stroke_width(width);
- paint.set_anti_alias(true);
+ paint.set_anti_alias(antialias);
if let Some("round") = svg_attrs.get("stroke-linecap").map(String::as_str) {
paint.set_stroke_cap(skia::paint::Cap::Round);
@@ -225,18 +226,19 @@ impl Stroke {
rect: &Rect,
svg_attrs: &HashMap,
scale: f32,
+ antialias: bool,
) -> skia::Paint {
- let mut paint = self.to_paint(rect, svg_attrs, scale);
+ let mut paint = self.to_paint(rect, svg_attrs, scale, antialias);
match self.render_kind(is_open) {
StrokeKind::InnerStroke => {
paint.set_stroke_width(2. * paint.stroke_width());
- paint
}
- StrokeKind::CenterStroke => paint,
+ StrokeKind::CenterStroke => {}
StrokeKind::OuterStroke => {
paint.set_stroke_width(2. * paint.stroke_width());
- paint
}
}
+
+ paint
}
}
diff --git a/render-wasm/src/shapes/text.rs b/render-wasm/src/shapes/text.rs
index 47cc123903..0e338f62ef 100644
--- a/render-wasm/src/shapes/text.rs
+++ b/render-wasm/src/shapes/text.rs
@@ -1,6 +1,6 @@
use crate::{
math::Rect,
- render::{DEFAULT_EMOJI_FONT, DEFAULT_FONT},
+ render::{default_font, DEFAULT_EMOJI_FONT},
};
use skia_safe::{
self as skia,
@@ -8,6 +8,8 @@ use skia_safe::{
};
use super::FontFamily;
+use crate::utils::uuid_from_u32;
+use crate::Uuid;
#[derive(Debug, PartialEq, Clone)]
pub struct TextContent {
@@ -26,60 +28,52 @@ impl TextContent {
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()
}
+ #[allow(dead_code)]
pub fn y(&self) -> f32 {
self.bounds.y()
}
- pub fn add_paragraph(&mut self) {
- let p = Paragraph::default();
- self.paragraphs.push(p);
- }
-
- pub fn add_leaf(
- &mut self,
- text: String,
- font_family: FontFamily,
- font_size: f32,
- ) -> Result<(), String> {
- let paragraph = self
- .paragraphs
- .last_mut()
- .ok_or("No paragraph to add text leaf to")?;
-
- paragraph.add_leaf(TextLeaf::new(text, font_family, font_size));
-
- Ok(())
+ pub fn add_paragraph(&mut self, paragraph: Paragraph) {
+ self.paragraphs.push(paragraph);
}
pub fn to_paragraphs(&self, fonts: &FontCollection) -> Vec {
- let mut paragraph_style = ParagraphStyle::default();
- // TODO: read text direction, align, etc. from the shape
- paragraph_style.set_text_direction(skia::textlayout::TextDirection::LTR);
-
self.paragraphs
.iter()
.map(|p| {
+ let paragraph_style = p.paragraph_to_style();
let mut builder = ParagraphBuilder::new(¶graph_style, fonts);
-
for leaf in &p.children {
- let text_style = leaf.to_style();
+ let text_style = leaf.to_style(&p);
+ let text = leaf.apply_text_transform(p.text_transform);
+
builder.push_style(&text_style);
- builder.add_text(&leaf.text);
+ builder.add_text(&text);
builder.pop();
}
-
builder.build()
})
.collect()
}
+
+ pub fn to_skia_paragraphs(&self, fonts: &FontCollection) -> Vec {
+ let mut paragraphs = Vec::new();
+ for mut skia_paragraph in self.to_paragraphs(fonts) {
+ skia_paragraph.layout(self.width());
+ paragraphs.push(skia_paragraph);
+ }
+ paragraphs
+ }
}
impl Default for TextContent {
@@ -93,19 +87,90 @@ impl Default for TextContent {
#[derive(Debug, PartialEq, Clone)]
pub struct Paragraph {
+ text_align: u8,
+ text_decoration: u8,
+ text_direction: u8,
+ text_transform: u8,
+ line_height: f32,
+ letter_spacing: f32,
+ typography_ref_file: Uuid,
+ typography_ref_id: Uuid,
children: Vec,
}
impl Default for Paragraph {
fn default() -> Self {
- Self { children: vec![] }
+ Self {
+ text_align: 0,
+ text_decoration: 0,
+ text_direction: 0,
+ text_transform: 0,
+ line_height: 1.0,
+ letter_spacing: 0.0,
+ typography_ref_file: Uuid::nil(),
+ typography_ref_id: Uuid::nil(),
+ children: vec![],
+ }
}
}
impl Paragraph {
+ pub fn new(
+ text_align: u8,
+ text_decoration: u8,
+ text_direction: u8,
+ text_transform: u8,
+ line_height: f32,
+ letter_spacing: f32,
+ typography_ref_file: Uuid,
+ typography_ref_id: Uuid,
+ children: Vec,
+ ) -> Self {
+ Self {
+ text_align,
+ text_decoration,
+ text_direction,
+ text_transform,
+ line_height,
+ letter_spacing,
+ typography_ref_file,
+ typography_ref_id,
+ children,
+ }
+ }
+
+ #[allow(dead_code)]
+ fn set_children(&mut self, children: Vec) {
+ self.children = children;
+ }
+
+ #[allow(dead_code)]
+ pub fn get_children(&self) -> &Vec {
+ &self.children
+ }
+
+ #[allow(dead_code)]
fn add_leaf(&mut self, leaf: TextLeaf) {
self.children.push(leaf);
}
+
+ 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_height(self.line_height);
+ style.set_text_direction(match self.text_direction {
+ 0 => skia::textlayout::TextDirection::LTR,
+ 1 => skia::textlayout::TextDirection::RTL,
+ _ => skia::textlayout::TextDirection::LTR,
+ });
+ style
+ }
}
#[derive(Debug, PartialEq, Clone)]
@@ -113,30 +178,250 @@ pub struct TextLeaf {
text: String,
font_family: FontFamily,
font_size: f32,
+ font_style: u8,
+ font_weight: i32,
+ font_variant_id: Uuid,
}
impl TextLeaf {
- pub fn new(text: String, font_family: FontFamily, font_size: f32) -> Self {
+ pub fn new(
+ text: String,
+ font_family: FontFamily,
+ font_size: f32,
+ font_style: u8,
+ font_weight: i32,
+ font_variant_id: Uuid,
+ ) -> Self {
Self {
text,
font_family,
font_size,
+ font_style,
+ font_weight,
+ font_variant_id,
}
}
- pub fn to_style(&self) -> skia::textlayout::TextStyle {
+ pub fn to_style(&self, paragraph: &Paragraph) -> skia::textlayout::TextStyle {
let mut style = skia::textlayout::TextStyle::default();
style.set_color(skia::Color::BLACK);
style.set_font_size(self.font_size);
+ style.set_letter_spacing(paragraph.letter_spacing);
+ style.set_height(paragraph.line_height);
+ style.set_height_override(true);
+ style.set_decoration_type(match paragraph.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,
+ });
style.set_font_families(&[
self.serialized_font_family(),
- DEFAULT_FONT.to_string(),
+ default_font(),
DEFAULT_EMOJI_FONT.to_string(),
]);
+
style
}
fn serialized_font_family(&self) -> String {
format!("{}", self.font_family)
}
+
+ pub fn apply_text_transform(&self, transform: u8) -> String {
+ match transform {
+ 1 => self.text.to_uppercase(),
+ 2 => self.text.to_lowercase(),
+ 3 => self
+ .text
+ .split_whitespace()
+ .map(|word| {
+ let mut chars = word.chars();
+ match chars.next() {
+ Some(first) => first.to_uppercase().collect::() + chars.as_str(),
+ None => String::new(),
+ }
+ })
+ .collect::>()
+ .join(" "),
+ _ => self.text.clone(),
+ }
+ }
+}
+
+pub const RAW_PARAGRAPH_DATA_SIZE: usize = 48;
+pub const RAW_LEAF_DATA_SIZE: usize = 52;
+
+#[repr(C)]
+#[derive(Debug)]
+pub struct RawTextLeafData {
+ font_style: u8,
+ font_size: f32,
+ font_weight: i32,
+ font_id: [u32; 4],
+ font_family: [u8; 4],
+ font_variant_id: [u32; 4],
+ text_length: u32,
+}
+
+#[repr(C)]
+#[derive(Debug)]
+pub struct RawParagraphData {
+ text_align: u8,
+ text_transform: u8,
+ text_decoration: u8,
+ text_direction: 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 {
+ Self {
+ text_align: bytes[4],
+ text_direction: bytes[5],
+ text_decoration: bytes[6],
+ text_transform: bytes[7],
+ line_height: f32::from_be_bytes([bytes[8], bytes[9], bytes[10], bytes[11]]),
+ letter_spacing: f32::from_be_bytes([bytes[12], bytes[13], bytes[14], bytes[15]]),
+ typography_ref_file: [
+ u32::from_be_bytes([bytes[16], bytes[17], bytes[18], bytes[19]]),
+ u32::from_be_bytes([bytes[20], bytes[21], bytes[22], bytes[23]]),
+ u32::from_be_bytes([bytes[24], bytes[25], bytes[26], bytes[27]]),
+ u32::from_be_bytes([bytes[28], bytes[29], bytes[30], bytes[31]]),
+ ],
+ typography_ref_id: [
+ u32::from_be_bytes([bytes[32], bytes[33], bytes[34], bytes[35]]),
+ u32::from_be_bytes([bytes[36], bytes[37], bytes[38], bytes[39]]),
+ u32::from_be_bytes([bytes[40], bytes[41], bytes[42], bytes[43]]),
+ u32::from_be_bytes([bytes[44], bytes[45], bytes[46], bytes[47]]),
+ ],
+ }
+ }
+}
+
+pub struct RawTextData {
+ pub paragraph: Paragraph,
+}
+
+impl RawTextData {
+ fn leaves_attrs_from_bytes(buffer: &[u8], num_leaves: usize) -> Vec {
+ let mut attrs = Vec::new();
+ for i in 0..num_leaves {
+ let start = i * RAW_LEAF_DATA_SIZE;
+ let end = start + RAW_LEAF_DATA_SIZE;
+ let bytes = &buffer[start..end];
+ let array: [u8; RAW_LEAF_DATA_SIZE] = bytes.try_into().expect("Slice length mismatch");
+ let leaf_attrs = RawTextLeafData::from(array);
+ attrs.push(leaf_attrs);
+ }
+ attrs
+ }
+
+ fn paragraph_attrs_from_bytes(buffer: &[u8]) -> RawParagraphData {
+ let bytes: [u8; RAW_PARAGRAPH_DATA_SIZE] = buffer[..RAW_PARAGRAPH_DATA_SIZE]
+ .try_into()
+ .expect("Slice length mismatch for paragraph attributes");
+ RawParagraphData::from(bytes)
+ }
+
+ 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();
+ let text = String::from_utf8(text_utf8).expect("Invalid UTF-8 text");
+
+ (text, text_end)
+ }
+}
+
+impl From<[u8; RAW_LEAF_DATA_SIZE]> for RawTextLeafData {
+ fn from(bytes: [u8; RAW_LEAF_DATA_SIZE]) -> Self {
+ Self {
+ font_style: bytes[0],
+ font_size: f32::from_be_bytes([bytes[4], bytes[5], bytes[6], bytes[7]]),
+ font_weight: i32::from_be_bytes([bytes[8], bytes[9], bytes[10], bytes[11]]),
+ font_id: [
+ u32::from_be_bytes([bytes[12], bytes[13], bytes[14], bytes[15]]),
+ u32::from_be_bytes([bytes[16], bytes[17], bytes[18], bytes[19]]),
+ u32::from_be_bytes([bytes[20], bytes[21], bytes[22], bytes[23]]),
+ u32::from_be_bytes([bytes[24], bytes[25], bytes[26], bytes[27]]),
+ ],
+ font_family: [bytes[28], bytes[29], bytes[30], bytes[31]],
+ font_variant_id: [
+ u32::from_be_bytes([bytes[32], bytes[33], bytes[34], bytes[35]]),
+ u32::from_be_bytes([bytes[36], bytes[37], bytes[38], bytes[39]]),
+ u32::from_be_bytes([bytes[40], bytes[41], bytes[42], bytes[43]]),
+ u32::from_be_bytes([bytes[44], bytes[45], bytes[46], bytes[47]]),
+ ],
+ text_length: u32::from_be_bytes([bytes[48], bytes[49], bytes[50], bytes[51]]),
+ }
+ }
+}
+
+impl From<&Vec> for RawTextData {
+ fn from(bytes: &Vec) -> Self {
+ let num_leaves = u32::from_be_bytes([bytes[0], bytes[1], bytes[2], bytes[3]]) as usize;
+
+ let paragraph_attrs =
+ RawTextData::paragraph_attrs_from_bytes(&bytes[..RAW_PARAGRAPH_DATA_SIZE]);
+ let leaves_attrs =
+ RawTextData::leaves_attrs_from_bytes(&bytes[1 + RAW_PARAGRAPH_DATA_SIZE..], num_leaves);
+
+ let metadata_size = 1 + RAW_PARAGRAPH_DATA_SIZE + num_leaves * RAW_LEAF_DATA_SIZE;
+ let text_start = metadata_size;
+ let mut offset = text_start;
+ let mut text_leaves: Vec = Vec::new();
+
+ for attrs in leaves_attrs {
+ let (text, new_offset) = RawTextData::text_from_bytes(bytes, offset, attrs.text_length);
+ offset = new_offset;
+
+ let font_id = uuid_from_u32(attrs.font_id);
+ let font_variant_id = uuid_from_u32(attrs.font_variant_id);
+
+ let font_family =
+ FontFamily::new(font_id, attrs.font_weight as u32, attrs.font_style.into());
+
+ let text_leaf = TextLeaf::new(
+ text,
+ font_family,
+ attrs.font_size,
+ attrs.font_style,
+ attrs.font_weight,
+ font_variant_id,
+ );
+ text_leaves.push(text_leaf);
+ }
+
+ let typography_ref_file = uuid_from_u32(paragraph_attrs.typography_ref_file);
+ let typography_ref_id = uuid_from_u32(paragraph_attrs.typography_ref_id);
+
+ let paragraph = Paragraph::new(
+ paragraph_attrs.text_align,
+ paragraph_attrs.text_decoration,
+ paragraph_attrs.text_direction,
+ paragraph_attrs.text_transform,
+ paragraph_attrs.line_height,
+ paragraph_attrs.letter_spacing,
+ typography_ref_file,
+ typography_ref_id,
+ text_leaves.clone(),
+ );
+
+ Self { paragraph }
+ }
}
diff --git a/render-wasm/src/shapes/transform.rs b/render-wasm/src/shapes/transform.rs
index bbfd8f77d8..7c7be13ec7 100644
--- a/render-wasm/src/shapes/transform.rs
+++ b/render-wasm/src/shapes/transform.rs
@@ -1,8 +1,8 @@
use skia_safe as skia;
-use uuid::Uuid;
use crate::mem::SerializableResult;
use crate::utils::{uuid_from_u32_quartet, uuid_to_u32_quartet};
+use crate::uuid::Uuid;
use skia::Matrix;
#[derive(PartialEq, Debug, Clone)]
@@ -98,15 +98,74 @@ impl SerializableResult for TransformEntry {
}
}
+#[derive(PartialEq, Debug, Clone, Copy)]
+pub enum StructureEntryType {
+ RemoveChild,
+ AddChild,
+}
+
+impl StructureEntryType {
+ pub fn from_u32(value: u32) -> Self {
+ match value {
+ 1 => Self::RemoveChild,
+ 2 => Self::AddChild,
+ _ => unreachable!(),
+ }
+ }
+}
+
+#[derive(PartialEq, Debug, Clone)]
+#[repr(C)]
+pub struct StructureEntry {
+ pub entry_type: StructureEntryType,
+ pub index: u32,
+ pub parent: Uuid,
+ pub id: Uuid,
+}
+
+impl StructureEntry {
+ pub fn new(entry_type: StructureEntryType, index: u32, parent: Uuid, id: Uuid) -> Self {
+ StructureEntry {
+ entry_type,
+ index,
+ parent,
+ id,
+ }
+ }
+
+ pub fn from_bytes(bytes: [u8; 40]) -> Self {
+ let entry_type = StructureEntryType::from_u32(u32::from_le_bytes([
+ bytes[0], bytes[1], bytes[2], bytes[3],
+ ]));
+
+ let index = u32::from_le_bytes([bytes[4], bytes[5], bytes[6], bytes[7]]);
+
+ let parent = uuid_from_u32_quartet(
+ u32::from_le_bytes([bytes[8], bytes[9], bytes[10], bytes[11]]),
+ u32::from_le_bytes([bytes[12], bytes[13], bytes[14], bytes[15]]),
+ u32::from_le_bytes([bytes[16], bytes[17], bytes[18], bytes[19]]),
+ u32::from_le_bytes([bytes[20], bytes[21], bytes[22], bytes[23]]),
+ );
+
+ let id = uuid_from_u32_quartet(
+ u32::from_le_bytes([bytes[24], bytes[25], bytes[26], bytes[27]]),
+ u32::from_le_bytes([bytes[28], bytes[29], bytes[30], bytes[31]]),
+ u32::from_le_bytes([bytes[32], bytes[33], bytes[34], bytes[35]]),
+ u32::from_le_bytes([bytes[36], bytes[37], bytes[38], bytes[39]]),
+ );
+
+ StructureEntry::new(entry_type, index, parent, id)
+ }
+}
+
#[cfg(test)]
mod tests {
use super::*;
- use uuid::uuid;
#[test]
fn test_serialization() {
let entry = TransformEntry::new(
- uuid!("550e8400-e29b-41d4-a716-446655440000"),
+ Uuid::new_v4(),
Matrix::new_all(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 0.0, 0.0, 1.0),
);
diff --git a/render-wasm/src/state.rs b/render-wasm/src/state.rs
index 2f440ef785..67f9129c17 100644
--- a/render-wasm/src/state.rs
+++ b/render-wasm/src/state.rs
@@ -1,10 +1,11 @@
use std::collections::HashMap;
use skia_safe as skia;
-use uuid::Uuid;
use crate::render::RenderState;
use crate::shapes::Shape;
+use crate::shapes::StructureEntry;
+use crate::uuid::Uuid;
/// This struct holds the state of the Rust application between JS calls.
///
@@ -17,6 +18,7 @@ pub(crate) struct State<'a> {
pub current_shape: Option<&'a mut Shape>,
pub shapes: HashMap,
pub modifiers: HashMap,
+ pub structure: HashMap>,
}
impl<'a> State<'a> {
@@ -27,6 +29,7 @@ impl<'a> State<'a> {
current_shape: None,
shapes: HashMap::with_capacity(capacity),
modifiers: HashMap::new(),
+ structure: HashMap::new(),
}
}
@@ -39,21 +42,25 @@ impl<'a> State<'a> {
}
pub fn start_render_loop(&mut self, timestamp: i32) -> Result<(), String> {
- self.render_state
- .start_render_loop(&mut self.shapes, &self.modifiers, timestamp)?;
+ self.render_state.start_render_loop(
+ &mut self.shapes,
+ &self.modifiers,
+ &self.structure,
+ timestamp,
+ )?;
Ok(())
}
pub fn process_animation_frame(&mut self, timestamp: i32) -> Result<(), String> {
- self.render_state
- .process_animation_frame(&mut self.shapes, &self.modifiers, timestamp)?;
+ self.render_state.process_animation_frame(
+ &mut self.shapes,
+ &self.modifiers,
+ &self.structure,
+ timestamp,
+ )?;
Ok(())
}
- pub fn render_from_cache(&mut self) {
- let _ = self.render_state.render_from_cache();
- }
-
pub fn use_shape(&'a mut self, id: Uuid) {
if !self.shapes.contains_key(&id) {
let new_shape = Shape::new(id);
@@ -63,6 +70,20 @@ impl<'a> State<'a> {
self.current_shape = self.shapes.get_mut(&id);
}
+ pub fn delete_shape(&mut self, id: Uuid) {
+ // We don't really do a self.shapes.remove so that redo/undo keep working
+ if let Some(shape) = self.shapes.get(&id) {
+ let (rsx, rsy, rex, rey) = self.render_state.get_tiles_for_shape(&shape);
+ for x in rsx..=rex {
+ for y in rsy..=rey {
+ let tile = (x, y);
+ self.render_state.surfaces.remove_cached_tile_surface(tile);
+ self.render_state.tiles.remove_shape_at(tile, id);
+ }
+ }
+ }
+ }
+
pub fn current_shape(&mut self) -> Option<&mut Shape> {
self.current_shape.as_deref_mut()
}
@@ -70,4 +91,45 @@ impl<'a> State<'a> {
pub fn set_background_color(&mut self, color: skia::Color) {
self.render_state.set_background_color(color);
}
+
+ pub fn set_selrect_for_current_shape(&mut self, left: f32, top: f32, right: f32, bottom: f32) {
+ match self.current_shape.as_mut() {
+ Some(shape) => {
+ shape.set_selrect(left, top, right, bottom);
+ // We don't need to update the tile for the root shape.
+ if !shape.id.is_nil() {
+ self.render_state.update_tile_for(&shape);
+ }
+ }
+ None => panic!("Invalid current shape"),
+ }
+ }
+
+ pub fn update_tile_for_current_shape(&mut self) {
+ match self.current_shape.as_mut() {
+ Some(shape) => {
+ // We don't need to update the tile for the root shape.
+ // We can also have deleted the selected shape
+ if !shape.id.is_nil() && self.shapes.contains_key(&shape.id) {
+ self.render_state.update_tile_for(&shape);
+ }
+ }
+ None => panic!("Invalid current shape"),
+ }
+ }
+
+ pub fn rebuild_tiles_shallow(&mut self) {
+ self.render_state
+ .rebuild_tiles_shallow(&mut self.shapes, &self.modifiers, &self.structure);
+ }
+
+ pub fn rebuild_tiles(&mut self) {
+ self.render_state
+ .rebuild_tiles(&mut self.shapes, &self.modifiers, &self.structure);
+ }
+
+ pub fn rebuild_modifier_tiles(&mut self) {
+ self.render_state
+ .rebuild_modifier_tiles(&mut self.shapes, &self.modifiers);
+ }
}
diff --git a/render-wasm/src/utils.rs b/render-wasm/src/utils.rs
index ae5ff986c2..3b51efba02 100644
--- a/render-wasm/src/utils.rs
+++ b/render-wasm/src/utils.rs
@@ -1,4 +1,4 @@
-use uuid::Uuid;
+use crate::uuid::Uuid;
pub fn uuid_from_u32_quartet(a: u32, b: u32, c: u32, d: u32) -> Uuid {
let hi: u64 = ((a as u64) << 32) | b as u64;
@@ -14,3 +14,7 @@ pub fn uuid_to_u32_quartet(id: &Uuid) -> (u32, u32, u32, u32) {
let lolo32 = lo as u32;
(hihi32, hilo32, lohi32, lolo32)
}
+
+pub fn uuid_from_u32(id: [u32; 4]) -> Uuid {
+ uuid_from_u32_quartet(id[0], id[1], id[2], id[3])
+}
diff --git a/render-wasm/src/uuid.rs b/render-wasm/src/uuid.rs
new file mode 100644
index 0000000000..7c2d64ec09
--- /dev/null
+++ b/render-wasm/src/uuid.rs
@@ -0,0 +1,80 @@
+use crate::mem::SerializableResult;
+use crate::utils::uuid_from_u32_quartet;
+use crate::utils::uuid_to_u32_quartet;
+use std::fmt;
+use std::ops::{Deref, DerefMut};
+use uuid::Uuid as ExternalUuid;
+
+#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
+pub struct Uuid(ExternalUuid);
+
+impl Deref for Uuid {
+ type Target = ExternalUuid;
+
+ fn deref(&self) -> &Self::Target {
+ &self.0
+ }
+}
+
+impl DerefMut for Uuid {
+ fn deref_mut(&mut self) -> &mut Self::Target {
+ &mut self.0
+ }
+}
+
+impl Uuid {
+ pub fn nil() -> Self {
+ Self(ExternalUuid::nil())
+ }
+
+ pub fn from_u64_pair(high: u64, low: u64) -> Self {
+ Self(ExternalUuid::from_u64_pair(high, low))
+ }
+
+ #[cfg(test)]
+ pub fn new_v4() -> Self {
+ Self(ExternalUuid::new_v4())
+ }
+}
+
+impl From for Uuid {
+ fn from(uuid: ExternalUuid) -> Self {
+ Self(uuid)
+ }
+}
+
+impl fmt::Display for Uuid {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ write!(f, "{}", self.0)
+ }
+}
+
+impl SerializableResult for Uuid {
+ type BytesType = [u8; 16];
+
+ fn from_bytes(bytes: Self::BytesType) -> Self {
+ Self(*uuid_from_u32_quartet(
+ u32::from_le_bytes([bytes[0], bytes[1], bytes[2], bytes[3]]),
+ u32::from_le_bytes([bytes[4], bytes[5], bytes[6], bytes[7]]),
+ u32::from_le_bytes([bytes[8], bytes[9], bytes[10], bytes[11]]),
+ u32::from_le_bytes([bytes[12], bytes[13], bytes[14], bytes[15]]),
+ ))
+ }
+
+ fn as_bytes(&self) -> Self::BytesType {
+ let mut result: Self::BytesType = [0; 16];
+ let (a, b, c, d) = uuid_to_u32_quartet(&self);
+ result[0..4].clone_from_slice(&a.to_le_bytes());
+ result[4..8].clone_from_slice(&b.to_le_bytes());
+ result[8..12].clone_from_slice(&c.to_le_bytes());
+ result[12..16].clone_from_slice(&d.to_le_bytes());
+
+ result
+ }
+
+ // The generic trait doesn't know the size of the array. This is why the
+ // clone needs to be here even if it could be generic.
+ fn clone_to_slice(&self, slice: &mut [u8]) {
+ slice.clone_from_slice(&self.as_bytes());
+ }
+}
diff --git a/render-wasm/src/view.rs b/render-wasm/src/view.rs
index 1c23511521..eeb7aa858b 100644
--- a/render-wasm/src/view.rs
+++ b/render-wasm/src/view.rs
@@ -45,23 +45,14 @@ impl Viewbox {
);
}
- pub fn set_zoom(&mut self, zoom: f32) {
- self.zoom = zoom;
- self.area
- .set_wh(self.width / self.zoom, self.height / self.zoom);
- }
-
- pub fn set_pan_xy(&mut self, pan_x: f32, pan_y: f32) {
- self.pan_x = pan_x;
- self.pan_y = pan_y;
- self.area.left = -pan_x;
- self.area.top = -pan_y;
- }
-
pub fn set_wh(&mut self, width: f32, height: f32) {
self.width = width;
self.height = height;
self.area
.set_wh(self.width / self.zoom, self.height / self.zoom);
}
+
+ pub fn zoom(&self) -> f32 {
+ self.zoom
+ }
}
diff --git a/render-wasm/src/wapi.rs b/render-wasm/src/wapi.rs
new file mode 100644
index 0000000000..92e03d82cf
--- /dev/null
+++ b/render-wasm/src/wapi.rs
@@ -0,0 +1,38 @@
+#[macro_export]
+macro_rules! request_animation_frame {
+ () => {{
+ #[cfg(target_arch = "wasm32")]
+ unsafe extern "C" {
+ pub fn wapi_requestAnimationFrame() -> i32;
+ }
+
+ #[cfg(target_arch = "wasm32")]
+ let result = unsafe { wapi_requestAnimationFrame() };
+ #[cfg(not(target_arch = "wasm32"))]
+ let result = 0;
+
+ result
+ }};
+}
+
+#[macro_export]
+macro_rules! cancel_animation_frame {
+ ($frame_id:expr) => {
+ #[cfg(target_arch = "wasm32")]
+ unsafe extern "C" {
+ pub fn wapi_cancelAnimationFrame(frame_id: i32);
+ }
+
+ {
+ #[cfg(target_arch = "wasm32")]
+ unsafe {
+ wapi_cancelAnimationFrame($frame_id)
+ };
+ #[cfg(not(target_arch = "wasm32"))]
+ let _ = $frame_id;
+ }
+ };
+}
+
+pub use cancel_animation_frame;
+pub use request_animation_frame;
diff --git a/render-wasm/src/wasm.rs b/render-wasm/src/wasm.rs
index 31ae8a7c1d..7d45923d91 100644
--- a/render-wasm/src/wasm.rs
+++ b/render-wasm/src/wasm.rs
@@ -1,2 +1,4 @@
+pub mod fills;
pub mod fonts;
+pub mod strokes;
pub mod text;
diff --git a/render-wasm/src/wasm/fills.rs b/render-wasm/src/wasm/fills.rs
new file mode 100644
index 0000000000..a6c47fdf1c
--- /dev/null
+++ b/render-wasm/src/wasm/fills.rs
@@ -0,0 +1,60 @@
+use skia_safe as skia;
+
+use crate::mem;
+use crate::shapes;
+use crate::utils::uuid_from_u32_quartet;
+use crate::with_current_shape;
+use crate::STATE;
+
+#[no_mangle]
+pub extern "C" fn add_shape_solid_fill(raw_color: u32) {
+ with_current_shape!(state, |shape: &mut Shape| {
+ let color = skia::Color::new(raw_color);
+ shape.add_fill(shapes::Fill::Solid(color));
+ });
+}
+
+#[no_mangle]
+pub extern "C" fn add_shape_linear_fill() {
+ with_current_shape!(state, |shape: &mut Shape| {
+ let bytes = mem::bytes();
+ let gradient = shapes::Gradient::try_from(&bytes[..]).expect("Invalid gradient data");
+ shape.add_fill(shapes::Fill::LinearGradient(gradient));
+ });
+}
+
+#[no_mangle]
+pub extern "C" fn add_shape_radial_fill() {
+ with_current_shape!(state, |shape: &mut Shape| {
+ let bytes = mem::bytes();
+ let gradient = shapes::Gradient::try_from(&bytes[..]).expect("Invalid gradient data");
+ shape.add_fill(shapes::Fill::RadialGradient(gradient));
+ });
+}
+
+#[no_mangle]
+pub extern "C" fn add_shape_image_fill(
+ a: u32,
+ b: u32,
+ c: u32,
+ d: u32,
+ alpha: f32,
+ width: i32,
+ height: i32,
+) {
+ with_current_shape!(state, |shape: &mut Shape| {
+ let id = uuid_from_u32_quartet(a, b, c, d);
+ shape.add_fill(shapes::Fill::new_image_fill(
+ id,
+ (alpha * 0xff as f32).floor() as u8,
+ (width, height),
+ ));
+ });
+}
+
+#[no_mangle]
+pub extern "C" fn clear_shape_fills() {
+ with_current_shape!(state, |shape: &mut Shape| {
+ shape.clear_fills();
+ });
+}
diff --git a/render-wasm/src/wasm/strokes.rs b/render-wasm/src/wasm/strokes.rs
new file mode 100644
index 0000000000..5aea834cfb
--- /dev/null
+++ b/render-wasm/src/wasm/strokes.rs
@@ -0,0 +1,97 @@
+use skia_safe as skia;
+
+use crate::mem;
+use crate::shapes;
+use crate::utils::uuid_from_u32_quartet;
+use crate::with_current_shape;
+use crate::STATE;
+
+#[no_mangle]
+pub extern "C" fn add_shape_center_stroke(width: f32, style: u8, cap_start: u8, cap_end: u8) {
+ with_current_shape!(state, |shape: &mut Shape| {
+ shape.add_stroke(shapes::Stroke::new_center_stroke(
+ width, style, cap_start, cap_end,
+ ));
+ });
+}
+
+#[no_mangle]
+pub extern "C" fn add_shape_inner_stroke(width: f32, style: u8, cap_start: u8, cap_end: u8) {
+ with_current_shape!(state, |shape: &mut Shape| {
+ shape.add_stroke(shapes::Stroke::new_inner_stroke(
+ width, style, cap_start, cap_end,
+ ));
+ });
+}
+
+#[no_mangle]
+pub extern "C" fn add_shape_outer_stroke(width: f32, style: u8, cap_start: u8, cap_end: u8) {
+ with_current_shape!(state, |shape: &mut Shape| {
+ shape.add_stroke(shapes::Stroke::new_outer_stroke(
+ width, style, cap_start, cap_end,
+ ));
+ });
+}
+
+#[no_mangle]
+pub extern "C" fn add_shape_stroke_solid_fill(raw_color: u32) {
+ with_current_shape!(state, |shape: &mut Shape| {
+ let color = skia::Color::new(raw_color);
+ shape
+ .set_stroke_fill(shapes::Fill::Solid(color))
+ .expect("could not add stroke solid fill");
+ });
+}
+
+#[no_mangle]
+pub extern "C" fn add_shape_stroke_linear_fill() {
+ with_current_shape!(state, |shape: &mut Shape| {
+ let bytes = mem::bytes();
+ let gradient = shapes::Gradient::try_from(&bytes[..]).expect("Invalid gradient data");
+
+ shape
+ .set_stroke_fill(shapes::Fill::LinearGradient(gradient))
+ .expect("could not add stroke linear gradient fill");
+ });
+}
+
+#[no_mangle]
+pub extern "C" fn add_shape_stroke_radial_fill() {
+ with_current_shape!(state, |shape: &mut Shape| {
+ let bytes = mem::bytes();
+ let gradient = shapes::Gradient::try_from(&bytes[..]).expect("Invalid gradient data");
+
+ shape
+ .set_stroke_fill(shapes::Fill::RadialGradient(gradient))
+ .expect("could not add stroke radial gradient fill");
+ });
+}
+
+#[no_mangle]
+pub extern "C" fn add_shape_image_stroke(
+ a: u32,
+ b: u32,
+ c: u32,
+ d: u32,
+ alpha: f32,
+ width: i32,
+ height: i32,
+) {
+ with_current_shape!(state, |shape: &mut Shape| {
+ let id = uuid_from_u32_quartet(a, b, c, d);
+ shape
+ .set_stroke_fill(shapes::Fill::new_image_fill(
+ id,
+ (alpha * 0xff as f32).floor() as u8,
+ (width, height),
+ ))
+ .expect("could not add stroke image fill");
+ });
+}
+
+#[no_mangle]
+pub extern "C" fn clear_shape_strokes() {
+ with_current_shape!(state, |shape: &mut Shape| {
+ shape.clear_strokes();
+ });
+}
diff --git a/render-wasm/src/wasm/text.rs b/render-wasm/src/wasm/text.rs
index 8ab9062ea0..1fb3fd4018 100644
--- a/render-wasm/src/wasm/text.rs
+++ b/render-wasm/src/wasm/text.rs
@@ -1,6 +1,5 @@
use crate::mem;
-use crate::shapes::FontFamily;
-use crate::utils::uuid_from_u32_quartet;
+use crate::shapes::RawTextData;
use crate::with_current_shape;
use crate::STATE;
@@ -12,37 +11,14 @@ pub extern "C" fn clear_shape_text() {
}
#[no_mangle]
-pub extern "C" fn add_text_paragraph() {
- with_current_shape!(state, |shape: &mut Shape| {
- let res = shape.add_text_paragraph();
- if let Err(err) = res {
- eprintln!("{}", err);
- }
- });
-}
-
-#[no_mangle]
-pub extern "C" fn add_text_leaf(
- a: u32,
- b: u32,
- c: u32,
- d: u32,
- weight: u32,
- style: u8,
- font_size: f32,
-) {
- let font_id = uuid_from_u32_quartet(a, b, c, d);
- let font_family = FontFamily::new(font_id, weight, style.into());
+pub extern "C" fn set_shape_text_content() {
let bytes = mem::bytes();
-
- let text = unsafe {
- String::from_utf8_unchecked(bytes) // TODO: handle this error
- };
-
with_current_shape!(state, |shape: &mut Shape| {
- let res = shape.add_text_leaf(text, font_family, font_size);
- if let Err(err) = res {
- eprintln!("{}", err);
- }
+ let raw_text_data = RawTextData::from(&bytes);
+ shape
+ .add_paragraph(raw_text_data.paragraph)
+ .expect("Failed to add paragraph");
});
+
+ mem::free_bytes();
}
diff --git a/render-wasm/test b/render-wasm/test
index 752f25877e..90009283fc 100755
--- a/render-wasm/test
+++ b/render-wasm/test
@@ -1,8 +1,17 @@
#!/usr/bin/env bash
+set -x
+
_SCRIPT_DIR=$(dirname $0);
-
-export SKIA_BINARIES_URL="https://github.com/rust-skia/skia-binaries/releases/download/0.80.0/skia-binaries-9e7d2684a17084095aef-x86_64-unknown-linux-gnu-egl-gl-svg-textlayout-vulkan-wayland-webpd-webpe-x11.tar.gz"
-
pushd $_SCRIPT_DIR;
+
+. ./_build_env
+
+export SKIA_BINARIES_URL=${SKIA_BINARIES_URL:-"https://github.com/penpot/skia-binaries/releases/download/0.81.0-3/skia-binaries-24dee32a277b6c7b5357-x86_64-unknown-linux-gnu-gl-svg-textlayout-binary-cache.tar.gz"}
+export CARGO_BUILD_TARGET=${CARGO_BUILD_TARGET:-"x86_64-unknown-linux-gnu"};
+
cargo test --bin render_wasm -- --show-output
+
+# Exit with the same status code as cargo test
+exit $?
+
popd
diff --git a/render-wasm/watch b/render-wasm/watch
index 0b7b12afed..720e0e2e93 100755
--- a/render-wasm/watch
+++ b/render-wasm/watch
@@ -4,7 +4,10 @@ set -x
_SCRIPT_DIR=$(dirname $0);
pushd $_SCRIPT_DIR;
-. ./_build_env
+. ./_build_env
+
+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.81.0-3/skia-binaries-24dee32a277b6c7b5357-wasm32-unknown-emscripten-gl-svg-textlayout-binary-cache.tar.gz"}
pushd $_SCRIPT_DIR;
cargo watch \