forgejo/web_src/css/modules/button.css
0ko 9a29241cde feat(ui): implement new buttons for better cohesiveness (#9359)
Followup to https://codeberg.org/forgejo/forgejo/pulls/9317#issuecomment-7214470.

Summary of changes:
- implement new CSS for buttons that doesn't have problems Fomantic buttons have:
    - button height doesn't depend on it's content - `min-height:` is used instead of `padding-{top,bottom}:`
    - no margins to fit right in with the other elements while relying on `display:flex` and `flex-gap:`
- other `.button` changes compared to `.ui.button`:
    - no semi-bold black text for now, I think it looks just as fine with normal weight
    - no variable `font-size` - should give better readability compared to existing `.small` and `.tiny` buttons
    - variable height depending on specified size (currently normal or `.small`) and on `@media (pointer: )`
- apply the new buttons to areas where there are switches or dropdown openers near them

Before:
- https://codeberg.org/forgejo/forgejo/attachments/8d9a3941-8889-4420-8f4f-f44cb8c3726f
- https://codeberg.org/forgejo/forgejo/attachments/e5804fae-a71f-43ba-918b-20d4f742124c
- https://codeberg.org/forgejo/forgejo/attachments/65d4e31c-01b7-4050-89a1-4afe74aa574c
- https://codeberg.org/forgejo/forgejo/attachments/c8057262-a834-4b61-a87f-70dab60b5506
- https://codeberg.org/forgejo/forgejo/attachments/aa9508e3-dca1-4ffe-913e-9cbddbb0d6ff
- https://codeberg.org/forgejo/forgejo/attachments/4b2daa07-e0ca-4b44-8795-1609dff8968f
- https://codeberg.org/forgejo/forgejo/attachments/93f7803f-1338-44dc-a428-e44e26231517

After:
- https://codeberg.org/forgejo/forgejo/attachments/ca5426c4-d75e-493d-8b29-64eee1e1c9de
- https://codeberg.org/forgejo/forgejo/attachments/f21c7219-6880-4a2e-9117-6267d46b3081
- https://codeberg.org/forgejo/forgejo/attachments/da3ee771-b5d5-4b4f-8c88-9a8de11b1a45
- https://codeberg.org/forgejo/forgejo/attachments/56f974c3-f72e-4f80-9bbd-5bc785a4a624
- https://codeberg.org/forgejo/forgejo/attachments/17f6e360-dfe5-4bb6-a6b5-dd747dbc2af8
- https://codeberg.org/forgejo/forgejo/attachments/91cd10e1-6c5e-4134-be4c-18223ed2a4f4
- https://codeberg.org/forgejo/forgejo/attachments/f0322c5c-ee9d-4889-9840-0c46838566cc
- https://codeberg.org/forgejo/forgejo/attachments/96560fe7-3436-46dc-8456-c43bfaee2daf
- https://codeberg.org/forgejo/forgejo/attachments/273cf795-6bb4-479f-804f-f40010fae825

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/9359
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2025-10-05 05:22:32 +02:00

93 lines
2.1 KiB
CSS

/* Copyright 2024-2025 The Forgejo Authors. All rights reserved.
* SPDX-License-Identifier: GPL-3.0-or-later */
:root {
--button-min-height: 36px;
--button-padding-inline: 1.35rem;
}
:root .small.button,
:root .small.button-row,
:root .small.button-sequence {
--button-min-height: 34px;
--button-padding-inline: 1.25rem;
}
@media (pointer: coarse) {
:root {
--button-min-height: 40px;
}
:root .small.button,
:root .small.button-row,
:root .small.button-sequence {
--button-min-height: 38px;
}
}
.button {
display: inline-flex;
align-items: center;
min-height: var(--button-min-height);
padding-inline: var(--button-padding-inline);
justify-content: center;
gap: 0.25rem;
border-radius: var(--border-radius);
}
.button:hover,
.button:focus {
text-decoration: none;
}
.button.primary {
background: var(--color-primary);
color: var(--color-primary-contrast);
}
.button.primary:hover,
.button.primary:focus {
background: var(--color-primary-hover);
}
.button.secondary {
background: var(--color-button);
border: 1px solid var(--color-light-border);
color: var(--color-text-light);
}
.button.secondary:hover,
.button.secondary:focus {
color: var(--color-text);
}
/* Dropdown openers should be at least tall as buttons they are in line with, and
* as wide as they are tall */
.button-row details.dropdown summary,
.button-sequence details.dropdown summary {
min-height: var(--button-min-height);
min-width: var(--button-min-height);
}
/* button-row is a simple helper made to improve consistency of fomantic buttons
* placed in a row. It provides gap and cancels out fomantic's margins */
.button-row {
gap: var(--button-spacing);
}
/* button-sequence is a more complex helper that has wrap. Using it is preferred
* but also requires deeper consideration */
.button-sequence {
display: flex;
flex-flow: wrap;
gap: var(--button-spacing);
}
/* Fomantic buttons have annoying margins to set distance between elements. In
* the button-row/sequence helpers this is set by flex+gap */
.button-row .ui.button {
margin-right: 0;
}
.button-sequence .ui.button {
margin: 0 !important;
}