Merge pull request #5581 from penpot/eva-fix-broken-token-context-menu

This commit is contained in:
Andrey Antukh 2025-01-15 16:18:05 +01:00 committed by GitHub
commit b81f4e913f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
34 changed files with 152 additions and 137 deletions

View file

@ -640,6 +640,13 @@
(let [path-split (split-path path)] (let [path-split (split-path path)]
(merge-path-item (first path-split) name))) (merge-path-item (first path-split) name)))
(defn split-string-half
"Split string in two halfs"
[s]
(let [len (count s)
mid (quot len 2)]
[(subs s 0 mid)
(subs s mid)]))
(defn get-frame-objects (defn get-frame-objects
"Retrieves a new objects map only with the objects under frame-id (with frame-id)" "Retrieves a new objects map only with the objects under frame-id (with frame-id)"

View file

@ -70,7 +70,7 @@ test.describe("Tokens: Tokens Tab", () => {
await expect(submitButton).toBeEnabled(); await expect(submitButton).toBeEnabled();
await submitButton.click(); await submitButton.click();
await expect(tokensTabPanel.getByText("color.primary")).toBeEnabled(); await expect(tokensTabPanel.getByLabel("primary")).toBeEnabled();
// Create token referencing the previous one with keyboard // Create token referencing the previous one with keyboard
@ -87,7 +87,7 @@ test.describe("Tokens: Tokens Tab", () => {
await expect(submitButton).toBeEnabled(); await expect(submitButton).toBeEnabled();
await nameField.press("Enter"); await nameField.press("Enter");
const referenceToken = tokensTabPanel.getByText("color.secondary"); const referenceToken = tokensTabPanel.getByLabel("color.secondary");
await expect(referenceToken).toBeEnabled(); await expect(referenceToken).toBeEnabled();
// Tokens tab panel should have two tokens with the color red / #ff0000 // Tokens tab panel should have two tokens with the color red / #ff0000
@ -105,6 +105,35 @@ test.describe("Tokens: Tokens Tab", () => {
}), }),
).toHaveAttribute("aria-checked", "true"); ).toHaveAttribute("aria-checked", "true");
}); });
test("User creates grouped color token", async ({ page }) => {
const { workspacePage, tokensUpdateCreateModal, tokenThemesSetsSidebar } =
await setupFileWithTokens(page);
const tokensTabPanel = page.getByRole("tabpanel", { name: "tokens" });
await tokensTabPanel.getByTitle("Add token: Color").click();
// Create grouped color token with mouse
await expect(tokensUpdateCreateModal).toBeVisible();
const nameField = tokensUpdateCreateModal.getByLabel("Name");
const valueField = tokensUpdateCreateModal.getByLabel("Value");
await nameField.click();
await nameField.fill("color.dark.primary");
await valueField.click();
await valueField.fill("red");
const submitButton = tokensUpdateCreateModal.getByRole("button", {
name: "Save",
});
await expect(submitButton).toBeEnabled();
await submitButton.click();
await expect(tokensTabPanel.getByLabel("color.dark.primary")).toBeEnabled();
});
}); });
test.describe("Tokens: Sets Tab", () => { test.describe("Tokens: Sets Tab", () => {

View file

@ -198,7 +198,6 @@
(tr "shortcuts.toggle-lock") (tr "shortcuts.toggle-lock")
(tr "shortcuts.toggle-lock-size") (tr "shortcuts.toggle-lock-size")
(tr "shortcuts.toggle-rulers") (tr "shortcuts.toggle-rulers")
(tr "shortcuts.toggle-rules")
(tr "shortcuts.toggle-snap-guides") (tr "shortcuts.toggle-snap-guides")
(tr "shortcuts.toggle-snap-ruler-guide") (tr "shortcuts.toggle-snap-ruler-guide")
(tr "shortcuts.toggle-textpalette") (tr "shortcuts.toggle-textpalette")

View file

@ -321,8 +321,9 @@
children]])])) children]])]))
(mf/defc menu-tree (mf/defc menu-tree
[{:keys [selected-shapes submenu-offset submenu-direction type] :as context-data}] [{:keys [selected-shapes submenu-offset submenu-direction type errors] :as context-data}]
(let [entries (if (seq selected-shapes) (let [entries (if (and (not (some? errors))
(seq selected-shapes))
(if (some? type) (if (some? type)
(submenu-actions-selection-actions context-data) (submenu-actions-selection-actions context-data)
(selection-actions context-data)) (selection-actions context-data))
@ -343,7 +344,7 @@
:selected? selected?}])]))) :selected? selected?}])])))
(mf/defc token-context-menu-tree (mf/defc token-context-menu-tree
[{:keys [width direction] :as mdata}] [{:keys [width direction errors] :as mdata}]
(let [objects (mf/deref refs/workspace-page-objects) (let [objects (mf/deref refs/workspace-page-objects)
selected (mf/deref refs/selected-shapes) selected (mf/deref refs/selected-shapes)
selected-shapes (into [] (keep (d/getf objects)) selected) selected-shapes (into [] (keep (d/getf objects)) selected)
@ -354,6 +355,7 @@
[:& menu-tree {:submenu-offset width [:& menu-tree {:submenu-offset width
:submenu-direction direction :submenu-direction direction
:token token :token token
:errors errors
:selected-token-set-path selected-token-set-path :selected-token-set-path selected-token-set-path
:selected-shapes selected-shapes}]])) :selected-shapes selected-shapes}]]))

