diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bd4affe --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +/data/ +/gitea.log +/gitea.pid +/bin/amd64/custom/ +/frontend/current/ diff --git a/bin/gitea.amd64 b/bin/gitea.amd64 new file mode 100755 index 0000000..8648d99 Binary files /dev/null and b/bin/gitea.amd64 differ diff --git a/bin/gitea@.service b/bin/gitea@.service new file mode 100644 index 0000000..e13c6b4 --- /dev/null +++ b/bin/gitea@.service @@ -0,0 +1,43 @@ +# if this file and binary resides on other than filesystem root then COPY the service to NOT link it +# Change directories below to fit your install +[Unit] +Description=Gitea (Git with a cup of tea) +After=syslog.target +After=network.target +# Binary, System Files and Repos on other than filesystem root then include this require/after +# With below command you can find the unit of the mounted drive of those files +#systemctl list-units | grep +# gitea files in opt/gitea +Requires=opt.mount +After=opt.mount +# repo/db/data for gitea in mnt/git-server +Requires=mnt-data.mount +After=mnt-data.mount +# using local sqlite +#After=mysqld.service +#After=postgresql.service +#After=memcached.service +#After=redis.service + +[Service] +# Modify these two values and uncomment them if you have +# repos with lots of files and get an HTTP error 500 because +# of that +### +#LimitMEMLOCK=infinity +#LimitNOFILE=65535 +RestartSec=2s +Type=simple +User=sysadmin +Group=sysadmin +Environment=GITEA_DIR=/opt/gitea +ExecStart=/bin/bash -c '${GITEA_DIR}/run %i' +Restart=always +# If you want to bind Gitea to a port below 1024 uncomment +# the two values below +### +#CapabilityBoundingSet=CAP_NET_BIND_SERVICE +#AmbientCapabilities=CAP_NET_BIND_SERVICE + +[Install] +WantedBy=multi-user.target diff --git a/bin/install b/bin/install new file mode 100755 index 0000000..6cb862f --- /dev/null +++ b/bin/install @@ -0,0 +1,3 @@ +#!/bin/bash +sudo cp -f /opt/gitea/bin/gitea@.service /etc/systemd/system +cat /etc/systemd/system/gitea@.service diff --git a/bin/update b/bin/update new file mode 100644 index 0000000..9cac018 --- /dev/null +++ b/bin/update @@ -0,0 +1,2 @@ +# TODO needs to go out and get latest binary from gitea and place in appropirate directory +# see my hugo script diff --git a/config/default.ini b/config/default.ini new file mode 100644 index 0000000..7245bf6 --- /dev/null +++ b/config/default.ini @@ -0,0 +1,6 @@ +[oauth2] +JWT_SECRET = FAk2tJZtNDTa9ZHDNXF5_hBo7ZsuTiwnlskvaC7hVCQ + +[security] +INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE1OTY5ODYwMjN9.C2FIUBzmradKDTVEGxWD49lZOZJcL1bH7ECTGxWMx1I + diff --git a/config/example.ini b/config/example.ini new file mode 100644 index 0000000..a15b9be --- /dev/null +++ b/config/example.ini @@ -0,0 +1,1010 @@ +; This file lists the default values used by Gitea +; Copy required sections to your own app.ini (default is custom/conf/app.ini) +; and modify as needed. + +; see https://docs.gitea.io/en-us/config-cheat-sheet/ for additional documentation. + +; App name that shows in every page title +APP_NAME = Gitea: Git with a cup of tea +; Change it if you run locally +RUN_USER = git +; Either "dev", "prod" or "test", default is "dev" +RUN_MODE = dev + +[repository] +ROOT = +SCRIPT_TYPE = bash +; DETECTED_CHARSETS_ORDER tie-break order for detected charsets. +; If the charsets have equal confidence, tie-breaking will be done by order in this list +; with charsets earlier in the list chosen in preference to those later. +; Adding "defaults" will place the unused charsets at that position. +DETECTED_CHARSETS_ORDER=UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, ISO-8859, windows-1252, ISO-8859, windows-1250, ISO-8859, ISO-8859, ISO-8859, windows-1253, ISO-8859, windows-1255, ISO-8859, windows-1251, windows-1256, KOI8-R, ISO-8859, windows-1254, Shift_JIS, GB18030, EUC-JP, EUC-KR, Big5, ISO-2022, ISO-2022, ISO-2022, IBM424_rtl, IBM424_ltr, IBM420_rtl, IBM420_ltr +; Default ANSI charset to override non-UTF-8 charsets to +ANSI_CHARSET = +; Force every new repository to be private +FORCE_PRIVATE = false +; Default privacy setting when creating a new repository, allowed values: last, private, public. Default is last which means the last setting used. +DEFAULT_PRIVATE = last +; Global limit of repositories per user, applied at creation time. -1 means no limit +MAX_CREATION_LIMIT = -1 +; Mirror sync queue length, increase if mirror syncing starts hanging +MIRROR_QUEUE_LENGTH = 1000 +; Patch test queue length, increase if pull request patch testing starts hanging +PULL_REQUEST_QUEUE_LENGTH = 1000 +; Preferred Licenses to place at the top of the List +; The name here must match the filename in conf/license or custom/conf/license +PREFERRED_LICENSES = Apache License 2.0,MIT License +; Disable the ability to interact with repositories using the HTTP protocol +DISABLE_HTTP_GIT = false +; Value for Access-Control-Allow-Origin header, default is not to present +; WARNING: This maybe harmful to you website if you do not give it a right value. +ACCESS_CONTROL_ALLOW_ORIGIN = +; Force ssh:// clone url instead of scp-style uri when default SSH port is used +USE_COMPAT_SSH_URI = false +; Close issues as long as a commit on any branch marks it as fixed +DEFAULT_CLOSE_ISSUES_VIA_COMMITS_IN_ANY_BRANCH = false +; Allow users to push local repositories to Gitea and have them automatically created for a user or an org +ENABLE_PUSH_CREATE_USER = false +ENABLE_PUSH_CREATE_ORG = false +; Comma separated list of globally disabled repo units. Allowed values: repo.issues, repo.ext_issues, repo.pulls, repo.wiki, repo.ext_wiki +DISABLED_REPO_UNITS = +; Comma separated list of default repo units. Allowed values: repo.code, repo.releases, repo.issues, repo.pulls, repo.wiki. +; Note: Code and Releases can currently not be deactivated. If you specify default repo units you should still list them for future compatibility. +; External wiki and issue tracker can't be enabled by default as it requires additional settings. +; Disabled repo units will not be added to new repositories regardless if it is in the default list. +DEFAULT_REPO_UNITS = repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki +; Prefix archive files by placing them in a directory named after the repository +PREFIX_ARCHIVE_FILES = true +; Disable the creation of new mirrors. Pre-existing mirrors remain valid. +DISABLE_MIRRORS = false +; The default branch name of new repositories +DEFAULT_BRANCH=master + +[repository.editor] +; List of file extensions for which lines should be wrapped in the Monaco editor +; Separate extensions with a comma. To line wrap files without an extension, just put a comma +LINE_WRAP_EXTENSIONS = .txt,.md,.markdown,.mdown,.mkd, +; Valid file modes that have a preview API associated with them, such as api/v1/markdown +; Separate the values by commas. The preview tab in edit mode won't be displayed if the file extension doesn't match +PREVIEWABLE_FILE_MODES = markdown + +[repository.local] +; Path for local repository copy. Defaults to `tmp/local-repo` +LOCAL_COPY_PATH = tmp/local-repo +; Path for local wiki copy. Defaults to `tmp/local-wiki` +LOCAL_WIKI_PATH = tmp/local-wiki + +[repository.upload] +; Whether repository file uploads are enabled. Defaults to `true` +ENABLED = true +; Path for uploads. Defaults to `data/tmp/uploads` (tmp gets deleted on gitea restart) +TEMP_PATH = data/tmp/uploads +; One or more allowed types, e.g. image/jpeg|image/png. Nothing means any file type +ALLOWED_TYPES = +; Max size of each file in megabytes. Defaults to 3MB +FILE_MAX_SIZE = 3 +; Max number of files per upload. Defaults to 5 +MAX_FILES = 5 + +[repository.pull-request] +; List of prefixes used in Pull Request title to mark them as Work In Progress +WORK_IN_PROGRESS_PREFIXES=WIP:,[WIP] +; List of keywords used in Pull Request comments to automatically close a related issue +CLOSE_KEYWORDS=close,closes,closed,fix,fixes,fixed,resolve,resolves,resolved +; List of keywords used in Pull Request comments to automatically reopen a related issue +REOPEN_KEYWORDS=reopen,reopens,reopened +; In the default merge message for squash commits include at most this many commits +DEFAULT_MERGE_MESSAGE_COMMITS_LIMIT=50 +; In the default merge message for squash commits limit the size of the commit messages to this +DEFAULT_MERGE_MESSAGE_SIZE=5120 +; In the default merge message for squash commits walk all commits to include all authors in the Co-authored-by otherwise just use those in the limited list +DEFAULT_MERGE_MESSAGE_ALL_AUTHORS=false +; In default merge messages limit the number of approvers listed as Reviewed-by: to this many +DEFAULT_MERGE_MESSAGE_MAX_APPROVERS=10 +; In default merge messages only include approvers who are official +DEFAULT_MERGE_MESSAGE_OFFICIAL_APPROVERS_ONLY=true + +[repository.issue] +; List of reasons why a Pull Request or Issue can be locked +LOCK_REASONS=Too heated,Off-topic,Resolved,Spam + +[repository.signing] +; GPG key to use to sign commits, Defaults to the default - that is the value of git config --get user.signingkey +; run in the context of the RUN_USER +; Switch to none to stop signing completely +SIGNING_KEY = default +; If a SIGNING_KEY ID is provided and is not set to default, use the provided Name and Email address as the signer. +; These should match a publicized name and email address for the key. (When SIGNING_KEY is default these are set to +; the results of git config --get user.name and git config --get user.email respectively and can only be overrided +; by setting the SIGNING_KEY ID to the correct ID.) +SIGNING_NAME = +SIGNING_EMAIL = +; Determines when gitea should sign the initial commit when creating a repository +; Either: +; - never +; - pubkey: only sign if the user has a pubkey +; - twofa: only sign if the user has logged in with twofa +; - always +; options other than none and always can be combined as comma separated list +INITIAL_COMMIT = always +; Determines when to sign for CRUD actions +; - as above +; - parentsigned: requires that the parent commit is signed. +CRUD_ACTIONS = pubkey, twofa, parentsigned +; Determines when to sign Wiki commits +; - as above +WIKI = never +; Determines when to sign on merges +; - basesigned: require that the parent of commit on the base repo is signed. +; - commitssigned: require that all the commits in the head branch are signed. +; - approved: only sign when merging an approved pr to a protected branch +MERGES = pubkey, twofa, basesigned, commitssigned + +[cors] +; More information about CORS can be found here: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#The_HTTP_response_headers +; enable cors headers (disabled by default) +ENABLED=false +; scheme of allowed requests +SCHEME=http +; list of requesting domains that are allowed +ALLOW_DOMAIN=* +; allow subdomains of headers listed above to request +ALLOW_SUBDOMAIN=false +; list of methods allowed to request +METHODS=GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS +; max time to cache response +MAX_AGE=10m +; allow request with credentials +ALLOW_CREDENTIALS=false + +[ui] +; Number of repositories that are displayed on one explore page +EXPLORE_PAGING_NUM = 20 +; Number of issues that are displayed on one page +ISSUE_PAGING_NUM = 10 +; Number of maximum commits displayed in one activity feed +FEED_MAX_COMMIT_NUM = 5 +; Number of maximum commits displayed in commit graph. +GRAPH_MAX_COMMIT_NUM = 100 +; Number of line of codes shown for a code comment +CODE_COMMENT_LINES = 4 +; Value of `theme-color` meta tag, used by Android >= 5.0 +; An invalid color like "none" or "disable" will have the default style +; More info: https://developers.google.com/web/updates/2014/11/Support-for-theme-color-in-Chrome-39-for-Android +THEME_COLOR_META_TAG = `#6cc644` +; Max size of files to be displayed (default is 8MiB) +MAX_DISPLAY_FILE_SIZE = 8388608 +; Whether the email of the user should be shown in the Explore Users page +SHOW_USER_EMAIL = true +; Set the default theme for the Gitea install +DEFAULT_THEME = gitea +; All available themes. Allow users select personalized themes regardless of the value of `DEFAULT_THEME`. +THEMES = gitea,arc-green +;All available reactions users can choose on issues/prs and comments. +;Values can be emoji alias (:smile:) or a unicode emoji. +;For custom reactions, add a tightly cropped square image to public/emoji/img/reaction_name.png +REACTIONS = +1, -1, laugh, hooray, confused, heart, rocket, eyes +; Whether the full name of the users should be shown where possible. If the full name isn't set, the username will be used. +DEFAULT_SHOW_FULL_NAME = false +; Whether to search within description at repository search on explore page. +SEARCH_REPO_DESCRIPTION = true +; Whether to enable a Service Worker to cache frontend assets +USE_SERVICE_WORKER = true + +[ui.admin] +; Number of users that are displayed on one page +USER_PAGING_NUM = 50 +; Number of repos that are displayed on one page +REPO_PAGING_NUM = 50 +; Number of notices that are displayed on one page +NOTICE_PAGING_NUM = 25 +; Number of organizations that are displayed on one page +ORG_PAGING_NUM = 50 + +[ui.user] +; Number of repos that are displayed on one page +REPO_PAGING_NUM = 15 + +[ui.meta] +AUTHOR = Gitea - Git with a cup of tea +DESCRIPTION = Gitea (Git with a cup of tea) is a painless self-hosted Git service written in Go +KEYWORDS = go,git,self-hosted,gitea + +[ui.notification] +; Control how often the notification endpoint is polled to update the notification +; The timeout will increase to MAX_TIMEOUT in TIMEOUT_STEPs if the notification count is unchanged +; Set MIN_TIMEOUT to 0 to turn off +MIN_TIMEOUT = 10s +MAX_TIMEOUT = 60s +TIMEOUT_STEP = 10s +; This setting determines how often the db is queried to get the latest notification counts. +; If the browser client supports EventSource and SharedWorker, a SharedWorker will be used in preference to polling notification. Set to -1 to disable the EventSource +EVENT_SOURCE_UPDATE_TIME = 10s + +[markdown] +; Render soft line breaks as hard line breaks, which means a single newline character between +; paragraphs will cause a line break and adding trailing whitespace to paragraphs is not +; necessary to force a line break. +; Render soft line breaks as hard line breaks for comments +ENABLE_HARD_LINE_BREAK_IN_COMMENTS = true +; Render soft line breaks as hard line breaks for markdown documents +ENABLE_HARD_LINE_BREAK_IN_DOCUMENTS = false +; Comma separated list of custom URL-Schemes that are allowed as links when rendering Markdown +; for example git,magnet,ftp (more at https://en.wikipedia.org/wiki/List_of_URI_schemes) +; URLs starting with http and https are always displayed, whatever is put in this entry. +CUSTOM_URL_SCHEMES = +; List of file extensions that should be rendered/edited as Markdown +; Separate the extensions with a comma. To render files without any extension as markdown, just put a comma +FILE_EXTENSIONS = .md,.markdown,.mdown,.mkd + +[server] +; The protocol the server listens on. One of 'http', 'https', 'unix' or 'fcgi'. +PROTOCOL = http +DOMAIN = localhost +ROOT_URL = %(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/ +; when STATIC_URL_PREFIX is empty it will follow ROOT_URL +STATIC_URL_PREFIX = +; The address to listen on. Either a IPv4/IPv6 address or the path to a unix socket. +HTTP_ADDR = 0.0.0.0 +; The port to listen on. Leave empty when using a unix socket. +HTTP_PORT = 3000 +; If REDIRECT_OTHER_PORT is true, and PROTOCOL is set to https an http server +; will be started on PORT_TO_REDIRECT and it will redirect plain, non-secure http requests to the main +; ROOT_URL. Defaults are false for REDIRECT_OTHER_PORT and 80 for +; PORT_TO_REDIRECT. +REDIRECT_OTHER_PORT = false +PORT_TO_REDIRECT = 80 +; Permission for unix socket +UNIX_SOCKET_PERMISSION = 666 +; Local (DMZ) URL for Gitea workers (such as SSH update) accessing web service. +; In most cases you do not need to change the default value. +; Alter it only if your SSH server node is not the same as HTTP node. +; Do not set this variable if PROTOCOL is set to 'unix'. +LOCAL_ROOT_URL = %(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/ +; Disable SSH feature when not available +DISABLE_SSH = false +; Whether to use the builtin SSH server or not. +START_SSH_SERVER = false +; Username to use for the builtin SSH server. If blank, then it is the value of RUN_USER. +BUILTIN_SSH_SERVER_USER = +; Domain name to be exposed in clone URL +SSH_DOMAIN = %(DOMAIN)s +; The network interface the builtin SSH server should listen on +SSH_LISTEN_HOST = +; Port number to be exposed in clone URL +SSH_PORT = 22 +; The port number the builtin SSH server should listen on +SSH_LISTEN_PORT = %(SSH_PORT)s +; Root path of SSH directory, default is '~/.ssh', but you have to use '/home/git/.ssh'. +SSH_ROOT_PATH = +; Gitea will create a authorized_keys file by default when it is not using the internal ssh server +; If you intend to use the AuthorizedKeysCommand functionality then you should turn this off. +SSH_CREATE_AUTHORIZED_KEYS_FILE = true +; For the built-in SSH server, choose the ciphers to support for SSH connections, +; for system SSH this setting has no effect +SSH_SERVER_CIPHERS = aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, arcfour256, arcfour128 +; For the built-in SSH server, choose the key exchange algorithms to support for SSH connections, +; for system SSH this setting has no effect +SSH_SERVER_KEY_EXCHANGES = diffie-hellman-group1-sha1, diffie-hellman-group14-sha1, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, curve25519-sha256@libssh.org +; For the built-in SSH server, choose the MACs to support for SSH connections, +; for system SSH this setting has no effect +SSH_SERVER_MACS = hmac-sha2-256-etm@openssh.com, hmac-sha2-256, hmac-sha1, hmac-sha1-96 +; Directory to create temporary files in when testing public keys using ssh-keygen, +; default is the system temporary directory. +SSH_KEY_TEST_PATH = +; Path to ssh-keygen, default is 'ssh-keygen' which means the shell is responsible for finding out which one to call. +SSH_KEYGEN_PATH = ssh-keygen +; Enable SSH Authorized Key Backup when rewriting all keys, default is true +SSH_BACKUP_AUTHORIZED_KEYS = true +; Enable exposure of SSH clone URL to anonymous visitors, default is false +SSH_EXPOSE_ANONYMOUS = false +; Indicate whether to check minimum key size with corresponding type +MINIMUM_KEY_SIZE_CHECK = false +; Disable CDN even in "prod" mode +OFFLINE_MODE = false +DISABLE_ROUTER_LOG = false +; Generate steps: +; $ ./gitea cert -ca=true -duration=8760h0m0s -host=myhost.example.com +; +; Or from a .pfx file exported from the Windows certificate store (do +; not forget to export the private key): +; $ openssl pkcs12 -in cert.pfx -out cert.pem -nokeys +; $ openssl pkcs12 -in cert.pfx -out key.pem -nocerts -nodes +; Paths are relative to CUSTOM_PATH +CERT_FILE = https/cert.pem +KEY_FILE = https/key.pem +; Root directory containing templates and static files. +; default is the path where Gitea is executed +STATIC_ROOT_PATH = +; Default path for App data +APP_DATA_PATH = data +; Application level GZIP support +ENABLE_GZIP = false +; Application profiling (memory and cpu) +; For "web" command it listens on localhost:6060 +; For "serve" command it dumps to disk at PPROF_DATA_PATH as (cpuprofile|memprofile)__ +ENABLE_PPROF = false +; PPROF_DATA_PATH, use an absolute path when you start gitea as service +PPROF_DATA_PATH = data/tmp/pprof +; Landing page, can be "home", "explore", "organizations" or "login" +; The "login" choice is not a security measure but just a UI flow change, use REQUIRE_SIGNIN_VIEW to force users to log in. +LANDING_PAGE = home +; Enables git-lfs support. true or false, default is false. +LFS_START_SERVER = false +; Where your lfs files reside, default is data/lfs. +LFS_CONTENT_PATH = data/lfs +; LFS authentication secret, change this yourself +LFS_JWT_SECRET = +; LFS authentication validity period (in time.Duration), pushes taking longer than this may fail. +LFS_HTTP_AUTH_EXPIRY = 20m +; Maximum allowed LFS file size in bytes (Set to 0 for no limit). +LFS_MAX_FILE_SIZE = 0 +; Maximum number of locks returned per page +LFS_LOCKS_PAGING_NUM = 50 +; Allow graceful restarts using SIGHUP to fork +ALLOW_GRACEFUL_RESTARTS = true +; After a restart the parent will finish ongoing requests before +; shutting down. Force shutdown if this process takes longer than this delay. +; set to a negative value to disable +GRACEFUL_HAMMER_TIME = 60s +; Allows the setting of a startup timeout and waithint for Windows as SVC service +; 0 disables this. +STARTUP_TIMEOUT = 0 +; Static resources, includes resources on custom/, public/ and all uploaded avatars web browser cache time, default is 6h +STATIC_CACHE_TIME = 6h + +; Define allowed algorithms and their minimum key length (use -1 to disable a type) +[ssh.minimum_key_sizes] +ED25519 = 256 +ECDSA = 256 +RSA = 2048 +DSA = 1024 + +[database] +; Database to use. Either "mysql", "postgres", "mssql" or "sqlite3". +DB_TYPE = mysql +HOST = 127.0.0.1:3306 +NAME = gitea +USER = root +; Use PASSWD = `your password` for quoting if you use special characters in the password. +PASSWD = +; For Postgres, schema to use if different from "public". The schema must exist beforehand, +; the user must have creation privileges on it, and the user search path must be set +; to the look into the schema first. e.g.:ALTER USER user SET SEARCH_PATH = schema_name,"$user",public; +SCHEMA = +; For Postgres, either "disable" (default), "require", or "verify-full" +; For MySQL, either "false" (default), "true", or "skip-verify" +SSL_MODE = disable +; For MySQL only, either "utf8" or "utf8mb4", default is "utf8mb4". +; NOTICE: for "utf8mb4" you must use MySQL InnoDB > 5.6. Gitea is unable to check this. +CHARSET = utf8mb4 +; For "sqlite3" and "tidb", use an absolute path when you start gitea as service +PATH = data/gitea.db +; For "sqlite3" only. Query timeout +SQLITE_TIMEOUT = 500 +; For iterate buffer, default is 50 +ITERATE_BUFFER_SIZE = 50 +; Show the database generated SQL +LOG_SQL = true +; Maximum number of DB Connect retries +DB_RETRIES = 10 +; Backoff time per DB retry (time.Duration) +DB_RETRY_BACKOFF = 3s +; Max idle database connections on connnection pool, default is 2 +MAX_IDLE_CONNS = 2 +; Database connection max life time, default is 0 or 3s mysql (See #6804 & #7071 for reasoning) +CONN_MAX_LIFETIME = 3s +; Database maximum number of open connections, default is 0 meaning no maximum +MAX_OPEN_CONNS = 0 + +[indexer] +; Issue indexer type, currently support: bleve, db or elasticsearch, default is bleve +ISSUE_INDEXER_TYPE = bleve +; Issue indexer connection string, available when ISSUE_INDEXER_TYPE is elasticsearch +ISSUE_INDEXER_CONN_STR = http://elastic:changeme@localhost:9200 +; Issue indexer name, available when ISSUE_INDEXER_TYPE is elasticsearch +ISSUE_INDEXER_NAME = gitea_issues +; Issue indexer storage path, available when ISSUE_INDEXER_TYPE is bleve +ISSUE_INDEXER_PATH = indexers/issues.bleve +; Issue indexer queue, currently support: channel, levelqueue or redis, default is levelqueue +ISSUE_INDEXER_QUEUE_TYPE = levelqueue +; When ISSUE_INDEXER_QUEUE_TYPE is levelqueue, this will be the queue will be saved path, +; default is indexers/issues.queue +ISSUE_INDEXER_QUEUE_DIR = indexers/issues.queue +; When `ISSUE_INDEXER_QUEUE_TYPE` is `redis`, this will store the redis connection string. +ISSUE_INDEXER_QUEUE_CONN_STR = "addrs=127.0.0.1:6379 db=0" +; Batch queue number, default is 20 +ISSUE_INDEXER_QUEUE_BATCH_NUMBER = 20 +; Timeout the indexer if it takes longer than this to start. +; Set to zero to disable timeout. +STARTUP_TIMEOUT=30s + +; repo indexer by default disabled, since it uses a lot of disk space +REPO_INDEXER_ENABLED = false +REPO_INDEXER_PATH = indexers/repos.bleve +UPDATE_BUFFER_LEN = 20 +MAX_FILE_SIZE = 1048576 +; A comma separated list of glob patterns (see https://github.com/gobwas/glob) to include +; in the index; default is empty +REPO_INDEXER_INCLUDE = +; A comma separated list of glob patterns to exclude from the index; ; default is empty +REPO_INDEXER_EXCLUDE = + +[queue] +; Specific queues can be individually configured with [queue.name]. [queue] provides defaults +; +; General queue queue type, currently support: persistable-channel, channel, level, redis, dummy +; default to persistable-channel +TYPE = persistable-channel +; data-dir for storing persistable queues and level queues, individual queues will be named by their type +DATADIR = queues/ +; Default queue length before a channel queue will block +LENGTH = 20 +; Batch size to send for batched queues +BATCH_LENGTH = 20 +; Connection string for redis queues this will store the redis connection string. +CONN_STR = "addrs=127.0.0.1:6379 db=0" +; Provide the suffix of the default redis queue name - specific queues can be overriden within in their [queue.name] sections. +QUEUE_NAME = "_queue" +; If the queue cannot be created at startup - level queues may need a timeout at startup - wrap the queue: +WRAP_IF_NECESSARY = true +; Attempt to create the wrapped queue at max +MAX_ATTEMPTS = 10 +; Timeout queue creation +TIMEOUT = 15m30s +; Create a pool with this many workers +WORKERS = 1 +; Dynamically scale the worker pool to at this many workers +MAX_WORKERS = 10 +; Add boost workers when the queue blocks for BLOCK_TIMEOUT +BLOCK_TIMEOUT = 1s +; Remove the boost workers after BOOST_TIMEOUT +BOOST_TIMEOUT = 5m +; During a boost add BOOST_WORKERS +BOOST_WORKERS = 5 + +[admin] +; Disallow regular (non-admin) users from creating organizations. +DISABLE_REGULAR_ORG_CREATION = false +; Default configuration for email notifications for users (user configurable). Options: enabled, onmention, disabled +DEFAULT_EMAIL_NOTIFICATIONS = enabled + +[security] +; Whether the installer is disabled +INSTALL_LOCK = false +; !!CHANGE THIS TO KEEP YOUR USER DATA SAFE!! +SECRET_KEY = !#@FDEWREWR&*( +; How long to remember that a user is logged in before requiring relogin (in days) +LOGIN_REMEMBER_DAYS = 7 +COOKIE_USERNAME = gitea_awesome +COOKIE_REMEMBER_NAME = gitea_incredible +; Reverse proxy authentication header name of user name +REVERSE_PROXY_AUTHENTICATION_USER = X-WEBAUTH-USER +REVERSE_PROXY_AUTHENTICATION_EMAIL = X-WEBAUTH-EMAIL +; The minimum password length for new Users +MIN_PASSWORD_LENGTH = 6 +; Set to true to allow users to import local server paths +IMPORT_LOCAL_PATHS = false +; Set to true to prevent all users (including admin) from creating custom git hooks +DISABLE_GIT_HOOKS = false +; Set to false to allow pushes to gitea repositories despite having an incomplete environment - NOT RECOMMENDED +ONLY_ALLOW_PUSH_IF_GITEA_ENVIRONMENT_SET = true +;Comma separated list of character classes required to pass minimum complexity. +;If left empty or no valid values are specified, the default values ("lower,upper,digit,spec") will be used. +;Use "off" to disable checking. +PASSWORD_COMPLEXITY = lower,upper,digit,spec +; Password Hash algorithm, either "pbkdf2", "argon2", "scrypt" or "bcrypt" +PASSWORD_HASH_ALGO = pbkdf2 +; Set false to allow JavaScript to read CSRF cookie +CSRF_COOKIE_HTTP_ONLY = true + +[openid] +; +; OpenID is an open, standard and decentralized authentication protocol. +; Your identity is the address of a webpage you provide, which describes +; how to prove you are in control of that page. +; +; For more info: https://en.wikipedia.org/wiki/OpenID +; +; Current implementation supports OpenID-2.0 +; +; Tested to work providers at the time of writing: +; - Any GNUSocial node (your.hostname.tld/username) +; - Any SimpleID provider (http://simpleid.koinic.net) +; - http://openid.org.cn/ +; - openid.stackexchange.com +; - login.launchpad.net +; - .livejournal.com +; +; Whether to allow signin in via OpenID +ENABLE_OPENID_SIGNIN = true +; Whether to allow registering via OpenID +; Do not include to rely on rhw DISABLE_REGISTRATION setting +;ENABLE_OPENID_SIGNUP = true +; Allowed URI patterns (POSIX regexp). +; Space separated. +; Only these would be allowed if non-blank. +; Example value: trusted.domain.org trusted.domain.net +WHITELISTED_URIS = +; Forbidden URI patterns (POSIX regexp). +; Space separated. +; Only used if WHITELISTED_URIS is blank. +; Example value: loadaverage.org/badguy stackexchange.com/.*spammer +BLACKLISTED_URIS = + +[service] +; Time limit to confirm account/email registration +ACTIVE_CODE_LIVE_MINUTES = 180 +; Time limit to perform the reset of a forgotten password +RESET_PASSWD_CODE_LIVE_MINUTES = 180 +; Whether a new user needs to confirm their email when registering. +REGISTER_EMAIL_CONFIRM = false +; List of domain names that are allowed to be used to register on a Gitea instance +; gitea.io,example.com +EMAIL_DOMAIN_WHITELIST= +; Disallow registration, only allow admins to create accounts. +DISABLE_REGISTRATION = false +; Allow registration only using third-party services, it works only when DISABLE_REGISTRATION is false +ALLOW_ONLY_EXTERNAL_REGISTRATION = false +; User must sign in to view anything. +REQUIRE_SIGNIN_VIEW = false +; Mail notification +ENABLE_NOTIFY_MAIL = false +; This setting enables gitea to be signed in with HTTP BASIC Authentication using the user's password +; If you set this to false you will not be able to access the tokens endpoints on the API with your password +; Please note that setting this to false will not disable OAuth Basic or Basic authentication using a token +ENABLE_BASIC_AUTHENTICATION = true +; More detail: https://github.com/gogits/gogs/issues/165 +ENABLE_REVERSE_PROXY_AUTHENTICATION = false +ENABLE_REVERSE_PROXY_AUTO_REGISTRATION = false +ENABLE_REVERSE_PROXY_EMAIL = false +; Enable captcha validation for registration +ENABLE_CAPTCHA = false +; Type of captcha you want to use. Options: image, recaptcha +CAPTCHA_TYPE = image +; Enable recaptcha to use Google's recaptcha service +; Go to https://www.google.com/recaptcha/admin to sign up for a key +RECAPTCHA_SECRET = +RECAPTCHA_SITEKEY = +; Change this to use recaptcha.net or other recaptcha service +RECAPTCHA_URL = https://www.google.com/recaptcha/ +; Default value for KeepEmailPrivate +; Each new user will get the value of this setting copied into their profile +DEFAULT_KEEP_EMAIL_PRIVATE = false +; Default value for AllowCreateOrganization +; Every new user will have rights set to create organizations depending on this setting +DEFAULT_ALLOW_CREATE_ORGANIZATION = true +; Either "public", "limited" or "private", default is "public" +; Limited is for signed user only +; Private is only for member of the organization +; Public is for everyone +DEFAULT_ORG_VISIBILITY = public +; Default value for DefaultOrgMemberVisible +; True will make the membership of the users visible when added to the organisation +DEFAULT_ORG_MEMBER_VISIBLE = false +; Default value for EnableDependencies +; Repositories will use dependencies by default depending on this setting +DEFAULT_ENABLE_DEPENDENCIES = true +; Dependencies can be added from any repository where the user is granted access or only from the current repository depending on this setting. +ALLOW_CROSS_REPOSITORY_DEPENDENCIES = true +; Enable heatmap on users profiles. +ENABLE_USER_HEATMAP = true +; Enable Timetracking +ENABLE_TIMETRACKING = true +; Default value for EnableTimetracking +; Repositories will use timetracking by default depending on this setting +DEFAULT_ENABLE_TIMETRACKING = true +; Default value for AllowOnlyContributorsToTrackTime +; Only users with write permissions can track time if this is true +DEFAULT_ALLOW_ONLY_CONTRIBUTORS_TO_TRACK_TIME = true +; Default value for the domain part of the user's email address in the git log +; if he has set KeepEmailPrivate to true. The user's email will be replaced with a +; concatenation of the user name in lower case, "@" and NO_REPLY_ADDRESS. +NO_REPLY_ADDRESS = noreply.%(DOMAIN)s +; Show Registration button +SHOW_REGISTRATION_BUTTON = true +; Show milestones dashboard page - a view of all the user's milestones +SHOW_MILESTONES_DASHBOARD_PAGE = true +; Default value for AutoWatchNewRepos +; When adding a repo to a team or creating a new repo all team members will watch the +; repo automatically if enabled +AUTO_WATCH_NEW_REPOS = true +; Default value for AutoWatchOnChanges +; Make the user watch a repository When they commit for the first time +AUTO_WATCH_ON_CHANGES = false + +[webhook] +; Hook task queue length, increase if webhook shooting starts hanging +QUEUE_LENGTH = 1000 +; Deliver timeout in seconds +DELIVER_TIMEOUT = 5 +; Allow insecure certification +SKIP_TLS_VERIFY = false +; Number of history information in each page +PAGING_NUM = 10 +; Proxy server URL, support http://, https//, socks://, blank will follow environment http_proxy/https_proxy +PROXY_URL = +; Comma separated list of host names requiring proxy. Glob patterns (*) are accepted; use ** to match all hosts. +PROXY_HOSTS = + +[mailer] +ENABLED = false +; Buffer length of channel, keep it as it is if you don't know what it is. +SEND_BUFFER_LEN = 100 +; Prefix displayed before subject in mail +SUBJECT_PREFIX = +; Mail server +; Gmail: smtp.gmail.com:587 +; QQ: smtp.qq.com:465 +; Using STARTTLS on port 587 is recommended per RFC 6409. +; Note, if the port ends with "465", SMTPS will be used. +HOST = +; Disable HELO operation when hostnames are different. +DISABLE_HELO = +; Custom hostname for HELO operation, if no value is provided, one is retrieved from system. +HELO_HOSTNAME = +; Whether or not to skip verification of certificates; `true` to disable verification. This option is unsafe. Consider adding the certificate to the system trust store instead. +SKIP_VERIFY = false +; Use client certificate +USE_CERTIFICATE = false +CERT_FILE = custom/mailer/cert.pem +KEY_FILE = custom/mailer/key.pem +; Should SMTP connect with TLS, (if port ends with 465 TLS will always be used.) +; If this is false but STARTTLS is supported the connection will be upgraded to TLS opportunistically. +IS_TLS_ENABLED = false +; Mail from address, RFC 5322. This can be just an email address, or the `"Name" ` format +FROM = +; Mailer user name and password +; Please Note: Authentication is only supported when the SMTP server communication is encrypted with TLS (this can be via STARTTLS) or `HOST=localhost`. +USER = +; Use PASSWD = `your password` for quoting if you use special characters in the password. +PASSWD = +; Send mails as plain text +SEND_AS_PLAIN_TEXT = false +; Set Mailer Type (either SMTP, sendmail or dummy to just send to the log) +MAILER_TYPE = smtp +; Specify an alternative sendmail binary +SENDMAIL_PATH = sendmail +; Specify any extra sendmail arguments +SENDMAIL_ARGS = +; Timeout for Sendmail +SENDMAIL_TIMEOUT = 5m + +[cache] +; if the cache enabled +ENABLED = true +; Either "memory", "redis", or "memcache", default is "memory" +ADAPTER = memory +; For "memory" only, GC interval in seconds, default is 60 +INTERVAL = 60 +; For "redis" and "memcache", connection host address +; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180 +; memcache: `127.0.0.1:11211` +HOST = +; Time to keep items in cache if not used, default is 16 hours. +; Setting it to 0 disables caching +ITEM_TTL = 16h + +; Last commit cache +[cache.last_commit] +; if the cache enabled +ENABLED = true +; Time to keep items in cache if not used, default is 8760 hours. +; Setting it to 0 disables caching +ITEM_TTL = 8760h +; Only enable the cache when repository's commits count great than +COMMITS_COUNT = 1000 + +[session] +; Either "memory", "file", or "redis", default is "memory" +PROVIDER = memory +; Provider config options +; memory: doesn't have any config yet +; file: session file path, e.g. `data/sessions` +; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180 +; mysql: go-sql-driver/mysql dsn config string, e.g. `root:password@/session_table` +PROVIDER_CONFIG = data/sessions +; Session cookie name +COOKIE_NAME = i_like_gitea +; If you use session in https only, default is false +COOKIE_SECURE = false +; Enable set cookie, default is true +ENABLE_SET_COOKIE = true +; Session GC time interval in seconds, default is 86400 (1 day) +GC_INTERVAL_TIME = 86400 +; Session life time in seconds, default is 86400 (1 day) +SESSION_LIFE_TIME = 86400 + +[picture] +AVATAR_UPLOAD_PATH = data/avatars +REPOSITORY_AVATAR_UPLOAD_PATH = data/repo-avatars +; How Gitea deals with missing repository avatars +; none = no avatar will be displayed; random = random avatar will be displayed; image = default image will be used +REPOSITORY_AVATAR_FALLBACK = none +REPOSITORY_AVATAR_FALLBACK_IMAGE = /img/repo_default.png +; Max Width and Height of uploaded avatars. +; This is to limit the amount of RAM used when resizing the image. +AVATAR_MAX_WIDTH = 4096 +AVATAR_MAX_HEIGHT = 3072 +; Maximum alloved file size for uploaded avatars. +; This is to limit the amount of RAM used when resizing the image. +AVATAR_MAX_FILE_SIZE = 1048576 +; Chinese users can choose "duoshuo" +; or a custom avatar source, like: http://cn.gravatar.com/avatar/ +GRAVATAR_SOURCE = gravatar +; This value will always be true in offline mode. +DISABLE_GRAVATAR = false +; Federated avatar lookup uses DNS to discover avatar associated +; with emails, see https://www.libravatar.org +; This value will always be false in offline mode or when Gravatar is disabled. +ENABLE_FEDERATED_AVATAR = false + +[attachment] +; Whether attachments are enabled. Defaults to `true` +ENABLED = true +; Path for attachments. Defaults to `data/attachments` +PATH = data/attachments +; One or more allowed types, e.g. "image/jpeg|image/png". Use "*/*" for all types. +ALLOWED_TYPES = image/jpeg|image/png|application/zip|application/gzip +; Max size of each file. Defaults to 4MB +MAX_SIZE = 4 +; Max number of files per upload. Defaults to 5 +MAX_FILES = 5 + +[time] +; Specifies the format for fully outputted dates. Defaults to RFC1123 +; Special supported values are ANSIC, UnixDate, RubyDate, RFC822, RFC822Z, RFC850, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, Kitchen, Stamp, StampMilli, StampMicro and StampNano +; For more information about the format see http://golang.org/pkg/time/#pkg-constants +FORMAT = +; Location the UI time display i.e. Asia/Shanghai +; Empty means server's location setting +DEFAULT_UI_LOCATION = + +[log] +ROOT_PATH = +; Either "console", "file", "conn", "smtp" or "database", default is "console" +; Use comma to separate multiple modes, e.g. "console, file" +MODE = console +; Buffer length of the channel, keep it as it is if you don't know what it is. +BUFFER_LEN = 10000 +REDIRECT_MACARON_LOG = false +MACARON = file +; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Info" +ROUTER_LOG_LEVEL = Info +ROUTER = console +ENABLE_ACCESS_LOG = false +ACCESS_LOG_TEMPLATE = {{.Ctx.RemoteAddr}} - {{.Identity}} {{.Start.Format "[02/Jan/2006:15:04:05 -0700]" }} "{{.Ctx.Req.Method}} {{.Ctx.Req.RequestURI}} {{.Ctx.Req.Proto}}" {{.ResponseWriter.Status}} {{.ResponseWriter.Size}} "{{.Ctx.Req.Referer}}\" \"{{.Ctx.Req.UserAgent}}" +ACCESS = file +; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace" +LEVEL = Info +; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "None" +STACKTRACE_LEVEL = None + +; Generic log modes +[log.x] +FLAGS = stdflags +EXPRESSION = +PREFIX = +COLORIZE = false + +; For "console" mode only +[log.console] +LEVEL = +STDERR = false + +; For "file" mode only +[log.file] +LEVEL = +; Set the file_name for the logger. If this is a relative path this +; will be relative to ROOT_PATH +FILE_NAME = +; This enables automated log rotate(switch of following options), default is true +LOG_ROTATE = true +; Max number of lines in a single file, default is 1000000 +MAX_LINES = 1000000 +; Max size shift of a single file, default is 28 means 1 << 28, 256MB +MAX_SIZE_SHIFT = 28 +; Segment log daily, default is true +DAILY_ROTATE = true +; delete the log file after n days, default is 7 +MAX_DAYS = 7 +; compress logs with gzip +COMPRESS = true +; compression level see godoc for compress/gzip +COMPRESSION_LEVEL = -1 + +; For "conn" mode only +[log.conn] +LEVEL = +; Reconnect host for every single message, default is false +RECONNECT_ON_MSG = false +; Try to reconnect when connection is lost, default is false +RECONNECT = false +; Either "tcp", "unix" or "udp", default is "tcp" +PROTOCOL = tcp +; Host address +ADDR = + +; For "smtp" mode only +[log.smtp] +LEVEL = +; Name displayed in mail title, default is "Diagnostic message from server" +SUBJECT = Diagnostic message from server +; Mail server +HOST = +; Mailer user name and password +USER = +; Use PASSWD = `your password` for quoting if you use special characters in the password. +PASSWD = +; Receivers, can be one or more, e.g. 1@example.com,2@example.com +RECEIVERS = + +[cron] +; Enable running cron tasks periodically. +ENABLED = true +; Run cron tasks when Gitea starts. +RUN_AT_START = false + +; Update mirrors +[cron.update_mirrors] +SCHEDULE = @every 10m + +; Repository health check +[cron.repo_health_check] +SCHEDULE = @every 24h +TIMEOUT = 60s +; Arguments for command 'git fsck', e.g. "--unreachable --tags" +; see more on http://git-scm.com/docs/git-fsck +ARGS = + +; Check repository statistics +[cron.check_repo_stats] +RUN_AT_START = true +SCHEDULE = @every 24h + +; Clean up old repository archives +[cron.archive_cleanup] +; Whether to enable the job +ENABLED = true +; Whether to always run at least once at start up time (if ENABLED) +RUN_AT_START = true +; Time interval for job to run +SCHEDULE = @every 24h +; Archives created more than OLDER_THAN ago are subject to deletion +OLDER_THAN = 24h + +; Synchronize external user data (only LDAP user synchronization is supported) +[cron.sync_external_users] +; Synchronize external user data when starting server (default false) +RUN_AT_START = false +; Interval as a duration between each synchronization (default every 24h) +SCHEDULE = @every 24h +; Create new users, update existing user data and disable users that are not in external source anymore (default) +; or only create new users if UPDATE_EXISTING is set to false +UPDATE_EXISTING = true + +; Update migrated repositories' issues and comments' posterid, it will always attempt synchronization when the instance starts. +[cron.update_migration_poster_id] +; Interval as a duration between each synchronization. (default every 24h) +SCHEDULE = @every 24h + +[git] +; The path of git executable. If empty, Gitea searches through the PATH environment. +PATH = +; Disables highlight of added and removed changes +DISABLE_DIFF_HIGHLIGHT = false +; Max number of lines allowed in a single file in diff view +MAX_GIT_DIFF_LINES = 1000 +; Max number of allowed characters in a line in diff view +MAX_GIT_DIFF_LINE_CHARACTERS = 5000 +; Max number of files shown in diff view +MAX_GIT_DIFF_FILES = 100 +; Arguments for command 'git gc', e.g. "--aggressive --auto" +; see more on http://git-scm.com/docs/git-gc/ +GC_ARGS = +; If use git wire protocol version 2 when git version >= 2.18, default is true, set to false when you always want git wire protocol version 1 +ENABLE_AUTO_GIT_WIRE_PROTOCOL = true +; Respond to pushes to a non-default branch with a URL for creating a Pull Request (if the repository has them enabled) +PULL_REQUEST_PUSH_MESSAGE = true + +; Operation timeout in seconds +[git.timeout] +DEFAULT = 360 +MIGRATE = 600 +MIRROR = 300 +CLONE = 300 +PULL = 300 +GC = 60 + +[mirror] +; Default interval as a duration between each check +DEFAULT_INTERVAL = 8h +; Min interval as a duration must be > 1m +MIN_INTERVAL = 10m + +[api] +; Enables Swagger. True or false; default is true. +ENABLE_SWAGGER = true +; Max number of items in a page +MAX_RESPONSE_ITEMS = 50 +; Default paging number of api +DEFAULT_PAGING_NUM = 30 +; Default and maximum number of items per page for git trees api +DEFAULT_GIT_TREES_PER_PAGE = 1000 +; Default size of a blob returned by the blobs API (default is 10MiB) +DEFAULT_MAX_BLOB_SIZE = 10485760 + +[oauth2] +; Enables OAuth2 provider +ENABLE = true +; Lifetime of an OAuth2 access token in seconds +ACCESS_TOKEN_EXPIRATION_TIME=3600 +; Lifetime of an OAuth2 access token in hours +REFRESH_TOKEN_EXPIRATION_TIME=730 +; Check if refresh token got already used +INVALIDATE_REFRESH_TOKENS=false +; OAuth2 authentication secret for access and refresh tokens, change this to a unique string. +JWT_SECRET=Bk0yK7Y9g_p56v86KaHqjSbxvNvu3SbKoOdOt2ZcXvU +; Maximum length of oauth2 token/cookie stored on server +MAX_TOKEN_LENGTH=32767 + +[i18n] +LANGS = en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,uk-UA,ja-JP,es-ES,pt-BR,pt-PT,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR +NAMES = English,简体中文,繁體中文(香港),繁體中文(台灣),Deutsch,français,Nederlands,latviešu,русский,Українська,日本語,español,português do Brasil,Português de Portugal,polski,български,italiano,suomi,Türkçe,čeština,српски,svenska,한국어 + +[U2F] +; NOTE: THE DEFAULT VALUES HERE WILL NEED TO BE CHANGED +; Two Factor authentication with security keys +; https://developers.yubico.com/U2F/App_ID.html +;APP_ID = http://localhost:3000/ +; Comma seperated list of trusted facets +;TRUSTED_FACETS = http://localhost:3000/ + +; Extension mapping to highlight class +; e.g. .toml=ini +[highlight.mapping] + +[other] +SHOW_FOOTER_BRANDING = false +; Show version information about Gitea and Go in the footer +SHOW_FOOTER_VERSION = true +; Show template execution time in the footer +SHOW_FOOTER_TEMPLATE_LOAD_TIME = true + +[markup.sanitizer.1] +; The following keys can appear once to define a sanitation policy rule. +; This section can appear multiple times by adding a unique alphanumeric suffix to define multiple rules. +; e.g., [markup.sanitizer.1] -> [markup.sanitizer.2] -> [markup.sanitizer.TeX] +;ELEMENT = span +;ALLOW_ATTR = class +;REGEXP = ^(info|warning|error)$ + +[markup.asciidoc] +ENABLED = false +; List of file extensions that should be rendered by an external command +FILE_EXTENSIONS = .adoc,.asciidoc +; External command to render all matching extensions +RENDER_COMMAND = "asciidoc --out-file=- -" +; Don't pass the file on STDIN, pass the filename as argument instead. +IS_INPUT_FILE = false + +[metrics] +; Enables metrics endpoint. True or false; default is false. +ENABLED = false +; If you want to add authorization, specify a token here +TOKEN = + +[task] +; Task queue type, could be `channel` or `redis`. +QUEUE_TYPE = channel +; Task queue length, available only when `QUEUE_TYPE` is `channel`. +QUEUE_LENGTH = 1000 +; Task queue connection string, available only when `QUEUE_TYPE` is `redis`. +; If there is a password of redis, use `addrs=127.0.0.1:6379 password=123 db=0`. +QUEUE_CONN_STR = "addrs=127.0.0.1:6379 db=0" + +[migrations] +; Max attempts per http/https request on migrations. +MAX_ATTEMPTS = 3 +; Backoff time per http/https request retry (seconds) +RETRY_BACKOFF = 3 diff --git a/config/example.yaml b/config/example.yaml new file mode 100644 index 0000000..603455c --- /dev/null +++ b/config/example.yaml @@ -0,0 +1,393 @@ +--- +APP_NAME: "Gitea: Git with a cup of tea" +RUN_USER: "git" +RUN_MODE: "dev" +repository: + SCRIPT_TYPE: "bash" + DETECTED_CHARSETS_ORDER: "UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, ISO-8859, windows-1252, ISO-8859, windows-1250, ISO-8859, ISO-8859, ISO-8859, windows-1253, ISO-8859, windows-1255, ISO-8859, windows-1251, windows-1256, KOI8-R, ISO-8859, windows-1254, Shift_JIS, GB18030, EUC-JP, EUC-KR, Big5, ISO-2022, ISO-2022, ISO-2022, IBM424_rtl, IBM424_ltr, IBM420_rtl, IBM420_ltr" + FORCE_PRIVATE: "false" + DEFAULT_PRIVATE: "last" + MAX_CREATION_LIMIT: "-1" + MIRROR_QUEUE_LENGTH: "1000" + PULL_REQUEST_QUEUE_LENGTH: "1000" + PREFERRED_LICENSES: "Apache License 2.0,MIT License" + DISABLE_HTTP_GIT: "false" + USE_COMPAT_SSH_URI: "false" + DEFAULT_CLOSE_ISSUES_VIA_COMMITS_IN_ANY_BRANCH: "false" + ENABLE_PUSH_CREATE_USER: "false" + ENABLE_PUSH_CREATE_ORG: "false" + DEFAULT_REPO_UNITS: "repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki" + PREFIX_ARCHIVE_FILES: "true" + DISABLE_MIRRORS: "false" + DEFAULT_BRANCH: "master" +repository.editor: + LINE_WRAP_EXTENSIONS: ".txt,.md,.markdown,.mdown,.mkd," + PREVIEWABLE_FILE_MODES: "markdown" +repository.local: + LOCAL_COPY_PATH: "tmp/local-repo" + LOCAL_WIKI_PATH: "tmp/local-wiki" +repository.upload: + ENABLED: "true" + TEMP_PATH: "data/tmp/uploads" + FILE_MAX_SIZE: "3" + MAX_FILES: "5" +repository.pull-request: + WORK_IN_PROGRESS_PREFIXES: "WIP:,[WIP]" + CLOSE_KEYWORDS: "close,closes,closed,fix,fixes,fixed,resolve,resolves,resolved" + REOPEN_KEYWORDS: "reopen,reopens,reopened" + DEFAULT_MERGE_MESSAGE_COMMITS_LIMIT: "50" + DEFAULT_MERGE_MESSAGE_SIZE: "5120" + DEFAULT_MERGE_MESSAGE_ALL_AUTHORS: "false" + DEFAULT_MERGE_MESSAGE_MAX_APPROVERS: "10" + DEFAULT_MERGE_MESSAGE_OFFICIAL_APPROVERS_ONLY: "true" +repository.issue: + LOCK_REASONS: "Too heated,Off-topic,Resolved,Spam" +repository.signing: + SIGNING_KEY: "default" + INITIAL_COMMIT: "always" + CRUD_ACTIONS: "pubkey, twofa, parentsigned" + WIKI: "never" + MERGES: "pubkey, twofa, basesigned, commitssigned" +cors: + ENABLED: "false" + SCHEME: "http" + ALLOW_DOMAIN: "*" + ALLOW_SUBDOMAIN: "false" + METHODS: "GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS" + MAX_AGE: "10m" + ALLOW_CREDENTIALS: "false" +ui: + EXPLORE_PAGING_NUM: "20" + ISSUE_PAGING_NUM: "10" + FEED_MAX_COMMIT_NUM: "5" + GRAPH_MAX_COMMIT_NUM: "100" + CODE_COMMENT_LINES: "4" + THEME_COLOR_META_TAG: "`#6cc644`" + MAX_DISPLAY_FILE_SIZE: "8388608" + SHOW_USER_EMAIL: "true" + DEFAULT_THEME: "gitea" + THEMES: "gitea,arc-green" + REACTIONS: "+1, -1, laugh, hooray, confused, heart, rocket, eyes" + DEFAULT_SHOW_FULL_NAME: "false" + SEARCH_REPO_DESCRIPTION: "true" + USE_SERVICE_WORKER: "true" +ui.admin: + USER_PAGING_NUM: "50" + REPO_PAGING_NUM: "50" + NOTICE_PAGING_NUM: "25" + ORG_PAGING_NUM: "50" +ui.user: + REPO_PAGING_NUM: "15" +ui.meta: + AUTHOR: "Gitea - Git with a cup of tea" + DESCRIPTION: "Gitea (Git with a cup of tea) is a painless self-hosted Git service written in Go" + KEYWORDS: "go,git,self-hosted,gitea" +ui.notification: + MIN_TIMEOUT: "10s" + MAX_TIMEOUT: "60s" + TIMEOUT_STEP: "10s" + EVENT_SOURCE_UPDATE_TIME: "10s" +markdown: + ENABLE_HARD_LINE_BREAK_IN_COMMENTS: "true" + ENABLE_HARD_LINE_BREAK_IN_DOCUMENTS: "false" + FILE_EXTENSIONS: ".md,.markdown,.mdown,.mkd" +server: + PROTOCOL: "http" + DOMAIN: "localhost" + ROOT_URL: "%(PROTOCOL)s://%(DOMAIN)s:%(HTTP_PORT)s/" + HTTP_ADDR: "0.0.0.0" + HTTP_PORT: "3000" + REDIRECT_OTHER_PORT: "false" + PORT_TO_REDIRECT: "80" + UNIX_SOCKET_PERMISSION: "666" + LOCAL_ROOT_URL: "%(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/" + DISABLE_SSH: "false" + START_SSH_SERVER: "false" + SSH_DOMAIN: "%(DOMAIN)s" + SSH_PORT: "22" + SSH_LISTEN_PORT: "%(SSH_PORT)s" + SSH_CREATE_AUTHORIZED_KEYS_FILE: "true" + SSH_SERVER_CIPHERS: "aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, arcfour256, arcfour128" + SSH_SERVER_KEY_EXCHANGES: "diffie-hellman-group1-sha1, diffie-hellman-group14-sha1, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, curve25519-sha256@libssh.org" + SSH_SERVER_MACS: "hmac-sha2-256-etm@openssh.com, hmac-sha2-256, hmac-sha1, hmac-sha1-96" + SSH_KEYGEN_PATH: "ssh-keygen" + SSH_BACKUP_AUTHORIZED_KEYS: "true" + SSH_EXPOSE_ANONYMOUS: "false" + MINIMUM_KEY_SIZE_CHECK: "false" + OFFLINE_MODE: "false" + DISABLE_ROUTER_LOG: "false" + CERT_FILE: "https/cert.pem" + KEY_FILE: "https/key.pem" + APP_DATA_PATH: "data" + ENABLE_GZIP: "false" + ENABLE_PPROF: "false" + PPROF_DATA_PATH: "data/tmp/pprof" + LANDING_PAGE: "home" + LFS_START_SERVER: "false" + LFS_CONTENT_PATH: "data/lfs" + LFS_HTTP_AUTH_EXPIRY: "20m" + LFS_MAX_FILE_SIZE: "0" + LFS_LOCKS_PAGING_NUM: "50" + ALLOW_GRACEFUL_RESTARTS: "true" + GRACEFUL_HAMMER_TIME: "60s" + STARTUP_TIMEOUT: "0" + STATIC_CACHE_TIME: "6h" +ssh.minimum_key_sizes: + ED25519: "256" + ECDSA: "256" + RSA: "2048" + DSA: "1024" +database: + DB_TYPE: "mysql" + HOST: "127.0.0.1:3306" + NAME: "gitea" + USER: "root" + SSL_MODE: "disable" + CHARSET: "utf8mb4" + PATH: "data/gitea.db" + SQLITE_TIMEOUT: "500" + ITERATE_BUFFER_SIZE: "50" + LOG_SQL: "true" + DB_RETRIES: "10" + DB_RETRY_BACKOFF: "3s" + MAX_IDLE_CONNS: "2" + CONN_MAX_LIFETIME: "3s" + MAX_OPEN_CONNS: "0" +indexer: + ISSUE_INDEXER_TYPE: "bleve" + ISSUE_INDEXER_CONN_STR: "http://elastic:changeme@localhost:9200" + ISSUE_INDEXER_NAME: "gitea_issues" + ISSUE_INDEXER_PATH: "indexers/issues.bleve" + ISSUE_INDEXER_QUEUE_TYPE: "levelqueue" + ISSUE_INDEXER_QUEUE_DIR: "indexers/issues.queue" + ISSUE_INDEXER_QUEUE_CONN_STR: ""addrs" + ISSUE_INDEXER_QUEUE_BATCH_NUMBER: "20" + STARTUP_TIMEOUT: "30s" + REPO_INDEXER_ENABLED: "false" + REPO_INDEXER_PATH: "indexers/repos.bleve" + UPDATE_BUFFER_LEN: "20" + MAX_FILE_SIZE: "1048576" +queue: + TYPE: "persistable-channel" + DATADIR: "queues/" + LENGTH: "20" + BATCH_LENGTH: "20" + CONN_STR: ""addrs" + QUEUE_NAME: "_queue" + WRAP_IF_NECESSARY: "true" + MAX_ATTEMPTS: "10" + TIMEOUT: "15m30s" + WORKERS: "1" + MAX_WORKERS: "10" + BLOCK_TIMEOUT: "1s" + BOOST_TIMEOUT: "5m" + BOOST_WORKERS: "5" +admin: + DISABLE_REGULAR_ORG_CREATION: "false" + DEFAULT_EMAIL_NOTIFICATIONS: "enabled" +security: + INSTALL_LOCK: "false" + SECRET_KEY: "!#@FDEWREWR&*(" + LOGIN_REMEMBER_DAYS: "7" + COOKIE_USERNAME: "gitea_awesome" + COOKIE_REMEMBER_NAME: "gitea_incredible" + REVERSE_PROXY_AUTHENTICATION_USER: "X-WEBAUTH-USER" + REVERSE_PROXY_AUTHENTICATION_EMAIL: "X-WEBAUTH-EMAIL" + MIN_PASSWORD_LENGTH: "6" + IMPORT_LOCAL_PATHS: "false" + DISABLE_GIT_HOOKS: "false" + ONLY_ALLOW_PUSH_IF_GITEA_ENVIRONMENT_SET: "true" + PASSWORD_COMPLEXITY: "lower,upper,digit,spec" + PASSWORD_HASH_ALGO: "pbkdf2" + CSRF_COOKIE_HTTP_ONLY: "true" +openid: + ENABLE_OPENID_SIGNIN: "true" +service: + ACTIVE_CODE_LIVE_MINUTES: "180" + RESET_PASSWD_CODE_LIVE_MINUTES: "180" + REGISTER_EMAIL_CONFIRM: "false" + DISABLE_REGISTRATION: "false" + ALLOW_ONLY_EXTERNAL_REGISTRATION: "false" + REQUIRE_SIGNIN_VIEW: "false" + ENABLE_NOTIFY_MAIL: "false" + ENABLE_BASIC_AUTHENTICATION: "true" + ENABLE_REVERSE_PROXY_AUTHENTICATION: "false" + ENABLE_REVERSE_PROXY_AUTO_REGISTRATION: "false" + ENABLE_REVERSE_PROXY_EMAIL: "false" + ENABLE_CAPTCHA: "false" + CAPTCHA_TYPE: "image" + RECAPTCHA_URL: "https://www.google.com/recaptcha/" + DEFAULT_KEEP_EMAIL_PRIVATE: "false" + DEFAULT_ALLOW_CREATE_ORGANIZATION: "true" + DEFAULT_ORG_VISIBILITY: "public" + DEFAULT_ORG_MEMBER_VISIBLE: "false" + DEFAULT_ENABLE_DEPENDENCIES: "true" + ALLOW_CROSS_REPOSITORY_DEPENDENCIES: "true" + ENABLE_USER_HEATMAP: "true" + ENABLE_TIMETRACKING: "true" + DEFAULT_ENABLE_TIMETRACKING: "true" + DEFAULT_ALLOW_ONLY_CONTRIBUTORS_TO_TRACK_TIME: "true" + NO_REPLY_ADDRESS: "noreply.%(DOMAIN)s" + SHOW_REGISTRATION_BUTTON: "true" + SHOW_MILESTONES_DASHBOARD_PAGE: "true" + AUTO_WATCH_NEW_REPOS: "true" + AUTO_WATCH_ON_CHANGES: "false" +webhook: + QUEUE_LENGTH: "1000" + DELIVER_TIMEOUT: "5" + SKIP_TLS_VERIFY: "false" + PAGING_NUM: "10" +mailer: + ENABLED: "false" + SEND_BUFFER_LEN: "100" + SKIP_VERIFY: "false" + USE_CERTIFICATE: "false" + CERT_FILE: "custom/mailer/cert.pem" + KEY_FILE: "custom/mailer/key.pem" + IS_TLS_ENABLED: "false" + SEND_AS_PLAIN_TEXT: "false" + MAILER_TYPE: "smtp" + SENDMAIL_PATH: "sendmail" + SENDMAIL_TIMEOUT: "5m" +cache: + ENABLED: "true" + ADAPTER: "memory" + INTERVAL: "60" + ITEM_TTL: "16h" +cache.last_commit: + ENABLED: "true" + ITEM_TTL: "8760h" + COMMITS_COUNT: "1000" +session: + PROVIDER: "memory" + PROVIDER_CONFIG: "data/sessions" + COOKIE_NAME: "i_like_gitea" + COOKIE_SECURE: "false" + ENABLE_SET_COOKIE: "true" + GC_INTERVAL_TIME: "86400" + SESSION_LIFE_TIME: "86400" +picture: + AVATAR_UPLOAD_PATH: "data/avatars" + REPOSITORY_AVATAR_UPLOAD_PATH: "data/repo-avatars" + REPOSITORY_AVATAR_FALLBACK: "none" + REPOSITORY_AVATAR_FALLBACK_IMAGE: "/img/repo_default.png" + AVATAR_MAX_WIDTH: "4096" + AVATAR_MAX_HEIGHT: "3072" + AVATAR_MAX_FILE_SIZE: "1048576" + GRAVATAR_SOURCE: "gravatar" + DISABLE_GRAVATAR: "false" + ENABLE_FEDERATED_AVATAR: "false" +attachment: + ENABLED: "true" + PATH: "data/attachments" + ALLOWED_TYPES: "image/jpeg|image/png|application/zip|application/gzip" + MAX_SIZE: "4" + MAX_FILES: "5" +time: +log: + MODE: "console" + BUFFER_LEN: "10000" + REDIRECT_MACARON_LOG: "false" + MACARON: "file" + ROUTER_LOG_LEVEL: "Info" + ROUTER: "console" + ENABLE_ACCESS_LOG: "false" + ACCESS_LOG_TEMPLATE: "{{.Ctx.RemoteAddr}} - {{.Identity}} {{.Start.Format "[02/Jan/2006:15:04:05 -0700]" }} "{{.Ctx.Req.Method}} {{.Ctx.Req.RequestURI}} {{.Ctx.Req.Proto}}" {{.ResponseWriter.Status}} {{.ResponseWriter.Size}} "{{.Ctx.Req.Referer}}\" \"{{.Ctx.Req.UserAgent}}"" + ACCESS: "file" + LEVEL: "Info" + STACKTRACE_LEVEL: "None" +log.x: + FLAGS: "stdflags" + COLORIZE: "false" +log.console: + STDERR: "false" +log.file: + LOG_ROTATE: "true" + MAX_LINES: "1000000" + MAX_SIZE_SHIFT: "28" + DAILY_ROTATE: "true" + MAX_DAYS: "7" + COMPRESS: "true" + COMPRESSION_LEVEL: "-1" +log.conn: + RECONNECT_ON_MSG: "false" + RECONNECT: "false" + PROTOCOL: "tcp" +log.smtp: + SUBJECT: "Diagnostic message from server" +cron: + ENABLED: "true" + RUN_AT_START: "false" +cron.update_mirrors: + SCHEDULE: "@every 10m" +cron.repo_health_check: + SCHEDULE: "@every 24h" + TIMEOUT: "60s" +cron.check_repo_stats: + RUN_AT_START: "true" + SCHEDULE: "@every 24h" +cron.archive_cleanup: + ENABLED: "true" + RUN_AT_START: "true" + SCHEDULE: "@every 24h" + OLDER_THAN: "24h" +cron.sync_external_users: + RUN_AT_START: "false" + SCHEDULE: "@every 24h" + UPDATE_EXISTING: "true" +cron.update_migration_poster_id: + SCHEDULE: "@every 24h" +git: + DISABLE_DIFF_HIGHLIGHT: "false" + MAX_GIT_DIFF_LINES: "1000" + MAX_GIT_DIFF_LINE_CHARACTERS: "5000" + MAX_GIT_DIFF_FILES: "100" + ENABLE_AUTO_GIT_WIRE_PROTOCOL: "true" + PULL_REQUEST_PUSH_MESSAGE: "true" +git.timeout: + DEFAULT: "360" + MIGRATE: "600" + MIRROR: "300" + CLONE: "300" + PULL: "300" + GC: "60" +mirror: + DEFAULT_INTERVAL: "8h" + MIN_INTERVAL: "10m" +api: + ENABLE_SWAGGER: "true" + MAX_RESPONSE_ITEMS: "50" + DEFAULT_PAGING_NUM: "30" + DEFAULT_GIT_TREES_PER_PAGE: "1000" + DEFAULT_MAX_BLOB_SIZE: "10485760" +oauth2: + ENABLE: "true" + ACCESS_TOKEN_EXPIRATION_TIME: "3600" + REFRESH_TOKEN_EXPIRATION_TIME: "730" + INVALIDATE_REFRESH_TOKENS: "false" + JWT_SECRET: "Bk0yK7Y9g_p56v86KaHqjSbxvNvu3SbKoOdOt2ZcXvU" + MAX_TOKEN_LENGTH: "32767" +i18n: + LANGS: "en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,uk-UA,ja-JP,es-ES,pt-BR,pt-PT,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR" + NAMES: "English,简体中文,繁體中文(香港),繁體中文(台灣),Deutsch,français,Nederlands,latviešu,русский,Українська,日本語,español,português do Brasil,Português de Portugal,polski,български,italiano,suomi,Türkçe,čeština,српски,svenska,한국어" +U2F: +highlight.mapping: +other: + SHOW_FOOTER_BRANDING: "false" + SHOW_FOOTER_VERSION: "true" + SHOW_FOOTER_TEMPLATE_LOAD_TIME: "true" +markup.sanitizer.1: +markup.asciidoc: + ENABLED: "false" + FILE_EXTENSIONS: ".adoc,.asciidoc" + RENDER_COMMAND = "asciidoc --out-file: "- -"" + IS_INPUT_FILE: "false" +metrics: + ENABLED: "false" +task: + QUEUE_TYPE: "channel" + QUEUE_LENGTH: "1000" + QUEUE_CONN_STR: ""addrs" +migrations: + MAX_ATTEMPTS: "3" + RETRY_BACKOFF: "3" diff --git a/config/trantor.ini b/config/trantor.ini new file mode 100644 index 0000000..9029bf5 --- /dev/null +++ b/config/trantor.ini @@ -0,0 +1,1023 @@ +; This file lists the default values used by Gitea +; Copy required sections to your own app.ini (default is custom/conf/app.ini) +; and modify as needed. +; see https://docs.gitea.io/en-us/config-cheat-sheet/ for additional documentation. +; App name that shows in every page title +APP_NAME = Git Server on Trantor +; Change it if you run locally +RUN_USER = sysadmin +; Either "dev", "prod" or "test", default is "dev" +RUN_MODE = prod + +[repository] +ROOT = /mnt/data/git-server/repos +SCRIPT_TYPE = bash +; DETECTED_CHARSETS_ORDER tie-break order for detected charsets. +; If the charsets have equal confidence, tie-breaking will be done by order in this list +; with charsets earlier in the list chosen in preference to those later. +; Adding "defaults" will place the unused charsets at that position. +DETECTED_CHARSETS_ORDER = UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE, ISO-8859, windows-1252, ISO-8859, windows-1250, ISO-8859, ISO-8859, ISO-8859, windows-1253, ISO-8859, windows-1255, ISO-8859, windows-1251, windows-1256, KOI8-R, ISO-8859, windows-1254, Shift_JIS, GB18030, EUC-JP, EUC-KR, Big5, ISO-2022, ISO-2022, ISO-2022, IBM424_rtl, IBM424_ltr, IBM420_rtl, IBM420_ltr +; Default ANSI charset to override non-UTF-8 charsets to +ANSI_CHARSET = +; Force every new repository to be private +FORCE_PRIVATE = false +; Default privacy setting when creating a new repository, allowed values: last, private, public. Default is last which means the last setting used. +DEFAULT_PRIVATE = last +; Global limit of repositories per user, applied at creation time. -1 means no limit +MAX_CREATION_LIMIT = -1 +; Mirror sync queue length, increase if mirror syncing starts hanging +MIRROR_QUEUE_LENGTH = 1000 +; Patch test queue length, increase if pull request patch testing starts hanging +PULL_REQUEST_QUEUE_LENGTH = 1000 +; Preferred Licenses to place at the top of the List +; The name here must match the filename in conf/license or custom/conf/license +PREFERRED_LICENSES = Apache License 2.0,MIT License +; Disable the ability to interact with repositories using the HTTP protocol +DISABLE_HTTP_GIT = false +; Value for Access-Control-Allow-Origin header, default is not to present +; WARNING: This maybe harmful to you website if you do not give it a right value. +ACCESS_CONTROL_ALLOW_ORIGIN = +; Force ssh:// clone url instead of scp-style uri when default SSH port is used +USE_COMPAT_SSH_URI = false +; Close issues as long as a commit on any branch marks it as fixed +DEFAULT_CLOSE_ISSUES_VIA_COMMITS_IN_ANY_BRANCH = false +; Allow users to push local repositories to Gitea and have them automatically created for a user or an org +ENABLE_PUSH_CREATE_USER = false +ENABLE_PUSH_CREATE_ORG = false +; Comma separated list of globally disabled repo units. Allowed values: repo.issues, repo.ext_issues, repo.pulls, repo.wiki, repo.ext_wiki +DISABLED_REPO_UNITS = +; Comma separated list of default repo units. Allowed values: repo.code, repo.releases, repo.issues, repo.pulls, repo.wiki. +; Note: Code and Releases can currently not be deactivated. If you specify default repo units you should still list them for future compatibility. +; External wiki and issue tracker can't be enabled by default as it requires additional settings. +; Disabled repo units will not be added to new repositories regardless if it is in the default list. +DEFAULT_REPO_UNITS = repo.code,repo.releases,repo.issues,repo.pulls,repo.wiki +; Prefix archive files by placing them in a directory named after the repository +PREFIX_ARCHIVE_FILES = true +; Disable the creation of new mirrors. Pre-existing mirrors remain valid. +DISABLE_MIRRORS = false +; The default branch name of new repositories +DEFAULT_BRANCH = master + +[repository.editor] +; List of file extensions for which lines should be wrapped in the Monaco editor +; Separate extensions with a comma. To line wrap files without an extension, just put a comma +LINE_WRAP_EXTENSIONS = .txt,.md,.markdown,.mdown,.mkd, +; Valid file modes that have a preview API associated with them, such as api/v1/markdown +; Separate the values by commas. The preview tab in edit mode won't be displayed if the file extension doesn't match +PREVIEWABLE_FILE_MODES = markdown + +[repository.local] +; Path for local repository copy. Defaults to `tmp/local-repo` +LOCAL_COPY_PATH = tmp/local-repo +; Path for local wiki copy. Defaults to `tmp/local-wiki` +LOCAL_WIKI_PATH = tmp/local-wiki + +[repository.upload] +; Whether repository file uploads are enabled. Defaults to `true` +ENABLED = true +; Path for uploads. Defaults to `data/tmp/uploads` (tmp gets deleted on gitea restart) +TEMP_PATH = data/tmp/uploads +; One or more allowed types, e.g. image/jpeg|image/png. Nothing means any file type +ALLOWED_TYPES = +; Max size of each file in megabytes. Defaults to 3MB +FILE_MAX_SIZE = 3 +; Max number of files per upload. Defaults to 5 +MAX_FILES = 5 + +[repository.pull-request] +; List of prefixes used in Pull Request title to mark them as Work In Progress +WORK_IN_PROGRESS_PREFIXES = WIP:,[WIP] +; List of keywords used in Pull Request comments to automatically close a related issue +CLOSE_KEYWORDS = close,closes,closed,fix,fixes,fixed,resolve,resolves,resolved +; List of keywords used in Pull Request comments to automatically reopen a related issue +REOPEN_KEYWORDS = reopen,reopens,reopened +; In the default merge message for squash commits include at most this many commits +DEFAULT_MERGE_MESSAGE_COMMITS_LIMIT = 50 +; In the default merge message for squash commits limit the size of the commit messages to this +DEFAULT_MERGE_MESSAGE_SIZE = 5120 +; In the default merge message for squash commits walk all commits to include all authors in the Co-authored-by otherwise just use those in the limited list +DEFAULT_MERGE_MESSAGE_ALL_AUTHORS = false +; In default merge messages limit the number of approvers listed as Reviewed-by: to this many +DEFAULT_MERGE_MESSAGE_MAX_APPROVERS = 10 +; In default merge messages only include approvers who are official +DEFAULT_MERGE_MESSAGE_OFFICIAL_APPROVERS_ONLY = true + +[repository.issue] +; List of reasons why a Pull Request or Issue can be locked +LOCK_REASONS = Too heated,Off-topic,Resolved,Spam + +[repository.signing] +; GPG key to use to sign commits, Defaults to the default - that is the value of git config --get user.signingkey +; run in the context of the RUN_USER +; Switch to none to stop signing completely +SIGNING_KEY = default +; If a SIGNING_KEY ID is provided and is not set to default, use the provided Name and Email address as the signer. +; These should match a publicized name and email address for the key. (When SIGNING_KEY is default these are set to +; the results of git config --get user.name and git config --get user.email respectively and can only be overrided +; by setting the SIGNING_KEY ID to the correct ID.) +SIGNING_NAME = +SIGNING_EMAIL = +; Determines when gitea should sign the initial commit when creating a repository +; Either: +; - never +; - pubkey: only sign if the user has a pubkey +; - twofa: only sign if the user has logged in with twofa +; - always +; options other than none and always can be combined as comma separated list +INITIAL_COMMIT = always +; Determines when to sign for CRUD actions +; - as above +; - parentsigned: requires that the parent commit is signed. +CRUD_ACTIONS = pubkey, twofa, parentsigned +; Determines when to sign Wiki commits +; - as above +WIKI = never +; Determines when to sign on merges +; - basesigned: require that the parent of commit on the base repo is signed. +; - commitssigned: require that all the commits in the head branch are signed. +; - approved: only sign when merging an approved pr to a protected branch +MERGES = pubkey, twofa, basesigned, commitssigned + +[cors] +; More information about CORS can be found here: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#The_HTTP_response_headers +; enable cors headers (disabled by default) +ENABLED = false +; scheme of allowed requests +SCHEME = http +; list of requesting domains that are allowed +ALLOW_DOMAIN = * +; allow subdomains of headers listed above to request +ALLOW_SUBDOMAIN = false +; list of methods allowed to request +METHODS = GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS +; max time to cache response +MAX_AGE = 10m +; allow request with credentials +ALLOW_CREDENTIALS = false + +[ui] +; Number of repositories that are displayed on one explore page +EXPLORE_PAGING_NUM = 20 +; Number of issues that are displayed on one page +ISSUE_PAGING_NUM = 10 +; Number of maximum commits displayed in one activity feed +FEED_MAX_COMMIT_NUM = 5 +; Number of maximum commits displayed in commit graph. +GRAPH_MAX_COMMIT_NUM = 100 +; Number of line of codes shown for a code comment +CODE_COMMENT_LINES = 4 +; Value of `theme-color` meta tag, used by Android >= 5.0 +; An invalid color like "none" or "disable" will have the default style +; More info: https://developers.google.com/web/updates/2014/11/Support-for-theme-color-in-Chrome-39-for-Android +THEME_COLOR_META_TAG = `#6cc644` +; Max size of files to be displayed (default is 8MiB) +MAX_DISPLAY_FILE_SIZE = 8388608 +; Whether the email of the user should be shown in the Explore Users page +SHOW_USER_EMAIL = true +; Set the default theme for the Gitea install +DEFAULT_THEME = arc-green +; All available themes. Allow users select personalized themes regardless of the value of `DEFAULT_THEME`. +THEMES = gitea,arc-green,dark-blue,github,werefox,42l-dark,42l-light +; All available reactions users can choose on issues/prs and comments. +; Values can be emoji alias (:smile:) or a unicode emoji. +; For custom reactions, add a tightly cropped square image to public/emoji/img/reaction_name.png +REACTIONS = +1, -1, laugh, hooray, confused, heart, rocket, eyes +; Whether the full name of the users should be shown where possible. If the full name isn't set, the username will be used. +DEFAULT_SHOW_FULL_NAME = false +; Whether to search within description at repository search on explore page. +SEARCH_REPO_DESCRIPTION = true +; Whether to enable a Service Worker to cache frontend assets +USE_SERVICE_WORKER = true + +[ui.admin] +; Number of users that are displayed on one page +USER_PAGING_NUM = 50 +; Number of repos that are displayed on one page +REPO_PAGING_NUM = 50 +; Number of notices that are displayed on one page +NOTICE_PAGING_NUM = 25 +; Number of organizations that are displayed on one page +ORG_PAGING_NUM = 50 + +[ui.user] +; Number of repos that are displayed on one page +REPO_PAGING_NUM = 15 + +[ui.meta] +AUTHOR = kebler +DESCRIPTION = kebler.net git organizations +KEYWORDS = go,git,self-hosted,gitea + +[ui.notification] +; Control how often the notification endpoint is polled to update the notification +; The timeout will increase to MAX_TIMEOUT in TIMEOUT_STEPs if the notification count is unchanged +; Set MIN_TIMEOUT to 0 to turn off +MIN_TIMEOUT = 10s +MAX_TIMEOUT = 60s +TIMEOUT_STEP = 10s +; This setting determines how often the db is queried to get the latest notification counts. +; If the browser client supports EventSource and SharedWorker, a SharedWorker will be used in preference to polling notification. Set to -1 to disable the EventSource +EVENT_SOURCE_UPDATE_TIME = 10s + +[markdown] +; Render soft line breaks as hard line breaks, which means a single newline character between +; paragraphs will cause a line break and adding trailing whitespace to paragraphs is not +; necessary to force a line break. +; Render soft line breaks as hard line breaks for comments +ENABLE_HARD_LINE_BREAK_IN_COMMENTS = true +; Render soft line breaks as hard line breaks for markdown documents +ENABLE_HARD_LINE_BREAK_IN_DOCUMENTS = false +; Comma separated list of custom URL-Schemes that are allowed as links when rendering Markdown +; for example git,magnet,ftp (more at https://en.wikipedia.org/wiki/List_of_URI_schemes) +; URLs starting with http and https are always displayed, whatever is put in this entry. +CUSTOM_URL_SCHEMES = +; List of file extensions that should be rendered/edited as Markdown +; Separate the extensions with a comma. To render files without any extension as markdown, just put a comma +FILE_EXTENSIONS = .md,.markdown,.mdown,.mkd + +[server] +; The protocol the server listens on. One of 'http', 'https', 'unix' or 'fcgi'. +PROTOCOL = http +DOMAIN = localhost +ROOT_URL = https://git.kebler.net/ +; when STATIC_URL_PREFIX is empty it will follow ROOT_URL +STATIC_URL_PREFIX = +; The address to listen on. Either a IPv4/IPv6 address or the path to a unix socket. +HTTP_ADDR = 0.0.0.0 +; The port to listen on. Leave empty when using a unix socket. +HTTP_PORT = 3000 +; If REDIRECT_OTHER_PORT is true, and PROTOCOL is set to https an http server +; will be started on PORT_TO_REDIRECT and it will redirect plain, non-secure http requests to the main +; ROOT_URL. Defaults are false for REDIRECT_OTHER_PORT and 80 for +; PORT_TO_REDIRECT. +REDIRECT_OTHER_PORT = false +PORT_TO_REDIRECT = 80 +; Permission for unix socket +UNIX_SOCKET_PERMISSION = 666 +; Local (DMZ) URL for Gitea workers (such as SSH update) accessing web service. +; In most cases you do not need to change the default value. +; Alter it only if your SSH server node is not the same as HTTP node. +; Do not set this variable if PROTOCOL is set to 'unix'. +LOCAL_ROOT_URL = %(PROTOCOL)s://%(HTTP_ADDR)s:%(HTTP_PORT)s/ +; Disable SSH feature when not available +DISABLE_SSH = false +; Whether to use the builtin SSH server or not. +START_SSH_SERVER = false +; Username to use for the builtin SSH server. If blank, then it is the value of RUN_USER. +BUILTIN_SSH_SERVER_USER = +; Domain name to be exposed in clone URL +SSH_DOMAIN = localhost +; The network interface the builtin SSH server should listen on +SSH_LISTEN_HOST = +; Port number to be exposed in clone URL +SSH_PORT = 22 +; The port number the builtin SSH server should listen on +SSH_LISTEN_PORT = %(SSH_PORT)s +; Root path of SSH directory, default is '~/.ssh', but you have to use '/home/git/.ssh'. +SSH_ROOT_PATH = +; Gitea will create a authorized_keys file by default when it is not using the internal ssh server +; If you intend to use the AuthorizedKeysCommand functionality then you should turn this off. +SSH_CREATE_AUTHORIZED_KEYS_FILE = true +; For the built-in SSH server, choose the ciphers to support for SSH connections, +; for system SSH this setting has no effect +SSH_SERVER_CIPHERS = aes128-ctr, aes192-ctr, aes256-ctr, aes128-gcm@openssh.com, arcfour256, arcfour128 +; For the built-in SSH server, choose the key exchange algorithms to support for SSH connections, +; for system SSH this setting has no effect +SSH_SERVER_KEY_EXCHANGES = diffie-hellman-group1-sha1, diffie-hellman-group14-sha1, ecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-sha2-nistp521, curve25519-sha256@libssh.org +; For the built-in SSH server, choose the MACs to support for SSH connections, +; for system SSH this setting has no effect +SSH_SERVER_MACS = hmac-sha2-256-etm@openssh.com, hmac-sha2-256, hmac-sha1, hmac-sha1-96 +; Directory to create temporary files in when testing public keys using ssh-keygen, +; default is the system temporary directory. +SSH_KEY_TEST_PATH = +; Path to ssh-keygen, default is 'ssh-keygen' which means the shell is responsible for finding out which one to call. +SSH_KEYGEN_PATH = ssh-keygen +; Enable SSH Authorized Key Backup when rewriting all keys, default is true +SSH_BACKUP_AUTHORIZED_KEYS = true +; Enable exposure of SSH clone URL to anonymous visitors, default is false +SSH_EXPOSE_ANONYMOUS = false +; Indicate whether to check minimum key size with corresponding type +MINIMUM_KEY_SIZE_CHECK = false +; Disable CDN even in "prod" mode +OFFLINE_MODE = false +DISABLE_ROUTER_LOG = false +; Generate steps: +; $ ./gitea cert -ca=true -duration=8760h0m0s -host=myhost.example.com +; +; Or from a .pfx file exported from the Windows certificate store (do +; not forget to export the private key): +; $ openssl pkcs12 -in cert.pfx -out cert.pem -nokeys +; $ openssl pkcs12 -in cert.pfx -out key.pem -nocerts -nodes +; Paths are relative to CUSTOM_PATH +CERT_FILE = https/cert.pem +KEY_FILE = https/key.pem +; Root directory containing templates and static files. +; default is the path where Gitea is executed +STATIC_ROOT_PATH = +; Default path for App data +APP_DATA_PATH = data +; Application level GZIP support +ENABLE_GZIP = false +; Application profiling (memory and cpu) +; For "web" command it listens on localhost:6060 +; For "serve" command it dumps to disk at PPROF_DATA_PATH as (cpuprofile|memprofile)__ +ENABLE_PPROF = false +; PPROF_DATA_PATH, use an absolute path when you start gitea as service +PPROF_DATA_PATH = data/tmp/pprof +; Landing page, can be "home", "explore", "organizations" or "login" +; The "login" choice is not a security measure but just a UI flow change, use REQUIRE_SIGNIN_VIEW to force users to log in. +LANDING_PAGE = organizations +; Enables git-lfs support. true or false, default is false. +LFS_START_SERVER = true +; Where your lfs files reside, default is data/lfs. +LFS_CONTENT_PATH = /mnt/data/git-server/files +; LFS authentication secret, change this yourself +LFS_JWT_SECRET = 8TJnYipfl_sw9aMzwIjhwGTJzrSB1n9deL_vqOThNdg +; LFS authentication validity period (in time.Duration), pushes taking longer than this may fail. +LFS_HTTP_AUTH_EXPIRY = 20m +; Maximum allowed LFS file size in bytes (Set to 0 for no limit). +LFS_MAX_FILE_SIZE = 0 +; Maximum number of locks returned per page +LFS_LOCKS_PAGING_NUM = 50 +; Allow graceful restarts using SIGHUP to fork +ALLOW_GRACEFUL_RESTARTS = true +; After a restart the parent will finish ongoing requests before +; shutting down. Force shutdown if this process takes longer than this delay. +; set to a negative value to disable +GRACEFUL_HAMMER_TIME = 60s +; Allows the setting of a startup timeout and waithint for Windows as SVC service +; 0 disables this. +STARTUP_TIMEOUT = 0 +; Static resources, includes resources on custom/, public/ and all uploaded avatars web browser cache time, default is 6h +STATIC_CACHE_TIME = 6h + +; Define allowed algorithms and their minimum key length (use -1 to disable a type) +[ssh.minimum_key_sizes] +ED25519 = 256 +ECDSA = 256 +RSA = 2048 +DSA = 1024 +DB_TYPE = sqlite3 +HOST = 127.0.0.1:3306 +NAME = gitea +USER = gitea +PASSWD = +SSL_MODE = disable +PATH = db/git.db + +[database] +; Database to use. Either "mysql", "postgres", "mssql" or "sqlite3". +DB_TYPE = sqlite3 +HOST = 127.0.0.1:3306 +; NAME = gitea +; USER = root +; Use PASSWD = `your password` for quoting if you use special characters in the password. +; PASSWD = +; For Postgres, schema to use if different from "public". The schema must exist beforehand, +; the user must have creation privileges on it, and the user search path must be set +; to the look into the schema first. e.g.:ALTER USER user SET SEARCH_PATH = schema_name,"$user",public; +; SCHEMA = +; For Postgres, either "disable" (default), "require", or "verify-full" +; For MySQL, either "false" (default), "true", or "skip-verify" +; SSL_MODE = disable +; For MySQL only, either "utf8" or "utf8mb4", default is "utf8mb4". +; NOTICE: for "utf8mb4" you must use MySQL InnoDB > 5.6. Gitea is unable to check this. +; CHARSET = utf8mb4 +; For "sqlite3" and "tidb", use an absolute path when you start gitea as service +PATH = /mnt/data/git-server/db/git.db +; For "sqlite3" only. Query timeout +SQLITE_TIMEOUT = 500 +; For iterate buffer, default is 50 +ITERATE_BUFFER_SIZE = 50 +; Show the database generated SQL +LOG_SQL = true +; Maximum number of DB Connect retries +DB_RETRIES = 10 +; Backoff time per DB retry (time.Duration) +DB_RETRY_BACKOFF = 3s +; Max idle database connections on connnection pool, default is 2 +MAX_IDLE_CONNS = 2 +; Database connection max life time, default is 0 or 3s mysql (See #6804 & #7071 for reasoning) +CONN_MAX_LIFETIME = 3s +; Database maximum number of open connections, default is 0 meaning no maximum +MAX_OPEN_CONNS = 0 +NAME = +USER = +PASSWD = +SCHEMA = +SSL_MODE = disable +CHARSET = utf8 + +[indexer] +; Issue indexer type, currently support: bleve, db or elasticsearch, default is bleve +ISSUE_INDEXER_TYPE = bleve +; Issue indexer connection string, available when ISSUE_INDEXER_TYPE is elasticsearch +ISSUE_INDEXER_CONN_STR = http://elastic:changeme@localhost:9200 +; Issue indexer name, available when ISSUE_INDEXER_TYPE is elasticsearch +ISSUE_INDEXER_NAME = gitea_issues +; Issue indexer storage path, available when ISSUE_INDEXER_TYPE is bleve +ISSUE_INDEXER_PATH = indexers/issues.bleve +; Issue indexer queue, currently support: channel, levelqueue or redis, default is levelqueue +ISSUE_INDEXER_QUEUE_TYPE = levelqueue +; When ISSUE_INDEXER_QUEUE_TYPE is levelqueue, this will be the queue will be saved path, +; default is indexers/issues.queue +ISSUE_INDEXER_QUEUE_DIR = indexers/issues.queue +; When `ISSUE_INDEXER_QUEUE_TYPE` is `redis`, this will store the redis connection string. +ISSUE_INDEXER_QUEUE_CONN_STR = addrs=127.0.0.1:6379 db=0 +; Batch queue number, default is 20 +ISSUE_INDEXER_QUEUE_BATCH_NUMBER = 20 +; Timeout the indexer if it takes longer than this to start. +; Set to zero to disable timeout. +STARTUP_TIMEOUT = 30s +; repo indexer by default disabled, since it uses a lot of disk space +REPO_INDEXER_ENABLED = false +REPO_INDEXER_PATH = indexers/repos.bleve +UPDATE_BUFFER_LEN = 20 +MAX_FILE_SIZE = 1048576 +; A comma separated list of glob patterns (see https://github.com/gobwas/glob) to include +; in the index; default is empty +REPO_INDEXER_INCLUDE = +; A comma separated list of glob patterns to exclude from the index; ; default is empty +REPO_INDEXER_EXCLUDE = + +[queue] +; Specific queues can be individually configured with [queue.name]. [queue] provides defaults +; +; General queue queue type, currently support: persistable-channel, channel, level, redis, dummy +; default to persistable-channel +TYPE = persistable-channel +; data-dir for storing persistable queues and level queues, individual queues will be named by their type +DATADIR = queues/ +; Default queue length before a channel queue will block +LENGTH = 20 +; Batch size to send for batched queues +BATCH_LENGTH = 20 +; Connection string for redis queues this will store the redis connection string. +CONN_STR = addrs=127.0.0.1:6379 db=0 +; Provide the suffix of the default redis queue name - specific queues can be overriden within in their [queue.name] sections. +QUEUE_NAME = _queue +; If the queue cannot be created at startup - level queues may need a timeout at startup - wrap the queue: +WRAP_IF_NECESSARY = true +; Attempt to create the wrapped queue at max +MAX_ATTEMPTS = 10 +; Timeout queue creation +TIMEOUT = 15m30s +; Create a pool with this many workers +WORKERS = 1 +; Dynamically scale the worker pool to at this many workers +MAX_WORKERS = 10 +; Add boost workers when the queue blocks for BLOCK_TIMEOUT +BLOCK_TIMEOUT = 1s +; Remove the boost workers after BOOST_TIMEOUT +BOOST_TIMEOUT = 5m +; During a boost add BOOST_WORKERS +BOOST_WORKERS = 5 + +[admin] +; Disallow regular (non-admin) users from creating organizations. +DISABLE_REGULAR_ORG_CREATION = false +; Default configuration for email notifications for users (user configurable). Options: enabled, onmention, disabled +DEFAULT_EMAIL_NOTIFICATIONS = enabled + +[security] +; Whether the installer is disabled +INSTALL_LOCK = true +; !!CHANGE THIS TO KEEP YOUR USER DATA SAFE!! +# @FDEWREWR&*( +SECRET_KEY = hcsA6WS81j91zmILHzZQMEJJM1eghsAksm8hRPPmQttqWRMcDDe887iNzPTDYTaq +; How long to remember that a user is logged in before requiring relogin (in days) +LOGIN_REMEMBER_DAYS = 7 +COOKIE_USERNAME = gitea_awesome +COOKIE_REMEMBER_NAME = gitea_incredible +; Reverse proxy authentication header name of user name +REVERSE_PROXY_AUTHENTICATION_USER = X-WEBAUTH-USER +REVERSE_PROXY_AUTHENTICATION_EMAIL = X-WEBAUTH-EMAIL +; The minimum password length for new Users +MIN_PASSWORD_LENGTH = 6 +; Set to true to allow users to import local server paths +IMPORT_LOCAL_PATHS = false +; Set to true to prevent all users (including admin) from creating custom git hooks +DISABLE_GIT_HOOKS = false +; Set to false to allow pushes to gitea repositories despite having an incomplete environment - NOT RECOMMENDED +ONLY_ALLOW_PUSH_IF_GITEA_ENVIRONMENT_SET = true +; Comma separated list of character classes required to pass minimum complexity. +; If left empty or no valid values are specified, the default values ("lower,upper,digit,spec") will be used. +; Use "off" to disable checking. +PASSWORD_COMPLEXITY = lower,upper,digit,spec +; Password Hash algorithm, either "pbkdf2", "argon2", "scrypt" or "bcrypt" +PASSWORD_HASH_ALGO = pbkdf2 +; Set false to allow JavaScript to read CSRF cookie +CSRF_COOKIE_HTTP_ONLY = true +INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYmYiOjE1OTY3MzM5Mjl9.htwld4l5AgQ_7zaa1hEE3yBSfq50mWdP3VoE5xT6blc + +[openid] +; +; OpenID is an open, standard and decentralized authentication protocol. +; Your identity is the address of a webpage you provide, which describes +; how to prove you are in control of that page. +; +; For more info: https://en.wikipedia.org/wiki/OpenID +; +; Current implementation supports OpenID-2.0 +; +; Tested to work providers at the time of writing: +; - Any GNUSocial node (your.hostname.tld/username) +; - Any SimpleID provider (http://simpleid.koinic.net) +; - http://openid.org.cn/ +; - openid.stackexchange.com +; - login.launchpad.net +; - .livejournal.com +; +; Whether to allow signin in via OpenID +ENABLE_OPENID_SIGNIN = true +; Whether to allow registering via OpenID +; Do not include to rely on rhw DISABLE_REGISTRATION setting +; ENABLE_OPENID_SIGNUP = true +; Allowed URI patterns (POSIX regexp). +; Space separated. +; Only these would be allowed if non-blank. +; Example value: trusted.domain.org trusted.domain.net +WHITELISTED_URIS = +; Forbidden URI patterns (POSIX regexp). +; Space separated. +; Only used if WHITELISTED_URIS is blank. +; Example value: loadaverage.org/badguy stackexchange.com/.*spammer +BLACKLISTED_URIS = +ENABLE_OPENID_SIGNUP = true + +[service] +; Time limit to confirm account/email registration +ACTIVE_CODE_LIVE_MINUTES = 180 +; Time limit to perform the reset of a forgotten password +RESET_PASSWD_CODE_LIVE_MINUTES = 180 +; Whether a new user needs to confirm their email when registering. +REGISTER_EMAIL_CONFIRM = false +; List of domain names that are allowed to be used to register on a Gitea instance +; gitea.io,example.com +EMAIL_DOMAIN_WHITELIST = +; Disallow registration, only allow admins to create accounts. +DISABLE_REGISTRATION = false +; Allow registration only using third-party services, it works only when DISABLE_REGISTRATION is false +ALLOW_ONLY_EXTERNAL_REGISTRATION = false +; User must sign in to view anything. +REQUIRE_SIGNIN_VIEW = false +; Mail notification +ENABLE_NOTIFY_MAIL = false +; This setting enables gitea to be signed in with HTTP BASIC Authentication using the user's password +; If you set this to false you will not be able to access the tokens endpoints on the API with your password +; Please note that setting this to false will not disable OAuth Basic or Basic authentication using a token +ENABLE_BASIC_AUTHENTICATION = true +; More detail: https://github.com/gogits/gogs/issues/165 +ENABLE_REVERSE_PROXY_AUTHENTICATION = false +ENABLE_REVERSE_PROXY_AUTO_REGISTRATION = false +ENABLE_REVERSE_PROXY_EMAIL = false +; Enable captcha validation for registration +ENABLE_CAPTCHA = false +; Type of captcha you want to use. Options: image, recaptcha +CAPTCHA_TYPE = image +; Enable recaptcha to use Google's recaptcha service +; Go to https://www.google.com/recaptcha/admin to sign up for a key +RECAPTCHA_SECRET = +RECAPTCHA_SITEKEY = +; Change this to use recaptcha.net or other recaptcha service +RECAPTCHA_URL = https://www.google.com/recaptcha/ +; Default value for KeepEmailPrivate +; Each new user will get the value of this setting copied into their profile +DEFAULT_KEEP_EMAIL_PRIVATE = false +; Default value for AllowCreateOrganization +; Every new user will have rights set to create organizations depending on this setting +DEFAULT_ALLOW_CREATE_ORGANIZATION = true +; Either "public", "limited" or "private", default is "public" +; Limited is for signed user only +; Private is only for member of the organization +; Public is for everyone +DEFAULT_ORG_VISIBILITY = public +; Default value for DefaultOrgMemberVisible +; True will make the membership of the users visible when added to the organisation +DEFAULT_ORG_MEMBER_VISIBLE = false +; Default value for EnableDependencies +; Repositories will use dependencies by default depending on this setting +DEFAULT_ENABLE_DEPENDENCIES = true +; Dependencies can be added from any repository where the user is granted access or only from the current repository depending on this setting. +ALLOW_CROSS_REPOSITORY_DEPENDENCIES = true +; Enable heatmap on users profiles. +ENABLE_USER_HEATMAP = true +; Enable Timetracking +ENABLE_TIMETRACKING = true +; Default value for EnableTimetracking +; Repositories will use timetracking by default depending on this setting +DEFAULT_ENABLE_TIMETRACKING = true +; Default value for AllowOnlyContributorsToTrackTime +; Only users with write permissions can track time if this is true +DEFAULT_ALLOW_ONLY_CONTRIBUTORS_TO_TRACK_TIME = true +; Default value for the domain part of the user's email address in the git log +; if he has set KeepEmailPrivate to true. The user's email will be replaced with a +; concatenation of the user name in lower case, "@" and NO_REPLY_ADDRESS. +NO_REPLY_ADDRESS = noreply.%(DOMAIN)s +; Show Registration button +SHOW_REGISTRATION_BUTTON = true +; Show milestones dashboard page - a view of all the user's milestones +SHOW_MILESTONES_DASHBOARD_PAGE = true +; Default value for AutoWatchNewRepos +; When adding a repo to a team or creating a new repo all team members will watch the +; repo automatically if enabled +AUTO_WATCH_NEW_REPOS = true +; Default value for AutoWatchOnChanges +; Make the user watch a repository When they commit for the first time +AUTO_WATCH_ON_CHANGES = false + +[webhook] +; Hook task queue length, increase if webhook shooting starts hanging +QUEUE_LENGTH = 1000 +; Deliver timeout in seconds +DELIVER_TIMEOUT = 5 +; Allow insecure certification +SKIP_TLS_VERIFY = false +; Number of history information in each page +PAGING_NUM = 10 +; Proxy server URL, support http://, https//, socks://, blank will follow environment http_proxy/https_proxy +PROXY_URL = +; Comma separated list of host names requiring proxy. Glob patterns (*) are accepted; use ** to match all hosts. +PROXY_HOSTS = + +[mailer] +ENABLED = false +; Buffer length of channel, keep it as it is if you don't know what it is. +SEND_BUFFER_LEN = 100 +; Prefix displayed before subject in mail +SUBJECT_PREFIX = +; Mail server +; Gmail: smtp.gmail.com:587 +; QQ: smtp.qq.com:465 +; Using STARTTLS on port 587 is recommended per RFC 6409. +; Note, if the port ends with "465", SMTPS will be used. +HOST = +; Disable HELO operation when hostnames are different. +DISABLE_HELO = +; Custom hostname for HELO operation, if no value is provided, one is retrieved from system. +HELO_HOSTNAME = +; Whether or not to skip verification of certificates; `true` to disable verification. This option is unsafe. Consider adding the certificate to the system trust store instead. +SKIP_VERIFY = false +; Use client certificate +USE_CERTIFICATE = false +CERT_FILE = custom/mailer/cert.pem +KEY_FILE = custom/mailer/key.pem +; Should SMTP connect with TLS, (if port ends with 465 TLS will always be used.) +; If this is false but STARTTLS is supported the connection will be upgraded to TLS opportunistically. +IS_TLS_ENABLED = false +; Mail from address, RFC 5322. This can be just an email address, or the `"Name" ` format +FROM = +; Mailer user name and password +; Please Note: Authentication is only supported when the SMTP server communication is encrypted with TLS (this can be via STARTTLS) or `HOST=localhost`. +USER = +; Use PASSWD = `your password` for quoting if you use special characters in the password. +PASSWD = +; Send mails as plain text +SEND_AS_PLAIN_TEXT = false +; Set Mailer Type (either SMTP, sendmail or dummy to just send to the log) +MAILER_TYPE = smtp +; Specify an alternative sendmail binary +SENDMAIL_PATH = sendmail +; Specify any extra sendmail arguments +SENDMAIL_ARGS = +; Timeout for Sendmail +SENDMAIL_TIMEOUT = 5m + +[cache] +; if the cache enabled +ENABLED = true +; Either "memory", "redis", or "memcache", default is "memory" +ADAPTER = memory +; For "memory" only, GC interval in seconds, default is 60 +INTERVAL = 60 +; For "redis" and "memcache", connection host address +; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180 +; memcache: `127.0.0.1:11211` +HOST = +; Time to keep items in cache if not used, default is 16 hours. +; Setting it to 0 disables caching +ITEM_TTL = 16h + +; Last commit cache +[cache.last_commit] +; if the cache enabled +ENABLED = true +; Time to keep items in cache if not used, default is 8760 hours. +; Setting it to 0 disables caching +ITEM_TTL = 8760h +; Only enable the cache when repository's commits count great than +COMMITS_COUNT = 1000 + +[session] +; Either "memory", "file", or "redis", default is "memory" +PROVIDER = file +; Provider config options +; memory: doesn't have any config yet +; file: session file path, e.g. `data/sessions` +; redis: network=tcp,addr=:6379,password=macaron,db=0,pool_size=100,idle_timeout=180 +; mysql: go-sql-driver/mysql dsn config string, e.g. `root:password@/session_table` +PROVIDER_CONFIG = data/sessions +; Session cookie name +COOKIE_NAME = i_like_gitea +; If you use session in https only, default is false +COOKIE_SECURE = false +; Enable set cookie, default is true +ENABLE_SET_COOKIE = true +; Session GC time interval in seconds, default is 86400 (1 day) +GC_INTERVAL_TIME = 86400 +; Session life time in seconds, default is 86400 (1 day) +SESSION_LIFE_TIME = 86400 + +[picture] +AVATAR_UPLOAD_PATH = data/avatars +REPOSITORY_AVATAR_UPLOAD_PATH = data/repo-avatars +; How Gitea deals with missing repository avatars +; none = no avatar will be displayed; random = random avatar will be displayed; image = default image will be used +REPOSITORY_AVATAR_FALLBACK = none +REPOSITORY_AVATAR_FALLBACK_IMAGE = /img/repo_default.png +; Max Width and Height of uploaded avatars. +; This is to limit the amount of RAM used when resizing the image. +AVATAR_MAX_WIDTH = 4096 +AVATAR_MAX_HEIGHT = 3072 +; Maximum alloved file size for uploaded avatars. +; This is to limit the amount of RAM used when resizing the image. +AVATAR_MAX_FILE_SIZE = 1048576 +; Chinese users can choose "duoshuo" +; or a custom avatar source, like: http://cn.gravatar.com/avatar/ +GRAVATAR_SOURCE = gravatar +; This value will always be true in offline mode. +DISABLE_GRAVATAR = false +; Federated avatar lookup uses DNS to discover avatar associated +; with emails, see https://www.libravatar.org +; This value will always be false in offline mode or when Gravatar is disabled. +ENABLE_FEDERATED_AVATAR = false + +[attachment] +; Whether attachments are enabled. Defaults to `true` +ENABLED = true +; Path for attachments. Defaults to `data/attachments` +PATH = data/attachments +; One or more allowed types, e.g. "image/jpeg|image/png". Use "*/*" for all types. +ALLOWED_TYPES = image/jpeg|image/png|application/zip|application/gzip +; Max size of each file. Defaults to 4MB +MAX_SIZE = 4 +; Max number of files per upload. Defaults to 5 +MAX_FILES = 5 + +[time] +; Specifies the format for fully outputted dates. Defaults to RFC1123 +; Special supported values are ANSIC, UnixDate, RubyDate, RFC822, RFC822Z, RFC850, RFC1123, RFC1123Z, RFC3339, RFC3339Nano, Kitchen, Stamp, StampMilli, StampMicro and StampNano +; For more information about the format see http://golang.org/pkg/time/#pkg-constants +FORMAT = +; Location the UI time display i.e. Asia/Shanghai +; Empty means server's location setting +DEFAULT_UI_LOCATION = + +[log] +ROOT_PATH = /mnt/data/git-server/log +; Either "console", "file", "conn", "smtp" or "database", default is "console" +; Use comma to separate multiple modes, e.g. "console, file" +MODE = file +; Buffer length of the channel, keep it as it is if you don't know what it is. +BUFFER_LEN = 10000 +REDIRECT_MACARON_LOG = false +MACARON = file +; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Info" +ROUTER_LOG_LEVEL = Info +ROUTER = console +ENABLE_ACCESS_LOG = false +ACCESS_LOG_TEMPLATE = {{.Ctx.RemoteAddr}} - {{.Identity}} {{.Start.Format "[02/Jan/2006:15:04:05 -0700]" }} "{{.Ctx.Req.Method}} {{.Ctx.Req.RequestURI}} {{.Ctx.Req.Proto}}" {{.ResponseWriter.Status}} {{.ResponseWriter.Size}} "{{.Ctx.Req.Referer}}\" \"{{.Ctx.Req.UserAgent}}" +ACCESS = file +; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "Trace" +LEVEL = info +; Either "Trace", "Debug", "Info", "Warn", "Error", "Critical", default is "None" +STACKTRACE_LEVEL = None + +; Generic log modes +[log.x] +FLAGS = stdflags +EXPRESSION = +PREFIX = +COLORIZE = false + +; For "console" mode only +[log.console] +LEVEL = +STDERR = false + +; For "file" mode only +[log.file] +LEVEL = +; Set the file_name for the logger. If this is a relative path this +; will be relative to ROOT_PATH +FILE_NAME = +; This enables automated log rotate(switch of following options), default is true +LOG_ROTATE = true +; Max number of lines in a single file, default is 1000000 +MAX_LINES = 1000000 +; Max size shift of a single file, default is 28 means 1 << 28, 256MB +MAX_SIZE_SHIFT = 28 +; Segment log daily, default is true +DAILY_ROTATE = true +; delete the log file after n days, default is 7 +MAX_DAYS = 7 +; compress logs with gzip +COMPRESS = true +; compression level see godoc for compress/gzip +COMPRESSION_LEVEL = -1 + +; For "conn" mode only +[log.conn] +LEVEL = +; Reconnect host for every single message, default is false +RECONNECT_ON_MSG = false +; Try to reconnect when connection is lost, default is false +RECONNECT = false +; Either "tcp", "unix" or "udp", default is "tcp" +PROTOCOL = tcp +; Host address +ADDR = + +; For "smtp" mode only +[log.smtp] +LEVEL = +; Name displayed in mail title, default is "Diagnostic message from server" +SUBJECT = Diagnostic message from server +; Mail server +HOST = +; Mailer user name and password +USER = +; Use PASSWD = `your password` for quoting if you use special characters in the password. +PASSWD = +; Receivers, can be one or more, e.g. 1@example.com,2@example.com +RECEIVERS = + +[cron] +; Enable running cron tasks periodically. +ENABLED = true +; Run cron tasks when Gitea starts. +RUN_AT_START = false + +; Update mirrors +[cron.update_mirrors] +SCHEDULE = @every 10m + +; Repository health check +[cron.repo_health_check] +SCHEDULE = @every 24h +TIMEOUT = 60s +; Arguments for command 'git fsck', e.g. "--unreachable --tags" +; see more on http://git-scm.com/docs/git-fsck +ARGS = + +; Check repository statistics +[cron.check_repo_stats] +RUN_AT_START = true +SCHEDULE = @every 24h + +; Clean up old repository archives +[cron.archive_cleanup] +; Whether to enable the job +ENABLED = true +; Whether to always run at least once at start up time (if ENABLED) +RUN_AT_START = true +; Time interval for job to run +SCHEDULE = @every 24h +; Archives created more than OLDER_THAN ago are subject to deletion +OLDER_THAN = 24h + +; Synchronize external user data (only LDAP user synchronization is supported) +[cron.sync_external_users] +; Synchronize external user data when starting server (default false) +RUN_AT_START = false +; Interval as a duration between each synchronization (default every 24h) +SCHEDULE = @every 24h +; Create new users, update existing user data and disable users that are not in external source anymore (default) +; or only create new users if UPDATE_EXISTING is set to false +UPDATE_EXISTING = true + +; Update migrated repositories' issues and comments' posterid, it will always attempt synchronization when the instance starts. +[cron.update_migration_poster_id] +; Interval as a duration between each synchronization. (default every 24h) +SCHEDULE = @every 24h + +[git] +; The path of git executable. If empty, Gitea searches through the PATH environment. +PATH = +; Disables highlight of added and removed changes +DISABLE_DIFF_HIGHLIGHT = false +; Max number of lines allowed in a single file in diff view +MAX_GIT_DIFF_LINES = 1000 +; Max number of allowed characters in a line in diff view +MAX_GIT_DIFF_LINE_CHARACTERS = 5000 +; Max number of files shown in diff view +MAX_GIT_DIFF_FILES = 100 +; Arguments for command 'git gc', e.g. "--aggressive --auto" +; see more on http://git-scm.com/docs/git-gc/ +GC_ARGS = +; If use git wire protocol version 2 when git version >= 2.18, default is true, set to false when you always want git wire protocol version 1 +ENABLE_AUTO_GIT_WIRE_PROTOCOL = true +; Respond to pushes to a non-default branch with a URL for creating a Pull Request (if the repository has them enabled) +PULL_REQUEST_PUSH_MESSAGE = true + +; Operation timeout in seconds +[git.timeout] +DEFAULT = 360 +MIGRATE = 600 +MIRROR = 300 +CLONE = 300 +PULL = 300 +GC = 60 + +[mirror] +; Default interval as a duration between each check +DEFAULT_INTERVAL = 8h +; Min interval as a duration must be > 1m +MIN_INTERVAL = 10m + +[api] +; Enables Swagger. True or false; default is true. +ENABLE_SWAGGER = true +; Max number of items in a page +MAX_RESPONSE_ITEMS = 50 +; Default paging number of api +DEFAULT_PAGING_NUM = 30 +; Default and maximum number of items per page for git trees api +DEFAULT_GIT_TREES_PER_PAGE = 1000 +; Default size of a blob returned by the blobs API (default is 10MiB) +DEFAULT_MAX_BLOB_SIZE = 10485760 + +[oauth2] +; Enables OAuth2 provider +ENABLE = true +; Lifetime of an OAuth2 access token in seconds +ACCESS_TOKEN_EXPIRATION_TIME = 3600 +; Lifetime of an OAuth2 access token in hours +REFRESH_TOKEN_EXPIRATION_TIME = 730 +; Check if refresh token got already used +INVALIDATE_REFRESH_TOKENS = false +; OAuth2 authentication secret for access and refresh tokens, change this to a unique string. +JWT_SECRET = Bk0yK7Y9g_p56v86KaHqjSbxvNvu3SbKoOdOt2ZcXvU +; Maximum length of oauth2 token/cookie stored on server +MAX_TOKEN_LENGTH = 32767 + +[i18n] +LANGS = en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,uk-UA,ja-JP,es-ES,pt-BR,pt-PT,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR +NAMES = English,简体中文,繁體中文(香港),繁體中文(台灣),Deutsch,français,Nederlands,latviešu,русский,Українська,日本語,español,português do Brasil,Português de Portugal,polski,български,italiano,suomi,Türkçe,čeština,српски,svenska,한국어 + +[U2F] + +; NOTE: THE DEFAULT VALUES HERE WILL NEED TO BE CHANGED +; Two Factor authentication with security keys +; https://developers.yubico.com/U2F/App_ID.html +; APP_ID = http://localhost:3000/ +; Comma seperated list of trusted facets +; TRUSTED_FACETS = http://localhost:3000/ +; Extension mapping to highlight class +; e.g. .toml=ini +[highlight.mapping] + +[other] +SHOW_FOOTER_BRANDING = false +; Show version information about Gitea and Go in the footer +SHOW_FOOTER_VERSION = true +; Show template execution time in the footer +SHOW_FOOTER_TEMPLATE_LOAD_TIME = true + +[markup.sanitizer.1] + +; The following keys can appear once to define a sanitation policy rule. +; This section can appear multiple times by adding a unique alphanumeric suffix to define multiple rules. +; e.g., [markup.sanitizer.1] -> [markup.sanitizer.2] -> [markup.sanitizer.TeX] +; ELEMENT = span +; ALLOW_ATTR = class +; REGEXP = ^(info|warning|error)$ +[markup.asciidoc] +ENABLED = false +; List of file extensions that should be rendered by an external command +FILE_EXTENSIONS = .adoc,.asciidoc +; External command to render all matching extensions +RENDER_COMMAND = asciidoc --out-file=- - +; Don't pass the file on STDIN, pass the filename as argument instead. +IS_INPUT_FILE = false + +[metrics] +; Enables metrics endpoint. True or false; default is false. +ENABLED = false +; If you want to add authorization, specify a token here +TOKEN = + +[task] +; Task queue type, could be `channel` or `redis`. +QUEUE_TYPE = channel +; Task queue length, available only when `QUEUE_TYPE` is `channel`. +QUEUE_LENGTH = 1000 +; Task queue connection string, available only when `QUEUE_TYPE` is `redis`. +; If there is a password of redis, use `addrs=127.0.0.1:6379 password=123 db=0`. +QUEUE_CONN_STR = addrs=127.0.0.1:6379 db=0 + +[migrations] +; Max attempts per http/https request on migrations. +MAX_ATTEMPTS = 3 +; Backoff time per http/https request retry (seconds) +RETRY_BACKOFF = 3 diff --git a/frontend/default/public/css/theme-42l-dark.css b/frontend/default/public/css/theme-42l-dark.css new file mode 100644 index 0000000..5ec8441 --- /dev/null +++ b/frontend/default/public/css/theme-42l-dark.css @@ -0,0 +1,116 @@ +@import "/css/theme-arc-green.css"; + +* { + scrollbar-width: auto; + scrollbar-color: #575d6c rgb(64, 69, 82); +} + +::-webkit-scrollbar { + width: 12px!important; + height: 10px!important; +} +::-webkit-scrollbar-thumb { + border-radius: 0px !important; + background: #575d6c !important; +} + +::-webkit-scrollbar-track { + background: rgb(64, 69, 82) !important; +} + +.ui.bar { + background-image: linear-gradient(-90deg,#9f2e45,#5d3067) !important; +} + +#navbar > .item, +#navbar > .right.menu > .item { + color: white; +} + +#navbar > .item.active, +#navbar > .right.menu > .item.active { + background: rgba(34, 34, 34, 0.28); +} + +#navbar-expand-toggle { + color: white !important; + background: #383c4a !important; +} + +#navbar-expand-toggle { + color: white !important; + background: #383c4a !important; +} + +#navbar-expand-toggle:hover { + background: inherit !important; +} + +.home .hero .octicon { + color: inherit !important; +} + +.ui.breadcrumb a, +a:not(.ui), +.ui.card > .extra a:not(.ui), +a { + color: white; +} + +.ui.breadcrumb a:hover, +a:not(.ui):hover, +.ui.card > .extra a:not(.ui):hover, +a:hover { + color: lightgray; +} + +/* Star and watch number */ +.ui.labeled.button:not([class*="left labeled"]) > .label, +.ui[class*="left labeled"].button > .button { + color: #9b9b9b; +} + +.ui.blue.button, +.ui.blue.buttons .button, +.ui.green.button, +.ui.green.buttons .button { + background-color: #4e5260; +} + +.ui.blue.button:hover, +.ui.blue.buttons .button:hover, +.ui.green.button:hover, +.ui.green.buttons .button:hover, +.ui.blue.button:focus, +.ui.blue.buttons .button:focus, +.ui.green.button:focus, +.ui.green.buttons .button:focus { + background-color: #60636f; +} + +#repo-desc a, +.file-view a { + color: #4bf; +} + +#repo-desc a, +.file-view a:hover { + color: #00a3e2; +} + +.captcha-img { + background-color: white; +} + +.ui.pagination.menu .active.item { + background-color: #4e5260; +} + +/* not enough contrast on wiki pages */ +.ui.list > .item > .content, .ui.segment { + color: #e3e3e3 !important; +} + +.breadcrumb .divider, .ui.header { + color: #e3e3e3 !important; +} diff --git a/frontend/default/public/css/theme-42l-light.css b/frontend/default/public/css/theme-42l-light.css new file mode 100644 index 0000000..2817cfd --- /dev/null +++ b/frontend/default/public/css/theme-42l-light.css @@ -0,0 +1,17 @@ +.ui.bar { + background-image: linear-gradient(-90deg,#9f2e45,#5d3067) !important; +} + +#navbar > .item, +#navbar > .right.menu > .item { + color: white; +} + +#navbar > .item.active, +#navbar > .right.menu > .item.active { + background: rgba(34, 34, 34, 0.28); +} + +#navbar-expand-toggle { + color: white !important; +} diff --git a/frontend/default/public/css/theme-dark-blue.css b/frontend/default/public/css/theme-dark-blue.css new file mode 100644 index 0000000..4295b69 --- /dev/null +++ b/frontend/default/public/css/theme-dark-blue.css @@ -0,0 +1,1095 @@ + body { + background: #131313; + color: #afafaf; + } + a { + color: #86acd1; + } + .following.bar.light { + background: #001038; + } + .ui.secondary.menu .item { + color: #cfc5c5; + padding: 8px 8px; + } + .ui.secondary.menu .active.item { + color: #fafafa; + padding: 5px 12px; + } + .following.bar .top.menu a.item:hover { + color: #fff; + } + .following.bar.light { + border-bottom: 1px solid #313131; + } + .ui.attached.header { + background: #060621; + border: 1px solid #203241; + color: #dbdbdb; + } + .ui.attached.table { + border: 1px solid #203241; + background: #001221 + } + .feeds .list ul li:not(:last-child) { + border-bottom: 1px solid #203241; + } + .feeds .list ul li.private { + background: #151825; + } + .ui.secondary.menu .dropdown.item:hover, + .ui.secondary.menu .link.item:hover, + .ui.secondary.menu a.item:hover { + color: #fff; + } + .ui.menu .ui.dropdown .menu > .item { + background: #020410 !important; + color: #9e9e9e !important; + } + .ui.secondary.menu .dropdown.item > .menu, + .ui.text.menu .dropdown.item > .menu { + border: 1px solid #203241; + } + footer { + background: #060633; + border-top: 1px solid #313131; + } + .ui.menu .dropdown.item .menu { + background: #020410; + } + .ui.menu .ui.dropdown .menu > .item:hover, + .ui.menu .ui.dropdown .menu > .selected.item { + color: #fff!important; + } + .ui.dropdown .menu > .header { + color: #dbdbdb; + } + .ui.red.label, + .ui.red.labels .label { + background-color: #802020!important; + border-color: #DB2828!important; + } + .ui.menu { + background: #0202aa; + border: 1px solid #203241; + } + .ui.menu .item { + background: #051865; + color: #aaaaaa; + } + .ui.menu .active.item:hover, + .ui.vertical.menu .active.item:hover { + color: #dbdbdb; + } + .ui.link.menu .item:hover, + .ui.menu .dropdown.item:hover, + .ui.menu .link.item:hover, + .ui.menu a.item:hover { + color: #dbdbdb; + } + .ui.menu .active.item { + background: #051552; + color: #dbdbdb; + } + .ui.input input { + background: #000009; + border: 1px solid #203241; + color: #dbdbdb; + } + .ui.input input:focus, + .ui.input.focus input { + background: #000000; + border: 1px solid #456580; + color: #dbdbdb; + } + .ui.label { + color: #dbdbdb; + background-color: #313f4c; + } + .issue.list > .item .title { + color: #668cb1; + } + .issue.list > .item .title:hover { + color: #aaaabb; + } + .issue.list > .item { + border-bottom: 1px dashed #475767; + } + .ui.green.label, + .ui.green.labels .label { + background-color: #2d693b!important; + border-color: #2d693b!important; + } + .issue.list > .item .comment { + color: #129c92; + } + .ui.basic.button, + .ui.basic.buttons .button { + color: #a9a9a9 !important; + } + .ui.basic.blue.button, .ui.basic.blue.buttons .button { + color: #b9c1ce !important; + } + .ui.basic.red.active.button, + .ui.basic.red.buttons .active.button { + box-shadow: 0 0 0 1px #c75252 inset!important; + color: #c75252!important; + } + .ui.basic.button:focus, + .ui.basic.button:hover, + .ui.basic.buttons .button:focus, + .ui.basic.buttons .button:hover { + background: transparent!important; + color: #dbdbdb!important; + } + .ui.menu .item.disabled, + .ui.menu .item.disabled:hover { + cursor: default !important; + background-color: #151825 !important; + color: #9e9e9e; + } + .ui.pagination.menu .active.item { + color: #dbdbdb; + background-color: #212d38; + } + .repository .header-wrapper { + background-color: #151825; + } + .ui.tabular.menu .active.item { + background: #232323; + color: #dbdbdb; + border-left: 1px solid transparent; + border-right: 1px solid transparent; + border-top: 1px solid #313c47; + } + .ui.secondary.pointing.menu .item { + border-bottom-width: 0px; + align-self: center; + background: #050542; + margin: 1px 1px 1px 1px; + padding: 8px 6px; + } + .ui.tabular.menu .item { + color: #9e9e9e; + } + .ui.tabular.menu .item:hover { + color: #dbdbdb; + } + .ui.header, + .ui.breadcrumb .divider { + color: #9e9e9e; + } + .ui.blue.label, + .ui.blue.labels .label { + background-color: #081f6f !important; + border-color: #081f6f !important; + color: #b5b5b5 !important; + } + .ui.menu .item > .label { + background: #565454; + } + .ui.blue.button, + .ui.blue.buttons .button { + background-color: #26577b; + } + .ui.form input:not([type]), + .ui.form input[type=text], + .ui.form input[type=email], + .ui.form input[type=search], + .ui.form input[type=password], + .ui.form input[type=date], + .ui.form input[type=datetime-local], + .ui.form input[type=tel], + .ui.form input[type=time], + .ui.form input[type=url], + .ui.form input[type=number] { + background: #151825; + border: 1px solid rgb(48, 66, 81); + } + .ui.form input:not([type]):focus, + .ui.form input[type=text]:focus, + .ui.form input[type=email]:focus, + .ui.form input[type=search]:focus, + .ui.form input[type=password]:focus, + .ui.form input[type=date]:focus, + .ui.form input[type=datetime-local]:focus, + .ui.form input[type=tel]:focus, + .ui.form input[type=time]:focus, + .ui.form input[type=url]:focus, + .ui.form input[type=number]:focus { + background: #151825; + border: 1px solid #456580; + color: #dbdbdb; + } + .ui.action.input:not([class*="left action"]) input:focus { + border-right-color: #456580!important; + } + .ui.green.button, + .ui.green.buttons .button { + background-color: #217a45; + color: #fff; + text-shadow: none; + background-image: none; + } + .ui.green.button:focus, + .ui.green.buttons .button:focus { + background-color: #085121 !important; + color: #fff; + text-shadow: none; + } + .ui.button { + background: #0c0c53; + border: 1px solid #313c47; + color: #dbdbdb; + } + .ui.labeled.button:not([class*="left labeled"]) > .label, + .ui[class*="left labeled"].button > .button { + background: #151825; + border: 1px solid #313c47; + color: #a0bdcb; + } + .ui.button:hover { + background-color: #151899; + color: #dbdbdb; + } + .ui.table thead th { + background: #05174b; + color: #dbdbdb !important; + } + .repository.file.list #repo-files-table tr:hover { + background-color: #232323; + } + .ui.table { + color: #797979!important; + border: 1px solid #313c47; + background: #18242f; + } + .ui.table tbody tr { + border-bottom: 1px solid red; + background: #151515; + } + .ui.attached.table.segment { + background: #020210; + color: #dbdbdb!important; + } + .markdown:not(code) h2 { + border-bottom: 1px solid #203241; + } + .hljs, + .hljs-keyword, + .hljs-selector-tag, + .hljs-subst { + color: #dbdbdb !important; + background: #181818 !important; + } + .markdown:not(code) .highlight pre, + .markdown:not(code) pre { + background-color: #081004; + border: 1px solid #246; + } + .ui.dropdown .menu { + background: #151825; + } + .ui.dropdown .menu > .message:not(.ui) { + color: rgb(99, 99, 99); + } + .ui.segment { + background: #020410; + color: #9e9e9e!important; + border: 1px solid #313c47; + } + .ui.active.button:active, + .ui.button:active, + .ui.button:focus { + background-color: #2e3e4e; + color: #dbdbdb; + } + .ui.dropdown .menu .selected.item, + .ui.dropdown.selected { + color: #dbdbdb; + } + .ui.dropdown .menu > .item:hover { + color: #dbdbdb; + } + .ui.dropdown .menu > .item { + color: #9e9e9e; + } + .ui.attached.segment { + border: 1px solid #313c47; + } + .repository.view.issue .comment-list .comment .content > .bottom.segment { + background: #151825; + } + .repository.view.issue .comment-list .comment .content .header { + color: #dbdbdb; + background-color: #121247; + border-bottom: 1px solid #313c47; + } + .ui.comments .comment .actions a { + color: #dbdbdb; + } + .repository.view.issue .comment-list .comment .content .header:after { + border-right-color: #121247; + } + .repository.view.issue .comment-list .comment .content .header:before { + border-right-color: #121247; + } + .repository.view.issue .comment-list:before { + background-color: #121247; + } + .repository .comment.form .content .form:after { + border-right-color: #121247; + } + .repository .comment.form .content .form:before { + border-right-color: #121247; + } + .ui .text.grey { + color: #d0d0d0 !important; + } + .ui .text.grey a { + color: #66dbdd !important; + } + .ui .text.grey a:hover { + color: #aadbff !important; + } + .ui.form textarea, + .ui.form textarea:focus { + background: #232323; + border: 1px solid #313c47; + color: #dbdbdb; + } + .ui.form textarea:focus { + border: 1px solid #456580; + } + .ui .info.segment.top { + background-color: #060639 !important; + } + .repository .diff-file-box .file-body.file-code .lines-num { + color: #9e9e9e; + background: #151825; + } + .ui.table tbody tr { + border-bottom: 1px solid #2d2d2d; + } + .repository .diff-file-box .code-diff-unified tbody tr.del-code td { + background-color: #2c1616 !important; + border-color: #634343 !important; + } + .repository .diff-file-box .code-diff-unified tbody tr.add-code td { + background-color: #101044 !important; + border-color: #597359 !important; + } + .repository .diff-file-box .code-diff tbody tr .added-code { + background-color: #15217B; + } + .repository .diff-file-box .code-diff .lines-num { + border-right: 1px solid #2d2d2d; + } + .repository .diff-file-box .file-body.file-code .lines-num { + color: #9e9e9e; + background: #151825; + } + .repository .diff-file-box .code-diff tbody tr.tag-code td, + .repository .diff-file-box .code-diff tbody tr td.tag-code { + border-color: #2d2d2d !important; + } + .repository .diff-file-box .file-body.file-code .lines-num-old { + border-right: 1px solid #2d2d2d; + } + .hljs-title, + .hljs-section, + .hljs-selector-id { + color: #986c88 !important; + } + .hljs-string, + .hljs-doctag { + color: #949494; + } + .repository .diff-file-box .code-diff tbody tr .removed-code { + background-color: #7B2115; + } + .repository .diff-file-box .code-diff tbody tr.tag-code td, + .repository .diff-file-box .code-diff tbody tr td.tag-code { + background-color: #191927 !important; + } + .ui.vertical.menu .active.item { + background: #232323; + } + .ui.vertical.menu .item { + background: #151825; + } + .ui.vertical.menu .header.item { + background: #001221; + } + .ui.vertical.menu { + background: #151825; + } + .ui.repository.list .item:not(:first-child) { + border-top: 1px solid #313c47; + } + .ui.selection.dropdown { + background: #151825; + border: 1px solid rgb(48, 66, 81); + color: #9e9e9e; + } + .ui.menu .ui.dropdown .menu > .active.item { + color: #dbdbdb !important; + } + .ui.tabular.menu { + border-bottom: 1px solid #313c47; + } + .ui.card, + .ui.cards > .card { + background: #151825; + box-shadow: 0 1px 3px 0 #203241, 0 0 0 1px #203241; + } + .ui.card > .content > .header, + .ui.cards > .card > .content > .header { + color: #dbdbdb; + } + .ui.card > .extra a:not(.ui), + .ui.cards > .card > .extra a:not(.ui) { + color: rgb(102, 140, 177); + } + .ui .text.black { + color: #9e9e9e; + } + .ui .text.black:hover { + color: #dbdbdb; + } + .ui.secondary.pointing.menu .active.item { + color: #dbdbdb; + background: #030366; + } + .ui.secondary.pointing.menu .active.item:hover { + border-top-color: #203241; + background: #021288; + color: #dbdbdb; + } + .ui.secondary.pointing.menu .dropdown.item:hover, + .ui.secondary.pointing.menu .link.item:hover, + .ui.secondary.pointing.menu a.item:hover { + color: #dbdbdb; + } + .ui.checkbox label, + .ui.checkbox + label, + .ui.form .field > label { + color: #9e9e9e; + } + .ui.form .inline.field > label, + .ui.form .inline.field > p, + .ui.form .inline.fields .field > label, + .ui.form .inline.fields .field > p, + .ui.form .inline.fields > label { + color: #9e9e9e; + } + .user.settings .email.list .item:not(:first-child) { + border-top: 1px solid #203241; + } + .ui.form input:not([type]), + .ui.form input[type=text], + .ui.form input[type=email], + .ui.form input[type=search], + .ui.form input[type=password], + .ui.form input[type=date], + .ui.form input[type=datetime-local], + .ui.form input[type=tel], + .ui.form input[type=time], + .ui.form input[type=url], + .ui.form input[type=number] { + color: #9e9e9e; + } + .ui.attached.info.message, + .ui.info.message { + box-shadow: 0 0 0 1px #4b5e71 inset, 0 0 0 0 transparent; + } + .ui.info.message { + background-color: #121247; + color: #9ebcc5; + } + .ui .warning.header { + background-color: #5d3a22 !important; + border-color: #794f31; + } + .ui.red.message { + background-color: rgba(80, 23, 17, 0.6); + color: #f9cbcb; + box-shadow: 0 0 0 1px rgba(121, 71, 66, 0.5) inset, 0 0 0 0 transparent; + } + .ui.red.button, + .ui.red.buttons .button { + background-color: #7b2727 !important; + } + .ui.checkbox label:hover, + .ui.checkbox + label:hover { + color: #dbdbdb !important; + } + .ui.checkbox input:checked ~ .box:after, + .ui.checkbox input:checked ~ label:after { + color: rgb(127, 152, 173); + } + .ui.checkbox input:checked ~ .box:before, + .ui.checkbox input:checked ~ label:before { + background: #001221; + } + .ui.checkbox .box:hover::before, + .ui.checkbox label:hover::before { + background: #001221; + } + .ui.checkbox .box:before, + .ui.checkbox label:before { + background: #001221; + border: 1px solid #203241; + } + .ui.checkbox .box:active::before, + .ui.checkbox label:active::before { + background: #001221; + border-color: rgba(34, 36, 38, .35); + } + .ui.checkbox input:checked ~ .box:before, + .ui.checkbox input:checked ~ label:before { + border-color: #203241; + background: #001221; + } + .ui.checkbox input:focus ~ .box:before, + .ui.checkbox input:focus ~ label:before { + border-color: #203241; + background: #001221; + } + .ui.checkbox input:checked:focus ~ .box:before, + .ui.checkbox input:checked:focus ~ label:before, + .ui.checkbox input:not([type=radio]):indeterminate:focus ~ .box:before, + .ui.checkbox input:not([type=radio]):indeterminate:focus ~ label:before { + border-color: #203241; + background: #001221; + } + .ui.checkbox input:checked ~ .box:after, + .ui.checkbox input:checked ~ label:after { + opacity: 1; + color: rgb(127, 152, 173); + } + .ui.checkbox input:checked:focus ~ .box:after, + .ui.checkbox input:checked:focus ~ label:after, + .ui.checkbox input:not([type=radio]):indeterminate:focus ~ .box:after, + .ui.checkbox input:not([type=radio]):indeterminate:focus ~ label:after { + color: rgb(127, 152, 173); + } + .ui.checkbox input:focus ~ .box:after, + .ui.checkbox input:focus ~ label, + .ui.checkbox input:focus ~ label:after { + color: #9a9a9a; + } + .ui.selection.dropdown:hover { + border-color: rgba(34, 36, 38, .35); + border: 1px solid #456580; + } + .ui.selection.dropdown .menu > .item { + border-top: 1px solid #313c47; + } + .ui.selection.visible.dropdown > .text:not(.default) { + color: #9e9e9e; + } + .ui.negative.message { + background-color: rgba(80, 23, 17, 0.6); + color: #f9cbcb; + box-shadow: 0 0 0 1px rgba(121, 71, 66, 0.5) inset, 0 0 0 0 transparent; + } + .hljs-tag, + .hljs-name, + .hljs-tag, + .hljs-name, + .hljs-attribute { + color: #d22121 !important; + } + .user.profile .ui.card .extra.content ul li:not(:last-child) { + border-bottom: 1px solid #203241; + } + .hljs-number, + .hljs-literal, + .hljs-variable, + .hljs-template-variable, + .hljs-attr { + color: #48eca4 !important; + } + .hljs-string, + .hljs-doctag { + color: #8ab398; + } + .ui.form .dropzone { + border: 2px dashed #4c5d6b; + } + .ui.basic.red.button, + .ui.basic.red.buttons .button { + box-shadow: 0 0 0 1px #a04141 inset!important; + color: #a0a0a0!important; + } + .ui.list .list > .item .header, + .ui.list > .item .header { + color: #dedede; + } + .ui.list .list > .item .description, + .ui.list > .item .description { + color: #9e9e9e; + } + .ui.user.list .item .description a { + color: #668cb1; + } + .repository.file.list #file-content .code-view .lines-num { + background: #232323; + } + .repository.file.list #file-content .code-view .lines-num pre, + .repository.file.list #file-content .code-view .lines-code pre, + .repository.file.list #file-content .code-view .lines-num ol, + .repository.file.list #file-content .code-view .lines-code ol, + .repository.file.list #file-content .code-view .lines-num .hljs, + .repository.file.list #file-content .code-view .lines-code .hljs { + background-color: #151825; + } + a.ui.label:hover, + a.ui.labels .label:hover { + background-color: #26577b; + color: rgb(219, 219, 219); + } + .ui.secondary.segment { + background: #020415; + } + .explore .navbar { + background-color: #151825 !important; + } + .ui.menu.new-menu { + background-color: #151825 !important; + } + input { + line-height: normal; + background: #232323; + border: 1px solid #313c47; + padding: 7px 12px; + } + .ui.accordion .title:not(.ui) { + color: #dedede; + } + .ui.user.list .item:not(:first-child) { + border-top: 1px solid #313c47; + } + .ui.toggle.checkbox input:checked ~ .box, + .ui.toggle.checkbox input:checked ~ label { + color: rgb(207, 207, 207) !important; + } + .repository .ui.segment.sub-menu .list .item a { + color: #aaa; + } + .ui.link.list.list .active.item, + .ui.link.list.list .active.item a:not(.ui) { + color: rgba(222, 222, 222, .95); + } + .repository #commits-table.ui.basic.striped.table tbody tr:nth-child(2n) { + background-color: rgb(12, 12, 15) !important; + } + .ui.form input:not([type]), + .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"] { + background: #050515; + color: rgba(203, 203, 203, 0.9); + } + .repository .header-wrapper { + background-color: #020210; + margin-top: -15px; + padding-top: 15px; + } + .ui.tabular.menu .active.item { + background: #171732; + color: #dbdbdb; + border-left: 1px solid transparent; + border-right: 1px solid transparent; + border-top: 1px solid #313c47; + } + .ui.message { + color: #efefef !important; + background: #661111; + } + .repository.view.issue .pull-desc code { + color: #54A5FF; + } + .ui.fluid.input { + margin-bottom: 2px; + } + .ui .text.purple { + color: #a17cd8 !important; + } + .ui.positive.message { + background-color: #151532; + color: #dedede !important; + } + .swagger-ui .border-box, + .swagger-ui a, + .swagger-ui article, + .swagger-ui body, + .swagger-ui code, + .swagger-ui dd, + .swagger-ui div, + .swagger-ui dl, + .swagger-ui dt, + .swagger-ui fieldset, + .swagger-ui footer, + .swagger-ui form, + .swagger-ui h1, + .swagger-ui h2, + .swagger-ui h3, + .swagger-ui h4, + .swagger-ui h5, + .swagger-ui h6, + .swagger-ui header, + .swagger-ui html, + .swagger-ui input[type="email"], + .swagger-ui input[type="number"], + .swagger-ui input[type="password"], + .swagger-ui input[type="tel"], + .swagger-ui input[type="text"], + .swagger-ui input[type="url"], + .swagger-ui legend, + .swagger-ui li, + .swagger-ui main, + .swagger-ui ol, + .swagger-ui p, + .swagger-ui pre, + .swagger-ui section, + .swagger-ui table, + .swagger-ui td, + .swagger-ui textarea, + .swagger-ui th, + .swagger-ui tr, + .swagger-ui { + font-family: Open Sans, sans-serif; + color: #eeeeee; + } + .swagger-ui .scheme-container { + background: #131313; + } + .swagger-ui .opblock .opblock-summary-operation-id, + .swagger-ui .opblock .opblock-summary-path, + .swagger-ui .opblock .opblock-summary-path__deprecated { + color: #bbbbbb; + } + .swagger-ui .opblock .opblock-summary-description { + color: #dddddd; + } + .swagger-ui .opblock-tag { + color: #dddddd; + } + .swagger-ui section.models h4 { + color: #e7e7e7; + } + .swagger-ui .model-title { + color: #e0e0e0; + } + .swagger-ui .prop-type { + color: #54c9f8; + } + .swagger-ui section.models .model-container { + background: #080808; + } + .swagger-ui select { + background: #4477b0; + color: #dadada; + } + .swagger-ui .scheme-container .schemes > label { + color: #dadada; + } + .swagger-ui .info .title { + color: #dadada; + } + .swagger-ui .info .base-url { + color: #dadada; + } + .swagger-ui .topbar { + background-color: #050588; + } + .swagger-ui .topbar a { + color: #dadada; + background-color: #050588; + } + .swagger-ui .topbar .download-url-wrapper input[type="text"] { + border: 2px solid #0018dd; + background-color: #050520; + } + .swagger-ui .topbar .download-url-wrapper .download-url-button { + background: #000fdd; + color: #fff; + } + .swagger-ui .opblock .opblock-section-header { + background: hsla(0, 0%, 13.3%, 0.8); + } + .swagger-ui .opblock-body pre { + background: #212121; + color: #b0b0b0; + } + .ui.modal > .header { + background: #6e0000; + color: #d3d3d3; + } + .ui.modal > .content { + background: #350a0a; + } + .ui.warning.message { + background-color: #422600; + color: #573a08; + } + .ui.horizontal.segments { + background-color: #050525; + } + .repository.file.list .non-diff-file-content .code-view .lines-code .hljs, + .repository.file.list .non-diff-file-content .code-view .lines-code ol, + .repository.file.list .non-diff-file-content .code-view .lines-code pre, + .repository.file.list .non-diff-file-content .code-view .lines-num .hljs, + .repository.file.list .non-diff-file-content .code-view .lines-num ol, + .repository.file.list .non-diff-file-content .code-view .lines-num pre { + background-color: #020212; + } + .repository.file.list .non-diff-file-content .code-view .lines-num { + color: #aaa; + background: #020211; + } + .repository .dif { + background-color: #332020 !important; + } + .repository .diff-file-box .code-diff-split tbody tr td.del-code, + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(1), + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(2), + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(3), + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4) { + background-color: #321212 !important; + border-color: #2d2d2d !important; + } + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4) { + background-color: #222232 !important; + } + .repository .diff-file-box .code-diff-split tbody tr td.del-code, + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(1) { + background-color: #322222 !important; + border-color: #2d2d2d !important; + } + .repository .diff-file-box .code-diff-split tbody tr td.add-code, + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(1), + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(2), + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(3), + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(4), + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(5), + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(6) { + background-color: #121232 !important; + border-color: #2d2d2d !important; + } + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(1), + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(2), + .repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(3), + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4), + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(5), + .repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(6) { + background-color: #151515; +} + + .ui.blue.button, + .ui.blue.buttons .button { + color: #ddd; + background-color: #030c69; + } + .ui.blue.button:focus, + .ui.blue.buttons .button:hover { + background-color: #052ca1; + color: #fff; + } + .CodeMirror { + border: 1px solid #555; + padding: 1px; + background: #151515; + } + .CodeMirror pre { + color: #e66a6a !important; + } + .CodeMirror-linenumber { + color: #ddd; + background: #0a0a0a; + } + .ui .sha.label { + background: #060641; + color: #b6b6b6; + } + .hljs-addition { + background: #15217B !important; + color: #bdbdbd; + } + .hljs-deletion { + background: #7B2115; + color: #bdbdbd; + } + .repository .diff-detail-box { + background: #060639; + padding: 7px; + } + .repository .diff-detail-box ol li { + background: #0a0a0a; + } + /* Checkbox element, when checked */ + input[type="checkbox"]:checked { + box-shadow: 0 0 0 2px #acacac; + } + .repository.file.editor .tab[data-tab="write"] .CodeMirror { + background: #151515; + } + .CodeMirror-gutter, + .CodeMirror-gutters, + .CodeMirror-linenumber, + .CodeMirror-scroll, + .CodeMirror-sizer { + background: #151515; + } + .cm-s-default .cm-atom { + color: #48eca4; + } + .CodeMirror .CodeMirror-code .cm-string { + color: #d4e41e; + } + .CodeMirror .CodeMirror-code .cm-tag { + color: #dedede; + } + .CodeMirror-selected { + background: #333 !important; + } + .CodeMirror-cursor { + width: 2px; + background: #0f0; + } + .cm-s-default .cm-meta, + .cm-s-default .cm-qualifier { + color: #a8cfe7; + } + .cm-s-default .cm-variable-3 { + color: #05ffb6; + } + .cm-s-default .cm-number { + color: #9beacb; + } + .cm-s-default .cm-keyword { + color: #d949ed; + } + .cm-s-default .cm-def { + color: #53c7d4; + } + .cm-s-default .cm-builtin { + color: #46fe47; + } + .repository.file.list .non-diff-file-content .code-view .lines-code .hljs li.active, + .repository.file.list .non-diff-file-content .code-view .lines-code ol li.active, + .repository.file.list .non-diff-file-content .code-view .lines-code pre li.active { + background: #00009c; + color: #eee; + } + .repository.file.list .non-diff-file-content .code-view .active { + background: #00009c; + color: #eee; + } + .ui.header .sub.header { + color: #aaa; + } + .ui.menu .ui.dropdown .menu > .item:hover, .ui.menu .ui.dropdown .menu > .selected.item { + color: #fff !important; + background: #030c89 !important; + } + .ui.basic.button, .ui.basic.buttons .button { + color: #dcdcdc !important; + background: #014a25 !important; + } + .editor-preview, .editor-preview-side { + background: #131313; + color: #dfdfdf; + } + .markdown:not(code) h1 { + color: #d5d5d5; + } + .markdown:not(code) h2 { + color: #d5d5d5; + } + .markdown:not(code) h3 { + color: #d5d5d5; + } + .markdown:not(code) h4 { + color: #d5d5d5; + } + .markdown:not(code) h5 { + color: #d5d5d5; + } + .markdown:not(code) h6 { + color: #d5d5d5; + } + .heatmap-color-0 { + background-color: #0a0a0a; + } + .heatmap-color-1 { + background-color: #06264f; + } + .heatmap-color-2 { + background-color: #0f3684; + } + .heatmap-color-3 { + background-color: #1956ba; + } + .heatmap-color-4 { + background-color: #2176df; + } + .heatmap-color-5 { + background-color: #3d9bdf; + } + .editor-toolbar a { + color: #71abe7 !important; + } + .markdown:not(code) code, .markdown:not(code) tt { + font-size: 1em; + background-color: #111a20; + } + ::selection { + background: #777; /* WebKit/Blink Browsers */ + } + ::-moz-selection { + background: #777; /* Gecko Browsers */ + } + .following.bar .brand .ui.mini.image { + width: 80px; + } + .markdown:not(code) table td, .markdown:not(code) table th { + background: #11112d; + } + .markdown:not(code).file-view { + overflow: auto; + } + .repository .dif { + background-color: #243c24 !important; + } + .repository.view.issue .comment-list .comment .content > .merge-section { + border-top: 1px solid #2b51aa !important; + background-color: #1a3e21 !important; + } + .ui.bottom.attached.message .pull-right { + color: #bababa !important; + } + .ui.table > thead > tr > th { + background: #101d49; + } + .code-view :not(.fa):not(.octicon):not(.icon) { + background: #131313; + } + .mono.raw, code.raw, pre.raw { + background-color: #171717; + border: 1px solid #292929 !important; + } + .repository .ui.attached.isSigned.isVerified.message { + background-color: #0d2407; + } + diff --git a/frontend/default/public/css/theme-github.css b/frontend/default/public/css/theme-github.css new file mode 100644 index 0000000..45223d1 --- /dev/null +++ b/frontend/default/public/css/theme-github.css @@ -0,0 +1,177 @@ +body { + font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol" !important; + font-size: 14px; + line-height: 1.5; + color: #24292e; +} + +a { + color: #0366d6; +} + +.following.bar.light { + background-color: #24292e; + color: rgba(255,255,255,0.75); + border-bottom: none; +} + +.ui.main.menu { + font-size: 14px; +} + +.ui.menu, .markdown:not(code), .ui.button, .ui.header { + font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; +} + +.ui.main.menu .item { + color: rgba(255,255,255,1); + font-weight: 600; +} + +.ui.secondary.main.menu .active.item { + color: rgba(255,255,255,1); + font-weight: 600; +} + +.ui.secondary.main.menu .active.item:hover { + color: rgba(255,255,255,0.75); +} + +.ui.secondary.main.menu a.item:hover { + color: rgba(255,255,255,0.75); +} + +.ui.secondary.main.menu .dropdown.item:hover { + color: rgba(255,255,255,0.75); +} + +.repository.view.issue .title h1 { + font-size: 32px; + font-weight: 400; + word-wrap: break-word; +} + +.ui.green.button { + background-color: #28a745; + background-image: linear-gradient(-180deg, #34d058 0%, #28a745 90%); +} + +.ui.green.button:hover { + background-color: #269f42; + background-image: linear-gradient(-180deg, #2fcb53 0%, #269f42 90%); +} + +.ui.button { + border: 1px solid rgba(27,31,35,0.2); + border-radius: 0.25em; + background-color: #eff3f6; + background-image: linear-gradient(-180deg, #fafbfc 0%, #eff3f6 90%); + font-size: 12px; + font-weight: 600; +} + +.ui.button:hover { + border-color: rgba(27,31,35,0.5); + background-color: #e6ebf1; + background-image: linear-gradient(-180deg, #f0f3f6 0%, #e6ebf1 90%); +} + +.ui.buttons .button:first-child { + border-left: 1px solid rgba(27,31,35,0.2); +} + +.ui.buttons .button:first-child:hover { + border-left-color: rgba(27, 31, 35, 0.5); +} + +.ui.blue.button, .ui.tiny.blue.buttons.button, .ui.tiny.blue.buttons a.ui.button { + background-color: #2185d0; + background-image: linear-gradient(-180deg, #3e98db 0%, #2185d0 90%); +} + +.ui.blue.button:hover, .ui.tiny.blue.buttons.button:hover, .ui.tiny.blue.buttons a.ui.button:hover { + background-color: #1c6fac; + background-image: linear-gradient(-180deg, #2185d0 0%, #1c6fac 90%); +} + +.ui.red.button { + background-color: #ca1010; + background-image: linear-gradient(-180deg, #e72525 0%, #ca1010 90%); +} + +.ui.red.button:hover { + background-color: #af0e0e; + background-image: linear-gradient(-180deg, #ca1010 0%, #af0e0e 90%); +} + +.ui.breadcrumb a { + color: #0366d6; +} + +.repository .header-grid .ui.huge.breadcrumb { + font-size: 18px; + font-weight: 600; +} + +.ui.compact.labeled.button, .ui.compact.button a { + color: #24292e; + font-size: 12px; + font-weight: 600; +} + +.ui.table td.message a { + color: #6a737d; +} + +.ui.table td.name a:hover, .ui.table td.message a:hover { + text-decoration: underline; + color: #0366d6; +} + +#repo-files-table.ui.fixed.single.line.table thead tr.commit-list { + background-color: #f1f8ff; + border: 1px solid #c8e1ff; +} + +#repo-files-table.ui.fixed.single.line.table thead tr.commit-list th { + background-color: #f1f8ff; + border-bottom: 1px solid #c8e1ff; + font-size: 12px; +} + +.ui.top.attached.header { + background-color: #f6f8fa; + font-size: 14px; +} + +.ui.top.attached.header strong { + font-weight: 600; +} + +.ui.tabular.stackable.menu.navbar a.item { + color: #586069; +} + +.ui.tabular.stackable.menu.navbar a.item:hover { + color: #24292e; +} + +.ui.tabular.stackable.menu.navbar a.active.item { + font-weight: 400; + color: #24292e; +} + +.repository.file.list #repo-files-table tr:hover { + background-color: #f6f8fa; +} + +.repository .header-grid .mega-octicon { + font-size: 18px; + width: 20px; +} + +.ui.label { + font-size: 12px; + font-weight: 600; +} + diff --git a/frontend/default/public/css/theme-trantor.less b/frontend/default/public/css/theme-trantor.less new file mode 100644 index 0000000..1e8c118 --- /dev/null +++ b/frontend/default/public/css/theme-trantor.less @@ -0,0 +1,1980 @@ +/* Background */ + +.chroma { + background-color: #2a2e3a; +} +/* LineTableTD */ + +.chroma .lntd { + vertical-align: top; + padding: 0; + margin: 0; + border: 0; +} +/* LineTable */ + +.chroma .lntable { + border-spacing: 0; + padding: 0; + margin: 0; + border: 0; + width: auto; + overflow: auto; + display: block; +} +/* LineHighlight */ + +.chroma .hl { + display: block; + width: 100%; + background-color: #3f424d; +} +/* LineNumbersTable */ + +.chroma .lnt { + margin-right: .4em; + padding: 0 .4em; + color: #7f7f7f; +} +/* LineNumbers */ + +.chroma .ln { + margin-right: .4em; + padding: 0 .4em; + color: #7f7f7f; +} +/* Keyword */ + +.chroma .k { + color: #f63; +} +/* KeywordConstant */ + +.chroma .kc { + color: #fa1; +} +/* KeywordDeclaration */ + +.chroma .kd { + color: #9daccc; +} +/* KeywordNamespace */ + +.chroma .kn { + color: #fa1; +} +/* KeywordPseudo */ + +.chroma .kp { + color: #5f8700; +} +/* KeywordReserved */ + +.chroma .kr { + color: #f63; +} +/* KeywordType */ + +.chroma .kt { + color: #9daccc; +} +/* NameAttribute */ + +.chroma .na { + color: #8a8a8a; +} +/* NameBuiltin */ + +.chroma .nb { + color: #9daccc; +} +/* NameBuiltinPseudo */ + +.chroma .bp { + color: #9daccc; +} +/* NameClass */ + +.chroma .nc { + color: #fa1; +} +/* NameConstant */ + +.chroma .no { + color: #fa1; +} +/* NameDecorator */ + +.chroma .nd { + color: #9daccc; +} +/* NameEntity */ + +.chroma .ni { + color: #fa1; +} +/* NameException */ + +.chroma .ne { + color: #af8700; +} +/* NameFunction */ + +.chroma .nf { + color: #9daccc; +} +/* NameLabel */ + +.chroma .nl { + color: #fa1; +} +/* NameNamespace */ + +.chroma .nn { + color: #fa1; +} +/* NameOther */ + +.chroma .nx { + color: #9daccc; +} +/* NameTag */ + +.chroma .nt { + color: #9daccc; +} +/* NameVariable */ + +.chroma .nv { + color: #9daccc; +} +/* NameVariableClass */ + +.chroma .vc { + color: #f81; +} +/* NameVariableGlobal */ + +.chroma .vg { + color: #fa1; +} +/* NameVariableInstance */ + +.chroma .vi { + color: #fa1; +} +/* LiteralString */ + +.chroma .s { + color: #1af; +} +/* LiteralStringAffix */ + +.chroma .sa { + color: #1af; +} +/* LiteralStringBacktick */ + +.chroma .sb { + color: #a0cc75; +} +/* LiteralStringChar */ + +.chroma .sc { + color: #1af; +} +/* LiteralStringDelimiter */ + +.chroma .dl { + color: #1af; +} +/* LiteralStringDoc */ + +.chroma .sd { + color: #6a737d; +} +/* LiteralStringDouble */ + +.chroma .s2 { + color: #a0cc75; +} +/* LiteralStringEscape */ + +.chroma .se { + color: #f63; +} +/* LiteralStringHeredoc */ + +.chroma .sh { + color: #1af; +} +/* LiteralStringInterpol */ + +.chroma .si { + color: #fa1; +} +/* LiteralStringOther */ + +.chroma .sx { + color: #fa1; +} +/* LiteralStringRegex */ + +.chroma .sr { + color: #97c; +} +/* LiteralStringSingle */ + +.chroma .s1 { + color: #a0cc75; +} +/* LiteralStringSymbol */ + +.chroma .ss { + color: #fa1; +} +/* LiteralNumber */ + +.chroma .m { + color: #1af; +} +/* LiteralNumberBin */ + +.chroma .mb { + color: #1af; +} +/* LiteralNumberFloat */ + +.chroma .mf { + color: #1af; +} +/* LiteralNumberHex */ + +.chroma .mh { + color: #1af; +} +/* LiteralNumberInteger */ + +.chroma .mi { + color: #1af; +} +/* LiteralNumberIntegerLong */ + +.chroma .il { + color: #1af; +} +/* LiteralNumberOct */ + +.chroma .mo { + color: #1af; +} +/* Operator */ + +.chroma .o { + color: #f63; +} +/* OperatorWord */ + +.chroma .ow { + color: #5f8700; +} +/* Comment */ + +.chroma .c { + color: #6a737d; +} +/* CommentHashbang */ + +.chroma .ch { + color: #6a737d; +} +/* CommentMultiline */ + +.chroma .cm { + color: #6a737d; +} +/* CommentSingle */ + +.chroma .c1 { + color: #6a737d; +} +/* CommentSpecial */ + +.chroma .cs { + color: #637d; +} +/* CommentPreproc */ + +.chroma .cp { + color: #fc6; +} +/* CommentPreprocFile */ + +.chroma .cpf { + color: #fc6; +} +/* GenericDeleted */ + +.chroma .gd { + color: #fff; + background-color: #5f3737; +} +/* GenericEmph */ + +.chroma .ge { + font-style: italic; +} +/* GenericError */ + +.chroma .gr { + color: #f33; +} +/* GenericHeading */ + +.chroma .gh { + color: #fa1; +} +/* GenericInserted */ + +.chroma .gi { + color: #fff; + background-color: #3a523a; +} +/* GenericOutput */ + +.chroma .go { + color: #888888; +} +/* GenericPrompt */ + +.chroma .gp { + color: #555555; +} +/* GenericStrong */ + +.chroma .gs { + font-weight: bold; +} +/* GenericSubheading */ + +.chroma .gu { + color: #9daccc; +} +/* GenericTraceback */ + +.chroma .gt { + color: #f63; +} +/* GenericUnderline */ + +.chroma .gl { + text-decoration: underline; +} +/* TextWhitespace */ + +.chroma .w { + color: #bbbbbb; +} + +.repository .ui.segment.sub-menu .list .item { + color: #dbdbdb; + a, + span.ui { + color: #dbdbdb; + } +} + +.ui.horizontal.segments > .segment { + background-color: #383c4a; +} + +body { + background: #383c4a; + color: #9e9e9e; +} + +/* firefox scroll bars */ + +* { + scrollbar-width: thin; + scrollbar-color: #87ab63 rgba(255, 255, 255, .1); +} + +/* webkit scrollbars */ + +::-webkit-scrollbar { + -webkit-appearance: none !important; + width: 10px !important; + height: 10px !important; +} + +::-webkit-scrollbar-track { + border-radius: 0 !important; + background: rgba(255, 255, 255, .1) !important; +} + +::-webkit-scrollbar-thumb { + cursor: pointer !important; + border-radius: 5px !important; + -webkit-transition: color .2s ease !important; + transition: color .2s ease !important; + background: #87ab63 !important; +} + +::-webkit-scrollbar-thumb:window-inactive { + background: #87ab63 !important; +} + +::-webkit-scrollbar-thumb:hover { + background: #87ab63 !important; +} + +a { + color: #87ab63; +} + +a:hover { + color: #a0cc75; +} + +.ui.card > .extra a:not(.ui):hover, +.ui.cards > .card > .extra a:not(.ui):hover { + color: #a0cc75; +} + +.ui.breadcrumb a:hover { + color: #a0cc75; +} + +.ui.breadcrumb a { + color: #87ab63; +} + +.repository .metas .ui.list a .text { + color: #87ab63; +} + +.repository .metas .ui.list a .text:hover { + color: #a0cc75; +} + +.repository .label.list .item a { + color: #87ab63; +} + +.repository .label.list .item a:hover { + color: #a0cc75; +} + +.repository .milestone.list > .item > a { + color: #87ab63; +} + +.repository .milestone.list > .item > a:hover { + color: #a0cc75; +} + +.repository.release #release-list { + border-top: 1px solid #4c505c; +} + +.repository .milestone.list > .item .operate > a { + color: #87ab63; +} + +.repository .milestone.list > .item .operate > a:hover { + color: #a0cc75; +} + +.ui.green.progress .bar { + background-color: #668844; +} + +.ui.progress.success .bar { + background-color: #7b9e57 !important; +} + +.following.bar.light { + background: #2e323e; + border-bottom: 1px solid #313131; +} + +.ui.secondary.menu .active.item { + color: #dbdbdb; +} + +.ui.secondary.menu .item { + color: #9e9e9e; +} + +.following.bar .top.menu a.item:hover { + color: #ffffff; +} + +.ui.attached.header { + background: #404552; + border: 1px solid #404552; + color: #dbdbdb; +} + +.ui.attached.table { + border: 1px solid #304251; + background: #304251; +} + +.feeds .list ul li:not(:last-child) { + border-bottom: 1px solid #333640; +} + +.feeds .list ul li.private { + background: #353945; + border: 1px solid #333640; +} + +.ui.secondary.menu .dropdown.item:hover, +.ui.secondary.menu .link.item:hover, +.ui.secondary.menu .active.item:hover, +.ui.secondary.menu a.item:hover, +.ui.dropdown .menu .active.item { + color: #ffffff; +} + +.ui.menu .ui.dropdown .menu > .item { + background: #2c303a !important; + color: #9e9e9e !important; +} + +.ui.secondary.menu .dropdown.item > .menu, +.ui.text.menu .dropdown.item > .menu { + border: 1px solid #434444; +} + +footer { + background: #2e323e; + border-top: 1px solid #313131; + color: #bababa; +} + +.ui.menu .dropdown.item .menu { + background: #2c303a; +} + +.ui.menu .ui.dropdown .menu > .item:hover, +.ui.menu .ui.dropdown .menu > .selected.item { + color: #ffffff !important; +} + +.ui.dropdown .menu > .header { + color: #dbdbdb; +} + +.ui.red.label, +.ui.red.labels .label { + background-color: #7d3434 !important; + border-color: #8a2121 !important; +} + +.ui.menu { + background: #404552; + border: 1px solid #353945; +} + +.ui.menu .active.item:hover, +.ui.vertical.menu .active.item:hover { + color: #dbdbdb; + background: #4b5162; +} + +.ui.link.menu .item:hover, +.ui.menu .dropdown.item:hover, +.ui.menu .link.item:hover, +.ui.menu a.item:hover { + color: #dbdbdb; + background: #454b5a; +} + +.ui.menu .active.item { + background: #4b5162; + color: #dbdbdb; +} + +.ui.input input { + background: #404552; + border: 2px solid #353945; + color: #dbdbdb; +} + +.ui.input input:focus, +.ui.input.focus input { + background: #404552; + border: 2px solid #353945; + color: #dbdbdb; +} + +.ui.accordion .title:not(.ui) { + color: #dbdbdb; +} + +.ui.label, +.ui.label.basic { + color: #dbdbdb; + background-color: #404552; +} + +.issue.list > .item .title { + color: #87ab63; +} + +.issue.list > .item .title:hover { + color: #a0cc75; +} + +.issue.list > .item { + border-bottom: 1px dashed #475767; +} + +.ui.green.label, +.ui.green.labels .label, +.ui.basic.green.label { + background-color: #2d693b !important; + border-color: #2d693b !important; +} + +.ui.basic.green.labels a.label:hover, +a.ui.basic.green.label:hover { + background-color: #16ab39 !important; + border-color: #16ab39 !important; + color: #ffffff !important; +} + +.issue.list > .item .comment { + color: #129c92; +} + +.ui.basic.button, +.ui.basic.buttons .button { + color: #797979; +} + +.ui.basic.red.active.button, +.ui.basic.red.buttons .active.button { + box-shadow: 0 0 0 1px #c75252 inset !important; + color: #c75252 !important; +} + +.ui.basic.button:focus, +.ui.basic.button:hover, +.ui.basic.buttons .button:focus, +.ui.basic.buttons .button:hover { + color: #dbdbdb; + box-shadow: 0 0 0 1px rgba(200, 200, 200, .35) inset; + background: rgba(0, 0, 0, .5); +} + +.ui.menu .item { + background: #404552; + color: #9e9e9e; +} + +.ui.menu .item.disabled, +.ui.menu .item.disabled:hover, +.ui.ui.menu .item.disabled, +.ui.ui.menu .item.disabled:hover { + color: #626773; +} + +.ui.pagination.menu .active.item { + color: #dbdbdb; + background-color: #87ab63; +} + +.repository .header-wrapper { + background-color: #2a2e3a; +} + +.ui.header, +.ui.breadcrumb .divider { + color: #9e9e9e; +} + +.ui.blue.label, +.ui.blue.labels .label, +.repository .segment.reactions .ui.label.basic.blue { + background-color: #26577b !important; + border-color: #26577b !important; +} + +.ui.menu .item > .label { + background: #565454; +} + +.ui.blue.button, +.ui.blue.buttons .button { + background-color: #87ab63; +} + +.ui.blue.button:hover, +.ui.blue.buttons .button:hover { + background-color: #a0cc75; +} + +.ui.form input:not([type]), +.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"] { + color: #9e9e9e; + background: #404552; + border: 2px solid #353945; +} + +.ui.form input:not([type]):focus, +.ui.form input[type="date"]:focus, +.ui.form input[type="datetime-local"]:focus, +.ui.form input[type="email"]:focus, +.ui.form input[type="file"]:focus, +.ui.form input[type="number"]:focus, +.ui.form input[type="password"]:focus, +.ui.form input[type="search"]:focus, +.ui.form input[type="tel"]:focus, +.ui.form input[type="text"]:focus, +.ui.form input[type="time"]:focus, +.ui.form input[type="url"]:focus { + background: #404552; + border: 2px solid #4b505f; + color: #dbdbdb; +} + +.ui.action.input:not([class*="left action"]) input:focus { + border-right-color: #4b505f !important; +} + +.ui.green.button, +.ui.green.buttons .button { + background-color: #87ab63; +} + +.ui.green.button:hover, +.ui.green.buttons .button:hover { + background-color: #a0cc75; +} + +.ui.button { + background: #383c4a; + border: 1px solid #4c505c; + color: #dbdbdb; +} + +.ui.labeled.button:not([class*="left labeled"]) > .label, +.ui[class*="left labeled"].button > .button { + background: #404552; + border: 1px solid #4c505c; + color: #87ab63; +} + +.ui.button:hover { + background-color: #404552; + color: #dbdbdb; +} + +.ui.table thead th, +.ui.table > thead > tr > th { + background: #404552; + color: #dbdbdb !important; +} + +.repository.file.list #repo-files-table tr { + background: #2a2e3a; +} + +.repository.file.list #repo-files-table tr:hover { + background-color: #393d4a !important; +} + +.ui.table { + color: #a5a5a5 !important; + border-color: #4c505c; + background: #353945; +} + +.ui.table tbody tr { + border-color: #333640; + background: #2a2e3a; +} + +.ui .text.grey { + color: #a5a5a8 !important; +} + +.ui.attached.table.segment { + background: #353945; + color: #dbdbdb !important; +} + +.markdown:not(code) h2 { + border-bottom: 1px solid #304251; +} + +.ui.tabular.menu { + border-bottom-color: rgba(255, 255, 255, .1); + + .item.active { + border-top-color: #404552; + border-left-color: #404552; + border-right-color: #404552; + background: #353945; + color: #dbdbdb; + } + + .item { + color: #9e9e9e; + } + + .item:hover { + color: #dbdbdb; + } + + &.navbar { + .item.active { + border-top-color: transparent; + border-left-color: transparent; + border-right-color: transparent; + background: #383c4a; + } + } +} + +.markdown:not(code) .highlight pre, +.markdown:not(code) pre { + background-color: #2a2e3a; + border: 1px solid #404552; +} + +.markdown:not(code) table tr:nth-child(2n) { + background-color: #2a2e39; +} + +.markdown:not(code) table tr:nth-child(2n-1) { + background-color: #383b44; +} + +.markdown:not(code) table thead tr:nth-child(2n-1) { + background-color: #464c5d !important; +} + +.markdown:not(code) table td, +.markdown:not(code) table th { + border-color: #4c505c !important; +} + +.repository.file.editor.edit, +.repository.wiki.new .CodeMirror { + .editor-preview, + .editor-preview-side, + & + .editor-preview-side { + background: #353945; + + .markdown:not(code).ui.segment { + border-width: 0; + } + } +} + +.ui.dropdown .menu { + background: #2c303a; +} + +.ui.dropdown .menu > .message:not(.ui) { + color: #636363; +} + +.ui.input { + color: #dbdbdb; +} + +.overflow.menu .items .item { + color: #9d9d9d; +} + +.overflow.menu .items .item:hover { + color: #dbdbdb; +} + +.ui.segment { + background: #353945; + color: #9e9e9e !important; + border: 1px solid #404552; +} + +.ui.list > .item > .content { + color: #9e9e9e !important; +} + +.ui.active.button:active, +.ui.button:active, +.ui.button:focus, +.ui.active.button { + background-color: #2e3e4e; + color: #dbdbdb; +} + +.ui.active.button:hover { + background-color: #475e75; + color: #dbdbdb; +} + +.ui.dropdown .menu .selected.item, +.ui.dropdown.selected { + color: #dbdbdb; +} + +.ui.dropdown .menu > .item:hover { + color: #dbdbdb; +} + +.ui.dropdown .menu > .item { + color: #9e9e9e; +} + +.ui.attached.segment { + border: 1px solid #404552; +} + +.repository.view.issue .comment-list .event > .svg.issue-symbol { + background: #3b4954; +} + +.repository.view.issue .comment-list .event > .svg:not(.issue-symbol) { + text-shadow: -2px 0 #383c4a, 0 2px #383c4a, 2px 0 #383c4a, 0 -2px #383c4a; +} + +.ui .text.grey a { + color: #dbdbdb !important; +} + +.ui .comment .actions a { + color: #9e9e9e !important; +} + +.ui .comment .actions a.active, +.ui .comment .actions a:hover { + color: #fff !important; +} + +.repository.view.issue .comment-list .comment .content { + > .bottom.segment { + background: #353945; + a { + border: solid 1px #353945; + background-color: #353945; + } + } + + .header { + color: #dbdbdb; + background-color: #404552; + border-bottom: 1px solid #353944; + } + + .merge-section { + background-color: #404552; + border-top: 1px solid #353944; + } + + .header:after, + > .merge-section.no-header:after { + border-right-color: #404552; + } + + .header:before, + > .merge-section.no-header:before { + border-right-color: #404552; + } +} + +.repository.new.issue .comment.form .content:after { + border-right-color: #353945; +} + +.repository.new.issue .comment.form .content:before { + border-right-color: #353945; +} + +.repository.view.issue .comment-list:not(.prevent-before-timeline):before, +.repository.view.issue .comment-list .timeline:before { + background-color: #3b4954; +} + +.repository.view.issue .comment-list .timeline-item .badge { + background-color: #383c4a; + border-color: #3b4954; + color: #9e9e9e; +} + +.repository.view.issue .comment-list .comment .tag { + color: #dbdbdb; + border-color: rgb(152, 152, 152); +} + +.repository.view.issue .comment-list .timeline-item .badge.badge-commit { + background: radial-gradient(#383c4a 40%, transparent 40%) no-repeat; +} + +.repository .comment.form .content .form:after { + border-right-color: #313c47; +} + +.repository .comment.form .content .form:before { + border-right-color: #313c47; +} + +.ui .text.grey a:hover { + color: #dbdbdb !important; +} + +.ui.basic.green.active.button, +.ui.basic.green.buttons .active.button { + color: #13ae38 !important; + box-shadow: 0 0 0 1px #13ae38 inset !important; +} + +.ui.form textarea, +.ui.form textarea:focus { + color: #dbdbdb; + background: #404552; + border: 2px solid #353945; +} + +.ui.form textarea:focus { + border: 1px solid #456580; +} + +.ui .info.segment.top { + background-color: #404552 !important; +} + +.repository .diff-file-box .code-diff-unified tbody tr.del-code td { + background-color: #3c2626 !important; + border-color: #634343 !important; +} + +.repository .diff-file-box .code-diff-unified tbody tr.del-code td.lines-num { + background-color: #4e2c2c !important; +} + +.repository .diff-file-box .code-diff-unified tbody tr.add-code td { + background-color: #283e2d !important; + border-color: #314a37 !important; +} + +.repository .diff-file-box .code-diff-unified tbody tr.add-code td.lines-num { + background-color: #2c4632 !important; +} + +.removed-code { + background-color: #5f3737; +} + +.added-code { + background-color: #3a523a; +} + +.tag-code, +.tag-code td { + background: #353945 !important; + +} +.tag-code td.lines-num { + background-color: #3a3e4c !important; +} + +.tag-code td.lines-type-marker, +td.blob-hunk { + color: #dbdbdb !important; +} + +.ui.vertical.menu .active.item { + background: #4b5162; +} + +.ui.vertical.menu .item { + background: #353945; +} + +.ui.vertical.menu .header.item { + background: #404552; +} + +.ui.vertical.menu { + background: #353945; + border: 1px solid #333640; +} + +.ui.repository.list .item:not(:first-child) { + border-top: 1px solid #4c505c; +} + +.ui .text.blue { + color: #87ab63 !important; +} + +.ui.selection.active.dropdown, +.ui.selection.active.dropdown .menu { + border-color: #4e5361; + box-shadow: 0 2px 3px 0 rgba(34, 36, 38, .15); +} + +.ui.selection.active.dropdown:hover, +.ui.selection.active.dropdown:hover .menu { + border-color: #4e5361; + box-shadow: 0 2px 3px 0 rgba(34, 36, 38, .15); +} + +.ui.selection.dropdown { + background: #404552; + border: 1px solid #404552; + color: #9e9e9e; +} + +.ui.menu .ui.dropdown .menu > .active.item { + color: #dbdbdb !important; +} + +.ui.card, +.ui.cards > .card { + background: #353945; + box-shadow: 0 1px 3px 0 #4c505c, 0 0 0 1px #4c505c; +} + +.ui.card > .content > .header, +.ui.cards > .card > .content > .header { + color: #dbdbdb; +} + +.ui.card > .extra a:not(.ui), +.ui.cards > .card > .extra a:not(.ui) { + color: #87ab63; +} + +.ui .text.black { + color: #9e9e9e; +} + +.ui .text.black:hover { + color: #dbdbdb; +} + +.ui.secondary.segment { + background: #353945; +} + +.ui.secondary.pointing.menu { + border-bottom-color: rgba(255, 255, 255, .15); +} + +.ui.secondary.pointing.menu .active.item { + color: #dbdbdb; +} + +.ui.user.list .item:not(:first-child) { + border-top: 1px solid #4c505c; +} + +.ui.secondary.pointing.menu .active.item:hover { + color: #dbdbdb; +} + +.ui.secondary.pointing.menu .dropdown.item:hover, +.ui.secondary.pointing.menu .link.item:hover, +.ui.secondary.pointing.menu a.item:hover { + color: #dbdbdb; +} + +.ui.pointing.dropdown > .menu:not(.hidden)::after { + background: #2c303a; +} + +.ui.checkbox label, +.ui.checkbox + label, +.ui.form .field > label { + color: #9e9e9e; +} + +.ui.form .inline.field > label, +.ui.form .inline.field > p, +.ui.form .inline.fields .field > label, +.ui.form .inline.fields .field > p, +.ui.form .inline.fields > label { + color: #9e9e9e; +} + +.user.settings .email.list .item:not(:first-child) { + border-top: 1px solid #3f4451; +} + +.explore .navbar { + background-color: #2a2e3a !important; +} + +.ui.menu.new-menu { + background: #2a2e3a; + border-color: transparent !important; + + @media only screen and (max-width: 1200px) { + &:after { + background: linear-gradient(to right, transparent 0%, #2a2e3a 100%); + } + } +} + +input { + background: #2e323e; +} + +.settings .key.list .item:not(:first-child) { + border-top: 1px solid #404552; +} + +.ui.attached.info.message, +.ui.info.message { + box-shadow: 0 0 0 1px #4b5e71 inset, 0 0 0 0 transparent; +} + +.ui.bottom.attached.message { + background-color: #2c662d; + color: #87ab63; +} + +.ui.bottom.attached.message .pull-right { + color: #87ab63; +} + +.ui.info.message { + background-color: #2c3b4a; + color: #9ebcc5; +} + +.ui .warning.header { + background-color: #5d3a22 !important; + border-color: #794f31; +} + +.ui.red.message, +.ui.error.message { + background-color: rgba(80, 23, 17, .6); + color: #f9cbcb; + box-shadow: 0 0 0 1px rgba(121, 71, 66, .5) inset, 0 0 0 0 transparent; +} + +.ui.red.button, +.ui.red.buttons .button { + background-color: #7d3434; +} + +.ui.red.button:hover, +.ui.red.buttons .button:hover { + background-color: #984646; +} + +.ui.checkbox label:hover, +.ui.checkbox + label:hover { + color: #dbdbdb !important; +} + +.ui.checkbox input:checked ~ .box:after, +.ui.checkbox input:checked ~ label:after { + color: #7f98ad; +} + +.ui.checkbox input:checked ~ .box:before, +.ui.checkbox input:checked ~ label:before { + background: #304251; + opacity: 1; + color: #7f98ad; + border-color: #304251; +} + +.ui.checkbox .box:hover::before, +.ui.checkbox label:hover::before { + background: #304251; +} + +.ui.checkbox .box:before, +.ui.checkbox label:before { + background: #304251; + border: 1px solid #304251; +} + +.ui.checkbox label:before { + border-color: #476075; +} + +.ui.checkbox .box:active::before, +.ui.checkbox label:active::before { + background: #304251; + border-color: rgba(34, 36, 38, .35); +} + +.ui.checkbox input:focus ~ .box:before, +.ui.checkbox input:focus ~ label:before { + border-color: #304251; + background: #304251; +} + +.ui.checkbox input:checked:focus ~ .box:before, +.ui.checkbox input:checked:focus ~ label:before, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ .box:before, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ label:before { + border-color: #304251; + background: #304251; +} + +.ui.checkbox input:checked:focus ~ .box:after, +.ui.checkbox input:checked:focus ~ label:after, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ .box:after, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ label:after { + color: #7f98ad; +} + +.ui.checkbox input:focus ~ .box:after, +.ui.checkbox input:focus ~ label, +.ui.checkbox input:focus ~ label:after { + color: #9a9a9a; +} + +.ui.selection.dropdown:hover { + border: 1px solid #456580; +} + +.ui.selection.dropdown .menu > .item { + border-top: 1px solid #313c47; +} + +.ui.selection.visible.dropdown > .text:not(.default) { + color: #9e9e9e; +} + +.ui.positive.message { + background-color: #0d491b; + color: #87ab63; + box-shadow: 0 0 0 1px #2d693b inset, 0 0 0 0 transparent; +} + +.ui.negative.message { + background-color: rgba(80, 23, 17, .6); + color: #f9cbcb; + box-shadow: 0 0 0 1px rgba(121, 71, 66, .5) inset, 0 0 0 0 transparent; +} + +.user.profile .ui.card .extra.content ul li:not(:last-child) { + border-bottom: 1px solid #4c505c; +} + +.ui.form .dropzone { + border: 2px dashed #7f98ad; + background-color: #2e323e; + + .dz-button { + color: rgba(158, 158, 158, .8); + } +} + +.ui.form .dropzone:hover .dz-button { + color: rgba(158, 158, 158, 1); +} + +.ui.basic.red.button, +.ui.basic.red.buttons .button { + box-shadow: 0 0 0 1px #a04141 inset !important; + color: #a04141 !important; +} + +.ui.list .list > .item .header, +.ui.list > .item .header { + color: #dedede; +} + +.ui.list .list > .item .description, +.ui.list > .item .description { + color: #9e9e9e; +} + +.ui.user.list .item .description a { + color: #668cb1; +} + +.repository.file.list #repo-files-table tbody .svg.octicon-file-directory, +.repository.file.list #repo-files-table tbody .svg.octicon-file-submodule { + color: #7c9b5e; +} + +.ui.blue.button:focus, +.ui.blue.buttons .button:focus { + background-color: #a27558; +} + +.ui.basic.blue.button:hover, +.ui.basic.blue.buttons .button:hover { + box-shadow: 0 0 0 1px #87ab63 inset !important; + color: #87ab63 !important; +} + +.ui.basic.blue.button:focus, +.ui.basic.blue.buttons .button:focus { + box-shadow: 0 0 0 1px #87ab63 inset !important; + color: #87ab63 !important; +} + +.repository.labels .ui.basic.black.label { + background-color: #bbbbbb !important; +} + +.lines-commit { + background: #2e323e !important; +} + +.bottom-line { + border-color: #4e525e !important; +} + +.lines-num { + color: #9e9e9e !important; + border-color: #2d2d2d !important; +} + +td.blob-excerpt { + background-color: rgba(0, 0, 0, .15); +} + +a.blob-excerpt { + color: #ccc; + background: #393d4a; +} + +a.blob-excerpt:hover { + background: #87ab63; +} + +.code-view .lines-code.active { + background: #534d1b !important; +} + +a.ui.label:hover, +a.ui.labels .label:hover { + background-color: #505667 !important; + color: #dbdbdb !important; +} + +.repository #commits-table td.sha .sha.label, +.repository #repo-files-table .sha.label { + border-color: #888; +} + +.repository #commits-table td.sha .sha.label.isSigned .detail.icon, +.repository #repo-files-table .sha.label.isSigned .detail.icon { + background: none; + border-left-color: #888; +} + +.repository .ui.attached.message.isSigned.isVerified { + background-color: #394829; + color: #9e9e9e; + + &.message { + color: #87ab63; + .ui.text { + color: #9e9e9e; + } + .pull-right { + color: #87ab63; + } + } +} + +.repository .ui.attached.message.isSigned.isVerifiedUntrusted { + background-color: #4a3903; + color: #9e9e9e; + &.message { + color: #c2c193; + .ui.text { + color: #9e9e9e; + } + .pull-right, + a { + color: #c2c193; + } + } +} + +.repository .ui.attached.message.isSigned.isVerifiedUnmatched { + background-color: #4e3321; + color: #9e9e9e; + &.message { + color: #c2a893; + .ui.text { + color: #9e9e9e; + } + .pull-right, + a { + color: #c2a893; + } + } +} + +.repository .ui.attached.message.isSigned.isWarning { + background-color: rgba(80, 23, 17, .6); + &.message { + color: #d07d7d; + .ui.text { + color: #d07d7d; + } + .pull-right { + color: #9e9e9e; + } + } +} + +.repository .label.list .item { + border-bottom: 1px dashed #4c505c; +} + +.ui.basic.blue.button, +.ui.basic.blue.buttons .button { + box-shadow: 0 0 0 1px #87ab63 inset !important; + color: #87ab63 !important; +} + +.ui.text.yellow, +.yellow.icon.icon.icon { + color: #e4ac07 !important; +} + +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(1), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(2), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(3), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(5), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(6) { + background-color: #2a2e3a; +} + +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(4), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(5), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(6), +.repository .diff-file-box .code-diff-split tbody tr td.add-code, +.repository .diff-file-box .code-diff-split tbody tr td.lines-num-new.add-code { + background-color: #283e2d !important; + border-color: #314a37 !important; +} + +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(1), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(2), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(3), +.repository .diff-file-box .code-diff-split tbody tr td.del-code { + background-color: #3c2626 !important; + border-color: #634343 !important; +} + +.organization.teams .detail .item:not(:last-child), +.organization.members .list .item { + border-bottom-color: #404552; +} + +.ui.blue.button:active, +.ui.blue.buttons .button:active { + background-color: #a27558; +} + +#git-graph-container li a { + color: #c79575; +} + +#git-graph-container li .author { + color: #c79575; +} + +.ui.header .sub.header { + color: #9e9e9e; +} + +.ui.dividing.header { + border-bottom: 1px solid #4c505c; +} + +.ui.modal > .header { + background: #404552; + color: #dbdbdb; +} + +.ui.modal > .actions { + background: #404552; + border-top: 1px solid #404552; +} + +.ui.modal > .content { + background: #383c4a; +} + +.editor-toolbar { + background-color: #404552; + border-color: #7f98ad; +} + +.edit-diff > div > .ui.table { + border-left-color: #404552 !important; + border-right-color: #404552 !important; +} + +.editor-toolbar a { + color: #87ab63 !important; +} + +.editor-toolbar a.active, +.editor-toolbar a:hover { + background: #2a2e3a; + border-color: transparent; +} + +.editor-toolbar i.separator { + border-right-color: #7f98ad; +} + +.repository .diff-detail-box { + background-color: #383c4a; + + .detail-files { + background-color: inherit; + } + + &.sticky { + border-bottom-color: rgba(255, 255, 255, .1); + } +} + +.comment-code-cloud { + border-color: #3a3a3a; + + &:before { + border-bottom: 13px solid #5a5a5a; + } + + .ui.attached.top.header { + background: none transparent; + border: 0; + } + + .ui.active.tab { + &:not(.markdown) { + textarea:focus { + border: none; + } + + background: #404552; + } + + border-color: rgba(255, 255, 255, .15); + } + + .footer { + border-top-color: #5a5a5a; + + .markdown-info { + color: inherit; + } + + } +} + +.add-comment-left.add-comment-right .ui.attached.header { + border-color: #5d5c5c; + border-right: none; +} + +.file-comment { + color: #888888; +} + +.ui.comments .comment { + .author { + color: #dbdbdb; + } + + .metadata { + color: #808084; + } + + .text { + color: #9e9e9e; + } +} + +.heatmap(@heat) { + @heatmap-cold: #2d303b; + @heatmap-hot: #a0cc75; + background-color: mix(@heatmap-hot, @heatmap-cold, @heat); +} + +.heatmap-color-0 { + .heatmap(0%); +} + +.heatmap-color-1 { + .heatmap(20%); +} + +.heatmap-color-2 { + .heatmap(40%); +} + +.heatmap-color-3 { + .heatmap(60%); +} + +.heatmap-color-4 { + .heatmap(80%); +} + +.heatmap-color-5 { + .heatmap(100%); +} + +.activity-bar-graph { + background-color: #a0cc75; + color: #9e9e9e; +} + +/* code mirror dark theme */ + +.CodeMirror { + color: #9daccc; + background-color: #2e323e; + border-color: #7f98ad; + border-top: 0; + + div.CodeMirror-cursor { + border-left: 1px solid #9e9e9e; + } + + .CodeMirror-gutters { + background-color: #2e323e; + } + + ::selection, + ::-moz-selection, + .CodeMirror-selected { + background: #42402f !important; + } + + &.cm-s-default, + &.cm-s-paper { + .cm-property { + color: #a0cc75; + } + + .cm-header { + color: #9daccc; + } + + .cm-quote { + color: #009900; + } + + .cm-keyword { + color: #cc8a61; + } + + .cm-atom { + color: #ef5e77; + } + + .cm-number { + color: #ff5656; + } + + .cm-def { + color: #e4e4e4; + } + + .cm-variable-2 { + color: #00bdbf; + } + + .cm-variable-3 { + color: #008855; + } + + .cm-comment { + color: #8e9ab3; + } + + .cm-string { + color: #a77272; + } + + .cm-string-2 { + color: #ff5500; + } + + .cm-meta, + .cm-qualifier { + color: #ffb176; + } + + .cm-builtin { + color: #b7c951; + } + + .cm-bracket { + color: #999977; + } + + .cm-tag { + color: #f1d273; + } + + .cm-attribute { + color: #bfcc70; + } + + .cm-hr { + color: #999999; + } + + .cm-url { + color: #c5cfd0; + } + + .cm-link { + color: #d8c792; + } + + .cm-error { + /* color: #ff6e00; */ + color: #dbdbeb; + } + } +} + +.ui.popup { + background-color: #383c4a; + color: #9e9e9e; + border-color: #9e9e9e; + + &.top::before { + background-color: #383c4a; + } +} + +.markdown:not(code) h1 { + border-bottom-color: #888; +} + +.markdown:not(code) blockquote { + border-left-color: #888; +} + +.markdown:not(code) code, +.markdown:not(code) tt { + background-color: #2a2e3a; +} + +footer .container .links > * { + border-left-color: #888; +} + +.repository.file.list #repo-files-table tbody .svg { + color: #9e9e9e; +} + +.repository.release #release-list > li .detail { + border-left-color: #4c505c; +} + +.repository.release #release-list > li .detail .dot { + background-color: #888; + border-color: #383c4a; +} + +.repository.release #release-list > li .detail .download .list { + border-top-color: #404552; +} + +.repository.release #release-list > li .detail .download .list li { + border-bottom-color: #404552; +} + +.tribute-container { + box-shadow: 0 .25rem .5rem rgba(0, 0, 0, .6); +} + +.tribute-container ul { + background: #2d303b !important; +} + +.tribute-container li.highlight, +.tribute-container li:hover { + background: #728e5e !important; +} + +.repository .repo-header .ui.huge.breadcrumb.repo-title .repo-header-icon .avatar { + color: #2a2e3a; +} + +#git-graph-container.monochrome #rel-container .flow-group { + stroke: dimgrey; + fill: dimgrey; +} + +#git-graph-container.monochrome #rel-container .flow-group.highlight { + stroke: darkgrey; + fill: darkgrey; +} + +#git-graph-container:not(.monochrome) #rel-container .flow-group { + &.flow-color-16-5 { + stroke: #5543b1; + fill: #5543b1; + } +} + +#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight { + &.flow-color-16-5 { + stroke: #7058e6; + fill: #7058e6; + } +} + +#git-graph-container #rev-list li.highlight, +#git-graph-container #rev-list li.hover { + background-color: rgba(255, 255, 255, .05); +} + +#git-graph-container #rev-list li.highlight.hover { + background-color: rgba(255, 255, 255, .1); +} + +#git-graph-container .ui.buttons button#flow-color-monochrome.ui.button { + border-left-color: rgb(76, 80, 92); + border-left-style: solid; + border-left-width: 1px; +} + +.mermaid-chart { + filter: invert(84%) hue-rotate(180deg); +} + +.is-loading:after { + border-color: #4a4c58 #4a4c58 #d7d7da #d7d7da; +} + +.markdown-block-error { + border: 1px solid rgba(121, 71, 66, .5) !important; + border-bottom: none !important; +} diff --git a/frontend/default/public/css/theme-werefox.css b/frontend/default/public/css/theme-werefox.css new file mode 100644 index 0000000..46270eb --- /dev/null +++ b/frontend/default/public/css/theme-werefox.css @@ -0,0 +1,1113 @@ +body { + background: #121212; + color: #afafaf; +} +a { + color: #69b2f1; +} +a:hover { + color: #82c0ef; +} +.following.bar.light { + background: #14589b; +} +.ui.secondary.menu .item { + color: #cfc5c5; + padding: 8px 8px; +} +.ui.secondary.menu .active.item { + color: #fafafa; + padding: 5px 12px; +} +.following.bar .top.menu a.item:hover { + color: #fff; +} +.following.bar.light { + border-bottom: 1px solid #313131; +} +.ui.attached.header { + background: #242424; + border: 1px solid #203241; + color: #dbdbdb; +} +.ui.attached.table { + border: 1px solid #203241; + background: #001221; +} +.feeds .list ul li:not(:last-child) { + border-bottom: 1px solid #203241; +} +.feeds .list ul li.private { + background: #151825; +} +.ui.secondary.menu .dropdown.item:hover, +.ui.secondary.menu .link.item:hover, +.ui.secondary.menu a.item:hover { + color: #fff; +} +.ui.menu .ui.dropdown .menu > .item { + background: #0f56b0 !important; + color: #dbdbdb !important; +} +.ui.secondary.menu .dropdown.item > .menu, +.ui.text.menu .dropdown.item > .menu { + border: 1px solid #203241; +} +footer { + background: #14589b; + border-top: 1px solid #313131; +} +.ui.menu .dropdown.item .menu { + background: #0f56b0; +} +.ui.menu .ui.dropdown .menu > .item:hover, +.ui.menu .ui.dropdown .menu > .selected.item { + color: #fff !important; +} +.ui.dropdown .menu > .header { + color: #dbdbdb; +} +.ui.red.label, +.ui.red.labels .label { + background-color: #802020 !important; + border-color: #db2828 !important; +} +.ui.menu { + background: #0202aa; + border: 1px solid #203241; +} +.ui.menu .item { + background: #051865; + color: #aaaaaa; +} +.ui.menu .active.item:hover, +.ui.vertical.menu .active.item:hover { + color: #dbdbdb; +} +.ui.link.menu .item:hover, +.ui.menu .dropdown.item:hover, +.ui.menu .link.item:hover, +.ui.menu a.item:hover { + color: #dbdbdb; +} +.ui.menu .active.item { + background: #051552; + color: #dbdbdb; +} +.ui.input input { + background: #000009; + border: 1px solid #203241; + color: #dbdbdb; +} +.ui.input input:focus, +.ui.input.focus input { + background: #000000; + border: 1px solid #456580; + color: #dbdbdb; +} +.ui.label { + color: #dbdbdb; + background-color: #313f4c; +} +.issue.list > .item .title { + color: #668cb1; +} +.issue.list > .item .title:hover { + color: #aaaabb; +} +.issue.list > .item { + border-bottom: 1px dashed #475767; +} +.ui.green.label, +.ui.green.labels .label { + background-color: #2d693b !important; + border-color: #2d693b !important; +} +.issue.list > .item .comment { + color: #129c92; +} +.ui.basic.button, +.ui.basic.buttons .button { + color: #a9a9a9 !important; +} +.ui.basic.blue.button, +.ui.basic.blue.buttons .button { + color: #b9c1ce !important; +} +.ui.basic.red.active.button, +.ui.basic.red.buttons .active.button { + box-shadow: 0 0 0 1px #c75252 inset !important; + color: #c75252 !important; +} +.ui.basic.button:focus, +.ui.basic.button:hover, +.ui.basic.buttons .button:focus, +.ui.basic.buttons .button:hover { + background: transparent !important; + color: #dbdbdb !important; +} +.ui.menu .item.disabled, +.ui.menu .item.disabled:hover { + cursor: default !important; + background-color: #151825 !important; + color: #9e9e9e; +} +.ui.pagination.menu .active.item { + color: #dbdbdb; + background-color: #212d38; +} +.repository .header-wrapper { + background-color: #151825; +} +.ui.tabular.menu .active.item { + background: #232323; + color: #dbdbdb; + border-left: 1px solid transparent; + border-right: 1px solid transparent; + border-top: 1px solid #313c47; +} +.ui.secondary.pointing.menu .item { + border-bottom-width: 0px; + align-self: center; + background: #121212; + margin: 1px 1px 1px 1px; + padding: 8px 6px; +} +.ui.tabular.menu .item { + color: #9e9e9e; +} +.ui.tabular.menu .item:hover { + color: #dbdbdb; +} +.ui.header, +.ui.breadcrumb .divider { + color: #82c0ef; +} +.ui.blue.label, +.ui.blue.labels .label { + background-color: #081f6f !important; + border-color: #081f6f !important; + color: #b5b5b5 !important; +} +.ui.menu .item > .label { + background: #565454; +} +.ui.blue.button, +.ui.blue.buttons .button { + background-color: #26577b; +} +.ui.form input:not([type]), +.ui.form input[type="text"], +.ui.form input[type="email"], +.ui.form input[type="search"], +.ui.form input[type="password"], +.ui.form input[type="date"], +.ui.form input[type="datetime-local"], +.ui.form input[type="tel"], +.ui.form input[type="time"], +.ui.form input[type="url"], +.ui.form input[type="number"] { + background: #151825; + border: 1px solid rgb(48, 66, 81); +} +.ui.form input:not([type]):focus, +.ui.form input[type="text"]:focus, +.ui.form input[type="email"]:focus, +.ui.form input[type="search"]:focus, +.ui.form input[type="password"]:focus, +.ui.form input[type="date"]:focus, +.ui.form input[type="datetime-local"]:focus, +.ui.form input[type="tel"]:focus, +.ui.form input[type="time"]:focus, +.ui.form input[type="url"]:focus, +.ui.form input[type="number"]:focus { + background: #151825; + border: 1px solid #456580; + color: #dbdbdb; +} +.ui.action.input:not([class*="left action"]) input:focus { + border-right-color: #456580 !important; +} +.ui.green.button, +.ui.green.buttons .button { + background-color: #217a45; + color: #fff; + text-shadow: none; + background-image: none; +} +.ui.green.button:focus, +.ui.green.buttons .button:focus { + background-color: #085121 !important; + color: #fff; + text-shadow: none; +} +.ui.button { + background: #0c0c53; + border: 1px solid #313c47; + color: #dbdbdb; +} +.ui.labeled.button:not([class*="left labeled"]) > .label, +.ui[class*="left labeled"].button > .button { + background: #151825; + border: 1px solid #313c47; + color: #a0bdcb; +} +.ui.button:hover { + background-color: #151899; + color: #dbdbdb; +} +.ui.table thead th { + background: #14589b; + color: #dbdbdb; +} +.repository.file.list #repo-files-table tr:hover { + background-color: #424242; +} +.ui.table { + color: #797979 !important; + border: 1px solid #313c47; + background: #121212; +} +.ui.table tbody tr { + border-bottom: 1px solid red; + background: #242424; +} +.ui.attached.table.segment { + background: #242424; + color: #dbdbdb !important; +} +.markdown:not(code) h2 { + border-bottom: 1px solid #484848; +} +.hljs, +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #2ebce2 !important; + background: #181818 !important; +} +.markdown:not(code) .highlight pre, +.markdown:not(code) pre { + background-color: #081004; + border: 1px solid #246; +} +.ui.dropdown .menu { + background: #151825; +} +.ui.dropdown .menu > .message:not(.ui) { + color: rgb(99, 99, 99); +} +.ui.segment { + background: #074c95; + color: #dbdbdb !important; + border: 1px solid #313c47; +} +.ui.active.button:active, +.ui.button:active, +.ui.button:focus { + background-color: #2e3e4e; + color: #dbdbdb; +} +.ui.dropdown .menu .selected.item, +.ui.dropdown.selected { + color: #dbdbdb; +} +.ui.dropdown .menu > .item:hover { + color: #dbdbdb; +} +.ui.dropdown .menu > .item { + color: #9e9e9e; +} +.ui.attached.segment { + border: 1px solid #313c47; +} +.repository.view.issue .comment-list .comment .content > .bottom.segment { + background: #151825; +} +.repository.view.issue .comment-list .comment .content .header { + color: #dbdbdb; + background-color: #121247; + border-bottom: 1px solid #313c47; +} +.ui.comments .comment .actions a { + color: #dbdbdb; +} +.repository.view.issue .comment-list .comment .content .header:after { + border-right-color: #121247; +} +.repository.view.issue .comment-list .comment .content .header:before { + border-right-color: #121247; +} +.repository.view.issue .comment-list:before { + background-color: #121247; +} +.repository .comment.form .content .form:after { + border-right-color: #121247; +} +.repository .comment.form .content .form:before { + border-right-color: #121247; +} +.ui .text.grey { + color: #d0d0d0 !important; +} +.ui .text.grey a { + color: #66dbdd !important; +} +.ui .text.grey a:hover { + color: #aadbff !important; +} +.ui.form textarea, +.ui.form textarea:focus { + background: #232323; + border: 1px solid #313c47; + color: #dbdbdb; +} +.ui.form textarea:focus { + border: 1px solid #456580; +} +.ui .info.segment.top { + background-color: #060639 !important; +} +.repository .diff-file-box .file-body.file-code .lines-num { + color: #9e9e9e; + background: #151825; +} +.ui.table tbody tr { + border-bottom: 1px solid #2d2d2d; +} +.repository .diff-file-box .code-diff-unified tbody tr.del-code td { + background-color: #2c1616 !important; + border-color: #634343 !important; +} +.repository .diff-file-box .code-diff-unified tbody tr.add-code td { + background-color: #101044 !important; + border-color: #597359 !important; +} +.repository .diff-file-box .code-diff tbody tr .added-code { + background-color: #15217b; +} +.repository .diff-file-box .code-diff .lines-num { + border-right: 1px solid #2d2d2d; +} +.repository .diff-file-box .file-body.file-code .lines-num { + color: #9e9e9e; + background: #151825; +} +.repository .diff-file-box .code-diff tbody tr.tag-code td, +.repository .diff-file-box .code-diff tbody tr td.tag-code { + border-color: #2d2d2d !important; +} +.repository .diff-file-box .file-body.file-code .lines-num-old { + border-right: 1px solid #2d2d2d; +} +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #986c88 !important; +} +.hljs-string, +.hljs-doctag { + color: #949494; +} +.repository .diff-file-box .code-diff tbody tr .removed-code { + background-color: #7b2115; +} +.repository .diff-file-box .code-diff tbody tr.tag-code td, +.repository .diff-file-box .code-diff tbody tr td.tag-code { + background-color: #191927 !important; +} +.ui.vertical.menu .active.item { + background: #232323; +} +.ui.vertical.menu .item { + background: #151825; +} +.ui.vertical.menu .header.item { + background: #001221; +} +.ui.vertical.menu { + background: #151825; +} +.ui.repository.list .item:not(:first-child) { + border-top: 1px solid #313c47; +} +.ui.selection.dropdown { + background: #151825; + border: 1px solid rgb(48, 66, 81); + color: #9e9e9e; +} +.ui.menu .ui.dropdown .menu > .active.item { + color: #dbdbdb !important; +} +.ui.tabular.menu { + border-bottom: 1px solid #313c47; +} +.ui.card, +.ui.cards > .card { + background: #151825; + box-shadow: 0 1px 3px 0 #203241, 0 0 0 1px #203241; +} +.ui.card > .content > .header, +.ui.cards > .card > .content > .header { + color: #dbdbdb; +} +.ui.card > .extra a:not(.ui), +.ui.cards > .card > .extra a:not(.ui) { + color: #82c0ef; +} +.ui .text.black { + color: #9e9e9e; +} +.ui .text.black:hover { + color: #dbdbdb; +} +.ui.secondary.pointing.menu .active.item { + color: #dbdbdb; + background: #074c95; +} +.ui.secondary.pointing.menu .active.item:hover { + border-top-color: #203241; + background: #021288; + color: #dbdbdb; +} +.ui.secondary.pointing.menu .dropdown.item:hover, +.ui.secondary.pointing.menu .link.item:hover, +.ui.secondary.pointing.menu a.item:hover { + color: #dbdbdb; +} +.ui.checkbox label, +.ui.checkbox + label, +.ui.form .field > label { + color: #dbdbdb; +} +.ui.form .inline.field > label, +.ui.form .inline.field > p, +.ui.form .inline.fields .field > label, +.ui.form .inline.fields .field > p, +.ui.form .inline.fields > label { + color: #dbdbdb; +} +.user.settings .email.list .item:not(:first-child) { + border-top: 1px solid #203241; +} +.ui.form input:not([type]), +.ui.form input[type="text"], +.ui.form input[type="email"], +.ui.form input[type="search"], +.ui.form input[type="password"], +.ui.form input[type="date"], +.ui.form input[type="datetime-local"], +.ui.form input[type="tel"], +.ui.form input[type="time"], +.ui.form input[type="url"], +.ui.form input[type="number"] { + color: #9e9e9e; +} +.ui.attached.info.message, +.ui.info.message { + box-shadow: 0 0 0 1px #4b5e71 inset, 0 0 0 0 transparent; +} +.ui.info.message { + background-color: #121247; + color: #9ebcc5; +} +.ui .warning.header { + background-color: #5d3a22 !important; + border-color: #794f31; +} +.ui.red.message { + background-color: rgba(80, 23, 17, 0.6); + color: #f9cbcb; + box-shadow: 0 0 0 1px rgba(121, 71, 66, 0.5) inset, 0 0 0 0 transparent; +} +.ui.red.button, +.ui.red.buttons .button { + background-color: #7b2727 !important; +} +.ui.checkbox label:hover, +.ui.checkbox + label:hover { + color: #dbdbdb !important; +} +.ui.checkbox input:checked ~ .box:after, +.ui.checkbox input:checked ~ label:after { + color: rgb(127, 152, 173); +} +.ui.checkbox input:checked ~ .box:before, +.ui.checkbox input:checked ~ label:before { + background: #001221; +} +.ui.checkbox .box:hover::before, +.ui.checkbox label:hover::before { + background: #001221; +} +.ui.checkbox .box:before, +.ui.checkbox label:before { + background: #001221; + border: 1px solid #203241; +} +.ui.checkbox .box:active::before, +.ui.checkbox label:active::before { + background: #001221; + border-color: rgba(34, 36, 38, 0.35); +} +.ui.checkbox input:checked ~ .box:before, +.ui.checkbox input:checked ~ label:before { + border-color: #203241; + background: #001221; +} +.ui.checkbox input:focus ~ .box:before, +.ui.checkbox input:focus ~ label:before { + border-color: #203241; + background: #001221; +} +.ui.checkbox input:checked:focus ~ .box:before, +.ui.checkbox input:checked:focus ~ label:before, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ .box:before, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ label:before { + border-color: #203241; + background: #001221; +} +.ui.checkbox input:checked ~ .box:after, +.ui.checkbox input:checked ~ label:after { + opacity: 1; + color: rgb(127, 152, 173); +} +.ui.checkbox input:checked:focus ~ .box:after, +.ui.checkbox input:checked:focus ~ label:after, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ .box:after, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ label:after { + color: rgb(127, 152, 173); +} +.ui.checkbox input:focus ~ .box:after, +.ui.checkbox input:focus ~ label, +.ui.checkbox input:focus ~ label:after { + color: #9a9a9a; +} +.ui.selection.dropdown:hover { + border-color: rgba(34, 36, 38, 0.35); + border: 1px solid #456580; +} +.ui.selection.dropdown .menu > .item { + border-top: 1px solid #313c47; +} +.ui.selection.visible.dropdown > .text:not(.default) { + color: #9e9e9e; +} +.ui.negative.message { + background-color: rgba(80, 23, 17, 0.6); + color: #f9cbcb; + box-shadow: 0 0 0 1px rgba(121, 71, 66, 0.5) inset, 0 0 0 0 transparent; +} +.hljs-tag, +.hljs-name, +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #d22121 !important; +} +.user.profile .ui.card .extra.content ul li:not(:last-child) { + border-bottom: 1px solid #203241; +} +.hljs-number, +.hljs-literal, +.hljs-variable, +.hljs-template-variable, +.hljs-attr { + color: #6896ba !important; +} +.hljs-string, +.hljs-doctag { + color: #8ab398; +} +.ui.form .dropzone { + border: 2px dashed #4c5d6b; +} +.ui.basic.red.button, +.ui.basic.red.buttons .button { + box-shadow: 0 0 0 1px #a04141 inset !important; + color: #a0a0a0 !important; +} +.ui.list .list > .item .header, +.ui.list > .item .header { + color: #dedede; +} +.ui.list .list > .item .description, +.ui.list > .item .description { + color: #9e9e9e; +} +.ui.user.list .item .description a { + color: #668cb1; +} +.repository.file.list #file-content .code-view .lines-num { + background: #232323; +} +.repository.file.list #file-content .code-view .lines-num pre, +.repository.file.list #file-content .code-view .lines-code pre, +.repository.file.list #file-content .code-view .lines-num ol, +.repository.file.list #file-content .code-view .lines-code ol, +.repository.file.list #file-content .code-view .lines-num .hljs, +.repository.file.list #file-content .code-view .lines-code .hljs { + background-color: #151825; +} +a.ui.label:hover, +a.ui.labels .label:hover { + background-color: #12369a; + color: rgb(219, 219, 219); +} +.ui.secondary.segment { + background: #020415; +} +.explore .navbar { + background-color: #151825 !important; +} +.ui.menu.new-menu { + background-color: #232d37 !important; +} +input { + line-height: normal; + background: #232323; + border: 1px solid #313c47; + padding: 7px 12px; +} +.ui.accordion .title:not(.ui) { + color: #dedede; +} +.ui.user.list .item:not(:first-child) { + border-top: 1px solid #313c47; +} +.ui.toggle.checkbox input:checked ~ .box, +.ui.toggle.checkbox input:checked ~ label { + color: rgb(207, 207, 207) !important; +} +.repository .ui.segment.sub-menu .list .item a { + color: #aaa; +} +.ui.link.list.list .active.item, +.ui.link.list.list .active.item a:not(.ui) { + color: rgba(222, 222, 222, 0.95); +} +.repository #commits-table.ui.basic.striped.table tbody tr:nth-child(2n) { + background-color: rgb(12, 12, 15) !important; +} +.ui.form input:not([type]), +.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"] { + background: #121212; + color: rgba(203, 203, 203, 0.9); +} +.repository .header-wrapper { + background-color: #202020; + margin-top: -15px; + padding-top: 15px; +} +.ui.tabular.menu .active.item { + background: #1b3471; + color: #dbdbdb; + border-left: 1px solid transparent; + border-right: 1px solid transparent; + border-top: 1px solid #313c47; +} +.ui.message { + color: #efefef !important; + background: #661111; +} +.repository.view.issue .pull-desc code { + color: #54a5ff; +} +.ui.fluid.input { + margin-bottom: 2px; +} +.ui .text.purple { + color: #a17cd8 !important; +} +.ui.positive.message { + background-color: #151532; + color: #dedede !important; +} +.swagger-ui .border-box, +.swagger-ui a, +.swagger-ui article, +.swagger-ui body, +.swagger-ui code, +.swagger-ui dd, +.swagger-ui div, +.swagger-ui dl, +.swagger-ui dt, +.swagger-ui fieldset, +.swagger-ui footer, +.swagger-ui form, +.swagger-ui h1, +.swagger-ui h2, +.swagger-ui h3, +.swagger-ui h4, +.swagger-ui h5, +.swagger-ui h6, +.swagger-ui header, +.swagger-ui html, +.swagger-ui input[type="email"], +.swagger-ui input[type="number"], +.swagger-ui input[type="password"], +.swagger-ui input[type="tel"], +.swagger-ui input[type="text"], +.swagger-ui input[type="url"], +.swagger-ui legend, +.swagger-ui li, +.swagger-ui main, +.swagger-ui ol, +.swagger-ui p, +.swagger-ui pre, +.swagger-ui section, +.swagger-ui table, +.swagger-ui td, +.swagger-ui textarea, +.swagger-ui th, +.swagger-ui tr, +.swagger-ui { + font-family: Open Sans, sans-serif; + color: #eeeeee; +} +.swagger-ui .scheme-container { + background: #131313; +} +.swagger-ui .opblock .opblock-summary-operation-id, +.swagger-ui .opblock .opblock-summary-path, +.swagger-ui .opblock .opblock-summary-path__deprecated { + color: #bbbbbb; +} +.swagger-ui .opblock .opblock-summary-description { + color: #dddddd; +} +.swagger-ui .opblock-tag { + color: #dddddd; +} +.swagger-ui section.models h4 { + color: #e7e7e7; +} +.swagger-ui .model-title { + color: #e0e0e0; +} +.swagger-ui .prop-type { + color: #54c9f8; +} +.swagger-ui section.models .model-container { + background: #080808; +} +.swagger-ui select { + background: #4477b0; + color: #dadada; +} +.swagger-ui .scheme-container .schemes > label { + color: #dadada; +} +.swagger-ui .info .title { + color: #dadada; +} +.swagger-ui .info .base-url { + color: #dadada; +} +.swagger-ui .topbar { + background-color: #050588; +} +.swagger-ui .topbar a { + color: #dadada; + background-color: #050588; +} +.swagger-ui .topbar .download-url-wrapper input[type="text"] { + border: 2px solid #0018dd; + background-color: #050520; +} +.swagger-ui .topbar .download-url-wrapper .download-url-button { + background: #000fdd; + color: #fff; +} +.ui.modal > .header { + background: #6e0000; + color: #d3d3d3; +} +.ui.modal > .content { + background: #350a0a; +} +.ui.warning.message { + background-color: #422600; + color: #573a08; +} +.ui.horizontal.segments { + background-color: #050525; +} +.repository.file.list .non-diff-file-content .code-view .lines-code .hljs, +.repository.file.list .non-diff-file-content .code-view .lines-code ol, +.repository.file.list .non-diff-file-content .code-view .lines-code pre, +.repository.file.list .non-diff-file-content .code-view .lines-num .hljs, +.repository.file.list .non-diff-file-content .code-view .lines-num ol, +.repository.file.list .non-diff-file-content .code-view .lines-num pre { + background-color: #020212; +} +.repository.file.list .non-diff-file-content .code-view .lines-num { + color: #aaa; + background: #020211; +} +.repository .dif { + background-color: #332020 !important; +} +.repository .diff-file-box .code-diff-split tbody tr td.del-code, +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(1), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(2), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(3), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4) { + background-color: #321212 !important; + border-color: #2d2d2d !important; +} +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4) { + background-color: #222232 !important; +} +.repository .diff-file-box .code-diff-split tbody tr td.del-code, +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(1) { + background-color: #322222 !important; + border-color: #2d2d2d !important; +} +.repository .diff-file-box .code-diff-split tbody tr td.add-code, +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(1), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(2), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(3), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(4), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(5), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(6) { + background-color: #121232 !important; + border-color: #2d2d2d !important; +} +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(1), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(2), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(3), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(5), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(6) { + background-color: #151515; +} + +.ui.blue.button, +.ui.blue.buttons .button { + color: #ddd; + background-color: #12369a; +} +.ui.blue.button:focus, +.ui.blue.buttons .button:hover { + background-color: #121269; + color: #fff; +} +.CodeMirror { + border: 1px solid #555; + padding: 1px; + background: #151515; +} +.CodeMirror pre { + color: #e66a6a !important; +} +.CodeMirror-linenumber { + color: #ddd; + background: #0a0a0a; +} +.ui .sha.label { + background: #242424; + color: #b6b6b6; +} +.hljs-addition { + background: #15217b !important; + color: #bdbdbd; +} +.hljs-deletion { + background: #7b2115; + color: #bdbdbd; +} +.repository .diff-detail-box { + background: #060639; + padding: 7px; +} +.repository .diff-detail-box ol li { + background: #0a0a0a; +} +/* Checkbox element, when checked */ +input[type="checkbox"]:checked { + box-shadow: 0 0 0 2px #acacac; +} +.repository.file.editor .tab[data-tab="write"] .CodeMirror { + background: #151515; +} +.CodeMirror-gutter, +.CodeMirror-gutters, +.CodeMirror-linenumber, +.CodeMirror-scroll, +.CodeMirror-sizer { + background: #151515; +} +.cm-s-default .cm-atom { + color: #48eca4; +} +.CodeMirror .CodeMirror-code .cm-string { + color: #d4e41e; +} +.CodeMirror .CodeMirror-code .cm-tag { + color: #dedede; +} +.CodeMirror-selected { + background: #333 !important; +} +.CodeMirror-cursor { + width: 2px; + background: #0f0; +} +.cm-s-default .cm-meta, +.cm-s-default .cm-qualifier { + color: #a8cfe7; +} +.cm-s-default .cm-variable-3 { + color: #05ffb6; +} +.cm-s-default .cm-number { + color: #9beacb; +} +.cm-s-default .cm-keyword { + color: #d949ed; +} +.cm-s-default .cm-def { + color: #53c7d4; +} +.cm-s-default .cm-builtin { + color: #46fe47; +} +.repository.file.list + .non-diff-file-content + .code-view + .lines-code + .hljs + li.active, +.repository.file.list + .non-diff-file-content + .code-view + .lines-code + ol + li.active, +.repository.file.list + .non-diff-file-content + .code-view + .lines-code + pre + li.active { + background: #00009c; + color: #eee; +} +.repository.file.list .non-diff-file-content .code-view .active { + background: #00009c; + color: #eee; +} +.ui.header .sub.header { + color: #aaa; +} +.ui.menu .ui.dropdown .menu > .item:hover, +.ui.menu .ui.dropdown .menu > .selected.item { + color: #fff !important; + background: #030c89 !important; +} +.ui.basic.button, +.ui.basic.buttons .button { + color: #dcdcdc !important; + background: #12369a !important; +} +.editor-preview, +.editor-preview-side { + background: #131313; + color: #dfdfdf; +} +.markdown:not(code) h1 { + color: #d5d5d5; +} +.markdown:not(code) h2 { + color: #d5d5d5; +} +.markdown:not(code) h3 { + color: #d5d5d5; +} +.markdown:not(code) h4 { + color: #d5d5d5; +} +.markdown:not(code) h5 { + color: #d5d5d5; +} +.markdown:not(code) h6 { + color: #d5d5d5; +} +.heatmap-color-0 { + background-color: #0a0a0a; +} +.heatmap-color-1 { + background-color: #06264f; +} +.heatmap-color-2 { + background-color: #0f3684; +} +.heatmap-color-3 { + background-color: #1956ba; +} +.heatmap-color-4 { + background-color: #2176df; +} +.heatmap-color-5 { + background-color: #3d9bdf; +} +.editor-toolbar a { + color: #71abe7 !important; +} +.markdown:not(code) code, +.markdown:not(code) tt { + font-size: 1em; + background-color: #121212; +} +::selection { + background: #777; /* WebKit/Blink Browsers */ +} +::-moz-selection { + background: #777; /* Gecko Browsers */ +} +.following.bar .brand .ui.mini.image { + width: 80px; +} +.markdown:not(code) table td, +.markdown:not(code) table th { + background: #11112d; +} +.markdown:not(code).file-view { + overflow: auto; +} +.repository .dif { + background-color: #243c24 !important; +} +.repository.view.issue .comment-list .comment .content > .merge-section { + border-top: 1px solid #2b51aa !important; + background-color: #1a3e21 !important; +} +.ui.bottom.attached.message .pull-right { + color: #bababa !important; +} +.ui.table > thead > tr > th { + background: #14589b; +} +.code-view :not(.fa):not(.octicon):not(.icon) { + background: #131313; +} +.mono.raw, +code.raw, +pre.raw { + background-color: #171717; + border: 1px solid #292929 !important; +} +footer { + color: #dbdbdb; +} diff --git a/frontend/default/public/img/icon/favicon-16x16.png b/frontend/default/public/img/icon/favicon-16x16.png new file mode 100644 index 0000000..8d00d34 Binary files /dev/null and b/frontend/default/public/img/icon/favicon-16x16.png differ diff --git a/frontend/default/public/img/icon/favicon-32x32.png b/frontend/default/public/img/icon/favicon-32x32.png new file mode 100644 index 0000000..8a862bc Binary files /dev/null and b/frontend/default/public/img/icon/favicon-32x32.png differ diff --git a/frontend/default/templates/base/head.tmpl.off b/frontend/default/templates/base/head.tmpl.off new file mode 100644 index 0000000..0760354 --- /dev/null +++ b/frontend/default/templates/base/head.tmpl.off @@ -0,0 +1,134 @@ + + + + + + + {{if .Title}}{{.Title | RenderEmojiPlain}} - {{end}} {{if .Repository.Name}}{{.Repository.Name}} - {{end}}{{AppName}} + + + + + + + + {{if .IsSigned}} + + {{end}} + {{if .ContextUser}} + + {{end}} + {{if .SearchLimit}} + + {{end}} +{{if .GoGetImport}} + + +{{end}} + + + + + +{{if .RequireSimpleMDE}} + +{{end}} + + + +{{if .PageIsUserProfile}} + + + + + {{if .Owner.Description}} + + {{end}} +{{else if .Repository}} + {{if .Issue}} + + + {{if .Issue.Content}} + + {{end}} + {{else}} + + + {{if .Repository.Description}} + + {{end}} + {{end}} + + +{{else}} + + + + + +{{end}} + +{{if .IsSigned }} + {{ if ne .SignedUser.Theme "gitea" }} + + {{end}} +{{else if ne DefaultTheme "gitea"}} + +{{end}} +{{template "custom/header" .}} + + + {{template "custom/body_outer_pre" .}} + +
+ + + {{template "custom/body_inner_pre" .}} + + {{if not .PageIsInstall}} + + {{end}} +{{/* +
+ + +*/}} diff --git a/frontend/default/templates/base/head_navbar.tmpl.off b/frontend/default/templates/base/head_navbar.tmpl.off new file mode 100644 index 0000000..9e7cbb6 --- /dev/null +++ b/frontend/default/templates/base/head_navbar.tmpl.off @@ -0,0 +1,163 @@ + diff --git a/frontend/default/templates/custom/body_inner_post.tmpl b/frontend/default/templates/custom/body_inner_post.tmpl new file mode 100644 index 0000000..2885d67 --- /dev/null +++ b/frontend/default/templates/custom/body_inner_post.tmpl @@ -0,0 +1 @@ +
Default Body Inner Post
diff --git a/frontend/default/templates/custom/body_inner_pre.tmpl b/frontend/default/templates/custom/body_inner_pre.tmpl new file mode 100644 index 0000000..7c44a8a --- /dev/null +++ b/frontend/default/templates/custom/body_inner_pre.tmpl @@ -0,0 +1 @@ +
Default Body Inner Pre
diff --git a/frontend/default/templates/custom/header.tmpl b/frontend/default/templates/custom/header.tmpl new file mode 100644 index 0000000..cf337e0 --- /dev/null +++ b/frontend/default/templates/custom/header.tmpl @@ -0,0 +1,2 @@ + + diff --git a/frontend/default/templates/home.tmpl b/frontend/default/templates/home.tmpl new file mode 100644 index 0000000..eb748d8 --- /dev/null +++ b/frontend/default/templates/home.tmpl @@ -0,0 +1,16 @@ +{{template "base/head" .}} +
+
+
+
+ +
+
+

+ {{AppName}} +

+
+
+
+
+{{template "base/footer" .}} diff --git a/frontend/less/_admin.less b/frontend/less/_admin.less new file mode 100644 index 0000000..5bca054 --- /dev/null +++ b/frontend/less/_admin.less @@ -0,0 +1,93 @@ +.admin { + padding-top: 15px; + + .table.segment { + padding: 0; + font-size: 13px; + + &:not(.striped) { + thead { + th:last-child { + padding-right: 5px !important; + } + } + } + + th { + padding-top: 5px; + padding-bottom: 5px; + } + + &:not(.select) { + th, + td { + &:first-of-type { + padding-left: 15px !important; + } + } + } + + form tbody button[type='submit'] { + padding: 5px 8px; + } + } + + .ui.header, + .ui.segment { + box-shadow: 0 1px 2px 0 rgba(34, 36, 38, .15); + } + + &.user { + .email { + max-width: 200px; + } + } + + dl.admin-dl-horizontal { + padding: 20px; + margin: 0; + + dd { + margin-left: 275px; + } + + dt { + font-weight: bolder; + float: left; + width: 285px; + clear: left; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + } + + &.config { + #test-mail-btn { + margin-left: 5px; + } + } + + code, + pre { + white-space: pre-wrap; + word-wrap: break-word; + } + + #notice-table { + .notice-description { + @media only screen and (max-width: 767px) { + max-width: 80vw; + } + @media only screen and (max-width: 991px) and (min-width: 768px) { + max-width: 360px; + } + @media only screen and (min-width: 992px) and (max-width: 1199.98px) { + max-width: 510px; + } + @media only screen and (min-width: 1200px) { + max-width: 640px; + } + } + } +} diff --git a/frontend/less/_base.less b/frontend/less/_base.less new file mode 100644 index 0000000..05c2a9b --- /dev/null +++ b/frontend/less/_base.less @@ -0,0 +1,1270 @@ +@font-face { + font-family: 'Yu Gothic'; + src: local('Yu Gothic Medium'); + font-weight: 400; +} + +@font-face { + font-family: 'Yu Gothic'; + src: local('Yu Gothic Bold'); + font-weight: 700; +} + +@font-face { + font-family: 'Noto Color Emoji'; + src: + local('Noto Color Emoji'), + local('Noto-Color-Emoji'), + url('../fonts/noto-color-emoji/NotoColorEmoji.ttf') format('truetype'); +} + +@default-fonts: -apple-system, BlinkMacSystemFont, system-ui, 'Segoe UI', Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" sans-serif; +@monospaced-fonts: 'SF Mono', Consolas, Menlo, 'Liberation Mono', Monaco, 'Lucida Console'; + +.override-fonts(@fonts) { + textarea { + font-family: @fonts; + } + + .markdown:not(code) { + font-family: @fonts; + } + + /* We're going to just override the semantic fonts here */ + h1, + h2, + h3, + h4, + h5 { + font-family: @fonts; + } + + .ui.accordion .title:not(.ui), + .ui.button, + .ui.card > .content > .header.ui.card > .content > .header, + .ui.category.search > .results .category > .name, + .ui.form input:not([type]), + .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.header, + .ui.items > .item > .content > .header, + .ui.list .list > .item .header, + .ui.list > .item .header, + .ui.menu, + .ui.message .header, + .ui.modal > .header, + .ui.popup > .header, + .ui.search > .results .result .title, + .ui.search > .results > .message .header, + body, + .ui.input > input, + .ui.input input, + .ui.statistics .statistic > .value, + .ui.statistic > .value, + .ui.statistics .statistic > .label, + .ui.statistic > .label, + .ui.steps .step .title, + .ui.text.container, + .ui.language > .menu > .item& { + font-family: @fonts; + } +} + +.override-fonts(@default-fonts); + +body { + background-color: #ffffff; + overflow-y: auto; + display: flex; + flex-direction: column; +} + +@ja-fonts: 'Hiragino Kaku Gothic ProN', 'Yu Gothic', 'Source Han Sans JP', 'Noto Sans CJK JP', 'Droid Sans Japanese', 'Meiryo', 'MS PGothic'; +:lang(ja) { + .override-fonts(@default-fonts, @ja-fonts;); +} + +@zh-CN-fonts: 'PingFang SC', 'Hiragino Sans GB', 'Source Han Sans CN', 'Source Han Sans SC', 'Noto Sans CJK SC', 'Microsoft YaHei', 'Heiti SC', SimHei; +:lang(zh-CN) { + .override-fonts(@default-fonts, @zh-CN-fonts;); +} + +@zh-TW-fonts: 'PingFang TC', 'Hiragino Sans TC', 'Source Han Sans TW', 'Source Han Sans TC', 'Noto Sans CJK TC', 'Microsoft JhengHei', 'Heiti TC', PMingLiU; +:lang(zh-TW) { + .override-fonts(@default-fonts, @zh-TW-fonts;); +} + +@zh-HK-fonts: 'PingFang HK', 'Hiragino Sans TC', 'Source Han Sans HK', 'Source Han Sans TC', 'Noto Sans CJK TC', 'Microsoft JhengHei', 'Heiti TC', PMingLiU_HKSCS, PMingLiU; +:lang(zh-HK) { + .override-fonts(@default-fonts, @zh-HK-fonts;); +} + +@ko-fonts: 'Apple SD Gothic Neo', 'NanumBarunGothic', 'Malgun Gothic', 'Gulim', 'Dotum', 'Nanum Gothic', 'Source Han Sans KR', 'Noto Sans CJK KR'; +:lang(ko) { + .override-fonts(@default-fonts, @ko-fonts;); +} + +img { + border-radius: 3px; +} + +table { + border-collapse: collapse; +} + +a { + cursor: pointer; +} + +.rounded { + border-radius: .28571429rem !important; +} + +.wrap { + word-wrap: break-word; + word-break: break-all; +} + +pre, +code, +.mono { + font: 12px @monospaced-fonts, monospace; + + &.raw { + padding: 7px 12px; + margin: 10px 0; + background-color: #f8f8f8; + border: 1px solid #dddddd; + border-radius: 3px; + font-size: 13px; + line-height: 1.5; + overflow: auto; + } + + &.wrap { + white-space: pre-wrap; + word-break: break-all; + overflow-wrap: break-word; + word-wrap: break-word; + } +} + +.dont-break-out { + overflow-wrap: break-word; + word-wrap: break-word; + word-break: break-all; + hyphens: auto; +} + +.full.height { + flex-grow: 1; + padding-bottom: 80px; +} + +.following.bar { + z-index: 900; + left: 0; + margin: 0 !important; + + &.light { + background-color: white; + border-bottom: 1px solid #dddddd; + box-shadow: 0 2px 3px rgba(0, 0, 0, .04); + } + + .column .menu { + margin-top: 0; + } + + .top.menu a.item.brand { + padding-left: 0; + } + + .brand .ui.mini.image { + width: 30px; + } + + .top.menu a.item:hover, + .top.menu .dropdown.item:hover, + .top.menu .dropdown.item.active { + background-color: transparent; + } + + .top.menu a.item:hover { + color: rgba(0, 0, 0, .45); + } + + .top.menu .menu { + z-index: 900; + } + + .fitted .svg { + margin-right: 0; + } + + .svg { + margin-right: .75em; + } + + .searchbox { + background-color: #f4f4f4 !important; + + &:focus { + background-color: #e9e9e9 !important; + } + } + + .text .svg { + width: 16px; + text-align: center; + } + + #navbar { + width: 100vw; + min-height: 52px; + padding: 0 .5rem; + } + + #navbar .brand { + margin: 0; + } + + @media only screen and (max-width: 767px) { + #navbar:not(.shown) > *:not(:first-child) { + display: none; + } + } +} + +.right.stackable.menu { + // responsive fix: this makes sure that the right menu when the page + // is on mobile view will have elements stacked on top of each other. + // no, stackable won't work on right menus. + margin-left: auto; + display: flex; + align-items: inherit; + flex-direction: inherit; +} + +.ui { + &.left:not(.action) { + float: left; + } + + &.right:not(.action) { + float: right; + } + + &.button, + &.menu .item { + user-select: auto; + } + + &.container { + &.fluid { + &.padded { + padding: 0 10px; + } + } + } + + &.form { + .ui.button { + font-weight: normal; + } + } + + &.floating.label { + z-index: 10; + } + + &.transparent.label { + background-color: transparent; + } + + &.nopadding { + padding: 0; + } + + &.menu, + &.vertical.menu, + &.segment { + box-shadow: none; + } + + /* Overide semantic selector '.ui.menu:not(.vertical) .item > .button' */ + /* This fixes the commit graph button on the commits page */ + + .menu:not(.vertical) .item > .button.compact { + padding: .58928571em 1.125em; + } + + .menu:not(.vertical) .item > .button.small { + font-size: .92857143rem; + } + + &.menu .ui.dropdown.item .menu .item { + width: 100%; + } + + &.dropdown .menu > .item > .floating.label { + z-index: 11; + } + + &.dropdown .menu .menu > .item > .floating.label { + z-index: 21; + } + + &.dropdown .menu > .header { + font-size: .8em; + } + + .text { + &.red { + color: #d95c5c !important; + + a { + color: #d95c5c !important; + + &:hover { + color: #e67777 !important; + } + } + } + + &.blue { + color: #428bca !important; + + a { + color: #1155cc !important; + + &:hover { + color: #428bca !important; + } + } + } + + &.black { + color: #444444; + + &:hover { + color: #000000; + } + } + + &.grey { + color: #767676 !important; + + a { + color: #444444 !important; + + &:hover { + color: #000000 !important; + } + } + } + + &.light.grey { + color: #888888 !important; + } + + &.green { + color: #6cc644 !important; + } + + &.purple { + color: #6e5494 !important; + } + + &.yellow { + color: #fbbd08 !important; + } + + &.orange { + color: #f2711c !important; + } + + &.gold { + color: #a1882b !important; + } + + &.left { + text-align: left !important; + } + + &.right { + text-align: right !important; + } + + &.small { + font-size: .75em; + } + + &.normal { + font-weight: normal; + } + + &.bold { + font-weight: bold; + } + + &.italic { + font-style: italic; + } + + &.truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + display: inline-block; + } + + &.thin { + font-weight: normal; + } + + &.middle { + vertical-align: middle; + } + + &.nopadding { + padding: 0; + } + + &.nomargin { + margin: 0; + } + } + + .message { + text-align: center; + } + + .message > ul { + margin-left: auto; + margin-right: auto; + display: table; + text-align: left; + } + + &.bottom.attached.message { + font-weight: bold; + text-align: left; + color: black; + + .pull-right { + color: black; + } + + & > span, + .pull-right > span { + color: #21ba45; + } + } + + .header > i + .content { + padding-left: .75rem; + vertical-align: middle; + } + + .warning { + &.header { + background-color: #f9edbe !important; + border-color: #efc16b; + } + + &.segment { + border-color: #efc16b; + } + } + + .info { + &.segment { + border: 1px solid #c5d5dd; + + &.top { + background-color: #e6f1f6 !important; + + h3, + h4 { + margin-top: 0; + } + + h3:last-child { + margin-top: 4px; + } + + > :last-child { + margin-bottom: 0; + } + } + } + } + + .normal.header { + font-weight: normal; + } + + .avatar.image, + .avatar.image img, + .avatar.image svg, + .avatar.images .image, + .avatar.images img, + .avatar.images svg { + border-radius: 3px; + } + + .form { + .fake { + display: none !important; + } + + .sub.field { + margin-left: 25px; + } + } + + .sha.label { + font-family: @monospaced-fonts, monospace; + font-size: 13px; + padding: 6px 10px 4px; + font-weight: normal; + margin: 0 6px; + } + + .button.truncate { + display: inline-block; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + vertical-align: top; + white-space: nowrap; + margin-right: 6px; + } + + &.status.buttons { + .svg { + margin-right: 4px; + } + } + + &.inline.delete-button { + padding: 8px 15px; + font-weight: normal; + } + + .background { + &.red { + background-color: #d95c5c !important; + } + + &.blue { + background-color: #428bca !important; + } + + &.black { + background-color: #444444; + } + + &.grey { + background-color: #767676 !important; + } + + &.light.grey { + background-color: #888888 !important; + } + + &.green { + background-color: #6cc644 !important; + } + + &.purple { + background-color: #6e5494 !important; + } + + &.yellow { + background-color: #fbbf09 !important; + } + + &.orange { + background-color: #f2711c !important; + } + + &.gold { + background-color: #a1882b !important; + } + } + + .migrate { + color: #888888 !important; + opacity: .5; + a { + color: #444444 !important; + + &:hover { + color: #000000 !important; + } + } + } + + .border { + border: 1px solid; + &.red { + border-color: #d95c5c !important; + } + + &.blue { + border-color: #428bca !important; + } + + &.black { + border-color: #444444; + } + + &.grey { + border-color: #767676 !important; + } + + &.light.grey { + border-color: #888888 !important; + } + + &.green { + border-color: #6cc644 !important; + } + + &.purple { + border-color: #6e5494 !important; + } + + &.yellow { + border-color: #fbbd08 !important; + } + + &.orange { + border-color: #f2711c !important; + } + + &.gold { + border-color: #a1882b !important; + } + } + + .branch-tag-choice { + line-height: 20px; + } + + &.pagination.menu { + @media only screen and (max-width: 767px) { + .item:not(.active):not(.navigation), + .item.navigation span.navigation_label { + display: none; + } + } + &.narrow .item { + padding-left: 8px; + padding-right: 8px; + min-width: 1em; + text-align: center; + .icon { + margin-right: 0; + } + } + } +} + +.file-comment { + font: 12px @monospaced-fonts, monospace; + color: rgba(0, 0, 0, .87); +} + +.ui.floating.dropdown { + .overflow.menu { + .scrolling.menu.items { + border-radius: 0 !important; + box-shadow: none !important; + border-bottom: 1px solid rgba(34, 36, 38, .15); + } + } +} + +.user-menu > .item { + width: 100%; + border-radius: 0 !important; +} + +.scrolling.menu { + .item.selected { + font-weight: 700 !important; + } +} + +footer { + background-color: white; + border-top: 1px solid #d6d6d6; + width: 100%; + flex-basis: 40px; + color: #888888; + + .container { + width: 100vw !important; + padding: 0 .5rem; + max-width: calc(100vw - 1rem) !important; + + .fa { + width: 16px; + text-align: center; + color: #428bca; + } + + .links > * { + border-left: 1px solid #d6d6d6; + padding-left: 8px; + margin-left: 5px; + + &:first-child { + border-left: 0; + } + } + } + + .ui.language .menu { + max-height: 500px; + overflow-y: auto; + margin-bottom: 7px; + } + + .ui { + &.left, + &.right { + line-height: 40px; + } + } +} + +.hide { + display: none; + + &.show-outdated { + display: none !important; + } + + &.hide-outdated { + display: none !important; + } +} + +.center { + text-align: center; +} + +.generate-img(16); +.generate-img(@n, @i: 1) when (@i =< @n) { + .img-@{i} { + width: (2px * @i) !important; + height: (2px * @i) !important; + } + + .generate-img(@n, (@i + 1)); +} + +// Conditional display +@media only screen and (min-width: 768px) { + .mobile-only, + .ui.button.mobile-only { + display: none; + } + + // has the same behaviour of sr-only, hiding the content for + // non-screenreaders, but is shown on mobile devices. + .sr-mobile-only { + .sr-only(); + } +} + +@media only screen and (max-width: 767px) { + .not-mobile { + display: none; + } +} + +// Accessibility +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} + +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} + +@media only screen and (max-width: 991px) and (min-width: 768px) { + .ui.container { + width: 95%; + } +} + +.ui.menu.new-menu { + justify-content: center !important; + padding-top: 15px !important; + margin-top: -15px !important; + margin-bottom: 15px !important; + background: #fafafa; + border-width: 1px !important; +} + +@media only screen and (max-width: 1200px) { + .ui.menu.new-menu { + overflow-x: auto !important; + justify-content: left !important; + padding-bottom: 2px; + } + + .ui.menu.new-menu::-webkit-scrollbar { + height: 8px; + display: none; + } + + .ui.menu.new-menu:hover::-webkit-scrollbar { + display: block; + } + + .ui.menu.new-menu::-webkit-scrollbar-track { + background: rgba(0, 0, 0, .01); + } + + .ui.menu.new-menu::-webkit-scrollbar-thumb { + background: rgba(0, 0, 0, .2); + } + + .ui.menu.new-menu:after { + position: absolute; + margin-top: -15px; + display: block; + background-image: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1) 100%); + content: ' '; + right: 0; + height: 53px; + z-index: 1000; + width: 60px; + clear: none; + visibility: visible; + } + + .ui.menu.new-menu a.item:last-child { + padding-right: 30px !important; + } +} + +[v-cloak] { + display: none !important; +} + +.repos-search { + padding-bottom: 0 !important; +} + +.repos-filter { + margin-top: 0 !important; + border-bottom-width: 0 !important; + margin-bottom: 2px !important; +} + +#user-heatmap { + width: 107%; // Fixes newest contributions not showing + text-align: center; + + svg:not(:root) { + overflow: inherit; + padding: 0 !important; + } + + @media only screen and (max-width: 1200px) { + & { + display: none; + } + } + + .total-contributions { + text-align: left; + font-weight: 500; + margin-top: 0; + } +} + +.heatmap-color-0 { + background-color: #f4f4f4; +} + +.heatmap-color-1 { + background-color: #d8efbf; +} + +.heatmap-color-2 { + background-color: #9fdb81; +} + +.heatmap-color-3 { + background-color: #66c74b; +} + +.heatmap-color-4 { + background-color: #609926; +} + +.heatmap-color-5 { + background-color: #025900; +} + +.activity-bar-graph { + background-color: #6cc644; + color: #000000; +} + +.activity-bar-graph-alt { + color: #000000; +} + +.archived-icon { + color: lighten(#000000, 70%) !important; +} + +.oauth2-authorize-application-box { + margin-top: 3em !important; +} + +/* multiple radio or checkboxes as inline element */ +.inline-grouped-list { + display: inline-block; + vertical-align: top; + + > .ui { + display: block; + margin-top: 5px; + margin-bottom: 10px; + + &:first-child { + margin-top: 1px; + } + } +} + +i.icons .icon:first-child { + margin-right: 0; +} + +i.icon.centerlock { + top: 1em; +} + +.ui.label { + padding: .3em .5em; +} + +.ui.label > .detail .icons { + margin-right: .25em; +} + +.ui.label > .detail .icons .icon { + margin-right: 0; +} + +.lines-num { + padding-left: 10px; + padding-right: 10px; + text-align: right !important; + color: rgba(27, 31, 35, .3); + width: 1%; + user-select: none; + + span { + &.bottom-line { + &:after { + border-bottom: 1px solid #eaecef; + } + } + + &:after { + content: attr(data-line-number); + line-height: 20px !important; + padding: 0 10px; + cursor: pointer; + display: block; + } + } +} + +.lines-type-marker { + vertical-align: top; +} + +.lines-num, +.lines-code { + padding-top: 0; + padding-bottom: 0; + vertical-align: top; + + pre, + ol { + background-color: inherit; + margin: 0; + padding: 0 !important; + + li { + display: block; + width: calc(100% - 1ch); + padding-left: 1ch; + } + } +} + +.lines-code code { + white-space: pre; +} + +.blame .lines-num { + padding: 0 !important; + background-color: #f5f5f5; +} + +.blame .lines-code { + padding: 0 !important; +} + +.lines-commit { + vertical-align: top; + color: #999999; + padding: 0 !important; + background: #f5f5f5; + width: 1%; + -moz-user-select: none; + -ms-user-select: none; + -webkit-user-select: none; + user-select: none; + + .blame-info { + width: 350px; + max-width: 350px; + display: block; + user-select: none; + padding: 0 0 0 10px; + + .blame-data { + display: flex; + font-family: @default-fonts; + + .blame-message { + flex-grow: 2; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + line-height: 20px; + } + + .blame-time, + .blame-avatar { + flex-shrink: 0; + } + } + } + + .ui.avatar.image { + height: 18px; + width: 18px; + } +} + +.lines-code, +.lines-commit { + .bottom-line { + border-bottom: 1px solid #eaecef; + } +} +.code-view { + overflow: auto; + overflow-x: auto; + overflow-y: hidden; + + &.has-context-menu { + overflow: visible; + overflow-x: visible; + overflow-y: visible; + } + + *:not(.fa):not(.svg):not(.icon) { + font-size: 12px; + font-family: @monospaced-fonts, monospace; + line-height: 20px; + } + + table { + width: 100%; + } + + .lines-code.active { + background: #fffbdd !important; + } + +} + +.octicon-tiny { + font-size: .85714286rem; +} + +.ui.basic.blue.button, +.ui.basic.blue.buttons .button { + box-shadow: inset 0 0 0 1px #1678c2 !important; + color: #1678c2 !important; +} + +.ui.label > img { + width: auto !important; + vertical-align: middle; + height: 2.1666em !important; +} + +.svg { + span.green & { + color: #21ba45; + } + span.red & { + color: #db2828; + } + span.purple & { + color: #a333c8; + } +} + +.ui.popup .ui.label { + margin-bottom: .4em; +} + +.color-icon { + margin-right: .5em; + margin-left: .5em; + display: inline-block; + border: 0 solid rgba(0, 0, 0, .2); + border-radius: 100%; + height: 14px; + width: 14px; + position: relative; + top: 2px; +} + +.ui.label > .color-icon { + margin-left: 0; +} + +.invisible { + visibility: hidden; +} + +/* https://github.com/go-gitea/gitea/issues/10210 */ +.ui.attached.segment ~ .ui.top.attached.header { + margin-top: 1rem; +} + +table th[data-sortt-asc], +table th[data-sortt-desc] { + &:hover { + background: rgba(0, 0, 0, .1) !important; + cursor: pointer !important; + } + .svg { + margin-left: .25rem; + } +} + +/* limit width of all direct dropdown menu children */ +/* https://github.com/go-gitea/gitea/pull/10835 */ +.dropdown:not(.selection) > .menu:not(.review-box) > *:not(.header) { + max-width: 300px; + overflow-x: hidden; + text-overflow: ellipsis; +} + +.dropdown:not(.selection) > .menu.review-box > * { + @media only screen and (max-height: 700px) { + .CodeMirror, + .CodeMirror-scroll { + min-height: 100px; + } + } +} + +.text-label { + display: inline-flex !important; + align-items: center !important; +} + +.text-label .color-icon { + position: static !important; +} + +.emoji, +.reaction { + font-size: 1.25em; + line-height: 1; + font-style: normal !important; + font-weight: normal !important; + vertical-align: -.075em; +} + +.emoji img, +.reaction img { + border-width: 0 !important; + margin: 0 !important; + width: 1em !important; + height: 1em !important; + vertical-align: -.15em; +} + +/* https://github.com/go-gitea/gitea/pull/11486 */ +.ui.sub.header { + text-transform: none; +} + +.ui.tabular.menu { + .item { + padding: 11px 12px; + color: rgba(0, 0, 0, .5); + } + + .item:hover { + color: rgba(0, 0, 0, .8); + } + + .item.active { + color: rgba(0, 0, 0, .9); + margin-top: 1px; /* offset fomantic's margin-bottom: -1px */ + } +} + +.ui.secondary.pointing.menu .item { + padding: 12px; +} + +.ui.header > .ui.label.compact { + margin-top: inherit; +} diff --git a/frontend/less/_chroma.less b/frontend/less/_chroma.less new file mode 100644 index 0000000..a01aa21 --- /dev/null +++ b/frontend/less/_chroma.less @@ -0,0 +1,377 @@ +/* Background */ + +.chroma { + background-color: #ffffff; +} +/* LineTableTD */ + +.chroma .lntd { + vertical-align: top; + padding: 0; + margin: 0; + border: 0; +} +/* LineTable */ + +.chroma .lntable { + border-spacing: 0; + padding: 0; + margin: 0; + border: 0; + width: auto; + overflow: auto; + display: block; +} +/* LineHighlight */ + +.chroma .hl { + display: block; + width: 100%; + background-color: #e5e5e5; +} +/* LineNumbersTable */ + +.chroma .lnt { + margin-right: .4em; + padding: 0 .4em; + color: #7f7f7f; +} +/* LineNumbers */ + +.chroma .ln { + margin-right: .4em; + padding: 0 .4em; + color: #7f7f7f; +} +/* Keyword */ + +.chroma .k { + color: #d73a49; +} +/* KeywordConstant */ + +.chroma .kc { + color: #d73a49; +} +/* KeywordDeclaration */ + +.chroma .kd { + color: #d73a49; +} +/* KeywordNamespace */ + +.chroma .kn { + color: #d73a49; +} +/* KeywordPseudo */ + +.chroma .kp { + color: #d73a49; +} +/* KeywordReserved */ + +.chroma .kr { + color: #d73a49; +} +/* KeywordType */ + +.chroma .kt { + color: #445588; +} +/* NameAttribute */ + +.chroma .na { + color: #d73a49; +} +/* NameBuiltin */ + +.chroma .nb { + color: #005cc5; +} +/* NameBuiltinPseudo */ + +.chroma .bp { + color: #999999; +} +/* NameClass */ + +.chroma .nc { + color: #445588; +} +/* NameConstant */ + +.chroma .no { + color: #008080; +} +/* NameDecorator */ + +.chroma .nd { + color: #3c5d5d; +} +/* NameEntity */ + +.chroma .ni { + color: #6f42c1; +} +/* NameException */ + +.chroma .ne { + color: #990000; +} +/* NameFunction */ + +.chroma .nf { + color: #005cc5; +} +/* NameLabel */ + +.chroma .nl { + color: #990000; +} +/* NameNamespace */ + +.chroma .nn { + color: #555555; +} +/* NameOther */ + +.chroma .nx { + color: #24292e; +} +/* NameTag */ + +.chroma .nt { + color: #22863a; +} +/* NameVariable */ + +.chroma .nv { + color: #008080; +} +/* NameVariableClass */ + +.chroma .vc { + color: #008080; +} +/* NameVariableGlobal */ + +.chroma .vg { + color: #008080; +} +/* NameVariableInstance */ + +.chroma .vi { + color: #008080; +} +/* LiteralString */ + +.chroma .s { + color: #032f62; +} +/* LiteralStringAffix */ + +.chroma .sa { + color: #032f62; +} +/* LiteralStringBacktick */ + +.chroma .sb { + color: #032f62; +} +/* LiteralStringChar */ + +.chroma .sc { + color: #032f62; +} +/* LiteralStringDelimiter */ + +.chroma .dl { + color: #032f62; +} +/* LiteralStringDoc */ + +.chroma .sd { + color: #032f62; +} +/* LiteralStringDouble */ + +.chroma .s2 { + color: #032f62; +} +/* LiteralStringEscape */ + +.chroma .se { + color: #032f62; +} +/* LiteralStringHeredoc */ + +.chroma .sh { + color: #032f62; +} +/* LiteralStringInterpol */ + +.chroma .si { + color: #032f62; +} +/* LiteralStringOther */ + +.chroma .sx { + color: #032f62; +} +/* LiteralStringRegex */ + +.chroma .sr { + color: #22863a; +} +/* LiteralStringSingle */ + +.chroma .s1 { + color: #24292e; +} +/* LiteralStringSymbol */ + +.chroma .ss { + color: #032f62; +} +/* LiteralNumber */ + +.chroma .m { + color: #009999; +} +/* LiteralNumberBin */ + +.chroma .mb { + color: #009999; +} +/* LiteralNumberFloat */ + +.chroma .mf { + color: #009999; +} +/* LiteralNumberHex */ + +.chroma .mh { + color: #009999; +} +/* LiteralNumberInteger */ + +.chroma .mi { + color: #009999; +} +/* LiteralNumberIntegerLong */ + +.chroma .il { + color: #009999; +} +/* LiteralNumberOct */ + +.chroma .mo { + color: #009999; +} +/* Operator */ + +.chroma .o { + color: #d73a49; +} +/* OperatorWord */ + +.chroma .ow { + color: #d73a49; +} +/* Comment */ + +.chroma .c { + color: #6a737d; +} +/* CommentHashbang */ + +.chroma .ch { + color: #6a737d; +} +/* CommentMultiline */ + +.chroma .cm { + color: #999988; +} +/* CommentSingle */ + +.chroma .c1 { + color: #6a737d; +} +/* CommentSpecial */ + +.chroma .cs { + color: #999999; +} +/* CommentPreproc */ + +.chroma .cp { + color: #999999; +} +/* CommentPreprocFile */ + +.chroma .cpf { + color: #999999; +} +/* GenericDeleted */ + +.chroma .gd { + color: #000000; + background-color: #ffdddd; +} +/* GenericEmph */ + +.chroma .ge { + color: #000000; +} +/* GenericError */ + +.chroma .gr { + color: #aa0000; +} +/* GenericHeading */ + +.chroma .gh { + color: #999999; +} +/* GenericInserted */ + +.chroma .gi { + color: #000000; + background-color: #ddffdd; +} +/* GenericOutput */ + +.chroma .go { + color: #888888; +} +/* GenericPrompt */ + +.chroma .gp { + color: #555555; +} +/* GenericStrong */ + +.chroma .gs { + font-weight: bold; +} +/* GenericSubheading */ + +.chroma .gu { + color: #aaaaaa; +} +/* GenericTraceback */ + +.chroma .gt { + color: #aa0000; +} +/* GenericUnderline */ + +.chroma .gl { + text-decoration: underline; +} +/* TextWhitespace */ + +.chroma .w { + color: #bbbbbb; +} diff --git a/frontend/less/_dashboard.less b/frontend/less/_dashboard.less new file mode 100644 index 0000000..548cdf4 --- /dev/null +++ b/frontend/less/_dashboard.less @@ -0,0 +1,210 @@ +.dashboard { + padding-top: 15px; + + &.feeds, + &.issues { + .context.user.menu { + z-index: 101; + min-width: 200px; + + .ui.header { + font-size: 1rem; + text-transform: none; + } + } + + .filter.menu { + width: initial; + + .item { + text-align: left; + + .text { + height: 16px; + vertical-align: middle; + + &.truncate { + width: 75%; + } + } + + .floating.label { + top: 7px; + left: 90%; + width: 15%; + + @media only screen and (max-width: 768px) { + top: 10px; + left: auto; + width: auto; + right: 13px; + } + } + } + + // Sort + .jump.item { + margin: 1px; + padding-right: 0; + } + + .menu { + max-height: 300px; + overflow-x: auto; + right: 0 !important; + left: auto !important; + } + + @media only screen and (max-width: 768px) { + width: 100%; + } + } + + .right.stackable.menu > .item.active { + color: #d9453d; + } + } + + /* Accomodate for Semantic's 1px hacks on .attached elements */ + + .dashboard-repos { + margin: 0 1px; + } + + .dashboard-navbar { + width: 100vw; + padding: 0 .5rem; + } +} + +&.feeds { + .news { + + li { + display: flex; + align-items: baseline; + margin-top: .5rem; + margin-bottom: .5rem; + + img { + align-self: flex-start; + } + } + li > * + * { + margin-left: .35rem; + } + + line-height: 1.2; + + > .ui.grid { + margin-left: auto; + margin-right: auto; + } + + .ui.avatar { + margin-top: 13px; + } + + .time-since { + font-size: 13px; + } + + .issue.title { + width: 80%; + } + + .push.news .content ul { + line-height: 18px; + font-size: 13px; + list-style: none; + padding-left: 10px; + + .text.truncate { + width: 80%; + } + } + + .commit-id { + font-family: @monospaced-fonts, monospace; + } + + code { + padding: 1px; + font-size: 85%; + background-color: rgba(0, 0, 0, .04); + border-radius: 3px; + word-break: break-all; + } + } + + .list { + .header { + .ui.label { + margin-top: -4px; + padding: 4px 5px; + font-weight: normal; + } + + .plus.icon { + margin-top: 5px; + } + } + + ul { + list-style: none; + margin: 0; + padding-left: 0; + + li { + &:not(:last-child) { + border-bottom: 1px solid #ebebeb; + } + + &.private { + background-color: #fcf8e9; + } + + a { + padding: 6px 1.2em; + display: block; + + .svg { + color: #888888; + + &.rear { + font-size: 15px; + } + } + + .star-num { + font-size: 12px; + } + } + } + } + + #privateFilterCheckbox .svg { + color: #888888; + margin-right: .25rem; + } + + .repo-owner-name-list { + .item-name { + max-width: 70%; + margin-bottom: -4px; + } + } + + #collaborative-repo-list { + .owner-and-repo { + max-width: 80%; + margin-bottom: -5px; + } + + .owner-name { + max-width: 120px; + margin-bottom: -5px; + } + } + } +} diff --git a/frontend/less/_editor.less b/frontend/less/_editor.less new file mode 100644 index 0000000..cc30c0f --- /dev/null +++ b/frontend/less/_editor.less @@ -0,0 +1,75 @@ +.CodeMirror { + font: 14px @monospaced-fonts, monospace; + + &.cm-s-default { + border-radius: 3px; + padding: 0 !important; + } + + .cm-comment { + background: inherit !important; + } +} + +.repository.file.editor .tab[data-tab="write"] { + padding: 0 !important; +} + +.repository.file.editor .tab[data-tab="write"] .editor-toolbar { + border: 0 !important; +} + +.repository.file.editor .tab[data-tab="write"] .CodeMirror { + border-left: 0; + border-right: 0; + border-bottom: 0; +} + +.editor-toolbar { + opacity: 1 !important; +} + +.editor-toolbar a:not(:hover) { + background-color: transparent !important; +} + +.editor-toolbar i.separator { + border-left: none; +} + +.editor-loading { + padding: 1rem; + text-align: center; +} + +.edit-diff { + padding: 0 !important; +} + +.edit-diff > div > .ui.table { + border-top: none !important; + border-bottom: none !important; + border-left: 1px solid #d4d4d5 !important; + border-right: 1px solid #d4d4d5 !important; +} + +#edit_area { + display: none; +} + +.monaco-editor-container { + width: 100%; + min-height: 200px; + height: 90vh; +} + +/* overwrite conflicting styles from fomantic */ +.monaco-editor-container .inputarea { + min-height: 0 !important; + margin: 0 !important; + padding: 0 !important; + resize: none !important; + border: none !important; + color: transparent !important; + background-color: transparent !important; +} diff --git a/frontend/less/_explore.less b/frontend/less/_explore.less new file mode 100644 index 0000000..e9a2546 --- /dev/null +++ b/frontend/less/_explore.less @@ -0,0 +1,111 @@ +.explore { + padding-top: 15px; + + .navbar { + justify-content: center; + padding-top: 15px !important; + margin-top: -15px !important; + margin-bottom: 15px !important; + background-color: #fafafa !important; + border-width: 1px !important; + + .svg { + width: 16px; + text-align: center; + margin-right: 5px; + } + } +} + +.ui.repository.list { + .item { + padding-bottom: 25px; + + &:not(:first-child) { + border-top: 1px solid #eeeeee; + padding-top: 25px; + } + + .ui.header { + font-size: 1.5rem; + padding-bottom: 10px; + + .name { + word-break: break-all; + } + + .metas { + color: #888888; + font-size: 14px; + font-weight: normal; + + span:not(:last-child) { + margin-right: 5px; + } + } + } + + .time { + font-size: 12px; + color: #808080; + } + + .ui.tags { + margin-bottom: 1em; + } + + .ui.avatar.image { + width: 24px; + height: 24px; + } + } +} + +.ui.repository.branches { + .info { + font-size: 12px; + color: #808080; + display: flex; + white-space: pre; + .commit-message { + max-width: 72em; + overflow: hidden; + text-overflow: ellipsis; + } + } + .overflow-visible { + overflow: visible; + } +} + +.ui.user.list { + .item { + padding-bottom: 25px; + + &:not(:first-child) { + border-top: 1px solid #eeeeee; + padding-top: 25px; + } + + .ui.avatar.image { + width: 40px; + height: 40px; + } + + .description { + margin-top: 5px; + + .svg:not(:first-child) { + margin-left: 5px; + } + + a { + color: #333333; + + &:hover { + text-decoration: underline; + } + } + } + } +} diff --git a/frontend/less/_form.less b/frontend/less/_form.less new file mode 100644 index 0000000..de48f0b --- /dev/null +++ b/frontend/less/_form.less @@ -0,0 +1,250 @@ +.form { + .help { + color: #999999; + padding-top: .6em; + padding-bottom: .6em; + display: inline-block; + } +} + +.ui.attached.header { + background: #f0f0f0; + + .right { + margin-top: -5px; + + .button { + padding: 8px 10px; + font-weight: normal; + } + } +} + +@create-page-form-input-padding: 250px !important; +#create-page-form { + form { + margin: auto; + + .ui.message { + text-align: center; + } + + @media only screen and (min-width: 768px) { + width: 800px !important; + + .header { + padding-left: @create-page-form-input-padding+30px; + } + + .inline.field > label { + text-align: right; + width: @create-page-form-input-padding; + word-wrap: break-word; + } + + .help { + margin-left: @create-page-form-input-padding+15px; + } + + .optional .title { + margin-left: @create-page-form-input-padding; + } + + input, + textarea { + width: 50% !important; + } + } + + @media only screen and (max-width: 767px) { + .optional .title { + margin-left: 15px; + } + + .inline.field > label { + display: block; + } + } + } +} + +.signin { + .oauth2 { + div { + display: inline-block; + + p { + margin: 10px 5px 0 0; + float: left; + } + } + + a { + margin-right: 3px; + + &:last-child { + margin-right: 0; + } + } + + img { + width: 32px; + height: 32px; + + &.openidConnect { + width: auto; + } + } + } +} + +@media only screen and (min-width: 768px) { + .g-recaptcha { + margin: 0 auto !important; + width: 304px; + padding-left: 30px; + } +} + +@media screen and (max-height: 575px) { + #rc-imageselect, + .g-recaptcha { + transform: scale(.77); + transform-origin: 0 0; + } +} + +.user.activate, +.user.forgot.password, +.user.reset.password, +.user.signin, +.user.signup { + @input-padding: 200px; + #create-page-form; + + form { + width: 700px !important; + + .header { + padding-left: 0 !important; + text-align: center; + } + + .inline.field > label { + width: @input-padding; + } + + .inline.field > label, + input { + @media only screen and (max-width: 768px) { + width: 100% !important; + } + } + + input[type=number] { + -moz-appearance: textfield; + } + + input::-webkit-outer-spin-button, + input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; + } + } +} + +.repository { + &.new.repo, + &.new.migrate, + &.new.fork { + #create-page-form; + + form { + .dropdown { + .dropdown.icon { + margin-top: -7px !important; + padding-bottom: 5px; + } + + .text { + margin-right: 0 !important; + + i { + margin-right: 0 !important; + } + } + } + + .header { + padding-left: 0 !important; + text-align: center; + } + + @media only screen and (max-width: 768px) { + label, + input, + .selection.dropdown { + width: 100% !important; + } + + .field button, + .field a { + margin-bottom: 1em; + width: 100%; + } + } + } + } + + &.new.repo { + .ui.form { + @media only screen and (min-width: 768px) { + #auto-init { + margin-left: @create-page-form-input-padding+15px; + } + } + + .selection.dropdown:not(.owner) { + width: 50% !important; + + @media only screen and (max-width: 768px) { + width: 100% !important; + } + } + } + } +} + +.new.webhook { + form { + .help { + margin-left: 25px; + } + } + + .events.fields { + .column { + padding-left: 40px; + } + } +} + +.githook { + textarea { + font-family: @monospaced-fonts, monospace; + } +} + +.new.org .ui.form { + @media only screen and (max-width: 768px) { + .field button, + .field a { + margin-bottom: 1em; + width: 100%; + } + + .field input { + width: 100% !important; + } + } +} diff --git a/frontend/less/_home.less b/frontend/less/_home.less new file mode 100644 index 0000000..9039023 --- /dev/null +++ b/frontend/less/_home.less @@ -0,0 +1,65 @@ +.home { + .logo { + max-width: 220px; + } + + .hero { + @media only screen and (max-width: 767px) { + h1 { + font-size: 3.5em; + } + + h2 { + font-size: 2em; + } + } + + @media only screen and (min-width: 768px) { + h1 { + font-size: 5.5em; + } + + h2 { + font-size: 3em; + } + } + + .svg { + color: #5aa509; + height: 40px; + width: 50px; + vertical-align: bottom; + } + + &.header { + font-size: 20px; + } + } + + p.large { + font-size: 16px; + } + + .stackable { + padding-top: 30px; + } + + a { + color: #5aa509; + } +} + +.signup { + padding-top: 15px; +} + +footer { + .ui.container .left, + .ui.container .right { + @media only screen and (max-width: 880px) { + display: block; + text-align: center; + float: none; + } + } +} diff --git a/frontend/less/_install.less b/frontend/less/_install.less new file mode 100644 index 0000000..b38ec87 --- /dev/null +++ b/frontend/less/_install.less @@ -0,0 +1,38 @@ +.install { + padding-top: 45px; + + form { + @input-padding: 320px !important; + + label { + text-align: right; + width: @input-padding; + } + + input { + width: 35% !important; + } + + .field { + text-align: left; + + .help { + margin-left: @input-padding+15px; + } + + &.optional .title { + margin-left: 38%; + } + } + } + + .ui { + .checkbox { + margin-left: 40% !important; + + label { + width: auto !important; + } + } + } +} diff --git a/frontend/less/_markdown.less b/frontend/less/_markdown.less new file mode 100644 index 0000000..1b9c412 --- /dev/null +++ b/frontend/less/_markdown.less @@ -0,0 +1,514 @@ +.markdown:not(code) { + overflow: hidden; + font-size: 16px; + line-height: 1.6 !important; + word-wrap: break-word; + + &.ui.segment { + padding: 3em; + } + + &.file-view { + padding: 2em !important; + } + + > *:first-child { + margin-top: 0 !important; + } + + > *:last-child { + margin-bottom: 0 !important; + } + + a:not([href]) { + color: inherit; + text-decoration: none; + } + + .absent { + color: #cc0000; + } + + .anchor { + padding-right: 4px; + margin-left: -20px; + line-height: 1; + color: inherit; + } + + .anchor .svg { + vertical-align: middle; + } + + .anchor:focus { + outline: none; + } + + h1 .anchor .svg, + h2 .anchor .svg, + h3 .anchor .svg, + h4 .anchor .svg, + h5 .anchor .svg, + h6 .anchor .svg { + visibility: hidden; + } + + h1:hover .anchor .svg, + h2:hover .anchor .svg, + h3:hover .anchor .svg, + h4:hover .anchor .svg, + h5:hover .anchor .svg, + h6:hover .anchor .svg { + visibility: visible; + } + + h2 .anchor .svg, + h3 .anchor .svg, + h4 .anchor .svg { + position: relative; + top: -2px; + } + + h1, + h2, + h3, + h4, + h5, + h6 { + margin-top: 1em; + margin-bottom: 16px; + font-weight: bold; + line-height: 1.4; + + &:first-of-type { + margin-top: 0 !important; + } + } + + h1 tt, + h1 code, + h2 tt, + h2 code, + h3 tt, + h3 code, + h4 tt, + h4 code, + h5 tt, + h5 code, + h6 tt, + h6 code { + font-size: inherit; + } + + h1 { + padding-bottom: .3em; + font-size: 2.25em; + line-height: 1.2; + border-bottom: 1px solid #eeeeee; + } + + h2 { + padding-bottom: .3em; + font-size: 1.75em; + line-height: 1.225; + border-bottom: 1px solid #eeeeee; + } + + h3 { + font-size: 1.5em; + line-height: 1.43; + } + + h4 { + font-size: 1.25em; + } + + h5 { + font-size: 1em; + } + + h6 { + font-size: 1em; + color: #777777; + } + + p, + blockquote, + ul, + ol, + dl, + table, + pre { + margin-top: 0; + margin-bottom: 16px; + } + + hr { + height: 4px; + padding: 0; + margin: 16px 0; + background-color: #e7e7e7; + border: 0; + } + + ul, + ol { + padding-left: 2em; + } + + ul.no-list, + ol.no-list { + padding: 0; + list-style-type: none; + } + + li.task-list-item { + list-style-type: none; + margin-left: calc(-2em + 2px); + } + + ul ul, + ul ol, + ol ol, + ol ul { + margin-top: 0; + margin-bottom: 0; + } + + ol ol, + ul ol { + list-style-type: lower-roman; + } + + li > p { + margin-top: 0; + } + + dl { + padding: 0; + } + + dl dt { + padding: 0; + margin-top: 16px; + font-size: 1em; + font-style: italic; + font-weight: bold; + } + + dl dd { + padding: 0 16px; + margin-bottom: 16px; + } + + blockquote { + margin-left: 0; + padding: 0 15px; + color: #777777; + border-left: 4px solid #dddddd; + } + + blockquote > :first-child { + margin-top: 0; + } + + blockquote > :last-child { + margin-bottom: 0; + } + + table { + width: auto; + overflow: auto; + word-break: keep-all; + display: block; + } + + table th { + font-weight: bold; + } + + table th, + table td { + padding: 6px 13px !important; + border: 1px solid #dddddd !important; + } + + table tr { + background-color: #ffffff; + border-top: 1px solid #cccccc; + } + + table tr:nth-child(2n) { + background-color: #f8f8f8; + } + + img { + max-width: 100%; + box-sizing: border-box; + } + + .emoji { + max-width: none; + } + + span.frame { + display: block; + overflow: hidden; + } + + span.frame > span { + display: block; + float: left; + width: auto; + padding: 7px; + margin: 13px 0 0; + overflow: hidden; + border: 1px solid #dddddd; + } + + span.frame span img { + display: block; + float: left; + } + + span.frame span span { + display: block; + padding: 5px 0 0; + clear: both; + color: #333333; + } + + span.align-center { + display: block; + overflow: hidden; + clear: both; + } + + span.align-center > span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: center; + } + + span.align-center span img { + margin: 0 auto; + text-align: center; + } + + span.align-right { + display: block; + overflow: hidden; + clear: both; + } + + span.align-right > span { + display: block; + margin: 13px 0 0; + overflow: hidden; + text-align: right; + } + + span.align-right span img { + margin: 0; + text-align: right; + } + + span.float-left { + display: block; + float: left; + margin-right: 13px; + overflow: hidden; + } + + span.float-left span { + margin: 13px 0 0; + } + + span.float-right { + display: block; + float: right; + margin-left: 13px; + overflow: hidden; + } + + span.float-right > span { + display: block; + margin: 13px auto 0; + overflow: hidden; + text-align: right; + } + + code, + tt { + padding: .2em .3em; + margin: 0; + font-size: 85%; + background-color: rgba(0, 0, 0, .04); + border-radius: 3px; + } + + code br, + tt br { + display: none; + } + + del code { + text-decoration: inherit; + } + + pre > code { + padding: 0; + margin: 0; + font-size: 100%; + word-break: normal; + white-space: pre; + background: transparent; + border: 0; + } + + .highlight { + margin-bottom: 16px; + } + + .highlight pre, + pre { + padding: 16px; + overflow: auto; + font-size: 85%; + line-height: 1.45; + background-color: #f7f7f7; + border-radius: 3px; + } + + .highlight pre { + margin-bottom: 0; + word-break: normal; + } + + pre { + word-wrap: normal; + } + + pre code, + pre tt { + display: inline; + max-width: initial; + padding: 0; + margin: 0; + overflow: initial; + line-height: inherit; + word-wrap: normal; + background-color: transparent; + border: 0; + } + + pre code:before, + pre code:after, + pre tt:before, + pre tt:after { + content: normal; + } + + kbd { + display: inline-block; + padding: 3px 5px; + font-size: 11px; + line-height: 10px; + color: #555555; + vertical-align: middle; + background-color: #fcfcfc; + border: solid 1px #cccccc; + border-bottom-color: #bbbbbb; + border-radius: 3px; + box-shadow: inset 0 -1px 0 #bbbbbb; + } + + input[type="checkbox"] { + vertical-align: middle !important; + } + + .csv-data td, + .csv-data th { + padding: 5px; + overflow: hidden; + font-size: 12px; + line-height: 1; + text-align: left; + white-space: nowrap; + } + + .csv-data .blob-num { + padding: 10px 8px 9px; + text-align: right; + background: #ffffff; + border: 0; + } + + .csv-data tr { + border-top: 0; + } + + .csv-data th { + font-weight: bold; + background: #f8f8f8; + border-top: 0; + } + + .ui.list .list, + ol.ui.list ol, + ul.ui.list ul { + padding-left: 2em; + } +} + +.repository.wiki.revisions { + .ui.container > .ui.stackable.grid { + -ms-flex-direction: row-reverse; + flex-direction: row-reverse; + + > .header { + margin-top: 0; + + .sub.header { + padding-left: 52px; + word-break: break-word; + } + } + } +} + +.file-revisions-btn { + display: block; + float: left; + margin-bottom: 2px !important; + padding: 11px !important; + margin-right: 10px !important; + + i { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } +} + +.markdown-block-error { + margin-bottom: 0 !important; + border-bottom-left-radius: 0 !important; + border-bottom-right-radius: 0 !important; + box-shadow: none !important; + font-size: 85% !important; + white-space: pre !important; + padding: .5rem 1rem !important; + text-align: left !important; +} + +.markdown-block-error + pre { + border-top: none !important; + margin-top: 0 !important; + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; +} diff --git a/frontend/less/_organization.less b/frontend/less/_organization.less new file mode 100644 index 0000000..5a72017 --- /dev/null +++ b/frontend/less/_organization.less @@ -0,0 +1,212 @@ +.organization { + padding-top: 15px; + + .head { + .ui.header { + .text { + vertical-align: middle; + font-size: 1.6rem; + margin-left: 15px; + } + + .ui.right { + margin-top: 5px; + } + } + } + + &.new.org { + #create-page-form; + + form { + .header { + padding-left: 0 !important; + text-align: center; + } + } + } + + &.options { + input { + min-width: 300px; + } + } + + &.profile { + #org-avatar { + width: 100px; + height: 100px; + margin-right: 15px; + } + + #org-info { + .ui.header { + font-size: 36px; + margin-bottom: 0; + } + + .desc { + font-size: 16px; + margin-bottom: 10px; + } + + .meta { + .item { + display: inline-block; + margin-right: 10px; + + .icon { + margin-right: 5px; + } + } + } + } + + .ui.top.header { + .ui.right { + margin-top: 0; + } + } + + .teams { + .item { + padding: 10px 15px; + } + } + } + + &.teams, + &.profile { + .members { + .ui.avatar { + width: 48px; + height: 48px; + margin-right: 5px; + } + } + } + + &.invite { + #invite-box { + margin: 50px auto auto; + width: 500px !important; + + #search-user-box { + input { + margin-left: 0; + width: 300px; + } + } + + .ui.button { + margin-left: 5px; + margin-top: -3px; + } + } + } + + &.members { + .list { + .item { + margin-left: 0; + margin-right: 0; + border-bottom: 1px solid #eeeeee; + + .ui.avatar { + width: 48px; + height: 48px; + } + + .meta { + line-height: 24px; + } + } + } + } + + &.teams { + .detail { + .item { + padding: 10px 15px; + + &:not(:last-child) { + border-bottom: 1px solid #eeeeee; + } + } + } + + .repositories, + .members { + .item { + padding: 10px 20px; + line-height: 32px; + + &:not(:last-child) { + border-bottom: 1px solid #dddddd; + } + + .button { + padding: 9px 10px; + } + } + } + + #add-repo-form, + #repo-multiple-form, + #add-member-form { + input { + margin-left: 0; + } + + .ui.button { + margin-left: 5px; + margin-top: -3px; + } + } + + #repo-top-segment { + height: 60px; + } + } + + &.settings { + .labelspage { + list-style: none; + padding-top: 0; + + .item { + margin-top: 0; + margin-right: -14px; + margin-left: -14px !important; + padding: 10px; + border-bottom: 1px solid #e1e4e8; + border-top: none; + + a { + font-size: 15px; + padding-top: 5px; + padding-right: 10px; + color: #666666; + + &:hover { + color: #000000; + } + + &.open-issues { + margin-right: 30px; + } + } + + .ui.label { + font-size: 1em; + } + } + + .item:last-child { + border-bottom: none; + padding-bottom: 0; + } + + } + } +} diff --git a/frontend/less/_repository.less b/frontend/less/_repository.less new file mode 100644 index 0000000..4c3861c --- /dev/null +++ b/frontend/less/_repository.less @@ -0,0 +1,3084 @@ +.repository { + padding-top: 15px; + + .repo-header { + .ui.compact.menu { + margin-left: 1rem; + } + + .ui.header { + margin-top: 0; + } + + .ui.huge.breadcrumb { + font-weight: 400; + font-size: 1.5rem; + + .label { + vertical-align: middle; + margin-top: -.29165em; + } + + &.repo-title .repo-header-icon { + display: inline-block; + position: relative; + + .avatar { + position: absolute; + right: 0; + bottom: 0; + width: 16px; + height: 16px; + color: #fafafa; + box-shadow: 0 0 0 2px; + margin: 0; + } + } + } + + .fork-flag { + margin-left: 36px; + margin-top: 3px; + display: block; + font-size: 12px; + white-space: nowrap; + } + + .repo-buttons .svg { + margin: 0 .42857143em 0 -.21428571em; + } + + .button { + margin-top: 2px; + margin-bottom: 2px; + } + } + + .tabs { + .navbar { + justify-content: initial; + } + } + + .navbar { + display: flex; + justify-content: space-between; + + .ui.label { + margin-left: 7px; + padding: 3px 5px; + } + } + + .owner.dropdown { + min-width: 40% !important; + } + + #file-buttons { + /* The reason for the !important is that Semantic itself has + margin-left: 0 !important on right items on mobile, which is mostly + to make sure elements which on menus would otherwise be on the right + align correctly with other elements when stacked. + Unfortunately, this brings some weird alignment on this particular + element, so we need to override it. */ + margin-left: auto !important; + font-weight: normal; + + .ui.button { + padding: 8px 10px; + font-weight: normal; + } + } + + .metas { + .menu { + overflow-x: auto; + max-height: 300px; + } + + .ui.list { + &.assignees .icon { + line-height: 2em; + } + + .hide { + display: none !important; + } + + .item { + padding: 0; + } + + .label.color { + padding: 0 8px; + margin-right: 5px; + } + + a { + margin: 2px 0; + + .text { + color: #444444; + + &:hover { + color: #000000; + } + } + } + } + + #deadlineForm input { + width: 12.8rem; + border-radius: 4px 0 0 4px; + border-right: 0; + white-space: nowrap; + } + } + + .header-wrapper { + background-color: #fafafa; + margin-top: -15px; + padding-top: 15px; + + .ui.tabs.divider { + border-bottom: 0; + } + + .ui.tabular .svg { + margin-right: 5px; + } + } + + .filter.menu { + .label.color { + border-radius: 3px; + margin-left: 15px; + padding: 0 8px; + } + + .svg { + float: left; + margin: 0 -7px 0 -5px; + width: 16px; + } + + &.labels .svg { + margin: -2px -7px 0 -5px; + } + + &.labels { + .label-filter .menu .info { + display: inline-block; + padding: .5rem .25rem; + border-bottom: 1px solid #cccccc; + font-size: 12px; + width: 100%; + white-space: nowrap; + text-align: center; + + code { + border: 1px solid #cccccc; + border-radius: 3px; + padding: 1px 2px; + font-size: 11px; + } + } + } + + .text { + margin-left: .9em; + } + + .menu { + max-height: 300px; + overflow-x: auto; + right: 0 !important; + left: auto !important; + } + + .dropdown.item { + margin: 1px; + padding-right: 0; + } + } + + .select-label { + .desc { + padding-left: 16px; + } + } + + .ui.tabs { + &.container { + margin-top: 14px; + margin-bottom: 0; + + .ui.menu { + border-bottom: 0; + } + } + + &.divider { + margin-top: 0; + margin-bottom: 20px; + } + } + + #clone-panel { + width: 350px; + + @media only screen and (max-width: 768px) { + width: 100%; + } + + input { + border-radius: 0; + padding: 5px 10px; + width: 50%; + } + + .clone.button { + font-size: 13px; + padding: 0 5px; + + &:first-child { + border-radius: .28571429rem 0 0 .28571429rem; + } + } + + .icon.button { + padding: 0 10px; + } + + .dropdown .menu { + right: 0 !important; + left: auto !important; + } + } + + &.file.list { + .repo-description { + display: flex; + justify-content: space-between; + align-items: center; + } + + #repo-desc { + font-size: 1.2em; + } + + .choose.reference { + .header .icon { + font-size: 1.4em; + } + } + + .repo-path { + + .section, + .divider { + display: inline; + } + } + + #file-buttons { + font-weight: normal; + + .ui.button { + padding: 8px 10px; + font-weight: normal; + } + + .ui.tiny.blue.buttons { + @media only screen and (max-width: 768px) { + width: 100%; + } + } + } + + #repo-files-table { + thead { + th { + padding-top: 8px; + padding-bottom: 5px; + font-weight: normal; + } + + .ui.avatar { + margin-bottom: 5px; + } + + .commit-summary a { + text-decoration: underline; + text-decoration-style: dashed; + + &:hover { + text-decoration-style: solid; + } + + &.default-link { + text-decoration: none; + + &:hover { + text-decoration: underline; + text-decoration-style: solid; + } + } + } + } + + tbody { + .svg { + margin-left: 3px; + margin-right: 5px; + color: #777777; + + &.octicon-reply { + margin-right: 10px; + } + + &.octicon-file-directory, + &.octicon-file-submodule { + color: #1e70bf; + } + } + } + + td { + padding-top: 8px; + padding-bottom: 8px; + overflow: initial; + + &.name { + max-width: 150px; + } + + &.message { + max-width: 400px; + } + + &.age { + width: 120px; + } + + .truncate { + display: inline-block; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + vertical-align: top; + white-space: nowrap; + } + } + + td.message .isSigned { + cursor: default; + } + + tr:hover { + background-color: #ffffee; + } + + .jumpable-path { + color: #888888; + } + } + + .non-diff-file-content { + .header { + .icon { + font-size: 1em; + } + + .small.icon { + font-size: .75em; + } + + .tiny.icon { + font-size: .5em; + } + + .file-actions { + margin-bottom: -5px; + + .btn-octicon { + display: inline-block; + padding: 5px; + margin-left: 5px; + line-height: 1; + color: #767676; + vertical-align: middle; + background: transparent; + border: 0; + outline: none; + } + + .btn-octicon:hover { + color: #4078c0; + } + + .btn-octicon-danger:hover { + color: #bd2c00; + } + + .btn-octicon.disabled { + color: #bbbbbb; + cursor: default; + } + + #delete-file-form { + display: inline-block; + } + } + } + + .view-raw { + padding: 5px; + + * { + max-width: 100%; + } + + img { + border-radius: 0; + } + } + + .plain-text { + padding: 1em 2em; + + pre { + word-break: break-word; + white-space: pre-wrap; + } + } + + .csv { + overflow-x: auto; + padding: 0 !important; + } + + pre { + overflow: auto; + } + } + + .sidebar { + padding-left: 0; + + .svg { + width: 16px; + } + } + } + + &.file.editor { + .treepath { + width: 100%; + + input { + vertical-align: middle; + box-shadow: rgba(0, 0, 0, .0745098) 0 1px 2px inset; + width: inherit; + padding: 7px 8px; + margin-right: 5px; + } + } + + .tabular.menu { + .svg { + margin-right: 5px; + } + } + + .commit-form-wrapper { + padding-left: 64px; + + .commit-avatar { + float: left; + margin-left: -64px; + width: 3em; + height: auto; + } + + .commit-form { + position: relative; + padding: 15px; + margin-bottom: 10px; + border: 1px solid #dddddd; + border-radius: 3px; + #avatar-arrow; + + &:after { + border-right-color: #ffffff; + } + + .quick-pull-choice { + .branch-name { + display: inline-block; + padding: 3px 6px; + font: 12px @monospaced-fonts, monospace; + color: rgba(0, 0, 0, .65); + background-color: rgba(209, 227, 237, .45); + border-radius: 3px; + } + + .new-branch-name-input { + position: relative; + margin-left: 25px; + + input { + width: 240px !important; + padding-left: 26px !important; + } + } + + .octicon-git-branch { + position: absolute; + top: 9px; + left: 10px; + color: #b0c4ce; + } + } + } + } + } + + &.options { + #interval { + width: 100px !important; + min-width: 100px; + } + + .danger { + .item { + padding: 20px 15px; + } + + .ui.divider { + margin: 0; + } + } + } + + @comment-avatar-width: 3em; + + .comment textarea { + max-height: none !important; + } + + &.new.issue { + .comment.form { + .comment { + .avatar { + width: @comment-avatar-width; + } + } + + .content { + margin-left: 4em; + #avatar-arrow; + + &:after { + border-right-color: #ffffff; + } + + .markdown { + font-size: 14px; + } + } + + .metas { + min-width: 220px; + + .filter.menu { + max-height: 300px; + overflow-x: auto; + } + } + + } + } + + &.view.issue { + .title { + padding-bottom: 0 !important; + + h1 { + font-weight: 300; + font-size: 2.3rem; + margin-bottom: 5px; + + .ui.input { + font-size: .5em; + vertical-align: top; + width: 50%; + min-width: 600px; + + input { + font-size: 1.5em; + padding: 6px 10px; + } + } + } + + .index { + font-weight: 300; + color: #aaaaaa; + letter-spacing: -1px; + } + + .label { + margin-right: 10px; + } + + .edit-zone { + margin-top: 10px; + } + } + + .pull-desc { + code { + color: #0166e6; + } + } + + .pull { + &.tabular.menu { + margin-bottom: 1rem; + + .svg { + margin-right: 5px; + } + } + + .merge.box { + .avatar { + margin-left: 10px; + margin-top: 10px; + } + .branch-update.grid { + .row { + padding-bottom: 1rem; + .icon { + margin-top: 1.1rem; + } + } + } + } + + .review-item { + display: flex; + justify-content: space-between; + align-items: center; + + .review-item-left, + .review-item-right { + display: flex; + align-items: center; + } + + .avatar, + .type-icon { + .svg { + width: 23px; + height: 23px; + } + } + + .text { + margin: .3em 0 .5em .5em; + } + + .type-icon { + align-self: flex-start; + margin-right: 1em; + + i { + line-height: 1.8em; + } + } + + .divider { + margin: .5rem 0; + } + + .review-content { + padding: 1em 0 1em 3.8em; + } + } + } + + .comment-list { + &:not(.prevent-before-timeline):before { + display: block; + content: ""; + position: absolute; + margin-top: 12px; + margin-bottom: 14px; + top: 0; + bottom: 0; + left: 96px; + width: 2px; + background-color: #f3f3f3; + z-index: -1; + } + + .timeline { + position: relative; + display: block; + margin-left: 40px; + padding-left: 16px; + + &:before { //ciara + display: block; + content: ""; + position: absolute; + margin-top: 12px; + margin-bottom: 14px; + top: 0; + bottom: 0; + left: 30px; + width: 2px; + background-color: #f3f3f3; + z-index: -1; + } + } + + .timeline-item, + .timeline-item-group { + padding: 12px 0; + } + + .timeline-item-group { + .timeline-item { + padding-top: 8px; + padding-bottom: 8px; + } + } + + .timeline-item { + margin-left: 16px; + position: relative; + + .timeline-avatar { + position: absolute; + left: -72px; + img { + width: 40px; + height: 40px; + } + } + + .avatar.image, + .avatar.image img { + width: 20px; + height: 20px; + margin-right: .15em; + } + + &:first-child:not(.commit) { + padding-top: 0 !important; + } + + &:last-child:not(.commit) { + padding-bottom: 0 !important; + } + + .badge.badge-commit { + border-color: transparent; + background: radial-gradient(white 40%, transparent 40%) no-repeat; + } + + .badge { + width: 32px; + height: 32px; + background-color: #fff; + border: 2px solid #eee; + border-radius: 50%; + display: flex; + float: left; + margin-left: -32px; + margin-right: 8px; + color: #444; + align-items: center; + justify-content: center; + + .svg { + width: 24px; + height: 24px; + padding: 3px; + + &.octicon-circle-slash { + color: #bd2c00; + } + + &.octicon-dot-fill { + color: #6cc644; + } + + &.octicon-comment { + margin-top: 2px; + } + } + } + + &.comment > .content { + margin-left: -16px; + } + + &.event > .text { + line-height: 32px; + vertical-align: middle; + } + + &.commits-list { + padding-left: 15px; + padding-top: 0; + + .singular-commit { + line-height: 30px; + + &:not(:last-child) { + padding-bottom: 2px; + } + + .shabox { + .sha.label { + margin: 0; + border: 1px solid #bbbbbb; + + &.isSigned.isWarning { + border: 1px solid #db2828; + background: fade(#db2828, 10%); + + .shortsha { + display: inline-block; + padding-top: 1px; + } + + &:hover { + background: fade(#db2828, 30%) !important; + } + } + + &.isSigned.isVerified { + border: 1px solid #21ba45; + background: fade(#21ba45, 10%); + + .shortsha { + display: inline-block; + padding-top: 1px; + } + + &:hover { + background: fade(#21ba45, 30%) !important; + } + } + + &.isSigned.isVerifiedUntrusted { + border: 1px solid #fbbd08; + background: fade(#fbbd08, 10%); + + .shortsha { + display: inline-block; + padding-top: 1px; + } + + &:hover { + background: fade(#fbbd08, 30%) !important; + } + } + + &.isSigned.isVerifiedUnmatched { + border: 1px solid #f2711c; + background: fade(#f2711c, 10%); + + .shortsha { + display: inline-block; + padding-top: 1px; + } + + &:hover { + background: fade(#f2711c, 30%) !important; + } + } + } + } + } + } + + &.event > .commit-status-link { + float: right; + margin-right: 8px; + margin-top: 4px; + } + + .author { + font-weight: 700; + } + + .comment-form-reply .footer { + padding-bottom: 1em; + } + } + + .comment { + + .tag { + color: #767676; + margin-top: 3px; + padding: 2px 5px; + font-size: 12px; + border: 1px solid rgba(0, 0, 0, .1); + border-radius: 3px; + &.review { + margin-left: 5px; + &.pending { + color: black; + background-color: #fffbb2; + } + } + } + + .actions { + .item { + float: left; + + &.context { + float: none; + } + + &.tag { + margin-right: 5px; + } + + &.action { + margin-top: 6px; + padding-left: 10px; + padding-right: 3px; + } + } + } + + > .content { + > div:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } + + > div:last-child { + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + } + } + + .content { + > .header { + #avatar-arrow; + font-weight: normal; + padding: auto 15px; + position: relative; + color: #767676; + background-color: #f7f7f7; + + .text { + padding-top: 10px; + padding-bottom: 10px; + } + + &.arrow-top::before, + &.arrow-top::after { + transform: rotate(90deg); + } + + &.arrow-top::before { + top: -9px; + left: 6px; + } + + &.arrow-top::after { + top: -8px; + left: 7px; + } + + .actions a { + color: rgba(0, 0, 0, .4); + + &:hover { + color: rgba(0, 0, 0, .8); + } + } + } + + > .merge-section { + background-color: #f7f7f7; + + .item { + padding: .25rem 0; + } + + .item-section { + display: flex; + align-items: center; + justify-content: space-between; + padding: 0; + margin-top: -.25rem; + margin-bottom: -.25rem; + } + + .divider { + margin-left: -1rem; + margin-right: -1rem; + } + + &.no-header { + #avatar-arrow; + } + } + + .markdown { + font-size: 14px; + } + + .no-content { + color: #767676; + font-style: italic; + } + + > .bottom.segment { + background: #f3f4f5; + + .ui.images::after { + clear: both; + content: ' '; + display: block; + } + + a { + display: block; + float: left; + margin: 5px; + padding: 5px; + height: 150px; + border: solid 1px #eeeeee; + border-radius: 3px; + max-width: 150px; + background-color: #ffffff; + + &:before { + content: ' '; + display: inline-block; + height: 100%; + vertical-align: middle; + } + } + + .ui.image { + max-height: 100%; + width: auto; + margin: 0; + vertical-align: middle; + } + + span.ui.image { + font-size: 128px; + color: #000000; + } + + span.ui.image:hover { + color: #000000; + } + } + } + + &:target > .content { + box-shadow: 0 0 10px #8c8c8c; + } + + &:target > .content > .code-comment-content { + padding: 4px; + } + + &:target > .content > .code-comment-content > .text { + margin-bottom: 0; + } + + .ui.form { + .field { + &:first-child { + clear: none; + } + + &.footer { + overflow: hidden; + } + + .tab.markdown { + min-height: 5rem; + } + } + + textarea { + height: 200px; + font-family: @monospaced-fonts, monospace; + } + } + + .edit.buttons { + margin-top: 10px; + } + } + + .event { + padding-left: 15px; + + & > .svg:not(.issue-symbol) { + text-shadow: -2px 0 #fff, 0 2px #fff, 2px 0 #fff, 0 -2px #fff; + } + + & > .svg.issue-symbol { + font-size: 20px; + margin-left: -35px; + margin-right: -1px; + margin-top: 0 !important; + height: 28px; + width: 28px; + border-radius: 50%; + text-align: center; + line-height: 28px; + background: #eee; + + &::before { + width: 15px; + display: inline-block; + } + + &.octicon-key::before { + width: 18px; + } + + &.octicon-circle-slash::before { + width: 17px; + } + + &.octicon-comment { + font-size: 21px; + line-height: 33px; + + &::before { + width: 20px; + } + } + } + + .detail { + font-size: .9rem; + margin-top: 5px; + margin-left: 8px; + } + + .segments { + box-shadow: none; + + .show-outdated, + .hide-outdated { + display: block; + } + } + } + } + + .ui.participants { + img { + margin-top: 5px; + margin-right: 5px; + } + } + + .ui.depending { + .item.is-closed { + .title { + text-decoration: line-through; + } + } + } + } + + .comment.form { + .ui.comments { + margin-top: -12px; + max-width: 100%; + } + + .content { + .field:first-child { + clear: none; + } + + .form { + #avatar-arrow; + + &:after { + border-right-color: #ffffff; + } + } + + textarea { + height: 200px; + font-family: @monospaced-fonts, monospace; + } + } + } + + .labelspage { + list-style: none; + padding-top: 0; + + .item { + margin-top: 0; + margin-right: -14px; + margin-left: -14px; + padding: 10px; + border-bottom: 1px solid #e1e4e8; + border-top: none; + + a { + font-size: 15px; + padding-top: 5px; + padding-right: 10px; + color: #666666; + + &:hover { + color: #000000; + } + + &.open-issues { + margin-right: 30px; + } + } + + .ui.label { + font-size: 1em; + } + } + + .item:last-child { + border-bottom: none; + padding-bottom: 0; + } + + .orglabel { + opacity: .7; + } + + } + + .milestone.list { + list-style: none; + padding-top: 15px; + + > .item { + padding-top: 10px; + padding-bottom: 10px; + border-bottom: 1px dashed #aaaaaa; + + > a { + padding-top: 5px; + padding-right: 10px; + color: #000000; + + &:hover { + color: #4078c0; + } + } + + .ui.progress { + width: 40%; + padding: 0; + border: 0; + margin: 0; + + .bar { + height: 20px; + } + } + + .meta { + color: #999999; + padding-top: 5px; + + .issue-stats .svg { + padding-left: 5px; + } + + .overdue { + color: red; + } + } + + .operate { + margin-top: -15px; + + > a { + font-size: 15px; + padding-top: 5px; + padding-right: 10px; + color: #666666; + + &:hover { + color: #000000; + } + } + } + + .content { + padding-top: 10px; + } + } + } + + &.new.milestone { + textarea { + height: 200px; + } + } + + &.compare.pull { + .show-form-container { + text-align: left; + } + + .choose.branch { + .svg { + margin-right: 10px; + } + } + + .comment.form { + .content { + #avatar-arrow; + + &:after { + border-right-color: #ffffff; + } + } + } + + .pullrequest-form { + margin-bottom: 1.5rem; + } + + .markdown { + font-size: 14px; + } + } + + .filter.dropdown .menu { + margin-top: 1px !important; + } + + &.branches { + .commit-divergence { + .bar-group { + position: relative; + float: left; + padding-bottom: 6px; + width: 90px; + + &:last-child { + border-left: 1px solid #b4b4b4; + } + } + + .count { + margin: 0 3px; + + &.count-ahead { + text-align: left; + } + + &.count-behind { + text-align: right; + } + } + + .bar { + height: 4px; + position: absolute; + background-color: #d4d4d5; + + &.bar-behind { + right: 0; + } + + &.bar-ahead { + left: 0; + } + } + } + } + + &.commits { + .header { + .search { + input { + font-weight: normal; + padding: 5px 10px; + } + } + } + } + + #commits-table { + thead { + th:first-of-type { + padding-left: 15px; + } + + .sha { + &td { + text-align: center; + } + + width: 175px; + } + } + + td.sha .sha.label { + margin: 0; + } + + td.message { + text-overflow: unset; + } + + &.ui.basic.striped.table tbody tr:nth-child(2n) { + background-color: rgba(0, 0, 0, .02) !important; + } + } + + #commits-table td.sha .sha.label, + #repo-files-table .sha.label, + .timeline-item.commits-list .singular-commit .sha.label { + border: 1px solid #bbbbbb; + + .ui.signature.avatar { + height: 16px; + margin-bottom: 0; + width: auto; + } + + .detail.icon { + background: #fafafa; + margin: -6px -10px -4px 0; + padding: 5px 4px 5px 6px; + border-left: 1px solid #bbbbbb; + border-top: 0; + border-right: 0; + border-bottom: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + + img { + margin-right: 0; + } + + .svg { + margin: 0 .25em 0 0; + } + + > div { + display: flex; + align-items: center; + } + } + + &.isSigned.isWarning { + border: 1px solid #db2828; + background: fade(#db2828, 10%); + + .shortsha { + display: inline-block; + padding-top: 1px; + } + + .detail.icon { + border-left: 1px solid #db2828; + color: #db2828; + } + + &:hover { + background: fade(#db2828, 30%) !important; + } + } + + &.isSigned.isVerified { + border: 1px solid #21ba45; + background: fade(#21ba45, 10%); + + .shortsha { + display: inline-block; + padding-top: 1px; + } + + .detail.icon { + border-left: 1px solid #21ba45; + color: #21ba45; + } + + &:hover { + background: fade(#21ba45, 30%) !important; + } + } + + &.isSigned.isVerifiedUntrusted { + border: 1px solid #fbbd08; + background: fade(#fbbd08, 10%); + + .shortsha { + display: inline-block; + padding-top: 1px; + } + + .detail.icon { + border-left: 1px solid #fbbd08; + color: #fbbd08; + } + + &:hover { + background: fade(#fbbd08, 30%) !important; + } + } + + &.isSigned.isVerifiedUnmatched { + border: 1px solid #f2711c; + background: fade(#f2711c, 10%); + + .shortsha { + display: inline-block; + padding-top: 1px; + } + + .detail.icon { + border-left: 1px solid #f2711c; + color: #f2711c; + } + + &:hover { + background: fade(#f2711c, 30%) !important; + } + } + } + + .diff-detail-box { + padding: 7px 0; + background: #ffffff; + line-height: 30px; + + &.sticky { + position: sticky; + top: 0; + z-index: 800; + margin-bottom: 10px; + border-bottom: 1px solid #d4d4d5; + padding-left: 5px; + padding-right: 5px; + } + + > div:after { + clear: both; + content: ""; + display: block; + } + + span.status { + display: inline-block; + width: 12px; + height: 12px; + margin-right: 8px; + vertical-align: middle; + + &.modify { + background-color: #f0db88; + } + + &.add { + background-color: #b4e2b4; + } + + &.del { + background-color: #e9aeae; + } + + &.rename { + background-color: #dad8ff; + } + } + + .detail-files { + background: #ffffff; + margin: 0; + } + } + + .diff-box .header { + display: flex; + align-items: center; + + .count { + margin-right: 12px; + font-size: 13px; + flex: 0 0 auto; + + .bar { + background-color: #bd2c00; + height: 12px; + width: 40px; + display: inline-block; + margin: 2px 4px 0; + vertical-align: text-top; + + .add { + background-color: #55a532; + height: 12px; + } + } + } + + .file { + flex: 1; + color: #888888; + word-break: break-all; + } + + .button { + margin: -5px 0 -5px 12px; + padding: 8px 10px; + flex: 0 0 auto; + } + } + + .diff-file-box { + .header { + background-color: #f7f7f7; + } + + .file-body.file-code { + .lines-num { + text-align: right; + color: #a6a6a6; + width: 1%; + min-width: 50px; + user-select: none; + + span.fold { + display: block; + text-align: center; + } + } + } + + .code-diff { + font-size: 12px; + + td { + padding: 0 0 0 10px !important; + border-top: 0; + } + + .lines-num { + padding: 0 5px !important; + } + + .tag-code .lines-num, + .tag-code td { + padding: 0 !important; + } + + tbody { + tr { + td.halfwidth { + // halfwidth is used in split view - and in that case, 1% of each + width: 49%; + } + + td.center { + text-align: center; + } + + [data-line-num]::before { + content: attr(data-line-num); + text-align: right; + } + + .lines-type-marker { + width: 10px; + min-width: 10px; + user-select: none; + } + + [data-type-marker]::before { + content: attr(data-type-marker); + text-align: right; + display: inline-block; + } + } + } + } + + .code-diff-unified tbody tr { + &.del-code td { + background-color: #ffeef0; + border-color: #f1c0c0; + } + + &.add-code td { + background-color: #e6ffed; + border-color: #bef5cb; + } + + &.del-code td.lines-num { + background-color: #ffe5e4; + } + + &.add-code td.lines-num { + background-color: #cdffd8; + } + + } + + .code-diff-split { + + table, + tbody { + width: 100%; + } + + tbody tr { + + // light gray for empty lines before / after commit + &.add-code td:nth-child(1), + &.add-code td:nth-child(2), + &.add-code td:nth-child(3), + &.del-code td:nth-child(4), + &.del-code td:nth-child(5), + &.del-code td:nth-child(6) { + background-color: #fafbfc; + border-right-color: #eaecef; + } + + &.del-code { + background-color: #ffeef0; + } + + &.del-code td.add-code { + background-color: #e6ffed; + } + &.del-code td.lines-num-new.add-code { + background-color: #cdffd8; + border-color: #bef5cb; + } + + &.add-code { + background-color: #e6ffed; + border-color: #bef5cb; + } + + &.add-code td.lines-num-new { + background-color: #cdffd8; + } + + td:nth-child(4) { + border-left-width: 1px; + border-left-style: solid; + border-left-color: #f6f8fa; + } + } + } + + &.file-content { + img { + max-width: 100%; + padding: 0; + border-radius: 0; + } + img.emoji { + padding: 0; + } + + clear: right; + } + + .ui.bottom.attached.table.segment { + padding-top: 5px; + padding-bottom: 5px; + } + } + + .diff-stats { + + clear: both; + margin-bottom: 5px; + max-height: 400px; + overflow: auto; + padding-left: 0; + + li { + list-style: none; + padding-bottom: 4px; + margin-bottom: 4px; + border-bottom: 1px dashed #dddddd; + padding-left: 6px; + } + + .diff-counter { + margin-right: 15px; + + .del { + color: red; + } + .add { + color: green; + } + } + } + + .repo-search-result { + padding-top: 10px; + padding-bottom: 10px; + + .lines-num a { + color: inherit; + } + } + + &.quickstart { + .guide { + .item { + padding: 1em; + + small { + font-weight: normal; + } + } + + .clone.button:first-child { + border-radius: .28571429rem 0 0 .28571429rem; + } + + .ui.action.small.input { + width: 100%; + } + + #repo-clone-url { + border-radius: 0; + padding: 5px 10px; + font-size: 1.2em; + } + } + } + + &.release { + #release-list { + border-top: 1px solid #dddddd; + margin-top: 20px; + padding-top: 15px; + + > li { + list-style: none; + + .meta, + .detail { + padding-top: 30px; + padding-bottom: 40px; + } + + .meta { + text-align: right; + position: relative; + + .tag:not(.icon) { + display: block; + margin-top: 15px; + } + + .commit { + display: block; + margin-top: 10px; + } + } + + .detail { + border-left: 1px solid #dddddd; + + .author { + img { + margin-bottom: -3px; + } + } + + .download { + margin-top: 20px; + + > a { + .svg { + margin-left: 5px; + margin-right: 5px; + } + } + + .list { + padding-left: 0; + border-top: 1px solid #eeeeee; + + li { + list-style: none; + display: block; + padding-top: 8px; + padding-bottom: 8px; + border-bottom: 1px solid #eeeeee; + + a > .text.right { + margin-right: 5px; + } + } + } + } + + .dot { + width: 9px; + height: 9px; + background-color: #cccccc; + z-index: 999; + position: absolute; + display: block; + left: -5px; + top: 40px; + border-radius: 6px; + border: 1px solid #ffffff; + } + } + } + } + } + + &.new.release { + .target { + min-width: 500px; + + #tag-name { + margin-top: -4px; + } + + .at { + margin-left: -5px; + margin-right: 5px; + } + + .dropdown.icon { + margin: 0; + padding-top: 3px; + } + + .selection.dropdown { + padding-top: 10px; + padding-bottom: 10px; + } + } + + .prerelease.field { + margin-bottom: 0; + } + + .field { + + button, + input { + @media only screen and (max-width: 438px) { + width: 100%; + } + } + + button { + @media only screen and (max-width: 768px) { + margin-bottom: 1em; + } + } + } + } + + &.forks { + .list { + margin-top: 0; + + .item { + padding-top: 10px; + padding-bottom: 10px; + border-bottom: 1px solid #dddddd; + + .ui.avatar { + float: left; + margin-right: 5px; + } + + .link { + padding-top: 5px; + } + } + } + } + + &.wiki { + &.start { + .ui.segment { + padding-top: 70px; + padding-bottom: 100px; + + .svg { + height: 48px; + } + } + } + + &.new { + .CodeMirror { + .CodeMirror-code { + font-family: @monospaced-fonts, monospace; + + .cm-comment { + background: inherit; + } + } + } + + .editor-preview { + background-color: white; + } + + .ui.attached.tabular.menu.previewtabs { + margin-bottom: 15px; + + & + .field .editor-toolbar:not(.fullscreen) a.fa-eye { + display: none; + } + } + } + + &.view { + .choose.page { + margin-top: -5px; + } + + > .markdown { + padding: 15px 30px; + + h1, + h2, + h3, + h4, + h5, + h6 { + &:first-of-type { + margin-top: 0; + } + } + } + } + + @media only screen and (max-width: 767px) { + .dividing.header .stackable.grid .button { + margin-top: 2px; + margin-bottom: 2px; + } + } + } + + &.settings { + &.collaboration { + .collaborator.list { + padding: 0; + + > .item { + margin: 0; + line-height: 2em; + + &:not(:last-child) { + border-bottom: 1px solid #dddddd; + } + } + } + + #repo-collab-form { + #search-user-box { + .results { + left: 7px; + } + } + + .ui.button { + margin-left: 5px; + margin-top: -3px; + } + } + + #repo-collab-team-form { + #search-team-box { + .results { + left: 7px; + } + } + + .ui.button { + margin-left: 5px; + margin-top: -3px; + } + } + } + + &.branches { + .protected-branches { + .selection.dropdown { + width: 300px; + } + + .item { + border: 1px solid #eaeaea; + padding: 10px 15px; + + &:not(:last-child) { + border-bottom: 0; + } + } + } + + .branch-protection { + .help { + margin-left: 26px; + padding-top: 0; + } + + .fields { + margin-left: 20px; + display: block; + } + + .whitelist { + margin-left: 26px; + + .dropdown img { + display: inline-block; + } + } + } + } + + &.webhook { + .events { + .column { + padding-bottom: 0; + } + + .help { + font-size: 13px; + margin-left: 26px; + padding-top: 0; + } + } + } + } + + .ui.attached.isSigned.isWarning { + border-left: 1px solid #c29393; + border-right: 1px solid #c29393; + + &.top, + &.message { + border-top: 1px solid #c29393; + } + + &.message { + box-shadow: none; + background-color: #fff5f5; + color: #d95c5c; + + .ui.text { + color: #d64444; + } + } + + &:last-child, + &.bottom { + border-bottom: 1px solid #c29393; + } + } + + .ui.attached.isSigned:not(.isWarning) .pull-right { + padding-top: 5px; + } + + .ui.attached.isSigned.isVerified { + border-left: 1px solid #a3c293; + border-right: 1px solid #a3c293; + + &.top, + &.message { + border-top: 1px solid #a3c293; + } + + &.message { + box-shadow: none; + background-color: #fcfff5; + color: #6cc644; + + .pull-right { + color: #000; + } + + .ui.text { + color: #21ba45; + } + } + + &:last-child, + &.bottom { + border-bottom: 1px solid #a3c293; + } + } + + .ui.attached.isSigned.isVerifiedUntrusted { + border-left: 1px solid #c2c193; + border-right: 1px solid #c2c193; + + &.top, + &.message { + border-top: 1px solid #c2c193; + } + + &.message { + box-shadow: none; + background-color: #fffff5; + color: #fbbd08; + + .ui.text { + color: #d2ab00; + } + } + + &:last-child, + &.bottom { + border-bottom: 1px solid #c2c193; + } + } + + .ui.attached.isSigned.isVerifiedUnmatched { + border-left: 1px solid #c2a893; + border-right: 1px solid #c2a893; + + &.top, + &.message { + border-top: 1px solid #c2a893; + } + + &.message { + box-shadow: none; + background-color: #fffaf5; + color: #f2711c; + + .ui.text { + color: #ee5f00; + } + } + + &:last-child, + &.bottom { + border-bottom: 1px solid #c2a893; + } + } + + .ui.segment.sub-menu { + padding: 7px; + line-height: 0; + + .list { + width: 100%; + display: flex; + + .item { + width: 100%; + border-radius: 3px; + + a { + color: black; + + &:hover { + color: #666666; + } + } + + span.ui { + color: black; + } + + &.active { + background: rgba(0, 0, 0, .05); + } + } + } + } + + .segment.reactions, + .select-reaction { + &.dropdown .menu { + right: 0 !important; + left: auto !important; + min-width: 15em; + + > .header { + margin: .75rem 0 .5rem; + } + + > .item { + float: left; + padding: .5rem !important; + font-size: 1.5em; + width: 45px; + left: 13px; + + img.emoji { + margin-right: 0; + } + } + } + } + + .segment.reactions { + padding: 0; + display: flex; + + .ui.label, + .ui.label.visible { + max-height: 40px; + padding: .4rem .8rem; + display: flex !important; + align-items: center; + border: 0; + border-right: 1px solid; + border-radius: 0; + margin: 0; + font-size: 14px; + font-weight: 100; + border-color: inherit !important; + + &.disabled { + cursor: default; + opacity: .5; + } + } + + .ui.label.basic.blue { + background-color: #f1f8ff !important; + border-color: inherit !important; + } + + .reaction-count { + margin-left: .5rem; + } + + .select-reaction { + display: flex; + align-items: center; + padding: 0 .5rem; + + &:not(.active) a { + display: none; + } + } + + &:hover .select-reaction a { + display: block; + } + } + + .ui.fluid.action.input { + .ui.search.action.input { + flex: auto; + } + } + + .repository-summary { + .segment.language-stats-details, + .segment.repository-summary { + border-top: none; + background: none; + } + + .segment.language-stats-details .item { + white-space: nowrap; + } + + .segment.language-stats { + padding: 0; + height: 11px; + display: flex; + white-space: nowrap; + width: 100%; + border-radius: 0; + user-select: none; + + .bar { + white-space: nowrap; + border: 0; + padding: 0; + margin: 0; + height: 100%; + } + } + } + + &.diff .committed-by { + padding-top: .5rem; + + .ui.avatar { + width: 20px; + height: 20px; + } + + span { + margin-right: .25rem; + + svg { + vertical-align: text-bottom; + margin-right: 2px; + } + } + } +} + +// End of .repository + +&.user-cards { + .list { + padding: 0; + display: flex; + flex-wrap: wrap; + + .item { + list-style: none; + width: 32%; + margin: 10px 10px 10px 0; + padding-bottom: 14px; + float: left; + + .avatar { + width: 48px; + height: 48px; + float: left; + display: block; + margin-right: 10px; + } + + .name { + margin-top: 0; + margin-bottom: 0; + font-weight: normal; + } + + .meta { + margin-top: 5px; + } + } + } +} + +#search-repo-box, +#search-user-box { + .results { + .result { + .image { + float: left; + margin-right: 8px; + width: 2em; + height: 2em; + } + + .content { + margin: 6px 0; + } + } + } +} + +#search-team-box { + .results { + .result { + .content { + margin: 6px 0; + } + } + } +} + +#issue-filters.hide { + display: none; +} + +#issue-actions { + margin-top: -1rem !important; // counteract padding from Semantic +} + +#issue-actions.hide { + display: none; +} + +.ui.checkbox.issue-checkbox { + vertical-align: middle; +} + +.ui.menu .item > img:not(.ui) { + width: auto; +} + +.issue.list { + list-style: none; + + > .item { + padding-top: 15px; + padding-bottom: 10px; + border-bottom: 1px dashed #aaaaaa; + + .title { + color: #444444; + font-size: 15px; + font-weight: bold; + margin: 0 6px; + + &:hover { + color: #000000; + } + } + + .comment { + padding-right: 10px; + color: #666666; + } + + .desc { + padding-top: 5px; + color: #999999; + + .waiting, + .approvals, + .rejects { + padding-left: 5px; + } + + .checklist { + padding-left: 5px; + + .progress-bar { + margin-left: 2px; + width: 80px; + height: 6px; + display: inline-block; + background-color: #eeeeee; + overflow: hidden; + border-radius: 3px; + vertical-align: 2px !important; + + .progress { + background-color: #cccccc; + display: block; + height: 100%; + } + } + } + + .conflicting { + padding-left: 5px; + } + + .due-date { + padding-left: 5px; + } + + a.milestone { + margin-left: 5px; + color: #999999 !important; + + &:hover { + color: #000000 !important; + } + } + + a.ref { + margin-left: 8px; + color: #999999 !important; + + &:hover { + color: #000000 !important; + } + + span { + margin-right: -4px; + } + } + + .assignee { + margin-top: -5px; + margin-right: 5px; + } + + .overdue { + color: red; + } + } + } +} + +.page.buttons { + padding-top: 15px; +} + +.ui.form { + .dropzone { + border: 2px dashed #0087f5; + box-shadow: none !important; + padding: 0; + min-height: 5rem; + border-radius: 4px; + + .dz-button { + color: rgba(0, 0, 0, .6); + } + + &:hover .dz-button { + color: rgba(0, 0, 0, .8); + } + + .dz-error-message { + top: 140px; + } + } +} + +.settings { + .content { + margin-top: 2px; + + > .header, + .segment { + box-shadow: 0 1px 2px 0 rgba(34, 36, 38, .15); + } + } + + .list { + > .item { + .green:not(.ui.button) { + color: #21ba45; + } + + &:not(:first-child) { + border-top: 1px solid #eaeaea; + padding: 1rem; + margin: 15px -1rem -1rem; + } + + > .svg { + display: table-cell; + } + + > .svg + .content { + display: table-cell; + padding: 0 0 0 .5em; + vertical-align: top; + } + + .info { + margin-top: 10px; + + .tab.segment { + border: 0; + padding: 10px 0 0; + } + } + } + + &.key { + .meta { + padding-top: 5px; + color: #666666; + } + } + + &.email { + > .item:not(:first-child) { + min-height: 60px; + } + } + + &.collaborator { + > .item { + padding: 0; + } + } + } +} + +.ui.vertical.menu { + .header.item { + font-size: 1.1em; + background: #f0f0f0; + } +} + +.edit-label.modal, +.new-label.segment { + .form { + .column { + padding-right: 0; + } + + .buttons { + margin-left: auto; + padding-top: 15px; + } + + .color.picker.column { + width: auto; + + .color-picker { + height: 35px; + width: auto; + padding-left: 30px; + } + } + + .minicolors-swatch.minicolors-sprite { + top: 10px; + left: 10px; + width: 15px; + height: 15px; + } + + .precolors { + padding-left: 0; + padding-right: 0; + margin: 3px 10px auto; + width: 120px; + + .color { + float: left; + width: 15px; + height: 15px; + } + } + } +} + +#avatar-arrow { + + &:before, + &:after { + right: 100%; + top: 20px; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + } + + &:before { + border-right-color: #d3d3d4; + border-width: 9px; + margin-top: -9px; + } + + &:after { + border-right-color: #f7f7f7; + border-width: 8px; + margin-top: -8px; + } +} + +#transfer-repo-modal, +#delete-repo-modal, +#delete-wiki-modal, +#convert-fork-repo-modal, +#convert-mirror-repo-modal { + .ui.message { + width: 100% !important; + } +} + +// generate .tab-size-{i} from 1 to 16 +.generate-tab-size(16); + +.generate-tab-size(@n, @i: 1) when (@i =< @n) { + .tab-size-@{i} { + tab-size: @i !important; + } + + .generate-tab-size(@n, (@i + 1)); +} + +.stats-table { + display: table; + width: 100%; + + .table-cell { + display: table-cell; + + &.tiny { + height: .5em; + } + } +} + +tbody.commit-list { + vertical-align: baseline; +} + +.message-wrapper { + overflow: hidden; + text-overflow: ellipsis; + max-width: calc(100% - 50px); + display: inline-block; + vertical-align: middle; +} + +@media only screen and (max-width: 767.98px) { + tr.commit-list { + width: 100%; + } + th .message-wrapper { + display: block; + max-width: calc(100vw - 70px); + } +} + +@media only screen and (min-width: 768px) and (max-width: 991.98px) { + tr.commit-list { + width: 723px; + } + th .message-wrapper { + max-width: 280px; + } +} + +@media only screen and (min-width: 992px) and (max-width: 1199.98px) { + tr.commit-list { + width: 933px; + } + th .message-wrapper { + max-width: 490px; + } +} + +@media only screen and (min-width: 1200px) { + tr.commit-list { + width: 1127px; + } + th .message-wrapper { + max-width: 680px; + } +} + +.commit-list .commit-summary a { + text-decoration: underline; + text-decoration-style: dashed; + + &:hover { + text-decoration-style: solid; + } + + &.default-link { + text-decoration: none; + + &:hover { + text-decoration: underline; + text-decoration-style: solid; + } + } +} + +.commit-list .commit-status-link { + display: inline-block; + vertical-align: middle; +} + +.commit-body { + white-space: pre-wrap; +} + +.git-notes { + &.top { + text-align: left; + } + + .commit-body { + margin: 0; + } +} + +@media only screen and (max-width: 767px) { + .ui.stackable.menu { + &.mobile--margin-between-items > .item { + margin-top: 5px; + margin-bottom: 5px; + } + + &.mobile--no-negative-margins { + margin-left: 0; + margin-right: 0; + } + } +} + +#topic_edit { + margin-top: 5px; +} + +#repo-topics { + margin-top: 5px; +} + +.repo-topic { + cursor: pointer; +} + +#new-dependency-drop-list { + &.ui.selection.dropdown { + min-width: 0; + width: 100%; + border-radius: 4px 0 0 4px; + border-right: 0; + white-space: nowrap; + } + + .text { + width: 100%; + overflow: hidden; + } +} + +#manage_topic { + font-size: 12px; +} + +.label + #manage_topic { + margin-left: 5px; +} + +.ui.small.label.topic { + margin-bottom: 4px; +} + +.repo-header { + display: flex; + align-items: center; + justify-content: space-between; + flex-wrap: wrap; +} + +.repo-header .repo-buttons { + display: flex; + align-items: center; +} + +.repo-buttons .disabled-repo-button .label { + opacity: .5; +} + +.repo-buttons .disabled-repo-button a.button { + opacity: .5; + cursor: not-allowed; +} + +.repo-buttons .disabled-repo-button a.button:hover { + background: none !important; + color: rgba(0, 0, 0, .6) !important; + box-shadow: 0 0 0 1px rgba(34, 36, 38, .15) inset !important; +} + +.repo-buttons .ui.labeled.button > .label { + border-left: 0 !important; + margin: 0 !important; +} + +.tag-code { + height: 28px; +} + +.tag-code, +.tag-code td { + background-color: #f0f9ff; + border-color: #f1f8ff !important; + vertical-align: middle; +} + +.issue-keyword { + border-bottom: 1px dotted #959da5; + display: inline-block; +} + +.file-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 8px 12px !important; +} + +.file-info { + display: flex; + align-items: center; +} + +.file-info-entry + .file-info-entry { + border-left: 1px solid currentColor; + margin-left: 8px; + padding-left: 8px; +} + +.title_wip_desc { + margin-top: 1em; +} + +.diff-file-box[data-folded="true"] .diff-file-body { + display: none; +} + +.diff-file-box[data-folded="true"] .diff-file-header { + border-radius: .28571429rem !important; +} + +/* prevent page shaking on language bar click */ +.repository.file .repository-summary { + height: 48px; + overflow: hidden; +} + +.ui.form .right .ui.button { + margin-left: .25em; + margin-right: 0; +} + +.removed-code { + background-color: #fdb8c0; +} + +.added-code { + background-color: #acf2bd; +} + +.repository .ui.menu.new-menu { + background: none !important; + + @media only screen and (max-width: 1200px) { + &:after { + background: none !important; + } + } +} diff --git a/frontend/less/_review.less b/frontend/less/_review.less new file mode 100644 index 0000000..1c84d61 --- /dev/null +++ b/frontend/less/_review.less @@ -0,0 +1,193 @@ +.ui.button.add-code-comment { + font-size: 14px; + height: 16px; + line-height: 16px !important; + padding: 0; + position: relative; + width: 16px; + z-index: 5; + float: left; + margin: 2px -10px 2px -20px; + opacity: 0; + transition: transform .1s ease-in-out; + transform: scale(1, 1); + + &:hover { + transform: scale(1.2, 1.2); + } +} + +.add-comment-left.add-comment-right .ui.attached.header { + border: 1px solid #d4d4d5; + margin-top: .5em; + + &:not(.top) { + margin-bottom: .5em; + } + + .show-outdated, + .hide-outdated { + display: block; + margin-left: auto; + } +} + +.focus-lines-new .ui.button.add-code-comment.add-code-comment-right, +.focus-lines-old .ui.button.add-code-comment.add-code-comment-left { + opacity: 1; +} + +.comment-code-cloud { + padding: 4px; + position: relative; + border: 1px solid #f1f1f1; + margin: 13px 10px 5px auto; + + &:before { + content: " "; + width: 0; + height: 0; + border-left: 13px solid transparent; + border-right: 13px solid transparent; + border-bottom: 13px solid #f1f1f1; + left: 20px; + position: absolute; + top: -13px; + } + + .attached { + &.tab { + border: 0; + padding: 0; + margin: 0; + } + + &.header { + padding: .1rem 1rem; + + .text { + margin: 0; + } + } + } + + .right.menu.options .item { + padding: .85714286em .442857em; + cursor: pointer; + } + + .ui.form textarea { + border: 0; + } + + .ui.active.tab { + padding: .5em; + + &.markdown { + padding: 1em; + min-height: 168px; + } + } + + .ui.tabular.menu { + margin: .5em; + } + + .comment-list { + padding-bottom: 10px; + } + + .footer { + border-top: 1px solid #f1f1f1; + padding: 10px 0; + + .markdown-info { + display: inline-block; + margin: 5px 0; + font-size: 12px; + color: rgba(0, 0, 0, .6); + } + + .ui.right.floated { + padding-top: 6px; + } + + &:after { + clear: both; + content: ""; + display: block; + } + } + + button.comment-form-reply { + margin: .5em .5em .5em 4.5em; + } + + form.comment-form-reply { + margin: 0 0 0 1em; + } +} + +.file-comment { + font: 12px @monospaced-fonts, monospace; + color: rgba(0, 0, 0, .87); +} + +a.fold-file { + margin-right: 10px; + color: inherit; +} + +a.blob-excerpt { + color: #575a68; + height: 28px; + display: flex; + justify-content: center; + align-items: center; + width: 100%; + background: #daecfe; +} + +a.blob-excerpt:hover { + background: #428bca; + color: #fff; +} + +.btn-review > .dropdown.icon { + width: auto; + font-size: .85714286em; + margin: 0 0 0 1em; +} + +@media only screen and (max-width: 768px) { + #review-box > .menu { + > .ui.segment { + width: 94vw; + } + .editor-toolbar { + overflow-x: auto; + } + } + + #review-box .CodeMirror-scroll { + max-width: calc(100vw - 70px); + } +} + +@media only screen and (min-width: 768px) and (max-width: 992px) { + #review-box .CodeMirror-scroll { + max-width: 700px; + } +} + +@media only screen and (min-width: 992px) and (max-width: 1200px) { + #review-box .CodeMirror-scroll { + max-width: 800px; + } +} + +@media only screen and (min-width: 1200px) { + #review-box .CodeMirror-scroll { + max-width: 900px; + } +} diff --git a/frontend/less/_svg.less b/frontend/less/_svg.less new file mode 100644 index 0000000..b17b9a8 --- /dev/null +++ b/frontend/less/_svg.less @@ -0,0 +1,9 @@ +.svg { + display: inline-block; + vertical-align: text-top; + fill: currentColor; + + .middle & { + vertical-align: middle; + } +} diff --git a/frontend/less/_tribute.less b/frontend/less/_tribute.less new file mode 100644 index 0000000..5e91e00 --- /dev/null +++ b/frontend/less/_tribute.less @@ -0,0 +1,42 @@ +@import "~tributejs/dist/tribute.css"; + +.tribute-container { + box-shadow: 0 .25rem .5rem rgba(0, 0, 0, .25); + border-radius: .25rem; +} + +.tribute-container ul { + margin-top: 0 !important; + background: #ffffff !important; +} + +.tribute-container li { + padding: 3px .5rem !important; +} + +.tribute-container li span.fullname { + font-weight: normal; + font-size: .8rem; + margin-left: 3px; +} + +.tribute-container li.highlight, +.tribute-container li:hover { + background: #2185d0 !important; + color: #ffffff !important; +} + +.tribute-item { + display: flex; + align-items: center; +} + +.tribute-item .emoji, +.tribute-item img[src*="/avatar/"] { + margin-right: .5rem; +} + +.tribute-container img { + width: 1.5rem !important; + height: 1.5rem !important; +} diff --git a/frontend/less/_user.less b/frontend/less/_user.less new file mode 100644 index 0000000..ae44df9 --- /dev/null +++ b/frontend/less/_user.less @@ -0,0 +1,163 @@ +.user { + &:not(.icon) { + padding-top: 15px; + } + + &.profile { + .ui.card { + .header, + .username { + display: block; + } + + .header { + font-weight: 700; + font-size: 1.3rem; + margin-top: -.2rem; + line-height: 1.3rem; + } + + .extra.content { + padding: 0; + + ul { + margin: 0; + padding: 0; + + li { + padding: 10px; + list-style: none; + + &:not(:last-child) { + border-bottom: 1px solid #eaeaea; + } + + .svg, + .fa { + margin-left: 1px; + margin-right: 5px; + } + + &.follow { + .ui.button { + width: 100%; + } + } + } + } + } + + #profile-avatar { + img { + width: 100%; + } + @media only screen and (max-width: 768px) { + height: 250px; + overflow: hidden; + + img { + max-height: 768px; + max-width: 768px; + } + } + } + + @media only screen and (max-width: 768px) { + width: 100%; + } + } + + .ui.repository.list { + margin-top: 25px; + } + + #loading-heatmap { + margin-bottom: 1em; + } + .ui.secondary.stackable.pointing.menu { + flex-wrap: wrap; + } + } + + &.followers { + .header.name { + font-size: 20px; + line-height: 24px; + vertical-align: middle; + } + + .follow { + .ui.button { + padding: 8px 15px; + } + } + } + + &.notification { + .svg { + float: left; + font-size: 2em; + + &.green { + color: #21ba45; + } + + &.red { + color: #d01919; + } + + &.purple { + color: #a333c8; + } + + &.blue { + color: #2185d0; + } + } + + .content { + float: left; + margin-left: 7px; + } + + table { + form { + display: inline-block; + } + + button { + padding: 3px 3px 3px 5px; + } + + tr { + cursor: pointer; + } + } + } + + &.link-account:not(.icon) { + padding-top: 15px; + padding-bottom: 5px; + } + + &.settings { + .iconFloat { + float: left; + } + } +} + +.user-orgs { + display: flex; + flex-flow: row wrap; + padding: 0; + margin: -3px !important; + + li { + display: flex; + border-bottom: 0 !important; + padding: 3px !important; + width: 20%; + max-width: 60px; + } +} diff --git a/frontend/less/features/animations.less b/frontend/less/features/animations.less new file mode 100644 index 0000000..65ff1fe --- /dev/null +++ b/frontend/less/features/animations.less @@ -0,0 +1,34 @@ +@keyframes isloadingspin { + 0% { transform: translate(-50%, -50%) rotate(0deg); } + 100% { transform: translate(-50%, -50%) rotate(360deg); } +} + +.is-loading { + background: transparent !important; + color: transparent !important; + border: transparent !important; + pointer-events: none !important; + position: relative !important; + overflow: hidden !important; +} + +.is-loading:after { + content: ""; + position: absolute; + display: block; + width: 4rem; + height: 4rem; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + animation: isloadingspin 500ms infinite linear; + border-width: 4px; + border-style: solid; + border-color: #ececec #ececec #666 #666; + border-radius: 100%; +} + +.markdown pre.is-loading, +.editor-loading.is-loading { + height: 12rem; +} diff --git a/frontend/less/features/gitgraph.less b/frontend/less/features/gitgraph.less new file mode 100644 index 0000000..8a9c423 --- /dev/null +++ b/frontend/less/features/gitgraph.less @@ -0,0 +1,256 @@ +#git-graph-container { + float: left; + display: block; + overflow-x: auto; + width: 100%; + + .color-buttons { + margin-right: 0; + } + + .ui.header.dividing { + padding-bottom: 10px; + } + + li { + list-style-type: none; + height: 20px; + line-height: 20px; + white-space: nowrap; + + .node-relation { + font-family: "Bitstream Vera Sans Mono", "Courier", monospace; + } + + .author { + color: #666666; + } + + .time { + color: #999999; + font-size: 80%; + } + + a { + color: #000000; + } + + a:hover { + text-decoration: underline; + } + + a em { + color: #bb0000; + border-bottom: 1px dotted #bbbbbb; + text-decoration: none; + font-style: normal; + } + } + + #rel-container { + max-width: 30%; + overflow-x: auto; + float: left; + } + + #rev-container { + width: 100%; + } + + #rev-list { + margin: 0; + padding: 0 5px; + min-width: 95%; + + li.highlight, + li.hover { + background-color: rgba(0, 0, 0, .05); + } + + li.highlight.hover { + background-color: rgba(0, 0, 0, .1); + } + } + + #graph-raw-list { + margin: 0; + } + + &.monochrome #rel-container { + .flow-group { + stroke: grey; + fill: grey; + } + + .flow-group.highlight { + stroke: black; + fill: black; + } + } + + &:not(.monochrome) #rel-container { + .flow-group { + &.flow-color-16-1 { + stroke: #499a37; + fill: #499a37; + } + + &.flow-color-16-2 { + stroke: hsl(356, 58%, 54%); + fill: #ce4751; + } + + &.flow-color-16-3 { + stroke: #8f9121; + fill: #8f9121; + } + + &.flow-color-16-4 { + stroke: #ac32a6; + fill: #ac32a6; + } + + &.flow-color-16-5 { + stroke: #3d27aa; + fill: #3d27aa; + } + + &.flow-color-16-6 { + stroke: #c67d28; + fill: #c67d28; + } + + &.flow-color-16-7 { + stroke: #4db392; + fill: #4db392; + } + + &.flow-color-16-8 { + stroke: #aa4d30; + fill: #aa4d30; + } + + &.flow-color-16-9 { + stroke: #2a6f84; + fill: #2a6f84; + } + + &.flow-color-16-10 { + stroke: #c45327; + fill: #c45327; + } + + &.flow-color-16-11 { + stroke: #3d965c; + fill: #3d965c; + } + + &.flow-color-16-12 { + stroke: #792a93; + fill: #792a93; + } + + &.flow-color-16-13 { + stroke: #439d73; + fill: #439d73; + } + + &.flow-color-16-14 { + stroke: #103aad; + fill: #103aad; + } + + &.flow-color-16-15 { + stroke: #982e85; + fill: #982e85; + } + + &.flow-color-16-0 { + stroke: #7db233; + fill: #7db233; + } + } + + .flow-group.highlight { + &.flow-color-16-1 { + stroke: #5ac144; + fill: #5ac144; + } + + &.flow-color-16-2 { + stroke: #ed5a8b; + fill: #ed5a8b; + } + + &.flow-color-16-3 { + stroke: #ced049; + fill: #ced048; + } + + &.flow-color-16-4 { + stroke: #db61d7; + fill: #db62d6; + } + + &.flow-color-16-5 { + stroke: #4e33d1; + fill: #4f35d1; + } + + &.flow-color-16-6 { + stroke: #e6a151; + fill: #e6a151; + } + + &.flow-color-16-7 { + stroke: #44daaa; + fill: #44daaa; + } + + &.flow-color-16-8 { + stroke: #dd7a5c; + fill: #dd7a5c; + } + + &.flow-color-16-9 { + stroke: #38859c; + fill: #38859c; + } + + &.flow-color-16-10 { + stroke: #d95520; + fill: #d95520; + } + + &.flow-color-16-11 { + stroke: #42ae68; + fill: #42ae68; + } + + &.flow-color-16-12 { + stroke: #9126b5; + fill: #9126b5; + } + + &.flow-color-16-13 { + stroke: #4ab080; + fill: #4ab080; + } + + &.flow-color-16-14 { + stroke: #284fb8; + fill: #284fb8; + } + + &.flow-color-16-15 { + stroke: #971c80; + fill: #971c80; + } + + &.flow-color-16-0 { + stroke: #87ca28; + fill: #87ca28; + } + } + } +} diff --git a/frontend/less/index.less b/frontend/less/index.less new file mode 100644 index 0000000..92b25e1 --- /dev/null +++ b/frontend/less/index.less @@ -0,0 +1,22 @@ +@import "~font-awesome/css/font-awesome.css"; + +@import "./features/gitgraph.less"; +@import "./features/animations.less"; +@import "./markdown/mermaid.less"; + +@import "_svg"; +@import "_tribute"; +@import "_base"; +@import "_markdown"; +@import "_home"; +@import "_install"; +@import "_form"; +@import "_repository"; +@import "_editor"; +@import "_organization"; +@import "_user"; +@import "_dashboard"; +@import "_admin"; +@import "_explore"; +@import "_review"; +@import "_chroma"; diff --git a/frontend/less/markdown/mermaid.less b/frontend/less/markdown/mermaid.less new file mode 100644 index 0000000..2b7951e --- /dev/null +++ b/frontend/less/markdown/mermaid.less @@ -0,0 +1,12 @@ +.mermaid-chart { + display: flex; + justify-content: center; + align-items: center; + padding: 1rem; + margin: 1rem 0; +} + +/* mermaid's errorRenderer seems to unavoidably spew stuff into , hide it */ +body > div[id*="mermaid-"] { + display: none !important; +} diff --git a/frontend/less/themes/theme-arc-green.less b/frontend/less/themes/theme-arc-green.less new file mode 100644 index 0000000..1e8c118 --- /dev/null +++ b/frontend/less/themes/theme-arc-green.less @@ -0,0 +1,1980 @@ +/* Background */ + +.chroma { + background-color: #2a2e3a; +} +/* LineTableTD */ + +.chroma .lntd { + vertical-align: top; + padding: 0; + margin: 0; + border: 0; +} +/* LineTable */ + +.chroma .lntable { + border-spacing: 0; + padding: 0; + margin: 0; + border: 0; + width: auto; + overflow: auto; + display: block; +} +/* LineHighlight */ + +.chroma .hl { + display: block; + width: 100%; + background-color: #3f424d; +} +/* LineNumbersTable */ + +.chroma .lnt { + margin-right: .4em; + padding: 0 .4em; + color: #7f7f7f; +} +/* LineNumbers */ + +.chroma .ln { + margin-right: .4em; + padding: 0 .4em; + color: #7f7f7f; +} +/* Keyword */ + +.chroma .k { + color: #f63; +} +/* KeywordConstant */ + +.chroma .kc { + color: #fa1; +} +/* KeywordDeclaration */ + +.chroma .kd { + color: #9daccc; +} +/* KeywordNamespace */ + +.chroma .kn { + color: #fa1; +} +/* KeywordPseudo */ + +.chroma .kp { + color: #5f8700; +} +/* KeywordReserved */ + +.chroma .kr { + color: #f63; +} +/* KeywordType */ + +.chroma .kt { + color: #9daccc; +} +/* NameAttribute */ + +.chroma .na { + color: #8a8a8a; +} +/* NameBuiltin */ + +.chroma .nb { + color: #9daccc; +} +/* NameBuiltinPseudo */ + +.chroma .bp { + color: #9daccc; +} +/* NameClass */ + +.chroma .nc { + color: #fa1; +} +/* NameConstant */ + +.chroma .no { + color: #fa1; +} +/* NameDecorator */ + +.chroma .nd { + color: #9daccc; +} +/* NameEntity */ + +.chroma .ni { + color: #fa1; +} +/* NameException */ + +.chroma .ne { + color: #af8700; +} +/* NameFunction */ + +.chroma .nf { + color: #9daccc; +} +/* NameLabel */ + +.chroma .nl { + color: #fa1; +} +/* NameNamespace */ + +.chroma .nn { + color: #fa1; +} +/* NameOther */ + +.chroma .nx { + color: #9daccc; +} +/* NameTag */ + +.chroma .nt { + color: #9daccc; +} +/* NameVariable */ + +.chroma .nv { + color: #9daccc; +} +/* NameVariableClass */ + +.chroma .vc { + color: #f81; +} +/* NameVariableGlobal */ + +.chroma .vg { + color: #fa1; +} +/* NameVariableInstance */ + +.chroma .vi { + color: #fa1; +} +/* LiteralString */ + +.chroma .s { + color: #1af; +} +/* LiteralStringAffix */ + +.chroma .sa { + color: #1af; +} +/* LiteralStringBacktick */ + +.chroma .sb { + color: #a0cc75; +} +/* LiteralStringChar */ + +.chroma .sc { + color: #1af; +} +/* LiteralStringDelimiter */ + +.chroma .dl { + color: #1af; +} +/* LiteralStringDoc */ + +.chroma .sd { + color: #6a737d; +} +/* LiteralStringDouble */ + +.chroma .s2 { + color: #a0cc75; +} +/* LiteralStringEscape */ + +.chroma .se { + color: #f63; +} +/* LiteralStringHeredoc */ + +.chroma .sh { + color: #1af; +} +/* LiteralStringInterpol */ + +.chroma .si { + color: #fa1; +} +/* LiteralStringOther */ + +.chroma .sx { + color: #fa1; +} +/* LiteralStringRegex */ + +.chroma .sr { + color: #97c; +} +/* LiteralStringSingle */ + +.chroma .s1 { + color: #a0cc75; +} +/* LiteralStringSymbol */ + +.chroma .ss { + color: #fa1; +} +/* LiteralNumber */ + +.chroma .m { + color: #1af; +} +/* LiteralNumberBin */ + +.chroma .mb { + color: #1af; +} +/* LiteralNumberFloat */ + +.chroma .mf { + color: #1af; +} +/* LiteralNumberHex */ + +.chroma .mh { + color: #1af; +} +/* LiteralNumberInteger */ + +.chroma .mi { + color: #1af; +} +/* LiteralNumberIntegerLong */ + +.chroma .il { + color: #1af; +} +/* LiteralNumberOct */ + +.chroma .mo { + color: #1af; +} +/* Operator */ + +.chroma .o { + color: #f63; +} +/* OperatorWord */ + +.chroma .ow { + color: #5f8700; +} +/* Comment */ + +.chroma .c { + color: #6a737d; +} +/* CommentHashbang */ + +.chroma .ch { + color: #6a737d; +} +/* CommentMultiline */ + +.chroma .cm { + color: #6a737d; +} +/* CommentSingle */ + +.chroma .c1 { + color: #6a737d; +} +/* CommentSpecial */ + +.chroma .cs { + color: #637d; +} +/* CommentPreproc */ + +.chroma .cp { + color: #fc6; +} +/* CommentPreprocFile */ + +.chroma .cpf { + color: #fc6; +} +/* GenericDeleted */ + +.chroma .gd { + color: #fff; + background-color: #5f3737; +} +/* GenericEmph */ + +.chroma .ge { + font-style: italic; +} +/* GenericError */ + +.chroma .gr { + color: #f33; +} +/* GenericHeading */ + +.chroma .gh { + color: #fa1; +} +/* GenericInserted */ + +.chroma .gi { + color: #fff; + background-color: #3a523a; +} +/* GenericOutput */ + +.chroma .go { + color: #888888; +} +/* GenericPrompt */ + +.chroma .gp { + color: #555555; +} +/* GenericStrong */ + +.chroma .gs { + font-weight: bold; +} +/* GenericSubheading */ + +.chroma .gu { + color: #9daccc; +} +/* GenericTraceback */ + +.chroma .gt { + color: #f63; +} +/* GenericUnderline */ + +.chroma .gl { + text-decoration: underline; +} +/* TextWhitespace */ + +.chroma .w { + color: #bbbbbb; +} + +.repository .ui.segment.sub-menu .list .item { + color: #dbdbdb; + a, + span.ui { + color: #dbdbdb; + } +} + +.ui.horizontal.segments > .segment { + background-color: #383c4a; +} + +body { + background: #383c4a; + color: #9e9e9e; +} + +/* firefox scroll bars */ + +* { + scrollbar-width: thin; + scrollbar-color: #87ab63 rgba(255, 255, 255, .1); +} + +/* webkit scrollbars */ + +::-webkit-scrollbar { + -webkit-appearance: none !important; + width: 10px !important; + height: 10px !important; +} + +::-webkit-scrollbar-track { + border-radius: 0 !important; + background: rgba(255, 255, 255, .1) !important; +} + +::-webkit-scrollbar-thumb { + cursor: pointer !important; + border-radius: 5px !important; + -webkit-transition: color .2s ease !important; + transition: color .2s ease !important; + background: #87ab63 !important; +} + +::-webkit-scrollbar-thumb:window-inactive { + background: #87ab63 !important; +} + +::-webkit-scrollbar-thumb:hover { + background: #87ab63 !important; +} + +a { + color: #87ab63; +} + +a:hover { + color: #a0cc75; +} + +.ui.card > .extra a:not(.ui):hover, +.ui.cards > .card > .extra a:not(.ui):hover { + color: #a0cc75; +} + +.ui.breadcrumb a:hover { + color: #a0cc75; +} + +.ui.breadcrumb a { + color: #87ab63; +} + +.repository .metas .ui.list a .text { + color: #87ab63; +} + +.repository .metas .ui.list a .text:hover { + color: #a0cc75; +} + +.repository .label.list .item a { + color: #87ab63; +} + +.repository .label.list .item a:hover { + color: #a0cc75; +} + +.repository .milestone.list > .item > a { + color: #87ab63; +} + +.repository .milestone.list > .item > a:hover { + color: #a0cc75; +} + +.repository.release #release-list { + border-top: 1px solid #4c505c; +} + +.repository .milestone.list > .item .operate > a { + color: #87ab63; +} + +.repository .milestone.list > .item .operate > a:hover { + color: #a0cc75; +} + +.ui.green.progress .bar { + background-color: #668844; +} + +.ui.progress.success .bar { + background-color: #7b9e57 !important; +} + +.following.bar.light { + background: #2e323e; + border-bottom: 1px solid #313131; +} + +.ui.secondary.menu .active.item { + color: #dbdbdb; +} + +.ui.secondary.menu .item { + color: #9e9e9e; +} + +.following.bar .top.menu a.item:hover { + color: #ffffff; +} + +.ui.attached.header { + background: #404552; + border: 1px solid #404552; + color: #dbdbdb; +} + +.ui.attached.table { + border: 1px solid #304251; + background: #304251; +} + +.feeds .list ul li:not(:last-child) { + border-bottom: 1px solid #333640; +} + +.feeds .list ul li.private { + background: #353945; + border: 1px solid #333640; +} + +.ui.secondary.menu .dropdown.item:hover, +.ui.secondary.menu .link.item:hover, +.ui.secondary.menu .active.item:hover, +.ui.secondary.menu a.item:hover, +.ui.dropdown .menu .active.item { + color: #ffffff; +} + +.ui.menu .ui.dropdown .menu > .item { + background: #2c303a !important; + color: #9e9e9e !important; +} + +.ui.secondary.menu .dropdown.item > .menu, +.ui.text.menu .dropdown.item > .menu { + border: 1px solid #434444; +} + +footer { + background: #2e323e; + border-top: 1px solid #313131; + color: #bababa; +} + +.ui.menu .dropdown.item .menu { + background: #2c303a; +} + +.ui.menu .ui.dropdown .menu > .item:hover, +.ui.menu .ui.dropdown .menu > .selected.item { + color: #ffffff !important; +} + +.ui.dropdown .menu > .header { + color: #dbdbdb; +} + +.ui.red.label, +.ui.red.labels .label { + background-color: #7d3434 !important; + border-color: #8a2121 !important; +} + +.ui.menu { + background: #404552; + border: 1px solid #353945; +} + +.ui.menu .active.item:hover, +.ui.vertical.menu .active.item:hover { + color: #dbdbdb; + background: #4b5162; +} + +.ui.link.menu .item:hover, +.ui.menu .dropdown.item:hover, +.ui.menu .link.item:hover, +.ui.menu a.item:hover { + color: #dbdbdb; + background: #454b5a; +} + +.ui.menu .active.item { + background: #4b5162; + color: #dbdbdb; +} + +.ui.input input { + background: #404552; + border: 2px solid #353945; + color: #dbdbdb; +} + +.ui.input input:focus, +.ui.input.focus input { + background: #404552; + border: 2px solid #353945; + color: #dbdbdb; +} + +.ui.accordion .title:not(.ui) { + color: #dbdbdb; +} + +.ui.label, +.ui.label.basic { + color: #dbdbdb; + background-color: #404552; +} + +.issue.list > .item .title { + color: #87ab63; +} + +.issue.list > .item .title:hover { + color: #a0cc75; +} + +.issue.list > .item { + border-bottom: 1px dashed #475767; +} + +.ui.green.label, +.ui.green.labels .label, +.ui.basic.green.label { + background-color: #2d693b !important; + border-color: #2d693b !important; +} + +.ui.basic.green.labels a.label:hover, +a.ui.basic.green.label:hover { + background-color: #16ab39 !important; + border-color: #16ab39 !important; + color: #ffffff !important; +} + +.issue.list > .item .comment { + color: #129c92; +} + +.ui.basic.button, +.ui.basic.buttons .button { + color: #797979; +} + +.ui.basic.red.active.button, +.ui.basic.red.buttons .active.button { + box-shadow: 0 0 0 1px #c75252 inset !important; + color: #c75252 !important; +} + +.ui.basic.button:focus, +.ui.basic.button:hover, +.ui.basic.buttons .button:focus, +.ui.basic.buttons .button:hover { + color: #dbdbdb; + box-shadow: 0 0 0 1px rgba(200, 200, 200, .35) inset; + background: rgba(0, 0, 0, .5); +} + +.ui.menu .item { + background: #404552; + color: #9e9e9e; +} + +.ui.menu .item.disabled, +.ui.menu .item.disabled:hover, +.ui.ui.menu .item.disabled, +.ui.ui.menu .item.disabled:hover { + color: #626773; +} + +.ui.pagination.menu .active.item { + color: #dbdbdb; + background-color: #87ab63; +} + +.repository .header-wrapper { + background-color: #2a2e3a; +} + +.ui.header, +.ui.breadcrumb .divider { + color: #9e9e9e; +} + +.ui.blue.label, +.ui.blue.labels .label, +.repository .segment.reactions .ui.label.basic.blue { + background-color: #26577b !important; + border-color: #26577b !important; +} + +.ui.menu .item > .label { + background: #565454; +} + +.ui.blue.button, +.ui.blue.buttons .button { + background-color: #87ab63; +} + +.ui.blue.button:hover, +.ui.blue.buttons .button:hover { + background-color: #a0cc75; +} + +.ui.form input:not([type]), +.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"] { + color: #9e9e9e; + background: #404552; + border: 2px solid #353945; +} + +.ui.form input:not([type]):focus, +.ui.form input[type="date"]:focus, +.ui.form input[type="datetime-local"]:focus, +.ui.form input[type="email"]:focus, +.ui.form input[type="file"]:focus, +.ui.form input[type="number"]:focus, +.ui.form input[type="password"]:focus, +.ui.form input[type="search"]:focus, +.ui.form input[type="tel"]:focus, +.ui.form input[type="text"]:focus, +.ui.form input[type="time"]:focus, +.ui.form input[type="url"]:focus { + background: #404552; + border: 2px solid #4b505f; + color: #dbdbdb; +} + +.ui.action.input:not([class*="left action"]) input:focus { + border-right-color: #4b505f !important; +} + +.ui.green.button, +.ui.green.buttons .button { + background-color: #87ab63; +} + +.ui.green.button:hover, +.ui.green.buttons .button:hover { + background-color: #a0cc75; +} + +.ui.button { + background: #383c4a; + border: 1px solid #4c505c; + color: #dbdbdb; +} + +.ui.labeled.button:not([class*="left labeled"]) > .label, +.ui[class*="left labeled"].button > .button { + background: #404552; + border: 1px solid #4c505c; + color: #87ab63; +} + +.ui.button:hover { + background-color: #404552; + color: #dbdbdb; +} + +.ui.table thead th, +.ui.table > thead > tr > th { + background: #404552; + color: #dbdbdb !important; +} + +.repository.file.list #repo-files-table tr { + background: #2a2e3a; +} + +.repository.file.list #repo-files-table tr:hover { + background-color: #393d4a !important; +} + +.ui.table { + color: #a5a5a5 !important; + border-color: #4c505c; + background: #353945; +} + +.ui.table tbody tr { + border-color: #333640; + background: #2a2e3a; +} + +.ui .text.grey { + color: #a5a5a8 !important; +} + +.ui.attached.table.segment { + background: #353945; + color: #dbdbdb !important; +} + +.markdown:not(code) h2 { + border-bottom: 1px solid #304251; +} + +.ui.tabular.menu { + border-bottom-color: rgba(255, 255, 255, .1); + + .item.active { + border-top-color: #404552; + border-left-color: #404552; + border-right-color: #404552; + background: #353945; + color: #dbdbdb; + } + + .item { + color: #9e9e9e; + } + + .item:hover { + color: #dbdbdb; + } + + &.navbar { + .item.active { + border-top-color: transparent; + border-left-color: transparent; + border-right-color: transparent; + background: #383c4a; + } + } +} + +.markdown:not(code) .highlight pre, +.markdown:not(code) pre { + background-color: #2a2e3a; + border: 1px solid #404552; +} + +.markdown:not(code) table tr:nth-child(2n) { + background-color: #2a2e39; +} + +.markdown:not(code) table tr:nth-child(2n-1) { + background-color: #383b44; +} + +.markdown:not(code) table thead tr:nth-child(2n-1) { + background-color: #464c5d !important; +} + +.markdown:not(code) table td, +.markdown:not(code) table th { + border-color: #4c505c !important; +} + +.repository.file.editor.edit, +.repository.wiki.new .CodeMirror { + .editor-preview, + .editor-preview-side, + & + .editor-preview-side { + background: #353945; + + .markdown:not(code).ui.segment { + border-width: 0; + } + } +} + +.ui.dropdown .menu { + background: #2c303a; +} + +.ui.dropdown .menu > .message:not(.ui) { + color: #636363; +} + +.ui.input { + color: #dbdbdb; +} + +.overflow.menu .items .item { + color: #9d9d9d; +} + +.overflow.menu .items .item:hover { + color: #dbdbdb; +} + +.ui.segment { + background: #353945; + color: #9e9e9e !important; + border: 1px solid #404552; +} + +.ui.list > .item > .content { + color: #9e9e9e !important; +} + +.ui.active.button:active, +.ui.button:active, +.ui.button:focus, +.ui.active.button { + background-color: #2e3e4e; + color: #dbdbdb; +} + +.ui.active.button:hover { + background-color: #475e75; + color: #dbdbdb; +} + +.ui.dropdown .menu .selected.item, +.ui.dropdown.selected { + color: #dbdbdb; +} + +.ui.dropdown .menu > .item:hover { + color: #dbdbdb; +} + +.ui.dropdown .menu > .item { + color: #9e9e9e; +} + +.ui.attached.segment { + border: 1px solid #404552; +} + +.repository.view.issue .comment-list .event > .svg.issue-symbol { + background: #3b4954; +} + +.repository.view.issue .comment-list .event > .svg:not(.issue-symbol) { + text-shadow: -2px 0 #383c4a, 0 2px #383c4a, 2px 0 #383c4a, 0 -2px #383c4a; +} + +.ui .text.grey a { + color: #dbdbdb !important; +} + +.ui .comment .actions a { + color: #9e9e9e !important; +} + +.ui .comment .actions a.active, +.ui .comment .actions a:hover { + color: #fff !important; +} + +.repository.view.issue .comment-list .comment .content { + > .bottom.segment { + background: #353945; + a { + border: solid 1px #353945; + background-color: #353945; + } + } + + .header { + color: #dbdbdb; + background-color: #404552; + border-bottom: 1px solid #353944; + } + + .merge-section { + background-color: #404552; + border-top: 1px solid #353944; + } + + .header:after, + > .merge-section.no-header:after { + border-right-color: #404552; + } + + .header:before, + > .merge-section.no-header:before { + border-right-color: #404552; + } +} + +.repository.new.issue .comment.form .content:after { + border-right-color: #353945; +} + +.repository.new.issue .comment.form .content:before { + border-right-color: #353945; +} + +.repository.view.issue .comment-list:not(.prevent-before-timeline):before, +.repository.view.issue .comment-list .timeline:before { + background-color: #3b4954; +} + +.repository.view.issue .comment-list .timeline-item .badge { + background-color: #383c4a; + border-color: #3b4954; + color: #9e9e9e; +} + +.repository.view.issue .comment-list .comment .tag { + color: #dbdbdb; + border-color: rgb(152, 152, 152); +} + +.repository.view.issue .comment-list .timeline-item .badge.badge-commit { + background: radial-gradient(#383c4a 40%, transparent 40%) no-repeat; +} + +.repository .comment.form .content .form:after { + border-right-color: #313c47; +} + +.repository .comment.form .content .form:before { + border-right-color: #313c47; +} + +.ui .text.grey a:hover { + color: #dbdbdb !important; +} + +.ui.basic.green.active.button, +.ui.basic.green.buttons .active.button { + color: #13ae38 !important; + box-shadow: 0 0 0 1px #13ae38 inset !important; +} + +.ui.form textarea, +.ui.form textarea:focus { + color: #dbdbdb; + background: #404552; + border: 2px solid #353945; +} + +.ui.form textarea:focus { + border: 1px solid #456580; +} + +.ui .info.segment.top { + background-color: #404552 !important; +} + +.repository .diff-file-box .code-diff-unified tbody tr.del-code td { + background-color: #3c2626 !important; + border-color: #634343 !important; +} + +.repository .diff-file-box .code-diff-unified tbody tr.del-code td.lines-num { + background-color: #4e2c2c !important; +} + +.repository .diff-file-box .code-diff-unified tbody tr.add-code td { + background-color: #283e2d !important; + border-color: #314a37 !important; +} + +.repository .diff-file-box .code-diff-unified tbody tr.add-code td.lines-num { + background-color: #2c4632 !important; +} + +.removed-code { + background-color: #5f3737; +} + +.added-code { + background-color: #3a523a; +} + +.tag-code, +.tag-code td { + background: #353945 !important; + +} +.tag-code td.lines-num { + background-color: #3a3e4c !important; +} + +.tag-code td.lines-type-marker, +td.blob-hunk { + color: #dbdbdb !important; +} + +.ui.vertical.menu .active.item { + background: #4b5162; +} + +.ui.vertical.menu .item { + background: #353945; +} + +.ui.vertical.menu .header.item { + background: #404552; +} + +.ui.vertical.menu { + background: #353945; + border: 1px solid #333640; +} + +.ui.repository.list .item:not(:first-child) { + border-top: 1px solid #4c505c; +} + +.ui .text.blue { + color: #87ab63 !important; +} + +.ui.selection.active.dropdown, +.ui.selection.active.dropdown .menu { + border-color: #4e5361; + box-shadow: 0 2px 3px 0 rgba(34, 36, 38, .15); +} + +.ui.selection.active.dropdown:hover, +.ui.selection.active.dropdown:hover .menu { + border-color: #4e5361; + box-shadow: 0 2px 3px 0 rgba(34, 36, 38, .15); +} + +.ui.selection.dropdown { + background: #404552; + border: 1px solid #404552; + color: #9e9e9e; +} + +.ui.menu .ui.dropdown .menu > .active.item { + color: #dbdbdb !important; +} + +.ui.card, +.ui.cards > .card { + background: #353945; + box-shadow: 0 1px 3px 0 #4c505c, 0 0 0 1px #4c505c; +} + +.ui.card > .content > .header, +.ui.cards > .card > .content > .header { + color: #dbdbdb; +} + +.ui.card > .extra a:not(.ui), +.ui.cards > .card > .extra a:not(.ui) { + color: #87ab63; +} + +.ui .text.black { + color: #9e9e9e; +} + +.ui .text.black:hover { + color: #dbdbdb; +} + +.ui.secondary.segment { + background: #353945; +} + +.ui.secondary.pointing.menu { + border-bottom-color: rgba(255, 255, 255, .15); +} + +.ui.secondary.pointing.menu .active.item { + color: #dbdbdb; +} + +.ui.user.list .item:not(:first-child) { + border-top: 1px solid #4c505c; +} + +.ui.secondary.pointing.menu .active.item:hover { + color: #dbdbdb; +} + +.ui.secondary.pointing.menu .dropdown.item:hover, +.ui.secondary.pointing.menu .link.item:hover, +.ui.secondary.pointing.menu a.item:hover { + color: #dbdbdb; +} + +.ui.pointing.dropdown > .menu:not(.hidden)::after { + background: #2c303a; +} + +.ui.checkbox label, +.ui.checkbox + label, +.ui.form .field > label { + color: #9e9e9e; +} + +.ui.form .inline.field > label, +.ui.form .inline.field > p, +.ui.form .inline.fields .field > label, +.ui.form .inline.fields .field > p, +.ui.form .inline.fields > label { + color: #9e9e9e; +} + +.user.settings .email.list .item:not(:first-child) { + border-top: 1px solid #3f4451; +} + +.explore .navbar { + background-color: #2a2e3a !important; +} + +.ui.menu.new-menu { + background: #2a2e3a; + border-color: transparent !important; + + @media only screen and (max-width: 1200px) { + &:after { + background: linear-gradient(to right, transparent 0%, #2a2e3a 100%); + } + } +} + +input { + background: #2e323e; +} + +.settings .key.list .item:not(:first-child) { + border-top: 1px solid #404552; +} + +.ui.attached.info.message, +.ui.info.message { + box-shadow: 0 0 0 1px #4b5e71 inset, 0 0 0 0 transparent; +} + +.ui.bottom.attached.message { + background-color: #2c662d; + color: #87ab63; +} + +.ui.bottom.attached.message .pull-right { + color: #87ab63; +} + +.ui.info.message { + background-color: #2c3b4a; + color: #9ebcc5; +} + +.ui .warning.header { + background-color: #5d3a22 !important; + border-color: #794f31; +} + +.ui.red.message, +.ui.error.message { + background-color: rgba(80, 23, 17, .6); + color: #f9cbcb; + box-shadow: 0 0 0 1px rgba(121, 71, 66, .5) inset, 0 0 0 0 transparent; +} + +.ui.red.button, +.ui.red.buttons .button { + background-color: #7d3434; +} + +.ui.red.button:hover, +.ui.red.buttons .button:hover { + background-color: #984646; +} + +.ui.checkbox label:hover, +.ui.checkbox + label:hover { + color: #dbdbdb !important; +} + +.ui.checkbox input:checked ~ .box:after, +.ui.checkbox input:checked ~ label:after { + color: #7f98ad; +} + +.ui.checkbox input:checked ~ .box:before, +.ui.checkbox input:checked ~ label:before { + background: #304251; + opacity: 1; + color: #7f98ad; + border-color: #304251; +} + +.ui.checkbox .box:hover::before, +.ui.checkbox label:hover::before { + background: #304251; +} + +.ui.checkbox .box:before, +.ui.checkbox label:before { + background: #304251; + border: 1px solid #304251; +} + +.ui.checkbox label:before { + border-color: #476075; +} + +.ui.checkbox .box:active::before, +.ui.checkbox label:active::before { + background: #304251; + border-color: rgba(34, 36, 38, .35); +} + +.ui.checkbox input:focus ~ .box:before, +.ui.checkbox input:focus ~ label:before { + border-color: #304251; + background: #304251; +} + +.ui.checkbox input:checked:focus ~ .box:before, +.ui.checkbox input:checked:focus ~ label:before, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ .box:before, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ label:before { + border-color: #304251; + background: #304251; +} + +.ui.checkbox input:checked:focus ~ .box:after, +.ui.checkbox input:checked:focus ~ label:after, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ .box:after, +.ui.checkbox input:not([type="radio"]):indeterminate:focus ~ label:after { + color: #7f98ad; +} + +.ui.checkbox input:focus ~ .box:after, +.ui.checkbox input:focus ~ label, +.ui.checkbox input:focus ~ label:after { + color: #9a9a9a; +} + +.ui.selection.dropdown:hover { + border: 1px solid #456580; +} + +.ui.selection.dropdown .menu > .item { + border-top: 1px solid #313c47; +} + +.ui.selection.visible.dropdown > .text:not(.default) { + color: #9e9e9e; +} + +.ui.positive.message { + background-color: #0d491b; + color: #87ab63; + box-shadow: 0 0 0 1px #2d693b inset, 0 0 0 0 transparent; +} + +.ui.negative.message { + background-color: rgba(80, 23, 17, .6); + color: #f9cbcb; + box-shadow: 0 0 0 1px rgba(121, 71, 66, .5) inset, 0 0 0 0 transparent; +} + +.user.profile .ui.card .extra.content ul li:not(:last-child) { + border-bottom: 1px solid #4c505c; +} + +.ui.form .dropzone { + border: 2px dashed #7f98ad; + background-color: #2e323e; + + .dz-button { + color: rgba(158, 158, 158, .8); + } +} + +.ui.form .dropzone:hover .dz-button { + color: rgba(158, 158, 158, 1); +} + +.ui.basic.red.button, +.ui.basic.red.buttons .button { + box-shadow: 0 0 0 1px #a04141 inset !important; + color: #a04141 !important; +} + +.ui.list .list > .item .header, +.ui.list > .item .header { + color: #dedede; +} + +.ui.list .list > .item .description, +.ui.list > .item .description { + color: #9e9e9e; +} + +.ui.user.list .item .description a { + color: #668cb1; +} + +.repository.file.list #repo-files-table tbody .svg.octicon-file-directory, +.repository.file.list #repo-files-table tbody .svg.octicon-file-submodule { + color: #7c9b5e; +} + +.ui.blue.button:focus, +.ui.blue.buttons .button:focus { + background-color: #a27558; +} + +.ui.basic.blue.button:hover, +.ui.basic.blue.buttons .button:hover { + box-shadow: 0 0 0 1px #87ab63 inset !important; + color: #87ab63 !important; +} + +.ui.basic.blue.button:focus, +.ui.basic.blue.buttons .button:focus { + box-shadow: 0 0 0 1px #87ab63 inset !important; + color: #87ab63 !important; +} + +.repository.labels .ui.basic.black.label { + background-color: #bbbbbb !important; +} + +.lines-commit { + background: #2e323e !important; +} + +.bottom-line { + border-color: #4e525e !important; +} + +.lines-num { + color: #9e9e9e !important; + border-color: #2d2d2d !important; +} + +td.blob-excerpt { + background-color: rgba(0, 0, 0, .15); +} + +a.blob-excerpt { + color: #ccc; + background: #393d4a; +} + +a.blob-excerpt:hover { + background: #87ab63; +} + +.code-view .lines-code.active { + background: #534d1b !important; +} + +a.ui.label:hover, +a.ui.labels .label:hover { + background-color: #505667 !important; + color: #dbdbdb !important; +} + +.repository #commits-table td.sha .sha.label, +.repository #repo-files-table .sha.label { + border-color: #888; +} + +.repository #commits-table td.sha .sha.label.isSigned .detail.icon, +.repository #repo-files-table .sha.label.isSigned .detail.icon { + background: none; + border-left-color: #888; +} + +.repository .ui.attached.message.isSigned.isVerified { + background-color: #394829; + color: #9e9e9e; + + &.message { + color: #87ab63; + .ui.text { + color: #9e9e9e; + } + .pull-right { + color: #87ab63; + } + } +} + +.repository .ui.attached.message.isSigned.isVerifiedUntrusted { + background-color: #4a3903; + color: #9e9e9e; + &.message { + color: #c2c193; + .ui.text { + color: #9e9e9e; + } + .pull-right, + a { + color: #c2c193; + } + } +} + +.repository .ui.attached.message.isSigned.isVerifiedUnmatched { + background-color: #4e3321; + color: #9e9e9e; + &.message { + color: #c2a893; + .ui.text { + color: #9e9e9e; + } + .pull-right, + a { + color: #c2a893; + } + } +} + +.repository .ui.attached.message.isSigned.isWarning { + background-color: rgba(80, 23, 17, .6); + &.message { + color: #d07d7d; + .ui.text { + color: #d07d7d; + } + .pull-right { + color: #9e9e9e; + } + } +} + +.repository .label.list .item { + border-bottom: 1px dashed #4c505c; +} + +.ui.basic.blue.button, +.ui.basic.blue.buttons .button { + box-shadow: 0 0 0 1px #87ab63 inset !important; + color: #87ab63 !important; +} + +.ui.text.yellow, +.yellow.icon.icon.icon { + color: #e4ac07 !important; +} + +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(1), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(2), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(3), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(4), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(5), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(6) { + background-color: #2a2e3a; +} + +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(4), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(5), +.repository .diff-file-box .code-diff-split tbody tr.add-code td:nth-child(6), +.repository .diff-file-box .code-diff-split tbody tr td.add-code, +.repository .diff-file-box .code-diff-split tbody tr td.lines-num-new.add-code { + background-color: #283e2d !important; + border-color: #314a37 !important; +} + +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(1), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(2), +.repository .diff-file-box .code-diff-split tbody tr.del-code td:nth-child(3), +.repository .diff-file-box .code-diff-split tbody tr td.del-code { + background-color: #3c2626 !important; + border-color: #634343 !important; +} + +.organization.teams .detail .item:not(:last-child), +.organization.members .list .item { + border-bottom-color: #404552; +} + +.ui.blue.button:active, +.ui.blue.buttons .button:active { + background-color: #a27558; +} + +#git-graph-container li a { + color: #c79575; +} + +#git-graph-container li .author { + color: #c79575; +} + +.ui.header .sub.header { + color: #9e9e9e; +} + +.ui.dividing.header { + border-bottom: 1px solid #4c505c; +} + +.ui.modal > .header { + background: #404552; + color: #dbdbdb; +} + +.ui.modal > .actions { + background: #404552; + border-top: 1px solid #404552; +} + +.ui.modal > .content { + background: #383c4a; +} + +.editor-toolbar { + background-color: #404552; + border-color: #7f98ad; +} + +.edit-diff > div > .ui.table { + border-left-color: #404552 !important; + border-right-color: #404552 !important; +} + +.editor-toolbar a { + color: #87ab63 !important; +} + +.editor-toolbar a.active, +.editor-toolbar a:hover { + background: #2a2e3a; + border-color: transparent; +} + +.editor-toolbar i.separator { + border-right-color: #7f98ad; +} + +.repository .diff-detail-box { + background-color: #383c4a; + + .detail-files { + background-color: inherit; + } + + &.sticky { + border-bottom-color: rgba(255, 255, 255, .1); + } +} + +.comment-code-cloud { + border-color: #3a3a3a; + + &:before { + border-bottom: 13px solid #5a5a5a; + } + + .ui.attached.top.header { + background: none transparent; + border: 0; + } + + .ui.active.tab { + &:not(.markdown) { + textarea:focus { + border: none; + } + + background: #404552; + } + + border-color: rgba(255, 255, 255, .15); + } + + .footer { + border-top-color: #5a5a5a; + + .markdown-info { + color: inherit; + } + + } +} + +.add-comment-left.add-comment-right .ui.attached.header { + border-color: #5d5c5c; + border-right: none; +} + +.file-comment { + color: #888888; +} + +.ui.comments .comment { + .author { + color: #dbdbdb; + } + + .metadata { + color: #808084; + } + + .text { + color: #9e9e9e; + } +} + +.heatmap(@heat) { + @heatmap-cold: #2d303b; + @heatmap-hot: #a0cc75; + background-color: mix(@heatmap-hot, @heatmap-cold, @heat); +} + +.heatmap-color-0 { + .heatmap(0%); +} + +.heatmap-color-1 { + .heatmap(20%); +} + +.heatmap-color-2 { + .heatmap(40%); +} + +.heatmap-color-3 { + .heatmap(60%); +} + +.heatmap-color-4 { + .heatmap(80%); +} + +.heatmap-color-5 { + .heatmap(100%); +} + +.activity-bar-graph { + background-color: #a0cc75; + color: #9e9e9e; +} + +/* code mirror dark theme */ + +.CodeMirror { + color: #9daccc; + background-color: #2e323e; + border-color: #7f98ad; + border-top: 0; + + div.CodeMirror-cursor { + border-left: 1px solid #9e9e9e; + } + + .CodeMirror-gutters { + background-color: #2e323e; + } + + ::selection, + ::-moz-selection, + .CodeMirror-selected { + background: #42402f !important; + } + + &.cm-s-default, + &.cm-s-paper { + .cm-property { + color: #a0cc75; + } + + .cm-header { + color: #9daccc; + } + + .cm-quote { + color: #009900; + } + + .cm-keyword { + color: #cc8a61; + } + + .cm-atom { + color: #ef5e77; + } + + .cm-number { + color: #ff5656; + } + + .cm-def { + color: #e4e4e4; + } + + .cm-variable-2 { + color: #00bdbf; + } + + .cm-variable-3 { + color: #008855; + } + + .cm-comment { + color: #8e9ab3; + } + + .cm-string { + color: #a77272; + } + + .cm-string-2 { + color: #ff5500; + } + + .cm-meta, + .cm-qualifier { + color: #ffb176; + } + + .cm-builtin { + color: #b7c951; + } + + .cm-bracket { + color: #999977; + } + + .cm-tag { + color: #f1d273; + } + + .cm-attribute { + color: #bfcc70; + } + + .cm-hr { + color: #999999; + } + + .cm-url { + color: #c5cfd0; + } + + .cm-link { + color: #d8c792; + } + + .cm-error { + /* color: #ff6e00; */ + color: #dbdbeb; + } + } +} + +.ui.popup { + background-color: #383c4a; + color: #9e9e9e; + border-color: #9e9e9e; + + &.top::before { + background-color: #383c4a; + } +} + +.markdown:not(code) h1 { + border-bottom-color: #888; +} + +.markdown:not(code) blockquote { + border-left-color: #888; +} + +.markdown:not(code) code, +.markdown:not(code) tt { + background-color: #2a2e3a; +} + +footer .container .links > * { + border-left-color: #888; +} + +.repository.file.list #repo-files-table tbody .svg { + color: #9e9e9e; +} + +.repository.release #release-list > li .detail { + border-left-color: #4c505c; +} + +.repository.release #release-list > li .detail .dot { + background-color: #888; + border-color: #383c4a; +} + +.repository.release #release-list > li .detail .download .list { + border-top-color: #404552; +} + +.repository.release #release-list > li .detail .download .list li { + border-bottom-color: #404552; +} + +.tribute-container { + box-shadow: 0 .25rem .5rem rgba(0, 0, 0, .6); +} + +.tribute-container ul { + background: #2d303b !important; +} + +.tribute-container li.highlight, +.tribute-container li:hover { + background: #728e5e !important; +} + +.repository .repo-header .ui.huge.breadcrumb.repo-title .repo-header-icon .avatar { + color: #2a2e3a; +} + +#git-graph-container.monochrome #rel-container .flow-group { + stroke: dimgrey; + fill: dimgrey; +} + +#git-graph-container.monochrome #rel-container .flow-group.highlight { + stroke: darkgrey; + fill: darkgrey; +} + +#git-graph-container:not(.monochrome) #rel-container .flow-group { + &.flow-color-16-5 { + stroke: #5543b1; + fill: #5543b1; + } +} + +#git-graph-container:not(.monochrome) #rel-container .flow-group.highlight { + &.flow-color-16-5 { + stroke: #7058e6; + fill: #7058e6; + } +} + +#git-graph-container #rev-list li.highlight, +#git-graph-container #rev-list li.hover { + background-color: rgba(255, 255, 255, .05); +} + +#git-graph-container #rev-list li.highlight.hover { + background-color: rgba(255, 255, 255, .1); +} + +#git-graph-container .ui.buttons button#flow-color-monochrome.ui.button { + border-left-color: rgb(76, 80, 92); + border-left-style: solid; + border-left-width: 1px; +} + +.mermaid-chart { + filter: invert(84%) hue-rotate(180deg); +} + +.is-loading:after { + border-color: #4a4c58 #4a4c58 #d7d7da #d7d7da; +} + +.markdown-block-error { + border: 1px solid rgba(121, 71, 66, .5) !important; + border-bottom: none !important; +} diff --git a/frontend/trantor/public/css/.gitkeep b/frontend/trantor/public/css/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/frontend/trantor/public/img/icon/.gitkeep b/frontend/trantor/public/img/icon/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/frontend/trantor/templates/base/.gitkeep b/frontend/trantor/templates/base/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/frontend/trantor/templates/custom/.gitkeep b/frontend/trantor/templates/custom/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/frontend/trantor/templates/custom/body_inner_pre.tmpl b/frontend/trantor/templates/custom/body_inner_pre.tmpl new file mode 100644 index 0000000..ee3be51 --- /dev/null +++ b/frontend/trantor/templates/custom/body_inner_pre.tmpl @@ -0,0 +1 @@ +
In trantor template
diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..d69621f --- /dev/null +++ b/readme.md @@ -0,0 +1,50 @@ + +Gitea version 1.11.3 built with GNU Make 4.1, go1.13.8 : bindata, sqlite, sqlite_unlock_notify + +# Gitea Launch Repo + +[docs](https://docs.gitea.io/en-us/) + +releases here + +* https://dl.gitea.io/gitea +* https://github.com/go-gitea/gitea/releases + + + +## Update + +run update script when it's finally ready. + +in the meantime + +download latest binary to `/gitea/bin/` +stop gitea `sdstp gitea@` +rename gitea to `gitea.old` +rename latest to `gitea` +chmod +x gitea +make sure there is a backup of +run arch script with appropriate architecture `./arch ` amd64 is default +restart gitea `sds gitea@` + +# Running + +Use run script + +run in foreground +`./run ` + +for running in background +`./start ` +`./stop` + +for working with custom files +`./watch ` +will restart gitea on changes + +# Install + +moves service file to /etc/systemd/system +`./bin/install` + +`sds gitea@` diff --git a/restart b/restart new file mode 100755 index 0000000..e4cd95a --- /dev/null +++ b/restart @@ -0,0 +1,6 @@ +#!/bin/bash +# $1 ini file, $2 arch +echo 'restarting gitea after change' +DIR=$(dirname "$(readlink -f "$0")") || exit +$DIR/stop +$DIR/start $1 $2 diff --git a/run b/run new file mode 100755 index 0000000..eb33f7e --- /dev/null +++ b/run @@ -0,0 +1,30 @@ +#!/bin/bash +DEPLOY=${1:-default} +declare -A ARCHES +ARCHES=(["x86_64"]="amd64" ["arm32"]="arm32" ["armhf"]="arm32" ["arm64"]="arm64" ["aarch64"]="arm64" ) +ARCH=$(arch) +if [ -z "${ARCHES[$ARCH]}" ]; then + echo Your machine kernel architecture $ARCH is not supported by this script, aborting + exit 1 +fi +DIR=$(dirname "$(readlink -f "$0")") || exit +ARCH=$(arch) +# echo $ARCH ${ARCHES[$ARCH]} +BIN="$DIR/bin/gitea.${ARCHES[$ARCH]}" +# echo $ARCH ${ARCHES[$ARCH]} $BIN +if [ ! -f $BIN ]; then + echo $ARCH/${ARCHES[$ARCH]} gitea binary is not available in $BIN, run ./bin/update script + exit 1 +fi +INI="$DIR/config/$DEPLOY.ini" +mkdir -p $DIR/frontend/current +rsync -a --delete $DIR/frontend/default/ $DIR/frontend/current +rsync -a $DIR/frontend/$DEPLOY/ $DIR/frontend/current +export GITEA_WORK_DIR=/mnt/data/git-server +export GITEA_CUSTOM=$DIR/frontend/current +export USER=sysadmin +export HOME=/home/sysadmin +# where data and repo are located +# export -p | grep GITEA +echo Running: $BIN web -c $INI +$BIN web -c $INI diff --git a/start b/start new file mode 100755 index 0000000..1ef247e --- /dev/null +++ b/start @@ -0,0 +1,23 @@ +#!/bin/bash +DIR=$(dirname "$(readlink -f "$0")") || exit +COMMAND="$DIR/run $1" + +echo $DIR $COMMAND + +PIDFILE="$DIR/gitea.pid" +# echo $PIDFILE +# read -r PID < $PIDFILE +# echo PID $PID +# echo "$(ps -ea | grep $PID)" +if [ -e ${PIDFILE} ]; then + read -r PID < $PIDFILE + if (ps -ea | grep $PID); then + echo "start aborted gitea is already running." + exit 1; + fi +fi + +echo starting gitea sending log to gitea.log +$COMMAND > $DIR/gitea.log & +echo PID of gitea process is $! +echo $! > $PIDFILE diff --git a/stop b/stop new file mode 100755 index 0000000..aa6f431 --- /dev/null +++ b/stop @@ -0,0 +1,24 @@ +#!/bin/bash +DIR=$(dirname "$(readlink -f "$0")") || exit +PIDFILE="$DIR/gitea.pid" + +if [ ! -e ${PIDFILE} ]; then + # echo "gitea is not running." + exit 1; +fi + +read -r PID < $PIDFILE +if ( ! ps -ea | grep $PID ); then + echo "gitea is not running. ignoring stop request" + exit 1; +fi + +CHILD_PIDS=$(pgrep -P $PID); +echo stopping gitea - kill processes $PID $CHILD_PIDS +kill $PID 2> /dev/null || echo Killing process failed, not running? +# Wait half a second and Kill child PIDs to be sure they are gone. +sleep 0.5 +kill $CHILD_PIDS 2> /dev/null +rm $PIDFILE +# sleep 2 +# echo "$(ps -faux | grep gitea)" diff --git a/watch b/watch new file mode 100755 index 0000000..6a5d396 --- /dev/null +++ b/watch @@ -0,0 +1,20 @@ +#!/bin/bash +DEBOUNCE=1.0 +DIR=$(dirname "$(readlink -f "$0")") || exit +export WATCH_DIR="$DIR/frontend/" +export WATCH_VERBOSE=1 +COMMAND="$DIR/restart $1 $2" +# LOGFILE="$DIR/watch.log" +echo "watching $WATCH_DIR with $COMMAND" +inotifywait -mqr -e MODIFY $WATCH_DIR | +while read ; do + # debounce extra events + currentTime=$(date +'%H%M%S.%N') + delta=$(bc <<< "$lastRunTime - $currentTime") + # echo "$currentTime, $lastRunTime, $delta" + if (( $(echo "$delta < -$DEBOUNCE" | bc -l) )); then + echo $COMMAND + $COMMAND + lastRunTime=$(date +'%H%M%S.%N') + fi +done