重构基本框架

This commit is contained in:
lutinglt
2025-06-23 01:28:13 +08:00
parent 36a1707b3e
commit 55ac3af9b7
56 changed files with 7053 additions and 422 deletions

View File

@@ -0,0 +1,234 @@
// Made by Luting ^-^
.page-content.repository.actions .ui.grid {
.four.wide {
border-right: 1px solid var(--color-light-border);
min-height: calc(-104px + 100vh);
&:before {
content: "Actions";
display: block;
font-size: 20px;
font-weight: 600;
margin-top: 6px;
margin-bottom: 24px;
}
}
.twelve.wide {
&:before {
content: "Workflow Runs";
display: block;
font-size: 20px;
margin-top: 6px;
margin-bottom: 24px;
margin-left: 2px;
}
.ui.secondary.menu {
background-color: var(--color-box-header);
border: 1px solid var(--color-light-border);
border-bottom: 0;
border-top-left-radius: var(--border-radius);
border-top-right-radius: var(--border-radius);
padding: 16px;
margin-bottom: 0;
.item {
padding: 6px 12px;
}
}
.ui.info.message {
border-radius: 0;
border-left-color: var(--color-light-border);
border-right-color: var(--color-light-border);
margin: 0;
~ .run-list {
border-top: 0;
}
}
.run-list {
border: 1px solid var(--color-light-border);
border-bottom-left-radius: var(--border-radius);
border-bottom-right-radius: var(--border-radius);
.flex-item {
padding: 16px;
.flex-item-leading {
align-self: flex-start;
margin-top: 2px;
}
.flex-item-main {
gap: 0.5rem;
}
.flex-item-trailing {
justify-content: space-between;
> .ui.label {
border-radius: var(--border-radius);
margin-left: 32px;
}
}
}
}
}
}
@media (max-width: 767.98px) {
.page-content.repository.actions .ui.grid .four.wide {
min-height: auto;
}
}
// 工作流禁用标签
.ui.vertical.menu .item > .ui.red.label {
color: var(--color-error-text);
border: 1px solid var(--color-error-border);
background: var(--color-error-bg);
margin-top: 0.5px;
}
// 手动工作流下拉列表
#runWorkflowDispatchForm {
// 分支选择按钮
.ui.dropdown.button.branch-selector-dropdown .svg.octicon-git-branch {
margin-right: 6px;
}
}
// 日志
.ui.container.action-view-container {
width: auto;
max-width: 100%;
padding: 0 24px 0 16px;
.action-view-header {
margin-top: 20px;
.action-info-summary {
margin-left: 14px;
}
.action-commit-summary {
margin-left: 28 + 14px;
}
}
}
.action-view-left.action-view-left {
width: 16.5%;
}
.action-view-right.action-view-right {
width: 83.5%;
}
@media (max-width: 767.98px) {
.action-view-left.action-view-left,
.action-view-right.action-view-right {
width: 100%;
}
}
.action-view-left {
margin-top: 16px;
margin-right: 28px;
border-top: 1px solid #2f353d;
&:before {
content: "Jobs";
color: #9198a1;
font-size: 12px;
font-weight: 600;
position: relative;
display: inline-block;
margin-top: 22px;
top: -8px;
left: 15px;
}
.job-group-section {
padding-right: 8px;
padding-bottom: 8px;
border-bottom: 1px solid #2f353d;
.job-brief-item {
border-radius: 0.5rem !important;
padding: 8px;
position: relative;
margin-left: 0.5rem;
&.selected {
background-color: #161a21;
&:hover {
background-color: var(--color-hover);
}
&:after {
overflow: visible;
background: #1f6feb;
border-radius: 0.375rem;
content: "";
height: 24px;
left: calc(0.5rem * -1);
position: absolute;
top: calc(50% - 12px);
width: 4px;
}
}
}
}
}
.action-view-right {
margin-top: 16px;
min-height: calc(100vh - 245px);
.job-info-header {
padding: 16px 12px 16px 24px;
height: auto;
}
.job-step-container {
.job-step-summary {
color: var(--color-console-fg-subtle);
padding: 8px 10px;
&.step-expandable:hover {
color: var(--color-console-fg-subtle);
}
.tw-mr-2:not(.svg) svg.svg {
margin: 1.5px 6px 0px 2px;
}
svg.svg.text.green {
color: #9198a1 !important;
}
&.selected {
color: var(--color-console-fg) !important;
background-color: var(--color-console-active-bg) !important;
svg.svg.text.green {
color: #f0f6fc !important;
}
}
}
.job-log-line {
color: #f0f6fc;
.log-msg:hover * {
color: #f0f6fc !important;
}
}
}
}

View File

