11 Commits

Author SHA1 Message Date
Lucas Colombo
ffec5c6916 release: 🔖 v0.2.2 2024-10-23 13:49:08 -03:00
Lucas Colombo
2b6301ca1e feat: improve autocomplete input + file list signed mark 2024-10-23 13:45:51 -03:00
Lucas Colombo
3c2d91c135 release: 🔖 v0.2.1 2024-10-19 17:12:25 -03:00
Lucas Colombo
ecd34de22f fix: 🚑 some css customizations not showing after 1.22.3 gitea update 2024-10-19 17:10:14 -03:00
Lucas Colombo
1569eacdcf chore: 🧹 update package lock and fix ci 2024-10-19 11:43:51 -03:00
Lucas Colombo
b6c29358a1 release: 🔖 v0.2.0 2024-10-19 11:25:07 -03:00
Lucas Colombo
570d300bfb fix: 🚑 remove default home stuff 2024-10-19 11:22:04 -03:00
Lucas Colombo
de9c721197 feat!: update to support gitea 1.22 2024-10-19 11:20:23 -03:00
Lucas Colombo
422f0c1fc7 fix: 🚑 issue content images max size + flex-list 2024-05-21 06:16:54 -03:00
Lucas Colombo
5a4975650a fix: 🚑 gpg label unverified colors 2024-04-23 10:10:36 -03:00
Lucas Colombo
146ee5e781 Merge pull request #2 from lucas-labs/1-auto-switch-between-dark-and-light-theme
feat:  auto switch dark-light themes
2024-04-12 21:46:45 -03:00
53 changed files with 1034 additions and 9092 deletions

View File

@@ -8,15 +8,15 @@ jobs:
release: release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
- uses: actions/setup-node@v3 - uses: actions/setup-node@v4
with: with:
node-version: 20 node-version: 20
- run: npm ci - run: npm ci
- run: npm run build - run: npm run build
- name: Create tarball - name: Create tarball
run: tar czf catppuccin-gitea.tar.gz --directory=./dist . run: tar czf gitea-lugit-theme.tar.gz --directory=./dist .
- name: Add zips to release - name: Add zips to release
uses: softprops/action-gh-release@v1 uses: softprops/action-gh-release@v2
with: with:
files: ./lugit-theme.tar.gz files: ./gitea-lugit-theme.tar.gz

328
.gitignore vendored
View File

@@ -1,164 +1,164 @@
### Node ### ### Node ###
# Logs # Logs
logs logs
*.log *.log
npm-debug.log* npm-debug.log*
yarn-debug.log* yarn-debug.log*
yarn-error.log* yarn-error.log*
lerna-debug.log* lerna-debug.log*
.pnpm-debug.log* .pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html) # Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data # Runtime data
pids pids
*.pid *.pid
*.seed *.seed
*.pid.lock *.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover # Directory for instrumented libs generated by jscoverage/JSCover
lib-cov lib-cov
# Coverage directory used by tools like istanbul # Coverage directory used by tools like istanbul
coverage coverage
*.lcov *.lcov
# nyc test coverage # nyc test coverage
.nyc_output .nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt .grunt
# Bower dependency directory (https://bower.io/) # Bower dependency directory (https://bower.io/)
bower_components bower_components
# node-waf configuration # node-waf configuration
.lock-wscript .lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html) # Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release build/Release
# Dependency directories # Dependency directories
node_modules/ node_modules/
jspm_packages/ jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/) # Snowpack dependency directory (https://snowpack.dev/)
web_modules/ web_modules/
# TypeScript cache # TypeScript cache
*.tsbuildinfo *.tsbuildinfo
# Optional npm cache directory # Optional npm cache directory
.npm .npm
# Optional eslint cache # Optional eslint cache
.eslintcache .eslintcache
# Optional stylelint cache # Optional stylelint cache
.stylelintcache .stylelintcache
# Microbundle cache # Microbundle cache
.rpt2_cache/ .rpt2_cache/
.rts2_cache_cjs/ .rts2_cache_cjs/
.rts2_cache_es/ .rts2_cache_es/
.rts2_cache_umd/ .rts2_cache_umd/
# Optional REPL history # Optional REPL history
.node_repl_history .node_repl_history
# Output of 'npm pack' # Output of 'npm pack'
*.tgz *.tgz
# Yarn Integrity file # Yarn Integrity file
.yarn-integrity .yarn-integrity
# dotenv environment variable files # dotenv environment variable files
.env .env
.env.development.local .env.development.local
.env.test.local .env.test.local
.env.production.local .env.production.local
.env.local .env.local
# parcel-bundler cache (https://parceljs.org/) # parcel-bundler cache (https://parceljs.org/)
.cache .cache
.parcel-cache .parcel-cache
# Next.js build output # Next.js build output
.next .next
out out
# Nuxt.js build / generate output # Nuxt.js build / generate output
.nuxt .nuxt
# dist dist
# Gatsby files # Gatsby files
.cache/ .cache/
# Comment in the public line in if your project uses Gatsby and not Next.js # Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support # https://nextjs.org/blog/next-9-1#public-directory-support
# public # public
# vuepress build output # vuepress build output
.vuepress/dist .vuepress/dist
# vuepress v2.x temp and cache directory # vuepress v2.x temp and cache directory
.temp .temp
# Docusaurus cache and generated files # Docusaurus cache and generated files
.docusaurus .docusaurus
# Serverless directories # Serverless directories
.serverless/ .serverless/
# FuseBox cache # FuseBox cache
.fusebox/ .fusebox/
# DynamoDB Local files # DynamoDB Local files
.dynamodb/ .dynamodb/
# TernJS port file # TernJS port file
.tern-port .tern-port
# Stores VSCode versions used for testing VSCode extensions # Stores VSCode versions used for testing VSCode extensions
.vscode-test .vscode-test
# yarn v2 # yarn v2
.yarn/cache .yarn/cache
.yarn/unplugged .yarn/unplugged
.yarn/build-state.yml .yarn/build-state.yml
.yarn/install-state.gz .yarn/install-state.gz
.pnp.* .pnp.*
### Node Patch ### ### Node Patch ###
# Serverless Webpack directories # Serverless Webpack directories
.webpack/ .webpack/
# Optional stylelint cache # Optional stylelint cache
# SvelteKit build / generate output # SvelteKit build / generate output
.svelte-kit .svelte-kit
### VisualStudioCode ### ### VisualStudioCode ###
.vscode/* .vscode/*
!.vscode/settings.json !.vscode/settings.json
!.vscode/tasks.json !.vscode/tasks.json
!.vscode/launch.json !.vscode/launch.json
!.vscode/extensions.json !.vscode/extensions.json
!.vscode/*.code-snippets !.vscode/*.code-snippets
# Local History for Visual Studio Code # Local History for Visual Studio Code
.history/ .history/
# Built Visual Studio Code Extensions # Built Visual Studio Code Extensions
*.vsix *.vsix
### VisualStudioCode Patch ### ### VisualStudioCode Patch ###
# Ignore all local history of files # Ignore all local history of files
.history .history
.ionide .ionide
# Support for Project snippet scope # Support for Project snippet scope
# End of https://www.toptal.com/developers/gitignore/api/node,visualstudiocode # End of https://www.toptal.com/developers/gitignore/api/node,visualstudiocode
# Support for Project snippet scope # Support for Project snippet scope

13
CHANGELOG.md Normal file
View File

@@ -0,0 +1,13 @@
# Changelog
All notable changes to this project will be documented in this file.
## [0.2.1] - 2024-10-19
### Fixes
- fix: 🚑 some css customizations not showing after 1.22.3 gitea update
## [0.2.0] - 2024-10-19
### Added
- Pinned the project to the Gitea 1.22.3 version.

180
README.md
View File

@@ -1,90 +1,90 @@
<h1 align="center"> <h1 align="center">
<code>lucaslabs</code> <a href="https://gitea.io">Gitea</a> theme <code>lucaslabs</code> <a href="https://gitea.io">Gitea</a> theme
</h1> </h1>
*Theme for `lucaslabs` internal gitea server.* *Theme for `lucaslabs` internal gitea server.*
## `dark` ## `dark`
![dark theme](figs/dark.png) ![dark theme](figs/dark.png)
## `light` ## `light`
![light theme](figs/light.png) ![light theme](figs/light.png)
## `auto` ## `auto`
Switches between `dark` and `light` automatically based on the user's system preference. Switches between `dark` and `light` automatically based on the user's system preference.
## Usage ## Usage
1. Clone this repo 1. Go to the [releases page](https://github.com/lucas-labs/gitea-lugit-theme/releases) and get the latest `gitea-lugit-theme.tar.gz` release file.
2. Place the files in the `dist` folder in your `$GITEA_CUSTOM` directory. 2. Place the `templates` and `public` folder in your `$GITEA_CUSTOM` directory.
3. Append the themes in your `app.ini` file: 3. Append the themes in your `app.ini` file:
```ini ```ini
[ui] [ui]
THEMES=...,dark,light,auto THEMES=...,dark,light,auto
DEFAULT_THEME=dark # optional DEFAULT_THEME=dark # optional
``` ```
> 💡 You can change the names of the themes by changing the name of the theme files in `public/css/theme-{name}.css` and in the `app.ini` file, accordingly. > 💡 You can change the names of the themes by changing the name of the theme files in `public/css/theme-{name}.css` and in the `app.ini` file, accordingly.
4. Restart `gitea`. 4. Restart `gitea`.
> 🗒️ **Note**\ > [!NOTE]
> Works with `gitea` version `v1.20`. > The latest version works with `gitea` version `v1.22.x`.
## Credits ## Credits
- [`catppuccin/gitea`](https://github.com/catppuccin/gitea), these themes are based on them. - [`catppuccin/gitea`](https://github.com/catppuccin/gitea), these themes are based on them.
## Dev ## Development
### build ### build
```bash ```bash
$ npm install $ npm install
$ npm run build $ npm run build
``` ```
### serve ### serve
```bash ```bash
$ npm run serve -- --server path/to/gitea/custom $ npm run serve -- --server path/to/gitea/custom
# e.g. # e.g.
# on linux # on linux
$ npm run serve -- --server ~/gitea/custom $ npm run serve -- --server ~/gitea/custom
# on windows # on windows
$ npm run serve -- -- --server c:/gitea/custom $ npm run serve -- -- --server c:/gitea/custom
``` ```
# Changes in templates # Changes in templates
## `home.tmpl` ## `home.tmpl`
Here we remove everything (default gitea welcome page). We only keep the logo and the header with the login button. Here we remove everything (default gitea welcome page). We only keep the logo and the header with the login button.
## `base/head_navbar.tmpl` ## `base/head_navbar.tmpl`
The only change here is to make the logo smaller. The only change here is to make the logo smaller.
```diff ```diff
- <img height="30" width="30" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.Locale.Tr "logo"}}" aria-hidden="true"> - <img height="30" width="30" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.Locale.Tr "logo"}}" aria-hidden="true">
+ <img height="24" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.Locale.Tr "logo"}}" aria-hidden="true"> + <img height="24" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.Locale.Tr "logo"}}" aria-hidden="true">
``` ```
## `repo/home.tmpl` ## `repo/home.tmpl`
+ adds `<div class="lugit-repo-header-data">...</div>` as a wrapper for the repo header data (description + labels) + adds `<div class="lugit-repo-header-data">...</div>` as a wrapper for the repo header data (description + labels)
+ adds `<div class="lugit-repo-content">` as a wrapper for the repo content (files, commits, branches, etc.) + adds `<div class="lugit-repo-content">` as a wrapper for the repo content (files, commits, branches, etc.)
Later we use css to go from default 1 column layout to 2 column layout more similar to github's design. Later we use css to go from default 1 column layout to 2 column layout more similar to github's design.
```diff ```diff
- <div class="ui container {{if .IsBlame}}fluid padded{{end}}> - <div class="ui container {{if .IsBlame}}fluid padded{{end}}>
+ <div class="ui container {{if .IsBlame}}fluid padded{{end}} {{if and (not .IIsViewFile) (not .IsBlame)}}lugit-repo-list-view{{end}}"> + <div class="ui container {{if .IsBlame}}fluid padded{{end}} {{if and (not .IIsViewFile) (not .IsBlame)}}lugit-repo-list-view{{end}}">
``` ```
Adds the class `lugit-repo-list-view` to the container of the repo content (only when we are not viewing a file or in blame view). This allows us to change the layout of the main repo view, except when viewing a file or in blame view. Adds the class `lugit-repo-list-view` to the container of the repo content (only when we are not viewing a file or in blame view). This allows us to change the layout of the main repo view, except when viewing a file or in blame view.

View File

@@ -1 +0,0 @@
@import "./theme-light.css"(prefers-color-scheme:light);@import "./theme-dark.css"(prefers-color-scheme:dark);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 171 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 151 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 160" height="32"><path d="M32 0v160H0V0Zm48 0v32h48v32H80V32H48v64h80v32H72v32h88V0Z" style="fill:#a6c6f7"/></svg>

Before

Width:  |  Height:  |  Size: 171 B

View File

@@ -1,15 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 160">
<defs>
<style>
.a, .b {
fill: #a6c6f7;
}
.a {
opacity: 0.4;
}
</style>
</defs>
<path class="a" d="M432,48V80H320V48h48V0h32V48ZM48,80H80V0H48Zm96,0h32V32H144ZM0,80H32V0H0ZM224,0V32h48V64H224V32H192V80H304V0ZM352,0H320V32h32Z"/>
<path class="b" d="M352,160H320V80h32Zm48-32V80H368v80h80V128ZM80,80H48v48H80Zm64,0v48H80v32h96V80ZM32,80H0v80H32Zm160,0V96h80v32H216v32h88V80Z"/>
</svg>

Before

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 160" height="32"><path d="M32 0v160H0V0Zm368 128V80.701h32V48h-32V0h-32v48h-48v112h32V80.701h16V160h80v-32ZM48 0v128h32V0Zm96 32v96H80v32h96V32Zm80-32v32h48v32h-48V32h-32v64h80v32h-56v32h88V0Zm128 0h-32v32h32Z" style="fill:#a6c6f7"/></svg>

Before

Width:  |  Height:  |  Size: 296 B

View File

@@ -1,205 +0,0 @@
{{$notificationUnreadCount := 0}}
{{if and .IsSigned .NotificationUnreadCount}}
{{$notificationUnreadCount = call .NotificationUnreadCount}}
{{end}}
<nav id="navbar" aria-label="{{ctx.Locale.Tr "aria.navbar"}}">
<div class="navbar-left ui secondary menu">
<!-- the logo -->
<a class="item" id="navbar-logo" href="{{AppSubUrl}}/" aria-label="{{if .IsSigned}}{{ctx.Locale.Tr "dashboard"}}{{else}}{{ctx.Locale.Tr "home"}}{{end}}">
<img height="24" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.Locale.Tr "logo"}}" aria-hidden="true">
</a>
<!-- mobile right menu, it must be here because in mobile view, each item is a flex column, the first item is a full row column -->
<div class="ui secondary menu item navbar-mobile-right">
{{if .IsSigned}}
<a id="mobile-notifications-icon" class="item gt-w-auto gt-p-3" href="{{AppSubUrl}}/notifications" data-tooltip-content="{{ctx.Locale.Tr "notifications"}}" aria-label="{{ctx.Locale.Tr "notifications"}}">
<div class="gt-relative">
{{svg "octicon-bell"}}
<span class="notification_count{{if not $notificationUnreadCount}} gt-hidden{{end}}">{{$notificationUnreadCount}}</span>
</div>
</a>
{{end}}
<button class="item gt-w-auto ui icon mini button gt-p-3 gt-m-0" id="navbar-expand-toggle">{{svg "octicon-three-bars"}}</button>
</div>
<!-- navbar links non-mobile -->
{{if and .IsSigned .MustChangePassword}}
{{/* No links */}}
{{else if .IsSigned}}
{{if not .UnitIssuesGlobalDisabled}}
<a class="item{{if .PageIsIssues}} active{{end}}" href="{{AppSubUrl}}/issues">{{ctx.Locale.Tr "issues"}}</a>
{{end}}
{{if not .UnitPullsGlobalDisabled}}
<a class="item{{if .PageIsPulls}} active{{end}}" href="{{AppSubUrl}}/pulls">{{ctx.Locale.Tr "pull_requests"}}</a>
{{end}}
{{if not (and .UnitIssuesGlobalDisabled .UnitPullsGlobalDisabled)}}
{{if .ShowMilestonesDashboardPage}}
<a class="item{{if .PageIsMilestonesDashboard}} active{{end}}" href="{{AppSubUrl}}/milestones">{{ctx.Locale.Tr "milestones"}}</a>
{{end}}
{{end}}
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/repos">{{ctx.Locale.Tr "explore"}}</a>
{{else if .IsLandingPageOrganizations}}
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/organizations">{{ctx.Locale.Tr "explore"}}</a>
{{else}}
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/repos">{{ctx.Locale.Tr "explore"}}</a>
{{end}}
{{template "custom/extra_links" .}}
{{if not .IsSigned}}
<a class="item" target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com">{{ctx.Locale.Tr "help"}}</a>
{{end}}
</div>
<!-- the full dropdown menus -->
<div class="navbar-right ui secondary menu">
{{if and .IsSigned .MustChangePassword}}
<div class="ui dropdown jump item" data-tooltip-content="{{ctx.Locale.Tr "user_profile_and_more"}}">
<span class="text gt-df gt-ac">
{{ctx.AvatarUtils.Avatar .SignedUser 24 "gt-mr-2"}}
<span class="mobile-only gt-ml-3">{{.SignedUser.Name}}</span>
<span class="not-mobile">{{svg "octicon-triangle-down"}}</span>
</span>
<div class="menu user-menu">
<div class="ui header">
{{ctx.Locale.Tr "signed_in_as"}} <strong>{{.SignedUser.Name}}</strong>
</div>
<div class="divider"></div>
<a class="item link-action" href data-url="{{AppSubUrl}}/user/logout">
{{svg "octicon-sign-out"}}
{{ctx.Locale.Tr "sign_out"}}
</a>
</div><!-- end content avatar menu -->
</div><!-- end dropdown avatar menu -->
{{else if .IsSigned}}
{{if EnableTimetracking}}
<a class="active-stopwatch-trigger item gt-mx-0{{if not .ActiveStopwatch}} gt-hidden{{end}}" href="{{.ActiveStopwatch.IssueLink}}" title="{{ctx.Locale.Tr "active_stopwatch"}}">
<div class="gt-relative">
{{svg "octicon-stopwatch"}}
<span class="header-stopwatch-dot"></span>
</div>
<span class="mobile-only gt-ml-3">{{ctx.Locale.Tr "active_stopwatch"}}</span>
</a>
<div class="active-stopwatch-popup item tippy-target gt-p-3">
<div class="gt-df gt-ac">
<a class="stopwatch-link gt-df gt-ac" href="{{.ActiveStopwatch.IssueLink}}">
{{svg "octicon-issue-opened" 16 "gt-mr-3"}}
<span class="stopwatch-issue">{{.ActiveStopwatch.RepoSlug}}#{{.ActiveStopwatch.IssueIndex}}</span>
<span class="ui primary label stopwatch-time gt-my-0 gt-mx-4" data-seconds="{{.ActiveStopwatch.Seconds}}">
{{if .ActiveStopwatch}}{{Sec2Time .ActiveStopwatch.Seconds}}{{end}}
</span>
</a>
<form class="stopwatch-commit" method="post" action="{{.ActiveStopwatch.IssueLink}}/times/stopwatch/toggle">
{{.CsrfTokenHtml}}
<button
type="submit"
class="ui button mini compact basic icon"
data-tooltip-content="{{ctx.Locale.Tr "repo.issues.stop_tracking"}}"
>{{svg "octicon-square-fill"}}</button>
</form>
<form class="stopwatch-cancel" method="post" action="{{.ActiveStopwatch.IssueLink}}/times/stopwatch/cancel">
{{.CsrfTokenHtml}}
<button
type="submit"
class="ui button mini compact basic icon"
data-tooltip-content="{{ctx.Locale.Tr "repo.issues.cancel_tracking"}}"
>{{svg "octicon-trash"}}</button>
</form>
</div>
</div>
{{end}}
<a class="item not-mobile gt-mx-0" href="{{AppSubUrl}}/notifications" data-tooltip-content="{{ctx.Locale.Tr "notifications"}}" aria-label="{{ctx.Locale.Tr "notifications"}}">
<div class="gt-relative">
{{svg "octicon-bell"}}
<span class="notification_count{{if not $notificationUnreadCount}} gt-hidden{{end}}">{{$notificationUnreadCount}}</span>
</div>
</a>
<div class="ui dropdown jump item gt-mx-0 gt-pr-3" data-tooltip-content="{{ctx.Locale.Tr "create_new"}}">
<span class="text">
{{svg "octicon-plus"}}
<span class="not-mobile">{{svg "octicon-triangle-down"}}</span>
<span class="mobile-only">{{ctx.Locale.Tr "create_new"}}</span>
</span>
<div class="menu">
<a class="item" href="{{AppSubUrl}}/repo/create">
{{svg "octicon-plus"}} {{ctx.Locale.Tr "new_repo"}}
</a>
{{if not .DisableMigrations}}
<a class="item" href="{{AppSubUrl}}/repo/migrate">
{{svg "octicon-repo-push"}} {{ctx.Locale.Tr "new_migrate"}}
</a>
{{end}}
{{if .SignedUser.CanCreateOrganization}}
<a class="item" href="{{AppSubUrl}}/org/create">
{{svg "octicon-organization"}} {{ctx.Locale.Tr "new_org"}}
</a>
{{end}}
</div><!-- end content create new menu -->
</div><!-- end dropdown menu create new -->
<div class="ui dropdown jump item gt-mx-0 gt-pr-3" data-tooltip-content="{{ctx.Locale.Tr "user_profile_and_more"}}">
<span class="text gt-df gt-ac">
{{ctx.AvatarUtils.Avatar .SignedUser 24 "gt-mr-2"}}
<span class="mobile-only gt-ml-3">{{.SignedUser.Name}}</span>
<span class="not-mobile">{{svg "octicon-triangle-down"}}</span>
</span>
<div class="menu user-menu">
<div class="ui header">
{{ctx.Locale.Tr "signed_in_as"}} <strong>{{.SignedUser.Name}}</strong>
</div>
<div class="divider"></div>
<a class="item" href="{{.SignedUser.HomeLink}}">
{{svg "octicon-person"}}
{{ctx.Locale.Tr "your_profile"}}
</a>
{{if not .DisableStars}}
<a class="item" href="{{.SignedUser.HomeLink}}?tab=stars">
{{svg "octicon-star"}}
{{ctx.Locale.Tr "your_starred"}}
</a>
{{end}}
<a class="item" href="{{AppSubUrl}}/notifications/subscriptions">
{{svg "octicon-bell"}}
{{ctx.Locale.Tr "notification.subscriptions"}}
</a>
<a class="{{if .PageIsUserSettings}}active {{end}}item" href="{{AppSubUrl}}/user/settings">
{{svg "octicon-tools"}}
{{ctx.Locale.Tr "your_settings"}}
</a>
<a class="item" target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com">
{{svg "octicon-question"}}
{{ctx.Locale.Tr "help"}}
</a>
{{if .IsAdmin}}
<div class="divider"></div>
<a class="{{if .PageIsAdmin}}active {{end}}item" href="{{AppSubUrl}}/admin">
{{svg "octicon-server"}}
{{ctx.Locale.Tr "admin_panel"}}
</a>
{{end}}
<div class="divider"></div>
<a class="item link-action" href data-url="{{AppSubUrl}}/user/logout">
{{svg "octicon-sign-out"}}
{{ctx.Locale.Tr "sign_out"}}
</a>
</div><!-- end content avatar menu -->
</div><!-- end dropdown avatar menu -->
{{else}}
{{if .ShowRegistrationButton}}
<a class="item{{if .PageIsSignUp}} active{{end}}" href="{{AppSubUrl}}/user/sign_up">
{{svg "octicon-person"}} {{ctx.Locale.Tr "register"}}
</a>
{{end}}
<a class="item{{if .PageIsSignIn}} active{{end}}" rel="nofollow" href="{{AppSubUrl}}/user/login{{if not .PageIsSignIn}}?redirect_to={{.CurrentURL}}{{end}}">
{{svg "octicon-sign-in"}} {{ctx.Locale.Tr "sign_in"}}
</a>
{{end}}
</div><!-- end full right menu -->
</nav>

View File

@@ -1,9 +0,0 @@
{{template "base/head" .}}
<div role="main" aria-label="{{if .IsSigned}}{{ctx.Locale.Tr "dashboard"}}{{else}}{{ctx.Locale.Tr "home"}}{{end}}" class="page-content home">
<div class="gt-mb-5 gt-px-5">
<div class="center">
<img class="logo" width="220" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.locale.Tr "logo"}}">
</div>
</div>
</div>
{{template "base/footer" .}}

View File

@@ -1,170 +0,0 @@
{{template "base/head" .}}
<div role="main" aria-label="{{.Title}}" class="page-content repository file list {{if .IsBlame}}blame{{end}}">
{{template "repo/header" .}}
<div class="ui container {{if .IsBlame}}fluid padded{{end}} {{if and (not .IsViewFile) (not .IsBlame)}}lugit-repo-list-view{{end}}">
<div class="lugit-repo-header-data">
{{template "base/alert" .}}
{{template "repo/code/recently_pushed_new_branches" .}}
{{if and (not .HideRepoInfo) (not .IsBlame)}}
<div class="ui repo-description gt-word-break">
<div id="repo-desc" class="gt-font-16">
<h5>{{ctx.Locale.Tr "repo.repo_desc"}}</h5>
{{$description := .Repository.DescriptionHTML $.Context}}
{{if $description}}<span class="description">{{$description | RenderCodeBlock}}</span>{{else if .IsRepositoryAdmin}}<span class="no-description text-italic">{{ctx.Locale.Tr "repo.no_desc"}}</span>{{end}}
<a class="link" href="{{.Repository.Website}}">{{.Repository.Website}}</a>
</div>
{{if .RepoSearchEnabled}}
<div class="ui repo-search">
<form class="ui form ignore-dirty" action="{{.RepoLink}}/search" method="get">
<div class="field">
<div class="ui small action input{{if .CodeIndexerUnavailable}} disabled left icon{{end}}"{{if .CodeIndexerUnavailable}} data-tooltip-content="{{ctx.Locale.Tr "repo.search.code_search_unavailable"}}"{{end}}>
<input name="q" value="{{.Keyword}}"{{if .CodeIndexerUnavailable}} disabled{{end}} placeholder="{{ctx.Locale.Tr "repo.search.search_repo"}}">
{{if .CodeIndexerUnavailable}}
<i class="icon">{{svg "octicon-alert"}}</i>
{{end}}
<button class="ui small icon button"{{if .CodeIndexerUnavailable}} disabled{{end}} type="submit">
{{svg "octicon-search"}}
</button>
</div>
</div>
</form>
</div>
{{end}}
</div>
<div class="gt-df gt-ac gt-fw gt-gap-2" id="repo-topics">
{{range .Topics}}<a class="ui repo-topic large label topic gt-m-0" href="{{AppSubUrl}}/explore/repos?q={{.Name}}&topic=1">{{.Name}}</a>{{end}}
{{if and .Permission.IsAdmin (not .Repository.IsArchived)}}<button id="manage_topic" class="btn interact-fg gt-font-12">{{ctx.Locale.Tr "repo.topic.manage_topics"}}</button>{{end}}
</div>
{{end}}
{{if and .Permission.IsAdmin (not .Repository.IsArchived)}}
<div class="ui form gt-hidden gt-df gt-mt-4" id="topic_edit">
<div class="field gt-f1 gt-mr-3">
<div class="ui fluid multiple search selection dropdown" data-text-count-prompt="{{ctx.Locale.Tr "repo.topic.count_prompt"}}" data-text-format-prompt="{{ctx.Locale.Tr "repo.topic.format_prompt"}}">
<input type="hidden" name="topics" value="{{range $i, $v := .Topics}}{{.Name}}{{if Eval $i "+" 1 "<" (len $.Topics)}},{{end}}{{end}}">
{{range .Topics}}
{{/* keey the same layout as Fomantic UI generated labels */}}
<a class="ui label transition visible gt-cursor-default gt-dib" data-value="{{.Name}}">{{.Name}}{{svg "octicon-x" 16 "delete icon"}}</a>
{{end}}
<div class="text"></div>
</div>
</div>
<div>
<button class="ui basic button" id="cancel_topic_edit">{{ctx.Locale.Tr "cancel"}}</button>
<button class="ui primary button" id="save_topic" data-link="{{.RepoLink}}/topics">{{ctx.Locale.Tr "save"}}</button>
</div>
</div>
{{end}}
{{if .Repository.IsArchived}}
<div class="ui warning message gt-text-center">
{{if .Repository.ArchivedUnix.IsZero}}
{{ctx.Locale.Tr "repo.archive.title"}}
{{else}}
{{ctx.Locale.Tr "repo.archive.title_date" (DateTime "long" .Repository.ArchivedUnix) | Safe}}
{{end}}
</div>
{{end}}
</div>
<div class="lugit-repo-content">
{{template "repo/sub_menu" .}}
<div class="repo-button-row">
<div class="gt-df gt-ac gt-fw gt-gap-y-3">
{{template "repo/branch_dropdown" dict "root" . "ContainerClasses" "gt-mr-2"}}
{{if and .CanCompareOrPull .IsViewBranch (not .Repository.IsArchived)}}
{{$cmpBranch := ""}}
{{if ne .Repository.ID .BaseRepo.ID}}
{{$cmpBranch = printf "%s/%s:" (.Repository.OwnerName|PathEscape) (.Repository.Name|PathEscape)}}
{{end}}
{{$cmpBranch = print $cmpBranch (.BranchName|PathEscapeSegments)}}
{{$compareLink := printf "%s/compare/%s...%s" .BaseRepo.Link (.BaseRepo.DefaultBranch|PathEscapeSegments) $cmpBranch}}
<a id="new-pull-request" role="button" class="ui compact basic button" href="{{$compareLink}}"
data-tooltip-content="{{if .PullRequestCtx.Allowed}}{{ctx.Locale.Tr "repo.pulls.compare_changes"}}{{else}}{{ctx.Locale.Tr "action.compare_branch"}}{{end}}">
{{svg "octicon-git-pull-request"}}
</a>
{{end}}
<!-- Show go to file and breadcrumbs if not on home page -->
{{$n := len .TreeNames}}
{{$l := Eval $n "-" 1}}
{{if eq $n 0}}
<a href="{{.Repository.Link}}/find/{{.BranchNameSubURL}}" class="ui compact basic button">{{ctx.Locale.Tr "repo.find_file.go_to_file"}}</a>
{{end}}
{{if and .CanWriteCode .IsViewBranch (not .Repository.IsMirror) (not .Repository.IsArchived) (not .IsViewFile)}}
<button class="ui dropdown basic compact jump button gt-mr-2"{{if not .Repository.CanEnableEditor}} disabled{{end}}>
{{ctx.Locale.Tr "repo.editor.add_file"}}
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
<div class="menu">
<a class="item" href="{{.RepoLink}}/_new/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}">
{{ctx.Locale.Tr "repo.editor.new_file"}}
</a>
{{if .RepositoryUploadEnabled}}
<a class="item" href="{{.RepoLink}}/_upload/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}">
{{ctx.Locale.Tr "repo.editor.upload_file"}}
</a>
{{end}}
<a class="item" href="{{.RepoLink}}/_diffpatch/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}">
{{ctx.Locale.Tr "repo.editor.patch"}}
</a>
</div>
</button>
{{end}}
{{if and (eq $n 0) (.Repository.IsTemplate)}}
<a role="button" class="ui primary compact button" href="{{AppSubUrl}}/repo/create?template_id={{.Repository.ID}}">
{{ctx.Locale.Tr "repo.use_template"}}
</a>
{{end}}
{{if ne $n 0}}
<span class="breadcrumb repo-path gt-ml-2">
<a class="section" href="{{.RepoLink}}/src/{{.BranchNameSubURL}}" title="{{.Repository.Name}}">{{StringUtils.EllipsisString .Repository.Name 30}}</a>
{{- range $i, $v := .TreeNames -}}
<span class="breadcrumb-divider">/</span>
{{- if eq $i $l -}}
<span class="active section" title="{{$v}}">{{StringUtils.EllipsisString $v 30}}</span>
{{- else -}}
{{$p := index $.Paths $i}}<span class="section"><a href="{{$.BranchLink}}/{{PathEscapeSegments $p}}" title="{{$v}}">{{StringUtils.EllipsisString $v 30}}</a></span>
{{- end -}}
{{- end -}}
</span>
{{end}}
</div>
<div class="gt-df gt-ac">
<!-- Only show clone panel in repository home page -->
{{if eq $n 0}}
<div class="ui action tiny input" id="clone-panel">
{{template "repo/clone_buttons" .}}
<button id="more-btn" class="ui basic small compact jump dropdown icon button" data-tooltip-content="{{ctx.Locale.Tr "repo.more_operations"}}">
{{svg "octicon-kebab-horizontal"}}
<div class="menu">
{{if not $.DisableDownloadSourceArchives}}
<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.zip" rel="nofollow">{{svg "octicon-file-zip" 16 "gt-mr-3"}}{{ctx.Locale.Tr "repo.download_zip"}}</a>
<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip" 16 "gt-mr-3"}}{{ctx.Locale.Tr "repo.download_tar"}}</a>
<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.bundle" rel="nofollow">{{svg "octicon-package" 16 "gt-mr-3"}}{{ctx.Locale.Tr "repo.download_bundle"}}</a>
{{if .CitiationExist}}
<a class="item" id="cite-repo-button">{{svg "octicon-cross-reference" 16 "gt-mr-3"}}{{ctx.Locale.Tr "repo.cite_this_repo"}}</a>
{{end}}
{{end}}
<a class="item js-clone-url-vsc" href="vscode://vscode.git/clone?url={{.CloneButtonOriginLink.HTTPS}}">{{svg "gitea-vscode" 16 "gt-mr-3"}}{{ctx.Locale.Tr "repo.clone_in_vsc"}}</a>
</div>
</button>
{{template "repo/clone_script" .}}{{/* the script will update `.js-clone-url` and related elements */}}
</div>
{{template "repo/cite/cite_modal" .}}
{{end}}
{{if and (ne $n 0) (not .IsViewFile) (not .IsBlame)}}
<a class="ui button" href="{{.RepoLink}}/commits/{{.BranchNameSubURL}}/{{.TreePath | PathEscapeSegments}}">
{{svg "octicon-history" 16 "gt-mr-3"}}{{ctx.Locale.Tr "repo.file_history"}}
</a>
{{end}}
</div>
</div>
{{if .IsViewFile}}
{{template "repo/view_file" .}}
{{else if .IsBlame}}
{{template "repo/blame" .}}
{{else}}
{{template "repo/view_list" .}}
{{end}}
</div>
</div>
</div>
{{template "base/footer" .}}

