Instantly share code, notes, and snippets.
Created
May 18, 2022 23:57
-
Star
0
(0)
You must be signed in to star a gist -
Fork
0
(0)
You must be signed in to fork a gist
-
-
Save geraldodev/5797a3fb28f6dc28549ab2e58a4cf8ba to your computer and use it in GitHub Desktop.
stitches button in cljs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (ns stitches.componentes.button | |
| (:require | |
| [applied-science.js-interop :as j] | |
| [stitches.config :refer [styled jsvec-to-obj]] | |
| )) | |
| (def Button | |
| (styled | |
| "button" | |
| (jsvec-to-obj | |
| (j/lit | |
| [;; Reset | |
| :all "unset" | |
| :alignItems "center" | |
| :boxSizing "border-box" | |
| :userSelect "none" | |
| "&::before" {:boxSizing "border-box"} | |
| "&::after" {:boxSizing "border-box"} | |
| ;; Custom reset? | |
| :display "inline-flex" | |
| :flexShrink 0 | |
| :justifyContent "center" | |
| :lineHeight "1" | |
| :WebkitTapHighlightColor "rgba(0,0,0,0)" | |
| ;; Custom | |
| :height "$5" | |
| :px "$2" | |
| :fontFamily "$untitled" | |
| :fontSize "$2" | |
| :fontWeight 500 | |
| :fontVariantNumeric "tabular-nums" | |
| "&:disabled" {:backgroundColor "$slate2" | |
| :boxShadow "inset 0 0 0 1px $colors$slate7" | |
| :color "$slate8" | |
| :pointerEvents "none"} | |
| :variants {:size {"1" {:borderRadius "$1" | |
| :height "$5" | |
| :px "$2" | |
| :fontSize "$1" | |
| :lineHeight "$sizes$5"} | |
| "2" {:borderRadius "$2" | |
| :height "$6" | |
| :px "$3" | |
| :fontSize "$3" | |
| :lineHeight "$sizes$6"} | |
| "3" {:borderRadius "$2" | |
| :height "$7" | |
| :px "$4" | |
| :fontSize "$4" | |
| :lineHeight "$sizes$7"}} | |
| :variant {:gray {:backgroundColor "$loContrast" | |
| :boxShadow "inset 0 0 0 1px $colors$slate7" | |
| :color "$hiContrast" | |
| "@hover" {"&:hover" {:boxShadow "inset 0 0 0 1px $colors$slate8"}} | |
| "&:active" {:backgroundColor "$slate2" | |
| :boxShadow "inset 0 0 0 1px $colors$slate8"} | |
| "&:focus" {:boxShadow "inset 0 0 0 1px $colors$slate8, 0 0 0 1px $colors$slate8"} | |
| "&[data-radix-popover-trigger][data-state=\\\"open\\\"], &[data-radix-dropdown-menu-trigger][data-state=\\\"open\\\"]" | |
| {:backgroundColor "$slate4" :boxShadow "inset 0 0 0 1px $colors$slate8"}} | |
| :blue {:backgroundColor "$blue2" | |
| :boxShadow "inset 0 0 0 1px $colors$blue7" | |
| :color "$blue11" | |
| "@hover" {"&:hover" {:boxShadow "inset 0 0 0 1px $colors$blue8"}} | |
| "&:active" {:backgroundColor "$blue3" | |
| :boxShadow "inset 0 0 0 1px $colors$blue8"} | |
| "&:focus" {:boxShadow "inset 0 0 0 1px $colors$blue8, 0 0 0 1px $colors$blue8"} | |
| "&[data-radix-popover-trigger][data-state=\\\"open\\\"], &[data-radix-dropdown-menu-trigger][data-state=\\\"open\\\"]" | |
| {:backgroundColor "$blue4" | |
| :boxShadow "inset 0 0 0 1px $colors$blue8"}} | |
| :green {:backgroundColor "$green2" | |
| :boxShadow "inset 0 0 0 1px $colors$green7" | |
| :color "$green11" | |
| "@hover" {"&:hover" {:boxShadow "inset 0 0 0 1px $colors$green8"}} | |
| "&:active" {:backgroundColor "$green3" | |
| :boxShadow "inset 0 0 0 1px $colors$green8"} | |
| "&:focus" {:boxShadow "inset 0 0 0 1px $colors$green8, 0 0 0 1px $colors$green8"} | |
| "&[data-radix-popover-trigger][data-state=\\\"open\\\"], &[data-radix-dropdown-menu-trigger][data-state=\\\"open\\\"]" | |
| {:backgroundColor "$green4" | |
| :boxShadow "inset 0 0 0 1px $colors$green8"}} | |
| :red {:backgroundColor "$loContrast" | |
| :boxShadow "inset 0 0 0 1px $colors$slate7" | |
| :color "$red11" | |
| "@hover" {"&:hover" {:boxShadow "inset 0 0 0 1px $colors$slate8"}} | |
| "&:active" {:backgroundColor "$red3" | |
| :boxShadow "inset 0 0 0 1px $colors$red8"} | |
| "&:focus" {:boxShadow "inset 0 0 0 1px $colors$red8, 0 0 0 1px $colors$red8"} | |
| "&[data-radix-popover-trigger][data-state=\\\"open\\\"], &[data-radix-dropdown-menu-trigger][data-state=\\\"open\\\"]" | |
| {:backgroundColor "$red4" | |
| :boxShadow "inset 0 0 0 1px $colors$red8"}} | |
| :transparentWhite {:backgroundColor "hsla(0,100%,100%,.2)" | |
| :color "white" | |
| "@hover" {"&:hover" {:backgroundColor "hsla(0,100%,100%,.25)"}} | |
| "&:active" {:backgroundColor "hsla(0,100%,100%,.3)"} | |
| "&:focus" {:boxShadow "inset 0 0 0 1px hsla(0,100%,100%,.35), 0 0 0 1px hsla(0,100%,100%,.35)"}} | |
| :transparentBlack {:backgroundColor "hsla(0,0%,0%,.2)" | |
| :color "black" | |
| "@hover" {"&:hover" {:backgroundColor "hsla(0,0%,0%,.25)"}} | |
| "&:active" {:backgroundColor "hsla(0,0%,0%,.3)"} | |
| "&:focus" {:boxShadow "inset 0 0 0 1px hsla(0,0%,0%,.35), 0 0 0 1px hsla(0,0%,0%,.35)"}}} | |
| :state {:active {:backgroundColor "$slate4" | |
| :boxShadow "inset 0 0 0 1px $colors$slate8" | |
| :color "$slate11" | |
| "@hover" {"&:hover" {:backgroundColor "$slate5" | |
| :boxShadow "inset 0 0 0 1px $colors$slate8"}} | |
| "&:active" {:backgroundColor "$slate5"} | |
| "&:focus" {:boxShadow "inset 0 0 0 1px $colors$slate8, 0 0 0 1px $colors$slate8"}} | |
| :waiting {:backgroundColor "$slate4" | |
| :boxShadow "inset 0 0 0 1px $colors$slate8" | |
| :color "transparent" | |
| :pointerEvents "none" | |
| "@hover" {"&:hover" {:backgroundColor "$slate5" | |
| :boxShadow "inset 0 0 0 1px $colors$slate8"}} | |
| "&:active" {:backgroundColor "$slate5"} | |
| "&:focus" {:boxShadow "inset 0 0 0 1px $colors$slate8"}}} | |
| :ghost {:true {:backgroundColor "transparent" | |
| :boxShadow "none"}}} | |
| :compoundVariants [{:variant "gray" | |
| :ghost "true" | |
| :css {:backgroundColor "transparent" | |
| :color "$hiContrast" | |
| "@hover" {"&:hover" {:backgroundColor "$slateA3" | |
| :boxShadow "none"}} | |
| "&:active" {:backgroundColor "$slateA4"} | |
| "&:focus" {:boxShadow "inset 0 0 0 1px $colors$slateA8, 0 0 0 1px $colors$slateA8"} | |
| "&[data-radix-popover-trigger][data-state=\\\"open\\\"], &[data-radix-dropdown-menu-trigger][data-state=\\\"open\\\"]" | |
| {:backgroundColor "$slateA4" | |
| :boxShadow "none"}}} | |
| {:variant "blue" | |
| :ghost "true" | |
| :css {:backgroundColor "transparent" | |
| "@hover" {"&:hover" {:backgroundColor "$blueA3" | |
| :boxShadow "none"}} | |
| "&:active" {:backgroundColor "$blueA4"} | |
| "&:focus" {:boxShadow "inset 0 0 0 1px $colors$blueA8, 0 0 0 1px $colors$blueA8"} | |
| "&[data-radix-popover-trigger][data-state=\\\"open\\\"], &[data-radix-dropdown-menu-trigger][data-state=\\\"open\\\"]" | |
| {:backgroundColor "$blueA4" | |
| :boxShadow "none"}}} | |
| {:variant "green" | |
| :ghost "true" | |
| :css {:backgroundColor "transparent" | |
| "@hover" {"&:hover" {:backgroundColor "$greenA3" | |
| :boxShadow "none"}} | |
| "&:active" {:backgroundColor "$greenA4"} | |
| "&:focus" {:boxShadow "inset 0 0 0 1px $colors$greenA8, 0 0 0 1px $colors$greenA8"} | |
| "&[data-radix-popover-trigger][data-state=\\\"open\\\"], &[data-radix-dropdown-menu-trigger][data-state=\\\"open\\\"]" | |
| {:backgroundColor "$greenA4" | |
| :boxShadow "none"}}} | |
| {:variant "red" | |
| :ghost "true" | |
| :css {:backgroundColor "transparent" | |
| "@hover" {"&:hover" {:backgroundColor "$redA3" | |
| :boxShadow "none"}} | |
| "&:active" {:backgroundColor "$redA4"} | |
| "&:focus" {:boxShadow "inset 0 0 0 1px $colors$redA8, 0 0 0 1px $colors$redA8"} | |
| "&[data-radix-popover-trigger][data-state=\\\"open\\\"], &[data-radix-dropdown-menu-trigger][data-state=\\\"open\\\"]" | |
| {:backgroundColor "$redA4" | |
| :boxShadow "none"}}}] | |
| :defaultVariants {:size "1" | |
| :variant "gray"}])))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment