mirror of
https://github.com/penpot/penpot.git
synced 2026-05-24 09:23:40 +00:00
145 lines
5.1 KiB
Clojure
145 lines
5.1 KiB
Clojure
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
;;
|
|
;; Copyright (c) KALEIDOS INC
|
|
|
|
(ns app.main.ui.static
|
|
(:require-macros [app.main.style :as stl])
|
|
(:require
|
|
[app.main.features :as features]
|
|
[app.main.store :as st]
|
|
[app.main.ui.context :as ctx]
|
|
[app.main.ui.icons :as i]
|
|
[app.util.globals :as globals]
|
|
[app.util.i18n :refer [tr]]
|
|
[app.util.object :as obj]
|
|
[app.util.router :as rt]
|
|
[rumext.v2 :as mf]))
|
|
|
|
(mf/defc static-header
|
|
{::mf/wrap-props false}
|
|
[props]
|
|
(let [new-css-system (mf/use-ctx ctx/new-css-system)
|
|
children (obj/get props "children")
|
|
on-click (mf/use-callback #(set! (.-href globals/location) "/"))]
|
|
(if new-css-system
|
|
[:section {:class (stl/css :exception-layout)}
|
|
[:button
|
|
{:class (stl/css :exception-header)
|
|
:on-click on-click}
|
|
i/logo-icon]
|
|
[:div {:class (stl/css :deco-before)} i/logo-error-screen]
|
|
|
|
[:div {:class (stl/css :exception-content)}
|
|
[:div {:class (stl/css :container)} children]]
|
|
|
|
[:div {:class (stl/css :deco-after)} i/logo-error-screen]]
|
|
[:section.exception-layout
|
|
[:div.exception-header
|
|
{:on-click on-click}
|
|
i/logo]
|
|
[:div.exception-content
|
|
[:div.container children]]])))
|
|
|
|
(mf/defc invalid-token
|
|
[]
|
|
(let [new-css-system (mf/use-ctx ctx/new-css-system)]
|
|
(if new-css-system
|
|
[:> static-header {}
|
|
[:div {:class (stl/css :main-message)} (tr "errors.invite-invalid")]
|
|
[:div {:class (stl/css :desc-message)} (tr "errors.invite-invalid.info")]]
|
|
|
|
[:> static-header {}
|
|
[:div.image i/unchain]
|
|
[:div.main-message (tr "errors.invite-invalid")]
|
|
[:div.desc-message (tr "errors.invite-invalid.info")]])))
|
|
|
|
(mf/defc not-found
|
|
[]
|
|
(let [new-css-system (mf/use-ctx ctx/new-css-system)]
|
|
(if new-css-system
|
|
[:> static-header {}
|
|
[:div {:class (stl/css :main-message)} (tr "labels.not-found.main-message")]
|
|
[:div {:class (stl/css :desc-message)} (tr "labels.not-found.desc-message")]]
|
|
|
|
[:> static-header {}
|
|
[:div.image i/icon-empty]
|
|
[:div.main-message (tr "labels.not-found.main-message")]
|
|
[:div.desc-message (tr "labels.not-found.desc-message")]])))
|
|
|
|
(mf/defc bad-gateway
|
|
[]
|
|
(let [new-css-system (mf/use-ctx ctx/new-css-system)
|
|
handle-retry
|
|
(mf/use-callback
|
|
(fn [] (st/emit! (rt/assign-exception nil))))]
|
|
(if new-css-system
|
|
[:> static-header {}
|
|
[:div {:class (stl/css :main-message)} (tr "labels.bad-gateway.main-message")]
|
|
[:div {:class (stl/css :desc-message)} (tr "labels.bad-gateway.desc-message")]
|
|
[:div {:class (stl/css :sign-info)}
|
|
[:button {:on-click handle-retry} (tr "labels.retry")]]]
|
|
|
|
[:> static-header {}
|
|
[:div.image i/icon-empty]
|
|
[:div.main-message (tr "labels.bad-gateway.main-message")]
|
|
[:div.desc-message (tr "labels.bad-gateway.desc-message")]
|
|
[:div.sign-info
|
|
[:a.btn-primary.btn-small {:on-click handle-retry} (tr "labels.retry")]]])))
|
|
|
|
(mf/defc service-unavailable
|
|
[]
|
|
(let [new-css-system (mf/use-ctx ctx/new-css-system)
|
|
handle-retry
|
|
(mf/use-callback
|
|
(fn [] (st/emit! (rt/assign-exception nil))))]
|
|
(if new-css-system
|
|
[:> static-header {}
|
|
[:div {:class (stl/css :main-message)} (tr "labels.service-unavailable.main-message")]
|
|
[:div {:class (stl/css :desc-message)} (tr "labels.service-unavailable.desc-message")]
|
|
[:div {:class (stl/css :sign-info)}
|
|
[:button {:on-click handle-retry} (tr "labels.retry")]]]
|
|
|
|
[:> static-header {}
|
|
[:div.main-message (tr "labels.service-unavailable.main-message")]
|
|
[:div.desc-message (tr "labels.service-unavailable.desc-message")]
|
|
[:div.sign-info
|
|
[:a.btn-primary.btn-small {:on-click handle-retry} (tr "labels.retry")]]])))
|
|
|
|
(mf/defc internal-error
|
|
[]
|
|
(let [new-css-system (mf/use-ctx ctx/new-css-system)
|
|
handle-retry
|
|
(mf/use-callback
|
|
(fn [] (st/emit! (rt/assign-exception nil))))]
|
|
(if new-css-system
|
|
[:> static-header {}
|
|
[:div {:class (stl/css :main-message)} (tr "labels.internal-error.main-message")]
|
|
[:div {:class (stl/css :desc-message)} (tr "labels.internal-error.desc-message")]
|
|
[:div {:class (stl/css :sign-info)}
|
|
[:button {:on-click handle-retry} (tr "labels.retry")]]]
|
|
|
|
[:> static-header {}
|
|
[:div.image i/icon-empty]
|
|
[:div.main-message (tr "labels.internal-error.main-message")]
|
|
[:div.desc-message (tr "labels.internal-error.desc-message")]
|
|
[:div.sign-info
|
|
[:a.btn-primary.btn-small {:on-click handle-retry} (tr "labels.retry")]]])))
|
|
|
|
(mf/defc exception-page
|
|
[{:keys [data] :as props}]
|
|
(let [new-css-system (features/use-feature "styles/v2")]
|
|
[:& (mf/provider ctx/new-css-system) {:value new-css-system}
|
|
(case (:type data)
|
|
:not-found
|
|
[:& not-found]
|
|
|
|
:bad-gateway
|
|
[:& bad-gateway]
|
|
|
|
:service-unavailable
|
|
[:& service-unavailable]
|
|
|
|
[:& internal-error])]))
|