1168
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{ {
"name": "@lucas-labs/lugit-theme", "name": "@lucas-labs/lugit-theme",
"version": "0.1.0", "version": "0.2.2",
"type": "module", "type": "module",
"description": "Custom theme for lucaslabs' internal git server", "description": "Custom theme for lucaslabs' internal git server",
"main": "index.js", "main": "index.js",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,205 +1,214 @@
{{$notificationUnreadCount := 0}} {{$notificationUnreadCount := 0}}
{{if and .IsSigned .NotificationUnreadCount}} {{if and .IsSigned .NotificationUnreadCount}}
{{$notificationUnreadCount = call .NotificationUnreadCount}} {{$notificationUnreadCount = call .NotificationUnreadCount}}
{{end}} {{end}}
<nav id="navbar" aria-label="{{ctx.Locale.Tr "aria.navbar"}}"> <nav id="navbar" aria-label="{{ctx.Locale.Tr "aria.navbar"}}">
<div class="navbar-left ui secondary menu"> <div class="navbar-left">
<!-- the logo --> <!-- the logo -->
<a class="item" id="navbar-logo" href="{{AppSubUrl}}/" aria-label="{{if .IsSigned}}{{ctx.Locale.Tr "dashboard"}}{{else}}{{ctx.Locale.Tr "home"}}{{end}}"> <a class="item" id="navbar-logo" href="{{AppSubUrl}}/" aria-label="{{if .IsSigned}}{{ctx.Locale.Tr "dashboard"}}{{else}}{{ctx.Locale.Tr "home"}}{{end}}">
<img height="24" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.Locale.Tr "logo"}}" aria-hidden="true"> <img height="20" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.Locale.Tr "logo"}}" aria-hidden="true">
</a> </a>
<!-- mobile right menu, it must be here because in mobile view, each item is a flex column, the first item is a full row column --> <!-- mobile right menu, it must be here because in mobile view, each item is a flex column, the first item is a full row column -->
<div class="ui secondary menu item navbar-mobile-right"> <div class="ui secondary menu item navbar-mobile-right only-mobile">
{{if .IsSigned}} {{if and .IsSigned EnableTimetracking .ActiveStopwatch}}
<a id="mobile-notifications-icon" class="item gt-w-auto gt-p-3" href="{{AppSubUrl}}/notifications" data-tooltip-content="{{ctx.Locale.Tr "notifications"}}" aria-label="{{ctx.Locale.Tr "notifications"}}"> <a id="mobile-stopwatch-icon" class="active-stopwatch item tw-mx-0" href="{{.ActiveStopwatch.IssueLink}}" title="{{ctx.Locale.Tr "active_stopwatch"}}" data-seconds="{{.ActiveStopwatch.Seconds}}">
<div class="gt-relative"> <div class="tw-relative">
{{svg "octicon-bell"}} {{svg "octicon-stopwatch"}}
<span class="notification_count{{if not $notificationUnreadCount}} gt-hidden{{end}}">{{$notificationUnreadCount}}</span> <span class="header-stopwatch-dot"></span>
</div> </div>
</a> </a>
{{end}} {{end}}
<button class="item gt-w-auto ui icon mini button gt-p-3 gt-m-0" id="navbar-expand-toggle">{{svg "octicon-three-bars"}}</button> {{if .IsSigned}}
</div> <a id="mobile-notifications-icon" class="item tw-w-auto tw-p-2" href="{{AppSubUrl}}/notifications" data-tooltip-content="{{ctx.Locale.Tr "notifications"}}" aria-label="{{ctx.Locale.Tr "notifications"}}">
<div class="tw-relative">
<!-- navbar links non-mobile --> {{svg "octicon-bell"}}
{{if and .IsSigned .MustChangePassword}} <span class="notification_count{{if not $notificationUnreadCount}} tw-hidden{{end}}">{{$notificationUnreadCount}}</span>
{{/* No links */}} </div>
{{else if .IsSigned}} </a>
{{if not .UnitIssuesGlobalDisabled}} {{end}}
<a class="item{{if .PageIsIssues}} active{{end}}" href="{{AppSubUrl}}/issues">{{ctx.Locale.Tr "issues"}}</a> <button class="item tw-w-auto ui icon mini button tw-p-2 tw-m-0" id="navbar-expand-toggle" aria-label="{{ctx.Locale.Tr "home.nav_menu"}}">{{svg "octicon-three-bars"}}</button>
{{end}} </div>
{{if not .UnitPullsGlobalDisabled}}
<a class="item{{if .PageIsPulls}} active{{end}}" href="{{AppSubUrl}}/pulls">{{ctx.Locale.Tr "pull_requests"}}</a> <!-- navbar links non-mobile -->
{{end}} {{if and .IsSigned .MustChangePassword}}
{{if not (and .UnitIssuesGlobalDisabled .UnitPullsGlobalDisabled)}} {{/* No links */}}
{{if .ShowMilestonesDashboardPage}} {{else if .IsSigned}}
<a class="item{{if .PageIsMilestonesDashboard}} active{{end}}" href="{{AppSubUrl}}/milestones">{{ctx.Locale.Tr "milestones"}}</a> {{if not .UnitIssuesGlobalDisabled}}
{{end}} <a class="item{{if .PageIsIssues}} active{{end}}" href="{{AppSubUrl}}/issues">{{ctx.Locale.Tr "issues"}}</a>
{{end}} {{end}}
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/repos">{{ctx.Locale.Tr "explore"}}</a> {{if not .UnitPullsGlobalDisabled}}
{{else if .IsLandingPageOrganizations}} <a class="item{{if .PageIsPulls}} active{{end}}" href="{{AppSubUrl}}/pulls">{{ctx.Locale.Tr "pull_requests"}}</a>
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/organizations">{{ctx.Locale.Tr "explore"}}</a> {{end}}
{{else}} {{if not (and .UnitIssuesGlobalDisabled .UnitPullsGlobalDisabled)}}
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/repos">{{ctx.Locale.Tr "explore"}}</a> {{if .ShowMilestonesDashboardPage}}
{{end}} <a class="item{{if .PageIsMilestonesDashboard}} active{{end}}" href="{{AppSubUrl}}/milestones">{{ctx.Locale.Tr "milestones"}}</a>
{{end}}
{{template "custom/extra_links" .}} {{end}}
<a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/repos">{{ctx.Locale.Tr "explore"}}</a>
{{if not .IsSigned}} {{else if .IsLandingPageOrganizations}}
<a class="item" target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com">{{ctx.Locale.Tr "help"}}</a> <a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/organizations">{{ctx.Locale.Tr "explore"}}</a>
{{end}} {{else}}
</div> <a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubUrl}}/explore/repos">{{ctx.Locale.Tr "explore"}}</a>
{{end}}
<!-- the full dropdown menus -->
<div class="navbar-right ui secondary menu"> {{template "custom/extra_links" .}}
{{if and .IsSigned .MustChangePassword}}
<div class="ui dropdown jump item" data-tooltip-content="{{ctx.Locale.Tr "user_profile_and_more"}}"> {{if not .IsSigned}}
<span class="text gt-df gt-ac"> <a class="item" target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com">{{ctx.Locale.Tr "help"}}</a>
{{ctx.AvatarUtils.Avatar .SignedUser 24 "gt-mr-2"}} {{end}}
<span class="mobile-only gt-ml-3">{{.SignedUser.Name}}</span> </div>
<span class="not-mobile">{{svg "octicon-triangle-down"}}</span>
</span> <!-- the full dropdown menus -->
<div class="menu user-menu"> <div class="navbar-right">
<div class="ui header"> {{if and .IsSigned .MustChangePassword}}
{{ctx.Locale.Tr "signed_in_as"}} <strong>{{.SignedUser.Name}}</strong> <div class="ui dropdown jump item" data-tooltip-content="{{ctx.Locale.Tr "user_profile_and_more"}}">
</div> <span class="text tw-flex tw-items-center">
{{ctx.AvatarUtils.Avatar .SignedUser 24 "tw-mr-1"}}
<div class="divider"></div> <span class="only-mobile tw-ml-2">{{.SignedUser.Name}}</span>
<a class="item link-action" href data-url="{{AppSubUrl}}/user/logout"> <span class="not-mobile">{{svg "octicon-triangle-down"}}</span>
{{svg "octicon-sign-out"}} </span>
{{ctx.Locale.Tr "sign_out"}} <div class="menu user-menu">
</a> <div class="ui header">
</div><!-- end content avatar menu --> {{ctx.Locale.Tr "signed_in_as"}} <strong>{{.SignedUser.Name}}</strong>
</div><!-- end dropdown avatar menu --> </div>
{{else if .IsSigned}}
{{if EnableTimetracking}} <div class="divider"></div>
<a class="active-stopwatch-trigger item gt-mx-0{{if not .ActiveStopwatch}} gt-hidden{{end}}" href="{{.ActiveStopwatch.IssueLink}}" title="{{ctx.Locale.Tr "active_stopwatch"}}"> <a class="item link-action" href data-url="{{AppSubUrl}}/user/logout">
<div class="gt-relative"> {{svg "octicon-sign-out"}}
{{svg "octicon-stopwatch"}} {{ctx.Locale.Tr "sign_out"}}
<span class="header-stopwatch-dot"></span> </a>
</div> </div><!-- end content avatar menu -->
<span class="mobile-only gt-ml-3">{{ctx.Locale.Tr "active_stopwatch"}}</span> </div><!-- end dropdown avatar menu -->
</a> {{else if .IsSigned}}
<div class="active-stopwatch-popup item tippy-target gt-p-3"> {{if and EnableTimetracking .ActiveStopwatch}}
<div class="gt-df gt-ac"> <a class="item not-mobile active-stopwatch tw-mx-0" href="{{.ActiveStopwatch.IssueLink}}" title="{{ctx.Locale.Tr "active_stopwatch"}}" data-seconds="{{.ActiveStopwatch.Seconds}}">
<a class="stopwatch-link gt-df gt-ac" href="{{.ActiveStopwatch.IssueLink}}"> <div class="tw-relative">
{{svg "octicon-issue-opened" 16 "gt-mr-3"}} {{svg "octicon-stopwatch"}}
<span class="stopwatch-issue">{{.ActiveStopwatch.RepoSlug}}#{{.ActiveStopwatch.IssueIndex}}</span> <span class="header-stopwatch-dot"></span>
<span class="ui primary label stopwatch-time gt-my-0 gt-mx-4" data-seconds="{{.ActiveStopwatch.Seconds}}"> </div>
{{if .ActiveStopwatch}}{{Sec2Time .ActiveStopwatch.Seconds}}{{end}} </a>
</span> {{end}}
</a>
<form class="stopwatch-commit" method="post" action="{{.ActiveStopwatch.IssueLink}}/times/stopwatch/toggle"> <a class="item not-mobile tw-mx-0" href="{{AppSubUrl}}/notifications" data-tooltip-content="{{ctx.Locale.Tr "notifications"}}" aria-label="{{ctx.Locale.Tr "notifications"}}">
{{.CsrfTokenHtml}} <div class="tw-relative">
<button {{svg "octicon-bell"}}
type="submit" <span class="notification_count{{if not $notificationUnreadCount}} tw-hidden{{end}}">{{$notificationUnreadCount}}</span>
class="ui button mini compact basic icon" </div>
data-tooltip-content="{{ctx.Locale.Tr "repo.issues.stop_tracking"}}" </a>
>{{svg "octicon-square-fill"}}</button>
</form> <div class="ui dropdown jump item tw-mx-0 tw-pr-2" data-tooltip-content="{{ctx.Locale.Tr "create_new"}}">
<form class="stopwatch-cancel" method="post" action="{{.ActiveStopwatch.IssueLink}}/times/stopwatch/cancel"> <span class="text">
{{.CsrfTokenHtml}} {{svg "octicon-plus"}}
<button <span class="not-mobile">{{svg "octicon-triangle-down"}}</span>
type="submit" <span class="only-mobile">{{ctx.Locale.Tr "create_new"}}</span>
class="ui button mini compact basic icon" </span>
data-tooltip-content="{{ctx.Locale.Tr "repo.issues.cancel_tracking"}}" <div class="menu">
>{{svg "octicon-trash"}}</button> <a class="item" href="{{AppSubUrl}}/repo/create">
</form> {{svg "octicon-plus"}} {{ctx.Locale.Tr "new_repo"}}
</div> </a>
</div> {{if not .DisableMigrations}}
{{end}} <a class="item" href="{{AppSubUrl}}/repo/migrate">
{{svg "octicon-repo-push"}} {{ctx.Locale.Tr "new_migrate"}}
<a class="item not-mobile gt-mx-0" href="{{AppSubUrl}}/notifications" data-tooltip-content="{{ctx.Locale.Tr "notifications"}}" aria-label="{{ctx.Locale.Tr "notifications"}}"> </a>
<div class="gt-relative"> {{end}}
{{svg "octicon-bell"}} {{if .SignedUser.CanCreateOrganization}}
<span class="notification_count{{if not $notificationUnreadCount}} gt-hidden{{end}}">{{$notificationUnreadCount}}</span> <a class="item" href="{{AppSubUrl}}/org/create">
</div> {{svg "octicon-organization"}} {{ctx.Locale.Tr "new_org"}}
</a> </a>
{{end}}
<div class="ui dropdown jump item gt-mx-0 gt-pr-3" data-tooltip-content="{{ctx.Locale.Tr "create_new"}}"> </div><!-- end content create new menu -->
<span class="text"> </div><!-- end dropdown menu create new -->
{{svg "octicon-plus"}}
<span class="not-mobile">{{svg "octicon-triangle-down"}}</span> <div class="ui dropdown jump item tw-mx-0 tw-pr-2" data-tooltip-content="{{ctx.Locale.Tr "user_profile_and_more"}}">
<span class="mobile-only">{{ctx.Locale.Tr "create_new"}}</span> <span class="text tw-flex tw-items-center">
</span> {{ctx.AvatarUtils.Avatar .SignedUser 24 "tw-mr-1"}}
<div class="menu"> <span class="only-mobile tw-ml-2">{{.SignedUser.Name}}</span>
<a class="item" href="{{AppSubUrl}}/repo/create"> <span class="not-mobile">{{svg "octicon-triangle-down"}}</span>
{{svg "octicon-plus"}} {{ctx.Locale.Tr "new_repo"}} </span>
</a> <div class="menu user-menu">
{{if not .DisableMigrations}} <div class="ui header">
<a class="item" href="{{AppSubUrl}}/repo/migrate"> {{ctx.Locale.Tr "signed_in_as"}} <strong>{{.SignedUser.Name}}</strong>
{{svg "octicon-repo-push"}} {{ctx.Locale.Tr "new_migrate"}} </div>
</a>
{{end}} <div class="divider"></div>
{{if .SignedUser.CanCreateOrganization}} <a class="item" href="{{.SignedUser.HomeLink}}">
<a class="item" href="{{AppSubUrl}}/org/create"> {{svg "octicon-person"}}
{{svg "octicon-organization"}} {{ctx.Locale.Tr "new_org"}} {{ctx.Locale.Tr "your_profile"}}
</a> </a>
{{end}} {{if not .DisableStars}}
</div><!-- end content create new menu --> <a class="item" href="{{.SignedUser.HomeLink}}?tab=stars">
</div><!-- end dropdown menu create new --> {{svg "octicon-star"}}
{{ctx.Locale.Tr "your_starred"}}
<div class="ui dropdown jump item gt-mx-0 gt-pr-3" data-tooltip-content="{{ctx.Locale.Tr "user_profile_and_more"}}"> </a>
<span class="text gt-df gt-ac"> {{end}}
{{ctx.AvatarUtils.Avatar .SignedUser 24 "gt-mr-2"}} <a class="item" href="{{AppSubUrl}}/notifications/subscriptions">
<span class="mobile-only gt-ml-3">{{.SignedUser.Name}}</span> {{svg "octicon-bell"}}
<span class="not-mobile">{{svg "octicon-triangle-down"}}</span> {{ctx.Locale.Tr "notification.subscriptions"}}
</span> </a>
<div class="menu user-menu"> <a class="{{if .PageIsUserSettings}}active {{end}}item" href="{{AppSubUrl}}/user/settings">
<div class="ui header"> {{svg "octicon-tools"}}
{{ctx.Locale.Tr "signed_in_as"}} <strong>{{.SignedUser.Name}}</strong> {{ctx.Locale.Tr "your_settings"}}
</div> </a>
<a class="item" target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com">
<div class="divider"></div> {{svg "octicon-question"}}
<a class="item" href="{{.SignedUser.HomeLink}}"> {{ctx.Locale.Tr "help"}}
{{svg "octicon-person"}} </a>
{{ctx.Locale.Tr "your_profile"}} {{if .IsAdmin}}
</a> <div class="divider"></div>
{{if not .DisableStars}}
<a class="item" href="{{.SignedUser.HomeLink}}?tab=stars"> <a class="{{if .PageIsAdmin}}active {{end}}item" href="{{AppSubUrl}}/admin">
{{svg "octicon-star"}} {{svg "octicon-server"}}
{{ctx.Locale.Tr "your_starred"}} {{ctx.Locale.Tr "admin_panel"}}
</a> </a>
{{end}} {{end}}
<a class="item" href="{{AppSubUrl}}/notifications/subscriptions">
{{svg "octicon-bell"}} <div class="divider"></div>
{{ctx.Locale.Tr "notification.subscriptions"}} <a class="item link-action" href data-url="{{AppSubUrl}}/user/logout">
</a> {{svg "octicon-sign-out"}}
<a class="{{if .PageIsUserSettings}}active {{end}}item" href="{{AppSubUrl}}/user/settings"> {{ctx.Locale.Tr "sign_out"}}
{{svg "octicon-tools"}} </a>
{{ctx.Locale.Tr "your_settings"}} </div><!-- end content avatar menu -->
</a> </div><!-- end dropdown avatar menu -->
<a class="item" target="_blank" rel="noopener noreferrer" href="https://docs.gitea.com"> {{else}}
{{svg "octicon-question"}} {{if .ShowRegistrationButton}}
{{ctx.Locale.Tr "help"}} <a class="item{{if .PageIsSignUp}} active{{end}}" href="{{AppSubUrl}}/user/sign_up">
</a> {{svg "octicon-person"}} {{ctx.Locale.Tr "register"}}
{{if .IsAdmin}} </a>
<div class="divider"></div> {{end}}
<a class="item{{if .PageIsSignIn}} active{{end}}" rel="nofollow" href="{{AppSubUrl}}/user/login{{if not .PageIsSignIn}}?redirect_to={{.CurrentURL}}{{end}}">
<a class="{{if .PageIsAdmin}}active {{end}}item" href="{{AppSubUrl}}/admin"> {{svg "octicon-sign-in"}} {{ctx.Locale.Tr "sign_in"}}
{{svg "octicon-server"}} </a>
{{ctx.Locale.Tr "admin_panel"}} {{end}}
</a> </div><!-- end full right menu -->
{{end}}
{{if and .IsSigned EnableTimetracking .ActiveStopwatch}}
<div class="divider"></div> <div class="active-stopwatch-popup tippy-target">
<a class="item link-action" href data-url="{{AppSubUrl}}/user/logout"> <div class="tw-flex tw-items-center tw-gap-2 tw-p-3">
{{svg "octicon-sign-out"}} <a class="stopwatch-link tw-flex tw-items-center tw-gap-2 muted" href="{{.ActiveStopwatch.IssueLink}}">
{{ctx.Locale.Tr "sign_out"}} {{svg "octicon-issue-opened" 16}}
</a> <span class="stopwatch-issue">{{.ActiveStopwatch.RepoSlug}}#{{.ActiveStopwatch.IssueIndex}}</span>
</div><!-- end content avatar menu --> </a>
</div><!-- end dropdown avatar menu --> <div class="tw-flex tw-gap-1">
{{else}} <form class="stopwatch-commit" method="post" action="{{.ActiveStopwatch.IssueLink}}/times/stopwatch/toggle">
{{if .ShowRegistrationButton}} {{.CsrfTokenHtml}}
<a class="item{{if .PageIsSignUp}} active{{end}}" href="{{AppSubUrl}}/user/sign_up"> <button
{{svg "octicon-person"}} {{ctx.Locale.Tr "register"}} type="submit"
</a> class="ui button mini compact basic icon tw-mr-0"
{{end}} data-tooltip-content="{{ctx.Locale.Tr "repo.issues.stop_tracking"}}"
<a class="item{{if .PageIsSignIn}} active{{end}}" rel="nofollow" href="{{AppSubUrl}}/user/login{{if not .PageIsSignIn}}?redirect_to={{.CurrentURL}}{{end}}"> >{{svg "octicon-square-fill"}}</button>
{{svg "octicon-sign-in"}} {{ctx.Locale.Tr "sign_in"}} </form>
</a> <form class="stopwatch-cancel" method="post" action="{{.ActiveStopwatch.IssueLink}}/times/stopwatch/cancel">
{{end}} {{.CsrfTokenHtml}}
</div><!-- end full right menu --> <button
</nav> type="submit"
class="ui button mini compact basic icon tw-mr-0"
data-tooltip-content="{{ctx.Locale.Tr "repo.issues.cancel_tracking"}}"
>{{svg "octicon-trash"}}</button>
</form>
</div>
</div>
</div>
{{end}}
</nav>