View file

@ -83,6 +83,7 @@
(st/emit! (dt/show-token-context-menu (st/emit! (dt/show-token-context-menu
{:type :token {:type :token
:position (dom/get-client-position event) :position (dom/get-client-position event)
:errors (:errors token)
:token-name (:name token)})))) :token-name (:name token)}))))
on-toggle-open-click (mf/use-fn on-toggle-open-click (mf/use-fn
@ -121,6 +122,7 @@
[:> icon-button* {:on-click on-popover-open-click [:> icon-button* {:on-click on-popover-open-click
:variant "ghost" :variant "ghost"
:icon "add" :icon "add"
;; TODO: This needs translation
:aria-label (str "Add token: " title)}]] :aria-label (str "Add token: " title)}]]
(when open? (when open?
[:& cmm/asset-section-block {:role :content} [:& cmm/asset-section-block {:role :content}

View file

@ -174,6 +174,7 @@
[err] [err]
(let [[header-1 header-2 & errors] (str/split err "\n")] (let [[header-1 header-2 & errors] (str/split err "\n")]
(when (and (when (and
;; TODO: This needs translations
(= header-1 "Error: ") (= header-1 "Error: ")
(= header-2 "Reference Errors:")) (= header-2 "Reference Errors:"))
errors))) errors)))
@ -206,10 +207,11 @@
;; === Errors ;; === Errors
(defn humanize-errors [{:keys [errors value] :as _token}] (defn humanize-errors [{:keys [errors] :as token}]
(->> (map (fn [err] (->> (map (fn [err]
(case err (case (:error/code err)
:error.style-dictionary/missing-reference (str "Could not resolve reference token with the name: " value) ;; TODO: This needs translations
:error.style-dictionary/missing-reference (str "Could not resolve reference token with the name: " (:error/value err))
nil)) nil))
errors) errors)
(str/join "\n"))) (str/join "\n")))

View file

@ -1,12 +1,14 @@
(ns app.main.ui.workspace.tokens.token-pill (ns app.main.ui.workspace.tokens.token-pill
(:require-macros [app.main.style :as stl]) (:require-macros [app.main.style :as stl])
(:require (:require
[app.common.files.helpers :as cfh]
[app.common.types.tokens-lib :as ctob] [app.common.types.tokens-lib :as ctob]
[app.main.ui.components.color-bullet :refer [color-bullet]] [app.main.ui.components.color-bullet :refer [color-bullet]]
[app.main.ui.ds.foundations.assets.icon :refer [icon*]] [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.ds.foundations.utilities.token.token-status :refer [token-status-icon*]]
[app.main.ui.workspace.tokens.style-dictionary :as sd] [app.main.ui.workspace.tokens.style-dictionary :as sd]
[app.main.ui.workspace.tokens.token :as wtt] [app.main.ui.workspace.tokens.token :as wtt]
[app.util.dom :as dom]
[app.util.i18n :refer [tr]] [app.util.i18n :refer [tr]]
[cuerdas.core :as str] [cuerdas.core :as str]
[rumext.v2 :as mf])) [rumext.v2 :as mf]))
@ -16,11 +18,18 @@
[{:keys [on-click token theme-token full-applied on-context-menu half-applied]}] [{:keys [on-click token theme-token full-applied on-context-menu half-applied]}]
(let [{:keys [name value resolved-value errors]} token (let [{:keys [name value resolved-value errors]} token
errors? (or (nil? theme-token) (and (seq errors) (seq (:errors theme-token)))) errors? (or (nil? theme-token) (and (seq errors) (seq (:errors theme-token))))
color (when (seq (ctob/find-token-value-references value)) color (when (seq (ctob/find-token-value-references value))
(wtt/resolved-value-hex theme-token)) (wtt/resolved-value-hex theme-token))
contains-path? (str/includes? name ".")
splitted-name (cfh/split-string-half name)
color (or color (wtt/resolved-value-hex token)) color (or color (wtt/resolved-value-hex token))
on-click
(mf/use-callback
(mf/deps errors? on-click)
(fn [event]
(dom/stop-propagation event)
(when (and (not (seq errors)) on-click)
(on-click event))))
token-status-id (cond token-status-id (cond
half-applied half-applied
@ -35,25 +44,34 @@
:token-pill-invalid-applied (and full-applied errors?)) :token-pill-invalid-applied (and full-applied errors?))
:type "button" :type "button"
:title (cond :title (cond
errors? (sd/humanize-errors token) errors? (if (nil? theme-token)
(tr "workspace.token-set.not-active")
(sd/humanize-errors token))
:else (->> [(str "Token: " name) :else (->> [(str "Token: " name)
(tr "workspace.token.original-value" value) (tr "workspace.token.original-value" value)
(tr "workspace.token.resolved-value" resolved-value)] (tr "workspace.token.resolved-value" resolved-value)]
(str/join "\n"))) (str/join "\n")))
:on-click on-click :on-click on-click
:on-context-menu on-context-menu :on-context-menu on-context-menu}
:disabled errors?}
(cond (cond
color
[:& color-bullet {:color color
:mini true}]
errors? errors?
[:> icon* [:> icon*
{:icon-id "broken-link" {:icon-id "broken-link"
:class (stl/css :token-pill-icon)}] :class (stl/css :token-pill-icon)}]
color
[:& color-bullet {:color color
:mini true}]
:else :else
[:> token-status-icon* [:> token-status-icon*
{:icon-id token-status-id {:icon-id token-status-id
:class (stl/css :token-pill-icon)}]) :class (stl/css :token-pill-icon)}])
name])) (if contains-path?
[:span {:class (stl/css :divided-name-wrapper)
:aria-label name}
[:span {:class (stl/css :first-name-wrapper)}
(first splitted-name)]
[:span {:class (stl/css :last-name-wrapper)}
(last splitted-name)]]
[:span {:class (stl/css :name-wrapper)
:aria-label name}
name])]))

