0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-03-12 07:41:43 -05:00

Merge remote-tracking branch 'origin/staging' into develop

This commit is contained in:
Andrey Antukh 2024-06-14 07:45:53 +02:00
commit 88540eeedd
13 changed files with 240 additions and 286 deletions

View file

@ -53,6 +53,7 @@
- Toolbar keeps toggling on and off on spacebar press [Taiga #7654](https://github.com/penpot/penpot/pull/7654) - Toolbar keeps toggling on and off on spacebar press [Taiga #7654](https://github.com/penpot/penpot/pull/7654)
- Fix toolbar keeps hiding when click outside workspace [Taiga #7776](https://tree.taiga.io/project/penpot/issue/7776) - Fix toolbar keeps hiding when click outside workspace [Taiga #7776](https://tree.taiga.io/project/penpot/issue/7776)
- Fix open overlay relative to a frame [Taiga #7563](https://tree.taiga.io/project/penpot/issue/7563) - Fix open overlay relative to a frame [Taiga #7563](https://tree.taiga.io/project/penpot/issue/7563)
- Workspace-palette items stay hidden when opening with keyboard-shortcut [Taiga #7489](https://tree.taiga.io/project/penpot/issue/7489)
## 2.0.3 ## 2.0.3

View file

@ -53,6 +53,7 @@ export class WorkspacePage extends BaseWebSocketPage {
this.selectionRect = page.getByTestId("workspace-selection-rect"); this.selectionRect = page.getByTestId("workspace-selection-rect");
this.horizontalScrollbar = page.getByTestId("horizontal-scrollbar"); this.horizontalScrollbar = page.getByTestId("horizontal-scrollbar");
this.librariesModal = page.getByTestId("libraries-modal"); this.librariesModal = page.getByTestId("libraries-modal");
this.togglePalettesVisibility = page.getByTestId("toggle-palettes-visibility");
} }
async goToWorkspace({ fileId = WorkspacePage.anyFileId, pageId = WorkspacePage.anyPageId } = {}) { async goToWorkspace({ fileId = WorkspacePage.anyFileId, pageId = WorkspacePage.anyPageId } = {}) {
@ -173,4 +174,9 @@ export class WorkspacePage extends BaseWebSocketPage {
.getByRole("button", { name: "Color Palette (Alt+P)" }) .getByRole("button", { name: "Color Palette (Alt+P)" })
.click(clickOptions); .click(clickOptions);
} }
async clickTogglePalettesVisibility(clickOptions = {}) {
await this.togglePalettesVisibility
.click(clickOptions);
}
} }

View file

@ -120,3 +120,14 @@ test("User adds a library and its automatically selected in the color palette",
await expect(workspacePage.palette.getByText('There are no color styles in your library yet')).toBeVisible(); await expect(workspacePage.palette.getByText('There are no color styles in your library yet')).toBeVisible();
}); });
test("Bug 7489 - Workspace-palette items stay hidden when opening with keyboard-shortcut", async ({ page }) => {
const workspacePage = new WorkspacePage(page);
await workspacePage.setupEmptyFile();
await workspacePage.goToWorkspace();
await workspacePage.clickTogglePalettesVisibility();
await workspacePage.page.keyboard.press("Alt+t");
await expect(workspacePage.palette.getByText("There are no typography styles in your library yet")).toBeVisible();
});

View file

@ -354,7 +354,7 @@
// STATUS WIDGET // STATUS WIDGET
--status-widget-background-color-success: var(--status-color-success-500); --status-widget-background-color-success: var(--status-color-success-500);
--status-widget-background-color-warning: var(--status-color-warning-500); --status-widget-background-color-warning: var(--status-color-warning-500);
--status-widget-background-color-pending: var(--status-color-pending-500); --status-widget-background-color-pending: var(--status-color-info-500);
--status-widget-background-color-error: var(--status-color-error-500); --status-widget-background-color-error: var(--status-color-error-500);
--status-widget-icon-foreground-color: var(--color-background-primary); --status-widget-icon-foreground-color: var(--color-background-primary);

View file