@@ -0,0 +1,7 @@
// Made by Luting ^-^
.page-content.dashboard {
.flex-item .flex-item-trailing svg {
height: 18px;
width: 18px;
}
}

View File

@@ -0,0 +1,42 @@
// Made by Luting ^-^
.added-code,
.removed-code {
color: #fff !important;
border-radius: 0.1875rem;
* {
color: #fff !important;
border-radius: 0.1875rem;
}
}
.code-diff-unified {
.add-code {
.lines-num,
.lines-escape {
background-color: #1c4428;
}
}
.del-code {
.lines-num,
.lines-escape {
background-color: #542426;
}
}
}
.code-diff-unified .tag-code td,
.diff-file-body tr.tag-code:last-child > td {
background-color: #121d2f;
}
.code-expander-button,
.code-diff-unified .tag-code .lines-num,
.code-diff-unified .tag-code .lines-escape,
.diff-file-body tr.tag-code:last-child > td.lines-num,
.diff-file-body tr.tag-code:last-child > td.lines-escape {
background-color: #0c2d6b;
}
.code-expander-button:hover {
background: #1f6feb;
}

View File

@@ -0,0 +1,51 @@
// Made by Luting ^-^
.vch__day__square,
.vch__legend__wrapper rect {
rx: 2px;
ry: 2px;
width: 9px;
height: 9px;
outline: 1px solid rgba(255, 255, 255, 0.05);
border-radius: 0.5px;
outline-offset: -1px;
}
.vch__legend__wrapper rect {
rx: 3px;
ry: 3px;
border-radius: 1px;
}
.vch__day__square,
.vch__legend__wrapper rect {
&[style="fill: var(--color-secondary-alpha-60);"] {
outline: 1px solid rgba(27, 31, 35, 0.06);
background: #161b22;
fill: #161b22 !important;
}
&[style="fill: var(--color-primary-light-4);"] {
background: #0e4429;
fill: #0e4429 !important;
}
&[style="fill: var(--color-primary-light-2);"] {
background: #006d32;
fill: #006d32 !important;
}
&[style="fill: var(--color-primary);"] {
background: #238636;
fill: #238636 !important;
}
&[style="fill: var(--color-primary-dark-2);"] {
background: #39d353;
fill: #39d353 !important;
}
&[style="fill: var(--color-primary-dark-4);"] {
background: #44ff61;
fill: #44ff61 !important;
}
}

View File

@@ -0,0 +1,20 @@
// Made by Luting ^-^
// PR
#issue-list .flex-item-body .branches .branch {
color: var(--color-blue);
background-color: #121d2f;
font-size: 12px;
}
// 评论焦点
.comment:target {
.comment-container {
border-color: #1f6feb !important;
box-shadow: 0 0 0 1px #4493f8 !important;
}
.header:before {
border-right-color: #1f6feb !important;
filter: drop-shadow(-1px 0 0 #4493f8) !important;
}
}

View File

@@ -0,0 +1,81 @@
// Made by Luting ^-^
.page-content.repository.releases {
h2 .item {
font-weight: 500;
}
#release-list .release-entry {
.meta {
gap: 2px;
padding-top: 24px;
padding-right: 40px;
text-align: left;
min-width: 0;
flex: 0.125;
a.muted {
color: #9198a1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
word-break: break-all;
svg {
margin-right: 8px !important;
}
svg.tw-mr-1.svg.octicon-tag {
margin-top: 1px;
}
}
.js-branch-tag-selector {
margin-top: 8px;
}
}
.segment.detail {
p.text.grey {
margin: 16px 0;
.time {
color: #f0f6fc;
}
}
.markup {
> *:first-child {
margin-top: 16px !important;
}
> *:last-child {
margin-bottom: 16px !important;
}
}
}
}
.ui.small.primary.button {
background-color: var(--color-button);
&:hover {
background-color: #262c36;
}
}
}
.page-content.repository.tags {
.tag-list-row .download a.muted:hover {
text-decoration: none;
}
}
.page-content.repository.tags,
.page-content.repository.releases {
.ui.small.menu {
.active.item {
color: #fff;
background: #1f6feb !important;
}
}
}

393
styles/components/repo.scss Normal file
View File