View file

@ -53,6 +53,32 @@
--token-pill-accent: var(--color-background-tertiary); --token-pill-accent: var(--color-background-tertiary);
} }
} }
.name-wrapper {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.divided-name-wrapper {
height: $s-16;
}
.first-name-wrapper {
display: inline-block;
max-width: 50%;
overflow: hidden;
white-space: pre;
text-overflow: ellipsis;
}
.last-name-wrapper {
display: inline-block;
max-width: 50%;
overflow: hidden;
white-space: pre;
direction: rtl;
}
.token-pill-applied { .token-pill-applied {
--token-pill-background: var(--color-token-background); --token-pill-background: var(--color-token-background);
@ -84,8 +110,7 @@
} }
} }
.token-pill-invalid, .token-pill-invalid {
.token-pill-invalid-applied {
--token-pill-background: var(--color-background-tertiary); --token-pill-background: var(--color-background-tertiary);
--token-pill-foreground: var(--color-foreground-error); --token-pill-foreground: var(--color-foreground-error);
--token-pill-border: var(--color-background-tertiary); --token-pill-border: var(--color-background-tertiary);
@ -101,6 +126,15 @@
} }
} }
.token-pill-invalid-applied {
--token-pill-border: var(--color-foreground-error);
&:hover,
&:focus-visible,
&:disabled {
--token-pill-border: var(--color-foreground-error);
}
}
.token-pill-icon { .token-pill-icon {
color: var(--token-pill-accent); color: var(--token-pill-accent);
} }

