mirror of
https://github.com/penpot/penpot.git
synced 2025-05-30 10:56:10 +02:00
Merge remote-tracking branch 'origin/staging' into develop
This commit is contained in:
commit
a00e7c1061
71 changed files with 169 additions and 94 deletions
|
@ -93,6 +93,10 @@ root.
|
|||
- Fix cannot rename Design Token Sets when group of same name exists [Taiga Issue #10773](https://tree.taiga.io/project/penpot/issue/10773)
|
||||
- Fix problem when duplicating grid layout [Github #6391](https://github.com/penpot/penpot/issues/6391)
|
||||
- Fix issue that makes workspace shortcuts stop working [Taiga #11062](https://tree.taiga.io/project/penpot/issue/11062)
|
||||
- Fix problem while syncing library colors and typographies [Taiga #11068](https://tree.taiga.io/project/penpot/issue/11068)
|
||||
- Fix problem with path edition of shapes [Taiga #9496](https://tree.taiga.io/project/penpot/issue/9496)
|
||||
- Fix exception on paste invalid html [Taiga #11047](https://tree.taiga.io/project/penpot/issue/11047)
|
||||
- Fix share button being displayed with no permissions [Taiga #11086](https://tree.taiga.io/project/penpot/issue/11086)
|
||||
|
||||
## 2.6.2
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
|
||||
<br />
|
||||
|
||||
[Penpot video](https://github.com/penpot/penpot/assets/5446186/b8ad0764-585e-4ddc-b098-9b4090d337cc)
|
||||
[Penpot video](https://github.com/user-attachments/assets/08b83119-c090-4a74-86ed-7bfbdda9a793)
|
||||
|
||||
<br />
|
||||
|
||||
|
|
|
@ -596,7 +596,7 @@
|
|||
(generate-sync-shape-direct changes file libraries container shape-id false)))
|
||||
|
||||
(defmethod generate-sync-shape :colors
|
||||
[_ changes library-id _ shape _ libraries _]
|
||||
[_ changes library-id _ shape libraries _]
|
||||
(shape-log :debug (:id shape) nil :msg "Sync colors of shape" :shape (:name shape))
|
||||
|
||||
;; Synchronize a shape that uses some colors of the library. The value of the
|
||||
|
@ -607,7 +607,7 @@
|
|||
#(ctc/sync-shape-colors % library-id library-colors))))
|
||||
|
||||
(defmethod generate-sync-shape :typographies
|
||||
[_ changes library-id container shape _ libraries _]
|
||||
[_ changes library-id container shape libraries _]
|
||||
(shape-log :debug (:id shape) nil :msg "Sync typographies of shape" :shape (:name shape))
|
||||
|
||||
;; Synchronize a shape that uses some typographies of the library. The attributes
|
||||
|
|
|
@ -211,8 +211,7 @@
|
|||
|
||||
(defn lazy-validator
|
||||
[s]
|
||||
(let [s (schema s)
|
||||
vfn (delay (validator s))]
|
||||
(let [vfn (delay (validator s))]
|
||||
(fn [v] (@vfn v))))
|
||||
|
||||
(defn lazy-explainer
|
||||
|
|
|
@ -16,54 +16,56 @@
|
|||
|
||||
(def node-types #{"root" "paragraph-set" "paragraph"})
|
||||
|
||||
(sm/register!
|
||||
^{::sm/type ::content}
|
||||
[:map
|
||||
[:type [:= "root"]]
|
||||
[:key {:optional true} :string]
|
||||
[:children
|
||||
{:optional true}
|
||||
[:maybe
|
||||
[:vector {:min 1 :gen/max 2 :gen/min 1}
|
||||
[:map
|
||||
[:type [:= "paragraph-set"]]
|
||||
[:key {:optional true} :string]
|
||||
[:children
|
||||
[:vector {:min 1 :gen/max 2 :gen/min 1}
|
||||
[:map
|
||||
[:type [:= "paragraph"]]
|
||||
[:key {:optional true} :string]
|
||||
[:fills {:optional true}
|
||||
[:maybe
|
||||
[:vector {:gen/max 2} ::shape/fill]]]
|
||||
[:font-family {:optional true} :string]
|
||||
[:font-size {:optional true} :string]
|
||||
[:font-style {:optional true} :string]
|
||||
[:font-weight {:optional true} :string]
|
||||
[:direction {:optional true} :string]
|
||||
[:text-decoration {:optional true} :string]
|
||||
[:text-transform {:optional true} :string]
|
||||
[:typography-ref-id {:optional true} [:maybe ::sm/uuid]]
|
||||
[:typography-ref-file {:optional true} [:maybe ::sm/uuid]]
|
||||
[:children
|
||||
[:vector {:min 1 :gen/max 2 :gen/min 1}
|
||||
[:map
|
||||
[:text :string]
|
||||
[:key {:optional true} :string]
|
||||
[:fills {:optional true}
|
||||
[:maybe
|
||||
[:vector {:gen/max 2} ::shape/fill]]]
|
||||
[:font-family {:optional true} :string]
|
||||
[:font-size {:optional true} :string]
|
||||
[:font-style {:optional true} :string]
|
||||
[:font-weight {:optional true} :string]
|
||||
[:direction {:optional true} :string]
|
||||
[:text-decoration {:optional true} :string]
|
||||
[:text-transform {:optional true} :string]
|
||||
[:typography-ref-id {:optional true} [:maybe ::sm/uuid]]
|
||||
[:typography-ref-file {:optional true} [:maybe ::sm/uuid]]]]]]]]]]]]])
|
||||
(def schema:content
|
||||
[:map
|
||||
[:type [:= "root"]]
|
||||
[:key {:optional true} :string]
|
||||
[:children
|
||||
{:optional true}
|
||||
[:maybe
|
||||
[:vector {:min 1 :gen/max 2 :gen/min 1}
|
||||
[:map
|
||||
[:type [:= "paragraph-set"]]
|
||||
[:key {:optional true} :string]
|
||||
[:children
|
||||
[:vector {:min 1 :gen/max 2 :gen/min 1}
|
||||
[:map
|
||||
[:type [:= "paragraph"]]
|
||||
[:key {:optional true} :string]
|
||||
[:fills {:optional true}
|
||||
[:maybe
|
||||
[:vector {:gen/max 2} ::shape/fill]]]
|
||||
[:font-family {:optional true} :string]
|
||||
[:font-size {:optional true} :string]
|
||||
[:font-style {:optional true} :string]
|
||||
[:font-weight {:optional true} :string]
|
||||
[:direction {:optional true} :string]
|
||||
[:text-decoration {:optional true} :string]
|
||||
[:text-transform {:optional true} :string]
|
||||
[:typography-ref-id {:optional true} [:maybe ::sm/uuid]]
|
||||
[:typography-ref-file {:optional true} [:maybe ::sm/uuid]]
|
||||
[:children
|
||||
[:vector {:min 1 :gen/max 2 :gen/min 1}
|
||||
[:map
|
||||
[:text :string]
|
||||
[:key {:optional true} :string]
|
||||
[:fills {:optional true}
|
||||
[:maybe
|
||||
[:vector {:gen/max 2} ::shape/fill]]]
|
||||
[:font-family {:optional true} :string]
|
||||
[:font-size {:optional true} :string]
|
||||
[:font-style {:optional true} :string]
|
||||
[:font-weight {:optional true} :string]
|
||||
[:direction {:optional true} :string]
|
||||
[:text-decoration {:optional true} :string]
|
||||
[:text-transform {:optional true} :string]
|
||||
[:typography-ref-id {:optional true} [:maybe ::sm/uuid]]
|
||||
[:typography-ref-file {:optional true} [:maybe ::sm/uuid]]]]]]]]]]]]])
|
||||
|
||||
(sm/register! ::content schema:content)
|
||||
|
||||
(def valid-content?
|
||||
(sm/lazy-validator schema:content))
|
||||
|
||||
(sm/register!
|
||||
^{::sm/type ::position-data}
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="{{ description or metadata.description }}">
|
||||
<link rel="stylesheet" href="{{ '/css/index.css' | url }}">
|
||||
<link rel="stylesheet" href="{{ '/css/prism.css' | url }}">
|
||||
<link rel="shortcut icon" href="/img/favicon.png">
|
||||
|
@ -15,7 +14,7 @@
|
|||
<link href="https://fonts.googleapis.com/css2?family=Work+Sans:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap" rel="stylesheet">
|
||||
{% metagen
|
||||
title=title or metadata.title,
|
||||
desc=desc or metadata.desc,
|
||||
desc=desc or metadata.desc or description or metadata.description,
|
||||
url="https://help.penpot.app" + page.url,
|
||||
img="https://help.penpot.app/img/th-help-center.jpg",
|
||||
img_alt=alt,
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 04· Code of Conduct
|
||||
desc: Learn about contributing to the Penpot project! This page outlines the Code of Conduct, reporting bugs, translations, core code contributions, & more.
|
||||
---
|
||||
|
||||
<h1 id="coc">Code of conduct</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 03· Core code contributions
|
||||
desc: Learn how to contribute to Penpot's open-source design collaboration platform. Find guidelines for bug reporting, code contributions & more.
|
||||
---
|
||||
|
||||
<h1 id="code-contributions">Core code contributions</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: Contributing
|
||||
desc: Learn how to contribute to Penpot, the open-source design collaboration platform! Find guides on bug reporting, translations, code contributions, and more.
|
||||
eleventyNavigation:
|
||||
key: Contributing
|
||||
order: 3
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 05· Libraries & Templates
|
||||
desc: Contribute to Penpot's libraries & templates! Learn how to share your files and access resources. Try Penpot - It's free!
|
||||
---
|
||||
|
||||
<h1 id="libraries">Libraries & templates</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 01· Reporting bugs
|
||||
desc: Learn how to contribute to Penpot, the open-source design and prototyping platform! Find guidelines for reporting bugs, translations, & code contributions.
|
||||
---
|
||||
|
||||
<h1 id="reporting-bugs">Reporting bugs</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 02· Translations
|
||||
desc: Contribute to Penpot! Learn how to translate Penpot into your language using Weblate. Add new translations, languages, or edit existing ones today.
|
||||
---
|
||||
|
||||
<h1 id="translations">Translations</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: Help center
|
||||
desc: Find user guides, technical documentation, plugin info, FAQs, and contributing guidelines in Penpot's help center. Join the open-source community!
|
||||
layout: layouts/home.njk
|
||||
twitter: "@penpotapp"
|
||||
image: img/placeholder.png
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
layout: layouts/plugins.njk
|
||||
title: 4. API
|
||||
desc: Create, deploy, and use the Penpot plugin API with our comprehensive documentation. Get started today and expand Penpot's capabilities.
|
||||
---
|
||||
|
||||
# Penpot plugins API
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
---
|
||||
layout: layouts/plugins-no-sidebar.njk
|
||||
title: Beta changelog
|
||||
desc: See the Penpot plugin API changelog for version 1.0! Find breaking changes, deprecations, new features, and updated documentation. Try Penpot for free.
|
||||
---
|
||||
|
||||
# Beta changelog
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
layout: layouts/plugins.njk
|
||||
title: 2. Create a Plugin
|
||||
desc: Dive into Penpot plugin development! This guide covers creating plugins from scratch or using templates, libraries, API communication, & deployment.
|
||||
---
|
||||
|
||||
# Create a Plugin
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
layout: layouts/plugins.njk
|
||||
title: 3. Deployment
|
||||
desc: Deploy your free Penpot plugins! Learn about Netlify, Cloudflare, Surge & Penpot submission in this guide. Build and share your creations.
|
||||
---
|
||||
|
||||
# Deployment
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
layout: layouts/plugins.njk
|
||||
title: 5. Examples and templates
|
||||
desc: Learn to create shapes, text, layouts, components, themes, and interactive prototypes. Start building now! See Penpot plugins with examples & templates!
|
||||
---
|
||||
|
||||
# Examples and templates
|
||||
|
@ -117,7 +118,6 @@ Just a friendly reminder that it's important to have the <b>comment permissions<
|
|||
|
||||
<a target="_blank" href="https://github.com/penpot/penpot-plugins-samples/tree/main/create-comments">Comments example</a>
|
||||
|
||||
|
||||
## 5.2. Templates
|
||||
|
||||
As we mentioned in the <a target="_blank" href="/plugins/create-a-plugin/">Create a plugin</a> section, we've got two great options for you to get started with your plugin.
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
layout: layouts/plugins.njk
|
||||
title: 6. FAQ
|
||||
desc: Find answers to common questions about plugin development, from choosing the right Node version to creating components. See Penpot plugins!
|
||||
---
|
||||
|
||||
# FAQ
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
layout: layouts/plugins.njk
|
||||
title: 1. Getting started
|
||||
desc: Dive into Penpot plugins! Extend Penpot's functionality by automating tasks and adding new features using JavaScript, HTML, & CSS. Get started now!
|
||||
---
|
||||
|
||||
# Getting started
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
layout: layouts/plugins-home.njk
|
||||
title: Plugins
|
||||
desc: "Get started with Penpot Plugins: Installation, development, and deployment. Access API documentation, examples, templates, and FAQs."
|
||||
eleventyNavigation:
|
||||
key: Plugins
|
||||
order: 5
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 2. Penpot Configuration
|
||||
desc: Learn about self-hosting, configuration via environment variables, and authentication providers. Try Penpot - It's free! See Penpot's technical guide.
|
||||
---
|
||||
|
||||
# Penpot Configuration
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: Backend app
|
||||
desc: Dive into self-hosting, configuration, developer insights (architecture, data model), integration, and troubleshooting. See Penpot's Technical Guide.
|
||||
---
|
||||
|
||||
# Backend app
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: Common code
|
||||
desc: Learn about architecture, data models, and development environments. See Penpot's technical guide for developers. Dive into common code.
|
||||
---
|
||||
|
||||
# Common code
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: Exporter app
|
||||
desc: Learn about self-hosting, configuration, architecture (backend, frontend), data model, and development environment. See Penpot's technical guide.
|
||||
---
|
||||
|
||||
# Exporter app
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: Frontend app
|
||||
desc: Dive into the UI, data namespaces, ClojureScript, React, and worker app functionalities. View Penpot's frontend app architecture. Free to try!
|
||||
---
|
||||
|
||||
### Frontend app
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 3.01. Architecture
|
||||
desc: Dive into architecture, backend, frontend, data models, and development environments. Contribute and self-host for free! See Penpot's technical guide.
|
||||
---
|
||||
|
||||
# Architecture
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 3.04. Common Guide
|
||||
desc: "View Penpot's technical guide: self-hosting, configuration, developer insights, architecture, data model, integration, and troubleshooting."
|
||||
---
|
||||
|
||||
# Common guide
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 3.08. Data Guide
|
||||
desc: Learn about data structures, code organization, file operations, migrations, shape editing, and component syncing. See Penpot's technical guide. Try it free!
|
||||
---
|
||||
|
||||
# Data Guide
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 3.02. Data model
|
||||
desc: Learn about self-hosting, configuration, developer tools, data models, architecture, and integrations. View Penpot's technical guide. Free to use!
|
||||
---
|
||||
|
||||
# Penpot Data Model
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 3.03. Dev environment
|
||||
desc: Dive into Penpot's development environment. Learn about self-hosting, configuration, developer tools, architecture, and more. See the Penpot Technical Guide!
|
||||
---
|
||||
|
||||
# Development environment
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 3.05. Frontend Guide
|
||||
desc: "See Penpot's technical guide: self-hosting, configuration, developer insights (architecture, data model), frontend, backend, and integrations & more!"
|
||||
---
|
||||
|
||||
# Frontend Guide
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 3. Developer Guide
|
||||
desc: Dive into architecture, data models, and more. Start building today! See Penpot's technical guide for self-hosting, configuration, and developer insights.
|
||||
---
|
||||
|
||||
# Developer Guide
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: Assets storage
|
||||
desc: Learn about assets storage, API, object buckets, sharing, and garbage collection. See Penpot's technical guide for developers. Try Penpot - It's free.
|
||||
---
|
||||
|
||||
# Assets storage
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: Authentication
|
||||
desc: Dive into Penpot today! Learn about self-hosting, configuration, developer insights, authentication, and more. View Penpot's technical guide. Try it free.
|
||||
---
|
||||
|
||||
# User authentication
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 3.09. Penpot subsystems
|
||||
desc: Learn about architecture, data models, and subsystems. View Penpot's technical guide for self-hosting, configuration, and development insights. Free!
|
||||
---
|
||||
|
||||
# Penpot subsystems
|
||||
|
@ -12,4 +13,3 @@ implemented, over the whole app (backend, frontend or exporter), and points to
|
|||
the most relevant source files to look at to start exploring it. When some
|
||||
special considerations are needed (performance questions, limits, common
|
||||
"gotchas", historic reasons of some decisions, etc.) they are also noted.
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 3.10. UI Guide
|
||||
desc: Learn UI development with React & Rumext, design system implementation, and performance considerations. See Penpot's technical guide. Free to use!
|
||||
---
|
||||
|
||||
# UI Guide
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 1.3 Install with Docker
|
||||
desc: This Penpot technical guide covers self-hosting, Docker installation, configuration, updates, backups, and proxy setup with NGINX and Caddy. Try Penpot!
|
||||
---
|
||||
|
||||
<p class="advice">
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 1. Self-hosting Guide
|
||||
desc: Customize your Penpot instance today. Learn how to install with Elestio, Docker, or Kubernetes from the technical guide for self-hosting options.
|
||||
---
|
||||
|
||||
# Self-hosting Guide
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 1.4 Install with Kubernetes
|
||||
desc: Learn how to install and configure Penpot on your Kubernetes cluster using Helm. Our technical guide provides step-by-step instructions for setup.
|
||||
---
|
||||
|
||||
# Install with Kubernetes
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 1.1 Recommended storage
|
||||
desc: Learn recommended self-hosting settings, Docker & Kubernetes installs, configuration, and troubleshooting tips in Penpot's technical guide.
|
||||
---
|
||||
|
||||
# Recommended storage
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 1.5 Unofficial self-host options
|
||||
desc: Find guides for Docker, Kubernetes, and more in Penpot's Technical Guide for self-hosting options! Discover unofficial self-host options too.
|
||||
---
|
||||
|
||||
# Unofficial self-host options
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: Technical Guide
|
||||
desc: Get self-hosting instructions, integration details, and developer resources. Troubleshoot issues easily. Try Penpot free! See Penpot's technical guide.
|
||||
eleventyNavigation:
|
||||
key: Technical Guide
|
||||
order: 4
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 4. Integration Guide
|
||||
desc: Connect Penpot with other apps using webhooks and access tokens! Learn from Penpot's integration guide for seamless workflows. Try Penpot - It's free.
|
||||
---
|
||||
|
||||
# Integration Guide
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 5. Troubleshooting Penpot
|
||||
desc: Troubleshoot Penpot like a pro! Our technical guide offers tips and tricks for diagnosing issues, reading logs, and resolving problems. Get started now!
|
||||
---
|
||||
|
||||
# Troubleshooting Penpot
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 11· Components
|
||||
desc: Streamline your design workflow with Penpot's Components guide! Learn to create, duplicate, group, and manage reusable components.
|
||||
---
|
||||
|
||||
<h1 id="components">Components</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 17· Custom fonts
|
||||
desc: Penpot's guide on custom fonts! Upload, manage, and use custom fonts in Penpot! Enhance your designs with personalised typography.
|
||||
---
|
||||
|
||||
<h1 id="customfonts">Custom fonts</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 07· Exporting objects
|
||||
desc: Learn how to export objects in Penpot, the free, open-source design collaboration tool. This guide covers export presets, file formats, and more!
|
||||
---
|
||||
|
||||
<h1 id="export">Exporting objects</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 08· Flexible Layouts
|
||||
desc: Master responsive web design with Penpot's flexible and grid layouts! Learn Flexbox and CSS Grid standards. Explore tutorials, properties, and more.
|
||||
---
|
||||
|
||||
<h1 id="layouts">Flexible Layouts</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 15· Import/export files
|
||||
desc: Learn how to import and export files in Penpot, the free, open-source design tool. Discover file formats, backups, sharing, and library management.
|
||||
---
|
||||
|
||||
<h1 id="import-export">Import and export files</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: User guide
|
||||
desc: Learn everything from interface basics to advanced features like prototyping and design sharing with Penpot's comprehensive user guide! Free access.
|
||||
eleventyNavigation:
|
||||
key: User guide
|
||||
order: 2
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 14· Inspect designs
|
||||
desc: Learn how to inspect designs in Penpot! This guide covers distances, properties, code snippets (CSS, SVG, HTML), & exporting assets for seamless collaboration.
|
||||
---
|
||||
|
||||
<h1 id="inspect">Inspect designs</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 01· Introduction
|
||||
desc: Begin with the Penpot user guide! Get quickstarts, shortcuts, and tutorials. Learn the interface, layers, objects, styling, and more.
|
||||
---
|
||||
|
||||
<h1 id="section-1">Introduction</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: Tutorials & info
|
||||
desc: Begin with Penpot's comprehensive user guide! Get tutorials, learn interface basics, and master design features. Discover FAQs and more.
|
||||
---
|
||||
|
||||
<h1 id="section-1-1">Tutorials & info</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: Quickstart
|
||||
desc: Start instantly with Penpot, the open-source design and prototyping platform! Access our free user guide to learn now.
|
||||
---
|
||||
|
||||
<h1 id="section-1-1">Quickstart</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: Shortcuts
|
||||
desc: Get quickstart tips, shortcuts, and tutorials for Penpot! Learn interface basics and more with this free, open-source design tool.
|
||||
---
|
||||
|
||||
<h1 id="section-1-1">Shortcuts</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 04· Layer basics
|
||||
desc: Master layer basics with Penpot's user guide! Learn to create, manipulate, and organize layers for stunning designs. Try Penpot, it's free!
|
||||
---
|
||||
|
||||
<h1 id="layer-basics">Layer basics</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 09· Asset Libraries
|
||||
desc: Use Penpot's asset libraries for reusable design elements! Learn to create, manage, and share components, colors, and typography. Try Penpot - it's free!
|
||||
---
|
||||
|
||||
<h1 id="asset-libraries">Asset Libraries</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 05· Objects
|
||||
desc: "Work with Penpot's objects: boards, shapes, text, paths, and graphics. Learn to create, select, rename, and customize boards for optimal workflow."
|
||||
---
|
||||
|
||||
<h1 id="objects">Objects</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 18· Plugins
|
||||
desc: Extend Penpot's functionality with plugins! Install from PenpotHub or via URL. Learn to install, use, and create your own plugins.
|
||||
---
|
||||
|
||||
<h1 id="penpot-plugins">Penpot Plugins</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 12· Prototyping
|
||||
desc: This Penpot user guide explains how to prototype interactions, connect boards, use triggers/actions, and animations. Learn to build flows and more!
|
||||
---
|
||||
|
||||
<h1 id="prototype">Prototyping interactions</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 06· Styling
|
||||
desc: Style your designs with Penpot's options! Learn about color fills, gradients, strokes, shadows, blur, opacity, blend modes, and property copying.
|
||||
---
|
||||
|
||||
<h1 id="styling">Styling</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 16· Teams
|
||||
desc: Manage teams and roles with Penpot's collaboration features! Learn how to manage teams, roles (Viewer, Editor, Admin, Owner), send invites and use webhooks.
|
||||
---
|
||||
|
||||
<h1 id="teams">Teams</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 02· The interface
|
||||
desc: Discover Penpot's free user guide! Learn the interface, workspace basics, flexible layouts, and prototyping. Master Penpot today.
|
||||
---
|
||||
|
||||
<h1 id="the-interface">The interface</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 13· View mode
|
||||
desc: Present designs and share prototypes with Penpot's View mode! Play interactions, navigate boards, zoom, and toggle fullscreen. Try it for free!
|
||||
---
|
||||
|
||||
<h1 id="viewmode">View mode</h1>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
---
|
||||
title: 03· Workspace basics
|
||||
desc: Master Penpot's workspace basics! Learn interface navigation, zoom tools, dynamic alignment, rulers, guides, and shortcuts.
|
||||
---
|
||||
|
||||
<h1 id="workspace-basics">Workspace basics</h1>
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
[app.common.types.shape :as cts]
|
||||
[app.common.types.shape-tree :as ctst]
|
||||
[app.common.types.shape.layout :as ctl]
|
||||
[app.common.types.shape.text :as types.text]
|
||||
[app.common.types.typography :as ctt]
|
||||
[app.common.uuid :as uuid]
|
||||
[app.config :as cf]
|
||||
|
@ -2191,27 +2192,27 @@
|
|||
(ptk/reify ::paste-html-text
|
||||
ptk/WatchEvent
|
||||
(watch [_ state _]
|
||||
(let [root (dwtxt/create-root-from-html html)
|
||||
content (tc/dom->cljs root)
|
||||
(let [root (dwtxt/create-root-from-html html)
|
||||
content (tc/dom->cljs root)]
|
||||
(when (types.text/valid-content? content)
|
||||
(let [id (uuid/next)
|
||||
width (max 8 (min (* 7 (count text)) 700))
|
||||
height 16
|
||||
{:keys [x y]} (calculate-paste-position state)
|
||||
|
||||
id (uuid/next)
|
||||
width (max 8 (min (* 7 (count text)) 700))
|
||||
height 16
|
||||
{:keys [x y]} (calculate-paste-position state)
|
||||
|
||||
shape {:id id
|
||||
:type :text
|
||||
:name (txt/generate-shape-name text)
|
||||
:x x
|
||||
:y y
|
||||
:width width
|
||||
:height height
|
||||
:grow-type (if (> (count text) 100) :auto-height :auto-width)
|
||||
:content content}
|
||||
undo-id (js/Symbol)]
|
||||
(rx/of (dwu/start-undo-transaction undo-id)
|
||||
(dwsh/create-and-add-shape :text x y shape)
|
||||
(dwu/commit-undo-transaction undo-id))))))
|
||||
shape {:id id
|
||||
:type :text
|
||||
:name (txt/generate-shape-name text)
|
||||
:x x
|
||||
:y y
|
||||
:width width
|
||||
:height height
|
||||
:grow-type (if (> (count text) 100) :auto-height :auto-width)
|
||||
:content content}
|
||||
undo-id (js/Symbol)]
|
||||
(rx/of (dwu/start-undo-transaction undo-id)
|
||||
(dwsh/create-and-add-shape :text x y shape)
|
||||
(dwu/commit-undo-transaction undo-id))))))))
|
||||
|
||||
(defn- paste-text
|
||||
[text]
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
ptk/UpdateEvent
|
||||
(update [_ state]
|
||||
(-> state
|
||||
(update :workspace-local dissoc :edition)
|
||||
(update :workspace-local dissoc :edition :edit-path)
|
||||
(update :workspace-drawing dissoc :tool :object :lock)
|
||||
(dissoc :workspace-grid-edition)))
|
||||
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
[app.main.data.helpers :as dsh]
|
||||
[app.main.data.modal :as md]
|
||||
[app.main.data.workspace.collapse :as dwc]
|
||||
[app.main.data.workspace.edition :as dwe]
|
||||
[app.main.data.workspace.specialized-panel :as-alias dwsp]
|
||||
[app.main.data.workspace.undo :as dwu]
|
||||
[app.main.data.workspace.zoom :as dwz]
|
||||
|
@ -305,8 +306,9 @@
|
|||
(watch [_ state _]
|
||||
(let [params-without-board (-> (rt/get-params state)
|
||||
(dissoc :board-id))]
|
||||
(rx/of ::dwsp/interrupt)
|
||||
(rx/of (rt/nav :workspace params-without-board {::rt/replace true}))))
|
||||
(rx/of ::dwsp/interrupt
|
||||
(dwe/clear-edition-mode)
|
||||
(rt/nav :workspace params-without-board {::rt/replace true}))))
|
||||
|
||||
ptk/UpdateEvent
|
||||
(update [_ state]
|
||||
|
|
|
@ -129,6 +129,12 @@
|
|||
input-ref (mf/use-ref nil)
|
||||
|
||||
team (mf/deref refs/team)
|
||||
permissions (get team :permissions)
|
||||
|
||||
display-share-button?
|
||||
(and (not (:is-default team))
|
||||
(or (:is-admin permissions)
|
||||
(:is-owner permissions)))
|
||||
|
||||
nav-to-viewer
|
||||
(mf/use-fn
|
||||
|
@ -216,7 +222,7 @@
|
|||
:on-click toggle-history}
|
||||
i/history]])
|
||||
|
||||
(when (not (:is-default team))
|
||||
(when display-share-button?
|
||||
[:a {:class (stl/css :viewer-btn)
|
||||
:title (tr "workspace.header.share")
|
||||
:on-click open-share-dialog}
|
||||
|
|
|
@ -83,7 +83,10 @@ export function mapContentFragmentFromDocument(document, root, styleDefaults) {
|
|||
currentNode = nodeIterator.nextNode();
|
||||
}
|
||||
|
||||
fragment.appendChild(currentParagraph);
|
||||
if (currentParagraph) {
|
||||
fragment.appendChild(currentParagraph);
|
||||
}
|
||||
|
||||
if (fragment.children.length === 1) {
|
||||
const isContentInline = isContentFragmentFromDocumentInline(document);
|
||||
if (isContentInline) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue