diff --git a/backend/src/app/email.clj b/backend/src/app/email.clj index a8ee40c4d..5bcf741f1 100644 --- a/backend/src/app/email.clj +++ b/backend/src/app/email.clj @@ -226,8 +226,8 @@ [:priority {:optional true} [:enum :high :low]] [:extra-data {:optional true} ::sm/text]]) -(def ^:private valid-context? - (sm/validator schema:context)) +(def ^:private check-context + (sm/check-fn schema:context)) (defn template-factory [& {:keys [id schema]}] @@ -236,10 +236,8 @@ (sm/check-fn schema) (constantly nil))] (fn [context] - (assert (valid-context? context) "expected a valid context") - (check-fn context) - - (let [email (build-email-template id context)] + (let [context (-> context check-context check-fn) + email (build-email-template id context)] (when-not email (ex/raise :type :internal :code :email-template-does-not-exists @@ -271,7 +269,7 @@ "Schedule an already defined email to be sent using asynchronously using worker task." [{:keys [::conn ::factory] :as context}] - (assert (db/connection? conn) "expected a valid database connection") + (assert (db/connectable? conn) "expected a valid database connection or pool") (let [email (if factory (factory context) @@ -348,7 +346,7 @@ [:subject ::sm/text] [:content ::sm/text]]) -(def feedback +(def user-feedback "A profile feedback email." (template-factory :id ::feedback diff --git a/backend/src/app/rpc/commands/feedback.clj b/backend/src/app/rpc/commands/feedback.clj index c641a4ff4..e3525ded4 100644 --- a/backend/src/app/rpc/commands/feedback.clj +++ b/backend/src/app/rpc/commands/feedback.clj @@ -17,7 +17,7 @@ [app.rpc.doc :as-alias doc] [app.util.services :as sv])) -(declare ^:private send-feedback!) +(declare ^:private send-user-feedback!) (def ^:private schema:send-user-feedback [:map {:title "send-user-feedback"} @@ -34,14 +34,16 @@ :hint "feedback not enabled")) (let [profile (profile/get-profile pool profile-id)] - (send-feedback! pool profile params) + (send-user-feedback! pool profile params) nil)) -(defn- send-feedback! +(defn- send-user-feedback! [pool profile params] - (let [dest (cf/get :feedback-destination)] + (let [dest (or (cf/get :user-feedback-destination) + ;; LEGACY + (cf/get :feedback-destination))] (eml/send! {::eml/conn pool - ::eml/factory eml/feedback + ::eml/factory eml/user-feedback :from dest :to dest :profile profile diff --git a/frontend/resources/images/icons/board-2.svg b/frontend/resources/images/icons/board-2.svg new file mode 100644 index 000000000..70a44ea15 --- /dev/null +++ b/frontend/resources/images/icons/board-2.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/src/app/main/data/dashboard.cljs b/frontend/src/app/main/data/dashboard.cljs index e4530c9f9..404fb8bf0 100644 --- a/frontend/src/app/main/data/dashboard.cljs +++ b/frontend/src/app/main/data/dashboard.cljs @@ -450,7 +450,9 @@ (ptk/reify ::update-team ptk/UpdateEvent (update [_ state] - (assoc-in state [:teams id :name] name)) + (-> state + (assoc-in [:teams id :name] name) + (assoc-in [:team :name] name))) ptk/WatchEvent (watch [_ _ _] diff --git a/frontend/src/app/main/render.cljs b/frontend/src/app/main/render.cljs index d58ce0fe9..6ee64dc01 100644 --- a/frontend/src/app/main/render.cljs +++ b/frontend/src/app/main/render.cljs @@ -338,7 +338,7 @@ ;; used to render thumbnails on assets panel. (mf/defc component-svg {::mf/wrap [mf/memo #(mf/deferred % ts/idle-then-raf)]} - [{:keys [objects root-shape show-grids? zoom class] :or {zoom 1} :as props}] + [{:keys [objects root-shape show-grids? is-hidden zoom class] :or {zoom 1} :as props}] (when root-shape (let [root-shape-id (:id root-shape) include-metadata (mf/use-ctx export/include-metadata-ctx) @@ -381,13 +381,14 @@ :xmlns:penpot (when include-metadata "https://penpot.app/xmlns") :fill "none"} - [:* - [:> shape-container {:shape root-shape'} - [:& (mf/provider muc/is-component?) {:value true} - [:& root-shape-wrapper {:shape root-shape' :view-box vbox}]]] + (when-not is-hidden + [:* + [:> shape-container {:shape root-shape'} + [:& (mf/provider muc/is-component?) {:value true} + [:& root-shape-wrapper {:shape root-shape' :view-box vbox}]]] - (when show-grids? - [:& empty-grids {:root-shape-id root-shape-id :objects objects}])]]))) + (when show-grids? + [:& empty-grids {:root-shape-id root-shape-id :objects objects}])])]))) (mf/defc component-svg-thumbnail {::mf/wrap [mf/memo #(mf/deferred % ts/idle-then-raf)]} diff --git a/frontend/src/app/main/ui/components/shape_icon.cljs b/frontend/src/app/main/ui/components/shape_icon.cljs index 060213681..86ce8f3bf 100644 --- a/frontend/src/app/main/ui/components/shape_icon.cljs +++ b/frontend/src/app/main/ui/components/shape_icon.cljs @@ -9,6 +9,7 @@ [app.common.types.component :as ctk] [app.common.types.shape :as cts] [app.common.types.shape.layout :as ctl] + [app.config :as cf] [app.main.ui.icons :as i] [rumext.v2 :as mf])) @@ -31,7 +32,7 @@ i/flex-grid :else - i/board) + (if (cf/external-feature-flag "boards-01" "test") i/board-2 i/board)) ;; TODO -> THUMBNAIL ICON :image i/img :line (if (cts/has-images? shape) i/img i/path) @@ -56,7 +57,7 @@ (if main-instance? i/component (case type - :frame i/board + :frame (if (cf/external-feature-flag "boards-01" "test") i/board-2 i/board) :image i/img :shape i/path :text i/text diff --git a/frontend/src/app/main/ui/dashboard/team_form.cljs b/frontend/src/app/main/ui/dashboard/team_form.cljs index cf8796b75..631b17556 100644 --- a/frontend/src/app/main/ui/dashboard/team_form.cljs +++ b/frontend/src/app/main/ui/dashboard/team_form.cljs @@ -73,7 +73,9 @@ {::mf/register modal/components ::mf/register-as :team-form} [{:keys [team] :as props}] - (let [initial (mf/use-memo (fn [] (or team {}))) + (let [initial (mf/use-memo (fn [] + (or (some-> team (select-keys [:name :id])) + {}))) form (fm/use-form :schema schema:team-form :initial initial) handle-keydown diff --git a/frontend/src/app/main/ui/icons.cljs b/frontend/src/app/main/ui/icons.cljs index c73c7d1bd..29b057557 100644 --- a/frontend/src/app/main/ui/icons.cljs +++ b/frontend/src/app/main/ui/icons.cljs @@ -63,6 +63,7 @@ (def ^:icon arrow (icon-xref :arrow)) (def ^:icon asc-sort (icon-xref :asc-sort)) (def ^:icon board (icon-xref :board)) +(def ^:icon board-2 (icon-xref :board-2)) (def ^:icon boards-thumbnail (icon-xref :boards-thumbnail)) (def ^:icon boolean-difference (icon-xref :boolean-difference)) (def ^:icon boolean-exclude (icon-xref :boolean-exclude)) diff --git a/frontend/src/app/main/ui/releases/v2_3.cljs b/frontend/src/app/main/ui/releases/v2_3.cljs index 4d3789a10..8b3040b8f 100644 --- a/frontend/src/app/main/ui/releases/v2_3.cljs +++ b/frontend/src/app/main/ui/releases/v2_3.cljs @@ -41,7 +41,7 @@ "The introduction of our brand new Plugin system allows you to access even richer ecosystem of capabilities."] [:p {:class (stl/css :feature-content)} - "We are beyond excitement about how this will further involve the Penpot community in building the best design and prototyping platform."] + "We are beyond excited about how this will further involve the Penpot community in building the best design and prototyping platform."] [:p {:class (stl/css :feature-content)} "Let’s dive in!"]] @@ -69,7 +69,7 @@ "Penpot Plugins encourage developers to easily customize and expand the platform using standard web technologies like JavaScript, CSS, and HTML."] [:p {:class (stl/css :feature-content)} - "Find everything you need in ouor full comprehensive documentation to start building your plugins now!"]] + "Find everything you need in our full comprehensive documentation to start building your plugins now!"]] [:div {:class (stl/css :navigation)} [:& c/navigation-bullets @@ -101,7 +101,7 @@ "Be sure to keep an eye on our evolving " [:a {:href "https://penpot.app/penpothub" :target "_blank"} "Penpot Hub"] " to pick the ones that are best suited to enhance your workflow."] [:p {:class (stl/css :feature-content)} - "This is just the beginning of a myriad of possibilities. Let’s build this community together <3."]] + "This is just the beginning of a myriad of possibilities. Let’s build this community together ❤️."]] [:div {:class (stl/css :navigation)} diff --git a/frontend/src/app/main/ui/workspace/main_menu.cljs b/frontend/src/app/main/ui/workspace/main_menu.cljs index 6d01606fc..f002f90a2 100644 --- a/frontend/src/app/main/ui/workspace/main_menu.cljs +++ b/frontend/src/app/main/ui/workspace/main_menu.cljs @@ -24,6 +24,7 @@ [app.main.data.workspace.libraries :as dwl] [app.main.data.workspace.shortcuts :as sc] [app.main.data.workspace.undo :as dwu] + [app.main.data.workspace.versions :as dwv] [app.main.features :as features] [app.main.refs :as refs] [app.main.store :as st] @@ -537,6 +538,19 @@ (when (kbd/enter? event) (on-show-version-history event)))) + on-pin-version + (mf/use-fn + (mf/deps file-id) + (fn [_] + (st/emit! (dwv/create-version file-id)))) + + on-pin-version-key-down + (mf/use-fn + (mf/deps on-pin-version) + (fn [event] + (when (kbd/enter? event) + (on-pin-version event)))) + on-export-shapes (mf/use-fn #(st/emit! (de/show-workspace-export-dialog {:origin "workspace:menu"}))) @@ -599,6 +613,15 @@ [:span {:class (stl/css :item-name)} (tr "dashboard.add-shared")]])) + [:div {:class (stl/css :separator)}] + + [:> 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"} + [:span {:class (stl/css :item-name)} + (tr "dashboard.create-version-menu")]] + [:> dropdown-menu-item* {:class (stl/css :submenu-item) :on-click on-show-version-history :on-key-down on-show-version-history-key-down @@ -606,6 +629,8 @@ [:span {:class (stl/css :item-name)} (tr "dashboard.show-version-history")]] + [:div {:class (stl/css :separator)}] + [:> dropdown-menu-item* {:class (stl/css :submenu-item) :on-click on-export-shapes :on-key-down on-export-shapes-key-down diff --git a/frontend/src/app/main/ui/workspace/main_menu.scss b/frontend/src/app/main/ui/workspace/main_menu.scss index 5ffd8efaa..7afcba4f8 100644 --- a/frontend/src/app/main/ui/workspace/main_menu.scss +++ b/frontend/src/app/main/ui/workspace/main_menu.scss @@ -43,9 +43,12 @@ } .separator { - margin-top: $s-8; + border-top: $s-1 solid var(--color-background-quaternary); height: $s-4; - border-top: $s-1 solid var(--color-background-secondary); + left: calc(-1 * $s-4); + margin-top: $s-8; + position: relative; + width: calc(100% + $s-8); } .shortcut { diff --git a/frontend/src/app/main/ui/workspace/sidebar.cljs b/frontend/src/app/main/ui/workspace/sidebar.cljs index 6886108a0..cc9a9c550 100644 --- a/frontend/src/app/main/ui/workspace/sidebar.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar.cljs @@ -237,15 +237,11 @@ [:& comments-sidebar] (true? is-history?) - [:> tab-switcher* {:tabs #js [#js {:label "History" :id "history" :content versions-tab} - #js {:label "Actions" :id "actions" :content history-tab}] - :default-selected "history" - ;;:selected (name section) - ;;:on-change-tab on-tab-change - :class (stl/css :left-sidebar-tabs) - ;;:action-button-position "start" - ;;:action-button (mf/html [:& collapse-button {:on-click handle-collapse}]) - }] + [:> tab-switcher* + {:tabs #js [#js {:label (tr "workspace.versions.tab.history") :id "history" :content versions-tab} + #js {:label (tr "workspace.versions.tab.actions") :id "actions" :content history-tab}] + :default-selected "history" + :class (stl/css :left-sidebar-tabs)}] :else [:> options-toolbox props])]]])) diff --git a/frontend/src/app/main/ui/workspace/sidebar.scss b/frontend/src/app/main/ui/workspace/sidebar.scss index 64ca985a4..d4d606d12 100644 --- a/frontend/src/app/main/ui/workspace/sidebar.scss +++ b/frontend/src/app/main/ui/workspace/sidebar.scss @@ -113,4 +113,5 @@ $width-settings-bar-max: $s-500; .versions-tab { width: 100%; overflow: hidden; + height: calc(100vh - $s-88); } diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs index 460a395de..6c4d03a07 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets.cljs @@ -133,23 +133,23 @@ options [{:name (tr "workspace.assets.box-filter-all") - :id "section-all" + :id "all" :handler on-section-filter-change} {:name (tr "workspace.assets.components") - :id "section-components" + :id "components" :handler on-section-filter-change} (when (not components-v2) {:name (tr "workspace.assets.graphics") - :id "section-graphics" + :id "graphics" :handler on-section-filter-change}) {:name (tr "workspace.assets.colors") - :id "section-colors" + :id "colors" :handler on-section-filter-change} {:name (tr "workspace.assets.typography") - :id "section-typographies" + :id "typographies" :handler on-section-filter-change}]] [:article {:class (stl/css :assets-bar)} 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 b8bf2959f..e64313bbf 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets/common.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets/common.cljs @@ -270,7 +270,7 @@ (mf/defc component-item-thumbnail "Component that renders the thumbnail image or the original SVG." {::mf/props :obj} - [{:keys [file-id root-shape component container class]}] + [{:keys [file-id root-shape component container class is-hidden]}] (let [page-id (:main-instance-page component) root-id (:main-instance-id component) retry (mf/use-state 0) @@ -290,7 +290,8 @@ (when (< @retry 3) (inc retry))))] - (if (and (some? thumbnail-uri) (contains? cf/flags :component-thumbnails)) + (if (and (some? thumbnail-uri) + (contains? cf/flags :component-thumbnails)) [:& component-svg-thumbnail {:thumbnail-uri thumbnail-uri :class class @@ -303,7 +304,8 @@ {:root-shape root-shape :class class :objects (:objects container) - :show-grids? true}]))) + :show-grids? true + :is-hidden is-hidden}]))) (defn generate-components-menu-entries [shapes components-v2] 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 8efffa844..77974c20a 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets/components.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets/components.cljs @@ -171,13 +171,13 @@ (when ^boolean dragging? [:div {:class (stl/css :dragging)}])] - (when visible? - [:& cmm/component-item-thumbnail {:file-id file-id - :class (stl/css-case :thumbnail true - :asset-list-thumbnail (not listing-thumbs?)) - :root-shape root-shape - :component component - :container container}])])])) + [:& cmm/component-item-thumbnail {:file-id file-id + :class (stl/css-case :thumbnail true + :asset-list-thumbnail (not listing-thumbs?)) + :root-shape root-shape + :component component + :container container + :is-hidden (not visible?)}]])])) (mf/defc components-group {::mf/wrap-props false} 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 b255013aa..052a7bbe5 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 @@ -74,14 +74,13 @@ (mf/defc file-library-content {::mf/wrap-props false} - [{:keys [file local? open-status-ref on-clear-selection]}] + [{:keys [file local? open-status-ref on-clear-selection filters]}] (let [components-v2 (mf/use-ctx ctx/components-v2) open-status (mf/deref open-status-ref) file-id (:id file) project-id (:project-id file) - filters (mf/use-ctx cmm/assets-filters) filters-section (:section filters) filters-term (:term filters) diff --git a/frontend/src/app/main/ui/workspace/sidebar/history.cljs b/frontend/src/app/main/ui/workspace/sidebar/history.cljs index 618e397b0..753c99c3c 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/history.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/history.cljs @@ -9,6 +9,7 @@ (:require [app.common.data :as d] [app.common.data.macros :as dm] + [app.config :as cf] [app.main.data.workspace.undo :as dwu] [app.main.refs :as refs] [app.main.store :as st] @@ -154,7 +155,7 @@ :circle i/elipse :text i/text :path i/path - :frame i/board + :frame (if (cf/external-feature-flag "boards-01" "test") i/board-2 i/board) :group i/group :color i/drop-icon :typography i/text-palette diff --git a/frontend/src/app/main/ui/workspace/sidebar/layers.cljs b/frontend/src/app/main/ui/workspace/sidebar/layers.cljs index 88f3c4601..9dd8d234a 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/layers.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/layers.cljs @@ -12,6 +12,7 @@ [app.common.files.helpers :as cfh] [app.common.types.shape :as cts] [app.common.uuid :as uuid] + [app.config :as cf] [app.main.data.workspace :as dw] [app.main.refs :as refs] [app.main.store :as st] @@ -335,7 +336,7 @@ :on-click add-filter} [:div {:class (stl/css :filter-menu-item-name-wrapper)} [:span {:class (stl/css :filter-menu-item-icon)} - i/board] + (if (cf/external-feature-flag "boards-01" "test") i/board-2 i/board)] [:span {:class (stl/css :filter-menu-item-name)} (tr "workspace.sidebar.layers.frames")]] diff --git a/frontend/src/app/main/ui/workspace/sidebar/versions.scss b/frontend/src/app/main/ui/workspace/sidebar/versions.scss index 703f8d3be..a924ae31d 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/versions.scss +++ b/frontend/src/app/main/ui/workspace/sidebar/versions.scss @@ -8,6 +8,10 @@ .version-toolbox { padding: $s-8; + height: 100%; + display: grid; + overflow: hidden; + grid-template-rows: auto auto 1fr; } .versions-entry-empty { @@ -49,6 +53,8 @@ display: flex; flex-direction: column; gap: $s-6; + overflow: auto; + margin: 0; } .version-entry { diff --git a/frontend/src/app/main/ui/workspace/top_toolbar.cljs b/frontend/src/app/main/ui/workspace/top_toolbar.cljs index fb9f3473c..eb19fc6f7 100644 --- a/frontend/src/app/main/ui/workspace/top_toolbar.cljs +++ b/frontend/src/app/main/ui/workspace/top_toolbar.cljs @@ -10,6 +10,7 @@ [app.common.data.macros :as dm] [app.common.geom.point :as gpt] [app.common.media :as cm] + [app.config :as cf] [app.main.data.events :as ev] [app.main.data.modal :as modal] [app.main.data.workspace :as dw] @@ -146,7 +147,7 @@ :on-click select-drawtool :data-tool "frame" :data-testid "artboard-btn"} - i/board]] + (if (cf/external-feature-flag "boards-01" "test") i/board-2 i/board)]] [:li [:button {:title (tr "workspace.toolbar.rect" (sc/get-tooltip :draw-rect)) diff --git a/frontend/src/app/util/forms.cljs b/frontend/src/app/util/forms.cljs index e5b710aba..f628b06b2 100644 --- a/frontend/src/app/util/forms.cljs +++ b/frontend/src/app/util/forms.cljs @@ -148,9 +148,7 @@ (mf/set-ref-val! internal-state initial)) (mf/with-effect [initial] - (if (fn? initial) - (swap! form-mutator update :data merge (initial)) - (swap! form-mutator update :data merge initial))) + (swap! form-mutator d/deep-merge initial)) form-mutator)) diff --git a/frontend/translations/en.po b/frontend/translations/en.po index 1e4340700..2ae35aefa 100644 --- a/frontend/translations/en.po +++ b/frontend/translations/en.po @@ -400,6 +400,9 @@ msgstr "Add as Shared Library" msgid "dashboard.show-version-history" msgstr "Version history" +msgid "dashboard.create-version-menu" +msgstr "Pin this version" + #: src/app/main/ui/settings/profile.cljs:72 msgid "dashboard.change-email" msgstr "Change email" @@ -6565,179 +6568,8 @@ msgstr "Open version menu" msgid "workspace.viewport.click-to-close-path" msgstr "Click to close the path" -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.create-token" -msgstr "Create new %s token" +msgid "workspace.versions.tab.history" +msgstr "History" -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.edit-token" -msgstr "Edit token" - -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.resolved-value" -msgstr "Resolved value: " - -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.token-name" -msgstr "Name" - -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.enter-token-name" -msgstr "Enter %s token name" - -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.token-value" -msgstr "Value" - -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.enter-token-value" -msgstr "Enter token value or alias" - -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.token-description" -msgstr "Description" - -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.enter-token-description" -msgstr "Add a description (optional)" - -#: src/app/main/ui/workspace/tokens/sidebar.cljs -msgid "workspace.token.original-value" -msgstr "Original value: " - -#: src/app/main/ui/workspace/tokens/sidebar.cljs -msgid "workspace.token.no-themes" -msgstr "There are no themes." - -#: src/app/main/ui/workspace/tokens/sidebar.cljs -msgid "workspace.token.create-one" -msgstr "Create one." - -#: src/app/main/ui/workspace/tokens/sidebar.cljs -msgid "workspace.token.add set" -msgstr "Add set" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.save-theme" -msgstr "Save theme" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.create-theme-title" -msgstr "Create theme" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.edit-theme-title" -msgstr "Edit theme" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.delete-theme-title" -msgstr "Delete theme" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.no-themes-currently" -msgstr "You currently have no themes." - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.create-new-theme" -msgstr "Create your first theme now." - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.new-theme" -msgstr "New theme" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.themes" -msgstr "Themes" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.theme-name" -msgstr "Theme %s" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.no-sets" -msgstr "No sets" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.num-sets" -msgstr "%s sets" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.back-to-themes" -msgstr "Back to theme list" - -#: src/app/main/ui/workspace/tokens/theme_select.cljs -msgid "workspace.token.edit-themes" -msgstr "Edit themes" - -#: src/app/main/ui/workspace/tokens/theme_select.cljs -msgid "workspace.token.no-active-theme" -msgstr "No theme active" - -#: src/app/main/ui/workspace/tokens/theme_select.cljs -msgid "workspace.token.active-themes" -msgstr "%s active themes" - -#: src/app/main/ui/workspace/tokens/sets.cljs -msgid "workspace.token.grouping-set-alert" -msgstr "Token Set grouping is not supported yet." - -#: src/app/main/ui/workspace/tokens/sets.cljs -msgid "workspace.token.select-set" -msgstr "Select set." - -#: src/app/main/ui/workspace/tokens/sets.cljs -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/sets.cljs -msgid "workspace.token.no-sets-yet" -msgstr "There are no sets yet." - -#: src/app/main/ui/workspace/tokens/sets.cljs -msgid "workspace.token.no-sets-create" -msgstr "There are no sets defined yet. Create one first." - -msgid "workspace.versions.button.save" -msgstr "Save version" - -msgid "workspace.versions.button.pin" -msgstr "Pin version" - -msgid "workspace.versions.button.restore" -msgstr "Restore version" - -msgid "workspace.versions.empty" -msgstr "There are no versions yet" - -msgid "workspace.versions.autosaved.version" -msgstr "Autosaved %s" - -msgid "workspace.versions.autosaved.entry" -msgstr "%s autosave versions" - -msgid "workspace.versions.loading" -msgstr "Loading..." - -msgid "workspace.versions.filter.label" -msgstr "Versions filter" - -msgid "workspace.versions.filter.all" -msgstr "All versions" - -msgid "workspace.versions.filter.mine" -msgstr "My versions" - -msgid "workspace.versions.filter.user" -msgstr "%s's versions" - -msgid "workspace.versions.restore-warning" -msgstr "Do you want to restore this version?" - -msgid "workspace.versions.snapshot-menu" -msgstr "Open snapshot menu" - -msgid "workspace.versions.version-menu" -msgstr "Open version menu" - -msgid "workspace.versions.expand-snapshot" -msgstr "Expand snapshots" +msgid "workspace.versions.tab.actions" +msgstr "Actions" diff --git a/frontend/translations/es.po b/frontend/translations/es.po index d08a57838..1c904b1b1 100644 --- a/frontend/translations/es.po +++ b/frontend/translations/es.po @@ -402,6 +402,9 @@ msgstr "Añadir como Biblioteca Compartida" msgid "dashboard.show-version-history" msgstr "Histórico de versiones" +msgid "dashboard.create-version-menu" +msgstr "Guardar esta versión" + #: src/app/main/ui/settings/profile.cljs:72 msgid "dashboard.change-email" msgstr "Cambiar correo" @@ -6561,186 +6564,8 @@ msgstr "Abrir menu de versiones" msgid "workspace.viewport.click-to-close-path" msgstr "Pulsar para cerrar la ruta" -msgid "errors.maximum-invitations-by-request-reached" -msgstr "Se ha alcanzado el número máximo (%s) de correos electrónicos que se pueden invitar en una sola solicitud" +msgid "workspace.versions.tab.history" +msgstr "Histórico" -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.create-token" -msgstr "Crear un token de %s" - -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.edit-token" -msgstr "Editar token" - -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.resolved-value" -msgstr "Valor resuelto: " - -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.token-name" -msgstr "Nombre" - -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.enter-token-name" -msgstr "Introduce un nombre para el token %s" - -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.token-value" -msgstr "Valor" - -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.enter-token-value" -msgstr "Introduce un valor o alias" - -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.token-description" -msgstr "Descripción" - -#: src/app/main/ui/workspace/tokens/form.cljs -msgid "workspace.token.enter-token-description" -msgstr "Añade una Descripción (opcional)" - -#: src/app/main/ui/workspace/tokens/sidebar.cljs -msgid "workspace.token.original-value" -msgstr "Valor original: " - -#: src/app/main/ui/workspace/tokens/sidebar.cljs -msgid "workspace.token.no-themes" -msgstr "No hay temas." - -#: src/app/main/ui/workspace/tokens/sidebar.cljs -msgid "workspace.token.create-one" -msgstr "Crear uno." - -#: src/app/main/ui/workspace/tokens/sidebar.cljs -msgid "workspace.token.add set" -msgstr "Añadir set" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.save-theme" -msgstr "Guardar tema" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.create-theme-title" -msgstr "Crear tema" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.edit-theme-title" -msgstr "Editar tema" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.delete-theme-title" -msgstr "Borrar theme" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.no-themes-currently" -msgstr "Actualmente no existen temas." - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.create-new-theme" -msgstr "Crea un nuevo tema ahora." - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.new-theme" -msgstr "Nuevo tema" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.themes" -msgstr "Temas" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.theme-name" -msgstr "Tema %s" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.no-sets" -msgstr "No hay sets" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.num-sets" -msgstr "%s sets" - -#: src/app/main/ui/workspace/tokens/modals/themes.cljs -msgid "workspace.token.back-to-themes" -msgstr "Volver al listado de temas" - -#: src/app/main/ui/workspace/tokens/theme_select.cljs -msgid "workspace.token.edit-themes" -msgstr "Editar temas" - -#: src/app/main/ui/workspace/tokens/theme_select.cljs -msgid "workspace.token.no-active-theme" -msgstr "No hay temas activos" - -#: src/app/main/ui/workspace/tokens/theme_select.cljs -msgid "workspace.token.active-themes" -msgstr "%s temas activos" - -#: src/app/main/ui/workspace/tokens/sets.cljs -msgid "workspace.token.grouping-set-alert" -msgstr "La agrupación de sets aun no está soportada." - -#: src/app/main/ui/workspace/tokens/sets.cljs -msgid "workspace.token.select-set" -msgstr "Selecciona set" - -#: src/app/main/ui/workspace/tokens/sets.cljs -msgid "workspace.token.set-selection-theme" -msgstr "Define que sets de tokens deberian formar parte de este tema:" - -#: src/app/main/ui/workspace/tokens/sets.cljs -msgid "workspace.token.no-sets" -msgstr "Aun no hay sets." - -#: src/app/main/ui/workspace/tokens/sets.cljs -msgid "workspace.create-one" -msgstr "Crea uno." - -#: src/app/main/ui/workspace/tokens/sets.cljs -msgid "workspace.token.no-sets-create" -msgstr "Aun no hay sets definidos. Crea uno primero" - -msgid "workspace.versions.button.save" -msgstr "Guardar versión" - -msgid "workspace.versions.button.pin" -msgstr "Fijar versión" - -msgid "workspace.versions.button.restore" -msgstr "Restaurar versión" - -msgid "workspace.versions.empty" -msgstr "No hay versiones aún" - -msgid "workspace.versions.autosaved.version" -msgstr "Autoguardado %s" - -msgid "workspace.versions.autosaved.entry" -msgstr "%s versiones de autoguardado" - -msgid "workspace.versions.loading" -msgstr "Cargando..." - -msgid "workspace.versions.filter.label" -msgstr "Filtro de versiones" - -msgid "workspace.versions.filter.all" -msgstr "Todas las versiones" - -msgid "workspace.versions.filter.mine" -msgstr "Mis versiones" - -msgid "workspace.versions.filter.user" -msgstr "Versiones de %s" - -msgid "workspace.versions.restore-warning" -msgstr "¿Quieres restaurar esta versión?" - -msgid "workspace.versions.snapshot-menu" -msgstr "Abrir menu de versiones" - -msgid "workspace.versions.version-menu" -msgstr "Abrir menu de versiones" - -msgid "workspace.versions.expand-snapshot" -msgstr "Expandir versiones" +msgid "workspace.versions.tab.actions" +msgstr "Acciones"