@ -63,6 +63,12 @@ h.watch("resources/templates", null, async function (path) {
await h.compileTemplates(); await h.compileTemplates();
}); });
log.info("watch: translations (~)")
h.watch("translations", null, async function (path) {
log.info("changed:", path);
await h.compileTemplates();
});
log.info("watch: assets (~)") log.info("watch: assets (~)")
h.watch(["resources/images", "resources/fonts", "resources/plugins-runtime"], null, async function (path) { h.watch(["resources/images", "resources/fonts", "resources/plugins-runtime"], null, async function (path) {
log.info("changed:", path); log.info("changed:", path);

View file

@ -20,6 +20,7 @@
:comments :comments
:assets :assets
:document-history :document-history
:hide-palettes
:colorpalette :colorpalette
:element-options :element-options
:rulers :rulers
@ -134,7 +135,8 @@
"A map of layout flags that should be persisted in local storage; the "A map of layout flags that should be persisted in local storage; the
value corresponds to the key that will be used for save the data in value corresponds to the key that will be used for save the data in
storage object. It should be namespace qualified." storage object. It should be namespace qualified."
{:colorpalette :app.main.data.workspace/show-colorpalette? {:hide-palettes :app.main.data.workspace/hide-palettes?
:colorpalette :app.main.data.workspace/show-colorpalette?
:textpalette :app.main.data.workspace/show-textpalette?}) :textpalette :app.main.data.workspace/show-textpalette?})
(defn load-layout-flags (defn load-layout-flags

View file

@ -436,14 +436,16 @@
:command (ds/a-mod "p") :command (ds/a-mod "p")
:subsections [:panels] :subsections [:panels]
:fn #(do (r/set-resize-type! :bottom) :fn #(do (r/set-resize-type! :bottom)
(emit-when-no-readonly (dw/remove-layout-flag :textpalette) (emit-when-no-readonly (dw/remove-layout-flag :hide-palettes)
(dw/remove-layout-flag :textpalette)
(toggle-layout-flag :colorpalette)))} (toggle-layout-flag :colorpalette)))}
:toggle-textpalette {:tooltip (ds/alt "T") :toggle-textpalette {:tooltip (ds/alt "T")
:command (ds/a-mod "t") :command (ds/a-mod "t")
:subsections [:panels] :subsections [:panels]
:fn #(do (r/set-resize-type! :bottom) :fn #(do (r/set-resize-type! :bottom)
(emit-when-no-readonly (dw/remove-layout-flag :colorpalette) (emit-when-no-readonly (dw/remove-layout-flag :hide-palettes)
(dw/remove-layout-flag :colorpalette)
(toggle-layout-flag :textpalette)))} (toggle-layout-flag :textpalette)))}
:hide-ui {:tooltip "\\" :hide-ui {:tooltip "\\"

View file

@ -49,12 +49,12 @@
(when (some? on-prev) (when (some? on-prev)
[:button {:class (stl/css :prev-button) [:button {:class (stl/css :prev-button)
:on-click on-prev} :on-click on-prev}
(tr "questions.previous")]) (tr "labels.previous")])
[:> fm/submit-button* [:> fm/submit-button*
{:label (if (< step 5) {:label (if (< step 5)
(tr "questions.next") (tr "labels.next")
(tr "questions.start")) (tr "labels.start"))
:class (stl/css :next-button)}]]])) :class (stl/css :next-button)}]]]))
(s/def ::questions-form-step-1 (s/def ::questions-form-step-1
@ -82,28 +82,28 @@
[{:keys [on-next form]}] [{:keys [on-next form]}]
(let [use-options (let [use-options
(mf/with-memo [] (mf/with-memo []
(shuffle [{:label (tr "questions.use-work") :value "use-work"} (shuffle [{:label (tr "onboarding.questions.use.work") :value "work"}
{:label (tr "questions.use-education") :value "use-education"} {:label (tr "onboarding.questions.use.education") :value "education"}
{:label (tr "questions.use-personal") :value "use-personal"}])) {:label (tr "onboarding.questions.use.personal") :value "personal"}]))
planning-options planning-options
(mf/with-memo [] (mf/with-memo []
(-> (shuffle [{:label (tr "questions.select-option") (-> (shuffle [{:label (tr "labels.select-option")
:value "" :key "questions:what-brings-you-here" :value "" :key "questions:what-brings-you-here"
:disabled true} :disabled true}
{:label (tr "questions.reasons.exploring") {:label (tr "onboarding.questions.reasons.exploring")
:value "discover-more-about-penpot" :value "discover-more-about-penpot"
:key "discover-more-about-penpot"} :key "discover-more-about-penpot"}
{:label (tr "questions.reasons.fit") {:label (tr "onboarding.questions.reasons.fit")
:value "test-penpot-to-see-if-its-a-fit-for-team" :value "test-penpot-to-see-if-its-a-fit-for-team"
:key "test-penpot-to-see-if-its-a-fit-for-team"} :key "test-penpot-to-see-if-its-a-fit-for-team"}
{:label (tr "questions.reasons.alternative") {:label (tr "onboarding.questions.reasons.alternative")
:value "alternative-to-figma" :value "alternative-to-figma"
:key "alternative-to-figma"} :key "alternative-to-figma"}
{:label (tr "questions.reasons.testing") {:label (tr "onboarding.questions.reasons.testing")
:value "try-out-before-using-penpot-on-premise" :value "try-out-before-using-penpot-on-premise"
:key "try-out-before-using-penpot-on-premise"}]) :key "try-out-before-using-penpot-on-premise"}])
(conj {:label (tr "questions.other-short") :value "other"}))) (conj {:label (tr "labels.other-short") :value "other"})))
current-planning current-planning
(dm/get-in @form [:data :planning])] (dm/get-in @form [:data :planning])]
@ -116,22 +116,22 @@
[:img {:class (stl/css :header-image) [:img {:class (stl/css :header-image)
:src "images/form/use-for-1.png" :src "images/form/use-for-1.png"
:alt (tr "questions.lets-get-started")}] :alt (tr "onboarding.questions.lets-get-started")}]
[:h1 {:class (stl/css :modal-title)} [:h1 {:class (stl/css :modal-title)}
(tr "questions.step1-title")] (tr "onboarding.questions.step1.title")]
[:p {:class (stl/css :modal-text)} [:p {:class (stl/css :modal-text)}
(tr "questions.step1-subtitle")] (tr "onboarding.questions.step1.subtitle")]
[:div {:class (stl/css :modal-question)} [:div {:class (stl/css :modal-question)}
[:h3 {:class (stl/css :modal-subtitle)} [:h3 {:class (stl/css :modal-subtitle)}
(tr "questions.step1-question1")] (tr "onboarding.questions.step1.question1")]
[:& fm/radio-buttons {:options use-options [:& fm/radio-buttons {:options use-options
:name :expected-use :name :expected-use
:class (stl/css :radio-btns)}] :class (stl/css :radio-btns)}]
[:h3 {:class (stl/css :modal-subtitle)} [:h3 {:class (stl/css :modal-subtitle)}
(tr "questions.step1-question2")] (tr "onboarding.questions.step1.question2")]
[:& fm/select [:& fm/select
{:options planning-options {:options planning-options
@ -143,7 +143,7 @@
(when (= current-planning "other") (when (= current-planning "other")
[:& fm/input {:name :planning-other [:& fm/input {:name :planning-other
:class (stl/css :input-spacing) :class (stl/css :input-spacing)
:placeholder (tr "questions.other") :placeholder (tr "labels.other")
:label ""}])]])) :label ""}])]]))
(s/def ::questions-form-step-2 (s/def ::questions-form-step-2
@ -168,17 +168,17 @@
[{:keys [on-next on-prev form]}] [{:keys [on-next on-prev form]}]
(let [design-tool-options (let [design-tool-options
(mf/with-memo [] (mf/with-memo []
(-> (shuffle [{:label (tr "questions.figma") :img-width "48px" :img-height "60px" (-> (shuffle [{:label (tr "labels.figma") :img-width "48px" :img-height "60px"
:value "figma" :image "images/form/figma.png"} :value "figma" :image "images/form/figma.png"}
{:label (tr "questions.sketch") :img-width "48px" :img-height "60px" {:label (tr "labels.sketch") :img-width "48px" :img-height "60px"
:value "sketch" :image "images/form/sketch.png"} :value "sketch" :image "images/form/sketch.png"}
{:label (tr "questions.adobe-xd") :img-width "48px" :img-height "60px" {:label (tr "labels.adobe-xd") :img-width "48px" :img-height "60px"
:value "adobe-xd" :image "images/form/adobe-xd.png"} :value "adobe-xd" :image "images/form/adobe-xd.png"}
{:label (tr "questions.canva") :img-width "48px" :img-height "60px" {:label (tr "labels.canva") :img-width "48px" :img-height "60px"
:value "canva" :image "images/form/canva.png"} :value "canva" :image "images/form/canva.png"}
{:label (tr "questions.invision") :img-width "48px" :img-height "60px" {:label (tr "labels.invision") :img-width "48px" :img-height "60px"
:value "invision" :image "images/form/invision.png"}]) :value "invision" :image "images/form/invision.png"}])
(conj {:label (tr "questions.other-short") :value "other" :icon i/curve}))) (conj {:label (tr "labels.other-short") :value "other" :icon i/curve})))
current-experience current-experience
(dm/get-in @form [:clean-data :experience-design-tool]) (dm/get-in @form [:clean-data :experience-design-tool])
@ -199,7 +199,7 @@
:class (stl/css :step-2)} :class (stl/css :step-2)}
[:h1 {:class (stl/css :modal-title)} [:h1 {:class (stl/css :modal-title)}
(tr "question.design-tool-more-used")] (tr "onboarding.questions.step2.title")]
[:div {:class (stl/css :radio-wrapper)} [:div {:class (stl/css :radio-wrapper)}
[:& fm/image-radio-buttons {:options design-tool-options [:& fm/image-radio-buttons {:options design-tool-options
:img-width "48px" :img-width "48px"
@ -212,7 +212,7 @@
(when (= current-experience "other") (when (= current-experience "other")
[:& fm/input {:name :experience-design-tool-other [:& fm/input {:name :experience-design-tool-other
:class (stl/css :input-spacing) :class (stl/css :input-spacing)
:placeholder (tr "questions.other") :placeholder (tr "labels.other")
:label ""}])]])) :label ""}])]]))
(s/def ::questions-form-step-3 (s/def ::questions-form-step-3
@ -246,36 +246,35 @@
[{:keys [on-next on-prev form]}] [{:keys [on-next on-prev form]}]
(let [role-options (let [role-options
(mf/with-memo [] (mf/with-memo []
(-> (shuffle [{:label (tr "questions.select-option") :value "" :key "role" :disabled true} (-> (shuffle [{:label (tr "labels.select-option") :value "" :key "role" :disabled true}
{:label (tr "questions.work-type.ux") :value "designer" :key "designer"} {:label (tr "labels.product-design") :value "ux" :key "ux"}
{:label (tr "questions.work-type.dev") :value "developer" :key "developer"} {:label (tr "labels.developer") :value "developer" :key "developer"}
{:label (tr "questions.work-type.student") :value "student-teacher" :key "student"} {:label (tr "labels.student-teacher") :value "student-teacher" :key "student"}
{:label (tr "questions.work-type.graphic") :value "graphic-design" :key "design"} {:label (tr "labels.graphic-design") :value "designer" :key "design"}
{:label (tr "questions.work-type.marketing") :value "marketing" :key "marketing"} {:label (tr "labels.marketing") :value "marketing" :key "marketing"}
{:label (tr "questions.work-type.product") :value "manager" :key "manager"}]) {:label (tr "labels.product-management") :value "manager" :key "manager"}])
(conj {:label (tr "questions.other-short") :value "other"}))) (conj {:label (tr "labels.other-short") :value "other"})))
responsability-options responsability-options
(mf/with-memo [] (mf/with-memo []
(-> (shuffle [{:label (tr "questions.select-option") :value "" :key "responsability" :disabled true} (-> (shuffle [{:label (tr "labels.select-option") :value "" :key "responsability" :disabled true}
{:label (tr "questions.role.team-leader") :value "team-leader"} {:label (tr "labels.team-leader") :value "team-leader"}
{:label (tr "questions.role.team-member") :value "team-member"} {:label (tr "labels.team-member") :value "team-member"}
{:label (tr "questions.role.freelancer") :value "freelancer"} {:label (tr "labels.freelancer") :value "freelancer"}
{:label (tr "questions.role.founder") :value "ceo-founder"} {:label (tr "labels.founder") :value "ceo-founder"}
{:label (tr "questions.role.director") :value "director"} {:label (tr "labels.director") :value "director"}])
{:label (tr "questions.student-teacher") :value "student-teacher"}]) (conj {:label (tr "labels.other-short") :value "other"})))
(conj {:label (tr "questions.other-short") :value "other"})))
team-size-options team-size-options
(mf/with-memo [] (mf/with-memo []
[{:label (tr "questions.select-option") :value "" :key "team-size" :disabled true} [{:label (tr "labels.select-option") :value "" :key "team-size" :disabled true}
{:label (tr "questions.more-than-50") :value "more-than-50" :key "more-than-50"} {:label (tr "onboarding.questions.team-size.more-than-50") :value "more-than-50" :key "more-than-50"}
{:label (tr "questions.31-50") :value "31-50" :key "31-50"} {:label (tr "onboarding.questions.team-size.31-50") :value "31-50" :key "31-50"}
{:label (tr "questions.11-30") :value "11-30" :key "11-30"} {:label (tr "onboarding.questions.team-size.11-30") :value "11-30" :key "11-30"}
{:label (tr "questions.2-10") :value "2-10" :key "2-10"} {:label (tr "onboarding.questions.team-size.2-10") :value "2-10" :key "2-10"}
{:label (tr "questions.freelancer") :value "freelancer" :key "freelancer"} {:label (tr "onboarding.questions.team-size.freelancer") :value "freelancer" :key "freelancer"}
{:label (tr "questions.personal-project") :value "personal-project" :key "personal-project"}]) {:label (tr "onboarding.questions.team-size.personal-project") :value "personal-project" :key "personal-project"}])
current-role current-role
(dm/get-in @form [:data :role]) (dm/get-in @form [:data :role])
@ -290,9 +289,10 @@
:on-prev on-prev :on-prev on-prev
:class (stl/css :step-3)} :class (stl/css :step-3)}
[:h1 {:class (stl/css :modal-title)} (tr "questions.step3-title")] [:h1 {:class (stl/css :modal-title)}
(tr "onboarding.questions.step3.title")]
[:div {:class (stl/css :modal-question)} [:div {:class (stl/css :modal-question)}
[:h3 {:class (stl/css :modal-subtitle)} (tr "questions.step3.question1")] [:h3 {:class (stl/css :modal-subtitle)} (tr "onboarding.questions.step3.question1")]
[:& fm/select {:options role-options [:& fm/select {:options role-options
:select-class (stl/css :select-class) :select-class (stl/css :select-class)
:default "" :default ""
@ -301,11 +301,11 @@
(when (= current-role "other") (when (= current-role "other")
[:& fm/input {:name :role-other [:& fm/input {:name :role-other
:class (stl/css :input-spacing) :class (stl/css :input-spacing)
:placeholder (tr "questions.other") :placeholder (tr "labels.other")
:label ""}])] :label ""}])]
[:div {:class (stl/css :modal-question)} [:div {:class (stl/css :modal-question)}
[:h3 {:class (stl/css :modal-subtitle)} (tr "questions.step3.question2")] [:h3 {:class (stl/css :modal-subtitle)} (tr "onboarding.questions.step3.question2")]
[:& fm/select {:options responsability-options [:& fm/select {:options responsability-options
:select-class (stl/css :select-class) :select-class (stl/css :select-class)
:default "" :default ""
@ -314,11 +314,11 @@
(when (= current-responsability "other") (when (= current-responsability "other")
[:& fm/input {:name :responsability-other [:& fm/input {:name :responsability-other
:class (stl/css :input-spacing) :class (stl/css :input-spacing)
:placeholder (tr "questions.other") :placeholder (tr "labels.other")
:label ""}])] :label ""}])]
[:div {:class (stl/css :modal-question)} [:div {:class (stl/css :modal-question)}
[:h3 {:class (stl/css :modal-subtitle)} (tr "questions.company-size")] [:h3 {:class (stl/css :modal-subtitle)} (tr "onboarding.questions.step3.question3")]
[:& fm/select {:options team-size-options [:& fm/select {:options team-size-options
:default "" :default ""
:select-class (stl/css :select-class) :select-class (stl/css :select-class)
@ -345,12 +345,17 @@
[{:keys [on-next on-prev form]}] [{:keys [on-next on-prev form]}]
(let [start-options (let [start-options
(mf/with-memo [] (mf/with-memo []
(-> (shuffle [{:label (tr "questions.starting-ui") :value "ui" :image "images/form/Design.png"} (-> (shuffle [{:label (tr "onboarding.questions.start-with.ui")
{:label (tr "questions.starting-wireframing") :value "wireframing" :image "images/form/templates.png"} :value "ui" :image "images/form/Design.png"}
{:label (tr "questions.starting-prototyping") :value "prototyping" :image "images/form/Prototype.png"} {:label (tr "onboarding.questions.start-with.wireframing")
{:label (tr "questions.starting-ds") :value "ds" :image "images/form/components.png"} :value "wireframing" :image "images/form/templates.png"}
{:label (tr "questions.starting-code") :value "code" :image "images/form/design-and-dev.png"}]) {:label (tr "onboarding.questions.start-with.prototyping")
(conj {:label (tr "questions.other-short") :value "other" :icon i/curve}))) :value "prototyping" :image "images/form/Prototype.png"}
{:label (tr "onboarding.questions.start-with.ds")
:value "ds" :image "images/form/components.png"}
{:label (tr "onboarding.questions.start-with.code")
:value "code" :image "images/form/design-and-dev.png"}])
(conj {:label (tr "labels.other-short") :value "other" :icon i/curve})))
current-start (dm/get-in @form [:data :start-with]) current-start (dm/get-in @form [:data :start-with])
@ -369,7 +374,7 @@
:on-prev on-prev :on-prev on-prev
:class (stl/css :step-4)} :class (stl/css :step-4)}
[:h1 {:class (stl/css :modal-title)} (tr "questions.step4-title")] [:h1 {:class (stl/css :modal-title)} (tr "onboarding.questions.step4.title")]
[:div {:class (stl/css :radio-wrapper)} [:div {:class (stl/css :radio-wrapper)}
[:& fm/image-radio-buttons {:options start-options [:& fm/image-radio-buttons {:options start-options
:img-width "159px" :img-width "159px"
@ -382,7 +387,7 @@
[:& fm/input {:name :start-with-other [:& fm/input {:name :start-with-other
:class (stl/css :input-spacing) :class (stl/css :input-spacing)
:label "" :label ""
:placeholder (tr "questions.other")}])]])) :placeholder (tr "labels.other")}])]]))
(s/def ::questions-form-step-5 (s/def ::questions-form-step-5
(s/keys :req-un [::referer] (s/keys :req-un [::referer]
@ -405,12 +410,12 @@
[{:keys [on-next on-prev form]}] [{:keys [on-next on-prev form]}]
(let [referer-options (let [referer-options
(mf/with-memo [] (mf/with-memo []
(-> (shuffle [{:label (tr "questions.referer.youtube") :value "youtube"} (-> (shuffle [{:label (tr "labels.youtube") :value "youtube"}
{:label (tr "questions.referer.event") :value "event"} {:label (tr "labels.event") :value "event"}
{:label (tr "questions.referer.search") :value "search"} {:label (tr "labels.search") :value "search"}
{:label (tr "questions.referer.social") :value "social"} {:label (tr "labels.social") :value "social"}
{:label (tr "questions.referer.article") :value "article"}]) {:label (tr "labels.article") :value "article"}])
(conj {:label (tr "questions.other-short") :value "other"}))) (conj {:label (tr "labels.other-short") :value "other"})))
current-referer current-referer
(dm/get-in @form [:data :referer]) (dm/get-in @form [:data :referer])
@ -430,7 +435,7 @@
:on-prev on-prev :on-prev on-prev
:class (stl/css :step-5)} :class (stl/css :step-5)}
[:h1 {:class (stl/css :modal-title)} (tr "questions.step5-title")] [:h1 {:class (stl/css :modal-title)} (tr "onboarding.questions.step5.title")]
[:div {:class (stl/css :radio-wrapper)} [:div {:class (stl/css :radio-wrapper)}
[:& fm/radio-buttons {:options referer-options [:& fm/radio-buttons {:options referer-options
:class (stl/css :radio-btns) :class (stl/css :radio-btns)
@ -440,7 +445,7 @@
[:& fm/input {:name :referer-other [:& fm/input {:name :referer-other
:class (stl/css :input-spacing) :class (stl/css :input-spacing)
:label "" :label ""
:placeholder (tr "questions.other")}])]])) :placeholder (tr "labels.other")}])]]))
(mf/defc questions-modal (mf/defc questions-modal
[] []

View file

@ -50,12 +50,12 @@
[{:keys [layout on-change-palette-size]}] [{:keys [layout on-change-palette-size]}]
(let [color-palette? (:colorpalette layout) (let [color-palette? (:colorpalette layout)
text-palette? (:textpalette layout) text-palette? (:textpalette layout)
hide-palettes? (:hide-palettes layout)
workspace-read-only? (mf/use-ctx ctx/workspace-read-only?) workspace-read-only? (mf/use-ctx ctx/workspace-read-only?)
container (mf/use-ref nil) container (mf/use-ref nil)
state* (mf/use-state {:show-menu false :hide-palettes false}) state* (mf/use-state {:show-menu false})
state (deref state*) state (deref state*)
show-menu? (:show-menu state) show-menu? (:show-menu state)
hide-palettes? (:hide-palettes state)
selected (h/use-shared-state mdc/colorpalette-selected-broadcast-key :recent) selected (h/use-shared-state mdc/colorpalette-selected-broadcast-key :recent)
selected-text* (mf/use-state :file) selected-text* (mf/use-state :file)
selected-text (deref selected-text*) selected-text (deref selected-text*)
@ -100,15 +100,19 @@
toggle-palettes toggle-palettes
(mf/use-callback (mf/use-callback
(fn [_] (fn [_]
(swap! state* update :hide-palettes not))) (r/set-resize-type! :top)
(dom/add-class! (dom/get-element-by-class "color-palette") "fade-out-down")
(st/emit! (-> (dw/toggle-layout-flag :hide-palettes)
(vary-meta assoc ::ev/origin "workspace-left-toolbar")))))
on-select-color-palette on-select-color-palette
(mf/use-fn (mf/use-fn
(fn [event] (fn [event]
(let [node (dom/get-current-target event)] (let [node (dom/get-current-target event)]
(r/set-resize-type! :top) (r/set-resize-type! :top)
(dom/add-class! (dom/get-element-by-class "color-palette") "fade-out-down") (dom/add-class! (dom/get-element-by-class "color-palette") "fade-out-down")
(ts/schedule 300 #(st/emit! (dw/remove-layout-flag :textpalette) (ts/schedule 300 #(st/emit! (dw/remove-layout-flag :hide-palettes)
(dw/remove-layout-flag :textpalette)
(-> (dw/toggle-layout-flag :colorpalette) (-> (dw/toggle-layout-flag :colorpalette)
(vary-meta assoc ::ev/origin "workspace-left-toolbar")))) (vary-meta assoc ::ev/origin "workspace-left-toolbar"))))
(dom/blur! node)))) (dom/blur! node))))
@ -118,8 +122,9 @@
(fn [event] (fn [event]
(let [node (dom/get-current-target event)] (let [node (dom/get-current-target event)]
(r/set-resize-type! :top) (r/set-resize-type! :top)
(dom/add-class! (dom/get-element-by-class "color-palette") "fade-out-down") (dom/add-class! (dom/get-element-by-class "color-palette") "fade-out-down")
(ts/schedule 300 #(st/emit! (dw/remove-layout-flag :colorpalette) (ts/schedule 300 #(st/emit! (dw/remove-layout-flag :hide-palettes)
(dw/remove-layout-flag :colorpalette)
(-> (dw/toggle-layout-flag :textpalette) (-> (dw/toggle-layout-flag :textpalette)
(vary-meta assoc ::ev/origin "workspace-left-toolbar")))) (vary-meta assoc ::ev/origin "workspace-left-toolbar"))))
(dom/blur! node)))) (dom/blur! node))))
@ -198,5 +203,6 @@
:selected @selected :selected @selected
:width vport-width}]])]] :width vport-width}]])]]
[:div {:class (stl/css :handler) [:div {:class (stl/css :handler)
:on-click toggle-palettes} :on-click toggle-palettes
:data-testid "toggle-palettes-visibility"}
[:div {:class (stl/css :handler-btn)}]])])])) [:div {:class (stl/css :handler-btn)}]])])]))

