diff --git a/frontend/src/app/main/ui/ds/buttons/button.cljs b/frontend/src/app/main/ui/ds/buttons/button.cljs index 8086758bb..9dfb2c9b4 100644 --- a/frontend/src/app/main/ui/ds/buttons/button.cljs +++ b/frontend/src/app/main/ui/ds/buttons/button.cljs @@ -9,7 +9,7 @@ [app.common.data.macros :as dm] [app.main.style :as stl]) (: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])) (def button-variants (set '("primary" "secondary" "ghost" "destructive"))) @@ -18,6 +18,7 @@ {::mf/props :obj} [{:keys [variant icon children class] :rest props}] (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") class (dm/str class " " (stl/css-case :button true :button-primary (= variant "primary") diff --git a/frontend/src/app/main/ui/ds/buttons/button.stories.jsx b/frontend/src/app/main/ui/ds/buttons/button.stories.jsx index 8a2c78a15..d41e12c2d 100644 --- a/frontend/src/app/main/ui/ds/buttons/button.stories.jsx +++ b/frontend/src/app/main/ui/ds/buttons/button.stories.jsx @@ -10,18 +10,12 @@ import Components from "@target/components"; const { Button } = Components; const { icons } = Components.meta; -const iconList = [ - ...Object.entries(icons) - .map(([_, value]) => value) - .sort(), -]; - export default { title: "Buttons/Button", component: Components.Button, argTypes: { icon: { - options: iconList, + options: icons, control: { type: "select" }, }, disabled: { control: "boolean" }, diff --git a/frontend/src/app/main/ui/ds/buttons/icon_button.cljs b/frontend/src/app/main/ui/ds/buttons/icon_button.cljs index addfc6372..1a80f9b19 100644 --- a/frontend/src/app/main/ui/ds/buttons/icon_button.cljs +++ b/frontend/src/app/main/ui/ds/buttons/icon_button.cljs @@ -9,7 +9,7 @@ [app.common.data.macros :as dm] [app.main.style :as stl]) (: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])) (def button-variants (set '("primary" "secondary" "ghost" "destructive"))) @@ -17,9 +17,9 @@ (mf/defc icon-button* {::mf/props :obj} [{: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? icon) "an icon id must be provided") (let [variant (or variant "primary") class (dm/str class " " (stl/css-case :icon-button true :icon-button-primary (= variant "primary") diff --git a/frontend/src/app/main/ui/ds/foundations/assets/icon.clj b/frontend/src/app/main/ui/ds/foundations/assets/icon.clj index cccdf243b..54f8dec2a 100644 --- a/frontend/src/app/main/ui/ds/foundations/assets/icon.clj +++ b/frontend/src/app/main/ui/ds/foundations/assets/icon.clj @@ -7,12 +7,11 @@ (ns app.main.ui.ds.foundations.assets.icon (:require [clojure.core :as c] - [cuerdas.core :as str] [rumext.v2])) (defmacro collect-icons [] (let [ns-info (:ns &env)] `(set '~(->> (:defs ns-info) - (map val) - (filter (fn [entry] (-> entry :meta :icon-id))) - (map (fn [{:keys [name]}] (c/name name))))))) \ No newline at end of file + (map val) + (filter (fn [entry] (-> entry :meta :icon-id))) + (map (fn [{:keys [name]}] (c/name name))))))) \ No newline at end of file diff --git a/frontend/src/app/main/ui/ds/foundations/assets/raw_svg.clj b/frontend/src/app/main/ui/ds/foundations/assets/raw_svg.clj index e238d6d6b..51149285b 100644 --- a/frontend/src/app/main/ui/ds/foundations/assets/raw_svg.clj +++ b/frontend/src/app/main/ui/ds/foundations/assets/raw_svg.clj @@ -7,12 +7,11 @@ (ns app.main.ui.ds.foundations.assets.raw-svg (:require [clojure.core :as c] - [cuerdas.core :as str] [rumext.v2])) (defmacro collect-raw-svgs [] (let [ns-info (:ns &env)] `(set '~(->> (:defs ns-info) - (map val) - (filter (fn [entry] (-> entry :meta :svg-id))) - (map (fn [{:keys [name]}] (c/name name))))))) \ No newline at end of file + (map val) + (filter (fn [entry] (-> entry :meta :svg-id))) + (map (fn [{:keys [name]}] (c/name name))))))) \ No newline at end of file