|
129 | 129 | ]); |
130 | 130 |
|
131 | 131 | const displayHotkey = $derived(hotkey ? formatHotkeyForPlatform(hotkey) : undefined); |
| 132 | + const iconSize = $derived(size === "tag" ? 14 : 16); |
132 | 133 | let tooltipInstance = $state<Tooltip>(); |
133 | 134 |
|
134 | 135 | function onmousedown(e: MouseEvent) { |
|
196 | 197 | {#if icon || loading || isDropdown} |
197 | 198 | <div class={["btn-icon", iconClass]}> |
198 | 199 | {#if loading} |
199 | | - <Icon name="spinner" /> |
| 200 | + <Icon name="spinner" size={iconSize} /> |
200 | 201 | {:else if isDropdown} |
201 | 202 | <div class="btn-dropdown-chevron" class:open={dropdownOpen}> |
202 | | - <Icon name="chevron-down" /> |
| 203 | + <Icon name="chevron-down" size={iconSize} /> |
203 | 204 | </div> |
204 | 205 | {:else if icon} |
205 | | - <Icon name={icon} /> |
| 206 | + <Icon name={icon} size={iconSize} /> |
206 | 207 | {/if} |
207 | 208 | </div> |
208 | 209 | {/if} |
|
229 | 230 | background: var(--btn-bg); |
230 | 231 | color: var(--label-clr); |
231 | 232 | cursor: pointer; |
232 | | -
|
233 | 233 | transition: |
234 | 234 | background var(--transition-fast), |
235 | 235 | opacity var(--transition-fast), |
236 | 236 | color var(--transition-fast), |
237 | 237 | max-width var(--transition-medium); |
238 | 238 | user-select: none; |
239 | 239 |
|
| 240 | + /* ---- Sizes ---- */ |
| 241 | + &.tag-size { |
| 242 | + --btn-size: var(--size-tag); |
| 243 | + --btn-padding: 2px 6px; |
| 244 | + --btn-gap: 4px; |
| 245 | + } |
| 246 | +
|
| 247 | + &.button-size { |
| 248 | + --btn-size: var(--size-button); |
| 249 | + --btn-padding: 4px 8px; |
| 250 | + --btn-gap: 6px; |
| 251 | + } |
| 252 | +
|
| 253 | + &[class*="-size"] { |
| 254 | + height: var(--btn-size); |
| 255 | + padding: var(--btn-padding); |
| 256 | + gap: var(--btn-gap); |
| 257 | + } |
| 258 | +
|
| 259 | + &.fixed-width[class*="-size"] { |
| 260 | + width: var(--btn-size); |
| 261 | + } |
| 262 | +
|
240 | 263 | /* ---- Child elements ---- */ |
241 | 264 | .btn-label { |
242 | | - padding: 0 3px; |
243 | 265 | overflow: hidden; |
244 | 266 | white-space: nowrap; |
245 | 267 | pointer-events: none; |
|
382 | 404 | outline-offset: -2px; |
383 | 405 | } |
384 | 406 |
|
385 | | - /* ---- Sizes ---- */ |
386 | | - &.tag-size { |
387 | | - --btn-size: var(--size-tag); |
388 | | - --btn-padding: 2px 4px; |
389 | | - --btn-gap: 0; |
390 | | - } |
391 | | -
|
392 | | - &.button-size { |
393 | | - --btn-size: var(--size-button); |
394 | | - --btn-padding: 4px 6px; |
395 | | - --btn-gap: 2px; |
396 | | - } |
397 | | -
|
398 | | - &[class*="-size"] { |
399 | | - height: var(--btn-size); |
400 | | - padding: var(--btn-padding); |
401 | | - gap: var(--btn-gap); |
402 | | - } |
403 | | -
|
404 | | - &.fixed-width[class*="-size"] { |
405 | | - width: var(--btn-size); |
406 | | - } |
407 | | -
|
408 | 407 | /* ---- Dropdown split-button ---- */ |
409 | 408 | &.is-dropdown:first-of-type { |
410 | 409 | flex: 1; |
|
0 commit comments