View file

@ -287,7 +287,7 @@ msgstr "Genereer nuwe token"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "Toegangstoken is suksesvol geskep." msgstr "Toegangstoken is suksesvol geskep."
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289

View file

@ -295,7 +295,7 @@ msgstr "قم بإنشاء رمز جديد"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "تم إنشاء رمز الوصول بنجاح." msgstr "تم إنشاء رمز الوصول بنجاح."
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289

View file

@ -329,7 +329,7 @@ msgstr "Generovat nový token"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "Přístupový token byl úspěšně vytvořen." 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:289

View file

@ -336,7 +336,7 @@ msgstr "Neues Token generieren"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "Der Zugangstoken wurde erfolgreich erstellt." msgstr "Der Zugangstoken wurde erfolgreich erstellt."
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289

View file

@ -324,14 +324,8 @@ msgid "dashboard.access-tokens.create"
msgstr "Generate new token" msgstr "Generate new token"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused
msgid "dashboard.access-tokens.create-success"
msgstr "Access token created successfully."
#: src/app/main/ui/settings/access_tokens.cljs:65
#, fuzzy
msgid "dashboard.access-tokens.create.success" msgid "dashboard.access-tokens.create.success"
msgstr "" msgstr "Access token created successfully."
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289
msgid "dashboard.access-tokens.empty.add-one" msgid "dashboard.access-tokens.empty.add-one"
@ -1153,9 +1147,8 @@ msgid "errors.member-is-muted"
msgstr "The profile you inviting has emails muted (spam reports or high bounces)." msgstr "The profile you inviting has emails muted (spam reports or high bounces)."
#: src/app/main/errors.cljs:228 #: src/app/main/errors.cljs:228
#, fuzzy
msgid "errors.migration-in-progress" msgid "errors.migration-in-progress"
msgstr "" msgstr "Migration in progress"
#: src/app/main/ui/settings/password.cljs #: src/app/main/ui/settings/password.cljs
#, unused #, unused
@ -1252,11 +1245,6 @@ msgstr "Email or password is incorrect."
msgid "errors.wrong-old-password" msgid "errors.wrong-old-password"
msgstr "Old password is incorrect" msgstr "Old password is incorrect"
#: src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
#, fuzzy
msgid "exclude"
msgstr ""
#: src/app/main/ui/settings/feedback.cljs:74 #: src/app/main/ui/settings/feedback.cljs:74
msgid "feedback.description" msgid "feedback.description"
msgstr "Description" msgstr "Description"
@ -1557,11 +1545,6 @@ msgstr "Text"
msgid "inspect.tabs.info" msgid "inspect.tabs.info"
msgstr "Info" msgstr "Info"
#: src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
#, fuzzy
msgid "intersection"
msgstr ""
#: src/app/main/ui/workspace/main_menu.cljs:163 #: src/app/main/ui/workspace/main_menu.cljs:163
msgid "label.shortcuts" msgid "label.shortcuts"
msgstr "Shortcuts" msgstr "Shortcuts"
@ -2315,11 +2298,6 @@ msgstr "Create token"
msgid "modals.create-access-token.title" msgid "modals.create-access-token.title"
msgstr "Generate access token" msgstr "Generate access token"
#: src/app/main/ui/settings/access_tokens.cljs:152
#, fuzzy
msgid "modals.create-access-token.token"
msgstr ""
#: src/app/main/ui/dashboard/team.cljs:911 #: src/app/main/ui/dashboard/team.cljs:911
msgid "modals.create-webhook.submit-label" msgid "modals.create-webhook.submit-label"
msgstr "Create webhook" msgstr "Create webhook"
@ -3827,11 +3805,6 @@ msgstr "Lock proportions"
msgid "shortcuts.toggle-rulers" msgid "shortcuts.toggle-rulers"
msgstr "Show / Hide rulers" msgstr "Show / Hide rulers"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:201
#, fuzzy
msgid "shortcuts.toggle-rules"
msgstr ""
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202 #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:202
msgid "shortcuts.toggle-snap-guides" msgid "shortcuts.toggle-snap-guides"
msgstr "Snap to guides" msgstr "Snap to guides"
@ -6308,21 +6281,6 @@ msgstr "Edit themes"
msgid "workspace.token.edit-token" msgid "workspace.token.edit-token"
msgstr "Edit token" msgstr "Edit token"
#: src/app/main/ui/workspace/tokens/form.cljs:408
#, fuzzy
msgid "workspace.token.enter-token-description"
msgstr ""
#: src/app/main/ui/workspace/tokens/form.cljs:370
#, fuzzy
msgid "workspace.token.enter-token-name"
msgstr ""
#: src/app/main/ui/workspace/tokens/form.cljs:390
#, fuzzy
msgid "workspace.token.enter-token-value"
msgstr ""
#: src/app/main/ui/workspace/tokens/sets.cljs:186 #: src/app/main/ui/workspace/tokens/sets.cljs:186
#, unused #, unused
msgid "workspace.token.grouping-set-alert" msgid "workspace.token.grouping-set-alert"
@ -6380,11 +6338,6 @@ msgstr "Select set."
msgid "workspace.token.set-selection-theme" msgid "workspace.token.set-selection-theme"
msgstr "Define what token sets should be used as part of this theme option:" msgstr "Define what token sets should be used as part of this theme option:"
#: src/app/main/ui/workspace/tokens/modals/themes.cljs:119
#, fuzzy
msgid "workspace.token.theme"
msgstr ""
#: src/app/main/ui/workspace/tokens/modals/themes.cljs #: src/app/main/ui/workspace/tokens/modals/themes.cljs
#, unused #, unused
msgid "workspace.token.theme-name" msgid "workspace.token.theme-name"
@ -6394,20 +6347,9 @@ msgstr "Theme %s"
msgid "workspace.token.themes" msgid "workspace.token.themes"
msgstr "Themes" msgstr "Themes"
#: src/app/main/ui/workspace/tokens/form.cljs:409 #: src/app/main/ui/workspace/tokens/token_pill.cljs:47
#, fuzzy msgid "workspace.token-set.not-active"
msgid "workspace.token.token-description" msgstr "Token set is not active"
msgstr ""
#: src/app/main/ui/workspace/tokens/form.cljs:373
#, fuzzy
msgid "workspace.token.token-name"
msgstr ""
#: src/app/main/ui/workspace/tokens/form.cljs:391
#, fuzzy
msgid "workspace.token.token-value"
msgstr ""
#: src/app/main/ui/workspace/sidebar.cljs:117, src/app/main/ui/workspace/sidebar.cljs:126 #: src/app/main/ui/workspace/sidebar.cljs:117, src/app/main/ui/workspace/sidebar.cljs:126
msgid "workspace.toolbar.assets" msgid "workspace.toolbar.assets"

