mirror of
https://github.com/penpot/penpot.git
synced 2025-02-15 03:28:25 -05:00
✨ Assert existing icon ID for button* and icon-button*
This commit is contained in:
parent
10ef9d696c
commit
cfc01e03f6
5 changed files with 12 additions and 19 deletions
|
@ -9,7 +9,7 @@
|
||||||
[app.common.data.macros :as dm]
|
[app.common.data.macros :as dm]
|
||||||
[app.main.style :as stl])
|
[app.main.style :as stl])
|
||||||
(:require
|
(:require
|
||||||
[app.main.ui.ds.foundations.assets.icon :refer [icon*]]
|
[app.main.ui.ds.foundations.assets.icon :refer [icon* icon-list]]
|
||||||
[rumext.v2 :as mf]))
|
[rumext.v2 :as mf]))
|
||||||
|
|
||||||
(def button-variants (set '("primary" "secondary" "ghost" "destructive")))
|
(def button-variants (set '("primary" "secondary" "ghost" "destructive")))
|
||||||
|
@ -18,6 +18,7 @@
|
||||||
{::mf/props :obj}
|
{::mf/props :obj}
|
||||||
[{:keys [variant icon children class] :rest props}]
|
[{:keys [variant icon children class] :rest props}]
|
||||||
(assert (or (nil? variant) (contains? button-variants variant) "expected valid variant"))
|
(assert (or (nil? variant) (contains? button-variants variant) "expected valid variant"))
|
||||||
|
(assert (or (nil? icon) (contains? icon-list icon) "expected valid icon id"))
|
||||||
(let [variant (or variant "primary")
|
(let [variant (or variant "primary")
|
||||||
class (dm/str class " " (stl/css-case :button true
|
class (dm/str class " " (stl/css-case :button true
|
||||||
:button-primary (= variant "primary")
|
:button-primary (= variant "primary")
|
||||||
|
|
|
@ -10,18 +10,12 @@ import Components from "@target/components";
|
||||||
const { Button } = Components;
|
const { Button } = Components;
|
||||||
const { icons } = Components.meta;
|
const { icons } = Components.meta;
|
||||||
|
|
||||||
const iconList = [
|
|
||||||
...Object.entries(icons)
|
|
||||||
.map(([_, value]) => value)
|
|
||||||
.sort(),
|
|
||||||
];
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
title: "Buttons/Button",
|
title: "Buttons/Button",
|
||||||
component: Components.Button,
|
component: Components.Button,
|
||||||
argTypes: {
|
argTypes: {
|
||||||
icon: {
|
icon: {
|
||||||
options: iconList,
|
options: icons,
|
||||||
control: { type: "select" },
|
control: { type: "select" },
|
||||||
},
|
},
|
||||||
disabled: { control: "boolean" },
|
disabled: { control: "boolean" },
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
[app.common.data.macros :as dm]
|
[app.common.data.macros :as dm]
|
||||||
[app.main.style :as stl])
|
[app.main.style :as stl])
|
||||||
(:require
|
(:require
|
||||||
[app.main.ui.ds.foundations.assets.icon :refer [icon*]]
|
[app.main.ui.ds.foundations.assets.icon :refer [icon* icon-list]]
|
||||||
[rumext.v2 :as mf]))
|
[rumext.v2 :as mf]))
|
||||||
|
|
||||||
(def button-variants (set '("primary" "secondary" "ghost" "destructive")))
|
(def button-variants (set '("primary" "secondary" "ghost" "destructive")))
|
||||||
|
@ -17,9 +17,9 @@
|
||||||
(mf/defc icon-button*
|
(mf/defc icon-button*
|
||||||
{::mf/props :obj}
|
{::mf/props :obj}
|
||||||
[{:keys [class icon variant aria-label] :rest props}]
|
[{:keys [class icon variant aria-label] :rest props}]
|
||||||
(assert (or (not variant) (contains? button-variants variant)) "invalid variant")
|
(assert (contains? icon-list icon) "expected valid icon id")
|
||||||
|
(assert (or (not variant) (contains? button-variants variant)) "expected valid variant")
|
||||||
(assert (some? aria-label) "aria-label must be provided")
|
(assert (some? aria-label) "aria-label must be provided")
|
||||||
(assert (some? icon) "an icon id must be provided")
|
|
||||||
(let [variant (or variant "primary")
|
(let [variant (or variant "primary")
|
||||||
class (dm/str class " " (stl/css-case :icon-button true
|
class (dm/str class " " (stl/css-case :icon-button true
|
||||||
:icon-button-primary (= variant "primary")
|
:icon-button-primary (= variant "primary")
|
||||||
|
|
|
@ -7,12 +7,11 @@
|
||||||
(ns app.main.ui.ds.foundations.assets.icon
|
(ns app.main.ui.ds.foundations.assets.icon
|
||||||
(:require
|
(:require
|
||||||
[clojure.core :as c]
|
[clojure.core :as c]
|
||||||
[cuerdas.core :as str]
|
|
||||||
[rumext.v2]))
|
[rumext.v2]))
|
||||||
|
|
||||||
(defmacro collect-icons []
|
(defmacro collect-icons []
|
||||||
(let [ns-info (:ns &env)]
|
(let [ns-info (:ns &env)]
|
||||||
`(set '~(->> (:defs ns-info)
|
`(set '~(->> (:defs ns-info)
|
||||||
(map val)
|
(map val)
|
||||||
(filter (fn [entry] (-> entry :meta :icon-id)))
|
(filter (fn [entry] (-> entry :meta :icon-id)))
|
||||||
(map (fn [{:keys [name]}] (c/name name)))))))
|
(map (fn [{:keys [name]}] (c/name name)))))))
|
|
@ -7,12 +7,11 @@
|
||||||
(ns app.main.ui.ds.foundations.assets.raw-svg
|
(ns app.main.ui.ds.foundations.assets.raw-svg
|
||||||
(:require
|
(:require
|
||||||
[clojure.core :as c]
|
[clojure.core :as c]
|
||||||
[cuerdas.core :as str]
|
|
||||||
[rumext.v2]))
|
[rumext.v2]))
|
||||||
|
|
||||||
(defmacro collect-raw-svgs []
|
(defmacro collect-raw-svgs []
|
||||||
(let [ns-info (:ns &env)]
|
(let [ns-info (:ns &env)]
|
||||||
`(set '~(->> (:defs ns-info)
|
`(set '~(->> (:defs ns-info)
|
||||||
(map val)
|
(map val)
|
||||||
(filter (fn [entry] (-> entry :meta :svg-id)))
|
(filter (fn [entry] (-> entry :meta :svg-id)))
|
||||||
(map (fn [{:keys [name]}] (c/name name)))))))
|
(map (fn [{:keys [name]}] (c/name name)))))))
|
Loading…
Add table
Reference in a new issue