View File

@@ -1,8 +1,8 @@
{{template "base/head" .}} {{template "base/head" .}}
<div role="main" aria-label="{{if .IsSigned}}{{ctx.Locale.Tr "dashboard"}}{{else}}{{ctx.Locale.Tr "home"}}{{end}}" class="page-content home"> <div role="main" aria-label="{{if .IsSigned}}{{ctx.Locale.Tr "dashboard"}}{{else}}{{ctx.Locale.Tr "home"}}{{end}}" class="page-content home">
<div class="gt-mb-5 gt-px-5"> <div class="tw-mb-8 tw-px-8">
<div class="center"> <div class="center">
<img class="logo" width="220" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.locale.Tr "logo"}}"> <img class="logo" width="220" height="220" src="{{AssetUrlPrefix}}/img/logo.svg" alt="{{ctx.Locale.Tr "logo"}}">
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1,52 +1,31 @@
{{template "base/head" .}} {{template "base/head" .}}
<div role="main" aria-label="{{.Title}}" class="page-content repository file list {{if .IsBlame}}blame{{end}}"> <div role="main" aria-label="{{.Title}}" class="page-content repository file list {{if .IsBlame}}blame{{end}}">
{{template "repo/header" .}} {{template "repo/header" .}}
<div class="ui container {{if .IsBlame}}fluid padded{{end}} {{if and (not .IsViewFile) (not .IsBlame)}}lugit-repo-list-view{{end}}"> <div class="ui container {{if .IsBlame}}fluid padded{{end}} {{if and (not .IsViewFile) (not .IsBlame) (not .HideRepoInfo)}}lugit-repo-list-view{{end}}">
<div class="lugit-repo-header-data"> <div class="lugit-repo-header-data">
{{template "base/alert" .}} {{template "base/alert" .}}
{{template "repo/code/recently_pushed_new_branches" .}} {{template "repo/code/recently_pushed_new_branches" .}}
{{if and (not .HideRepoInfo) (not .IsBlame)}} {{if and (not .HideRepoInfo) (not .IsBlame)}}
<div class="ui repo-description gt-word-break"> <div class="repo-description gt-word-break">
<div id="repo-desc" class="gt-font-16"> {{- $description := .Repository.DescriptionHTML ctx -}}
<h5>{{ctx.Locale.Tr "repo.repo_desc"}}</h5> {{if $description}}{{$description | RenderCodeBlock}}{{end}}
{{$description := .Repository.DescriptionHTML $.Context}} {{if .Repository.Website}}<a href="{{.Repository.Website}}">{{.Repository.Website}}</a>{{end}}
{{if $description}}<span class="description">{{$description | RenderCodeBlock}}</span>{{else if .IsRepositoryAdmin}}<span class="no-description text-italic">{{ctx.Locale.Tr "repo.no_desc"}}</span>{{end}}
<a class="link" href="{{.Repository.Website}}">{{.Repository.Website}}</a>
</div>
{{if .RepoSearchEnabled}}
<div class="ui repo-search">
<form class="ui form ignore-dirty" action="{{.RepoLink}}/search" method="get">
<div class="field">
<div class="ui small action input{{if .CodeIndexerUnavailable}} disabled left icon{{end}}"{{if .CodeIndexerUnavailable}} data-tooltip-content="{{ctx.Locale.Tr "repo.search.code_search_unavailable"}}"{{end}}>
<input name="q" value="{{.Keyword}}"{{if .CodeIndexerUnavailable}} disabled{{end}} placeholder="{{ctx.Locale.Tr "repo.search.search_repo"}}">
{{if .CodeIndexerUnavailable}}
<i class="icon">{{svg "octicon-alert"}}</i>
{{end}}
<button class="ui small icon button"{{if .CodeIndexerUnavailable}} disabled{{end}} type="submit">
{{svg "octicon-search"}}
</button>
</div>
</div>
</form>
</div>
{{end}}
</div> </div>
<div class="gt-df gt-ac gt-fw gt-gap-2" id="repo-topics"> <div class="tw-flex tw-items-center tw-flex-wrap tw-gap-2 tw-my-2" id="repo-topics">
{{range .Topics}}<a class="ui repo-topic large label topic gt-m-0" href="{{AppSubUrl}}/explore/repos?q={{.Name}}&topic=1">{{.Name}}</a>{{end}} {{/* it should match the code in issue-home.js */}}
{{if and .Permission.IsAdmin (not .Repository.IsArchived)}}<button id="manage_topic" class="btn interact-fg gt-font-12">{{ctx.Locale.Tr "repo.topic.manage_topics"}}</button>{{end}} {{range .Topics}}<a class="repo-topic ui large label" href="{{AppSubUrl}}/explore/repos?q={{.Name}}&topic=1">{{.Name}}</a>{{end}}
{{if and .Permission.IsAdmin (not .Repository.IsArchived)}}<button id="manage_topic" class="btn interact-fg tw-text-12">{{ctx.Locale.Tr "repo.topic.manage_topics"}}</button>{{end}}
</div> </div>
{{end}} {{end}}
{{if and .Permission.IsAdmin (not .Repository.IsArchived)}} {{if and .Permission.IsAdmin (not .Repository.IsArchived)}}
<div class="ui form gt-hidden gt-df gt-mt-4" id="topic_edit"> <div class="ui form tw-hidden tw-flex tw-gap-2 tw-my-2" id="topic_edit">
<div class="field gt-f1 gt-mr-3"> <div class="ui fluid multiple search selection dropdown tw-flex-wrap tw-flex-1">
<div class="ui fluid multiple search selection dropdown" data-text-count-prompt="{{ctx.Locale.Tr "repo.topic.count_prompt"}}" data-text-format-prompt="{{ctx.Locale.Tr "repo.topic.format_prompt"}}"> <input type="hidden" name="topics" value="{{range $i, $v := .Topics}}{{.Name}}{{if Eval $i "+" 1 "<" (len $.Topics)}},{{end}}{{end}}">
<input type="hidden" name="topics" value="{{range $i, $v := .Topics}}{{.Name}}{{if Eval $i "+" 1 "<" (len $.Topics)}},{{end}}{{end}}"> {{range .Topics}}
{{range .Topics}} {{/* keep the same layout as Fomantic UI generated labels */}}
{{/* keey the same layout as Fomantic UI generated labels */}} <a class="ui label transition visible tw-cursor-default tw-inline-block" data-value="{{.Name}}">{{.Name}}{{svg "octicon-x" 16 "delete icon"}}</a>
<a class="ui label transition visible gt-cursor-default gt-dib" data-value="{{.Name}}">{{.Name}}{{svg "octicon-x" 16 "delete icon"}}</a> {{end}}
{{end}} <div class="text"></div>
<div class="text"></div>
</div>
</div> </div>
<div> <div>
<button class="ui basic button" id="cancel_topic_edit">{{ctx.Locale.Tr "cancel"}}</button> <button class="ui basic button" id="cancel_topic_edit">{{ctx.Locale.Tr "cancel"}}</button>
@@ -55,20 +34,23 @@
</div> </div>
{{end}} {{end}}
{{if .Repository.IsArchived}} {{if .Repository.IsArchived}}
<div class="ui warning message gt-text-center"> <div class="ui warning message tw-text-center">
{{if .Repository.ArchivedUnix.IsZero}} {{if .Repository.ArchivedUnix.IsZero}}
{{ctx.Locale.Tr "repo.archive.title"}} {{ctx.Locale.Tr "repo.archive.title"}}
{{else}} {{else}}
{{ctx.Locale.Tr "repo.archive.title_date" (DateTime "long" .Repository.ArchivedUnix) | Safe}} {{ctx.Locale.Tr "repo.archive.title_date" (DateTime "long" .Repository.ArchivedUnix)}}
{{end}} {{end}}
</div> </div>
{{end}} {{end}}
</div> </div>
<div class="lugit-repo-content"> <div class="lugit-repo-content">
{{template "repo/sub_menu" .}} {{template "repo/sub_menu" .}}
<div class="repo-button-row"> {{$n := len .TreeNames}}
<div class="gt-df gt-ac gt-fw gt-gap-y-3"> {{$l := Eval $n "-" 1}}
{{template "repo/branch_dropdown" dict "root" . "ContainerClasses" "gt-mr-2"}} {{$isHomepage := (eq $n 0)}}
<div class="repo-button-row" data-is-homepage="{{$isHomepage}}">
<div class="repo-button-row-left">
{{template "repo/branch_dropdown" dict "root" . "ContainerClasses" "tw-mr-1"}}
{{if and .CanCompareOrPull .IsViewBranch (not .Repository.IsArchived)}} {{if and .CanCompareOrPull .IsViewBranch (not .Repository.IsArchived)}}
{{$cmpBranch := ""}} {{$cmpBranch := ""}}
{{if ne .Repository.ID .BaseRepo.ID}} {{if ne .Repository.ID .BaseRepo.ID}}
@@ -82,14 +64,12 @@
</a> </a>
{{end}} {{end}}
<!-- Show go to file and breadcrumbs if not on home page --> <!-- Show go to file and breadcrumbs if not on home page -->
{{$n := len .TreeNames}} {{if $isHomepage}}
{{$l := Eval $n "-" 1}}
{{if eq $n 0}}
<a href="{{.Repository.Link}}/find/{{.BranchNameSubURL}}" class="ui compact basic button">{{ctx.Locale.Tr "repo.find_file.go_to_file"}}</a> <a href="{{.Repository.Link}}/find/{{.BranchNameSubURL}}" class="ui compact basic button">{{ctx.Locale.Tr "repo.find_file.go_to_file"}}</a>
{{end}} {{end}}
{{if and .CanWriteCode .IsViewBranch (not .Repository.IsMirror) (not .Repository.IsArchived) (not .IsViewFile)}} {{if and .CanWriteCode .IsViewBranch (not .Repository.IsMirror) (not .Repository.IsArchived) (not .IsViewFile)}}
<button class="ui dropdown basic compact jump button gt-mr-2"{{if not .Repository.CanEnableEditor}} disabled{{end}}> <button class="ui dropdown basic compact jump button"{{if not .Repository.CanEnableEditor}} disabled{{end}}>
{{ctx.Locale.Tr "repo.editor.add_file"}} {{ctx.Locale.Tr "repo.editor.add_file"}}
{{svg "octicon-triangle-down" 14 "dropdown icon"}} {{svg "octicon-triangle-down" 14 "dropdown icon"}}
<div class="menu"> <div class="menu">
@@ -108,51 +88,62 @@
</button> </button>
{{end}} {{end}}
{{if and (eq $n 0) (.Repository.IsTemplate)}} {{if and $isHomepage (.Repository.IsTemplate)}}
<a role="button" class="ui primary compact button" href="{{AppSubUrl}}/repo/create?template_id={{.Repository.ID}}"> <a role="button" class="ui primary compact button" href="{{AppSubUrl}}/repo/create?template_id={{.Repository.ID}}">
{{ctx.Locale.Tr "repo.use_template"}} {{ctx.Locale.Tr "repo.use_template"}}
</a> </a>
{{end}} {{end}}
{{if ne $n 0}} {{if $isHomepage}}
<span class="breadcrumb repo-path gt-ml-2"> {{/* only show the "code search" on the repo home page, it only does global search,
so do not show it when viewing file or directory to avoid misleading users (it doesn't search in a directory) */}}
<form class="ignore-dirty tw-flex tw-flex-1" action="{{.RepoLink}}/search" method="get">
<div class="ui small action input tw-flex-1">
<input name="q" size="10" placeholder="{{ctx.Locale.Tr "search.code_kind"}}">
{{template "shared/search/button"}}
</div>
</form>
{{else}}
<span class="breadcrumb repo-path tw-ml-1">
<a class="section" href="{{.RepoLink}}/src/{{.BranchNameSubURL}}" title="{{.Repository.Name}}">{{StringUtils.EllipsisString .Repository.Name 30}}</a> <a class="section" href="{{.RepoLink}}/src/{{.BranchNameSubURL}}" title="{{.Repository.Name}}">{{StringUtils.EllipsisString .Repository.Name 30}}</a>
{{- range $i, $v := .TreeNames -}} {{- range $i, $v := .TreeNames -}}
<span class="breadcrumb-divider">/</span> <span class="breadcrumb-divider">/</span>
{{- if eq $i $l -}} {{- if eq $i $l -}}
<span class="active section" title="{{$v}}">{{StringUtils.EllipsisString $v 30}}</span> <span class="active section" title="{{$v}}">{{$v}}</span>
{{- else -}} {{- else -}}
{{$p := index $.Paths $i}}<span class="section"><a href="{{$.BranchLink}}/{{PathEscapeSegments $p}}" title="{{$v}}">{{StringUtils.EllipsisString $v 30}}</a></span> {{$p := index $.Paths $i}}<span class="section"><a href="{{$.BranchLink}}/{{PathEscapeSegments $p}}" title="{{$v}}">{{$v}}</a></span>
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
</span> </span>
{{end}} {{end}}
</div> </div>
<div class="gt-df gt-ac"> <div class="repo-button-row-right">
<!-- Only show clone panel in repository home page --> <!-- Only show clone panel in repository home page -->
{{if eq $n 0}} {{if $isHomepage}}
<div class="ui action tiny input" id="clone-panel"> <div class="clone-panel ui action tiny input">
{{template "repo/clone_buttons" .}} {{template "repo/clone_buttons" .}}
<button id="more-btn" class="ui basic small compact jump dropdown icon button" data-tooltip-content="{{ctx.Locale.Tr "repo.more_operations"}}"> <button class="ui small jump dropdown icon button" data-tooltip-content="{{ctx.Locale.Tr "repo.more_operations"}}">
{{svg "octicon-kebab-horizontal"}} {{svg "octicon-kebab-horizontal"}}
<div class="menu"> <div class="menu">
{{if not $.DisableDownloadSourceArchives}} {{if not $.DisableDownloadSourceArchives}}
<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.zip" rel="nofollow">{{svg "octicon-file-zip" 16 "gt-mr-3"}}{{ctx.Locale.Tr "repo.download_zip"}}</a> <a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.zip" rel="nofollow">{{svg "octicon-file-zip" 16 "tw-mr-2"}}{{ctx.Locale.Tr "repo.download_zip"}}</a>
<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip" 16 "gt-mr-3"}}{{ctx.Locale.Tr "repo.download_tar"}}</a> <a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip" 16 "tw-mr-2"}}{{ctx.Locale.Tr "repo.download_tar"}}</a>
<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.bundle" rel="nofollow">{{svg "octicon-package" 16 "gt-mr-3"}}{{ctx.Locale.Tr "repo.download_bundle"}}</a> <a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.bundle" rel="nofollow">{{svg "octicon-package" 16 "tw-mr-2"}}{{ctx.Locale.Tr "repo.download_bundle"}}</a>
{{if .CitiationExist}} {{end}}
<a class="item" id="cite-repo-button">{{svg "octicon-cross-reference" 16 "gt-mr-3"}}{{ctx.Locale.Tr "repo.cite_this_repo"}}</a> {{if .CitiationExist}}
{{end}} <a class="item" id="cite-repo-button">{{svg "octicon-cross-reference" 16 "tw-mr-2"}}{{ctx.Locale.Tr "repo.cite_this_repo"}}</a>
{{end}}
{{range .OpenWithEditorApps}}
<a class="item js-clone-url-editor" data-href-template="{{.OpenURL}}">{{.IconHTML}}{{ctx.Locale.Tr "repo.open_with_editor" .DisplayName}}</a>
{{end}} {{end}}
<a class="item js-clone-url-vsc" href="vscode://vscode.git/clone?url={{.CloneButtonOriginLink.HTTPS}}">{{svg "gitea-vscode" 16 "gt-mr-3"}}{{ctx.Locale.Tr "repo.clone_in_vsc"}}</a>
</div> </div>
</button> </button>
{{template "repo/clone_script" .}}{{/* the script will update `.js-clone-url` and related elements */}} {{template "repo/clone_script" .}}{{/* the script will update `.js-clone-url` and related elements */}}
</div> </div>
{{template "repo/cite/cite_modal" .}} {{template "repo/cite/cite_modal" .}}
{{end}} {{end}}
{{if and (ne $n 0) (not .IsViewFile) (not .IsBlame)}} {{if and (not $isHomepage) (not .IsViewFile) (not .IsBlame)}}{{/* IsViewDirectory (not home), TODO: split the templates, avoid using "if" tricks */}}
<a class="ui button" href="{{.RepoLink}}/commits/{{.BranchNameSubURL}}/{{.TreePath | PathEscapeSegments}}"> <a class="ui button" href="{{.RepoLink}}/commits/{{.BranchNameSubURL}}/{{.TreePath | PathEscapeSegments}}">
{{svg "octicon-history" 16 "gt-mr-3"}}{{ctx.Locale.Tr "repo.file_history"}} {{svg "octicon-history" 16 "tw-mr-2"}}{{ctx.Locale.Tr "repo.file_history"}}
</a> </a>
{{end}} {{end}}
</div> </div>
@@ -161,9 +152,10 @@
{{template "repo/view_file" .}} {{template "repo/view_file" .}}
{{else if .IsBlame}} {{else if .IsBlame}}
{{template "repo/blame" .}} {{template "repo/blame" .}}
{{else}} {{else}}{{/* IsViewDirectory */}}
{{template "repo/view_list" .}} {{template "repo/view_list" .}}
{{end}} {{end}}
</div> </div>
</div> </div>
</div> </div>