@@ -0,0 +1,393 @@
// Made by Luting ^-^
#navbar {
border-bottom-width: 1.5px;
}
.page-content > :first-child.secondary-nav {
border-top: 0;
background-color: var(--color-nav-bg) !important;
}
// 修复关注&派生 hover 意外点亮右侧 label 左边框
.ui.ui.ui.ui.small.button {
z-index: 0;
}
.secondary-nav > .divider {
border-top-width: 1.5px;
}
// 仓库页面头部名称
.page-content.repository .repo-header {
.ui.compact.button {
padding: 3px 12px;
svg {
color: #9198a1;
}
}
img.ui.avatar {
height: 32px;
width: 32px;
margin-block-start: 0.5rem;
margin-block-end: 0.5rem;
}
.flex-item {
.flex-item-title {
color: #9198a1;
a {
display: flex;
align-items: center;
color: #f0f6fc;
font-size: 16px;
text-decoration: none !important;
min-width: 3ch;
padding: 6px 8px;
padding-inline: 0.5rem;
padding-block: 6px;
border-radius: 0.375rem;
margin-top: 0.5rem;
margin-bottom: 0.5rem;
&:hover {
background: #15191f;
}
&.muted:not(.tw-font-normal) {
font-weight: 600;
}
}
}
a:not(.label, .button):hover {
color: #f0f6fc !important;
}
}
}
// 仓库导航栏
.ui.secondary.pointing.menu {
.overflow-menu-items {
gap: 0.5rem;
.item {
padding: 5px 8px !important;
margin-block-start: 0.5rem;
margin-block-end: 0.5rem;
margin-bottom: 0.5rem !important;
}
}
.active.item,
.dropdown.item,
.link.item,
a.item {
color: #f0f6fc;
svg {
color: #9198a1;
margin-right: 8px;
}
}
.active.item {
border-color: #ffffff00;
span:after {
background: #f78166;
border-radius: 0.375rem;
bottom: calc(50% - 1.8rem);
content: "";
height: 2px;
position: absolute;
right: 50%;
transform: translate(50%, -50%);
width: 100%;
z-index: 1;
}
}
}
.header-wrapper .ui.tabular.menu,
.ui.secondary.pointing.menu {
.item:hover {
background: #15191f !important;
}
}
// 仓库文件&提交列表
.page-content.repository {
// 顶部提交, 标签, 分支
.repository-summary .segment.sub-menu {
&.ui.segment {
background-color: var(--color-box-header);
}
.item {
color: #9198a1;
b {
color: #f0f6fc;
margin: 0 2px;
}
}
}
// clone 按钮调整
.repo-button-row .repo-button-row-right .ui.primary.button span {
margin: 0px 3px;
}
// 提交的Action状态
.commit-list,
#repo-files-table {
.flex-text-inline:not(img) {
padding: 6px;
border-radius: var(--border-radius);
margin-right: 6px;
&:hover {
background-color: var(--color-hover);
}
}
}
}
// 仓库文件列表
.repository.file.list {
#repo-files-table {
// 头部最后一次提交
.repo-file-line {
padding-right: 16px;
&.parent-link {
gap: 0.5rem;
padding-left: 16px;
svg {
margin-right: 2px;
}
&:hover {
background-color: var(--color-box-header);
}
}
&.repo-file-last-commit {
height: 3.725rem;
.latest-commit {
.commit-summary {
color: #9198a1;
}
img.tw-align-middle {
margin-top: -1px;
margin-left: 1px;
margin-right: 8px !important;
}
.author-wrapper {
margin-right: 6px;
&:hover {
color: var(--color-text);
}
}
.ui.label {
display: none;
}
}
}
}
// 文件列表
.repo-file-item {
.repo-file-cell {
&.name {
display: flex;
align-items: center;
gap: 0.5rem;
padding-left: 16px;
}
&.age {
padding-right: 16px;
}
}
.svg.octicon-file-directory-fill,
.svg.octicon-file-submodule {
color: #7d8590;
}
// 整行背景颜色效果
&:hover .repo-file-cell {
background-color: var(--color-box-header) !important;
}
}
}
}
.repository #commits-table {
.author {
a {
color: var(--color-text);
}
img {
margin-right: 8px !important;
}
}
.text.right.aligned {
color: #919894;
}
}
// 手机下隐藏提交信息
@media (max-width: 767.98px) {
#repo-files-table {
grid-template-columns: 1fr auto;
.repo-file-line {
grid-column: 1 / span 2;
}
.repo-file-cell {
&.name {
max-width: none;
}
&.message {
display: none;
}
}
}
}
// 仓库代码布局调整, 侧边栏宽度调整
.repo-grid-filelist-sidebar {
grid-template-columns: auto 296px;
}
@media (max-width: 767.98px) {
.repo-grid-filelist-sidebar {
grid-template-columns: 100%;
}
}
// 仓库代码页面侧边栏
.page-content.repository {
.repo-home-sidebar-top {
a.muted:hover {
text-decoration: none;
}
.flex-item {
padding: 10px 0 0 0;
.flex-item-title {
margin-top: 2px;
}
.flex-item-body {
padding: 8px 0 0 0;
.repo-description {
color: #f0f6fc;
}
#repo-topics {
margin: 10px 0px !important;
.repo-topic.ui.label {
font-size: 12px;
padding: 5px 10px;
margin: 0px 1.5px 3.5px 0px;
}
}
.flex-text-block {
font-size: 14px;
font-weight: 600;
margin-top: 10px;
&.muted {
margin-top: 2px;
font-weight: normal;
}
svg.svg {
margin-right: 4px;
&.octicon-database,
&.octicon-law {
margin-right: 6px;
}
}
}
}
}
}
.repo-home-sidebar-bottom {
a.muted:hover {
text-decoration: none;
}
.flex-item {
padding: 16px 0;
.flex-item {
padding: 16px 0 0 0;
.flex-item-icon {
svg.svg.octicon-tag {
color: #3fb950;
margin-top: 2px;
}
}
.flex-item-header .flex-item-title {
font-size: 14px;
}
}
.flex-item-title .ui.small.label {
background: var(--color-label-bg);
color: var(--color-label-text);
}
.flex-item-body {
font-size: 12px;
}
}
// 编程语言
.language-stats {
height: 8px;
margin-bottom: 0px;
}
.language-stats-details .item {
font-size: 12px;
margin-right: 16px;
.color-icon {
height: 8px;
width: 8px;
margin-right: 8px;
}
.tw-font-semibold {
color: #f0f6fc;
margin-right: 2px;
}
}
}
}