View file

@ -332,7 +332,7 @@ msgstr "Generar nuevo token"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "Access token creado con éxito." msgstr "Access token creado con éxito."
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289
@ -1163,6 +1163,10 @@ msgstr ""
"El perfil que esta invitando tiene los emails silenciados (por reportes de " "El perfil que esta invitando tiene los emails silenciados (por reportes de "
"spam o alto indice de rebote)." "spam o alto indice de rebote)."
#: src/app/main/errors.cljs:228
msgid "errors.migration-in-progress"
msgstr "Migración en proceso"
#: src/app/main/ui/settings/password.cljs #: src/app/main/ui/settings/password.cljs
#, unused #, unused
msgid "errors.password-invalid-confirmation" msgid "errors.password-invalid-confirmation"
@ -6757,6 +6761,10 @@ msgstr "Nuevo tema"
msgid "workspace.token.themes" msgid "workspace.token.themes"
msgstr "Temas" msgstr "Temas"
#: src/app/main/ui/workspace/tokens/token_pill.cljs:47
msgid "workspace.token-set.not-active"
msgstr "El set de tokens no está aplicado"
#: src/app/main/ui/workspace/tokens/modals/themes.cljs #: src/app/main/ui/workspace/tokens/modals/themes.cljs
msgid "workspace.token.theme-name" msgid "workspace.token.theme-name"
msgstr "Tema %s" msgstr "Tema %s"