View File

@@ -1,82 +1,83 @@
@use '@lucas-labs/lui-micro' as lui; @use '@lucas-labs/lui-micro' as lui;
@use './utils/color-utils' as c; @use './utils/color-utils' as c;
@use './theme' as theme; @use './theme' as theme;
$is-dark: true; $is-dark: true;
$brand: #a6c6f7; $brand: #a6c6f7;
$colors: ( $colors: (
theme: ( theme: (
'rosewater': c.variants(#f5e0dc, $is-dark), 'rosewater': c.variants(#f5e0dc, $is-dark),
'flamingo': c.variants(#f2cdcd, $is-dark), 'flamingo': c.variants(#f2cdcd, $is-dark),
'pink': c.variants(#f5c2e7, $is-dark), 'pink': c.variants(#f5c2e7, $is-dark),
'mauve': c.variants($brand, $is-dark), 'mauve': c.variants(#9b6bf5, $is-dark),
'red': c.variants(#f38ba8, $is-dark), 'red': c.variants(#f38ba8, $is-dark),
'maroon': c.variants(#eba0ac, $is-dark), 'maroon': c.variants(#eba0ac, $is-dark),
'peach': c.variants(#fab387, $is-dark), 'peach': c.variants(#fab387, $is-dark),
'yellow': c.variants(#f9e2af, $is-dark), 'yellow': c.variants(#f9e2af, $is-dark),
'green': c.variants($brand, $is-dark), 'green': c.variants($brand, $is-dark),
'dark-green': c.variants(#00E676, $is-dark), 'dark-green': c.variants(#00E676, $is-dark),
'teal': c.variants(#94e2d5, $is-dark), 'teal': c.variants(#94e2d5, $is-dark),
'sky': c.variants(#89dceb, $is-dark), 'sky': c.variants(#89dceb, $is-dark),
'sapphire': c.variants(#74c7ec, $is-dark), 'sapphire': c.variants(#74c7ec, $is-dark),
'blue': c.variants(#89b4fa, $is-dark), 'blue': c.variants(#89b4fa, $is-dark),
'lavender': c.variants(#b4befe, $is-dark), 'lavender': c.variants(#b4befe, $is-dark),
'black': c.variants(#181825, $is-dark), 'black': c.variants(#181825, $is-dark),
'white': c.variants(#e6edf3, $is-dark), 'white': c.variants(#e6edf3, $is-dark),
), ),
text: #e6edf3, text: #e6edf3,
primary: c.variants($brand, $is-dark), primary: c.variants($brand, $is-dark),
secondary: c.variants(#5d5f7a, $is-dark), secondary: c.variants(#5d5f7a, $is-dark),
elevation: ( elevation: (
'1': #000000, // crust '1': #000000, // crust
'2': #040407, // mantle '2': #040407, // mantle
'3': #07070f, // base '3': #07070f, // base
'4': #161720, // surface0 '4': #161720, // surface0
'5': #1a1a25, // surface1 '5': #1a1a25, // surface1
'6': #222330, // surface2 '6': #222330, // surface2
'7': #393c4d, // overlay0 '7': #393c4d, // overlay0
'8': #515569, // overlay1 '8': #515569, // overlay1
'9': #6b7188, // overlay2 '9': #6b7188, // overlay2
'10': #868ca5, // subtext0 '10': #868ca5, // subtext0
'11': #9aa2c2, // subtext1 '11': #9aa2c2, // subtext1
'12': #b6c0e0, // '12': #b6c0e0, //
) )
); );
// init lui-micro, css-vars only (no reboot, no basic) // init lui-micro, css-vars only (no reboot, no basic)
@include lui.init( @include lui.init(
$theme: ( $theme: (
colors: $colors, colors: $colors,
variables: ( variables: (
'base-font-size': 14px, 'small-font-size': 12px,
'font-family': '"Outfit", Inter, Roboto, sans-serif', 'base-font-size': 14px,
'code-font-family': '"Source Code Pro", "Roboto Mono", Consolas, monospace', 'font-family': '"Outfit", Inter, Roboto, "Segoe UI", sans-serif',
'measure': ( 'code-font-family': '"Source Code Pro", "Roboto Mono", Consolas, monospace',
'.25x': 4px, 'measure': (
'.5x': 8px, '.25x': 4px,
'1x': 16px, '.5x': 8px,
'1.25x': 20px, '1x': 16px,
'1.5x': 24px, '1.25x': 20px,
'2x': 32px, '1.5x': 24px,
'3x': 48px, '2x': 32px,
'4x': 64px, '3x': 48px,
), '4x': 64px,
'repo-home': ( ),
'sidebar-width': 296px, 'repo-home': (
) 'sidebar-width': 296px,
), )
), ),
),
$options: (
reboot: false, $options: (
basic: false, reboot: false,
fg-var-name: 'text', basic: false,
bg-var-name: 'elevation/1', fg-var-name: 'text',
), bg-var-name: 'elevation/1',
); ),
);
@include theme.make-theme(
$is-dark: $is-dark, @include theme.make-theme(
$is-dark: $is-dark,
); );

View File

@@ -1,82 +1,83 @@
@use '@lucas-labs/lui-micro' as lui; @use '@lucas-labs/lui-micro' as lui;
@use './utils/color-utils' as c; @use './utils/color-utils' as c;
@use './theme' as theme; @use './theme' as theme;
$is-dark: true; $is-dark: true;
$brand: #6296e2; $brand: #6296e2;
$colors: ( $colors: (
theme: ( theme: (
'rosewater': c.variants(#dc8a78, $is-dark), 'rosewater': c.variants(#dc8a78, $is-dark),
'flamingo': c.variants(#dd7878, $is-dark), 'flamingo': c.variants(#dd7878, $is-dark),
'pink': c.variants(#ea76cb, $is-dark), 'pink': c.variants(#ea76cb, $is-dark),
'mauve': c.variants($brand, $is-dark), 'mauve': c.variants($brand, $is-dark),
'red': c.variants(#d20f39, $is-dark), 'red': c.variants(#d20f39, $is-dark),
'maroon': c.variants(#e64553, $is-dark), 'maroon': c.variants(#e64553, $is-dark),
'peach': c.variants(#fe640b, $is-dark), 'peach': c.variants(#fe640b, $is-dark),
'yellow': c.variants(#df8e1d, $is-dark), 'yellow': c.variants(#df8e1d, $is-dark),
'green': c.variants($brand, $is-dark), 'green': c.variants($brand, $is-dark),
'dark-green': c.variants(#11752d, $is-dark), 'dark-green': c.variants(#11752d, $is-dark),
'teal': c.variants(#179299, $is-dark), 'teal': c.variants(#179299, $is-dark),
'sky': c.variants(#04a5e5, $is-dark), 'sky': c.variants(#04a5e5, $is-dark),
'sapphire': c.variants(#209fb5, $is-dark), 'sapphire': c.variants(#209fb5, $is-dark),
'blue': c.variants(#1e66f5, $is-dark), 'blue': c.variants(#1e66f5, $is-dark),
'lavender': c.variants(#7287fd, $is-dark), 'lavender': c.variants(#7287fd, $is-dark),
'black': c.variants(#181825, $is-dark), 'black': c.variants(#181825, $is-dark),
'white': c.variants(#e6edf3, $is-dark), 'white': c.variants(#e6edf3, $is-dark),
), ),
text: #4c4f69, text: #4c4f69,
primary: c.variants($brand, $is-dark), primary: c.variants($brand, $is-dark),
secondary: c.variants(#5d5f7a, $is-dark), secondary: c.variants(#5d5f7a, $is-dark),
elevation: ( elevation: (
'1': #dce0e8, // crust '1': #dce0e8, // crust
'2': #e6e9ef, // mantle '2': #e6e9ef, // mantle
'3': #eff1f5, // base '3': #eff1f5, // base
'4': #ccd0da, // surface0 '4': #ccd0da, // surface0
'5': #bcc0cc, // surface1 '5': #bcc0cc, // surface1
'6': #acb0be, // surface2 '6': #acb0be, // surface2
'7': #9ca0b0, // overlay0 '7': #9ca0b0, // overlay0
'8': #8c8fa1, // overlay1 '8': #8c8fa1, // overlay1
'9': #7c7f93, // overlay2 '9': #7c7f93, // overlay2
'10': #6c6f85, // subtext0 '10': #6c6f85, // subtext0
'11': #5c5f77, // subtext1 '11': #5c5f77, // subtext1
'12': #4c4f69, // '12': #4c4f69, //
) )
); );
// init lui-micro, css-vars only (no reboot, no basic) // init lui-micro, css-vars only (no reboot, no basic)
@include lui.init( @include lui.init(
$theme: ( $theme: (
colors: $colors, colors: $colors,
variables: ( variables: (
'base-font-size': 14px, 'small-font-size': 12px,
'font-family': '"Outfit", Inter, Roboto, sans-serif', 'base-font-size': 14px,
'code-font-family': '"Source Code Pro", "Roboto Mono", Consolas, monospace', 'font-family': '"Outfit", Inter, Roboto, "Segoe UI", sans-serif',
'measure': ( 'code-font-family': '"Source Code Pro", "Roboto Mono", Consolas, monospace',
'.25x': 4px, 'measure': (
'.5x': 8px, '.25x': 4px,
'1x': 16px, '.5x': 8px,
'1.25x': 20px, '1x': 16px,
'1.5x': 24px, '1.25x': 20px,
'2x': 32px, '1.5x': 24px,
'3x': 48px, '2x': 32px,
'4x': 64px, '3x': 48px,
), '4x': 64px,
'repo-home': ( ),
'sidebar-width': 296px, 'repo-home': (
) 'sidebar-width': 296px,
), )
), ),
),
$options: (
reboot: false, $options: (
basic: false, reboot: false,
fg-var-name: 'text', basic: false,
bg-var-name: 'elevation/1', fg-var-name: 'text',
), bg-var-name: 'elevation/1',
); ),
);
@include theme.make-theme(
$is-dark: $is-dark, @include theme.make-theme(
$is-dark: $is-dark,
); );

View File

@@ -58,6 +58,9 @@
--color-primary-alpha-80: rgba(#{color.get('primary/base', 'rgb')}, 0.8); --color-primary-alpha-80: rgba(#{color.get('primary/base', 'rgb')}, 0.8);
--color-primary-alpha-90: rgba(#{color.get('primary/base', 'rgb')}, 0.9); --color-primary-alpha-90: rgba(#{color.get('primary/base', 'rgb')}, 0.9);
--color-primary-hover: #{color.get('primary/light/3%')};
--color-primary-active: #{color.get('primary/light/6%')};
--color-secondary: #{color.get('elevation/5')}; --color-secondary: #{color.get('elevation/5')};
--color-secondary-dark-1: #{color.get('secondary/light/3%')}; --color-secondary-dark-1: #{color.get('secondary/light/3%')};
@@ -188,6 +191,7 @@
--color-orange-badge-hover-bg: #{color.get('theme/peach/light/6%')}; --color-orange-badge-hover-bg: #{color.get('theme/peach/light/6%')};
--color-git: #{color.get('theme/peach/base')}; --color-git: #{color.get('theme/peach/base')};
--color-label-bg: #{color.get('primary/base')}; --color-label-bg: #{color.get('primary/base')};
--color-label-hover-bg: #{color.get('primary/light/6%')};
/* target-based colors */ /* target-based colors */
--color-body: #{$lvl1}; --color-body: #{$lvl1};
@@ -230,13 +234,17 @@
--color-secondary-bg: #{color.get('elevation/4')}; --color-secondary-bg: #{color.get('elevation/4')};
--color-text-focus: #{color.get('text')}; --color-text-focus: #{color.get('text')};
--color-expand-button: #{color.get('elevation/6')}; --color-expand-button: #{color.get('elevation/6')};
--color-placeholder-text: #{color.get('elevation/6')}; --color-placeholder-text: #{color.get('elevation/9')};
--color-editor-line-highlight: var(--color-primary-light-5); --color-editor-line-highlight: var(--color-primary-light-5);
--color-project-board-bg: #{color.get('elevation/2')}; --color-project-board-bg: #{color.get('elevation/2')};
--color-caret: var(--color-text); --color-caret: var(--color-text);
--color-reaction-bg: rgba(#{color.get('text', 'rgb')}, 0.07); --color-reaction-bg: rgba(#{color.get('text', 'rgb')}, 0.07);
--color-reaction-active-bg: var(--color-primary-alpha-40); --color-reaction-active-bg: var(--color-primary-alpha-40);
--color-tooltip-text: #{color.get('primary/base')};
--color-tooltip-bg: #{color.get('primary/base', 'contrast')};
--color-nav-bg: #{$lvl2}; --color-nav-bg: #{$lvl2};
--color-secondary-nav-bg: #{$lvl2};
--color-nav-text: #{color.get('text')};
--color-nav-hover-bg: #{color.get('elevation/6')}; --color-nav-hover-bg: #{color.get('elevation/6')};
--color-label-active-bg: #{color.get('elevation/6')}; --color-label-active-bg: #{color.get('elevation/6')};
--color-label-text: #{color.get('primary/base', 'contrast')}; --color-label-text: #{color.get('primary/base', 'contrast')};
@@ -270,6 +278,15 @@
filter: invert(100%) hue-rotate(180deg); filter: invert(100%) hue-rotate(180deg);
} }
} }
@media (prefers-color-scheme: dark) {
input:-webkit-autofill, input:-webkit-autofill:focus, input:-webkit-autofill:hover, input:-webkit-autofill:active, .ui.form .field.field input:-webkit-autofill, .ui.form .field.field input:-webkit-autofill:focus, .ui.form .field.field input:-webkit-autofill:hover, .ui.form .field.field input:-webkit-autofill:active {
-webkit-background-clip: text;
-webkit-text-fill-color: var(--color-secondary);
box-shadow: 0 0 0 100px var(--color-primary-light-3) inset !important;
border-color: var(--color-primary-light-3) !important;
}
}
.ui.ui.ui.button:not(.inverted, .basic), .ui.ui.ui.button:not(.inverted, .basic),
.ui.ui.ui.label:not(.inverted, .basic) { .ui.ui.ui.label:not(.inverted, .basic) {
@@ -344,15 +361,19 @@
} }
} }
.label.isSigned.isVerified { .label.isSigned {
margin: 0px .25em !important; margin: 0px .25em !important;
padding: 0; padding: 0 !important;
display: inline-flex; display: inline-flex !important;
gap: 0px; gap: 0px !important;
border-radius: 16px; border-radius: 16px !important;
--color-light-border: rgba(#{color.get('theme/dark-green/base', 'rgb')}, 1) !important;
--color-label-bg: none !important;
--color-text: rgba(#{color.get('theme/dark-green/base', 'rgb')}, 1) !important;
--color-green-badge-bg: none !important; --color-green-badge-bg: none !important;
--color-green-badge-hover-bg: rgba(#{color.get('theme/dark-green/base', 'rgb')}, 0.05) !important; --color-green-badge-hover-bg: rgba(#{color.get('theme/dark-green/base', 'rgb')}, 0.05) !important;
--color-label-hover-bg: rgba(#{color.get('theme/dark-green/base', 'rgb')}, 0.05) !important;
--color-label-text: rgba(#{color.get('theme/dark-green/base', 'rgb')}, 1) !important; --color-label-text: rgba(#{color.get('theme/dark-green/base', 'rgb')}, 1) !important;
--color-green-badge: rgba(#{color.get('theme/dark-green/base', 'rgb')}, 1) !important; --color-green-badge: rgba(#{color.get('theme/dark-green/base', 'rgb')}, 1) !important;
@@ -361,21 +382,44 @@
} }
.ui.detail.icon.button { .ui.detail.icon.button {
opacity: 1; opacity: 1 !important;
padding: 4px 12px 4px 6px !important; padding: 4px 8px 4px 6px !important;
margin: 0 !important; margin: 0 !important;
background: none !important; background: none !important;
border-color: rgba(#{color.get('theme/dark-green/base', 'rgb')}, 1) !important; border-color: rgba(#{color.get('theme/dark-green/base', 'rgb')}, 1) !important;
} }
&.isVerified {
.ui.detail.icon.button {
padding: 4px 12px 4px 6px !important;
}
}
} }
#commits-table { #commits-table {
--color-light: transparent !important; --color-light: transparent !important;
} }
.flex-list {
.flex-item {
.flex-item-main {
gap: var.get('measure/.25x');
.flex-item-header {
.flex-item-title {
gap: var.get('measure/.5x');
}
}
.flex-item-body:not(:last-child) {
margin-bottom: var.get('measure/1x');
}
}
}
}
@include chroma.make-chroma-styles; @include chroma.make-chroma-styles;
@include codemirror.make-code-mirror-styles; @include codemirror.make-code-mirror-styles;
@include monaco.make-monaco-styles($is-dark: true); @include monaco.make-monaco-styles($is-dark: true);
@include custom.apply-custom-styles; @include custom.apply-custom-styles;
} }

View File

@@ -0,0 +1,16 @@
@mixin apply-styles {
.issue-content {
img {
max-width: 100%;
}
}
.issue-content, .issue-list {
.labels-list {
.label {
}
}
}
}

View File

@@ -1,19 +1,19 @@
@use '@lucas-labs/lui-micro/var' as var; @use '@lucas-labs/lui-micro/var' as var;
@use '@lucas-labs/lui-micro/color' as color; @use '@lucas-labs/lui-micro/color' as color;
@mixin apply-styles { @mixin apply-styles {
#project-board { #project-board {
.project-column-header { .project-column-header {
.project-column-title { .project-column-title {
.circular.label { .circular.label {
display: flex; display: flex;
padding: 0 !important; padding: 0 !important;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
line-height: 16px; line-height: 16px;
padding: 0 var.get('measure/.25x') !important; padding: 0 var.get('measure/.25x') !important;
} }
} }
} }
} }
} }

View File

@@ -2,7 +2,7 @@
@use '@lucas-labs/lui-micro/color' as color; @use '@lucas-labs/lui-micro/color' as color;
@mixin apply-styles { @mixin apply-styles {
.header-wrapper { .secondary-nav {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
margin-bottom: var.get('measure/1x'); margin-bottom: var.get('measure/1x');
@@ -21,40 +21,34 @@
.ui.tabs.divider { .ui.tabs.divider {
margin-bottom: 0; margin-bottom: 0;
} }
.ui.tabular.menu.navbar { overflow-menu {
.item { .item {
--item-margin-bottom: #{var.get('measure/1x')}; --item-margin-bottom: #{var.get('measure/.5x')} !important;
margin: var(--item-margin-bottom) var.get('measure/.5x'); margin: 0 var.get('measure/.5x') var(--item-margin-bottom) !important;
border-radius: var.get('measure/.25x'); border-radius: var.get('measure/.25x') !important;
padding: var.get('measure/.5x') var.get('measure/.5x'); padding: var.get('measure/.5x') var.get('measure/.5x') !important;
color: var(--color-text); color: var(--color-text) !important;
border: none; border: none !important;
position: relative; // Make the parent element positioned
svg { svg {
color: var(--color-text-light-3); color: var(--color-text-light-3) !important;
margin-right: var.get('measure/.5x'); margin-right: var.get('measure/.5x') !important;
}
&:hover {
background-color: color.get('elevation/4') !important;
} }
&.active { &.active {
background-color: transparent; background-color: transparent !important;
color: var(--color-text); color: var(--color-text) !important;
border-radius: var.get('measure/.25x') !important; border-radius: 0 !important;
font-weight: normal; // font-weight: normal !important;
// border-bottom: 4px solid color.get('primary/base');; border-bottom: calc(var(--item-margin-bottom) - 1px) solid var(--color-secondary-nav-bg) !important;
margin-bottom: 1px !important;
&::after { box-shadow: 0px 2px 0px 0px color.get('primary/base') !important;
background: color.get('primary/base');
border-radius: 6px;
bottom: calc(0px - var(--item-margin-bottom));
content: "";
height: 2px;
position: absolute;
right: 50%;
transform: translate(50%, -50%);
width: 100%;
z-index: 1;
}
} }
.small.label { .small.label {
@@ -69,11 +63,7 @@
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
&:hover {
background-color: color.get('elevation/4');
}
} }
} }
} }
} }

View File

@@ -3,6 +3,7 @@
@use './project'; @use './project';
@use './home'; @use './home';
@use './markup'; @use './markup';
@use './issue-content';
@mixin apply-custom-styles { @mixin apply-custom-styles {
@include repo-header.apply-styles(); @include repo-header.apply-styles();
@@ -10,4 +11,5 @@
@include project.apply-styles(); @include project.apply-styles();
@include home.apply-styles(); @include home.apply-styles();
@include markup.apply-styles(); @include markup.apply-styles();
@include issue-content.apply-styles();
} }

View File

@@ -1,193 +1,207 @@
@use '@lucas-labs/lui-micro/var' as var; @use '@lucas-labs/lui-micro/var' as var;
@use '@lucas-labs/lui-micro/color' as color; @use '@lucas-labs/lui-micro/color' as color;
@mixin apply-styles { @mixin apply-styles {
#repo-topics { #repo-topics, #topic_edit, .label-list {
row-gap: var.get('measure/.5x'); row-gap: var.get('measure/.5x');
margin-top: 0 !important; margin-top: 0 !important;
}
.label:not(.basic) {
.ui.table>tr>td, .ui.table>tbody>tr>td { font-size: var.get('small-font-size') !important;
border-top-color: rgba(#{color.get('theme/blue/base', 'rgb')}, 0.04); background-color: rgba(#{color.get('theme/blue/base', 'rgb')}, 0.1);
} color: color.get('primary/base');
border-radius: var.get('measure/2x');
.page-content.repository.file.list > .ui.container.lugit-repo-list-view { line-height: 14px;
display: flex; transition: background-color 0.2s ease;
flex-direction: row-reverse;
column-gap: 24px; &:hover {
background-color: rgba(#{color.get('theme/blue/base', 'rgb')}, 0.3) !important;
.ui.repo-topic.large.label.topic { color: color.get('primary/base') !important;
background-color: rgba(#{color.get('theme/blue/base', 'rgb')}, 0.3); }
color: color.get('primary/base'); }
border-radius: var.get('measure/2x');
border: 1px solid rgba(#{color.get('theme/blue/base', 'rgb')}, 0.4); }
line-height: 14px;
} .ui.table>tr>td, .ui.table>tbody>tr>td {
border-top-color: rgba(#{color.get('theme/blue/base', 'rgb')}, 0.04);
@media (max-width: 1100px) { }
width: 100%;
min-width: 100%; .page-content.repository.file.list > .ui.container.lugit-repo-list-view {
margin: 0; display: flex;
padding: 0 var.get('measure/2x'); flex-direction: row-reverse;
column-gap: 24px;
.lugit-repo-header-data {
min-width: calc(#{var.get('repo-home/sidebar-width')} * 0.87) !important; @media (max-width: 1100px) {
max-width: calc(#{var.get('repo-home/sidebar-width')} * 0.87) !important; width: 100%;
width: calc(#{var.get('repo-home/sidebar-width')} * 0.87) !important; min-width: 100%;
} margin: 0;
padding: 0 var.get('measure/2x');
.repo-button-row {
.gt-gap-y-3 { .lugit-repo-header-data {
column-gap: var.get('measure/.5x'); min-width: calc(#{var.get('repo-home/sidebar-width')} * 0.87) !important;
max-width: calc(#{var.get('repo-home/sidebar-width')} * 0.87) !important;
#new-pull-request { width: calc(#{var.get('repo-home/sidebar-width')} * 0.87) !important;
display: none; }
}
.repo-button-row {
[role=menu] { .gt-gap-y-3 {
display: none; column-gap: var.get('measure/.5x');
}
} #new-pull-request {
display: none;
#clone-panel { }
#repo-clone-url {
display: none; [role=menu] {
} display: none;
} }
} }
}
#clone-panel {
@media (max-width: 1200px) { #repo-clone-url {
flex-direction: column; display: none;
column-gap: 0; }
row-gap: 24px; }
}
.lugit-repo-header-data { }
min-width: 100%!important;
max-width: 100%!important; @media (max-width: 1280px) {
width: 100%!important; flex-direction: column;
} column-gap: 0;
row-gap: 24px;
#repo-topics {
display: none !important; .lugit-repo-header-data {
} min-width: 100%!important;
max-width: 100%!important;
#repo-desc { width: 100%!important;
display: flex; }
flex-direction: column;
font-size: 1em; #repo-topics {
row-gap: var.get('measure/1x'); display: none !important;
}
h5 {
display: none; #repo-desc {
} display: flex;
flex-direction: column;
span { font-size: 1em;
font-size: 1.2em !important; row-gap: var.get('measure/1x');
font-style: italic !important;
color: var(--color-text-light-3); h5 {
} display: none;
}
a {
font-size: 1.1em; span {
} font-size: 1.2em !important;
} font-style: italic !important;
color: var(--color-text-light-3);
} }
.repo-button-row { a {
.gt-gap-y-3 { font-size: 1.1em;
column-gap: var.get('measure/.5x'); }
} }
#clone-panel { }
#repo-clone-url {
width: unset; .repo-button-row {
} .gt-gap-y-3 {
} column-gap: var.get('measure/.5x');
} }
.lugit-repo-header-data { #clone-panel {
min-width: var.get('repo-home/sidebar-width'); #repo-clone-url {
max-width: var.get('repo-home/sidebar-width'); width: unset;
width: var.get('repo-home/sidebar-width'); }
}
#repo-desc { }
display: flex;
flex-direction: column; .lugit-repo-header-data {
font-size: 1em; min-width: var.get('repo-home/sidebar-width');
row-gap: var.get('measure/1x'); max-width: var.get('repo-home/sidebar-width');
width: var.get('repo-home/sidebar-width');
* {
margin: 0; #repo-desc {
} display: flex;
flex-direction: column;
h5 { font-size: 1em;
font-size: 1.1em; row-gap: var.get('measure/1x');
}
* {
span { margin: 0;
font-size: 1.1em; }
}
h5 {
a { font-size: 1.1em;
font-size: 1.1em; }
}
} span {
} font-size: 1.1em;
}
.lugit-repo-content {
display: flex; a {
flex-direction: column; font-size: 1.1em;
row-gap: var.get('measure/1x'); }
} }
}
#topic_edit {
flex-direction: column; .lugit-repo-content {
row-gap: var.get('measure/1x'); display: flex;
flex-direction: column;
.field.gt-f1.gt-mr-3 { row-gap: var.get('measure/1x');
margin: 0px !important; flex: 1;
}
// topic selection editing (task list #repo-files-table {
div.fluid.multiple.search.selection.dropdown { .commit-list {
display: flex; .latest-commit {
flex-wrap: wrap; gap: var.get('measure/.5x');
box-shadow: none; }
padding: var.get('measure/.25x') var.get('measure/.5x');
.isSigned, .isVerified {
.item { padding: 0 !important;
border: none; border: none !important;
} .shortsha {
display: none;
.menu { }
top: calc(100% + 1px);
} .detail {
} border-left: none !important;
padding: 0 !important;
.dropdown { margin: 0 !important;
display: none;
} div {
display: block;
// Cancel, Save buttons padding: 0 !important;
+div { margin: 0 !important;
display: flex;
column-gap: var.get('measure/1x'); svg {
margin: 0 !important;
button { }
display: block !important; }
margin: 0px !important; }
width: 100%;
} .avatar {
} display: none;
} }
} }
#repo-topics { .commit-summary {
margin-top: var.get('measure/1x') !important; color: var(--color-text-light-2) !important
} }
}
} }
}
#topic_edit {
flex-direction: column;
row-gap: var.get('measure/1x');
.field.gt-f1.gt-mr-3 {
margin: 0px !important;
}
}
#repo-topics {
margin-top: var.get('measure/1x') !important;
}
}
}