From 4be8d77a79a403a77b401d785713f983d8b0bc66 Mon Sep 17 00:00:00 2001 From: orhtej2 <2871798+orhtej2@users.noreply.github.com> Date: Thu, 20 Mar 2025 22:50:25 +0100 Subject: [PATCH 01/12] :books: Update unofficial-options.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mateusz Szymański <2871798+orhtej2@users.noreply.github.com> --- docs/technical-guide/getting-started/unofficial-options.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/technical-guide/getting-started/unofficial-options.md b/docs/technical-guide/getting-started/unofficial-options.md index fea02fc83..24f05f2a7 100644 --- a/docs/technical-guide/getting-started/unofficial-options.md +++ b/docs/technical-guide/getting-started/unofficial-options.md @@ -9,6 +9,7 @@ There are some other options, **NOT SUPPORTED BY PENPOT**: * Install with Podman instead of Docker. * Try the under development Penpot Desktop app. * Try a simple Kubernetes Deployment option penpot-kubernetes. +* Penpot is available in the catalog of apps installable on YunoHost instances. * Or try a fully manual installation if you have a really specific use case.. For help, you can look at the [Architecture][1] section and the Docker configuration files. [1]: /technical-guide/developer/architecture From 95d9403790e025a06405b8b3740c0681717ec3bf Mon Sep 17 00:00:00 2001 From: Xavier Julian Date: Wed, 19 Mar 2025 12:55:58 +0100 Subject: [PATCH 02/12] :sparkles: Resize tokens panel on resize --- frontend/src/app/main/ui/hooks/resize.cljs | 60 ++++++++++++++++--- .../app/main/ui/workspace/tokens/sidebar.cljs | 1 + 2 files changed, 52 insertions(+), 9 deletions(-) diff --git a/frontend/src/app/main/ui/hooks/resize.cljs b/frontend/src/app/main/ui/hooks/resize.cljs index 54d5f4e2d..84a89125f 100644 --- a/frontend/src/app/main/ui/hooks/resize.cljs +++ b/frontend/src/app/main/ui/hooks/resize.cljs @@ -14,6 +14,7 @@ [app.main.ui.context :as ctx] [app.main.ui.hooks :as hooks] [app.util.dom :as dom] + [app.util.globals :as glob] [app.util.storage :as storage] [rumext.v2 :as mf])) @@ -34,6 +35,28 @@ (set! last-resize-type type)) (defn use-resize-hook + "Allows a node to be resized by dragging, and calculates the new size based on the drag setting a maximum and minimum value. + + Parameters: + - `key` - A unique key to identify the resize hook. + - `initial` - The initial size of the node. + - `min-val` - The minimum value the size can be. + - `max-val` - The maximum value the size can be. It can be a number or a string representing either a fixed value or a percentage (0 to 1). + - `axis` - The axis to resize on, either `:x` or `:y`. + - `negate?` - If `true`, the axis is negated. + - `resize-type` - The type of resize, either `:width` or `:height`. + - `on-change-size` - A function to call when the size changes. + + Returns: + - An object with the following: + + - `:on-pointer-down` - A function to call when the pointer is pressed down. + - `:on-lost-pointer-capture` - A function to call when the pointer is released. + - `:on-pointer-move` - A function to call when the pointer is moved. + - `:parent-ref` - A reference to the node. + - `:set-size` - A function to set the size. + - `:size` - The current size." + ([key initial min-val max-val axis negate? resize-type] (use-resize-hook key initial min-val max-val axis negate? resize-type nil)) @@ -48,14 +71,26 @@ start-size-ref (mf/use-ref nil) start-ref (mf/use-ref nil) - window-height (dom/get-window-height) + ;; Since Penpot is not responsive designed, this value will only refer to vertical axis. + window-height* (mf/use-state #(dom/get-window-height)) + window-height (deref window-height*) + ;; In case max-val is a string, we need to parse it as a double. max-val (mf/with-memo [max-val window-height] (let [parsed-max-val (when (string? max-val) (d/parse-double max-val))] (if parsed-max-val (* window-height parsed-max-val) max-val))) + set-size + (mf/use-fn + (mf/deps file-id key min-val max-val window-height) + (fn [new-size] + (let [new-size (mth/clamp new-size min-val max-val)] + (reset! current-size* new-size) + ;; Save the new size in the local storage for this file and this specific node. + (swap! storage/user update-persistent-state file-id key new-size)))) + on-pointer-down (mf/use-fn (mf/deps current-size) @@ -89,21 +124,28 @@ start-size (mf/ref-val start-size-ref) new-size (-> (+ start-size delta) (max min-val) (min max-val))] - (reset! current-size* new-size) - (swap! storage/user update-persistent-state file-id key new-size))))) - set-size + (set-size new-size))))) + + on-resize-window (mf/use-fn - (mf/deps on-change-size file-id key) - (fn [new-size] - (let [new-size (mth/clamp new-size min-val max-val)] - (reset! current-size* new-size) - (swap! storage/user update-persistent-state file-id key new-size))))] + (fn [] + (let [new-window-height (dom/get-window-height)] + (reset! window-height* new-window-height))))] (mf/with-effect [on-change-size current-size] (when on-change-size (on-change-size current-size))) + (mf/with-effect [] + (.addEventListener glob/window "resize" on-resize-window) + (fn [] + (.removeEventListener glob/window "resize" on-resize-window))) + + (mf/with-effect [window-height] + (let [new-size (mth/clamp current-size min-val max-val)] + (set-size new-size))) + {:on-pointer-down on-pointer-down :on-lost-pointer-capture on-lost-pointer-capture :on-pointer-move on-pointer-move diff --git a/frontend/src/app/main/ui/workspace/tokens/sidebar.cljs b/frontend/src/app/main/ui/workspace/tokens/sidebar.cljs index 16f27a42f..2fe682fb3 100644 --- a/frontend/src/app/main/ui/workspace/tokens/sidebar.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/sidebar.cljs @@ -233,6 +233,7 @@ (mf/defc token-sets-section* {::mf/private true} [{:keys [resize-height] :as props}] + (let [can-edit? (mf/use-ctx ctx/can-edit?)] From 7bc000517f1f23b260c83b6f7385af5d3b46d5fc Mon Sep 17 00:00:00 2001 From: Eva Marco Date: Mon, 24 Mar 2025 16:10:16 +0100 Subject: [PATCH 03/12] :bug: Fix modal position when colopicker is open (#6139) --- .../app/main/ui/workspace/tokens/modals.cljs | 54 ++++++++++++++----- 1 file changed, 40 insertions(+), 14 deletions(-) diff --git a/frontend/src/app/main/ui/workspace/tokens/modals.cljs b/frontend/src/app/main/ui/workspace/tokens/modals.cljs index 2f23ea933..fe7e4504b 100644 --- a/frontend/src/app/main/ui/workspace/tokens/modals.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/modals.cljs @@ -7,6 +7,7 @@ (ns app.main.ui.workspace.tokens.modals (:require-macros [app.main.style :as stl]) (:require + [app.common.data.macros :as dm] [app.main.data.modal :as modal] [app.main.refs :as refs] [app.main.ui.ds.buttons.icon-button :refer [icon-button*]] @@ -20,30 +21,55 @@ (defn calculate-position "Calculates the style properties for the given coordinates and position" - [{vh :height} position x y] - (let [;; picker height in pixels - h 510 + [{vh :height} position x y color?] + (let [;; picker height in pixels + ;; TODO: Revisit these harcoded values + h (if color? 610 510) ;; Checks for overflow outside the viewport height - overflow-fix (max 0 (+ y (- 50) h (- vh))) - - x-pos 325] + max-y (- vh h) + overflow-fix (max 0 (+ y (- 50) h (- vh))) + bottom-offset "1rem" + top-offset (dm/str (- y 70) "px") + max-height-top (str "calc(100vh - " top-offset) + max-height-bottom (str "calc(100vh -" bottom-offset) + x-pos 325 + rulers? (mf/deref refs/rulers?) + left-offset (if rulers? 80 58) + left-position (dm/str (- x x-pos) "px")] (cond - (or (nil? x) (nil? y)) {:left "auto" :right "16rem" :top "4rem"} - (= position :left) {:left (str (- x x-pos) "px") - :top (str (- y 50 overflow-fix) "px")} - :else {:left (str (+ x 80) "px") - :top (str (- y 70 overflow-fix) "px")}))) + (or (nil? x) (nil? y)) + {:left "auto" :right "16rem" :top "4rem"} -(defn use-viewport-position-style [x y position] + (= position :left) + (if (> y max-y) + {:left left-position + :bottom bottom-offset + :maxHeight max-height-bottom} + + {:left left-position + :maxHeight max-height-top + :top (dm/str (- y 50 overflow-fix) "px")}) + + :else + (if (> y max-y) + {:left (dm/str (+ x left-offset) "px") + :bottom bottom-offset + :maxHeight max-height-bottom} + + {:left (dm/str (+ x left-offset) "px") + :top (dm/str (- y 70 overflow-fix) "px") + :maxHeight max-height-top})))) + +(defn use-viewport-position-style [x y position color?] (let [vport (-> (l/derived :vport refs/workspace-local) (mf/deref))] - (-> (calculate-position vport position x y) + (-> (calculate-position vport position x y color?) (clj->js)))) (mf/defc token-update-create-modal {::mf/wrap-props false} [{:keys [x y position token token-type action selected-token-set-name] :as _args}] - (let [wrapper-style (use-viewport-position-style x y position) + (let [wrapper-style (use-viewport-position-style x y position (= token-type :color)) modal-size-large* (mf/use-state false) modal-size-large? (deref modal-size-large*) close-modal (mf/use-fn From a6133e9c4807ae781b3b2e2b3127da21bd7b9a9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marina=20L=C3=B3pez?= Date: Mon, 24 Mar 2025 18:02:05 +0100 Subject: [PATCH 04/12] :bug: Fix actions when workspace is visited first time (#6129) * :bug: Fix actions when workspace is visited first time * :paperclip: Fix linter errors * :bug: Fix problem with integration test * :paperclip: Fix linter errors * :paperclip: Fix linter errors --------- Co-authored-by: alonso.torres --- CHANGES.md | 3 +++ .../data/workspace/update-profile-empty.json | 1 + frontend/playwright/ui/specs/versions.spec.js | 12 ++++++++++++ frontend/src/app/main/data/persistence.cljs | 3 +++ frontend/src/app/main/data/workspace.cljs | 17 +++++++++++++---- .../src/app/main/data/workspace/common.cljs | 3 +-- .../src/app/main/data/workspace/thumbnails.cljs | 7 ------- .../src/app/main/ui/workspace/top_toolbar.cljs | 4 +--- 8 files changed, 34 insertions(+), 16 deletions(-) create mode 100644 frontend/playwright/data/workspace/update-profile-empty.json diff --git a/CHANGES.md b/CHANGES.md index 5173ea791..4fe5aee48 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -24,6 +24,7 @@ - [DESIGN TOKENS] Integration with components. - [DESIGN TOKENS] Import and export tokens from a JSON file. - [DESIGN TOKENS] Apply Themes and Sets at document level. +- Add more descriptive tooltip to boards for first time users [Taiga #9426](https://tree.taiga.io/project/penpot/us/9426) ### :bug: Bugs fixed @@ -38,6 +39,8 @@ - Fix problem with default shadows value in plugins [Plugins #191](https://github.com/penpot/penpot-plugins/issues/191) - Fix problem with constraints when creating group [Taiga #10455](https://tree.taiga.io/project/penpot/issue/10455) - Fix opening pen with shortcut multiple times breaks toolbar [Taiga #10566](https://tree.taiga.io/project/penpot/issue/10566) +- Fix actions when workspace is visited first time [Taiga #10548](https://tree.taiga.io/project/penpot/issue/10548) + ## 2.5.4 diff --git a/frontend/playwright/data/workspace/update-profile-empty.json b/frontend/playwright/data/workspace/update-profile-empty.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/frontend/playwright/data/workspace/update-profile-empty.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/frontend/playwright/ui/specs/versions.spec.js b/frontend/playwright/ui/specs/versions.spec.js index 93b883a18..edd8fc9ea 100644 --- a/frontend/playwright/ui/specs/versions.spec.js +++ b/frontend/playwright/ui/specs/versions.spec.js @@ -20,11 +20,23 @@ test("Save and restore version", async ({ page }) => { "workspace/update-file-create-rect.json", ); + await workspacePage.mockRPC( + "push-audit-events", + "workspace/audit-event-empty.json", + ); + + await workspacePage.mockRPC( + "update-profile-props", + "workspace/update-profile-empty.json", + ); + await workspacePage.goToWorkspace({ fileId: "406b7b01-d3e2-80e4-8005-3138ac5d449c", pageId: "406b7b01-d3e2-80e4-8005-3138ac5d449d", }); + await workspacePage.moveButton.click(); + await workspacePage.mockRPC( "get-file-snapshots?file-id=*", "workspace/versions-snapshot-1.json", diff --git a/frontend/src/app/main/data/persistence.cljs b/frontend/src/app/main/data/persistence.cljs index 727bb8548..4ecbac545 100644 --- a/frontend/src/app/main/data/persistence.cljs +++ b/frontend/src/app/main/data/persistence.cljs @@ -204,6 +204,9 @@ (rx/filter #(= % ::force-persist))))] (rx/merge + (->> notifier-s + (rx/map #(ptk/data-event ::persistence-notification))) + (->> local-commits-s (rx/debounce 200) (rx/map (fn [_] diff --git a/frontend/src/app/main/data/workspace.cljs b/frontend/src/app/main/data/workspace.cljs index 2c1a00620..8af363d3c 100644 --- a/frontend/src/app/main/data/workspace.cljs +++ b/frontend/src/app/main/data/workspace.cljs @@ -44,6 +44,7 @@ [app.main.data.helpers :as dsh] [app.main.data.modal :as modal] [app.main.data.notifications :as ntf] + [app.main.data.persistence :as-alias dps] [app.main.data.plugins :as dp] [app.main.data.profile :as du] [app.main.data.project :as dpj] @@ -354,6 +355,11 @@ (-> (workspace-initialized file-id) (with-meta {:file-id file-id})))))) + (->> stream + (rx/filter (ptk/type? ::dps/persistence-notification)) + (rx/take 1) + (rx/map dwc/set-workspace-visited)) + (when-let [component-id (some-> rparams :component-id parse-uuid)] (->> stream (rx/filter (ptk/type? ::workspace-initialized)) @@ -476,10 +482,13 @@ ptk/WatchEvent (watch [_ state _] (if-let [page (dsh/lookup-page state file-id page-id)] - (rx/of (initialize-page* file-id page-id page) - (dwth/watch-state-changes file-id page-id) - (dwl/watch-component-changes) - (select-frame-tool file-id page-id)) + (rx/concat (rx/of (initialize-page* file-id page-id page) + (dwth/watch-state-changes file-id page-id) + (dwl/watch-component-changes)) + (let [profile (:profile state) + props (get profile :props)] + (when (not (:workspace-visited props)) + (rx/of (select-frame-tool file-id page-id))))) (rx/of (dcm/go-to-workspace :file-id file-id ::rt/replace true)))))) (defn finalize-page diff --git a/frontend/src/app/main/data/workspace/common.cljs b/frontend/src/app/main/data/workspace/common.cljs index 8b9242b01..8a4cf0d98 100644 --- a/frontend/src/app/main/data/workspace/common.cljs +++ b/frontend/src/app/main/data/workspace/common.cljs @@ -7,7 +7,6 @@ (ns app.main.data.workspace.common (:require [app.common.logging :as log] - [app.config :as cf] [app.main.data.profile :as du] [app.main.data.workspace.layout :as dwl] [beicon.v2.core :as rx] @@ -38,7 +37,7 @@ (watch [_ state _] (let [profile (:profile state) props (get profile :props)] - (when (and (cf/external-feature-flag "boards-03" "test") (not (:workspace-visited props))) + (when (not (:workspace-visited props)) (rx/of (du/update-profile-props {:workspace-visited true}))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/frontend/src/app/main/data/workspace/thumbnails.cljs b/frontend/src/app/main/data/workspace/thumbnails.cljs index 0fefbd47a..467a99919 100644 --- a/frontend/src/app/main/data/workspace/thumbnails.cljs +++ b/frontend/src/app/main/data/workspace/thumbnails.cljs @@ -14,7 +14,6 @@ [app.main.data.changes :as dch] [app.main.data.helpers :as dsh] [app.main.data.persistence :as-alias dps] - [app.main.data.workspace.common :as dwc] [app.main.data.workspace.notifications :as-alias wnt] [app.main.rasterizer :as thr] [app.main.refs :as refs] @@ -293,10 +292,4 @@ (rx/mapcat #(into #{} %)) (rx/map #(update-thumbnail file-id page-id % "frame" "watch-state-changes")))) - ;; WARNING: This is a workaround for an AB test, in case we consolidate this change we should - ;; find a better way to handle this. - (->> notifier-s - (rx/take 1) - (rx/map dwc/set-workspace-visited)) - (rx/take-until stopper-s)))))) diff --git a/frontend/src/app/main/ui/workspace/top_toolbar.cljs b/frontend/src/app/main/ui/workspace/top_toolbar.cljs index bec682c80..0532008ff 100644 --- a/frontend/src/app/main/ui/workspace/top_toolbar.cljs +++ b/frontend/src/app/main/ui/workspace/top_toolbar.cljs @@ -10,7 +10,6 @@ [app.common.data.macros :as dm] [app.common.geom.point :as gpt] [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] @@ -126,8 +125,7 @@ profile (mf/deref refs/profile) props (get profile :props) test-tooltip-board-text - (if (and (cf/external-feature-flag "boards-03" "test") - (not (:workspace-visited props))) + (if (not (:workspace-visited props)) (tr "workspace.toolbar.frame-first-time" (sc/get-tooltip :draw-frame)) (tr "workspace.toolbar.frame" (sc/get-tooltip :draw-frame)))] From e81adb241bd3ed8f0c2acbc3d9149b48a6a619d5 Mon Sep 17 00:00:00 2001 From: Eva Marco Date: Tue, 25 Mar 2025 10:57:23 +0100 Subject: [PATCH 05/12] :bug: Add underscore as posible name character (#6135) --- common/src/app/common/types/token.cljc | 2 +- frontend/src/app/main/ui/workspace/tokens/form.cljs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/common/src/app/common/types/token.cljc b/common/src/app/common/types/token.cljc index bba70ba5a..12f5c5d3e 100644 --- a/common/src/app/common/types/token.cljc +++ b/common/src/app/common/types/token.cljc @@ -60,7 +60,7 @@ (token-types t)) (def token-name-ref - [:and :string [:re #"^(?!\$)([a-zA-Z0-9-$]+\.?)*(? Date: Tue, 25 Mar 2025 15:39:47 +0100 Subject: [PATCH 06/12] :bug: Fix calculate zoom to avoid bubbles to get outside viewbox (#6138) * :bug: Fix calculate zoom to avoid bubbles to get outside vbox * :paperclip: PR changes --- .../src/app/main/data/workspace/viewport.cljs | 20 +++++++++ .../src/app/main/data/workspace/zoom.cljs | 2 +- frontend/src/app/main/ui/comments.cljs | 44 ++++++++++++++----- 3 files changed, 55 insertions(+), 11 deletions(-) diff --git a/frontend/src/app/main/data/workspace/viewport.cljs b/frontend/src/app/main/data/workspace/viewport.cljs index 190440811..97e88bc29 100644 --- a/frontend/src/app/main/data/workspace/viewport.cljs +++ b/frontend/src/app/main/data/workspace/viewport.cljs @@ -10,6 +10,7 @@ [app.common.data.macros :as dm] [app.common.files.helpers :as cfh] [app.common.geom.align :as gal] + [app.common.geom.point :as gpt] [app.common.geom.rect :as gpr] [app.common.geom.shapes :as gsh] [app.common.math :as mth] @@ -83,6 +84,25 @@ (fn [local] (setup state local))))))) +(defn calculate-centered-viewbox + "Updates the viewbox coordinates for a given center position" + [local position] + (let [vbox (:vbox local) + nw (/ (:width vbox) 2) + nh (/ (:height vbox) 2) + nx (- (:x position) nw) + ny (- (:y position) nh)] + (update local :vbox assoc :x nx :y ny))) + +(defn update-viewport-position-center + [position] + (assert (gpt/point? position) "expected a point instance for `position` param") + + (ptk/reify ::update-viewport-position-center + ptk/UpdateEvent + (update [_ state] + (update state :workspace-local calculate-centered-viewbox position)))) + (defn update-viewport-position [{:keys [x y] :or {x identity y identity}}] diff --git a/frontend/src/app/main/data/workspace/zoom.cljs b/frontend/src/app/main/data/workspace/zoom.cljs index f799549cd..843ea5f3f 100644 --- a/frontend/src/app/main/data/workspace/zoom.cljs +++ b/frontend/src/app/main/data/workspace/zoom.cljs @@ -20,7 +20,7 @@ [beicon.v2.core :as rx] [potok.v2.core :as ptk])) -(defn- impl-update-zoom +(defn impl-update-zoom [{:keys [vbox] :as local} center zoom] (let [new-zoom (if (fn? zoom) (zoom (:zoom local)) zoom) old-zoom (:zoom local) diff --git a/frontend/src/app/main/ui/comments.cljs b/frontend/src/app/main/ui/comments.cljs index bb8f0fc2f..295554354 100644 --- a/frontend/src/app/main/ui/comments.cljs +++ b/frontend/src/app/main/ui/comments.cljs @@ -17,6 +17,7 @@ [app.main.data.comments :as dcm] [app.main.data.modal :as modal] [app.main.data.workspace.comments :as dwcm] + [app.main.data.workspace.viewport :as dwv] [app.main.data.workspace.zoom :as dwz] [app.main.refs :as refs] [app.main.store :as st] @@ -1097,15 +1098,35 @@ groups)) (group-bubbles zoom remaining visited (cons [current] groups))))))) -(defn- calculate-zoom-scale-to-ungroup-bubbles - "Calculate the minimum zoom scale needed for a group of bubbles to avoid overlap among them" - [zoom threads] +(defn- inside-vbox? + "Checks if a bubble or a bubble group is inside a viewbox" + [thread-group wl] + (let [vbox (:vbox wl) + positions (mapv :position thread-group) + position (gpt/center-points positions) + pos-x (:x position) + pos-y (:y position) + x1 (:x vbox) + y1 (:y vbox) + x2 (+ x1 (:width vbox)) + y2 (+ y1 (:height vbox))] + (and (> x2 pos-x x1) (> y2 pos-y y1)))) + +(defn- calculate-zoom-scale + "Calculates the zoom level needed to ungroup the largest number of bubbles while + keeping them all visible in the viewbox." + [position zoom threads wl] (let [num-threads (count threads) - num-grouped-threads (count (group-bubbles zoom threads)) - zoom-scale-step 1.75] - (if (= num-threads num-grouped-threads) + grouped-threads (group-bubbles zoom threads) + num-grouped-threads (count grouped-threads) + zoom-scale-step 1.75 + scaled-zoom (* zoom zoom-scale-step) + zoomed-wl (dwz/impl-update-zoom wl position scaled-zoom) + outside-vbox? (complement inside-vbox?)] + (if (or (= num-threads num-grouped-threads) + (some #(outside-vbox? % zoomed-wl) grouped-threads)) zoom - (calculate-zoom-scale-to-ungroup-bubbles (* zoom zoom-scale-step) threads)))) + (calculate-zoom-scale position scaled-zoom threads zoomed-wl)))) (mf/defc comment-floating-group* {::mf/wrap [mf/memo]} @@ -1126,11 +1147,14 @@ on-click (mf/use-fn - (mf/deps thread-group position) + (mf/deps thread-group position zoom) (fn [] - (let [updated-zoom (calculate-zoom-scale-to-ungroup-bubbles zoom thread-group) + (let [wl (deref refs/workspace-local) + centered-wl (dwv/calculate-centered-viewbox wl position) + updated-zoom (calculate-zoom-scale position zoom thread-group centered-wl) scale-zoom (/ updated-zoom zoom)] - (st/emit! (dwz/set-zoom position scale-zoom)))))] + (st/emit! (dwv/update-viewport-position-center position) + (dwz/set-zoom position scale-zoom)))))] [:div {:style {:top (dm/str pos-y "px") :left (dm/str pos-x "px")} From a7044c73ba9f9dc51fd45a2115dfe06ea7d2c4d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C2=BAelhombretecla?= Date: Tue, 25 Mar 2025 15:51:34 +0100 Subject: [PATCH 07/12] :bug: Fix libraries carrousel styles (#6140) --- CHANGES.md | 2 +- frontend/src/app/main/ui/dashboard/projects.scss | 1 + frontend/src/app/main/ui/dashboard/templates.scss | 13 +++++++------ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 4fe5aee48..434814c87 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -40,7 +40,7 @@ - Fix problem with constraints when creating group [Taiga #10455](https://tree.taiga.io/project/penpot/issue/10455) - Fix opening pen with shortcut multiple times breaks toolbar [Taiga #10566](https://tree.taiga.io/project/penpot/issue/10566) - Fix actions when workspace is visited first time [Taiga #10548](https://tree.taiga.io/project/penpot/issue/10548) - +- Chat icon overlaps "Show" button in carrousel section [Taiga #10542](https://tree.taiga.io/project/penpot/issue/10542) ## 2.5.4 diff --git a/frontend/src/app/main/ui/dashboard/projects.scss b/frontend/src/app/main/ui/dashboard/projects.scss index a40fce6a3..252da62cd 100644 --- a/frontend/src/app/main/ui/dashboard/projects.scss +++ b/frontend/src/app/main/ui/dashboard/projects.scss @@ -13,6 +13,7 @@ margin-right: $s-16; border-top: $s-1 solid var(--panel-border-color); overflow-y: auto; + padding-bottom: $s-32; } .dashboard-projects { diff --git a/frontend/src/app/main/ui/dashboard/templates.scss b/frontend/src/app/main/ui/dashboard/templates.scss index d1a995726..8d5a6ffb5 100644 --- a/frontend/src/app/main/ui/dashboard/templates.scss +++ b/frontend/src/app/main/ui/dashboard/templates.scss @@ -11,9 +11,10 @@ bottom: 0; border-bottom-left-radius: $br-8; border-bottom-right-radius: $br-8; + border-top-right-radius: $br-8; display: flex; flex-direction: column; - height: $s-228; + height: $s-244; justify-content: flex-end; margin-left: $s-6; margin-right: $s-6; @@ -39,8 +40,8 @@ .title { pointer-events: all; - width: 100%; - top: calc(-1 * $s-56); + width: $s-420; + top: calc(-1 * $s-40); text-align: right; height: $s-56; position: absolute; @@ -102,8 +103,8 @@ .move-button { position: absolute; - top: $s-80; - border: $s-2 solid var(--button-secondary-background-color-rest); + top: $s-96; + border: $s-2 solid var(--color-foreground-secondary); border-radius: 50%; text-align: center; width: $s-36; @@ -139,7 +140,7 @@ font-size: $fs-14; color: var(--color-foreground-primary); margin-bottom: -8px; - margin-top: -4px; + margin-top: $s-16; margin-left: $s-16; visibility: visible; } From 9115e1a3a38c9733340362ae13ea999b593a2953 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Tue, 25 Mar 2025 14:43:16 +0100 Subject: [PATCH 08/12] :bug: Fix resolved value when opening the token edit form --- frontend/src/app/main/ui/workspace/tokens/form.cljs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/main/ui/workspace/tokens/form.cljs b/frontend/src/app/main/ui/workspace/tokens/form.cljs index 5a78178af..930690431 100644 --- a/frontend/src/app/main/ui/workspace/tokens/form.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/form.cljs @@ -235,7 +235,14 @@ token-properties (wtch/get-token-properties token) color? (wtt/color-token? token) selected-set-tokens (mf/deref refs/workspace-selected-token-set-tokens) - active-theme-tokens (mf/deref refs/workspace-active-theme-sets-tokens) + + active-theme-tokens (cond-> (mf/deref refs/workspace-active-theme-sets-tokens) + ;; Ensure that the resolved value uses the currently editing token + ;; even if the name has been overriden by a token with the same name + ;; in another set below. + (and (:name token) (:value token)) + (assoc (:name token) token)) + resolved-tokens (sd/use-resolved-tokens active-theme-tokens {:cache-atom form-token-cache-atom :interactive? true}) token-path (mf/use-memo From 0099c282b6421291d7b1046248d2f62ee6182a93 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 25 Mar 2025 15:31:16 +0100 Subject: [PATCH 09/12] :bug: Fix tokens set reordering corner case --- common/src/app/common/data.cljc | 25 ++++++++++++++++--------- common/src/app/common/logic/tokens.cljc | 9 ++------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/common/src/app/common/data.cljc b/common/src/app/common/data.cljc index 5006d0c47..80268f617 100644 --- a/common/src/app/common/data.cljc +++ b/common/src/app/common/data.cljc @@ -82,15 +82,22 @@ "Assoc a k v pair, in the order position just before the other key." [o ks k v before-k] (let [f (fn [o'] - (cond-> (reduce - (fn [acc [k' v']] - (cond - (and before-k (= k' before-k)) (assoc acc k v k' v') - (= k k') acc - :else (assoc acc k' v'))) - (ordered-map) - o') - (not before-k) (assoc k v)))] + (let [found (volatile! false) + result (reduce + (fn [acc [k' v']] + (cond + (and before-k (= k' before-k)) + (do + (vreset! found true) + (assoc acc k v k' v')) + + (= k k') acc + :else (assoc acc k' v'))) + (ordered-map) + o')] + (if (or (not before-k) (not @found)) + (assoc result k v) + result)))] (if (seq ks) (oupdate-in o ks f) (f o)))) diff --git a/common/src/app/common/logic/tokens.cljc b/common/src/app/common/logic/tokens.cljc index 3e7ca4a08..39f2374bf 100644 --- a/common/src/app/common/logic/tokens.cljc +++ b/common/src/app/common/logic/tokens.cljc @@ -65,13 +65,7 @@ to (nth tree to-index) before (case position :top to - :bot (let [v (nth tree (inc to-index) nil)] - ;; if the next index is a group, we need to set it as - ;; nil because if we set a path on different subpath, - ;; the move algorightm will simply remove the set - (if (:group? v) - nil - v)) + :bot (nth tree (inc to-index) nil) :center nil) prev-before (if (:group? from) @@ -87,6 +81,7 @@ (= :bot position) (:group? to) (not (get collapsed-paths (:path to))))) + from-path (:path from) to-parent-path (if drop-as-direct-group-child? (:path to) From 3d16fa6f19d3a56d538ad9980bc574694b7777b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?andr=C3=A9s=20gonz=C3=A1lez?= Date: Wed, 26 Mar 2025 10:51:17 +0100 Subject: [PATCH 10/12] :books: Add Design Tokens documentation (#6026) * :books: Add Design Tokens documentation * :books: Update docs/user-guide/design-tokens/index.njk Co-authored-by: Madalena Melo * :books: Update docs/user-guide/design-tokens/index.njk Co-authored-by: Madalena Melo * :books: Update docs/user-guide/design-tokens/index.njk Co-authored-by: Madalena Melo * :books: Update docs/user-guide/design-tokens/index.njk Co-authored-by: Madalena Melo * :books: Update docs/user-guide/design-tokens/index.njk Co-authored-by: Madalena Melo * :books: Changing several things after the PR review --------- Co-authored-by: Madalena Melo --- docs/img/design-tokens/01-tokens-cover.webp | Bin 0 -> 14752 bytes docs/img/design-tokens/02-tokens-create.webp | Bin 0 -> 6730 bytes docs/img/design-tokens/03-tokens-aliases.webp | Bin 0 -> 12272 bytes docs/img/design-tokens/04-tokens-math.webp | Bin 0 -> 6768 bytes docs/img/design-tokens/05-tokens-edit.webp | Bin 0 -> 10530 bytes docs/img/design-tokens/06-tokens-radius.webp | Bin 0 -> 7314 bytes .../design-tokens/07-tokens-color-create.webp | Bin 0 -> 7750 bytes docs/img/design-tokens/08-tokens-color.webp | Bin 0 -> 11094 bytes .../09-tokens-dimensions-sizing.webp | Bin 0 -> 15934 bytes .../10-tokens-dimensions-spacing.webp | Bin 0 -> 10478 bytes docs/img/design-tokens/11-tokens-spacing.webp | Bin 0 -> 12562 bytes docs/img/design-tokens/12-tokens-sets.webp | Bin 0 -> 3836 bytes .../design-tokens/14-tokens-sets-edit.webp | Bin 0 -> 2928 bytes .../design-tokens/15-tokens-sets-group.webp | Bin 0 -> 4978 bytes docs/img/design-tokens/16-tokens-themes.webp | Bin 0 -> 6698 bytes .../17-tokens-themes-create.webp | Bin 0 -> 4484 bytes .../design-tokens/18-tokens-themes-list.webp | Bin 0 -> 13038 bytes .../design-tokens/19-tokens-themes-edit.webp | Bin 0 -> 1928 bytes .../design-tokens/20-tokens-themes-group.webp | Bin 0 -> 10682 bytes .../21-tokens-import-export.webp | Bin 0 -> 2528 bytes docs/user-guide/components/index.njk | 2 +- docs/user-guide/custom-fonts/index.njk | 2 +- docs/user-guide/design-tokens/index.njk | 377 ++++++++++++++++++ docs/user-guide/import-export/index.njk | 2 +- docs/user-guide/inspect/index.njk | 2 +- docs/user-guide/plugins/index.njk | 2 +- docs/user-guide/prototyping/index.njk | 2 +- docs/user-guide/teams/index.njk | 2 +- docs/user-guide/view-mode/index.njk | 2 +- 29 files changed, 385 insertions(+), 8 deletions(-) create mode 100644 docs/img/design-tokens/01-tokens-cover.webp create mode 100644 docs/img/design-tokens/02-tokens-create.webp create mode 100644 docs/img/design-tokens/03-tokens-aliases.webp create mode 100644 docs/img/design-tokens/04-tokens-math.webp create mode 100644 docs/img/design-tokens/05-tokens-edit.webp create mode 100644 docs/img/design-tokens/06-tokens-radius.webp create mode 100644 docs/img/design-tokens/07-tokens-color-create.webp create mode 100644 docs/img/design-tokens/08-tokens-color.webp create mode 100644 docs/img/design-tokens/09-tokens-dimensions-sizing.webp create mode 100644 docs/img/design-tokens/10-tokens-dimensions-spacing.webp create mode 100644 docs/img/design-tokens/11-tokens-spacing.webp create mode 100644 docs/img/design-tokens/12-tokens-sets.webp create mode 100644 docs/img/design-tokens/14-tokens-sets-edit.webp create mode 100644 docs/img/design-tokens/15-tokens-sets-group.webp create mode 100644 docs/img/design-tokens/16-tokens-themes.webp create mode 100644 docs/img/design-tokens/17-tokens-themes-create.webp create mode 100644 docs/img/design-tokens/18-tokens-themes-list.webp create mode 100644 docs/img/design-tokens/19-tokens-themes-edit.webp create mode 100644 docs/img/design-tokens/20-tokens-themes-group.webp create mode 100644 docs/img/design-tokens/21-tokens-import-export.webp create mode 100644 docs/user-guide/design-tokens/index.njk diff --git a/docs/img/design-tokens/01-tokens-cover.webp b/docs/img/design-tokens/01-tokens-cover.webp new file mode 100644 index 0000000000000000000000000000000000000000..9d163897d72069b121ab108334f5c340528dc131 GIT binary patch literal 14752 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 NFkCsU!Tuwb{~vb$dB6Yw literal 0 HcmV?d00001 diff --git a/docs/img/design-tokens/02-tokens-create.webp b/docs/img/design-tokens/02-tokens-create.webp new file mode 100644 index 0000000000000000000000000000000000000000..02d42b753082241804177867b47ef3aa321ab20c GIT binary patch literal 6730 zcmZ{oRZtx4v*rgI+=CAeg9LZCV9DSvL4yQ$n@MmdxclJ2W(Wj=TL>B~!CiwxaEJ5l zzrHo|7(!rL;cg}9&gOJ_I=6zV&+q6(EJ7cEyY~n z_;c8~?qkLE3HcK^2(piHYj}pdTwS`}=*HaX`Yk&f6!lPWq5o7e;WqyK<+<uPc#_ctUe&C+E; z?yQA8iWbGp`FqDoi6^@m#h(3|dzr>MWN{XVWI8dU+~XQ5MQM`%jmTlMg!QXyi{m`D7{aLP5Vkl;Z2eC_L7D7HO$2kloP(_WuTr_asRT-DmkN1aEa_j;;q1`ayXAcRX<5stEfrI6guRvru)kCmwECIZ&{=dcD+n?-uKI3L-R5Gkt`l#E@R`i zm4UF9K1_Ph{J(*qtJmw&zX{t9G0MaL5Z?f9k;@DS;LhNWbWtOt(YvOytev zK3mapynFEjqW=e0*;eU6d z@UJwgw4H~Hba7Zbb&+p^g6=EfFO)6b0vQV#pp=vX!o-394KU`k@Fb${mPcN6tm?

O1!DIyZ*BYOSU~^!Ncyi~=qKXE4P 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

=shp zP=e~Q6x28p0e?b(&mFTl=8%FQm;57iNd7ehIN~+thqbar(n#OfJE4i?khs^^h%UQ! zI?{5k`qeS)$DrDu)NozBV$|U<$#1NFRNrOYPaV0TEtrz8%&;xT=P{<{Q#<=XydIFT z5?5fWKI_8gd3A8owIS_p9`oZ=00MxX2Vm}fg>ZQeA1W(u$gt$Gkf!s@c_k7+)ksWN zgZq25UHZt)`T~3}FVTzdv`RvOSKV(|ZZW!llBb2kG0#umMN+dzPwl&$(ildB1FyK@ ztUtcxc~|*HEYmxP@CjRO6jNe9c@OKQ(idPooFAKi?tyNgsQH7^Ribp&^Tln-NsG2? z9pjPTRVKx8Ym;V1-;@$=^1H2;59O@9$d}h4z!%Hw3zWrDXAd;uobIsH5N893tJt@< zWKp2k=<)*gdO;2z3V)(dRFs+?oW8oI%VB=wtH*^?uGkX#v1c9i;bE?za)!L;1JS~x z}JSi`Sg^+1ok7Ez&BI`FqN( z?xlrxEax^{ zPuc}eVG1Jfj-GT_GP*^p)~nq&xZ(U~JxIZ0uN}8)7UW4eGxR-jMrwt|?(4os1Dj$}7j8bj2RHZ^ z-#TroS#5LlcRbg>*BO#VC(ws#<0EFA6_Tj~;Eb;~lBQ1dxV=M?>}TR*fv`H9im}IE z-&X~d*dW&h&!O1cb4FU1P&@WMa8aJOCFvRdRJ^CHKahWN5ks<*1=1Q}O?_#s{A%Ou zLg+4rKcUvjdyy;RSfm60Jx7q0GF&oh-TvySRXUtJe~T`Kk8rzTPD9OkSjn^i{$eDVMJvs`s zGU!*#{7)m~MDrj}O{=tv1~G!Pl)7_Ll1z|+s{KXXMyA>PGwQ;2i&3eN&SQTg3iwmL zt;SVO7-2#XIMA!BcHV~5R0Jl@K*cK)dWPi#0>?{mTecz)aZR;9jW zJqHv0GF=)5>-pA{|GUn6g#~9%t0o-x zMV$=iabPRAd6o|2GikcVZx@j)E8+?U!UT*I9gs-`>nA*>D`FTH7ajn`gkMXryTpT9 zmwtu0yz@Ru;bN(g7SQ;a4TA8$T+W_2eXK5a%CXNkw0p%xeixO^jgsGC)Jo8SH&KXo z!xH1E)F9<`noClc790?%4_*A==`&BB-fz!JdYRnj3XDXzzO>jqM`403?)1*sYlurE z0#7&iFeJ|_#3)#G!c65QaE!iC)NqA5Gl-cOz|#hivJiir_Sk5h(id38P@O0`d31bRNNgrl&GF7S39h zkDCkubQ@AMcE9AU>F<=eHRjqMjO`2CmX&gR&5(>@Pq--6$U42k)&~n3$ss$5CgZ}- zwYK5tnsg%K9uEeq6|;;^G5F{t zYD`w7#knhNX;ia<9;moOm~4pZE`#aB+d~fqtCI=FJVqsBISD#r3^2 z0^n4Dv7#<_ZdXE+@mCTFSKUfR2!1(6sFN@m2@D=pAY}pqluLokWTHCaJqKtGrT#NU zFaje`Qu5?U2~a}9WP-($FC{G_B_ks(EhVD_1X~8g8_FekQH+t1krReDA3l6|_j%GX z(!%iK!^idT>VqS1B3@kE%6Af)&>f*`zEu>okrd7D`d7_!93UVfCICR))`#sadOZRR zQeM@J!-evoO;5N|ZtPIG#%76fk|8%jj#E$LpOT#8o4FXgOw{ehS|dM|ZOgVV;gU7` zD$e$`O|M>&)G@bQ+qO+xYA?1Gz0CRml&y?kVB1wuMT~4)KVaL)Zd!JQ6)9Y8u7|a* zZL2-VvTd8LW^CKGlb)0RuS(ChpBa{cv~ALBxPPk)M{Xo3l5>{f0W>^$u;gr;+elK7 zD%;)T?G38;y&ZdvKF1uPmUWIg#H?$Z+qPTpy_HA;$&f065u)*H3e#T(tNveKp543+(V^6GHJHj*N_c8{S}I%fEJ!2f@h6950s zltVWL7NL@MCoJx|*oiCHYj-1dcPqBov5KzP-9>{zilhM|f+)x^!_0L#=bXWJbKakL zSg^Z@1#Gacgn_he()-u^1uRICEG5-|dhTK01^1TOo#pTC$18hA{P##J6>=s6p_WA^ zTy!o^Q?B-0Ti@pn(S0LR68kmko5bA*3ps+4;JWCPe98wbjth$O5oT0}?S3 zplI{Z2olXeAO-Uhk_2l@tY%wcBmp#1%^OfP+iqiRAjp80afnFLtjIvg23m9Qj(stx zg>W|TwdPO&)HnlWsyWpZ;84X^&@h+|B!|Jw3JPl+Bs`-evu>xYP(@({W;P5YgIC+G zv#SUQnw7RHz&H*XA|TF0>SvgvD8OoER$GF%dFgDE(JHfo!z7pt8}kn20*xyaU8@C~ z18irsAlek_0wDQbnSyc(+bjn%k`9Ri)m}B9O|vQ(d@qG9iB4S$^&r4qt!*YOCpMWf zMv_&e*)q@rX!TUO?a#~OrdD=d;igXvTx-?kjOyXo*ru4}4;fRM(NIOEkrthHxz3lx zY^+M;bc0Ys5@5J&icG#@Lp6tEVPkuGuxfcP6$P1rPRF%P-Dt*E*zvF(%-2>(tP&=Z z0)S^rc~VvYK-zH9zx#gP^YyOJ6mPG-!~UfIgON2?DW(L3sgR>HLL|iG@w(>&e_!kW zR~_+c0N8iy*S&e9h=k;(4g!T2YRZ##eM||TcRujK^3(I)_0}U_&M%f29wVjbYFBS_ z1Q;r6fyS#i%4(O=uiSud>+6~X5|&M~1AgU}Qm$1Sui}nw!qv}IFMA;6iM#xY*%j~f z_+xj-TAp?BGNxUO(W}HHK!#~imXKw(R?hLnzYn~YUmQVmz8u!am2JzAMgR<3j})_^ z$f2}X_QY35)FH839S(z8*jgwXx~F~-eV{oR>R<@2wTg)*9V1W26>B_vGKOM;O)TPeK6G$ zIG5giZlUWnHT9}Q+8}TSn{E+cxaLHF&gh0DDDpu(Nk%$j*g6w~U5I}ikk*&iw8==9%Pk8p=<1qjSR`V@we(Afo`R8y*!&T1~?6_0mh5`uaCzwQ7i+orf)Ujx0e0q*Pa1ph735e-BF4?a zPihE&qI&d0k=OydnPO5eu%7w9|HOZfR8vx?HJ(0^kT!8D3G}y?$pFMS(u%?XmKCQDIk+G?SAV$JG_y&s@Fv#W6AF?ukrwJ_1l#V&K<4mryQJ; z_l!0R{;kslp!zOvBD_k(`V z^4S3W9sea$gp5!8`nk??J|JrW{gX5E)Y!KpEU$I9mU|Lu4E zSu;YK9j|+FBnG}78@dBcOT0N+jl{iQG(}tk7qRVMbO4kUIKPf`4<=i^3Ug^@a=tRn z26IaU@h-H3kb>IUZN&x(jQ~O0oJ#^gQhou*ueYK&%qJ(=mHNg#h8 zK14YY&_q%J4krfWBbm4JL58xtYB&pQ6zE*@{LyZu0LqNG$ExfAc@=iQU?5R~^S9RU zI-Eo6a+0(g`9?8mX63h>h6l2%(r#A`R|gk>iktA_^{RjCnp`iDb)W7ih~`6Y?eS62 zHf}XHx78&BPoE81vu#X7NUOlb3?SCL)aD(tARv2#E+kOomkaAv9fc~ZWqa#N1_=F7&wLVrOsQ!4vCR=0 zka@yNx-}S^6pn8aQ) zuxGhxyJtcnrNN$;W16h4^bj1Ml0;9Y75#Pj6t08-Ia6QC4~;JopreiuK?(R(Z3gp- zp2F=MfSf69NQ{P5hq%^Zl|}#nde`^!?ThyK%ofuhHz#{Ht7BCnbdZaP_?Jm*C8qW9>oQdUWVrs_JFV%aHp2zUyHTOaPEq-V7a5Jo zpd1}2VpZ5})~cf}MDbR)A%UVZ7vmZ+Us-k1K_Ft0KpIH4tB|@*Uk3RgO&oXzZp1hM z=SE8?EzPN+7hn5bx1vt7-O>aANQ+R8Gyw$ITBWsGZu*B*56LS$8l08D4nX?R|J+|gZK{*!Do5rtKe83Yo0P%tAEr-bsX z0AJ;)0RU86yop7jS%~DA%W5NVK=&!KpzMhoip^|N*qU$B%A#HHj(5J+drO{MRlE}j zaTH1t#gdlY?_j2TNwWMt>$*gMz}CDIS!1dG8`fQEF}RTmoAFBj+^+Gh?P~6P1n3x| zHalVffLm5Kecx|JkI}+aj~2&VNf1z8kC`to8J<@+ZM-tRuqKm7t}DAw_jenzGE2@v z9LlqTt;?>h6S)D9rFl!027zG??H=@L;dmQ8sp{{2wY zw6t7hi(8QZ6}IZr*~)e&1Y~#GILoYxrSt3;*>(x4YO$0iIS^>&!>Peb^^Cigo3rJ6 zA4Daq)!Gwjd0E?$_GYsczrRE!b*8$B7ZCMSopTq~aneDV^*kB?NqIi9e~%2+*(D+u+cD+}I#BJUk@2EteqRhg5C(8i< zy{+7%hKP!-@;a-(V&1u%l6M4p1f2L(egJT;@2=xo%mBw7voppY(x68s)=-B{p0a{7 zZOIqi>{#8h_1o~Cj78u4CvU5IUjf-ppv_Gf(nFdVC<>|3rO{W#qpbYim>z(`Dn~Zq zP^o0PJFUi%x78$H`6h?IrShvB<@MYrnZ{(yk6fz*0EE>%kQ6Q>4fZzwbWQI(hjmHz zM7dY%0Q3tqa)>g0Mg$ zF;Vy{ad7~ld>(BL=luZYP8rizCV+FTcE{ba+bnmHWBt)(GMY~;^1#XLiUK?arjML` z#Z=qgIEr|(pj22WlFDRM%H+dfowhoC1IG9b2BK^;e{4broA{^y9?z2585g}F_hx0Y zt6#7&bzt()@U8&hSmh50V0$3RJ^4WBe4@M zyGuwU2$!3X2xy-_@wZ3Ms(E`I?_8!l&=c$V#b?**O4u^aTyxtri#%HuOmCMo2X?FvcgZ^YaId_A=U8!l{A^J70K2S(g<`SZd^JKcFqeDhM9jDAGnvej zz3&vire{*C!gsSs+ImIxW6MpwzhDvxDf6nU90L3rWjD2el=IDsUv%y?Zxfc|)|O9p z_7)LGcFgmu6bqY~NzI*|di6;Y3&qbS+nc*IM%uW%JW5$+^!B(?*4UcuJ>w2OYPEc& z2)oeU(A*Wo{U>dfPoKIv??3Ay07&!M-qIKAmgn9?vuK9fjPvR$=W?^+0o4y+!xQb` zyQ^QDlCNi@1bF7Y-NyN5-PKE(t6yf^*Z$HzSVI|=S9XotwYlWn`I5mt;T9j0O*~&L zz!{b1Dsid#^YN24?=0g|(Ka?bezwmC>!O6!{jX}4t_xqS*a3j1pu6WyK>@`IFk{@y zg@;xPliKVY&4&PXdAe0@FYa0Zj6&IlwQc^~qKZk?k9_jX-;A?FSG<1IGGF}7G_}J% z*~ua|E6(s4m+8&VxD;^1JFrhw z^DPrzHkoeI^8Ax29!?RUz?mo78ZFmjUJbAAlswY1_2IfGgY5oYEhJ7RlkOMFU$gG( z4GD*B^T^sE0I-OB_Ks**7xZYTiKhGf@MZ@v#&c}-Kyem=AmcT>avl;8u?@HoZtG`(T~=8S<*Ho zI=A(*%=ywK&xx72CMIO6Y3oyO>=sU3rZXrieYjTWXPs~4P&<#_%z=hgdTn{wt$A@0 z)=-<+LL+49dTCM7{Tik#M$VFZHQI`Tn{W5OC9k`^c<;6y_8-4>w*}Tn3m>hSFXq8M zk4s)!(1BEO@ecTM0XX`=gP(_|RPQe--nq>y+a9jzW(05UcE1*my_0Xucs3yh@9 zs2zYqY}H#a?O`jrh)%M-v8%=3?mOx0qoL@Ow+dtBw9XfA_nzK{7Urz?S0iBORAK0Z zY8!?BC`_4!=hjh;kO&ZNd$dWf5zfVGU9Az2?N5HYyN3A`UB)qd)%W@upSrX@U)y^~6FrJ7c{y6L4bArB>TiS1Kv&uELCR(`x0%@|btMSS_!icE7X_ z%;yVca|f`JZRGaAUXJ-}D*J`|WUge3Ip=!Tj&(TRkncp!#S-S6zL~fZ!}%ExaeX~MZLnCY2zkrI_c?>%?n*0 zWce^*E4yg=FzC?4l?yI~0<>%RY|z0`Uz=k66jNxDdvC$OAT$UfUB$%{y?%u!Pf#I1 zxK~>5WGO~@N3TG&uaYj=YI_HgHi1imz7o;4hfQ4wf+UxwV!Hs%463$;E$O8wWeIJA zft2J#FWJDv995cmLNEz=h*om(K^9D`S+ZAZF-~iL!KS@GQe^XY;;T)HjvarZZS`M{ zJ-_}IsGBjiamD%@qipe}KA$vnHd*T@3&Lq>3nLf1B$hDQ?O5yS?Z6 zLMy7P?3fq0#V?o;^}Wt}0Dlt_EeQB~ArK_%3m6%xtluua_lCbBLUz|RHX_2jPpSAc zh1pz9Ri|cu%X;J;Il`ly@za|igK^tpeJRY1n#sa#z3n6>jxe=kHS}Apon9}$p{7G~ z_=EHO9dCw2Ib*)Q#~s*;OF+}XC~K!T0uLo@B%>qFSR@pTU~OJDC1)f90HB;?eJ;-U z&EL|RU)7CXt(}Mx;W1bthDLS1HtROih1Yd%9ICqSR-GFHU~1A|tZ@ta?rp}!qBBvQ zYk7j&O%4IzvmU30r@3yLZg(^tjKb4ge)-7^8!5rU8RLQi6G@(=qw=;mP=HO{j6mY4 zb0Ubi33WDs!0u;E4JE?kzEWM`k&tHv2F@uoc{tYhM|cHr)L%@FMLFij%%_DA2oKZ3l38#2J-{b%j~F4z6Yt1R@j4U2;(Lu$ zB3v{P9wnZX1A&w{vbJ8|o&BHAa1Og1NI%v%v1)dPnP=CTyf| z%Bf9W3I!^utZ>>q#bI22k(vZcqLrO7`7b8vaT2T|fl@^TN05Zel_3&m+DJ(HNNP{$tcIq>ukJSZ(SKbu$8^ zsiW06#-!83Y>HBBKB9e+RdxXrSBPkDG&OyIN!CoX>lT9!!Ni*)+C`U%D=3Y(B$yc0 zphSH&^_{X2X5(cix_$^;KQtHn0*S#tx5GggLx5;@&_-R^?fvfoxoliV4EMhZBO>p_WR%xT;^f!K^ zuNZ4foY7e8&FQgm6W1xZjogT-i~x9hu-bU!)LZCoqJ$WaHRn0?E7gz{i2#Zvj(Q7S zoIj(qsh%EdwB3PLrbrzJzO)0~_c<16(n^W1g_ej7p27eVUvIlSFe<2R@uY)KE3T$J zToT*VsOb)crYL)31X$8;nj5g@$}tQ;jLTJBVLHrQOpFp@{C--d<^o%d0+1}#USWJ@ z_PAweDU$5TH*IXRaF9C=yeh5}^*E4FP~L-Wlv}~bDN|)LpDqKytPFOp-|F*7Kv~Hx z7y*c-z`Y;q$m65zYisI~Jpe=#PHg~$E>WtyY7=u;NHM)e3Nfy>KZla;43 zv5%Q03|hTuNVOmq`f~{6jsyQfjd7ou6nl&B5VqY6`}1qs+vRCsS|qTyd27GLC5p_+ zuEYRvDM|3YgICi}xFM$S2$n`}a`N6z;+4uK6H#1bi;^?_A4UoYZceV>!B(8o006k@ zv*q6UxKjz^cTb}enEjamfJ`toy zDQ0BB?Bz{Ks44&X>ly((!&ho!?-7P&#M1)nY-|qwyjd^Y z%%wVIL%wOTTbu1@Mnx=Jtl`BWs3A4x*1u%4b>H?0?XN6~Wv^o7`Gzn*Hh4;|xvtq- z&y~o*P3GKA!&lf%7m`QmIB>_}blA{MzQYIrV6y3}P2yAz_ZS!#h1MUlM7?3d~tv{O64Hq-q9C(eU0s7k7+0+NPp> z;vi+Lz^ExYls0cy<-Mg;K|{_-A?s7uS+6K}i_TR|c1uuaKFu`75!2hHJ3y7VVa)*JU-3tDsSnNSc$vq4JB4E%P@G1$4(_nzV*& z9pXJkCM_8&Fj_nt?RR?~)!UryOG0#>pu6Q zNr>n%pt2lF#tIeJekXf~@q*2q&r>sw-f{y#pwy(s=~SJwag|G%x&I0HOA*gS;U)ptyF=NTA9Wm?)@5H*)6oKz~A;>XRpbhEZ!N12VeYL-dj#p26 z+phoN`nU64{#kG8wT{VqXNYP8wD>9jeFbCdOU^~4Sy@Igt9EqfsCnf8?Zlt4j&hTOV*X$ zb>O62WTNyis_$9qtls)41$A|`FMv9G%362VZ!@P!1pB-#OtvYmqtXkoPk86GS9f2- zMjDez4JHU9DsVTTtoE)dAHg7wQ1~Y{vaJY9l zth!_tQbCTl=TaM$ci%9Qtgd1aNq}9XwS~MsH>Q|TjS~tiu||+nnIYtFp?&sNUF%x0 z&};gtrR>Ux{G>MpyBRenvP)yw)tKtCZ9~b*gi&3KIdnfZZtK#Jk*>FJqtv$WlG?B? z$qotVSN)c;6>3fG|8Wco8OJJZU0O<@aY&fF(bo1_T}mSWprIs#Wm?U2vGL+gd6h?2 zF3Jo7iDnb|6kCNh(w$vZS;oEQ>6Tobc*j%MB4u zoKND>g_#dI0RXfN(OCsuY!))@%A}+;?g-G9SBh+FX~?Rgjy6u*maNtw?a1snKQU0X zCOv96mDgDqc>#bauG-iYLbKT>IPjWpRit=3v#G|7gNlvk381$U7J3Bkvdni|QxVKT zQ(91ew;ARIR>BI|hPrC2^zsz1&@Q~@nL#$qP^xI3Y~Ar#3KXCCeFt zeZL7duIYFHq0y8cEud)aEFeR0ih_Vf9cCZ0I7SObrn-{@NJH75(A+0$253!L0*4sZt_dc3#v>Do64C2yuXXsk9E92D3 z0E+4gmatcG7eya(x{&c83q!S8CM@e^n?5G)7)Z=$Jz_JDS1CJQ?bcRx70Sx0v(U1E zKvR_om)BkK=23knQ>;2vvN94sE&*<{L+{?xamkS3<$)oZGz~ z0PzK!+7jq!rXc|)b!AsHw$xO+#^88$WX8alu!R=@eBJ=5F{e;g@g0C)Kfi#jdaZ$x zgaWK_?Y8Wx3anVFD!&HZr64nX)HNcstG3djVaL$6b+f;;8}xx<$5p?lE&`SZMG~FW zkE&{PJXj#UI@7@_!+#2;JW?8!_(z<|5fatTkNJ>fBZ-K3N(s-6KM|2o%8gbo0TE0g z^q+3gZyBX-w!9XeKUdakxlVRhj%dbhX3vQK#DC&H@n83=&GpGo#vJf`ZnHTv)0m-N zm_wvf5ldW|AMyW~^NCF`(k&;$m0}LiQEvS`Z_my|te*WpGkymVbaoC)>dt@T1Lrpl zJ?2FEEVn!7XJ9su|1V*npC}b!gX=pd%#Sq9?&0cBdK-bXiwWFv=KX1$)ZYkmlnLG~ zqn|IFbn~#>%zz#f53_*lGiMXfKYj=^^t(P~Ei52E^ZrD-q1V`1fX@39`JISfWtG8l zLf@r(qeejg3Mo4&s%SEDk{N8lE{(Gi;ll#8+@=xQ` zgYBIE$1m4)*L-bWcDq{7{hpCn5B$V2psT!AVwb=g&Eh8QIB~&v)0B4@ABfLQ0ks7H zAk&xOl3we=tKN*$e5>go%__tJ-L;iG==@aYmOqMeoAc26cI)@9@9vO5E$VjF))cmW z3U&6C8f8S%W^I%XbXLd-(6aM3-F4zhLsFa&2stU|p8AxuI_lCQ zSzEO_F0IrAc0mH{iS5{tTM0O^Eh;%t7HG>X09HA^VH&P+<8oy|L!jw03Ed8+2Y^Kx zX+vwh2vAWehCiXdSazbj5A$iFoCl){P$wmBH9`?erA5{Z)ve##!bDfRW!7b~imU*z zBm_`WbnP0r>1^5O+P1oQIbNv^XxiKMxdG-pyBz2A6h_moo^`GqprYp4em$U)$kSPc zHUdqnr+&{xmAUeJV|7)A*Ij>Q5mSB3wbGGib~SH9gI{hdIp2ZI8x32FDJ z5TCf{+5uY2y44EMRU61m>pTZy^k&zc30 zx=;6B_Czb;+DV%A#rF=_y)sAc#TVEQ^$_K`aYI3-@8(}A5n`2$R6$@?;drbK1<*)q za}857Kx?FzhZ7+$xK+$-prG`)az)l;RGEWjUG`@*Z~gR4%hnBLTvX;J_0-B$aV6fC zoSoP8G6n3(%BZ=oOy|@zieg8wRo>S|KQxn-CJ_j!?L0aW0BDM)yal^PLEPmMqgl!= zf%O*ENn(JYxxa}+0M%XXMnJ|fJ^-q!DK(w%5T#OlX|V7bbJ+Kjyq7rBAW2vOvCb&HK~1 z^S_kRAE$*8#+&CfKRR-or*ZRYRCr;$qjQ2AmOAseqyLE%F$+J9x4BAD-(N+Wn{k^{ z-jh$KpD91(+cN|~$^WI$*_xu>!51H5`1t<*;1%fq0 zdxED^!NmpcyS~b&ci&6;-}=I**H@kUeiyb}Hm44)!<7ar<4b^5)>c$G6BYCGN!M$+ z__~{*`MQ>`^*rf0q1cY)R;09&L&$Q}O8{9))zSU`%X%Qkx7`HIw}l7(l{swcxK+sr zlT8&+Kd1G2T~;~kYSypo14M29!0UByCDmqK88fTUscs({rl>2RtToqw)pmf%ki?!a}`t6H2eP1&@JBkUd&6|7T;cl86_``zSoCv0zj|<-FSsDBZzM= z%_y||JQ(mYk;c4dY7Kz5omZ92W32;I_dvxVr_1#a)BDWN~*3?iQTA@B2UZ-Z~#n zoo_SKRsB5O{hO)Lke89MAqD_+r6tsK)c7b2|5>ZG1Af9V<-<gm!9bS5C;6@170 z9x^RD4*dm%yw6?1yrw^cUX8VSW*@oye!un9(ccAJlRxzg`P4u)p|!7vxtB9g2=oFf zeTDt{@M8SBIYgF7{woAKPhhjj)%tYIbRa;>_OtRPNtY zKDb|&OqunFe6gRFT(AuKQ1E~Od3$PfKAS2~0^mqw0BC;D*_6DzNv0b3P8D#lKzHFq zOMCLelDe2Sx8Cz>r+SYXsmDBLu8wB7;(vKY^QhKkBS@%XP$gCk%96evTEI zf$s;G`ES%|ICiu#o$Hy;H+s%n3xq;LtOdCL^!)^5{BsL}=OaciDg8GF(Kb)(=~4hP zr4j(s=mSL(-jI$n2jx2U75Pb|r0tQt0~YiDFz=9!LTbGYV&>dxcpdB6PS|UrNur2r z2FfsliR4}@WUH>?5g2cyedXq$^qCz;?mvC7Z<9tp0eeHTVM0~7U*(K(M+U95qy8hT z_zJy}{EikZr-={j+s*JRcfmhs%%(8_%FGOb$~r$r@g$?kyQi}a;C!WpunnfmyYkga zDR@m2U~c|k16ZQ?`o#O041}y2>Wy~|wJdX=`I5Rrp)p-jo)zkGfuiQ@y&^tf zyz&~lxIuI5{kE-P-Ub>){?QcvzixYG0pE^}>{_XrmihG>;NYYmHF}n2ezDp8ON1r> zE};~FSo2;1c_tFkk^Ek=KhNa9hK9YH<$>>0)&;DmL~qY03J7F*J$oqYmVZ{$3@sai zevccp9#i?R8D_@me+Z-`8*b2dV|m<~O)8dhlL43aC7SSoc?wtDnRovo`xWPX!C*}6{v>&jOSCweG8ZL_kNFox+{I8U~F!325o}n@!l$hd2YpZ61iWv<# zFK-;=6kq*W*KNOn=0@LlR{opJqqiDZQ*oyE`Ftsrd(4}!JNq4>4GxHVQZ*HwV5H#o zpLYI>DUMbRQA6M_5dmlNbrkW>9gr8hR9m>q)&J#j>Yc$S_d(Lglh*6ec?Be)C0kDK zGw{#+Hzte(Zh$F}mV+u2)Gya^e*u7ZC}Yo?!N=~ZH`IocN^jo@_)2o>EFWzXSfwPq znMY9Oy9*kY3*&k%7NJZAewk?FOs^Lr@@KJa3q-C@-0_I-BQmh!WLXud+DsMNS{3Em z8Wknl3jco#5lLJ@n;V{3_x6yk+jK54=9#??fADf6VYXh{Ak7m9V&j0dyusr-o4~oU zi30-wD3Kp(%8BGnZ<$d913AGI>oXUtxogGw6lF&yHq$HL>3x4EYf8{s@5*c<1h0N^M9i%&i^V2H?EYNm6L${#oB7qH${cM15TTP_+DIZ- zO;z9*S?`n9(%EzgkI|H{Il+bv&@slC*;60EfzN{YGf#2BMtqS}Zlu1-@~0vO&ou8e z{;>~376J*ppK18M&_r_h6HX_f<8t7_MYNZBT%GaQ*os{_rBbQ*P*OXadLE$2s=AbU z%t%GaM*2Y8NTs)=VtZQg+zJ>a=)pK32?5KWO@NSmq-_10o zm|Cy$Lt|+U@RsX4U%?DthiXS85&OkqPk6J^H%8U$?x{qlyQ0;wzwMNZ?m6so+87V? z<|L9*`;CTE)!beHz3Q8j{S8eFSOf+8Fn3~sL#-@65zM#3oDm3D{+Ief?cvP%QUinr zu(^$}g7(lHVKo^3?u+SB2~el+@Zc6?nEOsO;T$9j4B6ESBcNO+n-s@kV|a5_jJoaoC#jp2xcLU0b;yQ=33-Dk%izZ`@`azsq^ zIv05(7;zSPc2dBH&0REB%o{q3cOku*331}S`nro8&6k_3u#@vXH2nF$7ERmsxUSJRCO43rc z=8@V)=wf^X!cG6u)81sN%|e~Iv7_Run(LZ*y=3hMfKo7#Vg(@oxYi;`4?Q^4d3LQ( zak`@meM}fOd?!cuy;QUusE`6naKBkbf%c})j@E$9!$|UZ zJ~y+Pd|6cMhX4whXzxv61AZ*tZ@}<|DyLJ)%$>g81!`UZVP$vH4T;tX(4X#gkB_<_ zHtDxx)%GHCT;$cBD&b)K00*9fld-T`Y8v*0zG`Y`as_<-C~(i<4Obe~(#h2H6rh{T z2TOk0HUwJl>tVYOr0TLOT8b%v{1b>ym^q+t@&?DI z9etYWHC2T*hD?@ywAzG!k~bn{By+mkJ19F2MLp??_Rj-;GHMe6l#>I(_lb(fOd=8- zBMf)31G{aokKk@jOzBdpiH=cD(`#+=f=BvEoUQgBX6197J#sC^Y^)p!H4q+u=QV16 z6Iy#5zk5`F9QvMITInUXQCM5E2+;4Knqcpd8_un>+I46)I%6PNveq=}nH3}D_WdEl zQvb9%a~(9UYjy$vIP+mH)4ef6)Fi99(l55&$8jUF1cLFrHQceOYey!&AqHcU*$cY3 zyRXURFK91#(U9UEC5%>k?LmL;d&@>!#bd^>|WF8-43 zs6tPOr;#=N2@kWXqZ=A0qI#h^h7&$#1+Ium7y=}G*}1yxPf@YP&8Z$kd)QJ8ulcSp z4}KTHI4e7-{u`T4yKBWLLbCq%>(?D2Vxh&f`^1n743D|%=@0C1`eAub3x?4P7{HG1YpARh6^fPG_VCwQgC*;YPDh|<&oU#2C`}+KvR@>|ZruhLM>0PHdpHtRmNCZ? zBr3KON7#;f)^H^vkb|k0x^1VsP5R>U(tS-C+~jXRdIw7J_^uL6`pxp%@xGNKpHsAd z2g<-+_~Xxh{E)Ozg$k07P_VTy9d?m8$m1hBjE)YEdCx7pirzU93=-=ii=<(16oplO zf(R9SnS$)pb}u+158th!z?X}%!nlfIatH2>m5q;gtt8pU3>#WchT;v^fQI+Dz}uBT z_?8!bRUSa?!F>j079zM*D*bBvV61$x}zx>xNn%VBv`g+$7UzDM)XZF1}9iqMbZsH7^>SYlyO@w z8|1;eu8i-!obIIU2hsuozbkmfh3)Ne24R>43^V?iuFwQq3XdQWdh%*a*bJ=b53?)X zBL1b38-HpYFOk#t)nk!feR>r99rrey&ydPkQzmkrg!~H-Od?nlg68ZbVT#!kfymXT zt?j|WC*A2|(5z~jNolj5-Xio!j75wMh^HJSpHX%9$t*04Cf{uj!@A-_*;N@g|DrhK zc;jJoynicZL2oyXx9^X1e zX{MQ9hF3+W|3Fq&LFwmaEEFSD`La$BxTV+QQ-+#dPsnW=lfW_TY`X-gEI&Ca-P5lVS9l9@RO5i2j=8N5p zL_LeHkQlXkNy^%tf1RvQ`5n;dP~)G+3YA`Lngo>g*67R2u9k!`5y=ss@&M!01DCu! zX{MVuZ_?P0F}YkI$0_$G1fUU3XZLT(eWw=fKN&78{iISS=ehcZ?&^=$f5a=FzqY&Gx9^Fp934Bs$U-1qbPC%u9~F2dP;xJ?R=iUp?VVP z$hR3R=W@B$p+#`^-WEy$9s%Pvh}0piVfD6@2E0g#!}gyv-E_xw#2wAPZDkAU=64%8 z8@2VlS*JFL0xa4;2=?l`y%~QATAQmS3@##c@rzkR1unfYMbU%=Buu>1mx1~FErrZV z3Z{w8;8XNnNIt~8x+>i9Y(DM7;`X>9os;$lB(NDqeuO8n(aL_r_Wwb*CSrb0LOI%f zO!|r5<%J#3Q&RcUhJu3lmy7U-zxilrVBsjI>|9lxB9vWtGHspa-{-^T8*>YCf@N$5UxN?4w^~?gpcf!fkHMUDD8LPsoNSN5{ zO*wJRrbz69UtVGy?

Components

diff --git a/docs/user-guide/custom-fonts/index.njk b/docs/user-guide/custom-fonts/index.njk index 0b8965b1c..096ab313d 100644 --- a/docs/user-guide/custom-fonts/index.njk +++ b/docs/user-guide/custom-fonts/index.njk @@ -1,5 +1,5 @@ --- -title: 16· Custom fonts +title: 17· Custom fonts ---

Custom fonts

diff --git a/docs/user-guide/design-tokens/index.njk b/docs/user-guide/design-tokens/index.njk new file mode 100644 index 000000000..1e6228b91 --- /dev/null +++ b/docs/user-guide/design-tokens/index.njk @@ -0,0 +1,377 @@ +--- +title: 10· Design Tokens +--- + +

Design Tokens

+

Design tokens are the building blocks of all UI elements, the same tokens are used in designs, tools, and code. They include colors, typography, spacing, shadows, and any visual element that affects an object: all these properties collectively make up a design system or a visual inheritance.

+ +
+ Tokens cover +
+ +

Why Design Tokens?

+

Design tokens act as a single source of truth, a common language that can be translated and used in any other tool or framework capable of reading the token format. With Design Tokens, you can create, manage, and synchronize these visual elements within Penpot and across other design tools, keeping your designs consistent and making your workflows faster and easier to maintain.

+

You can also integrate Design Tokens with other core Penpot features, such as components and grid & flex layout, plus plugins will be able to access the tokens API (coming soon) making it even more powerful.

+ +

W3C DTCG Format

+

Penpot Design Tokens adhere to the Design Tokens Format Module and its definitions, a draft by the W3C DTCG. Penpot ensures compatibility across various disciplines, tools, and technologies by following the most standardized approach available for design tokens.

+

Tokens can be exported from Penpot or integrated into other tools directly, without conversion. Additionally, the knowledge gained from using Design Tokens in Penpot remains valuable, regardless of whether you continue using Penpot or a different tool or technology.

+ +

Using Tokens

+

Creating a token

+

You can create reusable and semantic tokens to be referenced in your designs at the Tokens panel. In this panel, you’ll find all the available types of tokens in Penpot arranged alphabetically, with existing tokens being shown at the top of the list.

+
+ Tokens create +
+

To create a token, click on the + next to the type of token you want to create. You’ll then be prompted to define the token’s:

+
    +
  • Name: The name should be specific to that token, as it is not possible to create multiple tokens with the same name; for example, dimension.small.
  • +
  • Value: The value you wish to attribute to the token; depending on the token type, values may be numerical or color spaces (Hex, RGB, RGBA, ARGB, HSL or HSLA).
  • +
  • Description: You can also choose to add a description to your token.
  • +
+

Once you have named the token and assigned it a value, click Save to store the token and start referencing it.

+ +

Referencing tokens into values (aliases)

+

When assigning a value to a token, you can reference existing tokens - these are called aliases at the DTCG Glossary.

+
+ Tokens aliases +
+

For example, if you have created a dimension.small token, with a value of 64, you could create a spacing.small token with a value of {dimension.small}. The spacing.small token would thereby have a value of 64.

+

When referencing an existing token in the value of a new token, you must reference it within {}.

+

If the value of the referenced token changes, this will also change the value of the tokens where it is referenced.

+

References to existing tokens are case sensitive.

+ +

Using equations

+

Token types with numerical values also accept mathematical equations. If, for example, you create a spacing.small token with the value of 2, and you then want to create a spacing.medium token that is twice as large, you could do so by writing {spacing.small} * 2 in its value. As a result, spacing.medium would have a value of 4.

+

Say you have a spacing.scale token with a value of 2. You could also use this token in the equation to calculate the value of spacing.medium by writing {spacing.small} * {spacing.scale} in its value.

+
+ Tokens math +
+

Mathematical equations can be performed using:

+
    +
  • + for addition.
  • +
  • - for subtraction.
  • +
  • * for multiplication.
  • +
  • / for division.
  • +
+ +

Editing a token

+

Tokens can be edited by right-clicking the token and selecting Edit token. This will allow you to change the tokens name, value and description. Once the changes are made, click Save.

+
+ Tokens edit +
+

Renaming tokens will break any references to their old names. If a token is already applied somewhere, you'll need to reapply it after renaming. This can lead to extra work, so rename with caution. We're actively working on a solution to handle this automatically, ensuring renamed tokens stay linked to their properties without additional effort.

+ +

Duplicating a token

+

Tokens can be duplicated by right-clicking the token you wish to duplicate and selecting Duplicate token. This will create a copy of the selected token within the same set, with -copy added to its name.

+ +

Deleting a token

+

Tokens can be deleted by right-clicking the token you wish to delete and selecting Delete token.

+ +

Available tokens

+

You can apply tokens to the properties of any object. There are two ways to apply tokens to a selection:

+
    +
  • Right-click on tokens to specify a particular property that you want to apply.
  • +
  • Left-click on tokens to apply the assumtion. Assumptions can vary across different token types. For example, for the color type the assumtion is that you want to apply the token as a fill.
  • +
+

Tokens can be applied to multiple selected elements, but not to groups.

+ +

Border radius

+

Border radius tokens allow you to define specific values for border-radius properties, offering flexibility in how you style the corners of elements.

+
+ Tokens radius +
+

Applying Border Radius Tokens

+

To apply the border radius token to an element, select the element and choose the token from the list:

+
    +
  • Clicking on a border radius token will apply it to all corners of the element simultaneously.
  • +
  • Right-clicking on a border radius token, allows you to select which corners the token should be applied to.
  • +
+ +

Color

+

Color tokens support color properties that can be applied to many different design elements, including boards, groups, shapes, and text.

+
+ Tokens color create +
+

You can define a color token’s value using:

+
    +
  1. The color picker, select the color switch to the left of the token Value input to open the color picker; here you’ll also be able to define the colors opacity.
  2. +
  3. + The color Spaces, define your color token in the following color spaces: +
      +
    • Hex: #ff0000
    • +
    • RGB: rgb(255, 0, 0)
    • +
    • RGBA: rgba(255, 0, 0, 1)
    • +
    • ARGB: #80FFFF00 (also known as Hex8)
    • +
    • HSL: hsl(120, 50%, 50%)
    • +
    • HSLA: hsla(120, 50%, 50%, 1)
    • +
    +
  4. +
+

Applying Color Tokens

+

Color tokens can define a design element's fill or stroke color. To apply the color token to an element, select the element and choose the token from the list:

+
    +
  • Clicking on a color token will apply it to the element as a fill by default.
  • +
  • Right-clicking on a color token, allows you to select whether it should be applied as a fill or stroke color.
  • +
+
+ Tokens color +
+ +

Dimensions

+

Dimension tokens allow you to define an amount of distance that can be used to set the size, space, radius or position of specific elements within a design.

+

Applying Dimension Tokens

+

To apply a dimension token, select the element and choose the token from the list:

+
    +
  • Clicking on a dimension token will apply it to the element’s width and height by default.
  • +
  • + Right-clicking on a dimension token, allows you to select where you want the token to be used in the element. You can use it for: +
      +
    1. Sizing
    2. +
    3. Spacing
    4. +
    5. Border radius
    6. +
    7. Stroke width
    8. +
    9. X position
    10. +
    11. Y position
    12. +
    +
  • +
+

Sizing (dimension)

+

The sizing property of the dimension token defines the height or width of design elements like boards, shapes, and groups.

+
+ Tokens dimensions sizing +
+

When using dimension tokens for sizing, you can apply the token to an element's size by selecting:

+
    +
  • All to apply the same size value to both the width and height of an element;
  • +
  • Width to apply the token value to the horizontal size of an element;
  • +
  • Height to apply the token value to the vertical size of an element;
  • +
+

If you are working with flex-layout boards, you can also apply the token to an element’s size by selecting:

+
    +
  • All to apply the same size value to both the Min width and Min height of an element;
  • +
  • Min width to define the smallest allowed horizontal size of an element but allow a larger size;
  • +
  • Min height to define the smallest allowed vertical size of an element but allow a large size;
  • +
  • All to apply the same size value to both the Max width and Max height of an element;
  • +
  • Max width to define the largest allowed horizontal size of an element but allow a smaller size;
  • +
  • Max height to define the largest allowed vertical size of an element but allow a smaller size.
  • +
+

If you apply the min/max height/width properties to a board before flex-layout is applied to it, you may have to remove and re-apply the token for it to take effect.

+ +

Spacing (dimension)

+

The spacing property of the dimension token defines the distance between elements and it must be applied to flex-layout boards.

+
+ Tokens dimensions spacing +
+

If you apply the token to a board before flex-layout is applied to it, you may have to remove and re-apply the token for it to take effect.

+

When using dimension tokens for spacing, you can apply the token to an element's padding and gap. Specifically, you can select:

+
    +
  • + Gaps +
      +
    • All to apply the gap to all sides of the element;
    • +
    • Column Gap to add a gap between child elements within a parent element;
    • +
    • Row Gap to add vertical space between rows on flex-layout board elements set to wrap.
    • +
    +
  • +
  • + Paddings & Margins: +
      +
    • Horizontal applies to the left and right of the container;
    • +
    • Vertical and to the top and bottom sides of the container;
    • +
    • Top, right, bottom or left apply space to individual sides of the element.
    • +
    +
  • +
+ +

Border radius (dimension)

+

The border radius property of the dimension token defines the roundness of the corner of elements like boards, shapes, and groups.

+

You can apply the border radius property by right-clicking on the dimension token and selecting:

+
    +
  • All to apply the radius to all sides of the selected element;
  • +
  • Top Left to apply the radius to the top-left corner of the selected element;
  • +
  • Top Right to apply the radius to the top-right corner of the selected element;
  • +
  • Bottom Right to apply the radius to the bottom-right corner of the selected element;
  • +
  • Bottom Left to apply the radius to the bottom-left corner of the selected element.
  • +
+ +

Stroke width (dimension)

+

The stroke width property specifies the thickness of a border for elements that already have a stroke property applied.

+

If you apply the border property to an element before it has a stroke applied to it, you may have to remove and re-apply the token for it to take effect.

+ +

X Position (dimension)

+

The X property specifies the position of the element on the X axis of the canvas.

+ +

Y Position (dimension)

+

The Y property specifies the position of the element on the Y axis of the canvas.

+ +

Opacity

+

Opacity tokens allow you to define the opacity of a layer, ranging from fully opaque to fully transparent.

+

Opacity tokens can be applied to any design element that supports transparency. You can use any decimal value between 0 and 1 to set varying levels of opacity or you can use any value between 0 and 100 with `%` sign at the end of the value. For example, you can use 45% which would resolve to .45.

+

Applying Opacity Tokens

+

To apply the opacity token to an element, select the element and click on the desired token.

+ +

Rotation

+

Rotation tokens are used to define and standardize rotational values within a design system. These tokens represent rotation angles, typically measured in degrees, and can be applied to elements such as icons or images, to ensure consistent rotation throughout a design.

+

Applying Rotation Tokens

+

To apply a rotation token, select the element and choose the token from the list.

+ +

Sizing

+

Sizing tokens can define various size-related design properties, namely the height and width of design elements.The sizing token supports numeric values, which include negative values.

+
+ Tokens spacing +
+

Applying Sizing Tokens

+

To apply the sizing token to an element, select the element and choose the token from the list:

+
    +
  • Clicking on a sizing token will apply it to all sides of the element by default;
  • +
  • + Right-clicking on a sizing token, allows you to specify which side of the element the token should apply to: +
      +
    • All applies the same size value to both the width and height of an element;
    • +
    • Width applies the token to the horizontal size of an element;
    • +
    • Height applies the token to the vertical size of an element;
    • +
    +
  • +
+

If you are working with flex-layout boards, you can also apply the token to an element’s size by selecting:

+
    +
  • Min width defines the smallest allowed horizontal size of an element, allowing larger sizes;
  • +
  • Min height defines the smallest allowed vertical size of an element, allowing larger sizes;
  • +
  • Max width defines the largest allowed horizontal size of an element, allowing smaller sizes;
  • +
  • Max height defines the largest allowed vertical size of an element, allowing smaller sizes.
  • +
+ +

Spacing

+

The spacing token defines the distance between design elements and supports numeric values, which include negative values. Spacing tokens must be applied to Flex Layout boards.

+

If you apply the token to a board before flex-layout is applied to it, you may have to remove and re-apply the token for it to take effect.

+

Applying Spacing Tokens

+

To apply the spacing token to an element, select the element and choose the token from the list:

+
    +
  • Clicking on a spacing token will apply it to all gaps (row and column).
  • +
  • Right-clicking on a spacing token, allows you to specify which property of the element the token should apply to. In this menu, properties are divided by blocks. In each property you can choose to apply to ‘All’ sides in a specific property, or choose to apply them to individual sides:
  • +
  • Gaps: Applies spaces between child elements within a parent container (both column and row gaps). This only works on flex and grid layouts.
  • +
  • + Paddings & Margins: +
      +
    • Horizontal applies to the left and right of the container;
    • +
    • Vertical and to the top and bottom sides of the container;
    • +
    • Top, right, bottom or left apply space to individual sides of the element.
    • +
    +
  • +
+ +

Stroke Width

+

The stroke width token, also known as the border width token, defines the thickness of a stroke around a design element. It can be applied to boards, groups, rectangles and text elements.

+ + +

Token Sets

+

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

+
+ Tokens sets +
+

When you create your first token, a default set is created. You can rename, group or move it later. As you create new token sets, they’ll be added sequentially after existing ones. You can reorder token sets by dragging and dropping them.

+

The order of the token sets is essential! If you have tokens with the same name (and different values) across multiple sets, the tokens that are in the set that appears last in the list will override the previous ones - similar to how Cascading Style Sheets work.

+

When creating a token set, it’s recommended that you assign it a unique name to ensure clarity. Token set names are not included in individual token names by default so it is possible to have tokens with the same name belonging to different token sets.

+

Token sets can be enabled or disabled. If a set is disabled, its tokens will be excluded from the token resolution process.

+ +

Creating Token Sets

+

There are two ways to create a token set at the Tokens tab:

+
    +
  1. Click on the + next to Sets;
  2. +
  3. Click on the Create one button.
  4. +
+

You’ll then need to name your token set. Set names should be specific, as it is not possible to create multiple token sets with the same name.

+

When a token set is selected, the tokens within the selected set are displayed on the panel below.

+ + +

Deleting and Renaming a Token Set

+

Token sets can be renamed or deleted by right-clicking on the token set and:

+
    +
  1. Selecting Rename, entering a new name, and hitting Enter.
  2. +
  3. Selecting Delete.
  4. +
+
+ Tokens sets edit +
+ +

+

Once you have created a token set, you can start creating tokens within that token set. To do so, simply select the token set and create a new token.

+

If a token with the same name already exists in another set, a new token can still be created in the current set.

+ +

Creating Token Groups

+

You can create a token set group by simply naming your token sets to have a folder path. For example, you can create a Light group with a Global set and a Colors set using: Light/Global, Light/Colors.

+
+ Tokens sets group +
+ +

Token Themes

+

Themes are a way to configure your sets to be applied in a specific context, such as a brand, a mode or a touchpoint. Themes enable switching between different styles dynamically by applying different token values depending on the selected theme.

+

Themes are multidimensional, this means that you can have more than one theme active at the same time, combining the values of the active themes.

+ +

Theme groups

+

Using Theme Groups you can categorise your themes into groups. This will allow you to generate a number of combinations involving color themes, brands, platforms, density, and more. Using groups will reduce the need to create an excessive number of individual themes with every combination.

+
+ Tokens themes +
+

For example:

+

Group - theme options

+
    +
  • Mode - Light, Dark
  • +
  • Brand - RedPlanet, YellowCab
  • +
  • Contrast - High, Low, Dim
  • +
  • Platform - Web, App
  • +
+

When you have various themes inside a group, only one of the themes in this group can be active.

+

Having your sets clubbed under groups makes it more accessible to switch from a matrix of themes.

+ +

Creating Token Themes

+

To create a new theme, click the Create one button in the Themes section. You can create a group (this is optional) or add an existing one, and then you then need to assign a name to your theme and click on Save Theme.

+

Your new theme will now appear on the Theme lists. You’ll need to enable the tokens sets that you want to include in the theme, clicking on the button “no active sets”. Here you can also activate and deactivate it, as well as delete the theme.

+
+ Tokens themes create +
+ +

Editing Themes

+

In the Themes section, you can find a dropdown to activate and deactivate themes. If there are no active themes, the dropdown shows a message of: “no theme active”.

+
+ Tokens themes edit +
+

To edit existing themes, you can click on the Edit button next to the dropdown in the Themes section or open the dropdown and select Edit themes:

+
+ Tokens themes list +
+

This action will open a modal window where you can activate or deactivate themes, as well as select which Token sets should be part of the theme.

+
    +
  1. You can enable and disable the themes.
  2. +
  3. Configure the token sets you want to be included in the theme.
  4. +
  5. Deletes the theme.
  6. +
  7. Creates a new theme.
  8. +
+ +

Grouping Themes

+

You can categorize your themes into groups. This allows you to generate a matrix of potential combinations involving color themes, brands, modes, and more.

+
+ Tokens themes group +
+ +
    +
  1. Select a particular group.
  2. +
  3. Select the theme from the group.
  4. +
  5. You can define what token sets should be used as part of this theme option.
  6. +
  7. Click save theme to see the changes.
  8. +
  9. Cancel to clear the edits.
  10. +
  11. Delete.
  12. +
+ +

Importing and Exporting Tokens

+

You can export Tokens from Penpot and import them from your computer to a Penpot file. Tokens can be imported from the Tools option at the bottom of the Tokens tab.

+

The Import functionality allows you to upload and replace the global token set using a single file, while the Export functionality lets you download the current global token set using a single file to your system.

+

These features support JSON files formatted according to specific guidelines and preserve the ability to undo changes if needed.

+
+ Tokens import export +
+
    +
  1. Import: At the Tools option, select Import, then select your tokens.json file.
  2. +
  3. Export: At the Tools option, select Export. This will export all the tokens, including token sets and themes.
  4. +
diff --git a/docs/user-guide/import-export/index.njk b/docs/user-guide/import-export/index.njk index 3d1dcdf02..7aa9cb4f3 100644 --- a/docs/user-guide/import-export/index.njk +++ b/docs/user-guide/import-export/index.njk @@ -1,5 +1,5 @@ --- -title: 14· Import/export files +title: 15· Import/export files ---

Import and export files

diff --git a/docs/user-guide/inspect/index.njk b/docs/user-guide/inspect/index.njk index a95ba5840..869429287 100644 --- a/docs/user-guide/inspect/index.njk +++ b/docs/user-guide/inspect/index.njk @@ -1,5 +1,5 @@ --- -title: 13· Inspect designs +title: 14· Inspect designs ---

Inspect designs

diff --git a/docs/user-guide/plugins/index.njk b/docs/user-guide/plugins/index.njk index 7ed67f339..8916145b6 100644 --- a/docs/user-guide/plugins/index.njk +++ b/docs/user-guide/plugins/index.njk @@ -1,5 +1,5 @@ --- -title: 17· Plugins +title: 18· Plugins ---

Penpot Plugins

diff --git a/docs/user-guide/prototyping/index.njk b/docs/user-guide/prototyping/index.njk index 5242877ba..388f9b2d1 100644 --- a/docs/user-guide/prototyping/index.njk +++ b/docs/user-guide/prototyping/index.njk @@ -1,5 +1,5 @@ --- -title: 11· Prototyping +title: 12· Prototyping ---

Prototyping interactions

diff --git a/docs/user-guide/teams/index.njk b/docs/user-guide/teams/index.njk index ce9cb1e78..0cd6ae941 100644 --- a/docs/user-guide/teams/index.njk +++ b/docs/user-guide/teams/index.njk @@ -1,5 +1,5 @@ --- -title: 15· Teams +title: 16· Teams ---

Teams

diff --git a/docs/user-guide/view-mode/index.njk b/docs/user-guide/view-mode/index.njk index 081d69f4f..d829e6675 100644 --- a/docs/user-guide/view-mode/index.njk +++ b/docs/user-guide/view-mode/index.njk @@ -1,5 +1,5 @@ --- -title: 12· View mode +title: 13· View mode ---

View mode

From f55e0bf6e3475a42a8d67866e1daa5eb46e6578f Mon Sep 17 00:00:00 2001 From: Eva Marco Date: Wed, 26 Mar 2025 12:50:23 +0100 Subject: [PATCH 11/12] :bug: Eva Fix context menu for viewer role (#6159) --- frontend/src/app/main/ui/workspace/tokens/sets.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/main/ui/workspace/tokens/sets.cljs b/frontend/src/app/main/ui/workspace/tokens/sets.cljs index d118136fc..7050e47a0 100644 --- a/frontend/src/app/main/ui/workspace/tokens/sets.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/sets.cljs @@ -160,7 +160,7 @@ (fn [event] (dom/prevent-default event) (dom/stop-propagation event) - (when-not is-editing + (when (and can-edit? (not is-editing)) (st/emit! (dt/assign-token-set-context-menu {:position (dom/get-client-position event) :is-group true From 2918c57fb846d6c85c89c58fbc7fb96bfd6ec7bd Mon Sep 17 00:00:00 2001 From: Eva Marco Date: Wed, 26 Mar 2025 13:13:45 +0100 Subject: [PATCH 12/12] :bug: Show broken pills when all sets are disabled (#6161) --- .../src/app/main/ui/workspace/tokens/style_dictionary.cljs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/main/ui/workspace/tokens/style_dictionary.cljs b/frontend/src/app/main/ui/workspace/tokens/style_dictionary.cljs index 029791d9d..d6fc48b7c 100644 --- a/frontend/src/app/main/ui/workspace/tokens/style_dictionary.cljs +++ b/frontend/src/app/main/ui/workspace/tokens/style_dictionary.cljs @@ -336,7 +336,7 @@ [tokens & {:keys [interactive?]}] (let [state* (mf/use-state tokens)] (mf/with-effect [tokens interactive?] - (when (seq tokens) + (if (seq tokens) (let [tpoint (dt/tpoint-ms) promise (if interactive? (resolve-tokens-interactive+ tokens) @@ -346,5 +346,6 @@ (p/fmap (fn [resolved-tokens] (let [elapsed (tpoint)] (l/dbg :hint "use-resolved-tokens*" :elapsed elapsed) - (reset! state* resolved-tokens)))))))) + (reset! state* resolved-tokens)))))) + (reset! state* tokens))) @state*))

5BvKJki7Q3O7A)>E{l_%@$?^#LUQy=i3#%fG6+Xjtc!{%l zMn2`17#vB3ZlZ&Y>rW0<2SrRdK|R%P;VXM=^fg8uD;qrfZL~#$G4+|UeNYL-P!(5I zin|tEP6eetQ~!ZVh(T(28`%Hn=**(XE<5ziwCPdvHdVMCdhi z+l#l_9=~SIfdqE%WI=tmv|`Ga8&fU#4_*0ZI19^rMdZD3-ltcM=+a|vnRHxzD#VJj zxQgRvrmrZ$$P5Sh8p=)}Wm4M7S~x$aT>!hfHwa_}D=gn#bl?gsMsg<{5os^% zkfb#0Z1D&g8{tO!gK!DVYTl1JCn&JcNVV%{T}B#N(_S6RZ;ks%tNe9P2}d zGc#RNpZzmbgE!79fDkKSjU|#Ji2zlL|HU#7)(&Dz0xhU+cg>tU|%Sh!e3nBZ1NOb64jqL znf_jacRfFAHY!%!IAJ?tLp6Dwm1XL1X_W#hG(c|y(A>@h5f4Pc^)G%2NP)2^C911o zWe>xT>_XG+>iWDYgm00%XuMLnAw*$W-b$c?f_ms4^TK+3@|Vkz&I}GIpm7;f4jBvk zC|b~Ts0vYm0867{k#}g~ZfV!$*SBiDk=;O5lwPjMkVj zQ2`dx4M#>Oz3~qnNz^|V{sjB7*!g6h`1%D=Adw5ZeGCjUlRX#N6~axUj7gG3Vn+*Z z8Dayn2P)nHG&uh)?8NE+TBlm6uHOGjS^ z4bxh+reaH77(Xs&cq0-6l{13eP-uXC8L*$#ar?D`-ERd zx#OD;DtIo~g7=DL8BcG}kFU|T-sW=monjf&ODT;iUz={<0XPb&WtrI>yj74eLB~$p)vppR#xF6G2>#gKbaY zdzb2(?;GO4Y!X+EoO~k}$Z>Q^`!FDJsoJ1Ok%6wAR9urQ z%%2yWtaLu*jDXf9Bf8Z#yK$#p2LzYnxV7|2hVmV{-IvM5ixUcXnA6EeP}6hBCAD&1 zn;53mJvb0VlbWtTEw1csFgK{%q?>knrYZ4*3T zH#fgSTc1|{bQ&^W!}LC@edZ!m14HZz5Dny!ONiK_YA*^zudzTwQ~R^E11+Bzs>@1n zAyW2fk|`ud>DoxBwHpDXgNJgfer&?+l)qI_2>2$q>3_>EuX&|5nN!U!?Bk^Ro#@Wq zGY}iNAkky2qi5-n9v5>Io=f%~`CP=V$Y?oIvUGEkcHR9ZH_@i}OvsW881`YTfl7=f zUU&4nZd`qND|B7Nga$H>L$v@vD(GAw|MzAGQV$Ga5*ZUm zC1dmG_@JNmMN(7i$_c~Op>VLtN%)DJJlcnduUXT4?=!qoKSydp(M)Gc%*T_RV69eh zT$srZ9lrlY#YsZw*A*w1In!40A**Ln{s{?9_~cE%GY#AHQiF3aEU$%4WNN0-R102w z_H$ko4br~Jl}oCY%%coyM~C0-b9fb$Mm3m95gpIpfhJM zqJb5~pwS6hl-?_C=YR7J^kNj0>{-0j!t50-bqyLqaate`O?%;hs1 zXLd#OBBSHS3ln06Vkb(#de2!%w?LMIQ!D*>ocVA#{O&F3^bjnz7x<{P*fslh5Z6;J ZEZGq90|z_)XoJy1FtA`Q#9aY^{{v-g3O)b; literal 0 HcmV?d00001 diff --git a/docs/img/design-tokens/05-tokens-edit.webp b/docs/img/design-tokens/05-tokens-edit.webp new file mode 100644 index 0000000000000000000000000000000000000000..b77b9cf50e8f63fa7e6b224812a98e955bf81d34 GIT binary patch literal 10530 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 literal 0 HcmV?d00001 diff --git a/docs/img/design-tokens/07-tokens-color-create.webp b/docs/img/design-tokens/07-tokens-color-create.webp new file mode 100644 index 0000000000000000000000000000000000000000..028ec50884e6799fd902190b001704ffac547854 GIT binary patch literal 7750 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 literal 0 HcmV?d00001 diff --git a/docs/img/design-tokens/08-tokens-color.webp b/docs/img/design-tokens/08-tokens-color.webp new file mode 100644 index 0000000000000000000000000000000000000000..2556a9a765eef5355d4a5d589854d567ae32e6ae GIT binary patch literal 11094 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 literal 0 HcmV?d00001 diff --git a/docs/img/design-tokens/09-tokens-dimensions-sizing.webp b/docs/img/design-tokens/09-tokens-dimensions-sizing.webp new file mode 100644 index 0000000000000000000000000000000000000000..397508cf3678a2f21c90db87e7a749d193e7456e GIT binary patch literal 15934 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 literal 0 HcmV?d00001 diff --git a/docs/img/design-tokens/10-tokens-dimensions-spacing.webp b/docs/img/design-tokens/10-tokens-dimensions-spacing.webp new file mode 100644 index 0000000000000000000000000000000000000000..38b7b0f279f762d0662dec2cbd712ef70a9a3bad GIT binary patch literal 10478 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%0Dj#`c>n+a literal 0 HcmV?d00001 diff --git a/docs/img/design-tokens/11-tokens-spacing.webp b/docs/img/design-tokens/11-tokens-spacing.webp new file mode 100644 index 0000000000000000000000000000000000000000..4680497444f60615b9dfc540fd0cb96372b0b5b1 GIT binary patch literal 12562 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 literal 0 HcmV?d00001 diff --git a/docs/img/design-tokens/14-tokens-sets-edit.webp b/docs/img/design-tokens/14-tokens-sets-edit.webp new file mode 100644 index 0000000000000000000000000000000000000000..d11b0bac0497d8dabc231a0262297c0f558d1698 GIT binary patch literal 2928 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 L%(U+>kcajkKWe6% literal 0 HcmV?d00001 diff --git a/docs/img/design-tokens/16-tokens-themes.webp b/docs/img/design-tokens/16-tokens-themes.webp new file mode 100644 index 0000000000000000000000000000000000000000..042ecd7b12699dab5bef66b8af9464c97366b35b GIT binary patch literal 6698 zcmZu#RZtv2lV03?kq|t%yE}xS!QI{6A-KB)2!!ClHMmP~7I)X+&MpviFUkFP_i|PJ z&{Nej_4Ow&qb4UKLq!Y#Xup?K(Nf{3Ao$bQ^#O8V81rEXVMSA9^Aw7|S1=de97`nQ zqS!j^c!iMOc{wi15%C*7V*U~ygd3-LI=Y8Km0wz%g#y!{8nws94zQk4{R>{TrQr&%Od9^2lpLrVvwr&(jcR&^C z$|+p!N7LuDj|1NFS;Yv#kmnyRX-e&$f15asSK`PNfWQxU9k`AGAO&@3kzd5>*uOE= zQChm(ybSi04A}IF39SV!eU8P*Y>3gf?Pl|8RP%FvK!->Ls_*fG4R;m47L~E%G!{u; zdGCpC3Eb`L3h`pc%(?|LbJdUDiU#z;u{3c$FdO@y4wu|+Je-1^2Sn~da zyO$V3!&F~u8YKJzb^cC+XFgD8{&9fL0OO6;qFjlOLomWt3wH&e)#gm1>ix|GJ;Pz? zemu|raxtpQNaOeyHc?1ysJ+wo&A)dsBTM%oGJ5JHGF;v^b|c&3Kgi913IP;<;quOU2amRz{RcXBq5koIR_};r zq6(8HqL6dkQxsBJsSv&Bch{FF&0|v@2|;rDW9#Dwv%>_Jf25&*6mfKBJw-GaUdj}P ziXS>`37eM$S(sYAvsG-&HhG8N*>C zXI5Y?>D&D($Z7eEjy*a*0Sz~^^FIH`NLTxhzLEvLI!^h5TF}3z z<}OvbJ@5(b8Lc{b+%urCoVH37pPoAI)h*El@vWmIdDJ_Ti;Mw0>@9RBN?t7 zuB0t!#fpD3?4v63Pf>i{^7@)e)u3KR7Wg880|c{PS^-nA_NoLn+I#i#zgmhno$k8+ zg?pq4(5IU?NlN{1D_jq4X1M|XkkInU$W`b~00i!Wohux%PuK12@Y6R>1ijWJccYC* zy?9Yqkx~*iunbj_*c|t#V4Gy-IdD5`qrkk|eRAPgh61$)FU21b2j=RE1IhCnGPPXz zPIccR=(+FnsUi(xXLEAG5DI>yLrF-D=T)m9j{EB+`=xvN?xg|W4IlftrR55p_ zI1p~fJ5iCQf6L!zA)4%re)xa%le19%lj#2~=2J|h z=FlOcV8AOh$_g67)4-7fjdvy6TkZIIW)H)dEbzn)BI3j}rg*Bo=~a&;3w0ApZsauo zeKTr1g~2?0Ua77=EBjk1z}nl0#9l523>l~XHMtN~YR29uO;LJ~+MHqCit5e~%%J2C zBKEFiBYq)Y~kXthma$mt66%J%5{q}n}A2oTxy@iwl`QA$I2jw)3irEko zYFtIx^W>g??y;22)+8-?~( z$W&+pGsf@GWuM2aU|AV#g%+QukB9fN7b6C$023s&;62B&n9ov)?7F|g&+p(tGcIfW@cC?^IOzG~=e7jclUP8|?IX+x;{<-Hxofdtt_3dWhc4d6w z59aIPon3Sj2UP_QNp)^mo^wckg}*l_%tRR)!#x`e07&xv%FHeCmgs1!bO$T4u1y?$P|`gM`g<*RxEHG#W6%6Ll#yM<6`Iz|yw<1^-&bNf<=dQ-CryNW zJCV0_Ji&Q`#;UuaikWyK5lmtNt_*SxRE8C7)1Fbf0)sBEl*}8d1VFyAfq;l5()II? z9@sri7xgnPS*iY)OcEKCo$U5% zE-3VA1-gz%$Pz4YJ(f-urd6_yYV{^*xEaD;og(}6`d$Cg$F(+m3;P_y+c`ZTjoa`ZF0_?VhtjM+y$NG&n6LFMhwaef@>Y+Jq5#}Dt@%le#YcC>7<>vJ15gMe z_VWCQRD*^SL*PQ~4_75H4$#-oKfT9iFGcMqg1}wmUDDlZJ^L#&#ZLhwa~VF8hCRvv zVu*$IQOwZ9sLl?{QKQq?v7c<1F{sVsuyb3Yg&SHj~ zUC4(1CO0Z0#DKnv-+$`156T;JbQo)78QJR&+@^{g$4)_FLGKi0$c^NV?xP^%qSYMo zyW-M8wCFa8P!krsEOWkl&&BkDXL_U$K!ZJeQ?laX#U279i7LS7#q*t?7!0qyO{6{F zOT%eyCtO(NSMmH?on*8aE?OT3@%@p-JmVW0G{gNZd*nE=97A}6PlbG;vInT_b_jzBL}B< zKxoLkzM{97p&pYwD~iQj9o<5V$W`2YPxY*O_GCS}NdN7Y%U~B)jARDen5W)CLMy)# zTj!@!-y(+o`hNO7n=a?sYsBSnX!ed4bbYl3hQ$O6au(Ez^clxc`EcO2|3e1RVLb*o zPAcNd`LQ+Rr=f<;^eRcj94Uiq)*!q(5z^MBw~7U~$v$bF$EMM*Y<5YGOK~?z5a4;4 zh()EX?4tgf<9LCAs?cL_=w;tWn|(?Z=J)Yt+505?sJ9cb9VL@pQZaFw`SA}Zc?U8z zY;-MKmQL=zL}krNg@jHVnXX(qZA5&=85hd*UxCjl;@nGg&m1nPvPGg zL}^nUFLV$LxS$(_e%8frx0>wL96?MR2tZjQ7@ED@5}cx$fj7zs^hzfVk#;h`z75Ol z8;7?xBngYkc)RTRN7rXJk}-|CkdM1Xy#tA_B2#d~T3Y8 z1IkaMMP!+ITzzF1QIrRrZ@#=g@BW~Ije7_$2}5I5J9ioW2q-Fs^DJe{18n4wl{Ws! z4$@25usf1iNX#q0e^XtRFLcy}m+6fQG@ebCE4 z`j($Q{Y6Yq!xL8u#Up zO|dnLbKaFqFWrEPq+?7OgMbsTy9fe15jrQ1PMl%%5ErU9rD%9AaKkSZPwiQWhN!XR zC{HUtYHnnXUk#r=pci1tyJDwR2lpZa?;+1_#3n#?&J#rAvDF2%d($x^GidV7+l`Q& zq{&wW-CfGck*g>uUlwtkQ5aPJK@PV+$yt(_PQ85hRwu^!iwvQ85%5gH32WL;d4m;^ z7I0HY`ztSF4{vcXU!y0#Q(VJ~!^lt5*R2+^!_VhRSVExRlf;M0%e-K{49GNP2%8F% z%+?m2RNih!yt`*Dyo`EbaVslUF;%sG=Fm5+FOG~Zjjyxvb+F6iZK)_tVmvL`#jX2@ z*S-a zkpeFP6rd1qgR=XoKq0={MA%RKxgRz{oTe49HyV`MzY}JCDfDE@RaMkLT_M?i~`%=Qz_Z@^c$shx(mA5;P ztXTSO3!)z5QE<<~I&MTG>^MZ{kOBhsDZ`4(eZdw|@ zL;8FaDH}y5E2;fUFSkJwP99+}l{5^2Ik}4xxplcIlUYXJH*0nFXP2UtB1=?O@i$wK zXm%CI@@J4|DwyEeN@oy=xY@NFv9h8t$bMODUtgdtQt93awr6eM?5i(*vmU30F-w!n zN!{&=YZ)tkdQ$?rek(UyG(Nqx%=qaV?zh{oTKn(mhcD}NNUGVlJ>*ofAW;IQwYKY5 z*HqbGW>^fzT%Eubs>w|bWZrd6t!)j(D)y`!Zh7Ws_GZk2%#nQ2Ur%c)v52JoSQzZy zvHM?MZSU(zGo{*0^2KlQ^mJfXtsoie(TmjHY6*B1-s1D@8&_VaW;&$x3TBk82?IOX zP#V)x7@Wiy{GnY+J-m z&H=1IJHb2d;SdTMhim1RvE9u}05ckXN% z^t*wswp6xC_0G-IsMjkWZ^QapCUPxDM*m!9uNDL=lwvcQ&2ZPTqwY<0uv?*~eF}s8#xv_fhuuMW zu!9(hR|uU0su5Ukj^dM<^={g38K9ysQ@|w6xLxMbuS@cQK#otuE&i+W_!srh5=xZ~ ztM>R5(&Gz`Y*mr3*1+phb}R!pS3QYjFqog%*D2 zE!Y0@h+BL?dQdu3J_~ApO{QR>k~P)Y&r@BAMvL$(ELmaJBcsB5SdiwJf!M8}t1In? zgjJ-m!(NvTIJ7(1pzj%R1$m5%Lx5-ZGp{U}FG)>Lv51j|#OEEXHf`t{In53lKDMj* zNTmT#IkbF|v-Jej8=EdpZ1=%l;?TJ=iHVpivCUr)6KZ&@=-fGjP`DPP0Mz9i>q$`- zWo7POJHn;k{;!#o1(u^-C!hGnyv~SFs6^3O&Cwd~XDJn-1wR3BUA>}M8@BrD)eX-} zb@x~3*im9(+$&A3FpfWQDJ18a*1a2;9Pa?=0d0~Rv?buF;|UkgXsB>cBch0ZEWn0) z5Hrcwl5D*XFgU;fR;3g^BasHX8=U6_B$t@Po!#W3du5?N_sd6(-jo>9aPa)N!q%eOlhid;}24jn& zX#kBySeBrnlbp?}sXm>!Mwh$^E+|2Q(mTyNB;l2(ob=M7E^L|y=Gp*W*|Q8^@jTF{ z(F9wQG=X#p)m*CKBGfir4n9^HoMzkzlx(C5wzqbLfkpx+Nw3*H7D#=;<85)dLWx8S zegQ+Mu{F@GltDPAbFk>&j3FTn8WMZ*(nI}I%%65}$o_n!6&!zf%-9@_{1L(PwH}*w z`LWmxr8w!AX(0OmzIp;dD-{b+bsI1c0oSvS-Y0~D{OiZT_HI7x4E9))T@VbN>T*9% z`JHx??>UG52;UJx)d`}fWnI9*T7I|1eP0-$_Ygg_ca zxkCT#>IR&g*tO(lU_9!Vz0YtI&e}G%2=Ng1sWI#jtcORTQ^5HlZm$UCU?}X@{b}ON zNdN3Saf;B8*Y;tAN~HvbvE(1s3&&;&Vo!u}JK8`0&fA%w;(OU?)oOaEk3$C@{!-b`CS4+lb?#}JfR*Nj8 ze!Eqw>+qqBvW$`fWQeQj`h)yQ-Sj%l&9Ocg(v6mHC4Md_ZWFGo6f@&oyeW!RC5;jP9Rh#?fLex!(MVabcbxy z+Zjx~#HC8!c09D}w@sycal32h<;aFHVSv_-ls?fD6#^$E7Y+F)EQ%J<9pH&5+Ekf^ zzgMmeQtb$(VkO{_h~98gh=}9h%shU2KdD*0)0za|*@Ik9k2Sx&IG1gtcgpYQbHO;O zJg4{2mG7{u-pg6Y{79N5yJsz!Q!K4(vcN9s zxEh;0WDh?bQ*~`u7_>K~H9Kh>^=V-(r(Z32%ZK|);&%yru)E(h%?D#4!f;&6I3Cv- zqoW*fVi6PLt62sTNk?r;&m2*jjAET}ukEjR`bQ6`MdNV4%a?ItX8twbkpq}-C_o^e z5MI(k!1;YBE{r9bi?Wwjci@2CrhLDQB6%CQy|~m#J*Z08Sr7({wnscG3t7@%tM;a3 zDow+2=&9hP9W?LXl7Kyht0G702ilOIXr2oO2a=q$Yw;o=($3xK6*1gr-N|nNX?sz* zrC6rL^N_SVIr9OY=pPTt@(+pqKTLd@XqKBZZB5U zf})aKG0!J%1|cPWMM`L{waSstOkz*v{_U+5fzF7z(u#vW#hC9IOKs>J!g~}k$W}fizQk0aoBaD68OJe#BFLa8|Hx)lsH6#mr%i>Whv@V`elzCuT mrS&`a15w>wE86$0x(|JvN_fO+ejTHi}&*Yz<&W|q5AIt literal 0 HcmV?d00001 diff --git a/docs/img/design-tokens/17-tokens-themes-create.webp b/docs/img/design-tokens/17-tokens-themes-create.webp new file mode 100644 index 0000000000000000000000000000000000000000..e669810f970b980e87d08d46c7ac5ccb704ad8b7 GIT binary patch literal 4484 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 OUk-o(000000001rZLTl? literal 0 HcmV?d00001 diff --git a/docs/img/design-tokens/20-tokens-themes-group.webp b/docs/img/design-tokens/20-tokens-themes-group.webp new file mode 100644 index 0000000000000000000000000000000000000000..2ae3fa9118b2072d1209217c506b5b9e9629e8bb GIT binary patch literal 10682 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 h2-4``#<)=lrGu#Dx9`ROCYM-o literal 0 HcmV?d00001 diff --git a/docs/img/design-tokens/21-tokens-import-export.webp b/docs/img/design-tokens/21-tokens-import-export.webp new file mode 100644 index 0000000000000000000000000000000000000000..bca5065ecf8bde7e880d1ea6a4cf3fe896a22268 GIT binary patch literal 2528 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 literal 0 HcmV?d00001 diff --git a/docs/user-guide/components/index.njk b/docs/user-guide/components/index.njk index bac8b0ed9..44893da64 100644 --- a/docs/user-guide/components/index.njk +++ b/docs/user-guide/components/index.njk @@ -1,5 +1,5 @@ --- -title: 10· Components +title: 11· Components ---