View file

@ -294,7 +294,7 @@ msgstr "Generar nuevo token"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "Token de acceso creado correctamente." msgstr "Token de acceso creado correctamente."
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289

View file

@ -332,7 +332,7 @@ msgstr "Générer un nouveau jeton"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "Jeton d'accès créé avec succès." 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:289

View file

@ -270,7 +270,7 @@ msgstr "samo sabuwar lambar tsaro"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "ka sami lambar tsaron da aka yi." 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:289

View file

@ -318,7 +318,7 @@ msgstr "יצירת אסימון חדש"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "אסימון הגישה נוצר בהצלחה." msgstr "אסימון הגישה נוצר בהצלחה."
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289

View file

@ -331,12 +331,8 @@ msgstr "Buat token baru"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success"
msgstr "Token akses berhasil dibuat."
#: src/app/main/ui/settings/access_tokens.cljs:65
msgid "dashboard.access-tokens.create.success" msgid "dashboard.access-tokens.create.success"
msgstr " " msgstr "Token akses berhasil dibuat."
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289
msgid "dashboard.access-tokens.empty.add-one" msgid "dashboard.access-tokens.empty.add-one"
@ -1051,10 +1047,6 @@ msgstr ""
"Profil yang Anda undang membisukan surel (laporan spam atau lompatan " "Profil yang Anda undang membisukan surel (laporan spam atau lompatan "
"tinggi)." "tinggi)."
#: src/app/main/errors.cljs:228
msgid "errors.migration-in-progress"
msgstr " "
#: src/app/main/ui/settings/password.cljs #: src/app/main/ui/settings/password.cljs
#, unused #, unused
msgid "errors.password-invalid-confirmation" msgid "errors.password-invalid-confirmation"
@ -1154,10 +1146,6 @@ msgstr "Surel atau kata sandi tidak benar."
msgid "errors.wrong-old-password" msgid "errors.wrong-old-password"
msgstr "Kata sandi lama tidak benar" msgstr "Kata sandi lama tidak benar"
#: src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:85
msgid "exclude"
msgstr " "
#: src/app/main/ui/settings/feedback.cljs:74 #: src/app/main/ui/settings/feedback.cljs:74
msgid "feedback.description" msgid "feedback.description"
msgstr "Deskripsi" msgstr "Deskripsi"
@ -1461,10 +1449,6 @@ msgstr "Teks"
msgid "inspect.tabs.info" msgid "inspect.tabs.info"
msgstr "Info" msgstr "Info"
#: src/app/main/ui/workspace/sidebar/options/menus/bool.cljs:80
msgid "intersection"
msgstr " "
#: src/app/main/ui/workspace/main_menu.cljs:162 #: src/app/main/ui/workspace/main_menu.cljs:162
msgid "label.shortcuts" msgid "label.shortcuts"
msgstr "Pintasan" msgstr "Pintasan"
@ -2151,10 +2135,6 @@ msgstr "Buat token"
msgid "modals.create-access-token.title" msgid "modals.create-access-token.title"
msgstr "Buat token baru" msgstr "Buat token baru"
#: src/app/main/ui/settings/access_tokens.cljs:152
msgid "modals.create-access-token.token"
msgstr " "
#: src/app/main/ui/dashboard/team.cljs:911 #: src/app/main/ui/dashboard/team.cljs:911
msgid "modals.create-webhook.submit-label" msgid "modals.create-webhook.submit-label"
msgstr "Buat kaitan web" msgstr "Buat kaitan web"
@ -3640,10 +3620,6 @@ msgstr "Kunci proporsi"
msgid "shortcuts.toggle-rulers" msgid "shortcuts.toggle-rulers"
msgstr "Tampilkan / Sembunyikan penggaris" msgstr "Tampilkan / Sembunyikan penggaris"
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:199
msgid "shortcuts.toggle-rules"
msgstr " "
#: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200 #: src/app/main/ui/workspace/sidebar/shortcuts.cljs:200
msgid "shortcuts.toggle-snap-guides" msgid "shortcuts.toggle-snap-guides"
msgstr "Pasang ke panduan" msgstr "Pasang ke panduan"
@ -6107,10 +6083,6 @@ msgstr "Klik untuk menutup jalur"
msgid "dashboard.empty-placeholder-drafts-title" msgid "dashboard.empty-placeholder-drafts-title"
msgstr "Belum ada draf." msgstr "Belum ada draf."
#: src/app/main/ui/workspace/tokens/modals/themes.cljs:119
msgid "workspace.token.theme"
msgstr " "
#: src/app/main/ui/dashboard/fonts.cljs:445 #: src/app/main/ui/dashboard/fonts.cljs:445
msgid "dashboard.fonts.empty-placeholder-viewer-sub" msgid "dashboard.fonts.empty-placeholder-viewer-sub"
msgstr "" msgstr ""

