diff options
Diffstat (limited to 'src/objects/_button.scss')
| -rw-r--r-- | src/objects/_button.scss | 72 |
1 files changed, 42 insertions, 30 deletions
diff --git a/src/objects/_button.scss b/src/objects/_button.scss index a823f17..1a0e52c 100644 --- a/src/objects/_button.scss +++ b/src/objects/_button.scss | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | @use 'iro-sass/src/index' as iro; | 2 | @use 'iro-sass/src/index' as iro; |
| 3 | @use '../functions' as fn; | 3 | @use '../functions' as fn; |
| 4 | 4 | ||
| 5 | $themes: primary accent positive negative warning; | 5 | $themes: accent negative; |
| 6 | 6 | ||
| 7 | @mixin button-variant($theme: null) { | 7 | @mixin button-variant($theme: null) { |
| 8 | $key: if($theme == null, (), --#{$theme}); | 8 | $key: if($theme == null, (), --#{$theme}); |
| @@ -19,6 +19,7 @@ $themes: primary accent positive negative warning; | |||
| 19 | &:link, | 19 | &:link, |
| 20 | &:visited, | 20 | &:visited, |
| 21 | &:enabled { | 21 | &:enabled { |
| 22 | border-color: fn.color(list.join($key, --outline-border)); | ||
| 22 | background-color: transparent; | 23 | background-color: transparent; |
| 23 | color: fn.color(list.join($key, --outline-label)); | 24 | color: fn.color(list.join($key, --outline-label)); |
| 24 | } | 25 | } |
| @@ -66,11 +67,16 @@ $themes: primary accent positive negative warning; | |||
| 66 | --pad-b: fn.global-dim(--size --150), | 67 | --pad-b: fn.global-dim(--size --150), |
| 67 | --font-size: fn.global-dim(--font-size --200), | 68 | --font-size: fn.global-dim(--font-size --200), |
| 68 | ), | 69 | ), |
| 70 | |||
| 71 | --key-focus: ( | ||
| 72 | --border: fn.global-dim(--key-focus --border), | ||
| 73 | ), | ||
| 69 | ), | 74 | ), |
| 70 | --colors: ( | 75 | --colors: ( |
| 71 | --bg: fn.global-color(--border-mute), | 76 | --bg: fn.global-color(--border-mute), |
| 72 | --label: fn.global-color(--text), | 77 | --label: fn.global-color(--text), |
| 73 | --outline-label: fn.global-color(--text), | 78 | --outline-border: fn.global-color(--border), |
| 79 | --outline-label: fn.global-color(--text), | ||
| 74 | 80 | ||
| 75 | --hover: ( | 81 | --hover: ( |
| 76 | --bg: fn.global-color(--border), | 82 | --bg: fn.global-color(--border), |
| @@ -81,19 +87,21 @@ $themes: primary accent positive negative warning; | |||
| 81 | --label: fn.global-color(--heading), | 87 | --label: fn.global-color(--heading), |
| 82 | ), | 88 | ), |
| 83 | --disabled: ( | 89 | --disabled: ( |
| 84 | --bg: fn.global-color(--border-mute), | 90 | --bg: fn.global-color(--border-mute), |
| 85 | --label: fn.global-color(--text-disabled), | 91 | --outline-border: fn.global-color(--border), |
| 92 | --label: fn.global-color(--text-disabled), | ||
| 86 | ), | 93 | ), |
| 87 | --key-focus: ( | 94 | --key-focus: ( |
| 88 | --bg: fn.global-color(--base --50), | 95 | --bg: fn.global-color(--base --50), |
| 89 | --label: fn.global-color(--heading), | 96 | --label: fn.global-color(--heading), |
| 90 | --border: fn.global-color(--yellow-static --400), | 97 | --border: fn.global-color(--focus-static --400), |
| 91 | ), | 98 | ), |
| 92 | 99 | ||
| 93 | --primary: ( | 100 | --primary: ( |
| 94 | --bg: fn.global-color(--base --800), | 101 | --bg: fn.global-color(--base --800), |
| 95 | --label: fn.global-color(--base --800-text), | 102 | --label: fn.global-color(--base --800-text), |
| 96 | --outline-label: fn.global-color(--text), | 103 | --outline-border: fn.global-color(--base --800), |
| 104 | --outline-label: fn.global-color(--text), | ||
| 97 | 105 | ||
| 98 | --hover: ( | 106 | --hover: ( |
| 99 | --bg: fn.global-color(--base --900), | 107 | --bg: fn.global-color(--base --900), |
| @@ -108,26 +116,25 @@ $themes: primary accent positive negative warning; | |||
| 108 | )); | 116 | )); |
| 109 | 117 | ||
| 110 | @each $theme in $themes { | 118 | @each $theme in $themes { |
| 111 | @if $theme != primary { | 119 | @include iro.props-store(( |
| 112 | @include iro.props-store(( | 120 | --colors: ( |
| 113 | --colors: ( | 121 | --#{$theme}: ( |
| 114 | --#{$theme}: ( | 122 | --bg: fn.global-color(--#{$theme}-static --900), |
| 115 | --bg: fn.global-color(--#{$theme} --900), | 123 | --label: fn.global-color(--#{$theme}-static --900-text), |
| 116 | --label: fn.global-color(--#{$theme} --900-text), | 124 | --outline-border: fn.global-color(--#{$theme} --900), |
| 117 | --outline-label: fn.global-color(--#{$theme} --1000), | 125 | --outline-label: fn.global-color(--#{$theme} --1000), |
| 118 | 126 | ||
| 119 | --hover: ( | 127 | --hover: ( |
| 120 | --bg: fn.global-color(--#{$theme} --1000), | 128 | --bg: fn.global-color(--#{$theme}-static --1000), |
| 121 | --label: fn.global-color(--#{$theme} --1000-text), | 129 | --label: fn.global-color(--#{$theme}-static --1000-text), |
| 122 | ), | 130 | ), |
| 123 | --active: ( | 131 | --active: ( |
| 124 | --bg: fn.global-color(--#{$theme} --1100), | 132 | --bg: fn.global-color(--#{$theme}-static --1100), |
| 125 | --label: fn.global-color(--#{$theme} --1100-text), | 133 | --label: fn.global-color(--#{$theme}-static --1100-text), |
| 126 | ), | ||
| 127 | ), | 134 | ), |
| 128 | ), | 135 | ), |
| 129 | )); | 136 | ), |
| 130 | } | 137 | )); |
| 131 | } | 138 | } |
| 132 | 139 | ||
| 133 | @include iro.bem-object(iro.props-namespace()) { | 140 | @include iro.bem-object(iro.props-namespace()) { |
| @@ -151,6 +158,7 @@ $themes: primary accent positive negative warning; | |||
| 151 | } | 158 | } |
| 152 | 159 | ||
| 153 | @include iro.bem-modifier('outline') { | 160 | @include iro.bem-modifier('outline') { |
| 161 | border-color: fn.color(--disabled --outline-border); | ||
| 154 | background-color: transparent; | 162 | background-color: transparent; |
| 155 | box-shadow: none; | 163 | box-shadow: none; |
| 156 | } | 164 | } |
| @@ -164,6 +172,10 @@ $themes: primary accent positive negative warning; | |||
| 164 | } | 172 | } |
| 165 | 173 | ||
| 166 | @include button-variant(); | 174 | @include button-variant(); |
| 175 | |||
| 176 | @include iro.bem-modifier('primary') { | ||
| 177 | @include button-variant('primary'); | ||
| 178 | } | ||
| 167 | 179 | ||
| 168 | @each $theme in $themes { | 180 | @each $theme in $themes { |
| 169 | @include iro.bem-modifier($theme) { | 181 | @include iro.bem-modifier($theme) { |
| @@ -177,7 +189,7 @@ $themes: primary accent positive negative warning; | |||
| 177 | &:focus-visible { | 189 | &:focus-visible { |
| 178 | border-color: fn.color(--key-focus --border); | 190 | border-color: fn.color(--key-focus --border); |
| 179 | background-color: fn.color(--key-focus --bg); | 191 | background-color: fn.color(--key-focus --bg); |
| 180 | box-shadow: 0 0 0 calc(fn.global-dim(--border --thick) - fn.dim(--border)) fn.color(--key-focus --border); | 192 | box-shadow: 0 0 0 calc(fn.dim(--key-focus --border) - fn.dim(--border)) fn.color(--key-focus --border); |
| 181 | color: fn.color(--key-focus --label); | 193 | color: fn.color(--key-focus --label); |
| 182 | } | 194 | } |
| 183 | } | 195 | } |