View file

@ -43,9 +43,9 @@
i/status-alert] i/status-alert]
:saving :saving
[:div {:class (stl/css :status-icon :saving-status) [:div {:class (stl/css :status-icon :pending-status)
:title (tr "workspace.header.saving")} :title (tr "workspace.header.unsaved")}
i/status-update] i/status-alert]
:saved :saved
[:div {:class (stl/css :status-icon :saved-status) [:div {:class (stl/css :status-icon :saved-status)

View file

@ -2393,235 +2393,231 @@ msgid "profile.recovery.go-to-login"
msgstr "Go to login" msgstr "Go to login"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step1-title" msgid "onboarding.questions.step1.title"
msgstr "Help us get to know you" msgstr "Help us get to know you"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step1-subtitle" msgid "onboarding.questions.step1.subtitle"
msgstr "Let us know a bit about you to help us make Penpot work for you. Your answers will help us prioritize new features and point you in the right direction to get started." msgstr "Let us know a bit about you to help us make Penpot work for you. Your answers will help us prioritize new features and point you in the right direction to get started."
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step1-question1" msgid "onboarding.questions.step1.question1"
msgstr "What will you be using Penpot for?" msgstr "What will you be using Penpot for?"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.use-work" msgid "onboarding.questions.use.work"
msgstr "Work" msgstr "Work"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.use-education" msgid "onboarding.questions.use.education"
msgstr "Education" msgstr "Education"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.use-personal" msgid "onboarding.questions.use.personal"
msgstr "Personal" msgstr "Personal"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step1-question2" msgid "onboarding.questions.step1.question2"
msgstr "What brings you to Penpot today?" msgstr "What brings you to Penpot today?"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.reasons.exploring" msgid "onboarding.questions.reasons.exploring"
msgstr "Just exploring" msgstr "Just exploring"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.reasons.fit" msgid "onboarding.questions.reasons.fit"
msgstr "Reviewing whether Penpot is a good fit for my team" msgstr "Reviewing whether Penpot is a good fit for my team"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.reasons.alternative" msgid "onboarding.questions.reasons.alternative"
msgstr "Looking for an alternative to Figma, XD, etc" msgstr "Looking for an alternative to Figma, XD, etc"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.reasons.testing" msgid "onboarding.questions.reasons.testing"
msgstr "Testing before self-hosting" msgstr "Testing before self-hosting"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "question.design-tool-more-used" msgid "onboarding.questions.step2.title"
msgstr "Which one of these tools do you use the most?" msgstr "Which one of these tools do you use the most?"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.adobe-xd" msgid "labels.adobe-xd"
msgstr "Adobe XD" msgstr "Adobe XD"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.canva" msgid "labels.canva"
msgstr "Canva" msgstr "Canva"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.figma" msgid "labels.figma"
msgstr "Figma" msgstr "Figma"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.invision" msgid "labels.invision"
msgstr "InVision" msgstr "InVision"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.sketch" msgid "labels.sketch"
msgstr "Sketch" msgstr "Sketch"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step3-title" msgid "onboarding.questions.step3.title"
msgstr "Tell us about your job" msgstr "Tell us about your job"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step3.question1" msgid "onboarding.questions.step3.question1"
msgstr "What kind of work do you do?" msgstr "What kind of work do you do?"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.work-type.ux" msgid "labels.product-design"
msgstr "Product or UX design" msgstr "Product or UX design"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.work-type.dev" msgid "labels.developer"
msgstr "Development" msgstr "Development"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.work-type.student" msgid "labels.graphic-design"
msgstr "student"
#: src/app/main/ui/onboarding/questions.cljs
msgid "questions.work-type.graphic"
msgstr "Graphic design" msgstr "Graphic design"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.work-type.marketing" msgid "labels.marketing"
msgstr "Marketing" msgstr "Marketing"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.work-type.product" msgid "labels.product-management"
msgstr "Product Managment" msgstr "Product Managment"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step3.question2" msgid "onboarding.questions.step3.question2"
msgstr "What's your role?" msgstr "What's your role?"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.role.team-leader" msgid "labels.team-leader"
msgstr "Team Leader" msgstr "Team Leader"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.role.team-member" msgid "labels.team-member"
msgstr "Team member" msgstr "Team member"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.role.freelancer" msgid "labels.freelancer"
msgstr "Freelancer" msgstr "Freelancer"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.role.founder" msgid "labels.founder"
msgstr "CEO or Founder" msgstr "CEO or Founder"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.role.director" msgid "labels.director"
msgstr "Director" msgstr "Director"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.company-size" msgid "onboarding.questions.step3.question3"
msgstr "What's the size of your company?" msgstr "What's the size of your company?"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.more-than-50" msgid "onboarding.questions.team-size.more-than-50"
msgstr "More than 50" msgstr "More than 50"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.31-50" msgid "onboarding.questions.team-size.31-50"
msgstr "31-50" msgstr "31-50"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.11-30" msgid "onboarding.questions.team-size.11-30"
msgstr "11-30" msgstr "11-30"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.2-10" msgid "onboarding.questions.team-size.2-10"
msgstr "2-10" msgstr "2-10"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.freelancer" msgid "onboarding.questions.team-size.freelancer"
msgstr "I'm a freelancer" msgstr "I'm a freelancer"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.personal-project" msgid "onboarding.questions.team-size.personal-project"
msgstr "Im working in a personal project" msgstr "Im working in a personal project"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step4-title" msgid "onboarding.questions.step4.title"
msgstr "Where would you like to get started?" msgstr "Where would you like to get started?"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.starting-ui" msgid "onboarding.questions.start-with.ui"
msgstr "Design the UI/UX of an app" msgstr "Design the UI/UX of an app"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.starting-wireframing" msgid "onboarding.questions.start-with.wireframing"
msgstr "Wireframing" msgstr "Wireframing"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.starting-prototyping" msgid "onboarding.questions.start-with.prototyping"
msgstr "Prototyping" msgstr "Prototyping"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.starting-ds" msgid "onboarding.questions.start-with.ds"
msgstr "Creating Desing Systems" msgstr "Creating Desing Systems"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.starting-code" msgid "onboarding.questions.start-with.code"
msgstr "Generating real code designs" msgstr "Generating real code designs"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step5-title" msgid "onboarding.questions.step5.title"
msgstr "How did you hear about Penpot?" msgstr "How did you hear about Penpot?"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.referer.youtube" msgid "labels.youtube"
msgstr "YouTube" msgstr "YouTube"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.referer.event" msgid "labels.event"
msgstr "Event" msgstr "Event"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.referer.search" msgid "labels.search"
msgstr "Search Engine (Google, Yahoo, Bing)" msgstr "Search Engine (Google, Yahoo, Bing)"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.referer.social" msgid "labels.social"
msgstr "Social Media (X, Linkedin, FB, etc)" msgstr "Social Media (X, Linkedin, FB, etc)"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.referer.article" msgid "labels.article"
msgstr "Article (Blog, Post, Newsletter)" msgstr "Article (Blog, Post, Newsletter)"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.lets-get-started" msgid "onboarding.questions.lets-get-started"
msgstr "Let's get started!" msgstr "Let's get started!"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.next" msgid "labels.next"
msgstr "Next" msgstr "Next"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.other" msgid "labels.other"
msgstr "Other (specify)" msgstr "Other (specify)"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.other-short" msgid "labels.other-short"
msgstr "Other" msgstr "Other"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.previous" msgid "labels.previous"
msgstr "Previous" msgstr "Previous"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.select-option" msgid "labels.select-option"
msgstr "Select option" msgstr "Select option"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.start" msgid "labels.start"
msgstr "Start" msgstr "Start"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.student-teacher" msgid "labels.student-teacher"
msgstr "Student or teacher" msgstr "Student or teacher"
#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs, #: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs,

View file

@ -2503,236 +2503,232 @@ msgstr "Ir al login"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step1-title" msgid "onboarding.questions.step1.title"
msgstr "Ayúdanos a conocerte" msgstr "Ayúdanos a conocerte"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step1-subtitle" msgid "onboarding.questions.step1.subtitle"
msgstr "Cuéntanos un poco sobre tí para ayudarnos a que Penpot se adapte mejor a tí. Tus respuestas nos ayudarán a priorizar nuevas funcionalidades y a saber cómo podemos acompañarte mejor." msgstr "Cuéntanos un poco sobre tí para ayudarnos a que Penpot se adapte mejor a tí. Tus respuestas nos ayudarán a priorizar nuevas funcionalidades y a saber cómo podemos acompañarte mejor."
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step1-question1" msgid "onboarding.questions.step1.question1"
msgstr "¿Para qué utilizarás Penpot?" msgstr "¿Para qué utilizarás Penpot?"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.use-work" msgid "onboarding.questions.use.work"
msgstr "Trabajo" msgstr "Trabajo"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.use-education" msgid "onboarding.questions.use.education"
msgstr "Educación" msgstr "Educación"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.use-personal" msgid "onboarding.questions.use.personal"
msgstr "Personal" msgstr "Personal"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step1-question2" msgid "onboarding.questions.step1.question2"
msgstr "¿Qué te ha traído a Penpot?" msgstr "¿Qué te ha traído a Penpot?"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.reasons.exploring" msgid "onboarding.questions.reasons.exploring"
msgstr "Estoy echando un vistazo" msgstr "Estoy echando un vistazo"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.reasons.fit" msgid "onboarding.questions.reasons.fit"
msgstr "Averiguar si Penpot es una buena opción para mi equipo" msgstr "Averiguar si Penpot es una buena opción para mi equipo"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.reasons.alternative" msgid "onboarding.questions.reasons.alternative"
msgstr "Buscar una alternativa a Figma, XD, etc." msgstr "Buscar una alternativa a Figma, XD, etc."
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.reasons.testing" msgid "onboarding.questions.reasons.testing"
msgstr "Probar antes de self-hosting" msgstr "Probar antes de self-hosting"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "question.design-tool-more-used" msgid "onboarding.questions.step2.title"
msgstr "¿Cuál de estas herramientas utilizas más?" msgstr "¿Cuál de estas herramientas utilizas más?"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.adobe-xd" msgid "labels.adobe-xd"
msgstr "Adobe XD" msgstr "Adobe XD"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.canva" msgid "onboarding.questions.canva"
msgstr "Canva" msgstr "Canva"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.figma" msgid "labels.figma"
msgstr "Figma" msgstr "Figma"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.invision" msgid "labels.invision"
msgstr "InVision" msgstr "InVision"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.sketch" msgid "labels.sketch"
msgstr "Sketch" msgstr "Sketch"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step3-title" msgid "onboarding.questions.step3.title"
msgstr "Háblanos de tu trabajo" msgstr "Háblanos de tu trabajo"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step3.question1" msgid "onboarding.questions.step3.question1"
msgstr "¿Qué tipo de trabajo haces?" msgstr "¿Qué tipo de trabajo haces?"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.work-type.ux" msgid "labels.product-design"
msgstr "Diseño de Producto o UX" msgstr "Diseño de Producto o UX"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.work-type.dev" msgid "labels.developer"
msgstr "Desarrollo" msgstr "Desarrollo"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.work-type.student" msgid "labels.graphic-design"
msgstr "Estudiante"
#: src/app/main/ui/onboarding/questions.cljs
msgid "questions.work-type.graphic"
msgstr "Diseño gráfico" msgstr "Diseño gráfico"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.work-type.marketing" msgid "labels.marketing"
msgstr "Marketing" msgstr "Marketing"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.work-type.product" msgid "labels.product-management"
msgstr "Product Managment" msgstr "Product Managment"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step3.question2" msgid "onboarding.questions.step3.question2"
msgstr "¿Cuál es tu puesto?" msgstr "¿Cuál es tu puesto?"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.role.team-leader" msgid "labels.team-leader"
msgstr "Líder de equipo" msgstr "Líder de equipo"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.role.team-member" msgid "labels.team-member"
msgstr "Miembro de equipo" msgstr "Miembro de equipo"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.role.freelancer" msgid "labels.freelancer"
msgstr "Autónomo" msgstr "Autónomo"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.role.founder" msgid "labels.founder"
msgstr "CEO o Fundador" msgstr "CEO o Fundador"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.role.director" msgid "labels.director"
msgstr "Director" msgstr "Director"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.company-size" msgid "onboarding.questions.step3.question3"
msgstr "¿Cuál es el tamaño de tu empresa?" msgstr "¿Cuál es el tamaño de tu empresa?"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.more-than-50" msgid "onboarding.questions.team-size.more-than-50"
msgstr "Más de 50" msgstr "Más de 50"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.31-50" msgid "onboarding.questions.team-size.31-50"
msgstr "31-50" msgstr "31-50"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.11-30" msgid "onboarding.questions.team-size.11-30"
msgstr "11-30" msgstr "11-30"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.2-10" msgid "onboarding.questions.2-10"
msgstr "2-10" msgstr "2-10"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.freelancer" msgid "onboarding.questions.freelancer"
msgstr "Soy autónomo" msgstr "Soy autónomo"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.personal-project" msgid "onboarding.questions.team-size.personal-project"
msgstr "Estoy trabajando en un proyecto personal" msgstr "Estoy trabajando en un proyecto personal"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step4-title" msgid "onboarding.questions.step4.title"
msgstr "¿Por dónde te apetecería empezar?" msgstr "¿Por dónde te apetecería empezar?"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.starting-ui" msgid "onboarding.questions.start-with.ui"
msgstr "Diseñando el UX/UI de una aplicación" msgstr "Diseñando el UX/UI de una aplicación"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.starting-wireframing" msgid "onboarding.questions.start-with.wireframing"
msgstr "Wireframing" msgstr "Wireframing"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.starting-prototyping" msgid "onboarding.questions.start-with.prototyping"
msgstr "Prototipado" msgstr "Prototipado"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.starting-ds" msgid "onboarding.questions.start-with.ds"
msgstr "Creando sistemas de diseño" msgstr "Creando sistemas de diseño"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.starting-code" msgid "onboarding.questions.start-with.code"
msgstr "Generando código a partir de diseños" msgstr "Generando código a partir de diseños"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.step5-title" msgid "onboarding.questions.step5.title"
msgstr "¿Cómo nos has descubierto?" msgstr "¿Cómo nos has descubierto?"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.referer.youtube" msgid "onboarding.questions.referer.youtube"
msgstr "YouTube" msgstr "YouTube"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.referer.event" msgid "onboarding.questions.referer.event"
msgstr "Evento" msgstr "Evento"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.referer.search" msgid "onboarding.questions.referer.search"
msgstr "Buscador (Google, Yahoo, Bing)" msgstr "Buscador (Google, Yahoo, Bing)"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.referer.social" msgid "onboarding.questions.referer.social"
msgstr "Redes sociales (X, LinkedIn, FB, ect)" msgstr "Redes sociales (X, LinkedIn, FB, ect)"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.referer.article" msgid "onboarding.questions.referer.article"
msgstr "Artículo (Blog, Post, Newsletter)" msgstr "Artículo (Blog, Post, Newsletter)"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.lets-get-started" msgid "onboarding.questions.lets-get-started"
msgstr "¡Empecemos!" msgstr "¡Empecemos!"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.next" msgid "labels.next"
msgstr "Siguiente" msgstr "Siguiente"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.other" msgid "onboarding.questions.other"
msgstr "Otra (especifica)" msgstr "Otra (especifica)"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.other-short" msgid "labels.other"
msgstr "Otra" msgstr "Otra"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.previous" msgid "labels.previous"
msgstr "Anterior" msgstr "Anterior"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.select-option" msgid "labels.select-option"
msgstr "Selecciona una opción" msgstr "Selecciona una opción"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.start" msgid "labels.start"
msgstr "Comenzar" msgstr "Comenzar"
#: src/app/main/ui/onboarding/questions.cljs #: src/app/main/ui/onboarding/questions.cljs
msgid "questions.student-teacher" msgid "labels.student-teacher"
msgstr "Estudiante o profesorado" msgstr "Estudiante o profesorado"
#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs, #: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs,

View file

@ -1,77 +0,0 @@
import { defineConfig, devices } from '@playwright/test';
/**
* Read environment variables from file.
* https://github.com/motdotla/dotenv
*/
// require('dotenv').config();
/**
* See https://playwright.dev/docs/test-configuration.
*/
export default defineConfig({
testDir: './tests',
/* Run tests in files in parallel */
fullyParallel: true,
/* Fail the build on CI if you accidentally left test.only in the source code. */
forbidOnly: !!process.env.CI,
/* Retry on CI only */
retries: process.env.CI ? 2 : 0,
/* Opt out of parallel tests on CI. */
workers: process.env.CI ? 1 : undefined,
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
reporter: 'html',
/* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */
use: {
/* Base URL to use in actions like `await page.goto('/')`. */
// baseURL: 'http://127.0.0.1:3000',
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
trace: 'on-first-retry',
},
/* Configure projects for major browsers */
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chrome'] },
},
{
name: 'firefox',
use: { ...devices['Desktop Firefox'] },
},
{
name: 'webkit',
use: { ...devices['Desktop Safari'] },
},
/* Test against mobile viewports. */
// {
// name: 'Mobile Chrome',
// use: { ...devices['Pixel 5'] },
// },
// {
// name: 'Mobile Safari',
// use: { ...devices['iPhone 12'] },
// },
/* Test against branded browsers. */
// {
// name: 'Microsoft Edge',
// use: { ...devices['Desktop Edge'], channel: 'msedge' },
// },
// {
// name: 'Google Chrome',
// use: { ...devices['Desktop Chrome'], channel: 'chrome' },
// },
],
/* Run your local dev server before starting the tests */
// webServer: {
// command: 'npm run start',
// url: 'http://127.0.0.1:3000',
// reuseExistingServer: !process.env.CI,
// },
});