View file

@ -256,7 +256,7 @@ msgstr "Mepụta ọdịmara ọhụrụ"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "Mmepụtara ọdịmara nnweta gara nke ọma ." 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:289

View file

@ -5122,7 +5122,7 @@ msgstr "Elimina"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "Token di accesso creato con successo." msgstr "Token di accesso creato con successo."
#: src/app/main/ui/settings/access_tokens.cljs:143 #: src/app/main/ui/settings/access_tokens.cljs:143

View file

@ -303,7 +303,7 @@ msgstr "새로운 토큰 생성하기"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "엑세스 토큰이 성공적으로 생성되었습니다." msgstr "엑세스 토큰이 성공적으로 생성되었습니다."
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289

View file

@ -330,7 +330,7 @@ msgstr "Izveidot jaunu pilnvaru"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "Piekļuves pilnvara ir veiksmīgi izveidota." 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:289

View file

@ -277,7 +277,7 @@ msgstr "Jana token baru"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "Token capaian berjaya dihasilkan." msgstr "Token capaian berjaya dihasilkan."
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289

View file

@ -329,7 +329,7 @@ msgstr "Nieuw toegangsbewijs aanmaken"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "Toegangsbewijs is succesvol aangemaakt." msgstr "Toegangsbewijs is succesvol aangemaakt."
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289

View file

@ -328,7 +328,7 @@ msgstr "Gerar novo token"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "Token de acesso criado com sucesso." msgstr "Token de acesso criado com sucesso."
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289

View file

@ -314,7 +314,7 @@ msgstr "Generați jeton nou"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "Jeton de acces creat cu succes." msgstr "Jeton de acces creat cu succes."
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289

View file

@ -329,7 +329,7 @@ msgstr "Skapa ny token"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "Accesstoken skapad." msgstr "Accesstoken skapad."
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289

View file

@ -757,7 +757,7 @@ msgstr "สร้างโทเคนใหม่"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "สร้างโทเคนสำหรับการเข้าถึงสำเร็จแล้ว" msgstr "สร้างโทเคนสำหรับการเข้าถึงสำเร็จแล้ว"
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289

View file

@ -330,7 +330,7 @@ msgstr "Yeni belirteç oluştur"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "Erişim belirteci başarıyla oluşturuldu." 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:289

View file

@ -334,7 +334,7 @@ msgstr "Згенерувати новий токен"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "Токен доступу успішно створено." msgstr "Токен доступу успішно створено."
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289

View file

@ -268,7 +268,7 @@ msgstr "ṣe ìpilẹ̀sẹ̀ àmì tókìnnì"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "ṣe àyẹ̀wò àmì tókìnnì tí o ṣẹ̀dá bó ṣeyẹ." 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:289

View file

@ -300,7 +300,7 @@ msgstr "生成新令牌"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "成功创建访问令牌。" msgstr "成功创建访问令牌。"
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289

View file

@ -283,7 +283,7 @@ msgstr "產生新的 Token"
#: src/app/main/ui/settings/access-tokens.cljs #: src/app/main/ui/settings/access-tokens.cljs
#, unused #, unused
msgid "dashboard.access-tokens.create-success" msgid "dashboard.access-tokens.create.success"
msgstr "已成功建立 Access Token。" msgstr "已成功建立 Access Token。"
#: src/app/main/ui/settings/access_tokens.cljs:289 #: src/app/main/ui/settings/access_tokens.cljs:289