diff options
author | Denys Konovalov <kontakt@denyskon.de> | 2023-08-01 00:13:42 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-01 00:13:42 +0200 |
commit | b9baed2c74286710481886c5d1f3010e43840012 (patch) | |
tree | e39bdc26d90aafc29a13f134db0fa424a8b37e87 /web_src/css/shared | |
parent | fc6c3d626ef9f383c3ff7f774fcef0116de4f2e3 (diff) | |
download | gitea-b9baed2c74286710481886c5d1f3010e43840012.tar.gz gitea-b9baed2c74286710481886c5d1f3010e43840012.zip |
Introduce `flex-list` & `flex-item` elements for Gitea UI (#25790)
This PR introduces a new UI element type for Gitea called `flex-item`.
It consists of a horizontal card with a leading, main and trailing part:

The idea behind it is that in Gitea UI, we have many cases where we use
this kind of layout, but it is achieved in many different ways:
- grid layout
- `.ui.list` with additional hacky flexbox
- `.ui.key.list` - looks to me like a style set originally created for
ssh/gpg key list, was used in many other places
- `.issue.list` - created for issue cards, used in many other places
- ...
This new style is based on `.issue.list`, specifically the refactoring
of it done in #25750.
In this PR, the new element is introduced and lots of templates are
being refactored to use that style. This allows to remove a lot of
page-specific css, makes many of the elements responsive or simply
provides a cleaner/better-looking way to present information.
A devtest section with the new style is also available.
<details>
<summary>Screenshots (left: before, right: after)</summary>



















</details>
---------
Co-authored-by: Giteabot <teabot@gitea.io>
Diffstat (limited to 'web_src/css/shared')
-rw-r--r-- | web_src/css/shared/flex-list.css | 94 | ||||
-rw-r--r-- | web_src/css/shared/issuelist.css | 134 |
2 files changed, 94 insertions, 134 deletions
diff --git a/web_src/css/shared/flex-list.css b/web_src/css/shared/flex-list.css new file mode 100644 index 0000000000..7982241684 --- /dev/null +++ b/web_src/css/shared/flex-list.css @@ -0,0 +1,94 @@ +.flex-list { + list-style: none; +} + +.flex-item { + display: flex; + gap: 8px; + align-items: flex-start; +} + +.flex-item:not(:last-child) { + padding-bottom: 8px; +} + +.flex-item-baseline { + align-items: baseline; +} + +.flex-item-center { + align-items: center; +} + +.flex-item .flex-item-leading { + display: flex; + align-items: flex-start; +} + +.flex-item .flex-item-main { + display: flex; + flex-direction: column; + flex-grow: 1; + min-width: 0; +} + +.flex-item-header { + display: flex; + gap: .25rem; + justify-content: space-between; + flex-wrap: wrap; +} + +.flex-item a:not(.label, .button):hover { + color: var(--color-primary) !important; +} + +.flex-item .flex-item-icon svg { + margin-top: 1px; +} + +.flex-item .flex-item-trailing { + display: flex; + gap: 0.5rem; + align-items: center; + flex-grow: 0; + flex-wrap: wrap; + justify-content: end; + flex-shrink: 2; +} + +.flex-item .flex-item-title { + display: inline-flex; + flex-wrap: wrap; + align-items: center; + gap: .25rem; + max-width: 100%; + color: var(--color-text); + font-size: 16px; + min-width: 0; + font-weight: var(--font-weight-semibold); +} + +.flex-item .flex-item-title a { + color: var(--color-text); + overflow-wrap: anywhere; +} + +.flex-item .flex-item-body { + font-size: 13px; + display: flex; + align-items: center; + flex-wrap: wrap; + gap: .25rem; + color: var(--color-text-light-2); +} + +.flex-item .flex-item-body a { + color: inherit; + overflow-wrap: anywhere; +} + +.flex-list > .flex-item + .flex-item { + border-top: 1px solid var(--color-secondary); + padding-top: 8px; +} diff --git a/web_src/css/shared/issuelist.css b/web_src/css/shared/issuelist.css deleted file mode 100644 index 82fafedec0..0000000000 --- a/web_src/css/shared/issuelist.css +++ /dev/null @@ -1,134 +0,0 @@ -.issue.list { - list-style: none; - margin-top: 1rem; -} - -.issue.list .item { - display: flex; - align-items: baseline; - padding: 8px 0; -} - -.issue.list .item .issue-item-left { - display: flex; - align-items: flex-start; -} - -.issue.list .item .issue-item-main { - display: flex; - flex-direction: column; - width: 100%; -} - -.issue.list .item .issue-item-header { - display: flex; - justify-content: space-between; - align-items: center; - flex-wrap: wrap; -} - -.issue.list a:not(.label):hover { - color: var(--color-primary) !important; -} - -.issue.list > .item .issue-item-icon svg { - margin-right: 0.75rem; - margin-top: 1px; -} - -.issue.list .item .issue-item-right { - display: flex; - gap: 0.5rem; -} - -.issue.list > .action-item { - align-items: normal; -} - -.issue.list > .item .action-item-center { - display: flex; - align-items: center; - padding-left: 4px; - padding-right: 12px; -} - -.issue.list > .item .action-item-right { - flex: 0 0 15%; - display: flex; - flex-direction: column; - gap: 3px; - color: var(--color-text-light); -} - -.issue.list > .item .issue-item-title { - max-width: 100%; - color: var(--color-text); - font-size: 16px; - min-width: 0; - font-weight: var(--font-weight-semibold); -} - -.issue.list > .item .issue-item-title a.index { - max-width: fit-content; - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - overflow: hidden; - word-break: break-all; -} - -.issue.list > .item .title { - color: var(--color-text); - overflow-wrap: anywhere; -} - -.issue.list > .item .issue-item-body { - font-size: 13px; - display: flex; - align-items: center; - flex-wrap: wrap; - gap: .25rem; - color: var(--color-text-light-2); -} - -.issue.list > .item .issue-item-body a { - color: inherit; - word-break: break-word; -} - -.issue.list > .item .issue-item-body .checklist progress { - margin-left: 2px; - width: 80px; - height: 6px; - display: inline-block; - border-radius: 3px; -} - -.issue.list > .item .issue-item-body .checklist progress::-webkit-progress-value { - background-color: var(--color-secondary-dark-4); -} - -.issue.list > .item .issue-item-body .checklist progress::-moz-progress-bar { - background-color: var(--color-secondary-dark-4); -} - -.issue.list .branches { - display: inline-flex; -} - -.issue.list .branches .branch { - background-color: var(--color-secondary-alpha-40); - border-radius: 3px; - padding: 0 4px; -} - -.issue.list .branches .truncated-name { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - max-width: 10em; -} - -.issue.list > .item + .item { - border-top: 1px solid var(--color-secondary); -} |