feat: add tags - network tags component to quo2
Co-authored-by: andresceballosm <ceballosmarandres@gmail.com>
This commit is contained in:
parent
a218499f2a
commit
2e63ee8baf
|
@ -3,7 +3,7 @@
|
||||||
[quo2.components.markdown.text :as text]
|
[quo2.components.markdown.text :as text]
|
||||||
[quo2.components.common.notification-dot.view :as notification-dot]
|
[quo2.components.common.notification-dot.view :as notification-dot]
|
||||||
[quo2.components.tabs.tab.style :as style]
|
[quo2.components.tabs.tab.style :as style]
|
||||||
[quo2.theme :as theme]
|
[quo2.theme :as quo.theme]
|
||||||
[react-native.core :as rn]
|
[react-native.core :as rn]
|
||||||
[react-native.svg :as svg]))
|
[react-native.svg :as svg]))
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@
|
||||||
(vector? children)
|
(vector? children)
|
||||||
children)])
|
children)])
|
||||||
|
|
||||||
(defn- themed-view
|
(defn- view-internal
|
||||||
[{:keys [accessibility-label
|
[{:keys [accessibility-label
|
||||||
active
|
active
|
||||||
before
|
before
|
||||||
|
@ -104,4 +104,4 @@
|
||||||
:disabled disabled
|
:disabled disabled
|
||||||
:background-color background-color}])]]))
|
:background-color background-color}])]]))
|
||||||
|
|
||||||
(def view (theme/with-theme themed-view))
|
(def view (quo.theme/with-theme view-internal))
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
(ns quo2.components.tags.network-tags.component-spec
|
||||||
|
(:require [quo2.components.tags.network-tags.view :as network-tags]
|
||||||
|
[test-helpers.component :as h]))
|
||||||
|
|
||||||
|
(h/describe "network-tags component"
|
||||||
|
(h/test "renders network tags with single network"
|
||||||
|
(h/render [network-tags/view
|
||||||
|
{:title "Network Tags"
|
||||||
|
:networks [{:source "network-icon.png"}]}])
|
||||||
|
(h/is-truthy (h/get-by-text "Network Tags")))
|
||||||
|
|
||||||
|
(h/test "renders network tags with multiple networks"
|
||||||
|
(h/render [network-tags/view
|
||||||
|
{:title "Multiple Networks"
|
||||||
|
:networks [{:source "network-icon1.png"}
|
||||||
|
{:source "network-icon2.png"}
|
||||||
|
{:source "network-icon3.png"}]
|
||||||
|
:size :size/s-32}])
|
||||||
|
(h/is-truthy (h/get-by-text "Multiple Networks"))))
|
|
@ -0,0 +1,41 @@
|
||||||
|
(ns quo2.components.tags.network-tags.style
|
||||||
|
(:require [quo2.foundations.colors :as colors]))
|
||||||
|
|
||||||
|
(defn container
|
||||||
|
[{:keys [status theme blur?]}]
|
||||||
|
{:flex-direction :row
|
||||||
|
:align-self :flex-start
|
||||||
|
:background-color (when (= status :error)
|
||||||
|
(colors/theme-colors
|
||||||
|
(colors/custom-color :danger 50 10)
|
||||||
|
(colors/custom-color :danger 60 10)
|
||||||
|
theme))
|
||||||
|
:border-width 1
|
||||||
|
:border-color (cond (= status :error)
|
||||||
|
(colors/theme-colors
|
||||||
|
(colors/custom-color :danger 50 20)
|
||||||
|
(colors/custom-color :danger 60 20)
|
||||||
|
theme)
|
||||||
|
(and blur? (= status :default)) (colors/theme-colors
|
||||||
|
colors/neutral-80-opa-5
|
||||||
|
colors/white-opa-5
|
||||||
|
theme)
|
||||||
|
:else (colors/theme-colors
|
||||||
|
colors/neutral-20
|
||||||
|
colors/neutral-80
|
||||||
|
theme))
|
||||||
|
:border-radius 8
|
||||||
|
:padding-left 5
|
||||||
|
:padding-right 5
|
||||||
|
:padding-top 3
|
||||||
|
:padding-bottom 2})
|
||||||
|
|
||||||
|
(defn title-style
|
||||||
|
[{:keys [status theme]}]
|
||||||
|
{:padding-left 4
|
||||||
|
:margin-top -1
|
||||||
|
:color (when (= status :error)
|
||||||
|
(colors/theme-colors
|
||||||
|
(colors/custom-color :danger 50)
|
||||||
|
(colors/custom-color :danger 60)
|
||||||
|
theme))})
|
|
@ -0,0 +1,25 @@
|
||||||
|
(ns quo2.components.tags.network-tags.view
|
||||||
|
(:require [quo2.components.list-items.preview-list.view :as preview-list]
|
||||||
|
[quo2.components.tags.network-tags.style :as style]
|
||||||
|
[quo2.components.markdown.text :as text]
|
||||||
|
[react-native.core :as rn]
|
||||||
|
[quo2.theme :as quo.theme]))
|
||||||
|
|
||||||
|
(defn- view-internal
|
||||||
|
[{:keys [title networks status theme blur?] :or {status :default}}]
|
||||||
|
[rn/view
|
||||||
|
{:style (style/container {:status status
|
||||||
|
:theme theme
|
||||||
|
:blur? blur?})}
|
||||||
|
[preview-list/view
|
||||||
|
{:type :network
|
||||||
|
:number (count networks)
|
||||||
|
:size :size/s-16} networks]
|
||||||
|
[text/text
|
||||||
|
{:weight :medium
|
||||||
|
:size :paragraph-2
|
||||||
|
:style (style/title-style {:status status
|
||||||
|
:theme theme})}
|
||||||
|
title]])
|
||||||
|
|
||||||
|
(def view (quo.theme/with-theme view-internal))
|
|
@ -107,6 +107,7 @@
|
||||||
quo2.components.tabs.segmented-tab
|
quo2.components.tabs.segmented-tab
|
||||||
quo2.components.tabs.tabs.view
|
quo2.components.tabs.tabs.view
|
||||||
quo2.components.tags.context-tag.view
|
quo2.components.tags.context-tag.view
|
||||||
|
quo2.components.tags.network-tags.view
|
||||||
quo2.components.tags.number-tag.view
|
quo2.components.tags.number-tag.view
|
||||||
quo2.components.tags.permission-tag
|
quo2.components.tags.permission-tag
|
||||||
quo2.components.tags.status-tags
|
quo2.components.tags.status-tags
|
||||||
|
@ -311,13 +312,14 @@
|
||||||
(def account-selector quo2.components.tabs.account-selector/account-selector)
|
(def account-selector quo2.components.tabs.account-selector/account-selector)
|
||||||
|
|
||||||
;;;; Tags
|
;;;; Tags
|
||||||
(def tag quo2.components.tags.tag/tag)
|
(def context-tag quo2.components.tags.context-tag.view/view)
|
||||||
(def tags quo2.components.tags.tags/tags)
|
(def network-tags quo2.components.tags.network-tags.view/view)
|
||||||
|
(def number-tag quo2.components.tags.number-tag.view/view)
|
||||||
(def permission-tag quo2.components.tags.permission-tag/tag)
|
(def permission-tag quo2.components.tags.permission-tag/tag)
|
||||||
(def status-tag quo2.components.tags.status-tags/status-tag)
|
(def status-tag quo2.components.tags.status-tags/status-tag)
|
||||||
|
(def tag quo2.components.tags.tag/tag)
|
||||||
|
(def tags quo2.components.tags.tags/tags)
|
||||||
(def token-tag quo2.components.tags.token-tag/tag)
|
(def token-tag quo2.components.tags.token-tag/tag)
|
||||||
(def context-tag quo2.components.tags.context-tag.view/view)
|
|
||||||
(def number-tag quo2.components.tags.number-tag.view/view)
|
|
||||||
|
|
||||||
;;;; Text combinations
|
;;;; Text combinations
|
||||||
(def text-combinations quo2.components.text-combinations.view/view)
|
(def text-combinations quo2.components.text-combinations.view/view)
|
||||||
|
|
|
@ -58,6 +58,7 @@
|
||||||
[quo2.components.settings.category.component-spec]
|
[quo2.components.settings.category.component-spec]
|
||||||
[quo2.components.settings.data-item.component-spec]
|
[quo2.components.settings.data-item.component-spec]
|
||||||
[quo2.components.share.share-qr-code.component-spec]
|
[quo2.components.share.share-qr-code.component-spec]
|
||||||
|
[quo2.components.tags.network-tags.component-spec]
|
||||||
[quo2.components.tags.status-tags-component-spec]
|
[quo2.components.tags.status-tags-component-spec]
|
||||||
[quo2.components.wallet.account-card.component-spec]
|
[quo2.components.wallet.account-card.component-spec]
|
||||||
[quo2.components.wallet.account-overview.component-spec]
|
[quo2.components.wallet.account-overview.component-spec]
|
||||||
|
|
|
@ -104,6 +104,7 @@
|
||||||
[status-im2.contexts.quo-preview.tabs.tabs :as tabs]
|
[status-im2.contexts.quo-preview.tabs.tabs :as tabs]
|
||||||
[status-im2.contexts.quo-preview.empty-state.empty-state :as empty-state]
|
[status-im2.contexts.quo-preview.empty-state.empty-state :as empty-state]
|
||||||
[status-im2.contexts.quo-preview.tags.context-tags :as context-tags]
|
[status-im2.contexts.quo-preview.tags.context-tags :as context-tags]
|
||||||
|
[status-im2.contexts.quo-preview.tags.network-tags :as network-tags]
|
||||||
[status-im2.contexts.quo-preview.tags.number-tag :as number-tag]
|
[status-im2.contexts.quo-preview.tags.number-tag :as number-tag]
|
||||||
[status-im2.contexts.quo-preview.tags.permission-tag :as permission-tag]
|
[status-im2.contexts.quo-preview.tags.permission-tag :as permission-tag]
|
||||||
[status-im2.contexts.quo-preview.tags.status-tags :as status-tags]
|
[status-im2.contexts.quo-preview.tags.status-tags :as status-tags]
|
||||||
|
@ -338,14 +339,16 @@
|
||||||
:component account-selector/preview-this}]
|
:component account-selector/preview-this}]
|
||||||
:tags [{:name :context-tags
|
:tags [{:name :context-tags
|
||||||
:component context-tags/preview-context-tags}
|
:component context-tags/preview-context-tags}
|
||||||
|
{:name :network-tags
|
||||||
|
:component network-tags/preview}
|
||||||
{:name :number-tag
|
{:name :number-tag
|
||||||
:component number-tag/preview}
|
:component number-tag/preview}
|
||||||
{:name :tags
|
|
||||||
:component tags/preview-tags}
|
|
||||||
{:name :permission-tag
|
{:name :permission-tag
|
||||||
:component permission-tag/preview-permission-tag}
|
:component permission-tag/preview-permission-tag}
|
||||||
{:name :status-tags
|
{:name :status-tags
|
||||||
:component status-tags/preview-status-tags}
|
:component status-tags/preview-status-tags}
|
||||||
|
{:name :tags
|
||||||
|
:component tags/preview-tags}
|
||||||
{:name :token-tag
|
{:name :token-tag
|
||||||
:component token-tag/preview-token-tag}]
|
:component token-tag/preview-token-tag}]
|
||||||
:text-combinations [{:name :text-combinations
|
:text-combinations [{:name :text-combinations
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
(ns status-im2.contexts.quo-preview.tags.network-tags
|
||||||
|
(:require [quo2.core :as quo]
|
||||||
|
[quo2.foundations.resources :as resources]
|
||||||
|
[status-im2.contexts.quo-preview.preview :as preview]
|
||||||
|
[react-native.core :as rn]
|
||||||
|
[reagent.core :as reagent]))
|
||||||
|
|
||||||
|
(def community-networks
|
||||||
|
[[{:source (resources/get-network :ethereum)}]
|
||||||
|
[{:source (resources/get-network :arbitrum)}
|
||||||
|
{:source (resources/get-network :ethereum)}]
|
||||||
|
[{:source (resources/get-network :arbitrum)}
|
||||||
|
{:source (resources/get-network :optimism)}
|
||||||
|
{:source (resources/get-network :ethereum)}]])
|
||||||
|
|
||||||
|
(def descriptor
|
||||||
|
[{:type :select
|
||||||
|
:key :status
|
||||||
|
:options [{:key :error}
|
||||||
|
{:key :default}]}
|
||||||
|
{:type :text
|
||||||
|
:key :title}
|
||||||
|
{:type :select
|
||||||
|
:key :networks
|
||||||
|
:options [{:key 1}
|
||||||
|
{:key 2}
|
||||||
|
{:key 3}]}
|
||||||
|
{:type :boolean
|
||||||
|
:key :blur?}])
|
||||||
|
|
||||||
|
|
||||||
|
(defn preview
|
||||||
|
[]
|
||||||
|
(let [state (reagent/atom {:title "Tag"
|
||||||
|
:status :default
|
||||||
|
:networks 3})]
|
||||||
|
(fn []
|
||||||
|
[preview/preview-container
|
||||||
|
{:state state
|
||||||
|
:descriptor descriptor
|
||||||
|
:blur? (:blur? @state)
|
||||||
|
:show-blur-background? true}
|
||||||
|
[rn/view
|
||||||
|
{:style {:align-self :center
|
||||||
|
:justify-content :center
|
||||||
|
:flex 1}}
|
||||||
|
[quo/network-tags
|
||||||
|
{:networks (nth community-networks (dec (:networks @state)))
|
||||||
|
:status (:status @state)
|
||||||
|
:title (:title @state)
|
||||||
|
:blur? (:blur? @state)}]]])))
|
Loading…
Reference in New Issue