View File

@@ -0,0 +1,172 @@
// Made by Luting ^-^
// 设置左边栏(包含 Actions 的工作流栏)
%active-item-after-style {
background: #1f6feb;
border-radius: 0.375rem;
content: "";
height: 24px;
left: calc(0.5rem * -1);
position: absolute;
top: calc(50% - 12px);
width: 4px;
}
.ui.vertical.menu {
background: var(--color-body);
border: 0;
.header.item {
color: #9198a1 !important;
font-size: 1.5rem;
font-weight: 700;
background: unset;
margin-bottom: 0.5rem;
}
.menu .item:hover {
background: var(--color-hover);
}
.item,
.item > summary {
font-size: 1.1rem;
background: unset;
padding: 6px 8px;
color: var(--color-white) !important;
}
.item:before {
background: unset;
}
.active.item,
.active.item > summary {
font-weight: 600;
}
.active.item:after {
@extend %active-item-after-style;
}
details {
&:has(.active.item) {
> summary {
font-weight: 600;
background: #161a21;
&:hover {
background: var(--color-hover);
}
}
.active.item {
font-weight: 400;
}
&[open] {
> summary {
background: unset;
&:hover {
background: var(--color-hover);
}
}
&:after {
display: none;
}
}
&:after {
@extend %active-item-after-style;
}
}
}
}
.ui.vertical.menu,
.ui.fluid.vertical.menu {
.active.item {
background: #161a21 !important;
&:hover {
background-color: var(--color-hover) !important;
}
}
.item,
.item > summary {
border-radius: 0.5rem !important;
}
}
// 设置右面版
.user-main-content,
.repo-setting-content,
.user-setting-content,
.org-setting-content,
.admin-setting-content {
.ui.top.attached.header {
border: 0;
font-size: 1.5rem;
font-weight: 400;
background-color: unset !important;
margin-bottom: 0.25rem;
}
.ui.attached.segment {
background-color: unset;
border-radius: 0.5rem !important;
}
.ui.attached.segment:not(.error) {
border: 1px solid var(--color-light-border) !important;
}
.ui.attached.segment.error {
border: 1px solid var(--color-error-border) !important;
}
input,
textarea,
.ui.input input,
.ui.form input:not([type]),
.ui.form select,
.ui.form textarea,
.ui.form input[type="date"],
.ui.form input[type="datetime-local"],
.ui.form input[type="email"],
.ui.form input[type="file"],
.ui.form input[type="number"],
.ui.form input[type="password"],
.ui.form input[type="search"],
.ui.form input[type="tel"],
.ui.form input[type="text"],
.ui.form input[type="time"],
.ui.form input[type="url"],
.ui.selection.dropdown {
background: var(--color-box-header);
}
.ui.form input:not([type]),
.ui.form select,
.ui.form textarea,
.ui.form input[type="date"],
.ui.form input[type="datetime-local"],
.ui.form input[type="email"],
.ui.form input[type="file"],
.ui.form input[type="number"],
.ui.form input[type="password"],
.ui.form input[type="search"],
.ui.form input[type="tel"],
.ui.form input[type="text"],
.ui.form input[type="time"],
.ui.form input[type="url"] {
padding: 7px 12px;
}
.ui.selection.dropdown {
padding: 7px 24px 7px 12px;
}
}