Repository: tavyandy97/span-tree
Branch: master
Commit: f345c17845a9
Files: 82
Total size: 486.4 KB
Directory structure:
gitextract_3ye_7l94/
├── .babelrc
├── .gitattributes
├── .github/
│ └── FUNDING.yml
├── .gitignore
├── README.md
├── content/
│ ├── src/
│ │ └── scripts/
│ │ ├── components/
│ │ │ ├── Backdrop/
│ │ │ │ ├── Backdrop.jsx
│ │ │ │ ├── index.js
│ │ │ │ └── styles.css
│ │ │ ├── Loader/
│ │ │ │ ├── Loader.jsx
│ │ │ │ ├── index.js
│ │ │ │ └── styles.css
│ │ │ ├── Pane/
│ │ │ │ ├── Pane.jsx
│ │ │ │ ├── index.js
│ │ │ │ └── styles.css
│ │ │ ├── SVG/
│ │ │ │ ├── SVG.jsx
│ │ │ │ ├── assets/
│ │ │ │ │ ├── Branch.jsx
│ │ │ │ │ ├── Close.jsx
│ │ │ │ │ ├── Half.jsx
│ │ │ │ │ ├── Repo.jsx
│ │ │ │ │ └── Search.jsx
│ │ │ │ └── index.js
│ │ │ ├── Toggler/
│ │ │ │ ├── Toggler.jsx
│ │ │ │ ├── index.js
│ │ │ │ └── styles.css
│ │ │ └── TreeItem/
│ │ │ ├── TreeItem.jsx
│ │ │ ├── index.js
│ │ │ └── styles.css
│ │ ├── containers/
│ │ │ ├── Resizer/
│ │ │ │ ├── Resizer.jsx
│ │ │ │ ├── index.js
│ │ │ │ └── styles.css
│ │ │ ├── SearchBar/
│ │ │ │ ├── SearchBar.jsx
│ │ │ │ ├── SearchBarResult.jsx
│ │ │ │ ├── index.js
│ │ │ │ └── styles.css
│ │ │ ├── TreeList/
│ │ │ │ ├── TreeList.jsx
│ │ │ │ ├── index.js
│ │ │ │ └── styles.css
│ │ │ └── app/
│ │ │ ├── App.css
│ │ │ ├── App.jsx
│ │ │ └── WebWorker.js
│ │ ├── contexts/
│ │ │ └── OptionsContext.js
│ │ ├── index.js
│ │ ├── libs/
│ │ │ ├── contentDark.js
│ │ │ ├── file-icons.css
│ │ │ └── gitlab-dark.css
│ │ └── utils/
│ │ ├── backgroundColor.js
│ │ ├── browser.js
│ │ ├── file-icons.js
│ │ ├── searchBarWorker.js
│ │ ├── styling.js
│ │ ├── themeList.js
│ │ ├── throttle.js
│ │ ├── url.js
│ │ └── useEventListener.js
│ └── webpack.config.js
├── event/
│ ├── axios.js
│ ├── src/
│ │ ├── actions/
│ │ │ ├── API/
│ │ │ │ └── index.js
│ │ │ └── UI/
│ │ │ └── index.js
│ │ ├── index.js
│ │ ├── reducers/
│ │ │ ├── API/
│ │ │ │ ├── searchTerms.js
│ │ │ │ └── tree.js
│ │ │ ├── UI/
│ │ │ │ ├── clicked.js
│ │ │ │ ├── opened.js
│ │ │ │ ├── options.js
│ │ │ │ ├── pinned.js
│ │ │ │ └── width.js
│ │ │ └── index.js
│ │ └── types/
│ │ ├── API.js
│ │ └── UI.js
│ └── webpack.config.js
├── gulpfile.babel.js
├── license
├── manifest.json
├── package.json
└── popup/
├── src/
│ ├── index.html
│ └── scripts/
│ ├── components/
│ │ ├── app/
│ │ │ ├── App.jsx
│ │ │ └── styles.css
│ │ └── options/
│ │ ├── index.js
│ │ ├── options.jsx
│ │ └── styles.css
│ └── index.js
└── webpack.config.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .babelrc
================================================
{
"presets": ["es2015"],
"plugins": ["transform-es2015-destructuring", "transform-object-rest-spread"]
}
================================================
FILE: .gitattributes
================================================
content/src/scripts/libs/gitlab-dark.css binary
content/src/scripts/libs/file-icons.css binary
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: ["https://www.buymeacoffee.com/tavyandy97"]# Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
================================================
FILE: .gitignore
================================================
node_modules
build
.idea
*.DS_Store*
================================================
FILE: README.md
================================================
# 🌳 SpanTree
[](https://github.com/tavyandy97/span-tree)
[](https://chrome.google.com/webstore/detail/spantree-gitlab-tree/gcjikeldobhnaglcoaejmdlmbienoocg)
[](https://chrome.google.com/webstore/detail/spantree-gitlab-tree/gcjikeldobhnaglcoaejmdlmbienoocg)
[](https://addons.mozilla.org/en-GB/firefox/addon/spantree-gitlab-tree/)
[](https://reactjs.org/)

## 📖 About
Browser extension that makes navigating a GitLab repository feel like a breeze by providing a familiar tree structure.
- [Chrome Extension](https://chrome.google.com/webstore/detail/spantree-gitlab-tree/gcjikeldobhnaglcoaejmdlmbienoocg)
- [Firefox Add-on](https://addons.mozilla.org/en-GB/firefox/addon/spantree-gitlab-tree)

## ✨ Stargazers
[](https://github.com/tavyandy97/span-tree/stargazers)
## 💻 Development Setup
Pre-Requisites:
1. Install Node.js (v16.16.0)
2. Install gulp-cli
```
$ npm install -g gulp-cli
```
Steps:
1. Clone the repository to your local system
2. Install all the dependencies
```bash
$ npm install
```
3. Now to start the server which shall compile the extension in real time
```
$ npm start
```
(You'll observe a build folder being formed inside the project folder)
4. Load the chrome extension from the build folder. ( first enable developer mode inside Chrome)
(For reference follow: https://thoughtbot.com/blog/how-to-make-a-chrome-extension)
## 💳 Credits
SpanTree uses the following open-source packages:
- [react](https://github.com/facebook/react)
- [redux](https://github.com/reduxjs/redux)
- [webext-redux](https://github.com/tshaddix/webext-redux) (Now using [a fork](https://github.com/eduardoacskimlinks/webext-redux) - [ref](https://github.com/tshaddix/webext-redux/issues/244))
- [file-icons](https://github.com/file-icons/atom)
- [dark-gitlab](https://gitlab.com/vednoc/dark-gitlab)
- [axios](https://github.com/axios/axios)
- [immer](https://github.com/immerjs/immer)
- [fzy.js](https://github.com/jhawthorn/fzy.js)
================================================
FILE: content/src/scripts/components/Backdrop/Backdrop.jsx
================================================
import React from "react";
import "./styles.css";
function Backdrop({ showSearchbar, setShowSearchbar }) {
return showSearchbar ? (
setShowSearchbar(false)}
>
) : null;
}
export default Backdrop;
================================================
FILE: content/src/scripts/components/Backdrop/index.js
================================================
export { default } from "./Backdrop";
================================================
FILE: content/src/scripts/components/Backdrop/styles.css
================================================
.spantree-backdrop {
width: 100%;
height: 100%;
position: fixed;
z-index: 5000;
left: 0;
top: 0;
background-color: rgba(0, 0, 0, 0.3);
}
================================================
FILE: content/src/scripts/components/Loader/Loader.jsx
================================================
import React from "react";
import "./styles.css";
function Loader({ size }) {
const dimInPixel = Number(size.replace(/[^0-9\.]+/g, ""));
return (
);
}
export default Loader;
================================================
FILE: content/src/scripts/components/Loader/index.js
================================================
export { default } from "./Loader";
================================================
FILE: content/src/scripts/components/Loader/styles.css
================================================
.spantree-loader {
border-color: #f3f3f3;
border-radius: 50%;
border-style: solid;
border-top-color: rgb(237, 153, 44);
-webkit-animation: spantree-loader-spin 2s linear infinite; /* Safari */
animation: spantree-loader-spin 2s linear infinite;
}
/* Safari */
@-webkit-keyframes spantree-loader-spin {
0% {
-webkit-transform: rotate(0deg);
}
100% {
-webkit-transform: rotate(360deg);
}
}
@keyframes spantree-loader-spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
================================================
FILE: content/src/scripts/components/Pane/Pane.jsx
================================================
import React, { useState, useEffect, useContext } from "react";
import { TabIdentifierClient } from "chrome-tab-identifier";
import SVG from "../SVG";
import TreeList from "../../containers/TreeList/TreeList";
import Resizer from "../../containers/Resizer";
import { OptionsContext } from "../../contexts/OptionsContext";
import { fetchURLDetails } from "../../utils/url";
import { switchTheme } from "../../utils/themeList";
import getHeaderBackgroundColor from "../../utils/backgroundColor";
import useEventListener from "../../utils/useEventListener";
import "./styles.css";
const tabIdClient = new TabIdentifierClient();
function Pane({
toggleOpened,
width,
firstPageLoad,
setFirstPageLoad,
setShowSearchbarTrue,
reloading,
setReloading,
}) {
const { options } = useContext(OptionsContext);
const [tabId, setTabId] = useState();
const [headerStyle, setHeaderStyle] = useState(
getHeaderBackgroundColor(options),
);
useEffect(() => {
tabIdClient.getTabId().then((tab) => {
setTabId(tab);
});
}, []);
useEffect(() => {
if (reloading) {
setReloading(false);
}
}, [reloading]);
useEventListener("popstate", () => {
setReloading(true);
});
useEffect(() => {
setHeaderStyle(getHeaderBackgroundColor(options));
}, [options]);
const URLDetails = fetchURLDetails();
return (
{" "}
{URLDetails.dirFormatted}
{
switchTheme();
setTimeout(() => {
setHeaderStyle(getHeaderBackgroundColor(options));
}, 100);
}}
className="spantree-close-button"
>
{" "}
{URLDetails.branchName}
{tabId ? (
) : null}
);
}
export default Pane;
================================================
FILE: content/src/scripts/components/Pane/index.js
================================================
export { default } from "./Pane";
================================================
FILE: content/src/scripts/components/Pane/styles.css
================================================
.spantree-tree-pane {
position: fixed;
display: flex;
box-sizing: border-box;
height: 100%;
right: 0px !important;
top: calc(0px + var(--header-height, 0px)) !important;
bottom: 0px !important;
left: 0px !important;
font-size: 0.8em;
z-index: 1000;
transform: translate3d(0px, 0px, 0px);
transition: transform 0.2s ease 0s;
box-shadow: 2px 0px 8px #00000070;
}
.spantree-pane-main {
height: 100%;
width: 100%;
position: absolute;
}
.spantree-pane-header {
height: var(--top-bar-height, 40px);
background-color: rgb(77, 61, 146);
border-bottom: 1px #404040 solid;
color: white;
padding: 5px;
display: flex;
flex-direction: column;
justify-content: space-around;
}
.spantree-close-button {
cursor: pointer;
margin: 0 4px;
}
.spantree-spread {
display: flex;
justify-content: space-between;
}
.spantree-tree-body {
height: 100%;
width: 100%;
}
.spantree-pane-details {
display: inline-block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-weight: bold;
}
.spantree-pane-icons {
min-width: 35px;
}
================================================
FILE: content/src/scripts/components/SVG/SVG.jsx
================================================
import React from "react";
import Branch from "./assets/Branch";
import Repo from "./assets/Repo";
import Close from "./assets/Close";
import Half from "./assets/Half";
import Search from "./assets/Search";
function SVG({ icon, height, style }) {
switch (icon) {
case "branch":
return ;
case "repo":
return ;
case "close":
return ;
case "half":
return ;
case "search":
return ;
default:
return "faulty svg";
}
}
export default SVG;
================================================
FILE: content/src/scripts/components/SVG/assets/Branch.jsx
================================================
import React from "react";
function Branch({ height, style }) {
let heightSVG = height ? height : "16";
let widthSVG = height ? `${(10 * height) / 16}` : "10";
return (
);
}
export default Branch;
================================================
FILE: content/src/scripts/components/SVG/assets/Close.jsx
================================================
import React from "react";
function Close({ height, style }) {
let heightSVG = height ? height : "16";
let widthSVG = height ? `${(3 * height) / 4}` : "12";
return (
);
}
export default Close;
================================================
FILE: content/src/scripts/components/SVG/assets/Half.jsx
================================================
import React from "react";
function Half({ height, style }) {
let heightSVG = height ? height : "9";
let widthSVG = height ? height : "9";
return (
);
}
export default Half;
================================================
FILE: content/src/scripts/components/SVG/assets/Repo.jsx
================================================
import React from "react";
function Repo({ height, style }) {
let heightSVG = height ? height : "16";
let widthSVG = height ? `${(3 * height) / 4}` : "12";
return (
);
}
export default Repo;
================================================
FILE: content/src/scripts/components/SVG/assets/Search.jsx
================================================
import React from "react";
function Search({ height, style }) {
let heightSVG = height ? height : "9";
let widthSVG = height ? height : "9";
return (
);
}
export default Search;
================================================
FILE: content/src/scripts/components/SVG/index.js
================================================
export { default } from "./SVG";
================================================
FILE: content/src/scripts/components/Toggler/Toggler.jsx
================================================
import React from "react";
import "./styles.css";
function Toggle({ pinned, handleClick }) {
return (
SpanTree ▼
);
}
export default Toggle;
================================================
FILE: content/src/scripts/components/Toggler/index.js
================================================
export { default } from "./Toggler";
================================================
FILE: content/src/scripts/components/Toggler/styles.css
================================================
.spantree-toggler {
position: fixed;
padding: 4px 8px;
top: calc(
40% + var(--header-height, 0px) + var(--top-bar-height, 0px) +
var(--system-header-height, 0px) + var(--performance-bar-height, 0px)
);
transform: rotate(-90deg);
transform-origin: top left;
border-radius: 0px 0px 4px 4px;
cursor: pointer;
z-index: 10;
box-shadow: 0px 0px 5px #000000d9;
color: white;
background: rgb(77, 61, 146);
}
================================================
FILE: content/src/scripts/components/TreeItem/TreeItem.jsx
================================================
import React, { useEffect, useState, useContext } from "react";
import { OptionsContext } from "../../contexts/OptionsContext";
import { fetchURLDetails } from "../../utils/url";
import fileIcons from "../../utils/file-icons";
import "./styles.css";
function TreeItem({
width,
name,
isTree,
path,
close,
open,
children,
remainingURL,
rendering,
setRendering,
setClicked,
scrolling,
setScrolling,
}) {
const [opening, setOpening] = useState(false);
const { options } = useContext(OptionsContext);
const getItemURL = () => {
const URLDetails = fetchURLDetails();
return ("compatibility-mode" in options && options["compatibility-mode"]) ?
`${window.location.origin}/${
URLDetails.dirFormatted
}/blob/${URLDetails.branchName}/${path.join("/")}`:
`${window.location.origin}/${
URLDetails.dirFormatted
}/-/blob/${URLDetails.branchName}/${path.join("/")}`;
}
const handleClick = (event) => {
if (isTree) {
event.preventDefault();
if (isTree.isOpen) {
close(path);
} else {
open(path);
}
} else {
setClicked(true);
}
};
const tryTreeItemActiveBeforeReload = () => {
let isItemActive = false;
if (remainingURL.length != 0) {
let activeIconName = remainingURL.split("/")[0];
let urlRemaining = remainingURL.substring(activeIconName.length + 1);
if (decodeURIComponent(activeIconName) === name) {
if (isTree && !isTree.isOpen) {
isTree.isOpen = true;
open(path);
setOpening(true);
}
if (urlRemaining.length === 0) {
isItemActive = true;
setRendering(false);
setClicked(false);
}
} else {
urlRemaining = "";
}
return { urlRemaining, isItemActive };
} else {
return { urlRemaining: "", isItemActive };
}
};
const tryTreeItemActiveAfterReload = () => {
let isItemActive = false;
if (remainingURL.length != 0) {
let activeIconName = remainingURL.split("/")[0];
let urlRemaining = remainingURL.substring(activeIconName.length + 1);
if (decodeURIComponent(activeIconName) === name) {
if (urlRemaining.length === 0) {
isItemActive = true;
}
} else {
urlRemaining = "";
}
return { urlRemaining, isItemActive };
} else {
return { urlRemaining: "", isItemActive };
}
};
let treeItemActive = null;
if (rendering) {
treeItemActive = tryTreeItemActiveBeforeReload();
} else {
treeItemActive = tryTreeItemActiveAfterReload();
}
useEffect(() => {
if (treeItemActive.isItemActive) {
setOpening(true);
}
}, []);
useEffect(() => {
if (opening && scrolling) {
const treeList = document.querySelector(".spantree-tree-list");
const openingItem = document.querySelector(".opening");
document
.querySelector(".spantree-tree-list")
.scrollTo(
openingItem.offsetLeft - 25,
openingItem.offsetTop - treeList.clientHeight / 2,
);
setOpening(false);
if (treeItemActive.isItemActive) {
setScrolling(false);
}
}
}, [opening]);
return (
{isTree ? (
isTree.isOpen ? (
) : (
)
) : (
" "
)}
{name}
{isTree && isTree.isOpen && (
{Object.keys(children).map((key) => (
))}
)}
);
}
export default TreeItem;
================================================
FILE: content/src/scripts/components/TreeItem/index.js
================================================
export { default } from "./TreeItem";
================================================
FILE: content/src/scripts/components/TreeItem/styles.css
================================================
.spantree-tree-element {
padding: 2px 15px 2px 0px;
display: flex;
height: 24px;
align-items: center;
width: max-content;
text-decoration: none;
color: inherit;
}
.spantree-tree-element:hover {
text-decoration: none;
color: inherit;
}
.spantree-child-list {
list-style-type: none;
padding: 0px 0px 0px 20px;
}
.spantree-tree-icon {
width: 16px;
text-align: center;
margin-right: 2px;
padding-bottom: 2px;
}
.spantree-file-icon {
width: 22px;
text-align: left;
}
.spantree-file-icon i {
font-style: normal;
}
.spantree-item-name {
width: max-content;
}
.spantree-arrow {
font-style: normal;
}
.spantree-full-width-row {
position: absolute;
height: 24px;
width: 100%;
left: 0px;
z-index: 5;
opacity: 25%;
background: transparent;
transition: 0.2s background;
box-sizing: border-box;
}
.spantree-full-width-row:hover {
background: #6464ff;
cursor: pointer;
}
.spantree-full-width-row:active {
background: blue;
}
.spantree-active-row {
border: 3px solid black;
background: darkslategrey;
}
================================================
FILE: content/src/scripts/containers/Resizer/Resizer.jsx
================================================
import React, { useRef } from "react";
import { connect } from "react-redux";
import { setWidth } from "../../../../../event/src/actions/UI";
import { throttle } from "../../utils/throttle";
import "./styles.css";
const Resizer = ({ width, setWidth }) => {
const transitionProps = useRef("");
const mouseDownListener = () => {
document.body.style.userSelect = "none";
const sidebar =
document.querySelector(".nav-sidebar") ||
document.querySelector(".super-sidebar");
transitionProps.current = sidebar.style.transition;
sidebar.style.transition = "none";
document.addEventListener("mousemove", throttledMouseMoveListener);
document.addEventListener("mouseup", mouseUpListener);
};
const mouseUpListener = () => {
document.body.style.userSelect = "auto";
const sidebar =
document.querySelector(".nav-sidebar") ||
document.querySelector(".super-sidebar");
sidebar.style.transition = transitionProps.current;
document.removeEventListener("mousemove", throttledMouseMoveListener);
document.removeEventListener("mouseup", mouseUpListener);
};
const mouseMoveListener = (event) => {
setWidth(event.clientX);
};
const throttledMouseMoveListener = throttle(mouseMoveListener, 16);
return (
);
};
const mapStateToProps = (state) => {
return {
width: state.width,
};
};
const mapDispatchToProps = { setWidth };
export default connect(mapStateToProps, mapDispatchToProps)(Resizer);
================================================
FILE: content/src/scripts/containers/Resizer/index.js
================================================
export { default } from "./Resizer";
================================================
FILE: content/src/scripts/containers/Resizer/styles.css
================================================
.spantree-resizer {
width: 8px;
position: relative;
opacity: 100%;
}
.spantree-resizer:hover {
cursor: col-resize;
}
================================================
FILE: content/src/scripts/containers/SearchBar/SearchBar.jsx
================================================
import React, { useState, useEffect, useCallback, Fragment } from "react";
import { connect } from "react-redux";
import Backdrop from "../../components/Backdrop";
import SearchBarResult from "./SearchBarResult";
import { getSearchTerms } from "../../../../../event/src/actions/API";
import { fetchURLDetails } from "../../utils/url";
import useEventListener from "../../utils/useEventListener";
import "./styles.css";
function SearchBar({
worker,
showSearchbar,
setShowSearchbar,
searchTerms,
getSearchTerms,
options,
}) {
const [searchResults, setSearchResults] = useState([]);
const [searchFor, setSearchFor] = useState("");
const [activeResult, setActiveResult] = useState(0);
const [resultsLoading, setResultsLoading] = useState(0);
const [debounceTimerId, setDebounceTimerId] = useState(null);
const defaultOptions = { "auto-theme": false, "compatibility-mode": true };
Object.keys(defaultOptions).forEach((key) => {
if (key in options) {
defaultOptions[key] = options.data[key];
}
});
useEffect(() => {
const URLDetails = fetchURLDetails();
getSearchTerms({
repoName: URLDetails.dirFormatted,
branchName: URLDetails.branchName,
compatibilityMode:
"compatibility-mode" in defaultOptions &&
defaultOptions["compatibility-mode"],
});
worker.addEventListener("message", (event) => {
const searchResultsFromWorker = event.data;
setSearchResults(searchResultsFromWorker);
setResultsLoading((resultsLoading) => resultsLoading - 1);
});
}, []);
const handleRedirect = (id, inNewTab) => {
const URLDetails = fetchURLDetails();
let finalURL = null;
if (
"compatibility-mode" in defaultOptions &&
defaultOptions["compatibility-mode"]
) {
finalURL = `${window.location.origin}/${URLDetails.dirFormatted}/blob/${
URLDetails.branchName
}/${encodeURI(searchResults[id])}`;
} else {
finalURL = `${window.location.origin}/${URLDetails.dirFormatted}/-/blob/${
URLDetails.branchName
}/${encodeURI(searchResults[id])}`;
}
if (inNewTab) {
window.open(finalURL, "_blank");
// for overwriting default behavior on Firefox
window.focus();
} else {
window.location.href = finalURL;
}
};
const handleKeyDown = useCallback(
(event) => {
const isActionKey = isMac ? event.metaKey : event.ctrlKey;
if (isActionKey && (event.key === "p" || event.key === "P")) {
event.preventDefault();
event.stopPropagation();
setShowSearchbar(true);
} else if (isActionKey && event.key === "Enter" && showSearchbar) {
handleRedirect(activeResult, true);
} else if (event.key === "Enter" && showSearchbar) {
handleRedirect(activeResult, false);
} else if (event.key === "ArrowUp" && showSearchbar) {
event.preventDefault();
setActiveResult(
(activeResult) =>
(searchResults.length + activeResult - 1) % searchResults.length,
);
} else if (event.key === "ArrowDown" && showSearchbar) {
event.preventDefault();
setActiveResult(
(activeResult) => (activeResult + 1) % searchResults.length,
);
} else if (event.key === "Escape" && showSearchbar) {
setShowSearchbar(false);
}
},
[showSearchbar, activeResult, searchResults],
);
useEventListener("keydown", handleKeyDown);
useEffect(() => {
setResultsLoading((resultsLoading) => resultsLoading + 1);
workerCall();
}, [searchTerms]);
useEffect(() => {
setActiveResult(0);
debouncedWorkerCall();
}, [searchFor.replace(/ /g, "")]);
useEffect(() => {
const activeItem = document.querySelector(".spantree-result-active");
if (activeItem) {
activeItem.scrollIntoView({
behavior: "auto", // Defines the transition animation.
block: "nearest", // Defines vertical alignment.
inline: "start", // Defines horizontal alignment.
});
}
}, [activeResult]);
const isMac = ["Macintosh", "MacIntel", "MacPPC", "Mac68K"].reduce(
(accumulator, currentValue) => {
return (
window.navigator.platform.indexOf(currentValue) !== -1 || accumulator
);
},
false,
);
const workerCall = () => {
worker.postMessage({
searchTerms: searchTerms,
URLDetails: fetchURLDetails(),
query: searchFor.replace(/ /g, ""),
});
};
const debouncedWorkerCall = () => {
if (debounceTimerId) {
clearTimeout(debounceTimerId);
} else {
setResultsLoading((resultsLoading) => resultsLoading + 1);
}
setDebounceTimerId(
setTimeout(() => {
workerCall();
setDebounceTimerId(null);
}, 500),
);
};
if (!showSearchbar) return null;
return (
setSearchFor(e.target.value)}
autoFocus
/>
{searchResults.map((resultTerm, index) => {
return (
);
})}
{isMac ? (
⌘
) : (
"Ctrl"
)}{" "}
+ P
{" "}
to Search
{isMac ? "return" : "Enter"} to Open
{isMac ? (
⌘
) : (
"Ctrl"
)}{" "}
+ {isMac ? "return" : "Enter"}
{" "}
to Open in New Tab
);
}
const mapStateToProps = (state) => {
return {
searchTerms: state.searchTerms,
options: state.options,
};
};
const mapDispatchToProps = { getSearchTerms };
export default connect(mapStateToProps, mapDispatchToProps)(SearchBar);
================================================
FILE: content/src/scripts/containers/SearchBar/SearchBarResult.jsx
================================================
import React, { Fragment } from "react";
import * as fzy from "fzy.js";
import fileIcons from "../../utils/file-icons";
function getAlternatingArray(resultsLoading, query, term) {
const arr = fzy.positions(query, term);
if (resultsLoading > 0 || query.length === 0) {
return [];
}
let l = 1;
const res = [arr[0]];
for (let i = 1; i <= arr.length - 1; i++) {
let diff = arr[i] - arr[i - 1];
if (diff === 1) {
l++;
} else {
res.push(l);
res.push(diff - 1);
l = 1;
}
}
res.push(l);
return res;
}
function renderHighlightedFileLocation(resultsLoading, query, term) {
const arr = getAlternatingArray(resultsLoading, query, term);
let isFzy = false;
return (
{arr.map((len, i) => {
let charClass = "";
if (isFzy) {
charClass = "spantree-in-fzy";
}
isFzy = !isFzy;
const currString = term.substr(0, len);
term = term.substr(len);
return currString.length === 0 ? null : (
{currString}
);
})}
{term.length === 0 ? null : (
{term}
)}
);
}
function SearchBarResult({
index,
term,
query,
activeResult,
setActiveResult,
resultsLoading,
handleRedirect,
}) {
const fileLocation = term.split("/");
const fileName = fileLocation.splice(-1);
const resultClass =
index === activeResult
? "spantree-search-result spantree-result-active"
: "spantree-search-result";
return (
{
handleRedirect(index);
}}
onMouseEnter={() => {
setActiveResult(index);
}}
>
{renderHighlightedFileLocation(resultsLoading, query, term)}
);
}
export default SearchBarResult;
================================================
FILE: content/src/scripts/containers/SearchBar/index.js
================================================
export { default } from "./SearchBar";
================================================
FILE: content/src/scripts/containers/SearchBar/styles.css
================================================
.spantree-search {
position: fixed;
z-index: 6000;
background-color: white;
min-width: 40%;
border: 1px solid #ccc;
box-shadow: 0px 0px 10px #00000040;
left: 30%;
top: 12%;
box-sizing: border-box;
border-radius: 3px;
transition: all 0.3s ease-out;
}
.spantree-searchbar {
padding: 10px;
}
.spantree-searchbar input {
width: 100%;
padding: 8px;
border: 1px solid #bbbbbb;
box-sizing: border-box;
}
.spantree-searchbar input:focus {
border: 1px solid rgb(77, 61, 146);
outline: none;
box-shadow: 0px 0px 10px rgba(77, 61, 146, 0.25);
}
.spantree-search-results {
overflow-y: scroll;
overflow-x: hidden;
max-height: 35vh;
}
.spantree-results-loading {
color: grey;
}
.spantree-search-result {
overflow-x: auto;
padding: 5px 15px;
}
.spantree-search-result:hover {
cursor: pointer;
}
.spantree-result-active {
background: rgba(211, 211, 211, 0.5);
}
.spantree-search-result::-webkit-scrollbar {
height: 0px;
}
.spantree-search-file {
display: flex;
font-size: 15px;
}
.spantree-search-filename {
font-weight: 600;
padding-left: 2px;
}
.spantree-search-filelocation {
color: #919191;
padding-left: 23px;
}
.spantree-in-fzy {
color: rgb(77, 61, 146);
font-weight: bold;
}
.spantree-search-term {
margin-right: 10px;
}
.spantree-search-help {
padding: 3px 8px 6px 8px;
border-top: 1px solid #dddddd;
font-size: 14px;
}
.spantree-search-help code {
padding: 4px 6px;
}
.spantree-search-help-item {
padding-right: 16px;
}
.spantree-search-help-item-icon {
position: relative;
font-size: 18px;
top: 2px;
}
================================================
FILE: content/src/scripts/containers/TreeList/TreeList.jsx
================================================
import React, { useState, useEffect, useRef, useCallback } from "react";
import { connect } from "react-redux";
import Loader from "../../components/Loader";
import TreeItem from "../../components/TreeItem";
import { fetchURLDetails } from "../../utils/url";
import {
getInitialTree,
openDir,
closeDir,
} from "../../../../../event/src/actions/API";
import { setClicked } from "../../../../../event/src/actions/UI";
import "./styles.css";
const renderTreeItems = (
tree,
width,
setClicked,
close,
open,
rendering,
setRendering,
scrolling,
setScrolling,
) => {
const URLDetails = fetchURLDetails();
return (
{Object.keys(tree).map((key) => (
))}
);
};
function TreeList({
firstPageLoad,
setFirstPageLoad,
tabId,
tree,
width,
clicked,
setClicked,
getInitialTree,
closeDir,
}) {
const [loading, setLoading] = useState(true);
const [rendering, setRendering] = useState(false);
const [scrolling, setScrolling] = useState(false);
const initialMount = useRef(true);
const URLDetails = fetchURLDetails();
const shouldGetTree = () => {
if (!(tree && tree[tabId])) {
return true;
}
if (clicked) {
return false;
}
return firstPageLoad;
};
useEffect(() => {
if (URLDetails.baseRemovedURL.length === 0) {
setRendering(false);
setScrolling(false);
} else {
setRendering(true);
setScrolling(true);
}
if (shouldGetTree()) {
getInitialTree(
URLDetails.projectId ? URLDetails.projectId : URLDetails.dirURLParam,
{
ref: URLDetails.branchNameURL,
},
{
repoName: URLDetails.dirFormatted,
branchName: URLDetails.branchName,
tabId,
},
);
}
setFirstPageLoad(false);
}, []);
useEffect(() => {
if (initialMount.current && shouldGetTree()) {
initialMount.current = false;
} else if (loading && tree && tree[tabId]) {
setLoading(false);
}
}, [tree[tabId]]);
if (loading)
return (
);
const closeDirectory = (path) => {
closeDir(path, {
repoName: URLDetails.dirFormatted,
branchName: URLDetails.branchName,
tabId,
});
};
const openDirectory = (path) => {
openDir(
URLDetails.projectId ? URLDetails.projectId : URLDetails.dirURLParam,
path,
{
ref: URLDetails.branchNameURL,
path: encodeURIComponent(path.join("/")),
},
{
repoName: URLDetails.dirFormatted,
branchName: URLDetails.branchName,
path: path,
tabId,
},
);
};
return renderTreeItems(
tree[tabId],
width,
setClicked,
closeDirectory,
openDirectory,
rendering,
setRendering,
scrolling,
setScrolling,
);
}
const mapStateToProps = (state) => {
return {
tree: state.tree,
width: state.width,
clicked: state.clicked,
};
};
const mapDispatchToProps = { getInitialTree, closeDir, setClicked };
export default connect(mapStateToProps, mapDispatchToProps)(TreeList);
================================================
FILE: content/src/scripts/containers/TreeList/index.js
================================================
export { default } from "./TreeList";
================================================
FILE: content/src/scripts/containers/TreeList/styles.css
================================================
.spantree-loader-wrapper {
height: 100%;
display: flex;
justify-content: center;
align-content: center;
align-items: center;
}
.spantree-tree-list {
scroll-behavior: smooth;
overflow-y: auto;
height: calc(100vh - 40px);
}
.spantree-tree-list::-webkit-scrollbar-track {
background-color: #c9c9c9;
}
.spantree-tree-list::-webkit-scrollbar-corner {
background-color: #c9c9c9;
}
.spantree-tree-list::-webkit-scrollbar {
width: 8px;
height: 8px;
}
.spantree-tree-list::-webkit-scrollbar-thumb {
border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
background-color: rgba(0, 0, 0, 0.5);
}
.spantree-parent-list {
font-size: 0.875rem;
padding: 0px 0px 0px 5px;
list-style-type: none;
width: max-content;
min-width: 100%;
position: relative;
}
================================================
FILE: content/src/scripts/containers/app/App.css
================================================
================================================
FILE: content/src/scripts/containers/app/App.jsx
================================================
import React, { Component, Fragment } from "react";
import ReactDOM from "react-dom";
import { connect } from "react-redux";
import { TabIdentifierClient } from "chrome-tab-identifier";
import Toggler from "../../components/Toggler";
import Pane from "../../components/Pane";
import SearchBar from "../SearchBar";
import {
toggleOpened,
optionsChanged,
} from "../../../../../event/src/actions/UI";
import {
applyClosedPageStyling,
applyOpenedPageStyling,
} from "../../utils/styling";
import { browserKey } from "../../utils/browser";
import searchBarWorkerJS from "../../utils/searchBarWorker";
import WebWorker from "./WebWorker";
import "./App.css";
import { defaultOptions } from "../../contexts/OptionsContext";
const importFileIconCSS = `${browserKey()}-extension://${chrome.i18n.getMessage(
"@@extension_id",
)}/libs/file-icons.css`;
const tabIdClient = new TabIdentifierClient();
const parentDiv = document.querySelector("body");
class App extends Component {
constructor(props) {
super(props);
this.state = {
firstPageLoad: true,
reloading: true,
showSearchbar: false,
tabId: null,
};
this.toggleOpenedThisTab = () => {
this.props.toggleOpened({
tabId: this.state.tabId,
});
};
this.setFirstPageLoad = (firstPageLoad) => {
this.setState({ firstPageLoad });
};
this.setReloading = (reloading) => {
this.setState({ reloading });
};
this.shouldShowSpanTree = () => {
return (
(document.querySelector(".qa-branches-select") !== null ||
document.querySelector(".ref-selector") !== null ||
document.querySelector("[data-qa-selector='branches_dropdown']")
.children[0] !== null) &&
(document.querySelector(".nav-sidebar") !== null ||
document.querySelector(".super-sidebar") !== null)
);
};
this.setShowSearchbar = (showSearchbar) => {
this.setState({ showSearchbar });
};
this.searchBarWorker = new WebWorker(searchBarWorkerJS);
}
componentDidMount() {
tabIdClient.getTabId().then((tab) => {
this.setState({
tabId: tab,
});
});
if (!this.props.options.version || this.props.options.version === 0) {
const initialState =
JSON.parse(localStorage.getItem("spantree-options")) || defaultOptions;
this.props.optionsChanged(initialState);
}
}
componentDidUpdate(prevProps, prevState) {
const { tabId } = this.state;
if (tabId !== prevState.tabId) {
if (this.props.opened[tabId] && this.shouldShowSpanTree()) {
applyOpenedPageStyling(this.props.width);
} else {
applyClosedPageStyling();
}
}
if (tabId) {
if (this.props.opened[tabId] && this.shouldShowSpanTree()) {
applyOpenedPageStyling(this.props.width);
} else {
applyClosedPageStyling();
}
}
if (prevProps.options !== this.props.options) {
localStorage.setItem(
"spantree-options",
JSON.stringify(this.props.options.data),
);
}
}
render() {
const { tabId } = this.state;
if (!tabId) return null;
if (!this.shouldShowSpanTree()) {
if (this.props.opened[tabId]) this.toggleOpenedThisTab();
applyClosedPageStyling();
return null;
}
return (
{this.props.opened[tabId]
? ReactDOM.createPortal(
this.setShowSearchbar(true)}
/>,
parentDiv,
)
: ReactDOM.createPortal(
,
document.getElementById("rcr-anchor"),
)}
);
}
}
const mapStateToProps = (state) => {
return {
opened: state.opened,
pinned: state.pinned,
width: state.width,
options: state.options,
};
};
const mapDispatchToProps = { toggleOpened, optionsChanged };
export default connect(mapStateToProps, mapDispatchToProps)(App);
================================================
FILE: content/src/scripts/containers/app/WebWorker.js
================================================
export default class WebWorker {
constructor(worker) {
const code = worker.toString();
const blob = new Blob(["(" + code + ")()"]);
return new Worker(URL.createObjectURL(blob));
}
}
================================================
FILE: content/src/scripts/contexts/OptionsContext.js
================================================
import React, { createContext } from "react";
import { connect } from "react-redux";
const OptionsContext = createContext({
options: {},
});
export const defaultOptions = {
"auto-theme": false,
"compatibility-mode": true,
};
function OptionsProvider({ children, options }) {
Object.keys(defaultOptions).forEach((key) => {
if (key in options.data) {
defaultOptions[key] = options.data[key];
}
});
return (
{children}
);
}
const mapStateToProps = (state) => {
return {
options: state.options,
};
};
const ConnectedOptionsConext = connect(mapStateToProps)(OptionsProvider);
export { ConnectedOptionsConext as OptionsProvider, OptionsContext };
================================================
FILE: content/src/scripts/index.js
================================================
import React from "react";
import { render } from "react-dom";
import { Provider } from "react-redux";
import { Store } from "@eduardoac-skimlinks/webext-redux";
import App from "./containers/app/App";
import { OptionsProvider } from "./contexts/OptionsContext";
const proxyStore = new Store();
const anchor = document.createElement("div");
anchor.id = "rcr-anchor";
if (document.querySelectorAll('[aria-label="Loading"]').length === 0) {
mount();
} else {
let intervalId = null;
intervalId = setInterval(() => {
if (document.querySelectorAll('[aria-label="Loading"]').length === 0) {
clearInterval(intervalId);
mount();
}
}, 500);
}
const mount = () => {
if (document.querySelector(".layout-page") !== null) {
document
.querySelector(".layout-page")
.insertBefore(
anchor,
document.querySelector(".layout-page").childNodes[0],
);
proxyStore.ready().then(() => {
render(
,
document.getElementById("rcr-anchor"),
);
});
}
};
export default proxyStore;
================================================
FILE: content/src/scripts/libs/contentDark.js
================================================
// contentDark.js
// As the main content.js is loaded on "document_idle", the dark theme needs to be loaded at the very beginning of
// tab load to prevent a common phenomenon found in Chrome themes known as white flash. So this contentDark.js is
// loaded on "document_start" and adds the darkGitlab.css to the before the page starts loading.
// Note: This file is not processed by webpack but is copied by gulp to the build/libs folder as is.
// themeList.js
const isPresentInThemeList = () => {
const domain = location.origin;
let themeList = JSON.parse(localStorage.getItem("spantree-themelist")) || {};
return domain in themeList && themeList[domain];
};
// browser.js
const isWindowObject = (value) => {
return value != null && typeof value === "object" && "setInterval" in value;
};
const freeSelf = isWindowObject(typeof self == "object" && self) && self;
const navigator = freeSelf && freeSelf.navigator;
const userAgent = ((navigator && navigator.userAgent) || "").toLowerCase();
const vendor = ((navigator && navigator.vendor) || "").toLowerCase();
const browserKey = () => {
if (isChrome()) return "chrome";
if (isFirefox()) return "moz";
return "chrome";
};
const isChrome = () => {
const match = /google inc/.test(vendor)
? userAgent.match(/(?:chrome|crios)\/(\d+)/)
: null;
return match !== null && !isOpera();
};
const isFirefox = () => {
const match = userAgent.match(/(?:firefox|fxios)\/(\d+)/);
return match !== null;
};
const isOpera = () => {
const match = userAgent.match(/(?:^opera.+?version|opr)\/(\d+)/);
return match !== null;
};
function fireContentLoadedEvent() {
// Remove event listener
document.removeEventListener("DOMContentLoaded", fireContentLoadedEvent);
// Insert CSS into Head
const darkGitlab = document.createElement("link");
darkGitlab.id = "spantree-theme";
darkGitlab.disabled = !isPresentInThemeList();
darkGitlab.rel = "stylesheet";
darkGitlab.type = "text/css";
darkGitlab.href = `${browserKey()}-extension://${chrome.i18n.getMessage(
"@@extension_id"
)}/libs/gitlab-dark.css`;
document.querySelector("head").appendChild(darkGitlab);
// Remove CSS from HTML
document.body.onload = () => {
document.querySelector("#spantree-theme-temp").remove();
};
}
// Insert CSS into HTML
if (isPresentInThemeList()) {
const darkGitlabTemp = document.createElement("link");
darkGitlabTemp.id = "spantree-theme-temp";
darkGitlabTemp.disabled = !isPresentInThemeList();
darkGitlabTemp.rel = "stylesheet";
darkGitlabTemp.type = "text/css";
darkGitlabTemp.href = `${browserKey()}-extension://${chrome.i18n.getMessage(
"@@extension_id"
)}/libs/gitlab-dark.css`;
document
.querySelector("html")
.insertBefore(darkGitlabTemp, document.querySelector("html").childNodes[0]);
document.addEventListener("DOMContentLoaded", fireContentLoadedEvent, false);
}
================================================
FILE: content/src/scripts/libs/file-icons.css
================================================
/*
| File Icons
| @link https://github.com/file-icons
| @author Daniel Brooker https://github.com/DanBrooker
*/
/* ----------------------------[ Colors ]---------------------------------- */
/*============================================================================*
PALETTE
Base16 colours from https://github.com/chriskempson/base16
/*============================================================================*/
.light-red:before {
color: #c97071;
}
.medium-red:before {
color: #ac4142;
}
.dark-red:before {
color: #742c2d;
}
.light-green:before {
color: #a6ba7b;
}
.medium-green:before {
color: #90a959;
}
.dark-green:before {
color: #66783e;
}
.light-yellow:before {
color: #fae0bc;
}
.medium-yellow:before {
color: #ee9e2e;
}
.dark-yellow:before {
color: #d88511;
}
.light-blue:before {
color: #6098b0;
}
.medium-blue:before {
color: #6a9fb5;
}
.dark-blue:before {
color: #46788d;
}
.light-maroon:before {
color: #be7953;
}
.medium-maroon:before {
color: #8f5536;
}
.dark-maroon:before {
color: #573421;
}
.light-purple:before {
color: #c7a4c0;
}
.medium-purple:before {
color: #aa759f;
}
.dark-purple:before {
color: #825078;
}
.light-orange:before {
color: #d99762;
}
.medium-orange:before {
color: #d28445;
}
.dark-orange:before {
color: #a35f27;
}
.light-cyan:before {
color: #6bb0a4;
}
.medium-cyan:before {
color: #75b5aa;
}
.dark-cyan:before {
color: #4d9085;
}
.light-pink:before {
color: #ff4ddb;
}
.medium-pink:before {
color: #ff00cc;
}
.dark-pink:before {
color: #b3008f;
}
.theme-colour-check {
background: #ffffff;
}
/* ----------------------------[ Fonts ]---------------------------------- */
@font-face {
font-family: "FontAwesome";
font-weight: normal;
font-style: normal;
src: url("chrome-extension://__MSG_@@extension_id__/libs/fonts/fontawesome.woff2")
format("woff2"),
url("moz-extension://__MSG_@@extension_id__/libs/fonts/fontawesome.woff2")
format("woff2");
}
@font-face {
font-family: "Mfizz";
src: url("chrome-extension://__MSG_@@extension_id__/libs/fonts/mfixx.woff2")
format("woff2"),
url("moz-extension://__MSG_@@extension_id__/libs/fonts/mfixx.woff2")
format("woff2");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "Devicons";
src: url("chrome-extension://__MSG_@@extension_id__/libs/fonts/devopicons.woff2")
format("woff2"),
url("moz-extension://__MSG_@@extension_id__/libs/fonts/devopicons.woff2")
format("woff2");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "file-icons";
src: url("chrome-extension://__MSG_@@extension_id__/libs/fonts/file-icons.woff2")
format("woff2"),
url("moz-extension://__MSG_@@extension_id__/libs/fonts/file-icons.woff2")
format("woff2");
font-weight: normal;
font-style: normal;
}
@font-face {
font-family: "octicons";
src: url("chrome-extension://__MSG_@@extension_id__/libs/fonts/octicons.woff2")
format("woff2"),
url("moz-extension://__MSG_@@extension_id__/libs/fonts/octicons.woff2")
format("woff2");
font-weight: normal;
font-style: normal;
}
/* ----------------------------[ Icons ]---------------------------------- */
.icon:before {
font-weight: normal;
font-style: normal;
text-align: center;
width: 16px;
line-height: 1;
position: relative;
display: inline-block;
-webkit-font-smoothing: antialiased;
}
/*============================================================================*
Octicons
https://github.com/github/octicons
/*============================================================================*/
.binary-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f094";
}
.book-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f007";
}
.brew-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f069";
font-size: 15px;
left: 1px;
}
.checklist-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f076";
font-size: 17px;
left: 1px;
}
.code-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f05f";
}
.database-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f096";
}
.gear-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f02f";
}
.git-commit-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f01f";
}
.git-merge-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f023";
}
.github-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f00a";
}
.graph-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f043";
}
.image-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f012";
}
.key-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f049";
}
.link-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f0b0";
}
.markdown-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f0c9";
}
.package-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f0c4";
}
.ruby-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f047";
}
.secret-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f08c";
}
.squirrel-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f0b2";
font-size: 15px;
}
.text-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f011";
}
.zip-icon:before {
font-family: octicons;
font-size: 16px;
top: 1px;
content: "\f013";
}
/*============================================================================*
FontAwesome
http://fortawesome.github.io/Font-Awesome/cheatsheet
/*============================================================================*/
.android-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f17b";
font-size: 16px;
top: 1px;
}
.at-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f1fa";
font-size: 15px;
top: 1px;
}
.audio-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f028";
font-size: 15px;
top: 1px;
}
.bullhorn-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f0a1";
font-size: 16px;
top: 2px;
}
.calc-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f1ec";
font-size: 14px;
}
.coffee-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f0f4";
font-size: 14px;
top: 1px;
}
.css3-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f13c";
top: 0;
}
.circle-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f111";
font-size: 16px;
top: 1px;
}
.earth-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f0ac";
font-size: 15px;
}
.folder-open-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f07c";
font-size: 15px;
}
.folder-closed-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f07b";
font-size: 15px;
}
.gears-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f085";
font-size: 15px;
}
.generic-file-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f15b";
font-size: 15px;
}
.html5-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f13b";
font-size: 15px;
top: 1px;
}
.mobile-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f10b";
font-size: 20px;
top: 2px;
}
.moon-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f186";
font-size: 16px;
top: 1px;
}
.music-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f001";
font-size: 15px;
}
.print-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f02f";
font-size: 15px;
top: 2px;
}
.recycle-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f1b8";
font-size: 15px;
top: 2px;
}
.rss-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f143";
font-size: 16px;
top: 2px;
}
.smarty-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f0eb";
font-size: 15px;
}
.sourcemap-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f279";
font-size: 14px;
}
.sun-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f185";
font-size: 14px;
-webkit-font-smoothing: subpixel-antialiased;
}
.toc-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f03a";
font-size: 15px;
top: 2px;
}
.tree-arrow-right-icon:before {
font-family: FontAwesome;
font-size: 10px;
content: "\f054";
font-size: 12px;
top: 5px;
}
.tree-arrow-down-icon:before {
font-family: FontAwesome;
font-size: 10px;
content: "\f078";
font-size: 12px;
top: 5px;
}
.twig-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f1bb";
font-size: 14px;
}
.pdf-icon:before {
font-family: FontAwesome;
font-size: 13px;
content: "\f1c1";
font-size: 14px;
}
/*============================================================================*
Mfizz
http://mfizz.com/oss/font-mfizz
/*============================================================================*/
.apache-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f102";
top: 3px;
font-size: 15px;
}
.archlinux-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "A";
top: 1px;
font-size: 15px;
}
.c-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f106";
top: 1px;
font-size: 13px;
}
.cpp-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f10b";
top: 1px;
}
.csharp-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f10c";
top: 1px;
}
.debian-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f111";
top: 1px;
}
.elixir-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f113";
top: 1px;
}
.gnome-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f119";
top: 1px;
}
.haskell-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f121";
top: 2px;
font-size: 16px;
}
.java-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f126";
top: 2px;
font-size: 16px;
}
.js-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f129";
top: 1px;
font-size: 14px;
}
.msql-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f136";
top: 2px;
font-size: 15px;
text-shadow: 0 0 0;
}
.objc-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f13e";
top: 2px;
font-size: 16px;
}
.osx-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f141";
top: 1px;
}
.perl-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f142";
top: 1px;
}
.python-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f14c";
top: 1px;
}
.red-hat-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f14e";
top: 2px;
}
.scala-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f154";
top: 1px;
}
.sql-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f10e";
top: 1px;
}
.svg-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f15c";
top: 1px;
}
.tt-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "TT";
}
.x11-icon:before {
font-family: Mfizz;
font-size: 14px;
content: "\f16e";
top: 1px;
font-size: 13px;
}
/*============================================================================*
Devicons
http://vorillaz.github.io/devicons
/*============================================================================*/
.angular-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e653";
}
.appcelerator-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e6ab";
}
.appstore-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e613";
}
.asp-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e67f";
}
.atom-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e664";
-webkit-font-smoothing: subpixel-antialiased;
}
.backbone-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e652";
}
.bootstrap-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e647";
font-size: 15px;
top: 2px;
}
.bower-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e64d";
text-shadow: 0 0 0;
}
.chrome-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e643";
}
.clojure-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e668";
-webkit-font-smoothing: subpixel-antialiased;
}
.compass-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e661";
font-size: 14px;
top: 2px;
}
.dart-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e698";
font-size: 15px;
top: 2px;
}
.dlang-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e6af";
}
.dojo-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e61c";
font-size: 16px;
top: 4px;
transform: scale(1.2);
-webkit-font-smoothing: subpixel-antialiased;
}
.dropbox-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e607";
}
.eclipse-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e69e";
}
.erlang-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e6b1";
}
.extjs-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e68e";
}
.fsharp-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e6a7";
left: 1px;
top: 2px;
}
.git-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e602";
font-size: 15px;
top: 2px;
}
.heroku-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e67b";
}
.jquery-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e650";
font-size: 15px;
top: 2px;
}
.jqueryui-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e654";
font-size: 15px;
top: 2px;
}
.laravel-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e63f";
-webkit-font-smoothing: subpixel-antialiased;
}
.materialize-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e6b6";
transform: scale(1.2);
-webkit-font-smoothing: subpixel-antialiased;
}
.modernizr-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e620";
}
.mootools-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e68f";
text-shadow: 0 0 0;
}
.node-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e618";
}
.pod-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e669";
font-size: 15px;
top: 2px;
}
.prolog-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e6a1";
}
.rails-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e63b";
}
.raphael-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e65f";
font-size: 15px;
}
.requirejs-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e670";
}
.rust-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e6a8";
}
.sass-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e64b";
}
.sencha-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e68c";
}
.snapsvg-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e65e";
}
.swift-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e655";
left: -1px;
}
.travis-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e67e";
font-size: 15px;
top: 2px;
}
.uikit-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e673";
font-size: 15px;
top: 2px;
}
.unity3d-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e621";
}
.vim-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e6c5";
}
.vs-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e60c";
font-size: 14px;
top: 2px;
}
.windows-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e60f";
font-size: 14px;
top: 2px;
}
.yeoman-icon:before {
font-family: Devicons;
font-size: 16px;
top: 3px;
content: "\e67a";
}
/*============================================================================*
Custom file icons
See https://github.com/file-icons/source/#adding-new-icons
/*============================================================================*/
._1c-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\a5ea";
top: 3px;
font-size: 16px;
}
._1c-alt-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea28";
top: 3px;
font-size: 16px;
}
.abap-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e92b";
top: 2px;
}
.access-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9ea";
top: 2px;
}
.ada-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e90b";
top: 3px;
font-size: 17px;
}
.ae-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9f3";
top: 2px;
}
.ahk-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e932";
top: 2px;
}
.ai-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e6b4";
top: 2px;
}
.alloy-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e935";
top: 2px;
}
.alpine-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9ff";
top: 2px;
font-size: 16px;
}
.ampl-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e94e";
top: 3px;
font-size: 16px;
left: 1px;
}
.amx-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e99b";
top: 3px;
font-size: 16px;
}
.ant-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e93e";
top: 4px;
font-size: 18px;
transform: scale(1.1);
}
.antlr-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e92c";
top: 3px;
}
.api-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e92d";
top: 2px;
}
.apl-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\234b";
top: 2px;
}
.apple-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e925";
top: 1px;
}
.appveyor-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e923";
top: 2px;
}
.arc-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e92f";
top: 2px;
}
.arduino-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e930";
top: 3px;
font-size: 16px;
}
.arttext-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\24d0";
top: 2px;
}
.as-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e92e";
top: 1px;
font-size: 14px;
}
.asciidoc-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e918";
top: 1px;
font-size: 14px;
}
.ats-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e934";
top: 2px;
}
.audacity-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9f9";
top: 2px;
}
.augeas-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e931";
top: 2px;
}
.autoit-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e933";
top: 2px;
font-size: 16px;
}
.babel-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e91f";
top: 2px;
left: 1px;
}
.bibtex-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e601";
top: 2px;
font-size: 16px;
-webkit-font-smoothing: subpixel-antialiased;
}
.blender-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9fa";
top: 2px;
}
.bluespec-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e93c";
top: 1px;
font-size: 13px;
left: 1px;
}
.boo-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e939";
top: 2px;
}
.boot-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\f103";
top: 2px;
font-size: 16px;
}
.brain-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e93a";
top: 2px;
}
.brakeman-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9d6";
top: 2px;
}
.bro-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e93b";
top: 3px;
font-size: 16px;
}
.broccoli-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e922";
top: 1px;
font-size: 14px;
}
.byond-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e962";
top: 2px;
}
.cabal-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9c2";
top: 2px;
}
.cake-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9e3";
top: 2px;
}
.cakefile-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e924";
top: 2px;
}
.cakephp-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9d3";
top: 1px;
font-size: 14px;
}
.cc-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9d5";
top: 2px;
font-size: 16px;
}
.ceylon-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e94f";
top: 2px;
}
.cf-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e929";
top: 2px;
}
.chai-icon:before {
font-family: file-icons;
font-size: 15px;
content: "c";
top: 3px;
font-size: 16px;
}
.chapel-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e950";
top: 2px;
}
.chartjs-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea0b";
top: 2px;
}
.chuck-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e943";
top: 2px;
}
.circleci-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea12";
top: 2px;
font-size: 14px;
}
.cirru-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e951";
top: 2px;
text-shadow: 0 0 0;
}
.cl-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e972";
top: 2px;
text-shadow: 0 0 0;
}
.clarion-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e952";
top: 1px;
font-size: 14px;
left: 1px;
}
.clean-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e95b";
top: 2px;
font-size: 16px;
}
.click-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e95c";
top: 2px;
}
.clips-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e940";
top: 3px;
font-size: 18px;
}
.cljs-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\f104";
top: 2px;
}
.cmake-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e93f";
top: 1px;
font-size: 14px;
}
.codecov-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\2602";
top: 2px;
}
.composer-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e683";
top: 3px;
font-size: 17px;
}
.config-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\f07c";
top: 2px;
font-size: 14px;
}
.cordova-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea11";
top: 2px;
}
.coq-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e95f";
top: 2px;
font-size: 16px;
left: 1px;
}
.cp-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e942";
top: 3px;
font-size: 17px;
}
.creole-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e95e";
top: 2px;
}
.crystal-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e902";
top: 2px;
left: 1px;
}
.csound-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9f0";
top: 2px;
}
.csscript-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9e2";
top: 2px;
}
.cucumber-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\f02b";
top: 3px;
}
.cython-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e963";
top: 2px;
}
.d3-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea10";
top: 2px;
}
.darcs-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e964";
top: 2px;
}
.dashboard-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\f07d";
top: 2px;
font-size: 13px;
}
.dbase-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9f1";
top: 2px;
}
.default-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\1f5cc";
top: 2px;
font-size: 14px;
}
.diff-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e960";
top: 2px;
}
.docker-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\f106";
top: 3px;
font-size: 18px;
}
.doxygen-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e928";
top: 1px;
font-size: 13px;
}
.doge-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e946";
top: 2px;
}
.dyalog-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e90c";
top: 1px;
font-size: 14px;
left: 1px;
}
.dylib-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea15";
top: 2px;
}
.e-icon:before {
font-family: file-icons;
font-size: 15px;
content: "E";
top: 1px;
font-size: 14px;
}
.eagle-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e965";
top: 2px;
}
.ec-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9c9";
top: 2px;
}
.ecere-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e966";
top: 3px;
font-size: 16px;
}
.editorconfig-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea1b";
top: 3px;
}
.eiffel-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e967";
top: 2px;
font-size: 16px;
}
.electron-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea27";
top: 3px;
font-size: 16px;
text-shadow: 0 0 0;
}
.elm-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\f102";
top: 2px;
}
.em-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e968";
top: 3px;
font-size: 16px;
}
.ember-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e61b";
top: 2px;
font-size: 14px;
}
.emacs-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e926";
top: 2px;
}
.eq-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea0a";
top: 5px;
}
.eslint-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea0f";
top: 3px;
font-size: 16px;
}
.excel-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9ee";
top: 2px;
}
.fabfile-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e94b";
top: 2px;
font-size: 16px;
}
.factor-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e96a";
top: 3px;
font-size: 18px;
left: -2px;
transform: scale(1.2);
}
.fancy-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e96b";
top: 2px;
font-size: 16px;
}
.fantom-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e96f";
top: 2px;
left: 1px;
}
.fbx-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9fc";
top: 2px;
}
.ff-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\fb00";
top: 3px;
}
.finder-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9e9";
top: 3px;
font-size: 16px;
}
.flow-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e921";
top: 1px;
}
.flux-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e969";
top: 2px;
}
.font-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e90f";
top: 1px;
font-size: 14px;
left: 1px;
}
.fortran-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e90a";
top: 1px;
font-size: 14px;
left: 1px;
}
.freemarker-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e970";
top: 2px;
font-size: 16px;
left: 1px;
}
.frege-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e96e";
top: 2px;
font-size: 16px;
left: 1px;
}
.fuelux-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea09";
top: 3px;
font-size: 16px;
left: 2px;
transform: scale(1.15);
text-shadow: 0 0 0;
}
.gams-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e973";
top: 2px;
left: 1px;
}
.gap-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e971";
top: 3px;
font-size: 16px;
left: 1px;
}
.gdb-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea08";
top: 3px;
font-size: 16px;
transform: scale(1.15);
text-shadow: 0 0 0;
}
.genshi-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e976";
top: 3px;
}
.gentoo-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e96d";
top: 1px;
font-size: 14px;
left: 1px;
}
.gf-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e978";
top: 2px;
}
.glade-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e938";
top: 2px;
}
.glyphs-icon:before {
font-family: file-icons;
font-size: 15px;
content: "G";
top: 3px;
}
.gml-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e975";
top: 3px;
font-size: 16px;
}
.gn-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea25";
top: 2px;
}
.gnu-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e679";
top: 2px;
font-size: 16px;
text-shadow: 0 0 0;
}
.go-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e624";
top: 3px;
}
.godot-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e974";
top: 2px;
}
.golo-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e979";
top: 2px;
}
.gosu-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e97a";
top: 2px;
}
.gradle-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e903";
top: 3px;
font-size: 16px;
left: 1px;
}
.graphql-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e97c";
top: 2px;
}
.graphviz-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e97d";
top: 4px;
font-size: 17px;
left: 1px;
}
.groovy-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e904";
top: 4px;
font-size: 17px;
left: -1px;
}
.grunt-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e611";
top: 1px;
font-size: 14px;
}
.gulp-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e610";
top: 2px;
font-size: 16px;
}
.hack-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9ce";
top: 2px;
}
.haml-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\f15b";
top: 2px;
}
.harbour-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e97b";
top: 2px;
font-size: 16px;
text-shadow: 0 0 0;
}
.hashicorp-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e97e";
top: 2px;
}
.haxe-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e907";
top: 2px;
}
.hy-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e97f";
top: 2px;
}
.idl-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e947";
top: 3px;
font-size: 18px;
}
.idris-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e983";
top: 2px;
font-size: 16px;
-webkit-font-smoothing: subpixel-antialiased;
}
.igorpro-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e980";
top: 2px;
font-size: 16px;
-webkit-font-smoothing: subpixel-antialiased;
}
.indesign-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9f4";
top: 2px;
}
.inform7-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e984";
top: 2px;
font-size: 16px;
text-shadow: 0 0 0;
}
.inno-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e985";
top: 2px;
}
.io-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e981";
top: 1px;
font-size: 13px;
-webkit-font-smoothing: subpixel-antialiased;
}
.ioke-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e982";
top: 2px;
}
.ionic-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\f14b";
top: 2px;
}
.isabelle-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e945";
top: 2px;
font-size: 16px;
}
.j-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e937";
top: 1px;
font-size: 13px;
}
.jade-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e90d";
top: 1px;
font-size: 14px;
}
.jake-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e948";
top: 3px;
font-size: 16px;
}
.jenkins-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e667";
top: 3px;
font-size: 18px;
text-shadow: 0 0 0;
}
.jinja-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e944";
top: 2px;
}
.jsonld-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e958";
top: 3px;
font-size: 17px;
}
.jsx-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9e6";
top: 1px;
font-size: 14px;
}
.julia-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\26ec";
top: 1px;
font-size: 14px;
}
.jupyter-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e987";
top: 3px;
font-size: 16px;
}
.karma-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9cd";
top: 2px;
}
.keynote-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9e5";
top: 2px;
}
.khronos-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9f8";
top: 2px;
}
.kivy-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e901";
top: 2px;
}
.knockout-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\4B";
top: 2px;
}
.kotlin-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e989";
top: 1px;
font-size: 14px;
}
.krl-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e988";
top: 1px;
font-size: 14px;
}
.labview-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e98a";
top: 2px;
font-size: 16px;
}
.lasso-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e98c";
top: 2px;
left: 1px;
}
.leaflet-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea07";
top: 2px;
}
.lean-icon:before {
font-family: file-icons;
font-size: 15px;
content: "L";
top: 1px;
font-size: 13px;
}
.lein-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\f105";
top: 3px;
font-size: 16px;
text-shadow: 0 0 0;
transform: scale(1.15);
}
.lfe-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e94c";
top: 2px;
font-size: 16px;
}
.lightwave-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9fb";
top: 2px;
}
.lisp-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e908";
top: 3px;
font-size: 17px;
}
.llvm-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e91d";
top: 3px;
font-size: 17px;
}
.logtalk-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e98d";
top: 2px;
text-shadow: 0 0 0;
}
.lookml-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e98e";
top: 2px;
font-size: 16px;
text-shadow: 0 0 0;
}
.ls-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e914";
top: 2px;
font-size: 14px;
}
.lsl-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e98b";
top: 1px;
}
.lua-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e91b";
top: 2px;
font-size: 14px;
}
.mako-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e98f";
top: 4px;
font-size: 16px;
}
.mapbox-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e941";
top: 1px;
font-size: 13px;
}
.marko-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e920";
top: 4px;
font-size: 18px;
left: -1px;
transform: scale(1.05);
}
.mathematica-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e990";
top: 2px;
font-size: 16px;
}
.mathjax-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea06";
top: 2px;
}
.matlab-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e991";
top: 2px;
}
.max-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e993";
top: 2px;
}
.maxscript-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e900";
top: 2px;
}
.maya-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9f6";
top: 2px;
font-size: 16px;
}
.manpage-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e936";
top: 3px;
}
.mediawiki-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e954";
top: 2px;
font-size: 16px;
}
.mercury-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e994";
top: 3px;
font-size: 16px;
transform: scale(1.2);
}
.metal-icon:before {
font-family: file-icons;
font-size: 15px;
content: "M";
top: 1px;
left: 1px;
}
.meteor-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e6a5";
top: 1px;
}
.minecraft-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9dc";
top: 2px;
}
.mirah-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e995";
top: 2px;
}
.mocha-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\26fe";
top: 2px;
font-size: 17px;
}
.model-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9e8";
top: 2px;
font-size: 16px;
}
.modula2-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e996";
top: 2px;
}
.monkey-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e997";
top: 3px;
font-size: 18px;
left: -1px;
}
.mruby-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea18";
top: 2px;
}
.mupad-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9ca";
top: 3px;
font-size: 16px;
}
.mustache-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e60f";
top: 2px;
font-size: 16px;
}
.nant-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9e1";
top: 3px;
transform: scale(1.2);
}
.neko-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea05";
top: 2px;
}
.netlogo-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e99c";
top: 2px;
left: 1px;
}
.newrelic-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9d7";
top: 2px;
}
.nginx-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\f146b";
top: 2px;
}
.nib-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\2712";
top: 2px;
}
.nimrod-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e998";
top: 2px;
}
.nit-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e999";
top: 2px;
}
.nix-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e99a";
top: 3px;
font-size: 16px;
}
.nmap-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e94d";
top: 3px;
font-size: 16px;
transform: scale(1.1);
}
.nodemon-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea26";
top: 2px;
}
.normalize-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea04";
top: 3px;
font-size: 16px;
}
.npm-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e91c";
top: 3px;
font-size: 17px;
}
.nsis-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea1e";
top: 3px;
font-size: 16px;
}
.numpy-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e99d";
top: 2px;
font-size: 14px;
}
.nuget-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9d9";
top: 2px;
}
.nunjucks-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e953";
top: 2px;
font-size: 16px;
}
.nvidia-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e95d";
top: 2px;
}
.objj-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e99e";
top: 2px;
}
.ocaml-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e91a";
top: 1px;
font-size: 14px;
}
.onenote-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9eb";
top: 2px;
}
.ooc-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9cb";
top: 2px;
}
.opa-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\2601";
top: 2px;
}
.opencl-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e99f";
top: 2px;
font-size: 16px;
}
.openoffice-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9e4";
top: 2px;
}
.org-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e917";
top: 1px;
font-size: 14px;
left: 1px;
}
.owl-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e957";
top: 2px;
}
.ox-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9a1";
top: 3px;
font-size: 16px;
text-shadow: 0 0 0;
}
.oxygene-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9bf";
top: 2px;
}
.oz-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9be";
top: 2px;
}
.pan-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9bd";
top: 2px;
}
.papyrus-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9bc";
top: 2px;
}
.parrot-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9bb";
top: 3px;
font-size: 16px;
}
.pascal-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e92a";
top: 2px;
}
.patch-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e961";
top: 2px;
}
.pawn-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\265f";
top: 1px;
font-size: 14px;
}
.perl6-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e96c";
top: 2px;
}
.phalcon-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e94a";
top: 2px;
}
.php-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\f147";
top: 1px;
font-size: 14px;
left: 1px;
}
.pickle-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9c4";
top: 2px;
}
.pike-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9b9";
top: 4px;
font-size: 16px;
-webkit-font-smoothing: subpixel-antialiased;
transform: scale(1.15);
}
.pogo-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9b8";
top: 3px;
font-size: 14px;
-webkit-font-smoothing: subpixel-antialiased;
}
.pony-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9b7";
top: 3px;
font-size: 16px;
}
.pointwise-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e977";
top: 2px;
}
.postcss-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e910";
top: 2px;
font-size: 14px;
}
.postscript-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e955";
top: 2px;
left: 1px;
}
.povray-icon:before {
font-family: file-icons;
font-size: 15px;
content: "P";
top: 2px;
left: 1px;
}
.powerbuilder-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea14";
}
.powerpoint-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9ec";
top: 2px;
}
.powershell-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9da";
top: 2px;
font-size: 16px;
}
.premiere-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9f5";
top: 2px;
}
.processing-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9a0";
top: 2px;
}
.progress-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9c0";
top: 2px;
font-size: 16px;
transform: scale(1.2);
}
.propeller-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9b5";
top: 3px;
font-size: 16px;
}
.protractor-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9de";
top: 3px;
}
.psd-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e6b8";
top: 2px;
}
.pug-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea13";
top: 3px;
font-size: 16px;
}
.pug-alt-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9d0";
top: 3px;
font-size: 16px;
}
.puppet-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\f0c3";
top: 2px;
left: 1px;
}
.purebasic-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\01b5";
top: 2px;
}
.purescript-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9b2";
top: 3px;
}
.r-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e905";
top: 3px;
font-size: 17px;
}
.racket-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9b1";
top: 2px;
left: 1px;
}
.raml-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e913";
top: 1px;
font-size: 14px;
}
.rascal-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea24";
top: 2px;
}
.rdoc-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9b0";
top: 2px;
left: 1px;
}
.react-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\f100";
top: 2px;
}
.rebol-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9ae";
top: 1px;
font-size: 13px;
}
.reason-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea1d";
top: 3px;
}
.red-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9ad";
top: 3px;
font-size: 16px;
}
.regex-icon:before {
font-family: file-icons;
font-size: 15px;
content: "*";
top: 1px;
font-size: 12px;
left: 1px;
}
.rexx-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea16";
top: 2px;
font-size: 14px;
left: 1px;
}
.riot-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e919";
top: 4px;
font-size: 18px;
}
.robot-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9ac";
top: 2px;
font-size: 14px;
}
.rollup-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea20";
top: 2px;
}
.rst-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9cc";
top: 3px;
font-size: 16px;
}
.sage-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9ab";
top: 3px;
font-size: 16px;
-webkit-font-smoothing: subpixel-antialiased;
}
.saltstack-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e915";
top: 2px;
font-size: 14px;
}
.sas-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e95a";
top: 2px;
}
.sbt-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9d2";
top: 2px;
font-size: 14px;
}
.scd-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9a2";
top: 2px;
}
.scad-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e911";
top: 2px;
font-size: 14px;
}
.scheme-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\03bb";
top: 2px;
}
.scilab-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9a9";
top: 3px;
font-size: 18px;
left: -1px;
-webkit-font-smoothing: subpixel-antialiased;
}
.scrutinizer-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9d4";
top: 2px;
font-size: 14px;
}
.self-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9a8";
top: 3px;
font-size: 16px;
text-shadow: 0 0 0;
transform: scale(1.2);
}
.sf-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9db";
top: 2px;
}
.shen-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9a7";
top: 2px;
font-size: 16px;
}
.shopify-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9cf";
top: 2px;
}
.shuriken-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\272b";
top: 2px;
font-size: 14px;
}
.sigils-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\1f764";
top: 3px;
font-size: 16px;
text-shadow: 0 0 0;
}
.silverstripe-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e800";
top: 2px;
}
.sketch-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e927";
top: 2px;
}
.slash-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9a6";
top: 2px;
}
.snyk-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea1c";
top: 2px;
font-size: 16px;
}
.sparql-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e959";
top: 2px;
}
.sqf-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9a5";
top: 1px;
text-shadow: 0 0 0;
}
.sqlite-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9dd";
top: 3px;
}
.stan-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9a4";
top: 2px;
}
.stata-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9a3";
top: 2px;
}
.storyist-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9ef";
top: 2px;
font-size: 16px;
}
.strings-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9e0";
top: 2px;
}
.stylelint-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e93d";
top: 2px;
}
.stylus-icon:before {
font-family: file-icons;
font-size: 15px;
content: "s";
top: 2px;
left: 1px;
}
.sublime-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e986";
top: 2px;
}
.svn-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea17";
top: 2px;
}
.sysverilog-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9c3";
top: 2px;
}
.tag-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\f015";
top: 2px;
font-size: 14px;
}
.tcl-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e956";
top: 2px;
font-size: 16px;
}
.terminal-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\f0c8";
top: 2px;
font-size: 14px;
}
.tern-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\1f54a";
top: 4px;
font-size: 16px;
}
.terraform-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e916";
top: 1px;
font-size: 14px;
}
.tex-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e600";
top: 4px;
font-size: 16px;
-webkit-font-smoothing: subpixel-antialiased;
}
.textile-icon:before {
font-family: file-icons;
font-size: 15px;
content: "t";
top: 2px;
}
.textmate-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\2122";
top: 2px;
font-size: 16px;
}
.thor-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9d8";
top: 2px;
}
.ts-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\2a6";
top: 1px;
font-size: 14px;
}
.tsx-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9e7";
top: 1px;
font-size: 14px;
}
.turing-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9b6";
top: 2px;
}
.txl-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9c1";
top: 2px;
}
.typedoc-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9fe";
top: 2px;
}
.typings-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9df";
top: 2px;
}
.uno-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9b3";
top: 2px;
}
.unreal-icon:before {
font-family: file-icons;
font-size: 15px;
content: "u";
top: 2px;
}
.urweb-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9ba";
top: 4px;
font-size: 18px;
left: -1px;
text-shadow: 0 0 0;
}
.webpack-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e91e";
top: 3px;
}
.wercker-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea19";
top: 2px;
}
.word-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9ed";
top: 2px;
}
.v8-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea1f";
top: 3px;
font-size: 16px;
}
.vagrant-icon:before {
font-family: file-icons;
font-size: 15px;
content: "V";
top: 2px;
font-size: 14px;
}
.varnish-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9b4";
top: 1px;
font-size: 14px;
}
.verilog-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e949";
top: 2px;
}
.vhdl-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9aa";
top: 2px;
}
.video-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\f057";
top: 1px;
font-size: 14px;
}
.vue-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e906";
top: 3px;
}
.x10-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\2169";
top: 2px;
}
.xmos-icon:before {
font-family: file-icons;
font-size: 15px;
content: "X";
top: 1px;
font-size: 14px;
}
.xojo-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9af";
top: 2px;
}
.xpages-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9c5";
top: 2px;
}
.xtend-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9c6";
top: 2px;
}
.yang-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\262f";
top: 2px;
}
.yarn-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea1a";
top: 2px;
font-size: 16px;
}
.yui-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\ea00";
top: 2px;
}
.zbrush-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9f2";
top: 2px;
font-size: 16px;
}
.zephir-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9c7";
top: 2px;
-webkit-font-smoothing: subpixel-antialiased;
}
.zimpl-icon:before {
font-family: file-icons;
font-size: 15px;
content: "\e9c8";
top: 2px;
font-size: 16px;
left: 1px;
}
================================================
FILE: content/src/scripts/libs/gitlab-dark.css
================================================
/* ==UserStyle==
@name Dark-GitLab Lite
@namespace gitlab.com/vednoc/dark-gitlab
@description Dark and light theme for GitLab and self-hosted GitLab instances.
@author vednoc (https://gitlab.com/vednoc)
@homepageURL https://gitlab.com/vednoc/dark-gitlab
@supportURL https://gitlab.com/vednoc/dark-gitlab/issues
@updateURL https://gitlab.com/vednoc/dark-gitlab/raw/master/gitlab.user.css
==/UserStyle== */
/****************************** GITLAB-DARK-START ******************************/
:root {
--note: "Dark-GitLab v1.6.3";
--bshadow: 0 2px 4px var(--shadow);
--t: transparent !important;
--avatar: 25%;
--ui-font: "font_name", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
"Noto Sans", Ubuntu, Cantarell, "Helvetica Neue", var(--emoji-font),
sans-serif;
--mono-font: "font_name", "Menlo", "DejaVu Sans Mono", "Liberation Mono",
"Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console",
monospace;
--emoji-font: "font_name", "Apple Color Emoji", "Segoe UI Emoji",
"Segoe UI Symbol", "Noto Color Emoji";
--white: #fff;
--bb: #202020;
--dark: #181818;
--darken: #262626;
--darker: #404040;
--light: #e6e6e6;
--lighter: #9b9b9b;
--accent: #4f8cc9;
--shadow: rgba(0, 0, 0, 0.314);
--yellow: #fc3;
--orange: #fe9600;
--red: #f44;
--magenta: #8368aa;
--violet: #6e5494;
--blue: #4f8cc9;
--cyan: #4d5eff;
--green: #083;
--red-darken: #4e3030;
--red-darker: #3b2c2c;
overflow-x: hidden;
}
@supports (-moz-user-select: none) {
:root {
--svg-status-bg: var(--dark) !important;
}
}
body {
font-family: var(--ui-font) !important;
}
body,
body.navless {
color: var(--light) !important;
background-color: var(--dark) !important;
}
body::before {
content: "";
z-index: -1;
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
background-color: var(--bb) !important;
}
body a,
body a:hover {
color: var(--accent);
}
body hr {
border-color: var(--darker);
}
body h1,
body .h1,
body h2,
body .h2,
body h3,
body .h3,
body h4,
body .h4,
body h5,
body .h5,
body h6,
body .h6 {
color: var(--light);
}
body time {
color: var(--lighter);
}
body :not(pre) > code {
color: var(--light);
background-color: var(--darken);
box-shadow: inset 0 0 0 1px var(--darker);
}
body pre {
color: var(--light);
border-color: var(--darker);
background-color: var(--darken);
}
body pre[class*="description"] {
border-left-width: 4px;
font-size: 0.875rem;
color: var(--lighter) !important;
border-color: var(--darker) !important;
}
body > pre:not([class]) {
background-color: var(--t) !important;
}
body kbd {
border-radius: 4px;
color: var(--light) !important;
background-color: var(--darken) !important;
box-shadow: inset 0 0 0 1px var(--darker);
}
body .gl-link,
body .gl-link:hover {
color: var(--accent);
}
body .author-link,
.branch-commit .commit-sha {
color: var(--accent);
}
body pre,
body code,
body kbd,
body samp,
body .monospace,
body .ref-name,
body .commit-sha,
body .pipeline-number,
body .label-branch,
body table.code,
body [class*="git-commit"] {
font-family: var(--mono-font) !important;
}
body .container {
border-color: var(--darker) !important;
}
body .danger-title,
body .gl-field-error,
body .invalid-feedback {
color: var(--red) !important;
}
body [class*="price-per-"] {
color: var(--blue) !important;
}
body .warning-title {
color: var(--orange) !important;
}
body .valid-feedback {
color: var(--green) !important;
}
body .account-well {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
body [class*="two-factor-auth"] svg {
background-color: var(--white) !important;
box-shadow: 0 0 0 4px var(--white);
}
body .progress {
background-color: var(--darker) !important;
}
body .progress-bar {
color: var(--light) !important;
border-radius: 4px;
}
body .progress-bar.bg-primary {
background-color: var(--accent) !important;
}
body .progress.repository-languages-bar {
background-color: var(--t) !important;
}
body .progress.repository-languages-bar [style*="#375eab"] {
background-color: #00add8 !important;
}
body .progress.repository-languages-bar [style*="#776791"] {
background-color: #000100 !important;
}
body .text-info:not(#z) {
color: var(--blue) !important;
}
body .text-info:not(#z) > svg {
fill: var(--blue) !important;
}
body .text-danger:not(#z) {
color: var(--red) !important;
}
body .text-danger:not(#z) > svg {
fill: var(--red) !important;
}
body .text-success:not(#z) {
color: var(--green) !important;
}
body .text-success:not(#z) > svg {
fill: var(--green) !important;
}
body .text-warning:not(#z) {
color: var(--orange) !important;
}
body .text-warning:not(#z) > svg {
fill: var(--orange) !important;
}
body .text-plain,
.light {
color: var(--light) !important;
}
body .text-secondary,
body .text-muted,
body .text-gl-muted,
body .text-tertiary {
color: var(--lighter) !important;
}
.cgray,
.description-block,
.help-block {
color: var(--lighter) !important;
}
[class*="gl-text-gray-"] {
color: var(--lighter) !important;
}
body .bg-light {
background-color: var(--darker) !important;
}
body .bg-danger {
background-color: var(--red) !important;
}
body .bg-secondary {
background-color: var(--darken) !important;
}
body .bg-success {
background-color: var(--green) !important;
}
body .bg-white,
body .bg-gray-light {
background-color: var(--dark) !important;
}
body .border-bottom,
body .bordered-box {
border-color: var(--darker) !important;
}
body .bordered-list > li,
body .unstyled-list > li {
border-color: var(--darker) !important;
}
html {
scrollbar-color: rgba(136, 136, 136, 0.188) rgba(136, 136, 136, 0.082);
}
::-webkit-scrollbar {
width: 12px;
}
::-webkit-scrollbar-track {
background: rgba(136, 136, 136, 0.082);
}
::-webkit-scrollbar-thumb {
background: rgba(136, 136, 136, 0.188);
}
body ::placeholder {
color: var(--lighter) !important;
}
body ::-webkit-input-placeholder {
color: var(--lighter) !important;
}
body .page-wrap {
background-color: var(--t) !important;
}
body .page-wrap .brand-holder p {
color: var(--lighter) !important;
}
body .page-wrap hr.footer-fixed {
padding-top: 24px;
margin-bottom: 0;
background-color: var(--darken) !important;
}
body .page-wrap hr.footer-fixed + .footer-container {
background-color: var(--t) !important;
}
body .page-wrap .login-box,
body .page-wrap .signup-box,
body .page-wrap .omniauth-container {
border-radius: 4px;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
box-shadow: inset 0 0 0 1px var(--darker) !important;
}
body .page-wrap .login-box .omniauth-btn,
body .page-wrap .signup-box .omniauth-btn,
body .page-wrap .omniauth-container .omniauth-btn {
background-color: var(--dark) !important;
}
body .page-wrap .login-box .omniauth-divider::before,
body .page-wrap .signup-box .omniauth-divider::before,
body .page-wrap .omniauth-container .omniauth-divider::before,
body .page-wrap .login-box .omniauth-divider::after,
body .page-wrap .signup-box .omniauth-divider::after,
body .page-wrap .omniauth-container .omniauth-divider::after {
border-color: var(--darker) !important;
}
body .page-wrap .login-box input.form-control,
body .page-wrap .signup-box input.form-control,
body .page-wrap .omniauth-container input.form-control {
background-color: var(--dark) !important;
}
body .page-wrap .login-box .btn-success,
body .page-wrap .signup-box .btn-success,
body .page-wrap .omniauth-container .btn-success,
body .page-wrap .login-box .btn-register,
body .page-wrap .signup-box .btn-register,
body .page-wrap .omniauth-container .btn-register {
color: var(--white) !important;
border-color: var(--green) !important;
background-color: var(--green) !important;
}
body .page-wrap .new-session-tabs {
border: 1px solid var(--darker) !important;
border-bottom: none !important;
box-shadow: none !important;
background-color: var(--dark) !important;
}
body .page-wrap .new-session-tabs li:not(.active),
body .page-wrap .new-session-tabs li:not(.active):hover a:not(.active) {
border-color: var(--darker) !important;
background-color: var(--t) !important;
}
body .page-wrap .new-session-tabs li a.active {
border-radius: 0;
border-color: var(--t) !important;
background-color: var(--darken) !important;
box-shadow: 0 1px var(--darken);
}
body .page-wrap .new-session-tabs + .tab-content > div {
border-radius: 0 0 4px 4px !important;
}
.fa {
color: var(--lighter) !important;
}
.fa.fa-triangle,
.fa.merge-icon {
color: var(--orange) !important;
}
.fa.fa-bars:not(#z) {
color: var(--light) !important;
}
.fa.checkmark {
color: var(--green) !important;
}
.fa.fa-certificate {
color: var(--accent) !important;
}
.fa[class*="paused"] {
color: var(--red) !important;
}
.fa[class*="online"] {
color: var(--green) !important;
}
svg.s16,
svg.s24,
svg.icon {
fill: var(--lighter) !important;
}
svg[class][data-testid*="status_"] {
fill: currentColor !important;
}
.deleted-icon > svg {
fill: var(--orange) !important;
}
.closed-icon svg {
fill: var(--red) !important;
}
.created-icon svg {
fill: var(--cyan) !important;
}
.opened-icon svg {
fill: var(--green) !important;
}
.accepted-icon svg {
fill: var(--cyan) !important;
}
.deleted-icon svg {
fill: var(--yellow) !important;
}
.imported-icon svg {
fill: var(--violet) !important;
}
.commented-on-icon svg {
fill: var(--blue) !important;
}
svg[id*="addition-solid"] {
fill: var(--green) !important;
}
.commit-icon svg {
fill: var(--lighter) !important;
}
svg.ic-eye-slash {
fill: var(--orange) !important;
}
svg.text-success {
fill: var(--green) !important;
}
svg.text-danger {
fill: var(--red) !important;
}
svg.ic-file-addition,
svg.ic-file-addition-solid {
fill: var(--green) !important;
}
svg.ic-file-modified,
svg.ic-file-modified-solid {
fill: var(--blue) !important;
}
svg.ic-file-deletion,
svg.ic-file-deletion-solid {
fill: var(--red) !important;
}
[id*="status_"] [fill="#FFF"] {
fill: var(--darken) !important;
}
svg.issue-token-state-icon-open {
fill: var(--green) !important;
}
svg.issue-token-state-icon-closed {
fill: var(--blue) !important;
}
svg.merge-request-status.open {
color: var(--green) !important;
fill: var(--green) !important;
}
svg.merge-request-status.closed {
color: var(--red) !important;
fill: var(--red) !important;
}
.ci-status {
color: var(--light) !important;
border-color: var(--darker);
background-color: var(--dark) !important;
}
.ci-status.ci-success {
color: var(--green) !important;
border-color: var(--green) !important;
}
.ci-status.ci-info,
.ci-status.ci-running {
color: var(--blue) !important;
border-color: var(--blue) !important;
}
.ci-status.ci-failed {
color: var(--red) !important;
border-color: var(--red) !important;
}
.ci-status.ci-pending,
.ci-status.ci-waiting-for-resource,
.ci-status.ci-failed-with-warnings,
.ci-status.ci-success-with-warnings {
color: var(--orange) !important;
border-color: var(--orange) !important;
}
.ci-status.ci-created,
.ci-status.ci-skipped {
color: var(--light) !important;
border-color: var(--lighter) !important;
}
.ci-status.ci-canceled,
.ci-status.ci-disabled,
.ci-status.ci-scheduled,
.ci-status.ci-manual {
color: var(--lighter) !important;
border-color: var(--lighter) !important;
}
.ci-status-icon-success[class*="dropdown"] {
border-color: var(--green) !important;
background-color: var(--darken) !important;
}
.ci-status-icon-success:not(#z) svg,
.ci-status-icon-success[data-toggle] svg {
fill: var(--green) !important;
}
.ci-status-icon-success svg {
border-color: var(--green) !important;
}
.ci-status-icon-running[class*="dropdown"],
.ci-status-icon-preparing[class*="dropdown"] {
border-color: var(--blue) !important;
background-color: var(--darken) !important;
}
.ci-status-icon-running:not(#z) svg,
.ci-status-icon-preparing:not(#z) svg,
.ci-status-icon-running[data-toggle] svg,
.ci-status-icon-preparing[data-toggle] svg {
fill: var(--blue) !important;
}
.ci-status-icon-running svg,
.ci-status-icon-preparing svg {
border-color: var(--blue) !important;
}
.ci-status-icon-failed[class*="dropdown"] {
border-color: var(--red) !important;
background-color: var(--darken) !important;
}
.ci-status-icon-failed:not(#z) svg,
.ci-status-icon-failed[data-toggle] svg {
fill: var(--red) !important;
}
.ci-status-icon-failed svg {
border-color: var(--red) !important;
}
.ci-status-icon-pending[class*="dropdown"],
.ci-status-icon-waiting-for-resource[class*="dropdown"],
.ci-status-icon-failed-with-warnings[class*="dropdown"],
.ci-status-icon-success-with-warnings[class*="dropdown"] {
border-color: var(--orange) !important;
background-color: var(--darken) !important;
}
.ci-status-icon-pending:not(#z) svg,
.ci-status-icon-waiting-for-resource:not(#z) svg,
.ci-status-icon-failed-with-warnings:not(#z) svg,
.ci-status-icon-success-with-warnings:not(#z) svg,
.ci-status-icon-pending[data-toggle] svg,
.ci-status-icon-waiting-for-resource[data-toggle] svg,
.ci-status-icon-failed-with-warnings[data-toggle] svg,
.ci-status-icon-success-with-warnings[data-toggle] svg {
fill: var(--orange) !important;
}
.ci-status-icon-pending svg,
.ci-status-icon-waiting-for-resource svg,
.ci-status-icon-failed-with-warnings svg,
.ci-status-icon-success-with-warnings svg {
border-color: var(--orange) !important;
}
.ci-status-icon-created[class*="dropdown"],
.ci-status-icon-skipped[class*="dropdown"] {
border-color: var(--lighter) !important;
background-color: var(--darken) !important;
}
.ci-status-icon-created:not(#z) svg,
.ci-status-icon-skipped:not(#z) svg,
.ci-status-icon-created[data-toggle] svg,
.ci-status-icon-skipped[data-toggle] svg {
fill: var(--light) !important;
}
.ci-status-icon-created svg,
.ci-status-icon-skipped svg {
border-color: var(--light) !important;
}
.ci-status-icon-manual[class*="dropdown"],
.ci-status-icon-canceled[class*="dropdown"],
.ci-status-icon-disabled[class*="dropdown"],
.ci-status-icon-scheduled[class*="dropdown"],
.ci-status-icon-not-found[class*="dropdown"] {
border-color: var(--lighter) !important;
background-color: var(--darken) !important;
}
.ci-status-icon-manual:not(#z) svg,
.ci-status-icon-canceled:not(#z) svg,
.ci-status-icon-disabled:not(#z) svg,
.ci-status-icon-scheduled:not(#z) svg,
.ci-status-icon-not-found:not(#z) svg,
.ci-status-icon-manual[data-toggle] svg,
.ci-status-icon-canceled[data-toggle] svg,
.ci-status-icon-disabled[data-toggle] svg,
.ci-status-icon-scheduled[data-toggle] svg,
.ci-status-icon-not-found[data-toggle] svg {
fill: var(--lighter) !important;
}
.ci-status-icon-manual svg,
.ci-status-icon-canceled svg,
.ci-status-icon-disabled svg,
.ci-status-icon-scheduled svg,
.ci-status-icon-not-found svg {
border-color: var(--lighter) !important;
}
@supports not (-moz-user-select: none) {
body .created-icon,
body .opened-icon,
body .ic-upload,
body .gl-icon[data-testid*="status_"],
body [class*="ci-status"] svg {
filter: invert(0.85) hue-rotate(180deg) saturate(100%);
}
body :not(#z) .ci-status-icon-created svg,
body :not(#z) .ci-status-icon-skipped svg {
fill: #333 !important;
}
}
body .bs-callout {
border-radius: 3px;
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
body .bs-callout a {
color: var(--accent) !important;
}
body .bs-callout strong {
color: inherit !important;
}
body .bs-callout-warning {
border-color: var(--orange) !important;
background-color: var(--darken) !important;
}
body .bs-callout-success {
border-color: var(--green) !important;
background-color: var(--darken) !important;
}
body .bs-callout-danger {
border-color: var(--red) !important;
background-color: var(--darken) !important;
}
body .bs-callout-info {
border-color: var(--blue) !important;
background-color: var(--darken) !important;
}
body .bs-callout .btn-default,
body .bs-callout code:not([class]) {
background-color: var(--dark) !important;
}
body .bs-callout.help-callout,
body .bs-callout.shared-runners-description {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
body .bs-callout.help-callout code,
body .bs-callout.shared-runners-description code,
body .bs-callout.help-callout .btn-default,
body .bs-callout.shared-runners-description .btn-default {
background-color: var(--dark) !important;
}
.user-callout.promotion-callout {
background-color: var(--darken) !important;
}
.user-callout.promotion-callout .bordered-box {
background-color: var(--darken) !important;
}
.user-callout.promotion-callout.center {
padding-bottom: 10px;
border: 1px solid var(--darker);
border-radius: 4px;
}
.user-callout.promotion-callout.js-gold-trial-callout > div {
margin: 0 -16px;
}
body .bs-callout.gcp-signup-offer {
color: var(--light) !important;
border-color: var(--blue) !important;
}
body .border-section {
border-color: var(--darker) !important;
}
body .scrolling-tabs-container .fade-right {
background: linear-gradient(to left, var(--darken) 45%, var(--t));
}
body .scrolling-tabs-container .fade-left {
background: linear-gradient(to right, var(--darken) 45%, var(--t));
}
body .toggle-mobile-nav + .breadcrumbs-links {
border-color: var(--darker) !important;
}
.fork-thumbnail {
background-color: var(--dark) !important;
}
.fork-thumbnail:hover:not(.disabled),
.fork-thumbnail.forked {
background-color: var(--darken) !important;
}
body .issue-sticky-header {
top: 50px !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
body .preview.ui-dark,
body .preview.gl-dark {
border-color: var(--darker) !important;
}
input:hover {
box-shadow: none !important;
}
input[type="radio"],
input[type="checkbox"],
input[type="radio"]:focus,
input[type="checkbox"]:focus,
input[type="radio"]:hover:active,
input[type="checkbox"]:hover:active,
input[type="radio"]:disabled,
input[type="checkbox"]:disabled,
input[type="radio"]:hover:active:disabled,
input[type="checkbox"]:hover:active:disabled {
-webkit-appearance: none !important;
-moz-appearance: none !important;
appearance: none !important;
cursor: pointer !important;
height: 1rem !important;
width: 1rem !important;
border: 1px solid var(--darker) !important;
background-size: cover !important;
color: var(--light) !important;
background-color: var(--darken) !important;
}
input[type="radio"]:checked {
background-image: url('data:image/svg+xml;utf8,') !important;
border-radius: 100% !important;
}
input[type="radio"]:checked:checked {
border-color: var(--accent) !important;
background-color: var(--accent) !important;
}
input[type="checkbox"]:checked {
background-image: url('data:image/svg+xml;utf8,') !important;
border-color: var(--accent) !important;
background-color: var(--accent) !important;
}
input[type="checkbox"]:indeterminate {
background-image: url('data:image/svg+xml;utf8,') !important;
border-color: var(--red) !important;
background-color: var(--red) !important;
}
[aria-sort="ascending"] {
background-image: url('data:image/svg+xml;utf8,') !important;
}
[aria-sort="descending"] {
background-image: url('data:image/svg+xml;utf8,') !important;
}
.with-performance-bar .production {
background-color: var(--dark) !important;
box-shadow: inset 0 -1px var(--darker) !important;
}
.with-performance-bar .backtrace-row {
border-radius: 4px;
}
.with-performance-bar select {
border: 1px solid var(--darker) !important;
color: var(--light) !important;
background-color: var(--darken) !important;
}
.with-performance-bar .layout-page,
.with-performance-bar .content-wrapper {
margin-top: 85px !important;
}
.navbar {
min-height: 50px;
}
.navbar-gitlab,
.navbar.navbar-empty {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.navbar .title > a {
margin: 4px 2px 4px -8px !important;
}
.navbar .title > a[href="/"]:hover,
.navbar .title > a[href="/"]:focus {
background-color: var(--darker) !important;
}
.navbar .title .logo-text svg {
fill: var(--light) !important;
}
.navbar .canary-badge > .badge {
color: var(--white) !important;
border-color: var(--green) !important;
background-color: var(--green) !important;
}
.navbar-sub-nav,
.navbar-nav {
color: var(--lighter) !important;
}
.navbar-sub-nav > li > button,
.navbar-nav > li > button,
.navbar-sub-nav > li > a,
.navbar-nav > li > a {
transition: 0.2s ease;
}
.navbar-sub-nav > li > button[data-toggle],
.navbar-nav > li > button[data-toggle],
.navbar-sub-nav > li > a[data-toggle],
.navbar-nav > li > a[data-toggle] {
color: var(--lighter) !important;
}
.navbar-sub-nav > li > button:hover:not([aria-expanded="true"]),
.navbar-nav > li > button:hover:not([aria-expanded="true"]),
.navbar-sub-nav > li > a:hover:not([aria-expanded="true"]),
.navbar-nav > li > a:hover:not([aria-expanded="true"]) {
color: var(--light) !important;
background-color: var(--darker) !important;
}
.navbar-sub-nav > li.active > button,
.navbar-nav > li.active > button,
.navbar-sub-nav > li.active:hover > button,
.navbar-nav > li.active:hover > button,
.navbar-sub-nav > li.show > button,
.navbar-nav > li.show > button,
.navbar-sub-nav > li.active > a,
.navbar-nav > li.active > a,
.navbar-sub-nav > li.active:hover > a,
.navbar-nav > li.active:hover > a,
.navbar-sub-nav > li.show > a,
.navbar-nav > li.show > a {
color: var(--light) !important;
background-color: var(--dark) !important;
}
.navbar-sub-nav > li .caret-down,
.navbar-nav > li .caret-down {
fill: var(--lighter) !important;
}
.navbar-sub-nav [data-toggle="dropdown"]::before,
.navbar-nav [data-toggle="dropdown"]::before,
.navbar-sub-nav button.menu-item::before,
.navbar-nav button.menu-item::before {
content: unset !important;
}
.navbar .header-help li:first-child > a {
margin-top: 0.25rem;
}
.navbar .header-help li:first-child::before {
content: "🌚 " var(--note);
display: block;
padding: 4px 12px 6px;
border-bottom: 1px solid var(--darker);
color: var(--light);
}
.navbar .header-user-avatar {
border: none !important;
color: var(--lighter) !important;
background-color: var(--t) !important;
border-radius: var(--avatar);
}
.navbar .btn-sign-in,
.navbar .btn-sign-in:hover {
color: var(--lighter) !important;
background-color: var(--dark) !important;
}
.nav-sidebar {
top: 50px;
}
.layout-page,
.content-wrapper {
margin-top: 50px;
}
.navbar .show > .dropdown-menu {
margin-top: 8px !important;
}
.navbar .search-input-container .dropdown-menu {
margin-top: 14px !important;
}
.gl-accessibility:focus {
color: var(--light) !important;
background-color: var(--darker) !important;
}
.navbar-toggler {
border-left-color: var(--darker) !important;
}
.navbar-toggler svg {
fill: var(--lighter) !important;
}
.navbar .search-form > form {
box-shadow: none !important;
}
.navbar .search-form:hover > form,
.navbar .search-form.search-active > form {
border-color: var(--blue) !important;
}
.navbar-gitlab {
box-shadow: none !important;
}
.navbar svg.s16[data-testid="angle-down-icon"] {
width: 11px;
}
table:not(.code):not(#z) {
border-spacing: 0;
border-collapse: unset;
border-radius: 4px;
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
table:not(.code):not(#z):not(.b-table-stacked) {
display: table;
}
@media (max-width: 0) {
table:not(.code):not(#z).b-table-stacked-xs {
display: block;
}
}
@media (max-width: 576px) {
table:not(.code):not(#z).b-table-stacked-sm {
display: block;
}
}
@media (max-width: 768px) {
table:not(.code):not(#z).b-table-stacked-md {
display: block;
}
}
@media (max-width: 992px) {
table:not(.code):not(#z).b-table-stacked-lg {
display: block;
}
}
@media (max-width: 1200px) {
table:not(.code):not(#z).b-table-stacked-xl {
display: block;
}
}
@media (max-width: 991.98px) {
table:not(.code):not(#z)[class*="table-stacked"] {
border-color: var(--t) !important;
background-color: var(--t) !important;
}
table:not(.code):not(#z)[class*="table-stacked"] tr > td {
border-top: none !important;
border-bottom: 1px solid var(--darker) !important;
}
table:not(.code):not(#z)[class*="table-stacked"] td {
background-color: var(--dark) !important;
border-left: 1px solid var(--darker) !important;
}
table:not(.code):not(#z)[class*="table-stacked"] td:first-child {
border-radius: 4px 4px 0 0 !important;
border-top: 1px solid var(--darker) !important;
}
table:not(.code):not(#z)[class*="table-stacked"] td:last-child {
border-radius: 0 0 4px 4px !important;
}
table:not(.code):not(#z)[class*="table-stacked"] td:hover {
background-color: var(--bb) !important;
}
}
table:not(.code):not(#z) thead tr:first-child th:first-child {
border-top-left-radius: 4px;
}
table:not(.code):not(#z) thead tr:first-child th:last-child {
border-top-right-radius: 4px;
}
table:not(.code):not(#z) thead tr th {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
border-bottom-width: 0px;
}
table:not(.code):not(#z) thead tr th:not(:first-child):not(last-child) {
border-left: none;
}
table:not(.code):not(#z) tbody {
background-color: var(--t) !important;
}
table:not(.code):not(#z) tbody tr:not(:first-child):not(last-child) td {
border-top: none;
}
table:not(.code):not(#z) tbody tr td {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--t) !important;
}
table:not(.code):not(#z) tbody tr td:not(:first-child):not(last-child) {
border-left: none;
}
table:not(.code):not(#z) tbody tr td a {
color: var(--accent);
}
table:not(.code):not(#z) tbody tr:last-child td:last-child {
border-radius: 0 0 4px 0;
}
table:not(.code):not(#z) tbody tr:last-child td:first-child {
border-radius: 0 0 0 4px;
}
table:not(.code):not(#z) tbody tr:last-child td:first-child:last-child {
border-radius: 0 0 4px 4px;
}
table:not(.code):not(#z):not(.shortcut-mappings) tbody > tr > th {
border-bottom-width: 1px !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
table:not(.code):not(#z):not(.shortcut-mappings)
tbody
> tr:not(:first-child)
> th {
border-top-width: 0px !important;
}
table:not(.code):not(#z):not(.shortcut-mappings)
tbody
> tr:first-child
> th:not(:first-child):not(last-child) {
border-left: none;
}
table:not(.code):not(#z):not(.shortcut-mappings)
tbody
> tr:first-child
> th:first-child {
border-radius: 4px 0 0 0;
}
table:not(.code):not(#z):not(.shortcut-mappings)
tbody
> tr:first-child
> th:last-child {
border-radius: 0 4px 0 0;
}
table:not(.code):not(#z):not(.shortcut-mappings)
tbody
> tr:first-child
> th:first-child:last-child {
border-radius: 4px 4px 0 0;
}
table:not(.code):not(#z):not(.shortcut-mappings)
tbody
> tr:last-child
> th:first-child {
border-radius: 0 0 0 4px;
}
table:not(.code):not(#z):not(.shortcut-mappings)
tbody
> tr:first-child:last-child
> th:first-child {
border-radius: 4px 0 0 4px;
}
table:not(.code):not(#z) tbody:first-child > tr:first-child > td:first-child {
border-radius: 4px 0 0 0;
}
table:not(.code):not(#z) tbody:first-child > tr:first-child > td:last-child {
border-radius: 0 4px 0 0;
}
table:not(.code):not(#z)
tbody:first-child
> tr:first-child:last-child
> td:first-child {
border-radius: 4px 0 0 4px;
}
table:not(.code):not(#z)
tbody:first-child
> tr:first-child:last-child
> td:last-child {
border-radius: 0 4px 4px 0;
}
table:not(.code):not(#z) > tr td {
border-color: var(--darker) !important;
}
table:not(.code):not(#z) > tr:first-child > td {
border-top: none;
}
table:not(.code):not(#z).grid-all > caption {
color: var(--lighter) !important;
}
table:not(.code):not(#z).grid-all > thead > tr > th:first-child {
border-left: 1px solid var(--darker) !important;
}
table:not(.code):not(#z).grid-all > thead > tr > th:last-child {
border-right: 1px solid var(--darker) !important;
}
table:not(.code):not(#z).grid-all > tbody > tr > th:first-child {
border-top: none !important;
border-bottom: 1px solid var(--darker) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
table:not(.code):not(#z).grid-all > tbody > tr > td:last-child {
border-right: 1px solid var(--darker) !important;
}
table:not(.code):not(#z).grid-all > tbody > tr:first-child > th {
border-top: 1px solid var(--darker) !important;
}
table:not(.code):not(#z).grid-all > tbody > tr:last-child > th {
border-radius: 0 0 0 4px;
}
table:not(.code):not(#z).table-striped,
table:not(.code):not(#z).active-tokens,
table:not(.code):not(#z).pipeline-project-metrics {
border: 1px solid var(--darker);
}
table:not(.code):not(#z).table-striped thead > tr > th,
table:not(.code):not(#z).active-tokens thead > tr > th,
table:not(.code):not(#z).pipeline-project-metrics thead > tr > th {
border-top: none;
}
table:not(.code):not(#z).table-striped tbody tr:nth-of-type(2n + 1),
table:not(.code):not(#z).active-tokens tbody tr:nth-of-type(2n + 1),
table:not(.code):not(#z).pipeline-project-metrics tbody tr:nth-of-type(2n + 1) {
background-color: var(--bb) !important;
}
table:not(.code):not(#z).table-striped tbody tr > td,
table:not(.code):not(#z).active-tokens tbody tr > td,
table:not(.code):not(#z).pipeline-project-metrics tbody tr > td {
border-top: 1px solid var(--darker) !important;
}
table:not(.code):not(#z).table-striped
tbody
tr:not(:first-child)
> td.issues-analytics-td,
table:not(.code):not(#z).active-tokens
tbody
tr:not(:first-child)
> td.issues-analytics-td,
table:not(.code):not(#z).pipeline-project-metrics
tbody
tr:not(:first-child)
> td.issues-analytics-td,
table:not(.code):not(#z).table-striped
tbody
tr:not(:first-child)
> td.issues-analytics-td
~ td,
table:not(.code):not(#z).active-tokens
tbody
tr:not(:first-child)
> td.issues-analytics-td
~ td,
table:not(.code):not(#z).pipeline-project-metrics
tbody
tr:not(:first-child)
> td.issues-analytics-td
~ td {
border-top: none !important;
}
table:not(.code):not(#z).gl-table {
border: 1px solid var(--darker);
}
table:not(.code):not(#z).gl-table tbody > tr:first-child > td {
border-top: 1px solid var(--darker);
}
table:not(.code):not(#z).gl-table tbody > tr:last-child > td {
border-bottom: none;
}
@media (min-width: 991.98px) {
table:not(.code):not(#z).gl-table tbody > tr:hover > td {
background-color: var(--bb) !important;
}
}
table:not(.code):not(#z).tree-table {
border: 1px solid var(--darker);
}
table:not(.code):not(#z).tree-table thead tr,
table:not(.code):not(#z).tree-table thead tr th {
border-top: none !important;
}
table:not(.code):not(#z).tree-table thead tr > th:first-child {
border-top-left-radius: 3px !important;
}
table:not(.code):not(#z).tree-table thead tr > th:last-child {
border-top-right-radius: 3px !important;
}
table:not(.code):not(#z).tree-table tbody td {
border-color: var(--darker) !important;
}
table:not(.code):not(#z).tree-table tbody tr > td {
border-top: 1px solid var(--darker) !important;
border-bottom: none !important;
}
table:not(.code):not(#z).tree-table tbody tr.selected td {
background-color: var(--darken) !important;
}
table:not(.code):not(#z).tree-table tbody tr:hover:not(.selected) td {
background-color: var(--bb) !important;
}
table:not(.code):not(#z).tree-table tbody tr:last-child td:not(#z),
table:not(.code):not(#z).tree-table tbody tr:last-child:first-child td:not(#z) {
border-bottom: none !important;
}
table:not(.code):not(#z).tree-table tbody:first-child > tr:first-child td {
border-top: none !important;
}
.tree-item-file-name,
.tree-item-file-name a,
.tree-item-file-name i {
color: var(--light) !important;
}
.tree-commit,
.tree-commit-link {
color: var(--lighter) !important;
}
table:not(.code):not(#z).table.m-0 {
margin-bottom: 8px !important;
border: 1px solid var(--darker);
}
table:not(.code):not(#z).table.m-0 tbody > tr:last-child:not(#z) > td {
border-bottom: none !important;
}
table:not(.code):not(#z).push-pull-table {
border: 1px solid var(--darker);
}
table:not(.code):not(#z).push-pull-table thead tr th {
border-top: none !important;
}
.vulnerability-list thead th {
box-shadow: 0 1px var(--darker) !important;
}
.gl-responsive-table-row {
color: var(--lighter) !important;
}
.gl-responsive-table-row:not(:last-child) {
border-color: var(--darker) !important;
}
.gl-responsive-table-row-clickable:hover {
background-color: var(--darken) !important;
}
.gl-responsive-table-row.bg-gray-light {
background-color: var(--bb) !important;
}
.gl-responsive-table-row.bg-gray-light:last-child {
border-bottom: 1px solid var(--darker) !important;
}
.ci-table {
margin-top: 10px;
border: 1px solid var(--darker);
color: var(--red) !important;
background-color: var(--dark) !important;
border-radius: 4px;
}
.ci-table [class*="header"] {
padding: 12px 16px;
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
border-radius: 3px 3px 0 0;
}
.ci-table [class$="table-row"] {
padding: 8px 16px;
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.ci-table [class$="table-row"]:nth-last-child(2) {
border-bottom: none !important;
border-radius: 0 0 3px 3px;
}
.ci-table [class$="table-row"]:hover {
background-color: var(--bb) !important;
}
.ci-table .pipeline-actions {
padding-right: 16px;
}
.js-run-mr-pipeline {
margin-right: 16px;
}
.ci-table .sprite {
fill: var(--lighter) !important;
}
.ci-table > tbody > .build > td {
border-top: 1px solid var(--darker) !important;
}
.ci-table > tbody > .build:hover {
background-color: var(--bb) !important;
}
.ci-table .commit-sha,
.ci-table .gfm-commit {
color: var(--accent) !important;
}
.ci-table .ref-name,
.ci-table .pipeline-id,
.ci-table .table-mobile-header,
.ci-table .build-link,
.ci-table .build-name a {
color: var(--light) !important;
}
.ci-table .duration {
color: var(--lighter) !important;
}
.ci-table .duration svg path {
fill: var(--lighter) !important;
}
.ci-table.pipeline tbody > tr > th {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--bb) !important;
}
.ci-table.pipeline tbody > tr > td {
border-top: 1px solid var(--darker) !important;
}
.ci-table path[fill="#FFF"] {
fill: var(--darken) !important;
}
.ci-table .build.retried {
background-color: var(--bb) !important;
}
[class*="col-"] > table.table {
border: 1px solid var(--darker);
}
[class*="col-"] > table.table thead tr th {
border-top: none;
}
[class*="col-"] > table.table tbody tr td {
border-top: 1px solid var(--darker) !important;
}
[class*="col-"] > table.table tbody tr:hover {
background-color: var(--bb) !important;
}
.ci-variable-table table colgroup col:nth-child(7) {
width: 50px !important;
}
.ci-variable-table table tr th:first-child,
.ci-variable-table table tr td:first-child {
padding-left: 16px;
}
table:not(.code):not(#z).import-table {
border: 1px solid var(--darker) !important;
}
table:not(.code):not(#z).import-table thead th {
border: none !important;
background-color: var(--darken) !important;
}
table:not(.code):not(#z).import-table tbody tr:hover td {
background-color: var(--bb) !important;
}
table:not(.code):not(#z).import-table tbody td {
border-top: 1px solid var(--darker) !important;
}
.import-slash-divider {
border-color: var(--darker) !important;
background-color: var(--bb) !important;
}
.save-project-loader {
color: var(--lighter) !important;
}
table:not(.code):not(#z) td.d-sm-block {
display: table-cell !important;
}
[class*="dropdown-menu"] {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
[class*="dropdown-menu"].show {
box-shadow: var(--bshadow);
}
[class*="dropdown-menu"] .dropdown-info-note {
color: var(--lighter) !important;
}
[class*="dropdown-menu"] strong,
[class*="dropdown-menu"] .bold,
[class*="dropdown-menu"] .text {
color: var(--light) !important;
}
[class*="dropdown-menu"] span[class*="-text"] {
z-index: 1;
color: var(--light) !important;
}
[class*="dropdown-menu"] [class*="input-field"] {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
[class*="dropdown-menu"] [class*="input-field"]:focus {
border-color: var(--blue) !important;
}
[class*="dropdown-menu"] .dropdown-title,
[class*="dropdown-menu"] [class*="-header"] {
color: var(--light) !important;
border-color: var(--darker) !important;
}
[class*="dropdown-menu"] [class*="divider"],
[class*="dropdown-menu"] .separator {
border-color: var(--darker) !important;
background-color: var(--darker) !important;
}
[class*="dropdown-menu"] .border-top {
border-color: var(--darker) !important;
}
[class*="dropdown-menu"] li a,
[class*="dropdown-menu"] li button {
color: var(--lighter) !important;
}
[class*="dropdown-menu"] li a:hover,
[class*="dropdown-menu"] li button:hover,
[class*="dropdown-menu"] li a:active,
[class*="dropdown-menu"] li button:active,
[class*="dropdown-menu"] li a:focus,
[class*="dropdown-menu"] li button:focus {
color: var(--light) !important;
background-color: var(--darker) !important;
}
[class*="dropdown-menu"] li a.is-focused,
[class*="dropdown-menu"] li button.is-focused {
color: var(--light) !important;
background-color: var(--darker) !important;
}
[class*="dropdown-menu"] li a.is-active,
[class*="dropdown-menu"] li button.is-active {
color: var(--accent) !important;
}
[class*="dropdown-menu"] li .btn-success:hover {
color: var(--white) !important;
background-color: var(--green) !important;
}
[class*="dropdown-menu"] li.current-user {
color: var(--lighter) !important;
}
[class*="dropdown-menu"] li.current-user .bold,
[class*="dropdown-menu"] li.current-user .user-status {
color: var(--light) !important;
}
[class*="dropdown-menu"] button {
color: var(--lighter) !important;
}
[class*="dropdown-menu"] button[class*="-note-"]:not(#z):hover {
background-color: var(--darker) !important;
}
[class*="dropdown-menu"] button[class*="note-delete"]::before {
content: none;
}
[class*="dropdown-menu"] button:not(#z):not([class*="disable"]):hover {
color: var(--light);
background-color: var(--darker);
}
[class*="dropdown-menu"] .dropdown-tabs-list {
box-shadow: none !important;
}
[class*="dropdown-menu"] .dropdown-tab-item {
padding: 0 !important;
border-color: var(--darker) !important;
}
[class*="dropdown-menu"] .dropdown-tab-item a {
border-width: 1px !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
[class*="dropdown-menu"] .dropdown-tab-item a:hover {
color: var(--light) !important;
background-color: var(--t) !important;
}
[class*="dropdown-menu"] .dropdown-tab-item a.active {
color: var(--light) !important;
border-color: var(--t) !important;
background-color: var(--darken) !important;
}
[class*="dropdown-menu"] .dropdown-footer {
border-color: var(--darker) !important;
}
[class*="dropdown-menu"] .dropdown-loading {
background-color: var(--darken) !important;
opacity: 0.9;
}
.frequent-items-dropdown-sidebar {
border-color: var(--darker) !important;
}
.frequent-items-dropdown-sidebar a {
color: var(--light) !important;
}
.frequent-items-dropdown-sidebar a:hover {
background-color: var(--darker) !important;
}
.frequent-items-dropdown-content ul li:hover a {
background-color: var(--darker) !important;
}
.frequent-items-dropdown-content [class*="-item-title"] {
color: var(--light) !important;
}
.frequent-items-dropdown-content [class*="-namespace"] {
color: var(--lighter) !important;
}
.frequent-items-dropdown-container .section-header,
.frequent-items-dropdown-container .section-empty {
color: var(--lighter) !important;
}
[class*="dropdown-menu"][class*="-tabs"] p {
color: var(--lighter) !important;
}
[class*="dropdown-menu"][class*="-tabs"] .btn-link:not(#z) {
background-color: var(--t) !important;
}
[class*="dropdown-menu"][class*="-tabs"] .btn-link:not(#z):hover {
background-color: var(--darker) !important;
}
.select2-highlighted .select2-result-label {
color: var(--light) !important;
background-color: var(--darker) !important;
}
.select2-result-label {
color: var(--light) !important;
}
.select2-choice,
.select2-choices {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.select2-arrow::after {
color: var(--lighter) !important;
}
.select2-match {
color: var(--accent) !important;
}
.select2-drop {
color: var(--lighter) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
box-shadow: var(--bshadow);
}
.select2-input:not(#z) {
font-family: var(--ui-font) !important;
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--t) !important;
}
.select2-container-disabled > a {
background-color: var(--darker) !important;
}
.select2-container-disabled .select2-arrow {
background-color: var(--t) !important;
}
[class*="dropdown-menu"][class*="big-pipe"]::before,
[class*="dropdown-menu"][class*="big-pipe"]::after {
border-color: var(--t) !important;
}
[class*="dropdown-menu"][class*="mini-pipe"]::before,
[class*="dropdown-menu"][class*="mini-pipe"]::after {
border-color: var(--t) !important;
}
[class*="dropdown-menu"] [class*="counter-badge"] {
font-weight: normal;
color: var(--lighter) !important;
}
.gl-new-dropdown .btn {
box-shadow: none !important;
}
.gl-new-dropdown .btn.dropdown-toggle[id*="15"] {
padding: 8px 8px 8px 10px !important;
}
.gl-new-dropdown .btn + ul [class*="text-pri"] {
color: var(--light) !important;
}
.gl-new-dropdown .btn + ul [class*="text-sec"] {
color: var(--lighter) !important;
}
.gl-new-dropdown .btn.dropdown-toggle-split::after {
filter: invert(0.7) !important;
}
.droplab-dropdown .form-control {
background-color: var(--dark) !important;
}
.droplab-dropdown .menu-item:not(.disable-hover) {
color: var(--lighter) !important;
}
.droplab-dropdown .menu-item:not(.disable-hover):hover {
color: var(--light) !important;
background-color: var(--darker) !important;
}
.droplab-dropdown [class*="selected"] .menu-item,
.droplab-dropdown [class*="selected"] .menu-item .fa {
color: var(--light) !important;
}
.droplab-item-active:not(#z) button {
color: var(--light) !important;
background-color: var(--darker) !important;
}
.dropdown-menu-inner-title,
.dropdown-menu-inner-content {
background-color: var(--t) !important;
}
.dropdown-menu-inner-content {
color: var(--lighter) !important;
}
.dropdown-menu-user-link:not(:hover) strong,
.dropdown-menu-user-link:not(:hover) span {
color: var(--lighter) !important;
}
.dropdown-menu-user-name,
.dropdown-menu-user-full-name,
.dropdown-menu-user-username {
background-color: var(--t) !important;
}
[class*="dropdown-menu"]:not(#z) .dropdown-menu-close,
[class*="dropdown-menu"]:not(#z) .dropdown-menu-close:hover {
background-color: var(--t) !important;
}
[class*="dropdown-menu"]:not(#z) .dropdown-menu-close-icon {
background-color: var(--t) !important;
}
[data-page^="search:"] .dropdown-menu[class*="select"],
[data-page^="projects:"] .dropdown-menu[class*="select"],
[data-page^="dashboard:"] .dropdown-menu[class*="select"] {
max-height: 420px !important;
}
.btn {
z-index: 1;
position: relative;
}
.btn,
[data-toggle="dropdown"],
.btn-default {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.btn svg,
[data-toggle="dropdown"] svg,
.btn-default svg {
fill: var(--lighter) !important;
}
.btn.active > .fa {
color: var(--light) !important;
}
.btn:hover::before,
[data-toggle="dropdown"]:hover::before,
.btn-default:hover::before {
content: "";
background-color: rgba(136, 136, 136, 0.188);
}
.btn[id*="promotion"],
[data-toggle="dropdown"][id*="promotion"],
.btn-default[id*="promotion"] {
background-color: var(--t) !important;
}
.btn[id*="promotion"]::before,
[data-toggle="dropdown"][id*="promotion"]::before,
.btn-default[id*="promotion"]::before {
content: unset !important;
}
.active > [data-toggle="dropdown"]:not([class*="ci-status"]) svg,
.show > [data-toggle="dropdown"]:not([class*="ci-status"]) svg {
fill: var(--light) !important;
}
.btn.btn-xs,
.btn-xs.stat-text {
padding: 8px 10px;
background-color: var(--dark) !important;
}
.btn.btn-xs:not(#z).btn-primary,
.btn-xs.stat-text:not(#z).btn-primary {
color: var(--white) !important;
border-color: var(--accent) !important;
background-color: var(--accent) !important;
}
.git-clone-holder .form-control {
font-family: var(--mono-font) !important;
background-color: var(--dark) !important;
}
.btn[data-toggle="dropdown"].btn-link {
border-color: var(--t) !important;
background-color: var(--t) !important;
}
.btn::before,
[data-toggle="dropdown"]::before {
z-index: 0;
opacity: 0.2;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
transition: opacity 0.2s ease;
border-radius: inherit;
}
.btn:hover::before {
opacity: 0.35;
}
.btn.btn-remove,
.btn.btn-danger {
color: var(--white) !important;
border-color: var(--red) !important;
background-color: var(--red) !important;
}
.btn.btn-remove:not(.btn-inverted),
.btn.btn-danger:not(.btn-inverted) {
transition: opacity 0.2s ease;
}
.btn.btn-remove:not(.btn-inverted) .fa,
.btn.btn-danger:not(.btn-inverted) .fa {
color: var(--white) !important;
}
.btn.btn-remove:not(.btn-inverted) svg,
.btn.btn-danger:not(.btn-inverted) svg {
fill: var(--white) !important;
}
.btn.btn-remove:not(.btn-inverted):hover,
.btn.btn-danger:not(.btn-inverted):hover {
opacity: 0.8;
}
.btn.btn-remove.btn-inverted,
.btn.btn-danger.btn-inverted {
color: var(--red) !important;
border-color: var(--red) !important;
background-color: var(--dark) !important;
}
.btn.btn-remove.btn-inverted::before,
.btn.btn-danger.btn-inverted::before {
content: "";
background-color: var(--red) !important;
}
.btn.btn-remove.btn-inverted .fa,
.btn.btn-danger.btn-inverted .fa {
color: var(--red) !important;
}
.btn.btn-remove.btn-inverted svg,
.btn.btn-danger.btn-inverted svg {
fill: var(--red) !important;
}
.btn.btn-close,
.btn.btn-close-color,
.btn.btn-warning {
color: var(--orange) !important;
border-color: var(--orange) !important;
background-color: var(--dark) !important;
}
.btn.btn-close::before,
.btn.btn-close-color::before,
.btn.btn-warning::before {
content: "";
background-color: var(--orange) !important;
}
.btn.btn-close .fa,
.btn.btn-close-color .fa,
.btn.btn-warning .fa {
color: var(--orange) !important;
}
.btn.btn-close svg,
.btn.btn-close-color svg,
.btn.btn-warning svg {
fill: var(--orange) !important;
}
.btn.btn-success {
color: var(--white) !important;
border-color: var(--green) !important;
background-color: var(--green) !important;
}
.btn.btn-success:not(.btn-inverted) {
transition: opacity 0.2s ease;
}
.btn.btn-success:not(.btn-inverted) .fa {
color: var(--white) !important;
}
.btn.btn-success:not(.btn-inverted) svg {
fill: var(--white) !important;
}
.btn.btn-success:not(.btn-inverted):hover {
opacity: 0.8;
}
.btn.btn-success.btn-inverted {
color: var(--green) !important;
border-color: var(--green) !important;
background-color: var(--dark) !important;
}
.btn.btn-success.btn-inverted::before {
content: "";
background-color: var(--green) !important;
}
.btn.btn-success.btn-inverted .fa {
color: var(--green) !important;
}
.btn.btn-success.btn-inverted svg {
fill: var(--green) !important;
}
.btn.btn-success.js-new-release-btn:not(#z) {
color: var(--white) !important;
}
.btn.btn-primary,
.btn.btn-info {
color: var(--white) !important;
border-color: var(--blue) !important;
background-color: var(--blue) !important;
}
.btn.btn-primary:not(.btn-inverted),
.btn.btn-info:not(.btn-inverted) {
transition: opacity 0.2s ease;
}
.btn.btn-primary:not(.btn-inverted) .fa,
.btn.btn-info:not(.btn-inverted) .fa {
color: var(--white) !important;
}
.btn.btn-primary:not(.btn-inverted) svg,
.btn.btn-info:not(.btn-inverted) svg {
fill: var(--white) !important;
}
.btn.btn-primary:not(.btn-inverted):hover,
.btn.btn-info:not(.btn-inverted):hover {
opacity: 0.8;
}
.btn.btn-primary.btn-inverted,
.btn.btn-info.btn-inverted {
color: var(--blue) !important;
border-color: var(--blue) !important;
background-color: var(--dark) !important;
}
.btn.btn-primary.btn-inverted::before,
.btn.btn-info.btn-inverted::before {
content: "";
background-color: var(--blue) !important;
}
.btn.btn-primary.btn-inverted .fa,
.btn.btn-info.btn-inverted .fa {
color: var(--blue) !important;
}
.btn.btn-primary.btn-inverted svg,
.btn.btn-info.btn-inverted svg {
fill: var(--blue) !important;
}
.btn.btn-primary.new-gl-button,
.btn.btn-info.new-gl-button {
box-shadow: none !important;
}
.btn.btn-inverted-secondary {
color: var(--accent) !important;
border-color: var(--accent) !important;
}
.btn.btn-inverted-secondary::before {
content: "";
background-color: var(--accent) !important;
}
.btn.btn-secondary:focus,
.btn.btn-secondary.focus {
box-shadow: 0 0 0 0.2rem rgba(136, 136, 136, 0.063) !important;
}
.btn.gl-link[href] {
color: var(--light) !important;
}
.btn-link {
color: var(--accent) !important;
border-color: var(--t) !important;
background-color: var(--t) !important;
}
.btn.active {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darker) !important;
}
.btn-transparent:not(#z),
.btn-default-tertiary {
color: var(--lighter);
border-color: var(--t) !important;
background-color: var(--t) !important;
}
.btn-transparent:not(#z)::before,
.btn-default-tertiary::before {
content: unset;
}
.btn[disabled]:not(#z)::before,
.btn.disabled:not(#z)::before {
content: unset;
}
.btn[disabled]:not(#z),
.btn.disabled:not(#z),
.btn[disabled]:not(#z):hover,
.btn.disabled:not(#z):hover {
opacity: 0.5 !important;
color: var(--lighter) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.btn[disabled]:not(#z) .fa,
.btn.disabled:not(#z) .fa {
color: var(--lighter) !important;
}
.btn.award-control {
color: var(--lighter) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.btn.award-control.active,
.btn.award-control.is-active {
color: var(--accent) !important;
border-color: var(--accent) !important;
background-color: var(--darken) !important;
}
.btn.award-control.active::before,
.btn.award-control.is-active::before {
content: "";
background-color: var(--accent) !important;
}
.btn.gpg-status-box.invalid {
color: var(--lighter) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.btn.gpg-status-box.valid {
color: var(--green) !important;
border-color: var(--green) !important;
background-color: var(--darken) !important;
}
.status-box {
color: var(--white) !important;
}
.status-box-issue-closed,
.status-box-mr-merged {
background-color: var(--blue) !important;
}
.status-box-closed,
.status-box-mr-closed {
background-color: var(--red) !important;
}
.status-box-expired {
background-color: var(--orange) !important;
}
.status-box-upcoming {
color: var(--light) !important;
background-color: var(--darker) !important;
}
.status-box-open {
background-color: var(--green) !important;
}
.status-box > svg.s16 {
fill: var(--white) !important;
}
.input-group-append,
.input-group-prepend {
background-color: var(--t) !important;
}
.input-group-append > [class*="-text"],
.input-group-prepend > [class*="-text"] {
color: var(--light) !important;
border-color: var(--darker) !important;
}
.input-group-append > [class*="-text"]:not(.label-color-preview),
.input-group-prepend > [class*="-text"]:not(.label-color-preview) {
background-color: var(--bb) !important;
}
.project-repo-buttons .btn {
padding: 6px 10px;
}
.project-repo-buttons .count {
color: var(--light) !important;
}
.project-repo-buttons .count-badge-count {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.project-repo-buttons .count-badge,
.project-repo-buttons .btn-xs {
height: 32px !important;
font-size: 14px !important;
}
.project-repo-buttons .count-badge:last-child {
margin-right: 0 !important;
}
.text-expander {
padding: 2px 4px;
color: var(--lighter) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.text-expander.open {
color: var(--accent) !important;
background-color: var(--darker) !important;
}
.btn-missing,
.stat-text {
color: var(--lighter) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.provider-btn {
line-height: unset;
border-radius: 0 4px 4px 0;
color: var(--light) !important;
background-color: var(--darken) !important;
}
.provider-btn-group {
border-radius: 4px;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.provider-btn-image {
border-radius: 4px 0 0 4px;
border-color: var(--darker) !important;
background-color: var(--darker) !important;
}
.btn-link::before,
.btn-blank::before,
.btn-clipboard::before {
content: unset !important;
}
.btn.bg-transparent {
background-color: var(--t) !important;
}
.btn.gl-button {
border: 1px solid;
box-shadow: none !important;
}
.btn.gl-button.btn-dashed {
outline-color: var(--bb) !important;
}
.btn.gl-button.btn-dashed:active,
.btn.gl-button.btn-dashed:focus {
border-color: var(--blue) !important;
}
.label.label-monospace {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--bb) !important;
}
.label.scoped-label .fa-question-circle {
background-color: var(--t) !important;
}
.label.scoped-label .fa-question-circle[style*="#FFFFFF"] {
color: var(--white) !important;
}
.label.scoped-label .fa-question-circle[style*="#333333"] {
color: #000 !important;
}
.label-link,
.label-link .badge {
text-decoration: none !important;
}
.label-badge {
color: var(--light) !important;
}
.label-badge-blue {
color: var(--white) !important;
background-color: var(--blue) !important;
}
.label-badge-gray {
color: var(--lighter) !important;
background-color: var(--darken) !important;
}
.label-links a {
color: var(--accent) !important;
}
.label-action svg {
fill: var(--lighter) !important;
}
.label-subscribe-button {
font-weight: 400;
}
.label-lfs {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.badge.issues-count {
color: var(--white) !important;
background-color: var(--green) !important;
}
.badge.merge-requests-count {
color: var(--white) !important;
background-color: var(--orange) !important;
}
.badge.todos-count {
color: var(--white) !important;
background-color: var(--blue) !important;
}
.badge.badge-pill.badge-secondary {
color: var(--lighter) !important;
background-color: var(--darker) !important;
}
.badge.badge-pill.badge-secondary:hover {
color: var(--light) !important;
}
.badge-pill {
color: var(--lighter) !important;
background-color: var(--darker) !important;
}
.badge.badge-gray {
color: var(--light) !important;
background-color: var(--darken) !important;
}
.issue-count-badge,
.mr-count-badge,
.issue-count-badge + button,
.mr-count-badge + button {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.badge.color-label {
box-shadow: inset 0 0 0 1rem rgba(51, 51, 51, 0.439);
}
.badge.color-label:hover {
box-shadow: none !important;
}
.badge.color-label[style*="color: #333333"] {
color: #000 !important;
box-shadow: inset 0 0 0 1rem rgba(51, 51, 51, 0.145);
}
.badge-primary,
.badge-info,
.badge-active {
color: var(--white) !important;
background-color: var(--blue) !important;
}
.badge-light,
.badge-secondary,
.badge-inactive {
color: var(--lighter) !important;
background-color: var(--darken) !important;
}
.badge-warning {
color: var(--white) !important;
background-color: var(--orange) !important;
}
.badge-success {
color: var(--white) !important;
background-color: var(--green) !important;
}
.badge-danger {
color: var(--white) !important;
background-color: var(--red) !important;
}
.badge-dark {
color: var(--light) !important;
background-color: var(--darker) !important;
}
.form-control,
.search form {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
border: 1px solid var(--darker) !important;
}
.form-control:focus,
.search form:focus,
.form-control.focus,
.search form.focus {
border-color: var(--blue) !important;
box-shadow: 0 0 0.4rem -0.2rem var(--blue) !important;
}
.form-control[disabled="disabled"]:not(#z),
.search form[disabled="disabled"]:not(#z) {
opacity: 0.5;
}
.navbar .form-control,
.navbar .search form {
background-color: var(--dark) !important;
}
.top-area .form-control,
.top-area .search form {
height: 35px;
}
.form-control #search,
.search form #search {
color: var(--light) !important;
background-color: var(--t) !important;
box-shadow: none !important;
}
.form-control #search ~ [class*="dropdown-menu"] .is-active,
.search form #search ~ [class*="dropdown-menu"] .is-active {
color: var(--light) !important;
}
.dropdown-content-faded-mask::after {
background: linear-gradient(to top, var(--darken), var(--t)) !important;
}
.form-control .search-icon,
.search form .search-icon {
fill: var(--lighter) !important;
}
.form-actions {
border-color: var(--darker) !important;
background-color: var(--t) !important;
}
.form-control.select-control,
.search form.select-control {
background-color: var(--darken) !important;
}
.atwho-view {
color: var(--lighter) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
box-shadow: var(--bshadow);
}
.atwho-view .atwho-view-ul li {
color: var(--light) !important;
}
.atwho-view .atwho-view-ul li strong {
color: var(--accent) !important;
}
.atwho-view .atwho-view-ul li small,
.atwho-view .atwho-view-ul li .params {
color: var(--lighter) !important;
}
.atwho-view .atwho-view-ul li:hover,
.atwho-view .atwho-view-ul li.cur {
color: var(--light) !important;
background-color: var(--darken) !important;
}
ul.content-list li {
color: var(--light) !important;
border-color: var(--darker) !important;
}
ul.content-list li a {
color: var(--light) !important;
}
.item-meta * {
color: var(--lighter) !important;
}
ul.content-list li .todo-label a,
ul.content-list li .todo-project a {
color: var(--accent) !important;
}
ul.content-list li .group-row-contents:hover {
background-color: var(--darken) !important;
}
ul.content-list li .group-row-contents .metadata span,
ul.content-list li .group-row-contents .metadata div {
color: var(--lighter) !important;
}
.has-no-search-results {
color: var(--lighter) !important;
}
ul.content-list li.group-row .description p,
ul.content-list li.group-row .stats {
color: var(--lighter) !important;
}
ul.content-list li.issue:hover,
ul.content-list li.merge-request:hover,
ul.content-list li[id*="epic"]:hover {
background-color: var(--darken) !important;
}
ul.content-list:not(.event_commits) > li.commit:hover {
background-color: var(--bb) !important;
}
ul.content-list.all-branches .graph-side .bar,
ul.content-list.all-branches .graph-separator {
background-color: var(--darker) !important;
}
ul.content-list.all-branches .branch-item:hover {
background-color: var(--bb) !important;
}
ul.content-list.all-branches .commit-sha {
color: var(--accent) !important;
}
ul.content-list.all-branches .cgray {
color: var(--lighter) !important;
}
ul.content-list.issuable-list .issue.today:not(.user-can-drag) {
position: relative;
}
ul.content-list.issuable-list .issue.today:not(.user-can-drag):hover {
background-color: var(--t) !important;
}
ul.content-list.issuable-list .issue.today:not(.user-can-drag):hover::before {
opacity: 0.12;
}
ul.content-list.issuable-list .issue.today:not(.user-can-drag):not(:hover) {
background-color: var(--t) !important;
}
ul.content-list.issuable-list .issue.today:not(.user-can-drag)::before {
content: "";
z-index: -1;
opacity: 0.05;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: var(--green) !important;
}
ul.content-list.issuable-list .closed,
ul.content-list.issuable-list .merged {
background-color: var(--t) !important;
}
ul.content-list.issuable-list .fa:not(.fa-question-circle),
ul.content-list.issuable-list .task-status {
color: var(--lighter) !important;
}
ul.content-list.issuable-list .issuable-milestone,
ul.content-list.issuable-list .issuable-info,
ul.content-list.issuable-list .issuable-updated-at {
color: var(--lighter) !important;
}
.issuable-email-modal-btn {
color: var(--accent) !important;
}
.icon-merge-request-unmerged {
filter: invert(0.7);
}
ul.content-list.issuable-list.manual-ordering {
color: var(--red) !important;
border-color: var(--green) !important;
background-color: var(--darken) !important;
}
ul.content-list.issuable-list.manual-ordering > .issue {
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
ul.content-list.requirements-list > li:not([class*="gl-bg"]):hover {
background-color: var(--t) !important;
}
ul.content-list.members-list li {
background-color: var(--bb) !important;
}
ul.content-list.members-list li:hover {
background-color: var(--darken) !important;
}
input.form-control + button {
border-color: var(--darker) !important;
}
ul.content-list .snippet-filename,
ul.content-list .snippet-info {
color: var(--lighter) !important;
}
.nav-sidebar {
border-right: 1px solid var(--darker);
background-color: var(--darken) !important;
box-shadow: none;
}
.nav-sidebar .context-header > * {
color: var(--light) !important;
}
.nav-sidebar .context-header > *:hover {
background-color: var(--darker) !important;
}
.nav-sidebar .context-header > * .avatar-container {
border-color: var(--t) !important;
background-color: var(--t) !important;
}
.nav-sidebar .divider {
border-color: var(--darker) !important;
}
.nav-sidebar .sidebar-top-level-items > li:hover {
background-color: rgba(136, 136, 136, 0.063) !important;
}
.nav-sidebar .sidebar-top-level-items > li:hover > a {
color: var(--light) !important;
}
.nav-sidebar .sidebar-top-level-items > li.active {
background-color: rgba(136, 136, 136, 0.063) !important;
box-shadow: inset 4px 0 var(--accent) !important;
}
.nav-sidebar .sidebar-top-level-items > li.active > a {
color: var(--light) !important;
}
.nav-sidebar .sidebar-top-level-items > li.active > a svg {
fill: var(--light) !important;
}
.nav-sidebar
.sidebar-top-level-items
> li.active:not(.is-over)
> ul
> li.active
> a {
background-color: var(--darker) !important;
box-shadow: inset 4px 0 var(--accent) !important;
}
.nav-sidebar .sidebar-top-level-items > li.active .badge-pill {
color: var(--light) !important;
}
.nav-sidebar .sidebar-top-level-items > li a {
color: var(--lighter) !important;
}
.nav-sidebar .sidebar-top-level-items > li a:hover {
background-color: var(--t) !important;
}
.nav-sidebar .sidebar-top-level-items > li .badge-pill {
color: var(--lighter) !important;
background-color: var(--darker) !important;
}
.nav-sidebar .sidebar-top-level-items > li.is-over:not(#z) ul > li,
.nav-sidebar .sidebar-top-level-items > li.is-over:not(#z) ul > li > a {
box-shadow: unset !important;
}
.nav-sidebar .sidebar-sub-level-items > li:hover {
background-color: var(--darker) !important;
box-shadow: inset 4px 0 var(--accent) !important;
}
.nav-sidebar .sidebar-sub-level-items > li:hover a {
color: var(--light) !important;
}
.nav-sidebar .sidebar-sub-level-items > li.active {
box-shadow: inset 4px 0 var(--accent) !important;
}
.nav-sidebar .sidebar-sub-level-items > li.active a {
color: var(--light) !important;
}
.nav-sidebar .is-over.is-showing-fly-out > a {
color: var(--light) !important;
background-color: rgba(136, 136, 136, 0.063) !important;
}
.nav-sidebar .is-over.is-showing-fly-out ul {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
box-shadow: none;
}
.nav-sidebar .is-over.is-showing-fly-out ul li a {
color: var(--lighter) !important;
}
.nav-sidebar .is-over.is-showing-fly-out ul li a:focus {
background-color: var(--darker) !important;
}
.nav-sidebar .is-over.is-showing-fly-out ul li:hover a {
color: var(--light) !important;
background-color: rgba(136, 136, 136, 0.063) !important;
}
.nav-sidebar[class*="collapsed"] .sidebar-top-level-items > li.active {
background-color: var(--darker) !important;
}
.nav-sidebar .toggle-sidebar-button,
.nav-sidebar .close-nav-button {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.nav-sidebar .toggle-sidebar-button svg,
.nav-sidebar .close-nav-button svg {
color: var(--lighter) !important;
}
.nav-sidebar .toggle-sidebar-button span,
.nav-sidebar .close-nav-button span {
color: var(--light) !important;
}
.nav-sidebar .toggle-sidebar-button:hover,
.nav-sidebar .close-nav-button:hover {
background-color: var(--darker) !important;
}
.nav-sidebar:not(.js-sidebar-collapsed)
+ .content-wrapper
.pipeline-visualization
> div[style*="padding-left: 0px"] {
padding-left: 0px !important;
padding-left: 240px !important;
}
.nav-sidebar.js-sidebar-collapsed
+ .content-wrapper
.pipeline-visualization
> div[style*="padding-left: 0px"] {
padding-left: 0px !important;
padding-left: 70px !important;
}
.right-sidebar {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
top: 50px !important;
}
.right-sidebar .title {
color: var(--light) !important;
}
.right-sidebar .block {
border-color: var(--darker) !important;
}
.right-sidebar .edit-link,
.right-sidebar .lock-edit,
.right-sidebar .no-value,
.right-sidebar a[href="#"] {
color: var(--lighter) !important;
}
.right-sidebar a:not(.btn):hover,
.right-sidebar .btn-link:not(.btn):hover {
color: var(--accent);
}
.gl-drawer {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
box-shadow: -1px 0 var(--darker), var(--bshadow);
top: 50px !important;
}
.gl-drawer-header,
.gl-drawer-body > * {
border-color: var(--darker) !important;
}
.right-sidebar .issuable-sidebar {
overflow-y: auto !important;
}
.right-sidebar .issuable-sidebar .gutter-toggle {
border-color: var(--darker) !important;
background-color: var(--t) !important;
}
.right-sidebar .issuable-sidebar-header button,
.right-sidebar .issuable-sidebar .dropdown button {
background-color: var(--dark) !important;
}
.right-sidebar .issuable-sidebar-header .btn-info,
.right-sidebar .issuable-sidebar .dropdown .btn-info {
background-color: var(--blue) !important;
}
.right-sidebar .time_tracker .compare-label {
color: var(--lighter) !important;
}
.right-sidebar .time_tracker .compare-value {
color: var(--light) !important;
}
.right-sidebar .time_tracker .time-tracking-help-state {
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.right-sidebar.build-sidebar .builds-container {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.right-sidebar.build-sidebar .builds-container .build-job.retried {
background-color: var(--t) !important;
}
.right-sidebar.build-sidebar .builds-container .build-job:hover {
background-color: var(--bb) !important;
}
.right-sidebar.build-sidebar .builds-container .build-job:hover a {
color: var(--light) !important;
}
.right-sidebar.build-sidebar .blocks-container a:not(.btn),
.right-sidebar.build-sidebar .blocks-container .btn-link:not(.btn) {
color: var(--accent) !important;
}
.right-sidebar.build-sidebar .btn,
.right-sidebar.build-sidebar [data-toggle="dropdown"] {
background-color: var(--dark) !important;
}
.right-sidebar .is-option-selected > span {
color: var(--lighter) !important;
}
.right-sidebar .vertical-timeline::before {
border-color: var(--lighter) !important;
}
.right-sidebar .vertical-timeline-icon {
background-color: var(--darken) !important;
}
.right-sidebar .vertical-timeline-icon.opened svg {
fill: var(--green) !important;
}
.right-sidebar .vertical-timeline-icon.closed svg {
fill: var(--blue) !important;
}
.right-sidebar .vertical-timeline-content a:hover {
color: var(--accent) !important;
}
.right-sidebar .labels-select-wrapper .label-item.is-focused,
.right-sidebar .labels-select-wrapper .label-item:hover {
color: var(--light) !important;
background-color: var(--darker) !important;
}
.right-sidebar .labels-select-wrapper .gl-link:not(.gl-label-link),
.right-sidebar .labels-select-wrapper .btn-link:not(.gl-label-link) {
color: var(--lighter) !important;
}
.right-sidebar .labels-select-dropdown-contents {
border: 1px solid var(--darker) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
box-shadow: var(--bshadow) !important;
}
.right-sidebar .labels-select-dropdown-contents .dropdown-title,
.right-sidebar .labels-select-dropdown-contents .dropdown-footer {
border-color: var(--darker) !important;
}
.right-sidebar .btn-group li .dropdown-item:hover {
background-color: var(--darker) !important;
}
.right-sidebar .btn-group li .dropdown-item,
.right-sidebar .btn-group li .dropdown-item button.btn {
background-color: var(--t) !important;
}
.right-sidebar .btn-group li .dropdown-item .btn.is-active::before {
content: "\f00c" !important;
opacity: 1 !important;
background-color: var(--t) !important;
}
.dropdown-title-button {
position: absolute;
}
.right-sidebar.right-sidebar-collapsed .sidebar-collapsed-icon {
color: var(--light) !important;
}
.right-sidebar.right-sidebar-collapsed .sidebar-collapsed-icon svg {
fill: var(--lighter) !important;
}
.right-sidebar.right-sidebar-collapsed .gutter-toggle {
background-color: var(--darken) !important;
}
.right-sidebar.right-sidebar-collapsed .gutter-toggle:hover,
.right-sidebar.right-sidebar-collapsed .block:hover {
background-color: rgba(136, 136, 136, 0.063) !important;
}
.top-area {
border-color: var(--darker) !important;
}
.nav-links:not(.quick-links) {
border-color: var(--darker) !important;
}
.nav-links li .badge.badge-pill {
color: var(--lighter) !important;
background-color: var(--darker) !important;
}
.nav-links li a,
.nav-links li button {
color: var(--lighter) !important;
}
.nav-links li a:focus,
.nav-links li button:focus {
border-color: var(--darker) !important;
}
.nav-links li:hover a,
.nav-links li:hover button {
color: var(--light) !important;
border-color: var(--darker) !important;
}
.nav-links li.active,
.nav-links li.active a,
.nav-links li.active button {
color: var(--light) !important;
border-color: var(--accent) !important;
}
.nav-links li.active .badge.badge-pill {
color: var(--light) !important;
background-color: var(--darker) !important;
}
.nav-links li a.active,
.nav-links li button.active,
.nav-links li a strong,
.nav-links li button strong {
color: var(--light) !important;
border-color: var(--accent) !important;
}
.top-area .form-control {
background-color: var(--darken) !important;
}
.content-block {
border-color: var(--darker) !important;
background-color: var(--t) !important;
}
.content-block p:not(.status-box) {
color: var(--light) !important;
}
.content-block.landing {
background-color: var(--darken) !important;
}
.content-block.landing h4 {
color: var(--light) !important;
}
.content-block .new-branch-col .btn {
padding: 6px 10px !important;
line-height: 20px !important;
font-size: 0.875rem;
}
.emoji-block .col-lg-6 {
flex: unset;
width: unset;
max-width: unset;
}
.emoji-block .col-lg-6:first-child {
max-width: 50%;
}
.emoji-block .col-lg-6:last-child {
flex: 1 1 auto !important;
}
.nav-block {
border-color: var(--darker) !important;
}
.row-content-block {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.row-content-block.footer-block {
background-color: var(--t) !important;
}
.row-content-block
.btn:not(.btn-link):not(.btn-success):not(.btn-danger):not(.btn-info):not(.gl-button),
.row-content-block .btn-default {
background-color: var(--dark) !important;
}
.row-content-block .btn.dropdown-toggle {
border: 1px solid var(--darker);
}
.row-content-block .filtered-search-box:not(#z) {
background-color: var(--dark) !important;
}
.row-content-block.top-block {
padding: 16px 0;
background-color: var(--bb) !important;
}
.row-content-block.top-block .event-last-push time {
color: var(--light) !important;
}
.row-content-block.top-block .event-last-push-text {
font-size: 14px;
}
.row-content-block.top-block .btn-sm {
padding: 6px 10px !important;
line-height: 1.5 !important;
font-size: 14px !important;
}
.row-content-block.issues-details-filters [class*="menu-toggle"] {
background-color: var(--dark) !important;
}
.row-content-block span > code,
.row-content-block form > div > button {
background-color: var(--dark) !important;
}
.row-content-block .block {
border-color: var(--darker) !important;
}
.row-content-block .block .title {
color: var(--light) !important;
}
.row-content-block .block button.dropdown-toggle[id]:not(#z),
.row-content-block .block button.dropdown-menu-toggle {
background-color: var(--darken) !important;
}
.sub-header-block {
border-color: var(--darker) !important;
background-color: var(--t) !important;
}
.gl-tabs-nav {
border-color: var(--darker) !important;
}
.gl-tab-nav-item {
color: var(--lighter) !important;
}
.gl-tab-nav-item-active {
color: var(--light) !important;
}
.gl-tab-nav-item:hover {
box-shadow: inset 0 -0.125rem var(--darker);
}
.gl-tab-nav-item.active {
box-shadow: inset 0 -0.125rem var(--accent);
}
.gl-tab-content {
color: var(--light) !important;
}
.gl-tab-content .text-dark,
.gl-tab-content .text-dark:hover {
color: var(--light) !important;
}
.gl-tab-content .text-secondary,
.gl-tab-content .text-secondary:hover {
color: var(--lighter) !important;
}
.pipeline-quota {
border-color: var(--darker) !important;
}
.pipeline-quota + .ci-table > div:first-child {
margin-top: -1px !important;
}
.registry-placeholder .gl-text-black-normal {
color: var(--light) !important;
}
.registry-placeholder a.gl-text-black-normal:hover {
color: var(--accent) !important;
}
.gitlab-tabs {
border-radius: 4px 4px 0 0;
border-color: var(--darker) !important;
background-color: var(--t) !important;
}
.gitlab-tabs.nav.nav-tabs.nav-links {
border-radius: 4px 4px 0 0;
border-bottom: 1px solid;
box-shadow: none;
}
.gitlab-tabs.nav.nav-tabs.nav-links > .nav-item {
margin: 0;
}
.gitlab-tabs li[class^="nav-"] {
border-color: var(--darker) !important;
background-color: var(--darker) !important;
}
.gitlab-tabs li[class^="nav-"]:first-child {
margin: 0;
}
.gitlab-tabs li[class^="nav-"] a {
border-radius: 0;
}
.gitlab-tabs li[class^="nav-"]:first-child a {
border-radius: 3px 0 0 0;
}
.gitlab-tabs li[class^="nav-"]:last-child a {
border-radius: 0 3px 0 0;
}
.gitlab-tabs li[class^="nav-"]:hover a.nav-link {
color: var(--light) !important;
border-color: var(--t) !important;
}
.gitlab-tabs li[class^="nav-"] a:not(.active) {
background-color: var(--dark) !important;
}
.gitlab-tabs li[class^="nav-"] a.active.nav-link {
margin-bottom: -1px;
color: var(--light) !important;
border-color: var(--darken) !important;
background-color: var(--darken) !important;
}
.gitlab-tabs + .gitlab-tab-content {
border-radius: 0 0 4px 4px;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.gitlab-tabs + .gitlab-tab-content .form-control,
.gitlab-tabs + .gitlab-tab-content .info-well {
background-color: var(--dark) !important;
}
.gitlab-tabs + .gitlab-tab-content .select2-choice,
.gitlab-tabs + .gitlab-tab-content .select2-choices {
background-color: var(--dark) !important;
}
.gitlab-tabs
+ .gitlab-tab-content
[class*="input-group"]:not(.template-input-group) {
border-radius: 3px 0 0 3px;
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--bb) !important;
}
.option-title {
color: var(--light) !important;
}
.option-description,
.option-disabled-reason {
color: var(--lighter) !important;
}
.gitlab-tabs + .gitlab-tab-content .template-option {
border-color: var(--darker) !important;
}
.gitlab-tabs + .gitlab-tab-content .card-slim {
background-color: var(--dark) !important;
}
.nav-tabs .nav-link.active {
border-color: var(--accent) !important;
background-color: var(--t) !important;
}
.gitlab-tabs + .gitlab-tab-content .btn[class*="gitea"] svg path {
fill: var(--lighter) !important;
}
.gitlab-tabs + .gitlab-tab-content .btn[class*="gitea"] svg rect {
fill: var(--dark) !important;
}
.gitlab-tabs + .gitlab-tab-content .btn-cancel,
.gitlab-tabs + .gitlab-tab-content .btn-default,
.gitlab-tabs + .gitlab-tab-content .btn[class*="import"] {
background-color: var(--dark) !important;
}
.section-welcome .container .blank-state-link {
color: var(--lighter) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.section-welcome .container .blank-state-link:hover {
color: var(--light) !important;
background-color: var(--darken) !important;
}
.projects-list > li {
border-color: var(--darker) !important;
}
.projects-list > li .description {
color: var(--lighter) !important;
}
.user-access-role {
color: var(--lighter) !important;
border-color: var(--darker) !important;
background-color: rgba(136, 136, 136, 0.082) !important;
}
.projects-list.compact .user-access-role {
line-height: 18px;
}
.projects-list.compact .avatar {
line-height: 38px !important;
}
.loading {
color: var(--lighter) !important;
}
.projects-list:not(.compact),
.snippets-list-holder > ul,
#groups > ul {
margin-top: 10px;
padding: 12px;
background-color: var(--darken) !important;
border-radius: 4px;
}
.projects-list:not(.compact) > li,
.snippets-list-holder > ul > li,
#groups > ul > li {
padding: 12px 0 !important;
}
.projects-list:not(.compact) > li:first-child,
.snippets-list-holder > ul > li:first-child,
#groups > ul > li:first-child {
padding-top: 0 !important;
}
.projects-list:not(.compact) > li:last-child,
.snippets-list-holder > ul > li:last-child,
#groups > ul > li:last-child {
padding-bottom: 0 !important;
}
.user-calendar-activities {
background-color: var(--darken) !important;
border-radius: 4px;
}
.user-calendar-activities h4 {
margin: 10px 12px 0;
padding: 10px 0;
border-bottom: 1px solid var(--darker);
}
.user-calendar-activities ul li,
.user-calendar-activities > p {
margin: 0 12px !important;
padding: 10px 0 !important;
}
.event-item {
color: var(--lighter) !important;
border-color: var(--darker) !important;
}
.event-item .commit,
.event-item .commits-stat {
color: var(--light) !important;
}
.event-item [href],
.event-item [href*="/compare/"] {
color: var(--accent) !important;
}
.event-item .joined-icon svg,
.event-item .pushed-new-icon svg,
.event-item .pushed-to-icon svg {
fill: var(--lighter) !important;
}
.event-user-info a[href] {
color: var(--light) !important;
}
div.content_list {
margin-top: 10px;
padding: 10px;
background-color: var(--darken) !important;
border-radius: 4px;
}
div.content_list > .event-item {
padding-top: 10px;
padding-bottom: 10px;
}
.event-note pre.code {
border: 1px solid var(--darker) !important;
color: var(--light) !important;
background-color: var(--dark) !important;
}
.card {
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.card .user-info .user {
color: var(--light) !important;
}
.card-header {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.card-header.bg-info {
color: var(--white) !important;
border-color: var(--blue) !important;
background-color: var(--blue) !important;
}
.card-header.bg-danger {
color: var(--white) !important;
border-color: var(--red) !important;
background-color: var(--red) !important;
}
.card-header + ul > .list-group-item {
border-color: var(--darker) !important;
background-color: var(--t) !important;
}
.card.border-info {
border-color: var(--blue) !important;
}
.card.border-danger {
border-color: var(--red) !important;
}
.list-group > .list-group-item {
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.card-header input,
.card-header [class*="dropdown-menu"] {
background-color: var(--dark) !important;
}
.card-header .card-title {
color: var(--light) !important;
}
.card-body > .form-actions {
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.card-body,
.card-body > .form-actions {
border-radius: 0 0 3px 3px !important;
}
.card-footer {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.card-footer.alert-primary {
color: var(--blue) !important;
background-color: var(--darken) !important;
}
.card-footer pre,
.card-footer code {
border-radius: 4px;
background-color: var(--dark) !important;
}
.card.border-0 {
border: 1px solid var(--darker) !important;
}
.card.border-0 .card-header a {
color: var(--light) !important;
}
.environments-dashboard .dashboard-card {
box-shadow: none !important;
border: none !important;
background-color: var(--t) !important;
}
.related-issues-block .card-header {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
border-radius: 3px 3px 0 0;
}
.related-issues-block .card-header.panel-empty-heading {
box-shadow: inset 0 -1px var(--darker);
}
.related-issues-block .card .linked-issues-card-body {
min-height: 16px;
border-radius: 0 0 3px 3px;
background-color: var(--bb) !important;
}
.related-issues-block .card .linked-issues-card-body > .card-body {
border-radius: 3px !important;
}
.related-issues-block .card ul > li,
.related-issues-block .card ul > li[class*="input"] > input {
color: var(--light) !important;
background-color: var(--darken) !important;
}
.issue-token-reference {
color: var(--light) !important;
background-color: var(--darker) !important;
}
.issue-token-remove-button {
color: var(--red) !important;
background-color: var(--darker) !important;
}
.add-issuable-form-input {
color: var(--light) !important;
background-color: var(--darken) !important;
}
.related-issues-block .card ul > li:first-child {
border-radius: 3px 3px 0 0;
}
.related-issues-block .card ul > li:last-child {
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
}
.related-items-tree .item-title a {
color: var(--light) !important;
}
.related-items-tree .item-meta {
color: var(--lighter) !important;
border-color: var(--darker) !important;
}
.related-items-list .item-body.item-closed {
background-color: var(--bb) !important;
border-radius: 3px !important;
}
#merge-requests {
background-color: var(--dark) !important;
}
#merge-requests .card-header {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
border-radius: 3px 3px 0 0;
}
#merge-requests ul li {
background-color: var(--t) !important;
}
.item-assignees:not(#z) .avatar {
border-color: var(--darken) !important;
}
.item-assignees:not(#z) .avatar-counter {
color: var(--light) !important;
background-color: var(--darker) !important;
border-radius: var(--avatar);
}
[class*="-filters"] + div[class]:not([class*="boards"]),
[class*="-filters"] + div[class]:not([class*="boards"]) .card {
background-color: var(--t) !important;
}
[class*="-filters"] + div[class]:not([class*="boards"]) li {
border-top: none;
color: var(--light) !important;
}
[class*="-filters"] + div[class]:not([class*="boards"]) li:hover {
background-color: var(--darken) !important;
}
.done-reversible {
border-top: none !important;
opacity: 0.6;
background-color: var(--t) !important;
}
[class*="-filters"].epics-filters [class*="-toggle"] {
background-color: var(--dark) !important;
}
.card.linked-card::after,
.card.release-block::after {
border-color: var(--darken) !important;
}
.card.linked-card > .card-header,
.card.release-block > .card-header {
background-color: var(--darken) !important;
}
.card.linked-card > .card-body,
.card.release-block > .card-body {
background-color: var(--dark) !important;
}
.card.links-card a {
color: var(--accent) !important;
}
.sortable-container {
background-color: var(--darken) !important;
}
.sortable-container[class*="body"] {
border-radius: 0 0 4px 4px;
}
.sortable-row .sortable-link {
color: var(--accent) !important;
}
.epic-discussion-separator {
border-color: var(--darker) !important;
}
.flex-grid .grid-row,
.flex-grid .grid-cell {
border-color: var(--darker) !important;
}
.flex-grid .property-label {
color: var(--lighter) !important;
}
.flex-grid .property-value {
color: var(--light) !important;
}
.animation-container [class*="skeleton-line-"] {
background-color: var(--darker) !important;
}
.animation-container [class*="skeleton-line-"]::after {
background-image: linear-gradient(
90deg,
var(--darker) 0%,
var(--darken) 50%,
var(--darker)
);
}
[class*="card-skeleton-"]::after {
background-image: linear-gradient(
90deg,
var(--darker) 0%,
var(--darken) 50%,
var(--darker)
);
}
.gl-spinner.gl-spinner-dark {
border-color: var(--darker) !important;
border-top-color: var(--accent) !important;
}
svg.gl-skeleton-loader rect {
fill: var(--darker) !important;
}
.pika-single {
margin-top: 10px;
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
border-radius: 4px;
}
.pika-single .pika-label {
color: var(--light) !important;
background-color: var(--t) !important;
}
.pika-single .pika-prev,
.pika-single .pika-next {
color: var(--light) !important;
text-indent: 0;
background: none;
}
.pika-single .pika-prev::before,
.pika-single .pika-next::before {
display: inline-block;
width: 20px;
}
.pika-single .pika-prev::before {
content: "←";
}
.pika-single .pika-next::before {
content: "→";
}
.pika-single .pika-table {
border: 1px solid var(--darker);
}
.pika-single .pika-table th:not(#z) {
border-top: none !important;
color: var(--light) !important;
border-color: var(--t) !important;
background-color: var(--dark) !important;
}
.pika-single .pika-table td {
border-color: var(--darker) !important;
}
.pika-single .pika-table td .pika-day {
color: var(--light) !important;
background-color: var(--bb) !important;
}
.pika-single .pika-table td .pika-day:hover,
.pika-single .pika-table td[class^="is-"] .pika-day {
color: var(--accent) !important;
background-color: var(--darken) !important;
}
.pika-single .pika-table td.is-disabled .pika-day {
color: var(--lighter) !important;
background-color: var(--t) !important;
}
.pika-single .pika-table tr:last-child > td {
border-bottom: none !important;
}
.pika-single.is-bound {
box-shadow: var(--bshadow);
}
.gl-datepicker-theme {
font-family: var(--ui-font) !important;
}
.gl-datepicker-theme .pika-lendar:not(#z) {
border-radius: 4px;
box-shadow: inset 0 0 0 1px var(--darker);
}
.avatar,
.avatar-circle,
.avatar-container {
text-shadow: 2px 2px 1px var(--shadow);
border-radius: var(--avatar) !important;
color: var(--light) !important;
border-color: var(--t) !important;
}
.avatar.identicon {
color: var(--white) !important;
}
.avatar:not(.identicon) {
border-color: var(--t) !important;
background-color: var(--t) !important;
}
.avatar.s48 {
line-height: 46px;
}
.avatar[class*="bg"] {
border-radius: var(--avatar);
box-shadow: inset 0 0 0 0.15em var(--shadow);
}
.avatar.bg0 {
background-color: var(--red) !important;
}
.avatar.bg1 {
background-color: var(--green) !important;
}
.avatar.bg2 {
background-color: var(--blue) !important;
}
.avatar.bg3 {
background-color: var(--yellow) !important;
}
.avatar.bg4 {
background-color: var(--magenta) !important;
}
.avatar.bg5 {
background-color: var(--cyan) !important;
}
.avatar.bg6 {
background-color: var(--violet) !important;
}
.avatar.bg7 {
background-color: var(--orange) !important;
}
.avatar.bgNaN {
background-color: var(--darker) !important;
box-shadow: none;
}
.page-title {
color: var(--light) !important;
}
.page-title-holder {
border-color: var(--darker) !important;
}
.commit-box {
border-color: var(--darker) !important;
}
.commit-box .commit-title,
.commit-box time {
color: var(--light) !important;
}
.breadcrumb-item a {
color: var(--lighter) !important;
}
.breadcrumb-item a strong {
color: var(--light) !important;
}
.breadcrumbs-list a {
color: var(--lighter) !important;
}
.breadcrumbs-list-angle {
fill: var(--lighter) !important;
}
.breadcrumbs-container {
border-color: var(--darker) !important;
}
.breadcrumbs-sub-title a {
color: var(--light) !important;
}
.breadcrumbs-links img {
border-color: var(--darken) !important;
background-color: var(--darken) !important;
}
.breadcrumbs.group-epics-roadmap {
border-color: var(--darker) !important;
}
.breadcrumb.repo-breadcrumb > li + li::before {
color: var(--lighter) !important;
}
.pagination .page-link {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.pagination .page-link:not(.active):hover {
background-color: var(--darker) !important;
box-shadow: none;
}
.pagination .disabled .page-link {
opacity: 0.6;
color: var(--lighter) !important;
background-color: var(--darken) !important;
}
.pagination .active .page-link,
.pagination .page-link.active {
color: var(--accent) !important;
background-color: var(--darker) !important;
}
.md {
color: var(--light) !important;
}
.md h1,
.md h2 {
color: var(--light) !important;
border-color: var(--darker) !important;
}
.md hr {
border-color: var(--darker) !important;
}
.md p {
color: var(--light) !important;
}
.md a {
color: var(--accent) !important;
}
.md a > code,
.md p > code {
padding: 2px 4px;
color: inherit !important;
}
.md kbd {
border-color: var(--darker) !important;
box-shadow: inset 0 -1px 0 var(--darker) !important;
}
.md kbd > kbd {
background-color: var(--bb) !important;
}
.md blockquote,
.md .blockquote {
border-left-width: 5px;
color: var(--lighter) !important;
border-color: var(--darker) !important;
}
.md blockquote p,
.md .blockquote p {
color: var(--lighter) !important;
}
.md img.lazy {
background-color: var(--darken) !important;
}
.md img:not(.emoji) {
border-color: var(--darker) !important;
}
[src*="style=for-the-badge"],
.md img:not(.emoji)[data-canonical-src*="style=for-the-badge"] {
border-radius: 4px;
}
.md pre {
border-radius: 4px !important;
}
.md pre.code.white {
border: 1px solid var(--darker);
color: var(--light) !important;
background-color: var(--darken) !important;
}
.md pre.code.white.highlight {
background-color: var(--darken) !important;
}
.md pre.code.none {
color: var(--light) !important;
background-color: var(--darken) !important;
}
.md pre.code.none .line span {
color: var(--light) !important;
}
.md code {
font-family: var(--mono-font) !important;
}
.md gl-emoji {
font-size: 1em;
font-family: var(--emoji-font);
}
.md-suggestion-header {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.md-suggestion-diff {
font-family: var(--mono-font) !important;
border-radius: 0 0 4px 4px !important;
border-color: var(--darker) !important;
}
.md-suggestion tr:last-child > td:first-child::after {
border-radius: 0 0 0 3px;
}
.md-suggestion tr:last-child > td:last-child::after {
border-radius: 0 0 3px 0;
}
.md .anchor::after {
content: "§" !important;
color: var(--light) !important;
}
.task-list {
color: var(--light) !important;
}
.swagger-ui {
position: relative;
z-index: 1;
}
.swagger-ui .info .title {
color: var(--light) !important;
}
.swagger-ui .info a,
.swagger-ui link a {
color: var(--accent) !important;
}
.swagger-ui button.btn {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.swagger-ui .arrow {
fill: var(--light) !important;
}
.swagger-ui button.btn.execute {
color: var(--white) !important;
border-color: var(--blue) !important;
background-color: var(--blue) !important;
}
.swagger-ui .download-contents {
color: var(--light) !important;
background-color: var(--darker) !important;
}
.swagger-ui input,
.swagger-ui textarea {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.swagger-ui input[disabled],
.swagger-ui textarea[disabled] {
color: var(--lighter) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
opacity: 0.6;
}
.swagger-ui,
.swagger-ui h3,
.swagger-ui h4,
.swagger-ui h5 {
color: var(--light) !important;
}
.swagger-ui select {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
box-shadow: none !important;
}
.swagger-ui .opblock-tag {
color: var(--light) !important;
border-color: var(--darker) !important;
}
.swagger-ui .opblock-section p {
color: var(--lighter) !important;
}
.swagger-ui .opblock-title,
.swagger-ui .opblock-section-header h4 {
color: var(--light) !important;
}
.swagger-ui .opblock-section-header {
background-color: var(--darken) !important;
box-shadow: 0 1px var(--darker), 0 -1px var(--darker) !important;
}
.swagger-ui .opblock-summary-path,
.swagger-ui .opblock-summary-operation-id,
.swagger-ui .opblock-summary-path__deprecated {
color: var(--light) !important;
}
.swagger-ui .opblock-summary-description {
color: var(--lighter) !important;
}
.swagger-ui .opblock::before {
z-index: -1;
opacity: 0.1;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.swagger-ui .opblock-get {
border-color: var(--blue) !important;
background-color: var(--t) !important;
position: relative;
}
.swagger-ui .opblock-get::before {
content: "";
background-color: var(--blue) !important;
}
.swagger-ui .opblock-get .tab-item.active h4 span::after,
.swagger-ui .opblock-get .opblock-summary-method {
background-color: var(--blue) !important;
}
.swagger-ui .opblock-put {
border-color: var(--orange) !important;
background-color: var(--t) !important;
position: relative;
}
.swagger-ui .opblock-put::before {
content: "";
background-color: var(--orange) !important;
}
.swagger-ui .opblock-put .tab-item.active h4 span::after,
.swagger-ui .opblock-put .opblock-summary-method {
background-color: var(--orange) !important;
}
.swagger-ui .opblock-post {
border-color: var(--green) !important;
background-color: var(--t) !important;
position: relative;
}
.swagger-ui .opblock-post::before {
content: "";
background-color: var(--green) !important;
}
.swagger-ui .opblock-post .tab-item.active h4 span::after,
.swagger-ui .opblock-post .opblock-summary-method {
background-color: var(--green) !important;
}
.swagger-ui .opblock-patch {
border-color: var(--cyan) !important;
background-color: var(--t) !important;
position: relative;
}
.swagger-ui .opblock-patch::before {
content: "";
background-color: var(--cyan) !important;
}
.swagger-ui .opblock-patch .tab-item.active h4 span::after,
.swagger-ui .opblock-patch .opblock-summary-method {
background-color: var(--cyan) !important;
}
.swagger-ui .opblock-delete {
border-color: var(--red) !important;
background-color: var(--t) !important;
position: relative;
}
.swagger-ui .opblock-delete::before {
content: "";
background-color: var(--red) !important;
}
.swagger-ui .opblock-delete .tab-item.active h4 span::after,
.swagger-ui .opblock-delete .opblock-summary-method {
background-color: var(--red) !important;
}
.swagger-ui .model {
color: var(--light) !important;
}
.swagger-ui .model-title {
color: var(--light) !important;
}
.swagger-ui .model-toggle::after {
filter: invert(1);
}
.swagger-ui .models {
border-color: var(--darker) !important;
}
.swagger-ui .models > h4 {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.swagger-ui .prop-format {
color: var(--lighter) !important;
}
.swagger-ui .prop-type {
color: var(--violet) !important;
}
.swagger-ui .parameter__name {
color: var(--light) !important;
}
.swagger-ui .parameter__name::after {
color: var(--red) !important;
}
.swagger-ui .parameter__in,
.swagger-ui .parameter__type {
color: var(--lighter) !important;
}
.swagger-ui pre.microlight {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.swagger-ui pre.microlight span:not(#z) {
color: var(--light) !important;
}
.swagger-ui .scheme-container {
color: var(--light) !important;
background-color: var(--dark) !important;
box-shadow: 0 -1px var(--darker), 0 1px var(--darker);
}
.swagger-ui table:not(#z) {
padding: 0;
}
.swagger-ui table:not(#z),
.swagger-ui table:not(#z) th:not(#z),
.swagger-ui table:not(#z) td {
color: var(--light) !important;
border-color: var(--t) !important;
background-color: var(--t) !important;
}
.swagger-ui table:not(#z) span[class=""],
.swagger-ui table:not(#z) span:not([class]) {
color: var(--lighter) !important;
}
.swagger-ui .tab li::after {
background-color: var(--lighter) !important;
}
.swagger-ui a.tablinks,
.swagger-ui [class*="brace-"] {
color: var(--light) !important;
}
.swagger-ui :not(#z) [style*="color: red"]:not(#z) {
color: var(--red) !important;
}
.gl-banner {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.close {
color: var(--lighter) !important;
text-shadow: none;
}
.new-gl-button {
background-color: var(--darker) !important;
box-shadow: inset 0 0 0 1px var(--darker);
}
.new-gl-button:hover {
opacity: 0.8;
box-shadow: inset 0 0 0 1px var(--darker);
}
.mermaid:not(.code),
.artwork,
.group-empty-state > .icon,
.empty-state .svg-content > svg,
.devops-empty > div > svg,
.blank-state-icon > svg,
.svg-container > svg,
.commits-empty > svg,
img[src^="img/"]:not([src*="logo"]),
img[src*="/help/img/"],
img[src*="assets/promotions/"],
img[src*="assets/illustrations/"],
#oauth-login-github > img {
filter: invert(0.8) brightness(110%) hue-rotate(180deg);
box-shadow: none !important;
}
.gl-alert {
z-index: 1;
}
.gl-alert-body a,
.gl-alert-actions a {
font-weight: bold;
color: currentColor !important;
}
.gl-alert .js-close {
color: currentColor;
}
.gl-alert .js-close svg {
fill: currentColor !important;
}
.gl-alert::before {
z-index: -1;
opacity: 0.15;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.gl-alert-warning {
color: var(--orange) !important;
background-color: var(--darken) !important;
}
.gl-alert-warning .gl-alert-icon {
fill: var(--orange) !important;
}
.gl-alert-warning::before {
content: "";
background-color: var(--orange) !important;
}
.gl-alert-danger {
color: var(--red) !important;
background-color: var(--darken) !important;
}
.gl-alert-danger .gl-alert-icon {
fill: var(--red) !important;
}
.gl-alert-danger::before {
content: "";
background-color: var(--red) !important;
}
.gl-alert-success {
color: var(--green) !important;
background-color: var(--darken) !important;
}
.gl-alert-success .gl-alert-icon {
fill: var(--green) !important;
}
.gl-alert-success::before {
content: "";
background-color: var(--green) !important;
}
.gl-alert-info {
color: var(--blue) !important;
background-color: var(--darken) !important;
}
.gl-alert-info .gl-alert-icon {
fill: var(--blue) !important;
}
.gl-alert-info::before {
content: "";
background-color: var(--blue) !important;
}
.gl-alert-tip {
color: var(--light) !important;
background-color: var(--darken) !important;
}
.gl-alert-tip .gl-alert-icon {
fill: var(--light) !important;
}
.gl-alert-tip::before {
content: "";
background-color: var(--lighter) !important;
}
.flash-container {
background-color: var(--dark) !important;
}
.flash-container > div {
position: relative;
}
.flash-container > div::before {
content: "";
opacity: 0.25;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.flash-container > div svg {
fill: currentColor !important;
}
.flash-container .flash-alert {
color: var(--red) !important;
background-color: var(--t) !important;
}
.flash-container .flash-alert::before {
background-color: var(--red) !important;
}
.flash-container .flash-warning {
color: var(--orange) !important;
background-color: var(--t) !important;
}
.flash-container .flash-warning::before {
background-color: var(--orange) !important;
}
.flash-container .flash-notice {
color: var(--blue) !important;
background-color: var(--t) !important;
}
.flash-container .flash-notice::before {
background-color: var(--blue) !important;
}
.flash-container .flash-success {
color: var(--green) !important;
background-color: var(--t) !important;
}
.flash-container .flash-success::before {
background-color: var(--green) !important;
}
.flash-container.sticky {
top: 58px !important;
}
.alert.alert-info,
.alert.alert-primary {
color: var(--blue) !important;
border-color: var(--blue) !important;
background-color: var(--darken) !important;
}
.alert.alert-warning {
color: var(--orange) !important;
border-color: var(--orange) !important;
background-color: var(--darken) !important;
}
.alert.alert-success {
color: var(--green) !important;
border-color: var(--green) !important;
background-color: var(--darken) !important;
}
.alert.alert-secondary {
color: var(--lighter) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.alert.alert-danger {
color: var(--red) !important;
border-color: var(--red) !important;
background-color: var(--darken) !important;
}
.alert.alert-light {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.alert h4 {
color: inherit !important;
}
[class*="broadcast-banner"] svg {
fill: var(--white) !important;
}
[class*="broadcast-banner"] .fa {
color: var(--white) !important;
}
.broadcast-notification-message {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
box-shadow: var(--bshadow);
}
.broadcast-notification-message .btn {
color: var(--light) !important;
}
.broadcast-notification-message a {
color: var(--accent) !important;
}
[role="alert"][class*="_message"]:not([class*="epic"]) {
border-radius: 4px;
}
[role="alert"] .warning_message:not(#z),
.warning_message:not(#z) {
color: var(--orange) !important;
border-color: var(--orange) !important;
background-color: var(--darken) !important;
}
[role="alert"] .danger_message:not(#z),
.danger_message:not(#z) {
color: var(--red) !important;
border-color: var(--red) !important;
background-color: var(--darken) !important;
}
.gl-toggle,
.project-feature-toggle {
background-color: var(--darker) !important;
}
.gl-toggle .toggle-icon,
.project-feature-toggle .toggle-icon {
background-color: var(--dark) !important;
}
.gl-toggle .toggle-icon svg,
.project-feature-toggle .toggle-icon svg {
fill: var(--lighter) !important;
}
.gl-toggle.is-checked,
.project-feature-toggle.is-checked {
background-color: var(--accent) !important;
}
.gl-toggle.is-checked svg,
.project-feature-toggle.is-checked svg {
fill: var(--accent) !important;
}
.gl-form-checkbox {
color: var(--light) !important;
}
.gl-form-input {
box-shadow: none !important;
}
.custom-select {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.gl-form-group .bordered-box.pl-3 {
padding: 0 !important;
background-color: var(--dark) !important;
}
.gl-form-group .bordered-box.pl-3 > .md-area {
margin: 0 !important;
padding: 10px !important;
border-radius: 4px;
}
.gl-form-group .bordered-box.pl-3:focus-within {
border-color: var(--blue) !important;
}
.gl-form-input.form-control {
background-color: var(--darken) !important;
}
.gl-form-input[placeholder] {
background-color: var(--dark) !important;
}
.help-form .form-group form,
.help-form .form-group .form-control,
.help-form .form-group code {
background-color: var(--dark) !important;
}
.form-group > label + input {
background-color: var(--darken) !important;
}
.gl-filtered-search-scrollable {
background-color: var(--dark) !important;
border-radius: 4px 0 0 4px;
box-shadow: inset 0 0 0 1px var(--darker) !important;
}
.gl-filtered-search-scrollable input {
color: var(--light) !important;
background-color: var(--t) !important;
}
.gl-filtered-search-suggestion-active {
background-color: var(--darker) !important;
}
.gl-filtered-search-suggestion-active a,
.gl-filtered-search-suggestion-active p {
color: var(--light) !important;
}
.gl-filtered-search-token-operator-description {
color: var(--lighter) !important;
}
.gl-token-close {
color: var(--lighter) !important;
}
.gl-token-content {
color: var(--light) !important;
}
.gl-token.gl-filtered-search-token-type,
.gl-token.gl-filtered-search-token-operator {
background-color: var(--darken) !important;
}
.gl-token.gl-filtered-search-token-data {
background-color: var(--darker) !important;
}
.gl-search-box-by-click-search-button {
border: 1px solid var(--darker);
}
.gl-text-body {
color: var(--light) !important;
}
.gl-text-orange-500:not(#z) {
color: var(--orange) !important;
fill: var(--orange) !important;
}
.gl-bg-white {
background-color: var(--bb) !important;
}
.gl-bg-gray-10 {
background-color: var(--dark) !important;
}
.gl-bg-gray-50 {
background-color: var(--darken) !important;
}
.bg-secondary-50 {
background-color: var(--darken) !important;
}
.gl-bg-green-100.gl-text-green-800 {
color: var(--white) !important;
border-color: var(--green) !important;
background-color: var(--green) !important;
}
.gl-bg-blue-50 {
background-color: var(--blue) !important;
}
.gl-border-gray-100,
.gl-border-gray-200 {
border-color: var(--darker) !important;
}
.border {
border: 1px solid var(--darker) !important;
}
.gl-border-b-gray-100 {
border-color: var(--darker) !important;
}
.gl-inset-border-1-gray-100 {
box-shadow: inset 0 0 0 1px var(--darker);
}
.gl-new-dropdown p {
color: var(--light) !important;
}
.gl-new-dropdown button[class*="close"] {
border-color: var(--t) !important;
background-color: var(--t) !important;
}
.gfm {
color: var(--light) !important;
}
.gfm.gfm-issue,
.gfm.gfm-merge_request,
.gfm.gfm-epic,
.gfm.gfm-milestone {
color: var(--accent) !important;
}
.gfm.gfm-commit,
.gfm.gfm-commit_range {
font-family: var(--mono-font);
}
.gfm.gfm-commit,
.gfm.gfm-commit_range > code {
color: var(--accent) !important;
}
.gfm-color_chip > span {
border-color: var(--t) !important;
}
.gfm.gfm-project_member {
z-index: 1;
padding: 1px 3px;
position: relative;
text-decoration: none !important;
transition: 0.2s ease;
font-weight: 500;
color: var(--accent) !important;
background-color: var(--t) !important;
}
.gfm.gfm-project_member::before {
z-index: -1;
content: "";
opacity: 0.2;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
transition: inherit;
border-radius: inherit;
background-color: var(--accent) !important;
}
.gfm.gfm-project_member:hover::before {
opacity: 0.4;
}
.gfm.gfm-project_member.current-user {
color: var(--white) !important;
background-color: var(--accent) !important;
}
.gfm.gfm-project_member.current-user:hover {
opacity: 0.7;
}
.suggestion {
color: var(--light) !important;
}
.suggestion-confidential.s16 {
fill: var(--orange) !important;
}
.suggestion-state-closed.s16 {
fill: var(--blue) !important;
}
.suggestion-state-open.s16 {
fill: var(--green) !important;
}
.gl-label {
background-color: var(--darker);
}
.gl-label-label-link {
background-color: var(--t) !important;
}
.gl-label-text-light {
text-shadow: 1px 1px 0 var(--shadow);
}
.gl-label-text-dark[style*="background-color"] + .gl-label-text-dark,
.gl-label-text-dark > .gl-label-link > span:nth-child(2),
.gl-label-text[style="color: rgb(51, 51, 51);"] {
color: var(--light) !important;
}
.gl-label[style*="--label-inset-border"]:not(:hover) [class*="text-scoped"] {
z-index: 1;
}
.gl-label[style*="--label-inset-border"]:not(:hover)::after {
z-index: 0;
content: "";
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
box-shadow: inset 0 0 0 1rem var(--shadow) !important;
}
.gl-label-link:not(#z),
.gfm-label:not(#z) {
color: inherit !important;
}
.gl-label-icon[href^="/help"] > .fa,
.gl-label-icon[href^="/help"] > svg {
color: var(--lighter) !important;
}
.gl-label-close svg {
fill: currentColor !important;
}
.gl-label:not([style*="label-background"]) {
background-color: var(--darker) !important;
}
.gfm-form[action$="tags"] .form-control,
.gfm-form[action$="tags"] .dropdown-menu-toggle {
background-color: var(--dark) !important;
}
.modal {
background-color: var(--t) !important;
}
.modal .modal-content {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.modal .modal-content .modal-header {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.modal .modal-content .modal-header .close {
color: var(--lighter) !important;
}
.modal .modal-content .modal-body {
background-color: var(--t) !important;
}
.modal .modal-content .modal-body .modal-subheader {
border-color: var(--darker) !important;
}
.modal .modal-content .modal-body table th {
color: var(--light) !important;
}
.modal .modal-content .modal-body table td {
color: var(--lighter) !important;
}
.modal .modal-content .modal-footer {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.modal .modal-content .modal-footer .btn-secondary {
background-color: var(--dark) !important;
}
.modal .modal-content .btn-clipboard:not(#z) {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.modal .modal-content .btn[href*="mailto:"] {
height: 34px;
}
.modal-backdrop {
opacity: 0.85 !important;
background-color: var(--bb) !important;
}
body.modal-open {
padding-right: 0px !important;
}
.dropzone-previews {
border-color: var(--darker) !important;
}
.markdown-selector {
color: var(--accent);
}
.design-dropzone-card .text-center {
color: var(--light) !important;
}
#add-projects-modal .gl-form-input {
background-color: var(--darken) !important;
}
#add-projects-modal .gl-infinite-scroll-container .btn {
background-color: var(--t) !important;
}
#add-projects-modal .gl-infinite-scroll-container .btn:focus,
#add-projects-modal .gl-infinite-scroll-container .btn.focus {
background-color: var(--darken) !important;
box-shadow: none !important;
}
#add-projects-modal .gl-infinite-scroll-legend {
color: var(--lighter) !important;
}
.modal-doorkeepr-auth > .modal-content {
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.modal-doorkeepr-auth > .modal-content .modal-header {
border-color: var(--darker) !important;
background-color: var(--t) !important;
}
.modal-doorkeepr-auth > .modal-content .modal-body {
background-color: var(--t) !important;
}
.modal-doorkeepr-auth > .modal-content .modal-body .form-actions {
background-color: var(--darken) !important;
}
.gl-popover {
font-family: var(--ui-font);
border-radius: 4px;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
box-shadow: var(--bshadow) !important;
}
.gl-popover-header {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.gl-popover-body {
padding: 8px;
color: var(--light) !important;
}
.gl-popover.blue {
background-color: var(--blue) !important;
}
.arrow {
color: var(--darken);
}
.gl-popover.blue .arrow {
color: var(--blue) !important;
}
[class*="-top"] .arrow::before {
border-top-color: var(--darker) !important;
}
[class*="-top"] .arrow::after {
border-top-color: inherit !important;
}
[class*="-bottom"] .arrow::before {
border-bottom-color: var(--darker) !important;
}
[class*="-bottom"] .arrow::after {
border-bottom-color: inherit !important;
}
[class*="-left"] .arrow::before {
border-left-color: var(--darker) !important;
}
[class*="-left"] .arrow::after {
border-left-color: inherit !important;
}
[class*="-right"] .arrow::before {
border-right-color: var(--darker) !important;
}
[class*="-right"] .arrow::after {
border-right-color: inherit !important;
}
.gpg-popover-icon.valid svg {
border-color: var(--green) !important;
fill: var(--green) !important;
}
.gpg-popover-icon.invalid svg {
border-color: var(--red) !important;
fill: var(--red) !important;
}
.gpg-popover-user-link {
color: var(--light) !important;
}
.gl-popover .milestone-popover-body {
background-color: var(--t) !important;
}
.gl-popover .milestone-popover-footer {
border-color: var(--darker) !important;
}
.gl-popover .js-user-status {
color: var(--lighter) !important;
}
.tooltip.show {
opacity: 1;
}
.tooltip-inner {
color: var(--light) !important;
background-color: var(--darken) !important;
border: 1px solid var(--darker);
box-shadow: var(--bshadow);
}
.tooltip-inner [class*="share"] {
color: var(--lighter) !important;
}
.tooltip-inner [class*="scoped-label"] {
color: var(--accent) !important;
}
.tooltip-inner .text-white-50 {
color: var(--lighter) !important;
opacity: 0.5;
}
.tooltip[class*="bottom"] .arrow::before {
border-bottom-color: var(--darker);
}
.tooltip[class*="right"] .arrow::before {
border-right-color: var(--darker);
}
.tooltip[class*="left"] .arrow::before {
border-left-color: var(--darker);
}
.tooltip[class*="top"] .arrow::before {
border-top-color: var(--darker);
}
.popover {
border: 1px solid var(--darker);
color: var(--light) !important;
background-color: var(--darken) !important;
box-shadow: var(--bshadow);
}
.popover-header {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.popover-body {
color: var(--light) !important;
}
.onboarding-helper-container {
background-color: var(--dark) !important;
box-shadow: inset 0 0 0 1px var(--darker), 0 4px 8px 0 var(--shadow);
}
.onboarding-helper-container .avatar {
border-radius: 50% !important;
background-color: var(--darker) !important;
box-shadow: inset 0 0 0 1px var(--darker);
}
.onboarding-helper-container .progress {
background-color: var(--darker) !important;
}
.onboarding-helper-container .bg-info {
background-color: var(--blue) !important;
}
.onboarding-helper-container .text-info {
color: var(--blue) !important;
}
.onboarding-helper-container .active {
background-color: var(--darker) !important;
}
.onboarding-helper-container .qa-toggle-btn {
background-color: var(--t) !important;
}
.onboarding-helper-container .qa-toggle-btn:hover svg {
fill: var(--light) !important;
}
.slead {
color: var(--lighter) !important;
}
.slead + hr + .no-repo-actions .btn-primary {
color: var(--accent) !important;
border-color: var(--accent) !important;
background-color: var(--t) !important;
}
.slead + hr + .no-repo-actions .btn-primary::before {
content: "";
background-color: var(--accent) !important;
}
.access-request-link {
border-color: var(--darker) !important;
}
.home-panel-description + p time {
color: var(--light) !important;
}
.git-empty h5 {
color: var(--light) !important;
}
.git-empty pre.bg-light {
background-color: var(--darken) !important;
border-radius: 4px;
}
.info-well {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.info-well .commit-row-message,
.info-well .committer a {
color: var(--light) !important;
}
.info-well .commit-actions {
align-self: center;
}
.info-well .branch-info {
border-color: var(--darker) !important;
}
.info-well .branch-info .badge {
background-color: var(--darker) !important;
}
.info-well .branch-info .cgray {
color: var(--light) !important;
}
.info-well svg path {
fill: var(--lighter) !important;
}
.info-well .limit-box {
color: var(--white) !important;
background-color: var(--red) !important;
}
.info-well .limit-box .fa {
color: var(--white) !important;
}
.info-well .branches .s12 {
margin-top: 2px;
}
.info-well .well-segment {
border-color: var(--darker) !important;
}
.info-well .well-segment code:not([class]) {
background-color: var(--dark) !important;
}
.table-holder.bordered-box {
border: none !important;
}
.blame tr:not(:first-child) > td {
border-top: 1px solid var(--darker) !important;
}
.file-blame-legend {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.blame-commit {
position: relative;
padding-left: 12px !important;
border-left: none !important;
}
.blame-commit::before {
content: "";
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 4px;
}
.blame-commit .commit > a[href] > img {
margin-right: 10px;
}
.blame .blame-commit:not(#z) {
background-color: var(--darken) !important;
}
.blame-commit + .line-numbers:not(#z) {
border-left: 1px solid var(--darker) !important;
background-color: var(--darken) !important;
border-radius: 0;
}
.blame .commit-author-link,
.blame .cdark {
color: var(--light) !important;
}
.blame .commit-sha {
color: var(--accent) !important;
}
.legend-box-0,
.blame-commit-age-0::before {
background-color: var(--green) !important;
opacity: 0.099;
}
.legend-box-1,
.blame-commit-age-1::before {
background-color: var(--green) !important;
opacity: 0.199;
}
.legend-box-2,
.blame-commit-age-2::before {
background-color: var(--green) !important;
opacity: 0.299;
}
.legend-box-3,
.blame-commit-age-3::before {
background-color: var(--green) !important;
opacity: 0.399;
}
.legend-box-4,
.blame-commit-age-4::before {
background-color: var(--green) !important;
opacity: 0.499;
}
.legend-box-5,
.blame-commit-age-5::before {
background-color: var(--green) !important;
opacity: 0.599;
}
.legend-box-6,
.blame-commit-age-6::before {
background-color: var(--green) !important;
opacity: 0.699;
}
.legend-box-7,
.blame-commit-age-7::before {
background-color: var(--green) !important;
opacity: 0.799;
}
.legend-box-8,
.blame-commit-age-8::before {
background-color: var(--green) !important;
opacity: 0.899;
}
.legend-box-9,
.blame-commit-age-9::before {
background-color: var(--green) !important;
opacity: 0.999;
}
.readme-holder {
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.readme-holder [class*="file-title"] {
padding: 10px 16px;
border-radius: 4px 4px 0 0;
}
.readme-holder [class*="file-title"] strong {
font-weight: normal;
}
.readme-holder [class*="file-title"] a:not(.btn) {
color: var(--light) !important;
}
.readme-holder .file-content {
background-color: var(--t) !important;
}
.readme-holder .file-content [dir][align="left"] {
text-align: left;
}
.readme-holder .file-content [dir][align="right"] {
text-align: right;
}
.readme-holder .file-content [dir][align="center"] {
text-align: center;
}
.readme-holder .file-content a img:not(.emoji) {
box-sizing: content-box;
margin: 0 !important;
background-color: var(--dark) !important;
}
.readme-holder .file-content a img:not(.emoji)[align="left"] {
padding-right: 20px;
}
.readme-holder .file-content a img:not(.emoji)[align="right"] {
padding-left: 20px;
}
.readme-holder .file-content h1,
.readme-holder .file-content h2,
.readme-holder .file-content h3,
.readme-holder .file-content h4,
.readme-holder .file-content h5,
.readme-holder .file-content h6 {
position: relative;
}
.readme-holder .file-content::before,
.readme-holder .file-content::after {
content: "";
display: table;
}
.readme-holder .file-content::after {
clear: both;
}
.committer {
color: var(--lighter) !important;
}
.commit .commit-author-link {
color: var(--light) !important;
}
.commit a,
.generic-commit-status a {
color: var(--light);
}
.commit-header {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.commit-header:first-child {
border-top-width: 1px;
}
.commit-message-container {
font-family: var(--mono-font);
background-color: var(--t) !important;
}
.ci-job-name-component > .gl-text-truncate {
max-width: 100%;
margin-right: 35px;
}
.pipeline-graph.pipeline-tab-content {
background-color: var(--darken) !important;
}
.pipeline-graph .build {
width: 100% !important;
margin-bottom: 5px;
}
.pipeline-graph .build-content {
border-color: var(--darker) !important;
background-color: var(--dark) !important;
transition: none !important;
padding: 5px 5px !important;
}
.pipeline-graph .build-content:hover {
color: var(--lighter) !important;
background-color: var(--bb) !important;
}
.pipeline-graph .build .linked-pipeline-content {
border-color: var(--darker) !important;
background-color: var(--dark) !important;
border-radius: 8px !important;
}
.pipeline-graph .build .linked-pipeline-content::before {
content: unset !important;
}
.pipeline-graph .build .linked-pipeline-content:hover {
background-color: var(--bb) !important;
}
.pipeline-graph .curve::before,
.pipeline-graph .build:not(first-child)::before,
.stage-container::before,
.pipeline-graph .curve::after,
.pipeline-graph .build:not(first-child)::after,
.stage-container::after {
border-color: var(--darker) !important;
}
.ci-build-text,
.ci-status-text {
font-weight: normal !important;
color: var(--light) !important;
}
div[class*="mini-pipe"]:focus {
box-shadow: 0 0 4px 0px var(--accent) !important;
}
div[class*="mini-pipe"] li:hover [class*="dropdown-item"] {
background-color: var(--darker) !important;
}
.pipeline-graph .stage-column .curve::before,
.pipeline-graph .stage-column .curve::after {
top: -24px;
}
.pipeline-graph .stage-column .build:nth-child(2)::before,
.pipeline-graph .stage-column .build:nth-child(2)::after {
height: 24px;
top: -4px;
}
.build-page .top-bar {
z-index: 99;
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
border-radius: 4px 4px 0 0;
top: 49px !important;
}
.build-page .job-log {
border: 1px solid var(--darker);
border-top: none;
color: var(--light) !important;
background-color: var(--dark) !important;
box-shadow: none;
border-radius: 0 0 4px 4px;
}
.build-page .line-number {
color: var(--lighter) !important;
}
.build-page .collapsible-line .log-duration-badge {
background-color: var(--darker) !important;
}
.build-page .collapsible-line:hover {
background-color: var(--darken) !important;
}
.build-page .term-fg-l-red {
color: var(--red) !important;
}
.build-page .term-fg-l-blue {
color: var(--blue) !important;
}
.build-page .term-fg-l-cyan {
color: var(--cyan) !important;
}
.build-page .term-fg-l-green {
color: var(--green) !important;
}
.build-page .term-fg-l-yellow {
color: var(--yellow) !important;
}
.build-page .term-fg-l-magenta {
color: var(--magenta) !important;
}
.build-page div.build-trace-container {
padding-right: 0 !important;
}
.build-trace {
border: 1px solid var(--darker);
color: var(--light) !important;
background-color: var(--darken) !important;
}
.build-trace-container {
padding-right: 16px !important;
}
.detail-page-header {
color: var(--lighter) !important;
border-color: var(--darker) !important;
}
.author {
color: var(--light) !important;
}
.detail-page-header a {
color: var(--lighter);
}
.detail-page-header-body .issuable-warning-icon {
background-color: var(--darker) !important;
}
.detail-page-header-body .issuable-warning-icon svg {
fill: var(--orange) !important;
}
.detail-page-description,
.detail-page-description .title {
border-color: var(--darker) !important;
}
.page-content-header time,
.page-content-header [class*="-link"] {
color: var(--light) !important;
}
.page-content-header .header-content a {
color: var(--light) !important;
}
.detail-page-description .title {
color: var(--light) !important;
}
.detail-page-description small {
color: var(--lighter) !important;
}
.edited-text,
.edited-text .author-link {
color: var(--lighter) !important;
}
.filtered-search-box {
border-radius: 4px;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
min-height: 36px;
}
.filtered-search-box ul {
padding: 0 !important;
}
.filtered-search-box input {
padding-left: 12px !important;
border: none !important;
background-color: var(--t) !important;
}
.filtered-search-box input:focus {
box-shadow: none !important;
}
.filtered-search-box .clear-search {
border-radius: 4px;
background-color: var(--dark) !important;
}
.filtered-search-box.focus {
border-color: var(--blue) !important;
}
.filtered-search-box-input-container {
background-color: var(--t) !important;
}
.filtered-search-token .name,
.filtered-search-term .name,
.filtered-search-token .operator,
.filtered-search-term .operator,
.filtered-search-token .value-container,
.filtered-search-term .value-container {
color: var(--light) !important;
background-color: var(--darker) !important;
}
.filtered-search-token:first-child {
margin-left: 5px;
}
.filtered-search-token > .name,
.filtered-search-term > .name {
background-color: var(--t) !important;
}
.mr-state-widget .mr-source-target {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.mr-widget-heading {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.mr-state-widget .mr-widget-extension {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
box-shadow: 0 1px var(--darker) !important;
}
.mr-state-widget .mr-widget-extension:last-child {
border-radius: 0 0 3px 3px;
}
.mr-state-widget .mr-widget-extension .label-branch {
background-color: var(--dark) !important;
}
.mr-state-widget .mr-widget-extension + .border-top > table:not(#z) {
margin-bottom: 0px !important;
border: none !important;
border-radius: 0 0 3px 3px !important;
}
.mr-state-widget
.mr-widget-extension
+ .border-top
> table:not(#z)
thead
> tr
> th {
background-color: var(--bb) !important;
}
.mr-state-widget .mr-section-container {
border: 1px solid var(--darker) !important;
background-color: var(--dark) !important;
}
.mr-state-widget .mr-section-container::before {
border-color: var(--darken) !important;
}
.mr-state-widget .mr-section-container > .mr-widget-section {
border-radius: 0;
color: var(--light) !important;
border-color: var(--darker) !important;
}
.mr-state-widget .mr-section-container .mr-widget-help {
color: var(--lighter) !important;
}
.mr-state-widget .mr-section-container .mr-widget-empty-state {
color: var(--light) !important;
}
.mr-widget-workflow::before {
border-width: 2px;
border-color: var(--darken) !important;
}
.mr-widget-workflow > :first-child {
border-top: none;
}
.mr-state-widget .mr-widget-border-top {
border-color: var(--darker) !important;
}
.mr-state-widget .mr-widget-info {
color: var(--light) !important;
}
.report-block {
color: var(--light) !important;
}
.report-block-list-issue-parent {
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.report-block-list-issue-description {
color: var(--light) !important;
}
.report-block-container {
border-color: var(--darker) !important;
background-color: var(--bb) !important;
}
.failed > svg {
fill: var(--red) !important;
}
.neutral > svg {
fill: var(--lighter) !important;
}
.success > svg {
fill: var(--green) !important;
}
.mr-state-widget .border-top {
border-color: var(--darker) !important;
}
.mr-state-widget .border-top .table tr:not(:first-child) > td {
border-top: 1px solid var(--darker) !important;
}
.mr-state-widget .mr-widget-body.media .square + button {
margin-right: 10px;
}
.mr-state-widget .mr-widget-body.media .bold {
margin-left: 0;
color: var(--lighter) !important;
}
.mr-state-widget .deploy-heading,
.mr-state-widget .merge-train-position-indicator {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.linked-pipeline-mini-list.is-downstream > svg.arrow-icon + a[href] {
margin-top: 5px !important;
}
.linked-pipeline-mini-list.is-downstream [class*="ci-status"] {
background-color: var(--darken) !important;
}
.linked-pipeline-mini-list.is-downstream [class*="ci-status"],
.linked-pipeline-mini-list.is-downstream [class*="ci-status"] .s16 {
width: 24px !important;
height: 24px !important;
}
.linked-pipeline-mini-list.is-downstream [class*="ci-status"]:hover > .s16 {
width: 22px !important;
height: 22px !important;
}
.mr-state-widget .ci-widget {
color: var(--light) !important;
}
.mr-state-widget .mr-widget-footer {
border-color: var(--darker) !important;
}
.mr-state-widget .mr-widget-footer .btn-link {
color: var(--accent) !important;
}
.mr-state-widget .pipeline-number,
.mr-state-widget .commit-sha,
.mr-state-widget .label-branch {
padding: 0.2em 0.4em;
font-weight: normal !important;
color: var(--accent);
background-color: var(--darken) !important;
border-radius: 4px;
box-shadow: inset 0 0 0 1px var(--darker);
}
.mr-state-widget .pipeline-number.label-truncate > a,
.mr-state-widget .commit-sha.label-truncate > a,
.mr-state-widget .label-branch.label-truncate > a {
line-height: 1.2 !important;
}
.mr-state-widget .bold,
.mr-state-widget .media-body,
.mr-state-widget .code-text,
.mr-state-widget .label-branch {
color: var(--light) !important;
}
.mr-state-widget .diverged-commits-count,
.mr-state-widget .coverage {
color: var(--lighter) !important;
}
.wiki-last-edit-by {
color: var(--lighter) !important;
}
.wiki-last-edit-by strong {
color: var(--light) !important;
}
.wiki-sidebar.right-sidebar a {
color: var(--lighter) !important;
}
.wiki-sidebar.right-sidebar .active a {
color: var(--accent) !important;
}
.wiki-sidebar.right-sidebar .btn {
background-color: var(--dark) !important;
}
.wiki-form .form-control {
background-color: var(--dark) !important;
}
.wiki-page-header + .table-holder > table {
margin-top: 10px;
border: 1px solid var(--darker);
}
.wiki-page-header + .table-holder > table thead > tr > th {
border-top: none;
}
.wiki-page-header + .table-holder > table tbody > tr:hover {
background-color: var(--bb) !important;
}
.cluster-application-row {
background-color: var(--darken) !important;
}
.cluster-application-row img.avatar:not(.identicon) {
background-color: 0 0 unset !important;
}
.clusters-container .clusters-table {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.project-visibility-setting,
.project-feature-settings,
.sub-section {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.project-visibility-setting .bs-callout,
.project-feature-settings .bs-callout,
.sub-section .bs-callout {
background-color: var(--darker) !important;
}
.settings {
border-color: var(--darker) !important;
}
.project-feature-row .form-control {
background-color: var(--dark) !important;
}
.settings-message {
color: var(--orange) !important;
border-color: var(--orange) !important;
background-color: var(--dark) !important;
}
.settings .account-well {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.settings .account-well li > code {
background-color: var(--dark) !important;
}
.settings .protected-branches-list > .table-bordered {
border: none !important;
}
.settings .protected-tags-list {
border: 1px solid var(--darker) !important;
border-radius: 4px;
}
.settings-content .sub-section {
border-radius: 4px;
}
.settings-content .sub-section .btn-default,
.settings-content .sub-section .form-control,
.settings-content .sub-section .select2-choice {
background-color: var(--dark) !important;
}
.settings-content .sub-section .btn-warning {
transition: opacity 0.2s ease;
color: var(--white) !important;
background-color: var(--orange) !important;
}
.settings-content .sub-section .btn-warning:hover {
opacity: 0.8;
}
.settings-content .sub-section .btn-warning::before {
content: unset !important;
}
.project-badges {
margin-top: -0.5rem;
}
.project-badges img {
margin-top: 0.5rem;
border-radius: 4px;
}
.file-holder {
border-color: var(--darker) !important;
}
.file-holder .file-title {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.file-holder .file-title-flex-parent {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.file-holder .file-title-flex-parent .btn svg {
fill: var(--lighter) !important;
}
.file-holder .file-title-flex-parent .btn.active {
background-color: var(--darker) !important;
}
.file-holder .file-title-flex-parent .btn,
.file-holder .file-title-flex-parent .btn-default {
background-color: var(--dark) !important;
}
.file-holder .file-title-flex-parent .btn-danger-secondary {
color: var(--red) !important;
border-color: var(--red) !important;
}
.file-holder .file-title-flex-parent .btn-default-tertiary:not(#z) {
border-color: var(--t) !important;
background-color: var(--t) !important;
}
.file-holder .file-title-flex-parent .btn-primary:not(.btn-inverted),
.file-holder .file-title-flex-parent .btn-info:not(.btn-inverted) {
background-color: var(--blue) !important;
}
.file-holder .file-title-flex-parent .btn-primary svg,
.file-holder .file-title-flex-parent .btn-info svg {
fill: var(--white) !important;
}
.file-holder .file-title a:not(.btn),
.file-holder .file-title-flex-parent a:not(.btn) {
color: var(--light) !important;
}
.file-holder .file-title-name {
color: var(--light) !important;
}
.file-holder .file-content {
background-color: var(--dark) !important;
border-radius: 0 0 3px 3px;
}
.file-holder .file-content pre.code.highlight.white:not([lang]) {
background-color: var(--dark) !important;
}
.code.white .line-numbers,
.code.none .line-numbers,
.code.white .diff-line-num,
.code.none .diff-line-num {
background-color: var(--darken) !important;
}
.code.white .line-numbers a,
.code.none .line-numbers a,
.code.white .diff-line-num a,
.code.none .diff-line-num a {
font-family: var(--mono-font);
color: var(--lighter) !important;
}
.code.white code > span.line:hover,
.code.none code > span.line:hover {
background-color: var(--darken) !important;
}
.code.white .line-numbers > .diff-line-num,
.code.none .line-numbers > .diff-line-num {
background-color: var(--t) !important;
}
.code.white .line_expansion,
.code.none .line_expansion {
background-color: var(--darken) !important;
}
.code.white .line_expansion td,
.code.none .line_expansion td {
border-color: var(--darker) !important;
}
.code.white .line_expansion a,
.code.none .line_expansion a,
.code.white .line_expansion span,
.code.none .line_expansion span {
color: var(--lighter) !important;
}
.code.white .line_expansion:not(:first-of-type) > td,
.code.none .line_expansion:not(:first-of-type) > td {
border-top: 1px solid var(--darker) !important;
}
.code.white pre .hll,
.code.none pre .hll {
z-index: 1 !important;
position: relative;
background-color: var(--t) !important;
}
.code.white pre .hll::before,
.code.none pre .hll::before {
content: "";
z-index: -1 !important;
opacity: 0.2;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: var(--yellow) !important;
}
.code.white .new .idiff,
.code.none .new .idiff {
color: var(--light) !important;
background-color: var(--t) !important;
box-shadow: inset 0 0 0 1rem rgba(79, 88, 0, 0.75);
}
.code.white .old .idiff,
.code.none .old .idiff {
color: var(--light) !important;
background-color: var(--t) !important;
box-shadow: inset 0 0 0 1rem rgba(117, 0, 0, 0.65);
}
.code.white pre.code {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.code.none pre.code {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.code.none pre.code .line span {
color: var(--light) !important;
}
.code.white .line > a {
color: var(--blue) !important;
}
.code.white .err {
color: var(--white) !important;
background-color: var(--red) !important;
}
.code.white .gi {
color: var(--green) !important;
background-color: var(--bb) !important;
}
.code.white .gd {
color: var(--red) !important;
background-color: var(--bb) !important;
}
.code.white .c,
.code.white .cm,
.code.white .c1,
.code.white .gh,
.code.white .nn,
.code.white .go,
.code.white .gt {
color: var(--lighter) !important;
}
.code.white .n,
.code.white .cp,
.code.white .gp,
.code.white .s,
.code.white .s1 {
color: var(--light) !important;
}
.code.white .no,
.code.white .na,
.code.white .nb {
color: var(--cyan) !important;
}
.code.white .sx,
.code.white .se,
.code.white .sh,
.code.white .s2 {
color: var(--red) !important;
}
.code.white .sr,
.code.white .vi,
.code.white .mf,
.code.white .ne,
.code.white .nv {
color: var(--green) !important;
}
.code.white .nt,
.code.white .m,
.code.white .mi,
.code.white .mh {
color: var(--blue) !important;
}
.code.white .nf,
.code.white .ss,
.code.white .si,
.code.white .nc {
color: var(--magenta) !important;
}
.code.white .ni,
.code.white .gu,
.code.white .sb,
.code.white .kt {
color: var(--violet) !important;
}
.file-title,
.file-title-flex-parent {
border-top: 1px solid var(--darker) !important;
border-radius: 4px 4px 0 0;
}
.diff-file .file-title,
.diff-file .file-title-flex-parent {
top: 165px;
}
.diff-file.conflict .file-title,
.diff-file.conflict .file-title-flex-parent {
top: 49px !important;
}
.diff-file .file-title.is-commit,
.diff-file .file-title-flex-parent.is-commit,
.diff-file .file-title.is-compare,
.diff-file .file-title-flex-parent.is-compare {
top: 117px;
}
.sticky-placeholder + div .is-commit {
top: 86px !important;
}
.diff-file .file-title,
.diff-file .file-title-flex-parent {
box-shadow: none !important;
}
.diff-file .file-title .btn:not(.active),
.diff-file .file-title-flex-parent .btn:not(.active) {
background-color: var(--dark) !important;
}
.diff-file .file-title::before,
.diff-file .file-title-flex-parent::before {
background-color: var(--bb) !important;
}
.diff-file .diff-content {
color: var(--light) !important;
background-color: var(--dark) !important;
}
.nothing-here-block {
color: var(--lighter) !important;
}
.nothing-here-block .click-to-expand {
color: var(--accent) !important;
border-color: var(--t) !important;
background-color: var(--t) !important;
}
.diff-file .diff-content .image {
background-color: var(--dark) !important;
}
.diff-file .diff-content .image .frame {
background-color: var(--t) !important;
}
.diff-file .diff-content .image .frame.added {
border-color: var(--green) !important;
}
.diff-file .diff-content .image .frame.deleted {
border-color: var(--red) !important;
}
.diff-file .diff-content .image .frame img {
background-image: linear-gradient(
45deg,
var(--darker) 25%,
var(--t) 25%,
var(--t) 75%,
var(--darker) 75%,
var(--darker) 100%
),
linear-gradient(
45deg,
var(--darker) 25%,
var(--t) 25%,
var(--t) 75%,
var(--darker) 75%,
var(--darker) 100%
);
border-color: var(--darker) !important;
}
.diff-file .diff-content .image .frame img:-moz-broken::before {
content: "broken image";
}
.diff-file .diff-content .image-info {
color: var(--lighter) !important;
}
.diff-file .diff-content .image ~ .note-container {
border-color: var(--t) !important;
background-color: var(--t) !important;
}
.diff-file .diff-content .view-modes {
background-color: var(--t) !important;
}
.diff-file .diff-content .view-modes li {
color: var(--lighter) !important;
border-color: var(--darker) !important;
}
.diff-file .diff-content .view-modes .active {
color: var(--light) !important;
}
.diff-file .diff-content .notes_holder td {
border-top-color: var(--darker) !important;
}
.diff-file .diff-content .notes_holder td,
.diff-file .diff-content .diff-discussions {
border-bottom-color: var(--darker) !important;
}
.diff-files-changed {
border-color: var(--darker) !important;
background-color: var(--bb) !important;
top: 49px;
}
.diff-files-changed > div > .dropdown {
margin-left: 0;
padding-left: 0;
background-color: var(--t) !important;
}
.cred:not(#z) {
color: var(--red) !important;
fill: var(--red) !important;
}
.cgreen:not(#z) {
color: var(--green) !important;
fill: var(--green) !important;
}
.diff-changed-file-path {
color: var(--lighter) !important;
}
.diff-files-changed [class*="summary-toggle"] {
color: var(--blue) !important;
background-color: var(--t) !important;
}
.diff-files-changed [class*="summary-toggle"]::before {
content: unset;
}
.diff-file.is-active {
box-shadow: var(--bshadow) !important;
}
.diff-tree-list {
top: 165px !important;
}
.diff-tree-list .drag-handle:hover {
background-color: var(--darken) !important;
}
.diff-tree-list .drag-handle.is-dragging {
background-color: var(--darker) !important;
}
.diff-tree-list .file-row:hover,
.diff-tree-list .file-row:focus {
background-color: var(--darken) !important;
}
.diff-tree-list .file-row-header.bg-white {
background-color: var(--bb) !important;
}
.diff-tree-list .file-row.is-active {
background-color: var(--darker) !important;
}
.diff-file.conflict {
border-top: none !important;
}
.diff-file.conflict .head,
.diff-file.conflict .origin {
position: relative;
}
.diff-file.conflict .head::before,
.diff-file.conflict .origin::before {
content: "";
opacity: 0.35;
position: absolute;
pointer-events: none;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.diff-file.conflict .line_content:not(.header).head::before,
.diff-file.conflict .line_content:not(.header).origin::before {
opacity: 0.25;
}
.diff-file.conflict .line_content:not(.header).selected::before {
opacity: 0.25 !important;
}
.diff-file.conflict .unselected:not(#z)::before {
background-color: var(--darker) !important;
}
.diff-file.conflict .unselected .btn {
opacity: 0.5;
}
.diff-file.conflict .selected::before {
opacity: 0.5 !important;
}
.diff-file.conflict .head::before,
.diff-file.conflict .head > .btn {
border-color: var(--green) !important;
background-color: var(--green) !important;
}
.diff-file.conflict .origin::before,
.diff-file.conflict .origin > .btn {
border-color: var(--blue) !important;
background-color: var(--blue) !important;
}
.diff-file.conflict .editor-wrap.saved .editor {
border-color: var(--green) !important;
}
.code.white,
.code.none {
color: var(--light);
background-color: var(--dark);
}
.code.white .line_holder:not(#z) > td,
.code.none .line_holder:not(#z) > td {
color: var(--light) !important;
}
button.add-diff-note {
padding: 0 0 1px 1px;
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
button.add-diff-note:hover {
background-color: var(--darken) !important;
}
.code.white .line_holder .unfold:not(#z),
.code.none .line_holder .unfold:not(#z) {
color: var(--lighter) !important;
}
.code.white .line_holder .unfold:not(#z)::before,
.code.none .line_holder .unfold:not(#z)::before {
content: unset;
}
.code.white .line_holder.match:not(#z),
.code.none .line_holder.match:not(#z),
.code.white .line_holder.new-nonewline:not(#z),
.code.none .line_holder.new-nonewline:not(#z) {
background-color: var(--darken) !important;
}
.code.white .line_holder.match:not(#z) .line_content,
.code.none .line_holder.match:not(#z) .line_content,
.code.white .line_holder.new-nonewline:not(#z) .line_content,
.code.none .line_holder.new-nonewline:not(#z) .line_content {
color: var(--lighter) !important;
}
.code.white .line_holder .diff-line-num,
.code.none .line_holder .diff-line-num {
z-index: 1;
padding-right: 11px;
border-right: none !important;
box-shadow: inset -1px 0 var(--darker);
}
.code.white .line_holder .diff-line-num.new::after,
.code.none .line_holder .diff-line-num.new::after,
.code.white .line_holder .diff-line-num.old::after,
.code.none .line_holder .diff-line-num.old::after {
content: "";
z-index: -1;
opacity: 0.25;
top: 0;
right: 0;
bottom: 0;
left: 0;
position: absolute;
pointer-events: none;
}
.code.white .line_holder .diff-line-num.is-over::before,
.code.none .line_holder .diff-line-num.is-over::before {
content: "";
z-index: -1;
opacity: 0.45;
top: 0;
right: 0;
bottom: 0;
left: 0;
position: absolute;
pointer-events: none;
}
.code.white .line_holder .diff-line-num.old::after,
.code.none .line_holder .diff-line-num.old::after {
background-color: var(--red) !important;
}
.code.white .line_holder .diff-line-num.new::after,
.code.none .line_holder .diff-line-num.new::after {
background-color: var(--green) !important;
}
.code.white .line_holder .diff-line-num.is-over::before,
.code.none .line_holder .diff-line-num.is-over::before {
background-color: var(--darker) !important;
}
:not(#z) .code.white .line_holder .diff-line-num:not(.new):not(.old),
:not(#z) .code.none .line_holder .diff-line-num:not(.new):not(.old) {
background-color: var(--darken) !important;
}
.code.white .line_holder > [class*="line"]:not([class*="num"]),
.code.none .line_holder > [class*="line"]:not([class*="num"]) {
position: relative;
z-index: 1;
background-color: var(--t) !important;
}
.code.white .line_holder > [class*="line"]:not([class*="num"]).new,
.code.none .line_holder > [class*="line"]:not([class*="num"]).new,
.code.white .line_holder > [class*="line"]:not([class*="num"]).old,
.code.none .line_holder > [class*="line"]:not([class*="num"]).old {
background-color: var(--t) !important;
}
.code.white .line_holder > [class*="line"]:not([class*="num"]).new::after,
.code.none .line_holder > [class*="line"]:not([class*="num"]).new::after,
.code.white .line_holder > [class*="line"]:not([class*="num"]).old::after,
.code.none .line_holder > [class*="line"]:not([class*="num"]).old::after {
content: "";
z-index: -1;
opacity: 0.18;
position: absolute;
pointer-events: none;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.code.white .line_holder > [class*="line"]:not([class*="num"]).old::before,
.code.none .line_holder > [class*="line"]:not([class*="num"]).old::before {
color: var(--red) !important;
}
.code.white .line_holder > [class*="line"]:not([class*="num"]).old::after,
.code.none .line_holder > [class*="line"]:not([class*="num"]).old::after {
background-color: var(--red) !important;
}
.code.white .line_holder > [class*="line"]:not([class*="num"]).new::before,
.code.none .line_holder > [class*="line"]:not([class*="num"]).new::before {
color: var(--green) !important;
}
.code.white .line_holder > [class*="line"]:not([class*="num"]).new::after,
.code.none .line_holder > [class*="line"]:not([class*="num"]).new::after {
background-color: var(--green) !important;
}
.diff-comment-avatar,
.diff-comments-more-count {
border-color: var(--dark) !important;
}
.diff-comments-more-count,
.diff-notes-collapse {
border-radius: var(--avatar);
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.js-temp-notes-holder td {
border-color: var(--darker) !important;
}
.code.white .line_holder.diff-expanded > .line_content,
.code.none .line_holder.diff-expanded > .line_content {
background-color: var(--darken) !important;
}
.code.white .line_holder.diff-expanded > .diff-line-num,
.code.none .line_holder.diff-expanded > .diff-line-num {
box-shadow: none !important;
}
.code.white .line_holder.diff-expanded > td,
.code.none .line_holder.diff-expanded > td,
.code.white .line_holder.diff-expanded + :not(.diff-expanded) > td,
.code.none .line_holder.diff-expanded + :not(.diff-expanded) > td {
border-color: var(--darker) !important;
}
.code.white
.line_holder[class*="holder"]:not(.new):not(.old):hover
> td[class*="line"]:not(.match)::before,
.code.none
.line_holder[class*="holder"]:not(.new):not(.old):hover
> td[class*="line"]:not(.match)::before {
content: "";
z-index: -1;
opacity: 0.5;
top: 0;
right: 0;
bottom: 0;
left: 0;
position: absolute;
pointer-events: none;
background-color: var(--darker) !important;
}
.code.white .line_holder.old:hover > .diff-line-num::after,
.code.none .line_holder.old:hover > .diff-line-num::after,
.code.white .line_holder.new:hover > .diff-line-num::after,
.code.none .line_holder.new:hover > .diff-line-num::after {
opacity: 0.3 !important;
}
.code.white
.line_holder.old:hover
> td[class*="line"]:not([class*="num"])::after,
.code.none
.line_holder.old:hover
> td[class*="line"]:not([class*="num"])::after,
.code.white
.line_holder.new:hover
> td[class*="line"]:not([class*="num"])::after,
.code.none
.line_holder.new:hover
> td[class*="line"]:not([class*="num"])::after {
opacity: 0.3 !important;
}
.code.white.white,
.code.none.white {
color: var(--light);
background-color: var(--t);
}
.code.white tbody > tr.line_expansion.match:last-child > td,
.code.none tbody > tr.line_expansion.match:last-child > td {
border-bottom: none !important;
}
.group-list-tree::before {
border-color: var(--darker) !important;
}
.group-list-tree .folder-caret,
.group-list-tree .item-type-icon {
color: var(--lighter) !important;
}
.group-list-tree .group-row {
border-color: var(--darker) !important;
}
.group-list-tree .group-row a {
color: var(--light) !important;
}
.group-list-tree .group-row::before {
border-color: var(--darker) !important;
}
.group-list-tree .group-row-contents:hover {
background-color: var(--darken) !important;
}
.group-list-tree .group-row:last-child::before {
background-color: var(--bb) !important;
}
.group-list-tree .group-row .metadata {
margin-right: 10px;
}
.group-list-tree .group-row .description p,
.group-list-tree .group-row .stat-value {
color: var(--lighter) !important;
}
.group-list-tree .group-row .identicon.s40 {
line-height: 30px;
}
.group-list-tree .folder-caret {
margin-left: 10px;
}
.cover-block {
background-color: var(--darken) !important;
}
.cover-title,
.cover-status,
.cover-desc {
color: var(--light) !important;
}
.cover-controls .btn {
background-color: var(--dark) !important;
}
.calendar-hint {
color: var(--lighter) !important;
}
.calendar svg.contrib-calendar > g text {
fill: var(--light) !important;
}
.calendar svg.contrib-calendar > g rect {
fill: var(--accent) !important;
}
.calendar svg.contrib-calendar > g rect[fill="#ededed"] {
opacity: 0.06;
}
.calendar svg.contrib-calendar > g rect[fill^="rgb(17"] {
opacity: 0.2;
}
.calendar svg.contrib-calendar > g rect[fill^="rgb(12"] {
opacity: 0.45;
}
.calendar svg.contrib-calendar > g rect[fill^="rgb(82"] {
opacity: 0.7;
}
.calendar svg.contrib-calendar > g rect[fill^="rgb(37"] {
opacity: 1;
}
.user-profile .projects-block,
.user-profile .activities-block {
padding: 0 12px;
background-color: var(--darken) !important;
border-radius: 4px;
}
.user-profile .activities-block [data-href] {
min-height: 40px;
}
.user-profile .activities-block [data-href] .hide:first-child:last-child {
display: flex !important;
justify-content: center;
}
.user-profile .activities-block [data-href] .hide:first-child:last-child > div {
display: none;
}
.user-profile
.activities-block
[data-href]
.hide:first-child:last-child::before {
content: "No recent activities";
font-size: 15px;
color: var(--light) !important;
}
.roadmap-container .roadmap-shell {
border-color: var(--darker) !important;
border-top: 1px solid var(--darker);
}
.roadmap-container .timeline-header-blank,
.roadmap-container .timeline-header-item {
border-color: var(--darker) !important;
background-color: var(--bb) !important;
}
.roadmap-container .timeline-header-blank::before {
border-color: var(--darker) !important;
box-shadow: none !important;
background: linear-gradient(
to bottom,
var(--shadow) 0%,
var(--t) 100%
) !important;
}
.roadmap-container .timeline-header-item .item-label {
color: var(--light) !important;
border-color: var(--darker) !important;
}
.roadmap-container .timeline-header-item .item-sublabel .sublabel-value {
color: var(--lighter) !important;
}
.roadmap-container .timeline-header-item .item-sublabel .label-bold {
color: var(--light) !important;
}
.roadmap-container .milestones-list-title {
background-color: var(--bb) !important;
}
.roadmap-container .milestones-list-title::after {
width: 4px;
right: -4px;
background: linear-gradient(to right, var(--shadow) 0%, var(--t) 100%);
}
.roadmap-container .milestone-start-and-end {
border-color: var(--darker) !important;
}
.roadmap-container .milestone-timeline-cell {
background-color: var(--dark) !important;
}
.roadmap-container .milestone-item-details {
color: var(--lighter) !important;
}
.roadmap-container .milestone-item-details .timeline-bar,
.roadmap-container .milestone-item-details .timeline-bar::before {
background-color: var(--lighter) !important;
}
.roadmap-container .milestone-item-details .timeline-bar::after {
border-color: var(--lighter) !important;
background-color: var(--light) !important;
}
.roadmap-container .milestone-url {
color: var(--lighter) !important;
}
.roadmap-container .milestone-item-details:hover .timeline-bar,
.roadmap-container .milestone-item-details:hover .timeline-bar::before {
background-color: var(--light) !important;
}
.roadmap-container .milestone-item-details:hover .milestone-url {
color: var(--light) !important;
}
.roadmap-container .epic-bar {
background-color: var(--blue) !important;
}
.roadmap-container .epic-bar-child-epic {
border-color: var(--blue) !important;
background-color: var(--bb) !important;
}
.roadmap-container .epic-bar-child-epic p,
.roadmap-container .epic-bar-child-epic svg {
color: var(--blue) !important;
}
.roadmap-container .epic-bar-child-epic .progress-bar {
background-color: var(--blue) !important;
}
.roadmap-container .epic-details-cell {
border-color: var(--darker) !important;
background-color: var(--bb) !important;
}
.roadmap-container .epic-timeline-cell {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.roadmap-container .epics-list-item:hover > .epic-timeline-cell {
background-color: var(--bb) !important;
}
.roadmap-container .epic-group-timeframe {
color: var(--lighter) !important;
}
.roadmap-container .epic-title,
.roadmap-container .epic-title > a {
color: var(--light) !important;
}
.roadmap-container .timeline-header-blank::after,
.roadmap-container .milestones-list-title::after,
.roadmap-container .epic-details-cell::after {
width: 4px;
right: -4px;
background: linear-gradient(to right, var(--shadow) 0%, var(--t) 100%);
}
.roadmap-container .current-day-indicator,
.roadmap-container .current-day-indicator-header {
background-color: var(--accent) !important;
}
.notes::before {
border-color: var(--darken) !important;
}
.notes .system-note .timeline-icon {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.notes .system-note .timeline-icon svg {
fill: var(--lighter) !important;
}
.notes .system-note a:not(.gl-link):not(.gfm) {
color: var(--accent) !important;
}
.notes.timeline > .timeline-entry {
border-color: var(--darker) !important;
}
.notes.timeline > .timeline-entry:not(.system-note):not(.note-form) {
background-color: var(--dark) !important;
}
.notes.timeline > .timeline-entry.target:not(#z) {
border-color: var(--blue) !important;
background-color: var(--bb) !important;
}
.notes.timeline > .timeline-entry .note-text.md {
color: var(--light) !important;
}
.notes.timeline > .timeline-entry .note-text::after {
background: linear-gradient(var(--t) -100px, var(--bb) 100%) !important;
}
.notes.timeline > .timeline-entry .note-text + .flex-list div[class*="toggle"] {
color: var(--accent) !important;
}
.notes.timeline
> .timeline-entry
.note-text
+ .description-version
> pre.wrapper {
border-radius: 4px;
}
.notes.timeline
> .timeline-entry
.note-actions-item
> [class*="button"]:hover::before {
content: unset !important;
}
.notes.timeline
> .timeline-entry
.note-actions-item
> [class*="button"]:hover
svg {
fill: var(--light) !important;
}
.notes.timeline
> .timeline-entry
.note-actions-item.js-reply-button
> .gl-button {
border: none !important;
background-color: var(--t) !important;
}
.notes.timeline > .timeline-entry .edited-text,
.notes.timeline > .timeline-entry .edited-text .author-link {
color: var(--lighter) !important;
}
.notes.timeline > .timeline-entry .notes-content {
border-color: var(--darker) !important;
}
[class*="author-name"] {
color: var(--light) !important;
}
[class*="headline-light"],
[class*="headline-light"] [class*="separator"] {
color: var(--lighter) !important;
}
[class*="headline-light"] a:hover,
[class*="headline-light"] a:hover time {
color: var(--accent) !important;
}
.notes .replies-toggle {
color: var(--lighter) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.notes .replies-toggle:not(.expanded) {
border-bottom: 0;
}
.notes .replies-toggle.collapsed {
border-radius: 0 0 3px 3px;
}
.notes .replies-toggle.expanded {
background-color: var(--darken) !important;
}
.notes .replies-toggle span,
.notes .replies-toggle a {
color: var(--light) !important;
}
[class*="award-control-"],
[class*="award-control-"] svg {
fill: var(--lighter) !important;
}
[class*="award-control-"]:hover svg {
fill: var(--light) !important;
}
[class*="award-control-"].is-active svg {
fill: var(--accent) !important;
}
.notes .user-access-role {
color: var(--light) !important;
background-color: var(--darken) !important;
}
.emoji-menu {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
box-shadow: var(--bshadow);
}
.emoji-menu input {
background-color: var(--dark) !important;
}
.idiff.addition {
color: var(--green) !important;
background-color: var(--t) !important;
}
.idiff.deletion {
color: var(--red) !important;
background-color: var(--t) !important;
}
.line-resolve-all {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.line-resolve-btn {
color: var(--lighter) !important;
}
.line-resolve-btn.is-disabled svg {
fill: var(--lighter) !important;
}
.line-resolve-btn.is-active {
color: var(--green) !important;
}
.line-resolve-btn.is-active svg {
fill: var(--green) !important;
}
.notes_holder {
font-family: var(--ui-font) !important;
}
.notes_holder > td,
.notes_holder .notes {
background-color: var(--t) !important;
}
.notes_holder [class*="reply-holder"] {
margin-bottom: -1px;
}
.notes_holder .timeline-entry.note {
color: var(--light) !important;
background-color: var(--dark) !important;
}
.notes_holder .timeline-entry.note .replies-toggle,
.notes_holder .timeline-entry.note [class*="reply-holder"] {
border-bottom: 1px solid var(--darker);
}
.notes.timeline > .discussion-filter-note {
color: var(--light) !important;
}
.notes.timeline > .discussion-filter-note .timeline-icon {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.epic-tabs-content .card-header .issue-count-badge {
background-color: var(--t) !important;
}
.status-at-risk {
color: var(--red) !important;
background-color: rgba(255, 0, 102, 0.125) !important;
}
.status-on-track {
color: var(--green) !important;
background-color: rgba(0, 255, 102, 0.125) !important;
}
.status-needs-attention {
color: var(--orange) !important;
background-color: rgba(255, 102, 0, 0.125) !important;
}
.status-at-risk > .gl-label-text,
.status-on-track > .gl-label-text,
.status-needs-attention > .gl-label-text {
color: inherit !important;
}
.bullet-separator {
color: var(--lighter) !important;
}
.gl-label[class*="status-"] > .gl-label-text {
box-shadow: none !important;
}
.sortable-drag {
background-color: var(--t) !important;
box-shadow: none !important;
}
.js-comment-form .float-left.btn-group {
float: unset !important;
}
.discussion-header {
border-color: var(--darker) !important;
}
.discussion-actions button {
color: var(--lighter) !important;
}
.discussion-headline-light a {
color: var(--accent) !important;
}
.discussion .timeline-entry {
color: var(--light) !important;
background-color: var(--dark) !important;
}
.discussion .timeline-entry.target {
background-color: var(--bb) !important;
}
.discussion-body .notes_holder li.note,
.discussion-body .notes li.note:not(:first-child) {
border-radius: 0;
}
.discussion-body .file-title {
top: 98px !important;
}
.discussion-reply-holder {
border-color: var(--darker) !important;
background-color: var(--bb) !important;
}
.discussion-reply-holder > .discussion-notes {
background-color: var(--t) !important;
box-shadow: none !important;
}
.discussion-reply-holder .btn:not(.btn-success) {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.disabled-comment {
padding: 8px 0;
color: var(--lighter) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.disabled-comment a:not(.learn-more) {
color: var(--accent) !important;
}
.disabled-comment .issuable-note-warning {
color: var(--orange) !important;
border-color: var(--t) !important;
background-color: var(--t) !important;
}
.disabled-comment .issuable-note-warning svg {
fill: var(--orange) !important;
}
.discussion-form {
border-color: var(--darker) !important;
background-color: var(--bb) !important;
}
.draft-note-component {
background-color: var(--t) !important;
}
.draft-note-component .drafts-count-component {
color: var(--white) !important;
background-color: var(--green) !important;
}
.review-bar-component {
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.note-form {
background-color: var(--t) !important;
}
.issuable-note-warning {
color: var(--orange) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.issuable-note-warning a {
color: var(--orange) !important;
}
.md-area {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.toolbar-btn svg {
fill: var(--lighter) !important;
}
.toolbar-btn svg:hover {
fill: var(--light) !important;
}
.md-area.is-focused {
border-color: var(--blue) !important;
box-shadow: 0 0 0.4rem -0.2rem var(--blue) !important;
}
.md-area .markdown-selector {
color: var(--accent) !important;
}
.md-area .markdown-area {
color: var(--light) !important;
background-color: var(--t) !important;
}
.md-area .comment-toolbar {
color: var(--lighter) !important;
border-color: var(--darker) !important;
}
.md-area textarea {
font-family: var(--mono-font);
}
.note-form .timeline-icon {
background-color: var(--t) !important;
}
.referenced-commands {
color: var(--light) !important;
background-color: var(--darker) !important;
}
.zen-control svg {
fill: var(--lighter) !important;
}
.zen-backdrop.fullscreen {
background-color: var(--dark) !important;
}
.note-form-actions {
color: var(--lighter) !important;
}
.board-inner {
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.board-title {
border-color: var(--darker) !important;
}
.board-title-caret:hover {
background-color: var(--darken) !important;
}
.board-list-count {
color: var(--lighter) !important;
}
.board .issue-count-badge {
background-color: var(--t) !important;
}
.board .form-control {
background-color: var(--dark) !important;
}
.board-card {
border-top: 1px solid var(--darker) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
box-shadow: none;
}
.board-card-header a,
.board-card-title a {
color: var(--light) !important;
}
.board-card-number {
color: var(--lighter) !important;
}
.board-card-weight {
color: var(--light) !important;
}
.board-card:last-child {
margin-bottom: 0.25rem;
}
.board-delete:not(:hover) {
opacity: 0.6;
}
.issue-boards-content.is-focused {
background-color: var(--bb) !important;
}
.board-blank-state,
.board-promotion-state {
background-color: var(--t) !important;
}
.top-space #hide-btn {
margin-top: 15px;
}
.board-inner > header h3 {
min-height: 51px !important;
}
.boards-list,
.board-swimlanes {
--offset: 0px;
height: calc(100vh - 114px - var(--offset));
}
@media (min-width: 768px) {
.boards-list,
.board-swimlanes {
height: calc(100vh - 167px - var(--offset));
}
}
@media (max-width: 767.98px) and (min-width: 576px) {
.boards-list,
.board-swimlanes {
height: calc(100vh - 99px - var(--offset));
}
}
.boards-app .add-issues-container {
border: 1px solid;
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.boards-app .add-issues-container > div > header {
background-color: var(--darken) !important;
}
.boards-app .add-issues-container .board-card.is-active {
background-color: rgba(34, 136, 255, 0.082) !important;
}
.boards-app .add-issues-container .board-card.is-active svg.gl-icon {
color: var(--white) !important;
border-color: var(--blue) !important;
background-color: var(--blue) !important;
fill: var(--white) !important;
}
.boards-app .add-issues-container .btn.close {
top: -5px;
}
.boards-app .add-issues-container .filtered-search {
background-color: var(--t) !important;
}
.boards-app .add-issues-container .clear-search {
background-color: var(--t) !important;
}
.milestones .milestone:not(:last-child) {
margin-bottom: 8px;
}
.milestone .label-badge-gray {
color: var(--light) !important;
}
.milestone-content .card-header {
border-color: var(--t) !important;
}
.milestone-content .card-header.bg-primary {
color: var(--accent) !important;
}
.milestone-content li.issuable-row {
background-color: var(--dark) !important;
}
.milestone-content li.issuable-row:first-child {
border-top: 1px solid var(--darker) !important;
}
.milestone-content li.issuable-row:last-child {
border-radius: 0 0 4px 4px;
}
.milestone-content li.issuable-row .issuable-number {
color: var(--lighter) !important;
}
.manage-labels-list li {
background-color: var(--t) !important;
}
.burndown-chart {
background-color: var(--dark) !important;
border-radius: 4px;
box-shadow: inset 0 0 0 1px var(--darker);
}
.burndown-chart text {
fill: var(--light) !important;
}
.burndown-chart .axis-label text {
fill: var(--light) !important;
}
.burndown-chart .axis-label line,
.burndown-chart .axis line,
.burndown-chart .axis path {
stroke: var(--lighter) !important;
}
.burndown-chart .line.ideal {
stroke: var(--lighter) !important;
}
.burndown-chart .line.actual {
stroke: var(--green) !important;
}
.burndown-chart .legend rect {
stroke: var(--lighter) !important;
}
.burndown-chart .legend text {
fill: var(--light) !important;
}
.gl-legend,
.gl-legend-inline {
color: var(--light) !important;
}
.burndown-chart [style*="221, 221, 221"] {
fill: var(--darker) !important;
}
.burndown-chart [stroke="#ddd"],
.burndown-chart [stroke="#dfdfdf"],
.burndown-chart [stroke="#919191"] {
stroke: var(--darker) !important;
}
.burndown-chart [stroke="#1f78d1"] {
stroke: var(--blue) !important;
}
.burndown-chart [fill="#1f78d1"],
.burndown-chart [fill*="34,132,229"],
.burndown-chart [style*="31, 120, 209"] {
fill: var(--blue) !important;
}
.content-block.burndown-hint {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
border-radius: 4px;
}
.content-block.burndown-hint svg path[fill="#fff"] {
fill: var(--t) !important;
}
.js-burndown-data-selector .btn-primary {
color: var(--white) !important;
border-color: var(--blue) !important;
background-color: var(--blue) !important;
}
[class*="-tabs-holder"] {
border-color: var(--darker) !important;
background-color: var(--bb) !important;
top: 50px;
}
.mr-version-controls {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--bb) !important;
top: 98px;
}
.design-detail {
background-color: var(--t) !important;
}
.design-detail::before {
content: "";
z-index: -1;
opacity: 0.9;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: var(--darken) !important;
}
.design-detail header {
border-bottom: 1px solid var(--darker);
}
.design-detail .frame .badge-pill {
color: var(--white) !important;
border-color: var(--darker) !important;
background-color: var(--accent) !important;
}
.design-detail .image-notes {
border-left: 1px solid var(--darker);
background-color: var(--dark) !important;
}
.design-detail .image-notes .design-discussion {
background-color: var(--darken) !important;
}
.design-detail .image-notes .design-discussion::before,
.design-detail .image-notes .design-discussion .reply-wrapper {
border-color: var(--darker) !important;
}
.design-detail .image-notes .design-discussion .btn-text-field {
background-color: var(--dark) !important;
}
.design-detail .image-notes .badge-pill,
.design-detail .image-notes .key {
color: var(--white) !important;
border-color: var(--darker) !important;
background-color: var(--accent) !important;
box-shadow: none;
}
.file-holder {
background-color: var(--dark) !important;
}
.file-holder.file-holder-bottom-radius {
border-radius: 0 0 4px 4px;
}
.file-holder.file-holder-bottom-radius .file-title {
border-radius: 0;
}
.file-fork-suggestion {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.file-editor .nav-links {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
border-radius: 4px 4px 0 0;
}
.file-editor .file-title {
border-radius: 4px 4px 0 0;
}
.file-editor .file-title-flex-parent > .form-control {
background-color: var(--dark) !important;
}
.file-editor .file-title [data-toggle="dropdown"] {
background-color: var(--dark) !important;
}
.file .toolbar-btn:hover svg {
fill: var(--light) !important;
}
.file .btn,
.file .encoding-selector,
.file #preview {
font-family: var(--ui-font);
}
.file .editor-ref {
border-color: var(--darker) !important;
background-color: var(--t) !important;
}
.template-selectors-menu {
border-color: var(--darker) !important;
}
.template-selector-dropdowns-wrap > div[class] {
font-family: var(--ui-font);
}
.file input,
.file .btn,
.file .select2-choice {
background-color: var(--dark) !important;
}
.file .btn[class*="active"] {
background-color: var(--darker) !important;
}
.ace-tm {
border-radius: 0 0 3px 3px !important;
color: var(--light) !important;
background-color: var(--dark) !important;
}
.ace_gutter {
border-radius: 0 0 0 3px;
color: var(--lighter) !important;
background-color: var(--darken) !important;
box-shadow: 1px 0 var(--darker);
}
.ace_gutter-cell {
background-color: var(--t) !important;
}
.ace_gutter + .ace_scroller {
border-radius: 0 0 3px 0;
}
.ace_gutter-active-line,
.ace_active-line {
background-color: var(--darken) !important;
}
.ace_selected-word,
.ace_selection {
background-color: var(--blue) !important;
opacity: 0.3;
}
.ace_cursor {
color: var(--accent) !important;
}
.ace_indent-guide {
background: none;
box-shadow: inset -1px 0 var(--darker);
}
.ace_print-margin {
background-color: var(--darker) !important;
}
.ace_search {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
box-shadow: var(--bshadow);
}
.ace_search_form,
.ace_search_field {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.ace_search [action] {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.ace_search_options {
margin: 4px 0 0 -2px;
text-align: left;
}
.ace_search_options .ace_button {
padding: 4px;
border-radius: 3px;
color: var(--lighter) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.ace_search_options .ace_button:hover,
.ace_search_options .ace_button.checked {
color: var(--light) !important;
background-color: var(--darker) !important;
}
.ace_scroller.ace_scroll-left {
box-shadow: inset 17px 0 16px -16px var(--shadow);
}
.ace_url {
color: var(--accent) !important;
}
.ace_list {
color: var(--magenta) !important;
}
.ace_name.ace_function {
color: var(--violet) !important;
}
.ace_line,
.ace_constant,
.ace_numeric {
color: var(--light) !important;
}
.file_type.ace_support,
.file_function.ace_support {
color: var(--lighter) !important;
}
.ace_variable,
.ace_string,
.ace_comment {
color: var(--green) !important;
}
.ace_heading,
.ace_storage,
.ace_keyword,
.ace_meta.ace_tag {
color: var(--blue) !important;
}
.labels-container,
.milestones {
background-color: var(--darken) !important;
}
.manage-labels-list > li:not(.empty-message):not(.no-border),
.milestones > ul > li:not(.empty-message):not(.no-border) {
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
[data-page*="network:show"] .row-content-block {
background-color: var(--t) !important;
}
[data-page*="network:show"] .row-content-block + div {
padding: 0;
}
[data-page*="network:show"] .project-network {
margin-top: 16px;
border-color: var(--darker) !important;
border-radius: 4px;
}
[data-page*="network:show"] .project-network .controls {
border-radius: 3px 3px 0 0;
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
[data-page*="network:show"] .project-network .controls input {
background-color: var(--dark) !important;
}
[data-page*="network:show"] .project-network .network-graph {
background-color: var(--dark) !important;
}
[data-page*="network:show"] text {
fill: var(--light) !important;
}
[data-page*="network:show"] rect[fill="#222222"] {
fill: var(--darken) !important;
stroke: var(--t) !important;
}
[data-page*="network:show"] rect[fill="#444444"] {
fill: var(--bb) !important;
stroke: var(--t) !important;
}
[data-page*="network:show"] rect[transform="matrix(1,0,0,1,20,20)"] {
fill: var(--darken) !important;
stroke: var(--darker) !important;
}
[data-page*="network:show"] rect[style="fill-opacity: 0.5;"],
[data-page*="network:show"] path[style="fill-opacity: 0.5;"] {
fill: var(--accent) !important;
}
[data-page*="network:show"] rect[style="fill-opacity: 0.5;"] + text[style],
[data-page*="network:show"] path[style="fill-opacity: 0.5;"] + text[style] {
fill: var(--white) !important;
}
[data-page*="network:show"] rect[stroke="#cc7a7a"],
[data-page*="network:show"] path[stroke="#cc7a7a"] {
stroke: var(--light) !important;
}
[data-page*="network:show"] rect[stroke="#cccccc"],
[data-page*="network:show"] path[stroke="#cccccc"] {
stroke: var(--lighter) !important;
}
[data-page*="network:show"] rect[stroke="#cc0000"],
[data-page*="network:show"] path[stroke="#cc0000"] {
stroke: var(--red) !important;
}
[data-page*="network:show"] rect[stroke="#00cc8f"],
[data-page*="network:show"] path[stroke="#00cc8f"] {
stroke: var(--cyan) !important;
}
[data-page*="network:show"] rect[stroke="#5283cc"],
[data-page*="network:show"] path[stroke="#5283cc"] {
stroke: var(--blue) !important;
}
[data-page*="network:show"] rect[stroke="#49cc29"],
[data-page*="network:show"] path[stroke="#49cc29"] {
stroke: var(--green) !important;
}
[data-page*="network:show"] rect[stroke="#7a29cc"],
[data-page*="network:show"] path[stroke="#7a29cc"] {
stroke: var(--orange) !important;
}
[data-page*="network:show"] rect[stroke="#ccc052"],
[data-page*="network:show"] path[stroke="#ccc052"] {
stroke: var(--yellow) !important;
}
[data-page*="network:show"] rect[stroke="#cc007a"],
[data-page*="network:show"] path[stroke="#cc007a"] {
stroke: var(--violet) !important;
}
[data-page*="network:show"] rect[stroke="#b8a3cc"],
[data-page*="network:show"] path[stroke="#b8a3cc"] {
stroke: var(--magenta) !important;
}
[data-page*="network:show"] circle[fill="#cc7a7a"] {
fill: var(--light) !important;
}
[data-page*="network:show"] circle[fill="#cccccc"] {
fill: var(--lighter) !important;
}
[data-page*="network:show"] circle[fill="#cc0000"] {
fill: var(--red) !important;
}
[data-page*="network:show"] circle[fill="#00cc8f"] {
fill: var(--cyan) !important;
}
[data-page*="network:show"] circle[fill="#5283cc"] {
fill: var(--blue) !important;
}
[data-page*="network:show"] circle[fill="#49cc29"] {
fill: var(--green) !important;
}
[data-page*="network:show"] circle[fill="#7a29cc"] {
fill: var(--orange) !important;
}
[data-page*="network:show"] circle[fill="#ccc052"] {
fill: var(--yellow) !important;
}
[data-page*="network:show"] circle[fill="#cc007a"] {
fill: var(--violet) !important;
}
[data-page*="network:show"] circle[fill="#b8a3cc"] {
fill: var(--magenta) !important;
}
[data-page*="network:show"] [style*="Monaco"] {
font-family: var(--mono-font) !important;
}
[data-page*="network:show"] [class*="-chart"] text tspan,
[_echarts_instance_*="ec"] text tspan,
[data-page*="network:show"] [class*="-chart"] [fill="#2e2e2e"],
[_echarts_instance_*="ec"] [fill="#2e2e2e"] {
fill: var(--light);
}
[data-page*="network:show"] [class*="-chart"] [fill="#919191"],
[_echarts_instance_*="ec"] [fill="#919191"] {
fill: var(--lighter);
}
[data-page*="network:show"] [class*="-chart"] [fill="#dbdbdb"],
[_echarts_instance_*="ec"] [fill="#dbdbdb"] {
fill: var(--darker);
}
[data-page*="network:show"] [class*="-chart"] [fill="#dbdbdb"],
[_echarts_instance_*="ec"] [fill="#dbdbdb"] {
fill: var(--darker);
}
[data-page*="network:show"] [class*="-chart"] [stroke="#bfbfbf"],
[_echarts_instance_*="ec"] [stroke="#bfbfbf"] {
stroke: var(--darker);
}
[data-page*="network:show"] [class*="-chart"] .gl-series-label,
[_echarts_instance_*="ec"] .gl-series-label {
color: var(--light) !important;
}
[data-page*="network:show"] [class*="-chart"] .gl-legend-series,
[_echarts_instance_*="ec"] .gl-legend-series {
color: var(--lighter) !important;
}
.issues-analytics-legend {
color: var(--lighter) !important;
}
#cycle-analytics h4 {
color: var(--light) !important;
}
#cycle-analytics .empty-stage,
#cycle-analytics .no-access-stage {
color: var(--lighter) !important;
}
#cycle-analytics .card-header {
border-bottom: 1px solid var(--darker) !important;
}
#cycle-analytics .stage-nav {
margin-top: 4px;
}
#cycle-analytics .stage-nav-item {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--bb) !important;
}
#cycle-analytics .stage-nav-item.active {
border-color: var(--accent) !important;
background-color: var(--darken) !important;
box-shadow: inset 4px 0 var(--accent) !important;
}
#cycle-analytics .stage-nav-item:hover:not(.active) {
background-color: var(--darken) !important;
box-shadow: none !important;
}
#cycle-analytics .stage-nav-item .stage-empty,
#cycle-analytics .stage-nav-item .not-available {
color: var(--lighter) !important;
}
#cycle-analytics .stage-event-item {
color: var(--lighter) !important;
border-color: var(--darker) !important;
}
#cycle-analytics .stage-event-item .total-time,
#cycle-analytics .stage-event-item .total-time span {
color: var(--lighter) !important;
}
#cycle-analytics .stage-event-item .issue-date,
#cycle-analytics .stage-event-item .build-date {
color: var(--lighter) !important;
}
#cycle-analytics .stage-event-item .issue-author-link,
#cycle-analytics .stage-event-item .issue-title,
#cycle-analytics .stage-event-item .issue-link {
color: var(--light) !important;
}
.dashboard-card-header-failed,
.dashboard-card-footer-failed {
background-color: var(--red-darken) !important;
}
.dashboard-card-body-failed {
background-color: var(--red-darker) !important;
}
.dashboard-card-body .gl-link {
color: var(--light) !important;
}
.dashboard-card-body .text-secondary {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.dashboard-card-body .ci-table {
margin-top: 0 !important;
border-radius: 0px !important;
border-color: var(--t) !important;
background-color: var(--t) !important;
}
[data-page^="snippets:"] .snippet-header h2 {
color: var(--light) !important;
}
[data-page^="snippets:"] .file-holder pre.code.highlight {
background-color: var(--dark) !important;
}
[data-page^="snippets:"] .row-content-block.content-component-block {
background-color: var(--t) !important;
}
.search-results-row {
border-color: var(--darker) !important;
}
.search-results-row .author {
color: var(--accent) !important;
}
.search-results-row pre.code {
border-radius: 4px;
}
.search-results .blob-result {
margin: 16px 0;
}
.search-results .code.highlight.white {
background-color: var(--darken) !important;
}
.search-results .search-result-row {
border-color: var(--darker) !important;
}
.ide {
--ide-link-color: var(--accent);
--ide-text-color: var(--light);
--ide-input-color: var(--light);
--ide-border-color: var(--dark);
--ide-input-background: var(--darken);
--ide-text-color-secondary: var(--lighter);
--ide-highlight-background: var(--darken);
--ide-animation-gradient-1: var(--darker);
--ide-animation-gradient-2: var(--darken);
--ide-dropdown-hover-background: var(--darker);
--ide-dropdown-btn-hover-border: var(--darker);
--ide-dropdown-btn-hover-background: var(--darken);
}
.ide-view {
color: var(--light) !important;
}
.ide .sidebar-context-title {
color: var(--light) !important;
}
.ide .avatar-container {
background-color: var(--t) !important;
}
.ide-activity-bar svg.s16 {
fill: var(--lighter) !important;
}
.ide-activity-bar button.active {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
box-shadow: inset 3px 0 var(--accent) !important;
}
.ide-activity-bar button.active.is-right {
box-shadow: inset -3px 0 var(--accent) !important;
}
.ide-activity-bar button.active::after {
background-color: var(--t) !important;
}
.ide-activity-bar button.active svg.s16 {
fill: var(--light) !important;
}
.ide .ide-right-sidebar .ide-activity-bar {
color: var(--light) !important;
border-color: var(--darker) !important;
}
.ide .ide-right-sidebar .ide-pipeline-header {
margin: 0;
padding: 16px !important;
}
.ide .ide-right-sidebar .multi-file-commit-panel-inner {
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.ide .ide-right-sidebar .multi-file-commit-panel .card-body {
background-color: var(--bb) !important;
}
.ide-sidebar-link:hover {
color: var(--light) !important;
background-color: var(--darker) !important;
}
.ide .multi-file-commit-panel {
background-color: var(--darken) !important;
}
.ide .multi-file-commit-panel .ic-git-merge {
color: var(--lighter) !important;
}
.ide .multi-file-commit-panel-header,
.ide .multi-file-commit-form > form {
border-color: var(--darker) !important;
}
.ide .multi-file-commit-panel-header .ide-staged-action-btn {
background-color: var(--t) !important;
}
.ide .multi-file-commit-list-path:hover,
.ide .multi-file-commit-list-path:focus {
background-color: var(--darken) !important;
}
.ide .multi-file-commit-list-path.is-active {
background-color: var(--darker) !important;
}
.ide .multi-file-edit-pane {
border-color: var(--darker) !important;
}
.ide .multi-file-commit-panel-inner-content {
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.ide .multi-file-commit-form {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.ide .multi-file-commit-form > .commit-form-compact {
border-color: var(--darker) !important;
}
.ide .multi-file-edit-pane {
border-color: var(--darker) !important;
}
.ide .multi-file-edit-pane-content > .ide-mode-tabs {
border-color: var(--darker) !important;
}
.ide .multi-file-tabs {
background-color: var(--darken) !important;
box-shadow: none;
}
.ide .multi-file-tabs li {
color: var(--lighter) !important;
border-color: var(--darken) !important;
background-color: var(--darken) !important;
}
.ide .multi-file-tabs li:hover {
background-color: rgba(136, 136, 136, 0.082) !important;
}
.ide .multi-file-tabs li.active {
color: var(--light) !important;
border-color: var(--dark) !important;
background-color: var(--dark) !important;
}
.ide .multi-file-tab-close {
color: var(--lighter) !important;
}
.ide .multi-file-tab-close:not([disabled]):hover {
background-color: var(--darker) !important;
}
.ide-file-templates {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.ide-file-templates [class*="menu-toggle"] {
background-color: var(--dark) !important;
}
.ide-file-list .ide-tree-header {
border-color: var(--darker) !important;
}
.ide-file-list .ide-tree-body .file-row:hover,
.ide-file-list .ide-tree-body .file-row.is-active {
background-color: var(--darken) !important;
}
.ide-file-list .ide-tree-body .ide-entry-dropdown-toggle {
color: var(--light) !important;
background-color: var(--darker) !important;
}
.ide-review-sub-header {
color: var(--lighter) !important;
}
.ide-review-header a {
color: var(--accent) !important;
}
.ide-commit-editor-header {
background-color: var(--darken) !important;
box-shadow: inset 0 -1px var(--darker);
}
.ide-commit-list-container.is-first {
border-color: var(--darker) !important;
}
.ide-commit-message-field {
background-color: var(--t) !important;
}
.ide-commit-message-field .md-area {
background-color: var(--darken) !important;
}
.ide-commit-message-textarea-container .note-textarea {
font-family: var(--mono-font) !important;
color: var(--light) !important;
}
.ide-nav-form li a:not(.active) {
background-color: var(--t) !important;
}
.ide-nav-form ul > li {
width: 100%;
}
.ide-tree-header {
border-color: var(--darker) !important;
}
.ide-tree-header svg {
color: var(--lighter) !important;
}
.ide-tree-header svg:hover {
color: var(--accent) !important;
}
.ide .drag-handle:hover {
background-color: var(--darker) !important;
}
.ide .drag-handle.is-dragging {
background-color: var(--accent) !important;
}
.ide-status-bar {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.ide-status-bar .ide-status-avatar[src*="png;base64"] {
filter: invert(0.8);
}
.ide .diffOverview {
border-color: var(--darker) !important;
background-color: var(--bb) !important;
}
.ide .diffOverviewRuler {
filter: invert(0.8) hue-rotate(180deg);
}
.monaco-editor {
color: var(--light) !important;
background-color: var(--dark) !important;
}
.monaco-editor .margin {
border-color: var(--darker) !important;
background-color: var(--t) !important;
}
.monaco-editor .margin * {
font-family: var(--mono-font) !important;
}
.monaco-editor .line-numbers {
opacity: 0.6;
color: var(--lighter) !important;
}
.monaco-editor .current-line {
background-color: var(--darken) !important;
}
.monaco-editor .current-line ~ .line-numbers {
opacity: 1;
color: var(--light) !important;
}
.monaco-editor-background,
.monaco-editor .inputarea.ime-input {
background-color: var(--t) !important;
}
.monaco-editor .cigr,
.monaco-editor .cigra {
box-shadow: inset 1px 0 var(--darker) !important;
}
.monaco-editor .view-overlays .current-line {
border-color: var(--t) !important;
background-color: var(--darken) !important;
}
.monaco-editor .cursor {
color: var(--dark) !important;
border-color: var(--dark) !important;
background-color: var(--light) !important;
}
.monaco-editor .scroll-decoration {
box-shadow: inset 0 6px 6px -6px var(--dark);
}
.monaco-editor .mtk1 {
color: var(--light) !important;
}
.monaco-editor .mtk3,
.monaco-editor .mtk10 {
color: var(--lighter) !important;
}
.monaco-editor .mtk5,
.monaco-editor .mtk6,
.monaco-editor .mtk23 {
color: var(--blue) !important;
}
.monaco-editor .mtk7 {
color: var(--cyan) !important;
}
.monaco-editor .mtk8 {
color: var(--green) !important;
}
.monaco-editor .mtk11 {
color: var(--orange) !important;
}
.monaco-editor .mtk4,
.monaco-editor .mtk15,
.monaco-editor .mtk20 {
color: var(--red) !important;
}
.monaco-editor .mtk14,
.monaco-editor .mtk20 {
color: var(--magenta) !important;
}
.monaco-editor .mtk12,
.monaco-editor .mtk22,
.monaco-editor .mtk23 {
color: var(--cyan) !important;
}
.monaco-editor .lines-content .cursor {
color: var(--light) !important;
border-color: var(--accent) !important;
background-color: var(--accent) !important;
}
.monaco-editor .lines-content .current-line {
border-color: var(--darker) !important;
background-color: var(--darken) !important;
}
.monaco-editor .selected-text {
background-color: var(--blue) !important;
}
.monaco-editor .selectionHighlight {
background-color: var(--darker) !important;
}
.monaco-editor .lines-content [class*="cigr"] {
box-shadow: inset 1px 0 var(--lighter);
}
.monaco-editor .monaco-quick-open-widget {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
box-shadow: 0 0 0 1px var(--darker), var(--bshadow) !important;
}
.monaco-editor .monaco-quick-open-widget .results-group {
color: var(--lighter) !important;
}
.monaco-editor .monaco-quick-open-widget .label-name {
color: var(--light) !important;
}
.monaco-editor .monaco-quick-open-widget .label-name .highlight {
color: var(--accent) !important;
}
.monaco-editor .monaco-quick-open-widget .monaco-tree-row:hover,
.monaco-editor .monaco-quick-open-widget .monaco-tree-row.focused {
color: var(--accent) !important;
background-color: var(--darker) !important;
}
.monaco-editor .monaco-inputbox {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.monaco-editor .monaco-inputbox input {
color: var(--light) !important;
background-color: var(--darken) !important;
}
.monaco-editor .find-widget {
color: var(--light) !important;
border-color: var(--accent) !important;
background-color: var(--darken) !important;
box-shadow: var(--bshadow);
}
.monaco-editor .find-widget .button,
.monaco-editor .find-widget .label {
filter: invert(1) hue-rotate(180deg);
}
.monaco-editor .monaco-sash {
background-color: var(--darker) !important;
}
.monaco-editor .find-widget textarea {
color: var(--light) !important;
background-color: var(--dark) !important;
}
.monaco-editor .accessibilityHelpWidget {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
box-shadow: 0 0 0 1px var(--darker), var(--bshadow);
}
.monaco-menu-container .monaco-scrollable-element {
box-shadow: var(--bshadow) !important;
}
.monaco-menu-container .monaco-action-bar {
background-color: var(--dark) !important;
box-shadow: inset 0 0 0 1px var(--darker), var(--bshadow) !important;
}
.monaco-menu-container .monaco-action-bar .action-item > a {
color: var(--lighter) !important;
background-color: var(--t) !important;
}
.monaco-menu-container .monaco-action-bar .action-item.focused a {
color: var(--light) !important;
background-color: var(--darken) !important;
}
.monaco-menu-container .monaco-action-bar .action-item.disabled a {
border-color: var(--darker) !important;
}
.monaco-editor .scroll-decoration {
box-shadow: inset var(--bshadow) !important;
}
.monaco-editor .tokens-inspect-widget {
color: var(--light) !important;
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.monaco-editor .findOptionsWidget {
border-color: var(--darker) !important;
background-color: var(--darker) !important;
box-shadow: var(--bshadow);
}
.monaco-editor .monaco-editor-hover {
border-color: var(--darker) !important;
background-color: var(--dark) !important;
}
.monaco-editor .cslr.selected-text {
background-color: var(--darker);
}
.monaco-editor .selectionHighlight {
background-color: var(--darker) !important;
}
.monaco-editor .tree {
color: var(--lighter) !important;
border-color: var(--darker) !important;
background-color: var(--darken) !important;
box-shadow: var(--bshadow);
}
.monaco-editor .tree .focused {
color: var(--light) !important;
background-color: var(--darker) !important;
}
.monaco-editor .dirty-diff-added {
background-color: var(--green) !important;
}
.monaco-editor .dirty-diff-modified {
background-color: var(--blue) !important;
}
.monaco-editor .inline-deleted-margin-view-zone,
.monaco-editor .char-delete {
background-color: rgba(255, 0, 0, 0.314) !important;
}
.monaco-editor .inline-added-margin-view-zone,
.monaco-editor .char-insert {
background-color: rgba(0, 255, 0, 0.314) !important;
}
.monaco-editor .line-delete {
color: var(--white) !important;
border-color: var(--shadow) !important;
background-color: rgba(117, 0, 0, 0.65) !important;
}
.monaco-editor .line-insert {
color: var(--white) !important;
border-color: var(--shadow) !important;
background-color: rgba(79, 88, 0, 0.75) !important;
}
.monaco-editor .current-line-margin {
border-color: var(--darker) !important;
background-color: var(--darker) !important;
}
.hover-overlay hr {
background-color: var(--darker) !important;
}
.hover-overlay__contents {
border-color: var(--darker) !important;
}
.hover-overlay--gitlab .hljs-comment,
.hover-overlay--gitlab .hljs-quote {
color: var(--lighter) !important;
}
.hover-overlay--gitlab .hljs-section,
.hover-overlay--gitlab .hljs-selector-id,
.hover-overlay--gitlab .hljs-title {
color: var(--light) !important;
}
.hover-overlay .loading-spinner {
border-color: var(--darker) !important;
border-top-color: var(--accent) !important;
}
line[id*="dag-"][stroke="#f2f2f2"] {
stroke: #808080 !important;
}
.devops-card-high .board-card-score-big {
background-color: var(--success) !important;
}
.devops-card-low .board-card-score-big {
background-color: var(--red) !important;
}
.devops-step {
background-color: var(--darken) !important;
}
.board-card-score-value {
color: var(--lighter) !important;
}
/****************************** GITLAB-DARK-END ******************************/
/*Gitlab Tweaks*/
html {
scrollbar-color: rgba(136, 136, 136, 0.188) rgba(136, 136, 136, 0.082) !important;
}
::-webkit-scrollbar {
width: 8px !important;
height: 8px !important;
}
::-webkit-scrollbar-thumb {
background-color: rgba(130, 130, 130, 0.5) !important;
border-radius: 10px !important;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3) !important;
}
::-webkit-scrollbar-track {
background-color: var(--darken) !important;
}
::-webkit-scrollbar-corner {
background-color: var(--darken) !important;
}
.nav-sidebar-inner-scroll {
overflow: hidden !important;
}
.nav-sidebar-inner-scroll:hover {
overflow: auto !important;
}
/*SpanTree Styles*/
.spantree-pane-header {
background-color: rgb(38, 38, 38) !important;
height: 50px !important;
}
.spantree-tree-list {
height: calc(100vh - 50px) !important;
}
.spantree-tree-list::-webkit-scrollbar-thumb {
background-color: rgba(130, 130, 130, 0.5) !important;
}
.spantree-tree-list::-webkit-scrollbar-track {
background-color: var(--darken) !important;
}
.spantree-tree-list::-webkit-scrollbar-corner {
background-color: var(--darken) !important;
}
.spantree-backdrop {
background-color: rgba(0, 0, 0, 0.51);
}
.spantree-search {
background-color: var(--darken) !important;
border: 1px solid darkslategrey !important;
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5) !important;
}
.spantree-searchbar input {
color: lightgrey;
background: var(--dark) !important;
border: 1px solid darkslategrey !important;
}
.spantree-searchbar input:focus {
border: 1px solid rgb(77, 61, 146) !important;
outline: none !important;
box-shadow: 0px 0px 10px rgba(77, 61, 146, 0.25) !important;
}
.spantree-search-result::-webkit-scrollbar {
height: 0px !important;
}
.spantree-result-active {
background: var(--darker) !important;
}
.spantree-in-fzy {
color: rgb(146, 122, 249) !important;
}
.spantree-search-help {
border-top: 1px solid darkslategray !important;
}
================================================
FILE: content/src/scripts/utils/backgroundColor.js
================================================
const getHeaderBackgroundColor = (options) => {
if ("auto-theme" in options && options["auto-theme"]) {
const fetchedValue = window
.getComputedStyle(document.querySelector("header"))
.getPropertyValue("background-color");
return fetchedValue && fetchedValue.length > 0
? { backgroundColor: fetchedValue }
: {};
}
return {};
};
export default getHeaderBackgroundColor;
================================================
FILE: content/src/scripts/utils/browser.js
================================================
const isWindowObject = (value) => {
return value != null && typeof value === "object" && "setInterval" in value;
};
const freeSelf = isWindowObject(typeof self == "object" && self) && self;
const navigator = freeSelf && freeSelf.navigator;
const userAgent = ((navigator && navigator.userAgent) || "").toLowerCase();
const vendor = ((navigator && navigator.vendor) || "").toLowerCase();
export const browserKey = () => {
if (isChrome()) return "chrome";
if (isFirefox()) return "moz";
return "chrome";
};
const isChrome = () => {
const match = /google inc/.test(vendor)
? userAgent.match(/(?:chrome|crios)\/(\d+)/)
: null;
return match !== null && !isOpera();
};
const isFirefox = () => {
const match = userAgent.match(/(?:firefox|fxios)\/(\d+)/);
return match !== null;
};
const isOpera = () => {
const match = userAgent.match(/(?:^opera.+?version|opr)\/(\d+)/);
return match !== null;
};
================================================
FILE: content/src/scripts/utils/file-icons.js
================================================
/**
* ╭─╮ ┬ ┬ ╭─╮ ┬ ╭─╮ ╭─╮ ╭╮╭ ╭─╮
* ├┤ │ │ ├┤ │ │ │ │ │││ ╰─╮
* ┴ ┴ ┴─╯ ╰─╯ ┴ ╰─╯ ╰─╯ ╯╰╯ ╰─╯
* File specific icons for the browser
* from Atom File-icons, https://github.com/file-icons/atom
*
* @link https://github.com/file-icons/atom
* @author Daniel Brooker,
* @author Adnan M.Sagar,
*/
const fileIcons = () => {
var cache = {
directoryName: {},
directoryPath: {},
fileName: {},
filePath: {},
interpreter: {},
scope: {},
language: {},
signature: {},
};
/* ---------------------------------------------------------------------------
* Icon
* ------------------------------------------------------------------------- */
/**
* Create Icon instance
*
* @param {Number} index - Index of the icon's appearance in the enclosing array
* @param {Array} data - icon's data points that contains the following,
*
* @property {Icon} icon - Icon's CSS class (e.g., "js-icon")
* @property {Array} colour - Icon's colour classes
* @property {RegExp} match - Pattern for matching names or pathnames
* @property {Numeric} [priority=1] - priority that determined icon's order of appearance
* @property {Boolean} [matchPath=false] - Match against system path instead of basename
* @property {RegExp} [interpreter=null] - to match executable names in hashbangs
* @property {RegExp} [scope=null] - to match grammar scope-names
* @property {RegExp} [lang=null] - to match alias patterns
* @property {RegExp} [sig=null] - to match file signatures
*
* @constructor
*/
var Icon = function (index, data) {
this.index = index;
this.icon = data[0];
this.colour = data[1];
this.match = data[2];
this.priority = data[3] || 1;
this.matchPath = data[4] || false;
this.interpreter = data[5] || null;
this.scope = data[6] || null;
this.lang = data[7] || null;
this.signature = data[8] || null;
};
/**
* Return the CSS classes for displaying the icon.
*
* @param {Number|null} colourMode
* @param {Boolean} asArray
* @return {String}
*/
Icon.prototype.getClass = function (colourMode, asArray) {
colourMode = colourMode !== undefined ? colourMode : null;
asArray = asArray !== undefined ? asArray : false;
// No colour needed or available
if (colourMode === null || this.colour[0] === null)
return asArray ? [this.icon] : this.icon;
return asArray
? [this.icon, this.colour[colourMode]]
: this.icon + " " + this.colour[colourMode];
};
/* ---------------------------------------------------------------------------
* IconTables
* ------------------------------------------------------------------------- */
/**
* Create IconTables instance
*
* @param {Array} data - Icons database
*
* @property {Array} directoryIcons - Icons to match directory-type resources.
* @property {Array} fileIcons - Icons to match file resources.
* @property {Icon} binaryIcon - Icon for binary files.
* @property {Icon} executableIcon - Icon for executables.
* @class
* @constructor
*/
var IconTables = function (data) {
this.directoryIcons = this.read(data[0]);
this.fileIcons = this.read(data[1]);
this.binaryIcon = this.matchScope("source.asm");
this.executableIcon = this.matchInterpreter("bash");
};
/**
* Populate icon-lists from a icons data table.
*
* @param {Array} table
* @return {Object}
* @private
*/
IconTables.prototype.read = function (table) {
var icons = table[0];
var indexes = table[1];
icons = icons.map(function (icon, index) {
return new Icon(index, icon);
});
// Dereference Icon instances from their stored offset
indexes = indexes.map(function (index) {
return index.map(function (offset) {
return icons[offset];
});
});
return {
byName: icons,
byInterpreter: indexes[0],
byLanguage: indexes[1],
byPath: indexes[2],
byScope: indexes[3],
bySignature: indexes[4],
};
};
/**
* Match an icon using a resource's basename.
*
* @param {String} name - Name of filesystem entity
* @param {Boolean} [directory=false] - Match folders instead of files
* @return {Icon}
*/
IconTables.prototype.matchName = function (name, directory) {
directory = directory !== undefined ? directory : false;
var cachedIcons = directory ? this.cache.directoryName : cache.fileName;
var icons = directory ? this.directoryIcons.byName : this.fileIcons.byName;
if (cachedIcons[name]) {
return cachedIcons[name];
}
for (var i in icons) {
var icon = icons[i];
if (icon.match.test(name)) {
return (cachedIcons[name] = icon);
}
}
return null;
};
/**
* Match an icon using a resource's system path.
*
* @param {String} path - Full pathname to check
* @param {Boolean} [directory=false] - Match folders instead of files
* @return {Icon}
*/
IconTables.prototype.matchPath = function (path, directory) {
directory = directory !== undefined ? directory : false;
var cachedIcons = directory ? cache.directoryName : cache.fileName;
var icons = directory ? this.directoryIcons.byPath : this.fileIcons.byPath;
if (cachedIcons[name]) {
return cachedIcons[name];
}
for (var i in icons) {
var icon = icons[i];
if (icon.match.test(path)) {
return (cachedIcons[path] = icon);
}
}
return null;
};
/**
* Match an icon using the human-readable form of its related language.
*
* Typically used for matching modelines and Linguist-language attributes.
*
* @example IconTables.matchLanguage("JavaScript")
* @param {String} name - Name/alias of language
* @return {Icon}
*/
IconTables.prototype.matchLanguage = function (name) {
if (cache.language[name]) {
return cache.language[name];
}
for (var i in this.fileIcons.byLanguage) {
var icon = this.fileIcons.byLanguage[i];
if (icon.lang.test(name)) {
return (cache.language[name] = icon);
}
}
return null;
};
/**
* Match an icon using the grammar-scope assigned to it.
*
* @example IconTables.matchScope("source.js")
* @param {String} name
* @return {Icon}
*/
IconTables.prototype.matchScope = function (name) {
if (cache.scope[name]) {
return cache.scope[name];
}
for (var i in this.fileIcons.byScope) {
var icon = this.fileIcons.byScope[i];
if (icon.scope.test(name)) {
return (cache.scope[name] = icon);
}
}
return null;
};
/**
* Match an icon using the name of an interpreter which executes its language.
*
* Used for matching interpreter directives (a.k.a., "hashbangs").
*
* @example IconTables.matchInterpreter("bash")
* @param {String} name
* @return {Icon}
*/
IconTables.prototype.matchInterpreter = function (name) {
if (cache.interpreter[name]) {
return cache.interpreter[name];
}
for (var i in this.fileIcons.byInterpreter) {
var icon = this.fileIcons.byInterpreter[i];
if (icon.interpreter.test(name)) {
return (cache.interpreter[name] = icon);
}
}
return null;
};
/**
* Match an icon using a resource's file signature.
*
* @example IconTables.matchSignature("\x1F\x8B")
* @param {String} data
* @return {Icon}
*/
IconTables.prototype.matchSignature = function (data) {};
/* ---------------------------------------------------------------------------
* Icons Database
* ------------------------------------------------------------------------- */
var icondb = [
[
[
["arttext-icon", ["dark-purple", "dark-purple"], /\.artx$/i],
["atom-icon", ["dark-green", "dark-green"], /^\.atom$/],
[
"bower-icon",
["medium-yellow", "medium-orange"],
/^bower[-_]components$/,
],
[
"dropbox-icon",
["medium-blue", "medium-blue"],
/^(?:Dropbox|\.dropbox\.cache)$/,
],
["emacs-icon", ["medium-purple", "medium-purple"], /^\.emacs\.d$/],
["dylib-icon", [null, null], /\.framework$/i],
["git-icon", ["medium-red", "medium-red"], /\.git$/],
["github-icon", [null, null], /^\.github$/],
["meteor-icon", ["dark-orange", "dark-orange"], /^\.meteor$/],
["node-icon", ["medium-green", "medium-green"], /^node_modules$/],
["package-icon", [null, null], /^\.bundle$/i],
["svn-icon", [null, null], /^\.svn$/i],
["textmate-icon", [null, null], /\.tmBundle$/i],
["vagrant-icon", ["medium-cyan", "medium-cyan"], /\.vagrant$/i],
["appstore-icon", [null, null], /\.xcodeproj$/i],
],
[[], [], [], [], []],
],
[
[
["binary-icon", ["dark-green", "dark-green"], /\.swp$/i, 4],
["link-icon", ["medium-blue", "medium-blue"], /\.lnk$/i, 3],
[
"angular-icon",
["medium-red", "medium-red"],
/^angular[^.]*\.js$/i,
2,
],
["ant-icon", ["dark-pink", "dark-pink"], /^ant\.xml$|\.ant$/i, 2],
[
"apache-icon",
["medium-red", "medium-red"],
/^(?:apache2?|httpd).conf$/i,
2,
],
["apache-icon", ["dark-green", "dark-green"], /\.vhost$/i, 2],
["apache-icon", ["medium-green", "medium-green"], /\.thrift$/i, 2],
[
"appcelerator-icon",
["medium-red", "medium-red"],
/^appcelerator\.js$/i,
2,
],
[
"appveyor-icon",
["medium-blue", "medium-blue"],
/^appveyor\.yml$/i,
2,
],
["archlinux-icon", ["dark-purple", "dark-purple"], /^\.install$/, 2],
["archlinux-icon", ["dark-maroon", "dark-maroon"], /^\.SRCINFO$/, 2],
["archlinux-icon", ["dark-yellow", "dark-yellow"], /^pacman\.conf$/, 2],
[
"archlinux-icon",
["light-yellow", "light-yellow"],
/^pamac\.conf$/,
2,
],
["archlinux-icon", ["dark-cyan", "dark-cyan"], /^PKGBUILD$/, 2],
["archlinux-icon", ["light-yellow", "light-yellow"], /yaourtrc$/i, 2],
[
"backbone-icon",
["dark-blue", "dark-blue"],
/^backbone(?:[-.]min|dev)?\.js$/i,
2,
],
["boot-icon", ["medium-green", "dark-green"], /^Makefile\.boot$/i, 2],
[
"bootstrap-icon",
["medium-yellow", "dark-yellow"],
/^(?:custom\.)?bootstrap\S*\.js$/i,
2,
],
[
"bootstrap-icon",
["medium-blue", "medium-blue"],
/^(?:custom\.)?bootstrap\S*\.css$/i,
2,
],
[
"bootstrap-icon",
["dark-blue", "dark-blue"],
/^(?:custom\.)?bootstrap\S*\.less$/i,
2,
],
[
"bootstrap-icon",
["light-pink", "light-pink"],
/^(?:custom\.)?bootstrap\S*\.scss$/i,
2,
],
[
"bootstrap-icon",
["medium-green", "medium-green"],
/^(?:custom\.)?bootstrap\S*\.styl$/i,
2,
],
[
"bower-icon",
["medium-yellow", "medium-orange"],
/^(?:\.bowerrc|bower\.json|Bowerfile)$/i,
2,
],
["brakeman-icon", ["medium-red", "medium-red"], /brakeman\.yml$/i, 2],
["brakeman-icon", ["dark-red", "dark-red"], /^brakeman\.ignore$/i, 2],
["broccoli-icon", ["medium-green", "medium-green"], /^Brocfile\./i, 2],
["package-icon", ["light-orange", "light-orange"], /Cargo\.toml$/i, 2],
["package-icon", ["dark-orange", "dark-orange"], /Cargo\.lock$/i, 2],
[
"chai-icon",
["medium-red", "dark-red"],
/^chai\.(?:[jt]sx?|es6?|coffee)$/i,
2,
],
["chartjs-icon", ["dark-pink", "dark-pink"], /^Chart\.js$/i, 2],
[
"circleci-icon",
["medium-green", "medium-green"],
/^circle\.yml$/i,
2,
],
[
"cc-icon",
["medium-green", "medium-green"],
/\.codeclimate\.yml$/i,
2,
],
["codecov-icon", ["dark-pink", "dark-pink"], /^codecov\.ya?ml$/i, 2],
["coffee-icon", ["medium-cyan", "medium-cyan"], /\.coffee\.ecr$/i, 2],
["coffee-icon", ["medium-red", "medium-red"], /\.coffee\.erb$/i, 2],
[
"compass-icon",
["medium-red", "medium-red"],
/^_?(?:compass|lemonade)\.scss$/i,
2,
],
[
"composer-icon",
["medium-yellow", "medium-yellow"],
/^composer\.(?:json|lock)$/i,
2,
],
["composer-icon", ["dark-blue", "dark-blue"], /^composer\.phar$/i, 2],
[
"cordova-icon",
["light-blue", "light-blue"],
/^cordova(?:[^.]*\.|-(?:\d\.)+)js$/i,
2,
],
[
"d3-icon",
["medium-orange", "medium-orange"],
/^d3(?:\.v\d+)?[^.]*\.js$/i,
2,
],
["database-icon", ["medium-red", "medium-red"], /^METADATA\.pb$/, 2],
[
"database-icon",
["medium-red", "medium-red"],
/\.git[\/\\](?:.*[\/\\])?(?:HEAD|ORIG_HEAD|packed-refs|logs[\/\\](?:.+[\/\\])?[^\/\\]+)$/,
2,
true,
],
[
"docker-icon",
["dark-blue", "dark-blue"],
/^(?:Dockerfile|docker-compose)|\.docker(?:file|ignore)$/i,
2,
false,
,
/\.dockerfile$/i,
/^Docker$/i,
],
[
"docker-icon",
["dark-orange", "dark-orange"],
/^docker-sync\.yml$/i,
2,
],
["dojo-icon", ["light-red", "light-red"], /^dojo\.js$/i, 2],
[
"ember-icon",
["medium-red", "medium-red"],
/^ember(?:\.|(?:-[^.]+)?-(?:\d+\.)+(?:debug\.)?)js$/i,
2,
],
[
"eslint-icon",
["medium-purple", "medium-purple"],
/\.eslint(?:cache|ignore)$/i,
2,
],
[
"eslint-icon",
["light-purple", "light-purple"],
/\.eslintrc(?:\.(?:js|json|ya?ml))?$/i,
2,
],
[
"extjs-icon",
["light-green", "light-green"],
/\bExtjs(?:-ext)?\.js$/i,
2,
],
["fabfile-icon", ["medium-blue", "medium-blue"], /^fabfile\.py$/i, 2],
[
"fuelux-icon",
["medium-orange", "dark-orange"],
/^fuelux(?:\.min)?\.(?:css|js)$/i,
2,
],
["gear-icon", ["medium-blue", "medium-blue"], /\.indent\.pro$/i, 2],
[
"grunt-icon",
["medium-yellow", "medium-yellow"],
/gruntfile\.js$/i,
2,
],
[
"grunt-icon",
["medium-maroon", "medium-maroon"],
/gruntfile\.coffee$/i,
2,
],
[
"gulp-icon",
["medium-red", "medium-red"],
/gulpfile\.js$|gulpfile\.babel\.js$/i,
2,
],
[
"gulp-icon",
["medium-maroon", "medium-maroon"],
/gulpfile\.coffee$/i,
2,
],
["html5-icon", ["medium-cyan", "medium-cyan"], /\.html?\.ecr$/i, 2],
[
"html5-icon",
["medium-red", "medium-red"],
/\.(?:html?\.erb|rhtml)$/i,
2,
false,
,
/\.html\.erb$/i,
/^HTML$/i,
],
["ionic-icon", ["medium-blue", "medium-blue"], /^ionic\.project$/, 2],
["js-icon", ["medium-cyan", "medium-cyan"], /\.js\.ecr$/i, 2],
["js-icon", ["medium-red", "medium-red"], /\.js\.erb$/i, 2],
[
"jquery-icon",
["dark-blue", "dark-blue"],
/^jquery(?:[-.](?:min|latest|\d\.\d+(?:\.\d+)?))*\.(?:[jt]sx?|es6?|coffee|map)$/i,
2,
],
[
"jqueryui-icon",
["dark-blue", "dark-blue"],
/^jquery(?:[-_.](?:ui[-_.](?:custom|dialog-?\w*)|effects)(?:\.[^.]*)?|[-.]?ui(?:-\d\.\d+(?:\.\d+)?)?(?:\.\w+)?)(?:[-_.]?min|dev)?\.(?:[jt]sx?|es6?|coffee|map|s?css|less|styl)$/i,
2,
],
["karma-icon", ["medium-cyan", "medium-cyan"], /^karma\.conf\.js$/i, 2],
[
"karma-icon",
["medium-maroon", "medium-maroon"],
/^karma\.conf\.coffee$/i,
2,
],
[
"knockout-icon",
["medium-red", "medium-red"],
/^knockout[-.](?:\d+\.){3}(?:debug\.)?js$/i,
2,
],
[
"leaflet-icon",
["medium-green", "medium-green"],
/^leaflet\.(?:draw-src|draw|spin|coordinates-(?:\d+\.)\d+\.\d+\.src)\.(?:js|css)$|^wicket-leaflet\.js$/i,
2,
],
["lein-icon", [null, null], /project\.clj$/i, 2],
[
"manpage-icon",
["dark-green", "dark-green"],
/^tmac\.|^(?:mmn|mmt)$/i,
2,
],
[
"marko-icon",
["medium-blue", "medium-blue"],
/\.marko$/i,
2,
false,
/^marko$/,
/\.marko$/i,
/^mark[0o]$/i,
],
["marko-icon", ["medium-maroon", "medium-maroon"], /\.marko\.js$/i, 2],
[
"materialize-icon",
["light-red", "light-red"],
/^materialize(?:\.min)?\.(?:js|css)$/i,
2,
],
[
"mathjax-icon",
["dark-green", "dark-green"],
/^MathJax[^.]*\.js$/i,
2,
],
[
"mocha-icon",
["medium-maroon", "medium-maroon"],
/^mocha\.(?:[jt]sx?|es6?|coffee)$/i,
2,
],
[
"mocha-icon",
["medium-red", "medium-red"],
/^mocha\.(?:s?css|less|styl)$/i,
2,
],
["mocha-icon", ["light-maroon", "light-maroon"], /mocha\.opts$/i, 2],
[
"modernizr-icon",
["medium-red", "medium-red"],
/^modernizr(?:[-\.]custom|-\d\.\d+)(?:\.\d+)?\.js$/i,
2,
],
[
"mootools-icon",
["medium-purple", "medium-purple"],
/^mootools[^.]*\d+\.\d+(?:.\d+)?[^.]*\.js$/i,
2,
],
["neko-icon", ["dark-orange", "dark-orange"], /^run\.n$/, 2],
["newrelic-icon", ["medium-cyan", "medium-cyan"], /^newrelic\.yml/i, 2],
["nginx-icon", ["dark-green", "dark-green"], /^nginx\.conf$/i, 2],
["shuriken-icon", ["dark-cyan", "dark-cyan"], /\.ninja\.d$/i, 2],
[
"nodemon-icon",
["medium-green", "medium-green"],
/^nodemon\.json$|^\.nodemonignore$/i,
2,
],
[
"normalize-icon",
["medium-red", "medium-red"],
/^normalize\.(?:css|less|scss|styl)$/i,
2,
],
[
"npm-icon",
["medium-red", "medium-red"],
/^(?:package\.json|\.npmignore|\.?npmrc|npm-debug\.log|npm-shrinkwrap\.json)$/i,
2,
],
[
"postcss-icon",
["medium-yellow", "dark-yellow"],
/\bpostcss\.config\.js$/i,
2,
],
[
"protractor-icon",
["medium-red", "medium-red"],
/^protractor\.conf\./i,
2,
],
["pug-icon", ["medium-orange", "medium-orange"], /^\.pug-lintrc/i, 2],
[
"raphael-icon",
["medium-orange", "medium-orange"],
/^raphael(?:\.min|\.no-deps)*\.js$/i,
2,
],
[
"react-icon",
["dark-blue", "dark-blue"],
/^react(?:-[^.]*)?\.js$/i,
2,
],
["react-icon", ["medium-blue", "dark-blue"], /\.react\.js$/i, 2],
[
"book-icon",
["medium-blue", "medium-blue"],
/^README(?:\b|_)|^(?:licen[sc]es?|(?:read|readme|click|delete|keep|test)\.me)$|\.(?:readme|1st)$/i,
2,
],
[
"book-icon",
["dark-blue", "dark-blue"],
/^(?:notice|bugs|changes|change[-_]?log(?:[-._]?\d+)?|contribute|contributing|contributors|copying|hacking|history|install|maintainers|manifest|more\.stuff|projects|revision|terms|thanks)$/i,
2,
],
[
"requirejs-icon",
["medium-blue", "medium-blue"],
/^require(?:[-.]min|dev)?\.js$/i,
2,
],
[
"clojure-icon",
["medium-maroon", "dark-maroon"],
/^riemann\.config$/i,
2,
],
["rollup-icon", ["medium-red", "medium-red"], /^rollup\.config\./i, 2],
["ruby-icon", ["light-green", "light-green"], /_spec\.rb$/i, 2],
[
"scrutinizer-icon",
["dark-blue", "dark-blue"],
/\.scrutinizer\.yml$/i,
2,
],
[
"sencha-icon",
["light-green", "light-green"],
/^sencha(?:\.min)?\.js$/i,
2,
],
[
"snapsvg-icon",
["medium-cyan", "medium-cyan"],
/^snap\.svg(?:[-.]min)?\.js$/i,
2,
],
["sourcemap-icon", ["medium-blue", "medium-blue"], /\.css\.map$/i, 2],
["sourcemap-icon", ["medium-yellow", "dark-yellow"], /\.js\.map$/i, 2],
[
"stylelint-icon",
["medium-purple", "medium-purple"],
/^\.stylelintrc(?:\.|$)/i,
2,
],
[
"stylelint-icon",
["medium-yellow", "dark-yellow"],
/^stylelint\.config\.js$/i,
2,
],
[
"stylelint-icon",
["dark-blue", "dark-blue"],
/\.stylelintignore$/i,
2,
],
[
"toc-icon",
["medium-cyan", "dark-cyan"],
/\.toc$/i,
2,
false,
,
/\.toc$/i,
/^Table of Contents$/i,
],
[
"calc-icon",
["medium-maroon", "medium-maroon"],
/\.8x[pk](?:\.txt)?$/i,
2,
false,
,
,
,
/^\*\*TI[789]\d\*\*/,
],
["travis-icon", ["medium-red", "medium-red"], /^\.travis/i, 2],
["typedoc-icon", ["dark-purple", "dark-purple"], /^typedoc\.json$/i, 2],
[
"typings-icon",
["medium-maroon", "medium-maroon"],
/^typings\.json$/i,
2,
],
[
"uikit-icon",
["medium-blue", "medium-blue"],
/^uikit(?:\.min)?\.js$/i,
2,
],
[
"webpack-icon",
["medium-blue", "medium-blue"],
/webpack\.config\.|^webpackfile\.js$/i,
2,
],
[
"wercker-icon",
["medium-purple", "medium-purple"],
/^wercker\.ya?ml$/i,
2,
],
["yarn-icon", ["medium-blue", "medium-blue"], /^yarn\.lock$/i, 2],
["yeoman-icon", ["medium-cyan", "medium-cyan"], /\.yo-rc\.json$/i, 2],
[
"yui-icon",
["dark-blue", "dark-blue"],
/^(?:yahoo-|yui)[^.]*\.js$/i,
2,
],
["emacs-icon", ["medium-red", "medium-red"], /\.gnus$/i, 1.5],
["emacs-icon", ["dark-green", "dark-green"], /\.viper$/i, 1.5],
["emacs-icon", ["dark-blue", "dark-blue"], /^Cask$/, 1.5],
["emacs-icon", ["medium-blue", "medium-blue"], /^Project\.ede$/i, 1.5],
[
"_1c-icon",
["medium-red", "medium-red"],
/\.bsl$/i,
,
false,
,
/\.bsl$/i,
/^1C$|^1[\W_ \t]?C[\W_ \t]?Enterprise$/i,
],
[
"_1c-icon",
["dark-orange", "dark-orange"],
/\.sdbl$/i,
,
false,
,
/\.sdbl$/i,
/^1C$|^1[\W_ \t]?C[\W_ \t]?Query$/i,
],
["_1c-icon", ["dark-red", "dark-red"], /\.os$/i],
["_1c-alt-icon", ["medium-red", "dark-red"], /\.mdo$/i],
[
"abap-icon",
["medium-orange", "medium-orange"],
/\.abap$/i,
,
false,
,
/\.abp$/i,
/^ABAP$/i,
],
["as-icon", ["medium-blue", "medium-blue"], /\.swf$/i],
[
"as-icon",
["medium-red", "medium-red"],
/\.as$/i,
,
false,
,
/\.(?:flex-config|actionscript(?:\.\d+)?)$/i,
/^ActionScript$|^(?:ActionScript\s*3|as3)$/i,
],
["as-icon", ["medium-yellow", "dark-yellow"], /\.jsfl$/i],
["as-icon", ["dark-red", "dark-red"], /\.swc$/i],
[
"ada-icon",
["medium-blue", "medium-blue"],
/\.(?:ada|adb|ads)$/i,
,
false,
,
/\.ada$/i,
/^Ada$|^(?:ada95|ada2005)$/i,
],
["ae-icon", ["dark-pink", "dark-pink"], /\.aep$/i],
["ae-icon", ["dark-purple", "dark-purple"], /\.aet$/i],
["ai-icon", ["medium-orange", "medium-orange"], /\.ai$/i],
["ai-icon", ["dark-orange", "dark-orange"], /\.ait$/i],
["indesign-icon", ["dark-pink", "dark-pink"], /\.indd$|\.idml$/i],
["indesign-icon", ["medium-purple", "medium-purple"], /\.indl$/i],
["indesign-icon", ["dark-purple", "dark-purple"], /\.indt$|\.inx$/i],
["indesign-icon", ["dark-blue", "dark-blue"], /\.indb$/i],
[
"psd-icon",
["medium-blue", "medium-blue"],
/\.psd$/i,
,
false,
,
,
,
/^8BPS/,
],
["psd-icon", ["dark-purple", "dark-purple"], /\.psb$/i],
["premiere-icon", ["dark-purple", "dark-purple"], /\.prproj$/i],
["premiere-icon", ["medium-maroon", "medium-maroon"], /\.prel$/i],
["premiere-icon", ["medium-purple", "medium-purple"], /\.psq$/i],
[
"alloy-icon",
["medium-red", "medium-red"],
/\.als$/i,
,
false,
,
/\.alloy$/i,
/^Alloy$/i,
],
["alpine-icon", ["dark-blue", "dark-blue"], /(?:\.|^)APKBUILD$/],
[
"ampl-icon",
["dark-maroon", "dark-maroon"],
/\.ampl$/i,
,
false,
,
/\.ampl$/i,
/^AMPL$/i,
],
["sun-icon", ["medium-yellow", "dark-yellow"], /\.ansiweatherrc$/i],
[
"antlr-icon",
["medium-red", "medium-red"],
/\.g$/i,
,
false,
/^antlr$/,
/\.antlr$/i,
/^antlr$/i,
],
["antlr-icon", ["medium-orange", "medium-orange"], /\.g4$/i],
[
"apache-icon",
["dark-red", "dark-red"],
/\.apacheconf$/i,
,
false,
,
/\.apache-config$/i,
/^Apache$|^(?:aconf|ApacheConf)$/i,
],
[
"apache-icon",
["medium-purple", "medium-purple"],
/apache2[\\\/]magic$/i,
,
true,
],
[
"api-icon",
["medium-blue", "medium-blue"],
/\.apib$/i,
,
false,
,
/\.apib$/i,
/^API Blueprint$/i,
],
[
"apl-icon",
["dark-cyan", "dark-cyan"],
/\.apl$/i,
,
false,
/^apl$/,
/\.apl$/i,
/^apl$/i,
],
["apl-icon", ["medium-maroon", "medium-maroon"], /\.apl\.history$/i],
[
"apple-icon",
["medium-purple", "medium-purple"],
/\.(?:applescript|scpt)$/i,
,
false,
/^osascript$/,
/\.applescript$/i,
/^Apple$|^[0o]sascript$/i,
],
["arc-icon", ["medium-blue", "medium-blue"], /\.arc$/i],
[
"arduino-icon",
["dark-cyan", "dark-cyan"],
/\.ino$/i,
,
false,
,
/\.arduino$/i,
/^Arduino$/i,
],
[
"asciidoc-icon",
["medium-blue", "medium-blue"],
/\.(?:ad|adoc|asc|asciidoc)$/i,
,
false,
,
/\.asciidoc$/i,
/^AsciiDoc$/i,
],
[
"asp-icon",
["dark-blue", "dark-blue"],
/\.asp$/i,
,
false,
,
/\.asp$/i,
/^[Aa][Ss][Pp][\W_ \t]?[Nn][Ee][Tt]$|^aspx(?:-vb)?$/,
],
["asp-icon", ["medium-maroon", "medium-maroon"], /\.asax$/i],
["asp-icon", ["dark-green", "dark-green"], /\.ascx$/i],
["asp-icon", ["medium-green", "medium-green"], /\.ashx$/i],
["asp-icon", ["dark-cyan", "dark-cyan"], /\.asmx$/i],
["asp-icon", ["medium-purple", "medium-purple"], /\.aspx$/i],
["asp-icon", ["medium-cyan", "medium-cyan"], /\.axd$/i],
["eclipse-icon", ["medium-maroon", "medium-maroon"], /\.aj$/i],
[
"binary-icon",
["medium-red", "medium-red"],
/\.(?:l?a|[ls]?o|out|s|a51|n?asm|axf|elf|prx|puff|was[mt]|z80)$|\.rpy[bc]$/i,
,
false,
,
/(?:^|\.)(?:a[rs]m|x86|z80|lc-?3|cpu12|x86asm|m68k|assembly|avr(?:dis)?asm|dasm)(?:\.|$)/i,
/^Assembly$|^n?asm$/i,
],
[
"binary-icon",
["dark-blue", "dark-blue"],
/\.agc$|\.d-objdump$/i,
,
false,
,
/\.source\.agc$/i,
/^Assembly$|^(?:Virtual\s*)?AGC$|^Apollo(?:[-_\s]*11)?\s*Guidance\s*Computer$/i,
],
["binary-icon", ["dark-green", "dark-green"], /\.ko$/i],
[
"binary-icon",
["medium-blue", "medium-blue"],
/\.lst$/i,
,
false,
/^lst-cpu12$/,
/\.lst-cpu12$/i,
/^Assembly$|^lst[\W_ \t]?cpu12$/i,
],
[
"binary-icon",
["dark-orange", "dark-orange"],
/\.(?:(?:c(?:[+px]{2}?)?-?)?objdump|bsdiff|bin|dat|pak|pdb)$/i,
],
["binary-icon", ["medium-orange", "medium-orange"], /\.gcode|\.gco/i],
["binary-icon", ["dark-purple", "dark-purple"], /\.py[co]$/i],
["binary-icon", [null, null], /\.DS_Store$/i],
[
"ats-icon",
["medium-red", "medium-red"],
/\.dats$/i,
,
false,
,
/\.ats$/i,
/^ATS$|^ats2$/i,
],
["ats-icon", ["medium-blue", "medium-blue"], /\.hats$/i],
["ats-icon", ["dark-yellow", "dark-yellow"], /\.sats$/i],
["audacity-icon", ["medium-yellow", "medium-yellow"], /\.aup$/i],
[
"audio-icon",
["medium-red", "medium-red"],
/\.mp3$/i,
,
false,
,
,
,
/^\xFF\xFB|^ID3/,
],
[
"audio-icon",
["dark-yellow", "dark-yellow"],
/\.wav$/i,
,
false,
,
,
,
/^RIFF(?!.+WEBP)/,
],
[
"audio-icon",
["dark-cyan", "dark-cyan"],
/\.(?:aac|ac3|m4p)$/i,
,
false,
,
,
,
/^\x0Bw/,
],
[
"audio-icon",
["medium-purple", "medium-purple"],
/\.aif[fc]?$/i,
,
false,
,
,
,
/^FORM.{4}AIFF/,
],
[
"audio-icon",
["medium-cyan", "medium-cyan"],
/\.au$/i,
,
false,
,
,
,
/^\.snd|^dns\./,
],
[
"audio-icon",
["dark-red", "dark-red"],
/\.flac$/i,
,
false,
,
,
,
/^fLaC/,
],
[
"audio-icon",
["medium-red", "medium-red"],
/\.f4[ab]$/i,
,
false,
,
,
,
/^FLV\x01\x04/,
],
[
"audio-icon",
["medium-cyan", "medium-cyan"],
/\.m4a$/i,
,
false,
,
,
,
/^.{4}ftypM4A/,
],
[
"audio-icon",
["dark-green", "dark-green"],
/\.(?:mpc|mp\+)$/i,
,
false,
,
,
,
/^MPCK/,
],
["audio-icon", ["dark-orange", "dark-orange"], /\.oga$/i],
[
"audio-icon",
["dark-maroon", "dark-maroon"],
/\.opus$/i,
,
false,
,
,
,
/OpusHead/,
],
[
"audio-icon",
["dark-blue", "dark-blue"],
/\.r[am]$/i,
,
false,
,
,
,
/^\.RMF/,
],
["audio-icon", ["medium-blue", "medium-blue"], /\.wma$/i],
["augeas-icon", ["dark-orange", "dark-orange"], /\.aug$/i],
[
"ahk-icon",
["dark-blue", "dark-blue"],
/\.ahk$/i,
,
false,
/^ahk$/,
/\.ahk$/i,
/^AutoHotkey$|^ahk$/i,
],
["ahk-icon", ["dark-purple", "dark-purple"], /\.ahkl$/i],
[
"autoit-icon",
["medium-purple", "medium-purple"],
/\.au3$/i,
,
false,
,
/(?:^|\.)autoit(?:\.|$)/i,
/^AutoIt$|^(?:AutoIt3|AutoItScript|au3)$/i,
],
[
"terminal-icon",
["medium-blue", "medium-blue"],
/\.awk$/i,
,
false,
/^awk$/,
/\.awk$/i,
/^awk$/i,
],
[
"terminal-icon",
["medium-red", "medium-red"],
/\.gawk$/i,
,
false,
/^gawk$/,
/\.gawk$/i,
/^AWK$|^gawk$/i,
],
[
"terminal-icon",
["medium-maroon", "medium-maroon"],
/\.mawk$/i,
,
false,
/^mawk$/,
/\.mawk$/i,
/^AWK$|^mawk$/i,
],
[
"terminal-icon",
["dark-green", "dark-green"],
/\.nawk$/i,
,
false,
/^nawk$/,
/\.nawk$/i,
/^AWK$|^nawk$/i,
],
["terminal-icon", ["dark-cyan", "dark-cyan"], /\.auk$/i],
[
"babel-icon",
["medium-yellow", "medium-yellow"],
/\.(?:babelrc|languagebabel|babel)$/i,
],
["babel-icon", ["dark-yellow", "dark-yellow"], /\.babelignore$/i],
["bibtex-icon", ["medium-red", "dark-red"], /\.cbx$/i],
["bibtex-icon", ["medium-orange", "dark-orange"], /\.bbx$/i],
[
"bibtex-icon",
["medium-yellow", "dark-yellow"],
/\.bib$/i,
,
false,
/^bibtex$/,
/\.bibtex$/i,
/^bibtex$/i,
],
["bibtex-icon", ["medium-green", "dark-green"], /\.bst$/i],
[
"gnu-icon",
["medium-red", "medium-red"],
/\.bison$/i,
,
false,
,
/\.bison$/i,
/^Bison$/i,
],
["blender-icon", ["medium-orange", "medium-orange"], /\.blend$/i],
["blender-icon", ["dark-orange", "dark-orange"], /\.blend\d+$/i],
["blender-icon", ["dark-blue", "dark-blue"], /\.bphys$/i],
[
"bluespec-icon",
["dark-blue", "dark-blue"],
/\.bsv$/i,
,
false,
,
/\.bsv$/i,
/^Bluespec$/i,
],
[
"boo-icon",
["medium-green", "medium-green"],
/\.boo$/i,
,
false,
,
/\.boo(?:\.unity)?$/i,
/^Boo$/i,
],
["boot-icon", [null, null], /\.boot$/i],
[
"brain-icon",
["dark-pink", "dark-pink"],
/\.bf?$/i,
,
false,
,
/\.(?:bf|brainfuck)$/i,
/^Brainfuck$|^(?:bf|Brainf\**ck)$/i,
],
["brew-icon", ["medium-orange", "medium-orange"], /^Brewfile$/],
[
"bro-icon",
["dark-cyan", "dark-cyan"],
/\.bro$/i,
,
false,
,
/\.bro$/i,
/^Bro$/i,
],
[
"byond-icon",
["medium-blue", "medium-blue"],
/\.dm$/i,
,
false,
,
/\.dm$/i,
/^BYOND$|^(?:DM|Dream\s*Maker(?:\s*Script)?)$/i,
],
[
"c-icon",
["medium-blue", "medium-blue"],
/\.c$/i,
,
false,
/^tcc$/,
/\.c$/i,
/^C$/i,
],
["c-icon", ["medium-purple", "medium-purple"], /\.h$|\.cats$/i],
["c-icon", ["medium-green", "medium-green"], /\.idc$/i],
["c-icon", ["medium-maroon", "medium-maroon"], /\.w$/i],
["c-icon", ["dark-blue", "dark-blue"], /\.nc$/i],
["c-icon", ["medium-cyan", "medium-cyan"], /\.upc$/i],
[
"csharp-icon",
["medium-blue", "dark-blue"],
/\.cs$/i,
,
false,
,
/\.cs$/i,
/^C#$|^c\s*sharp$/i,
],
[
"csscript-icon",
["dark-green", "dark-green"],
/\.csx$/i,
,
false,
,
/\.csx$/i,
/^C#-Script$/i,
],
[
"cpp-icon",
["medium-blue", "dark-blue"],
/\.c[+px]{2}$|\.cc$/i,
,
false,
,
/\.cpp$/i,
/^C\+\+$|c[-_]?pp|cplusplus/i,
],
["cpp-icon", ["medium-purple", "dark-purple"], /\.h[+px]{2}$/i],
["cpp-icon", ["medium-orange", "dark-orange"], /\.[it]pp$/i],
["cpp-icon", ["medium-red", "dark-red"], /\.(?:tcc|inl)$/i],
[
"cabal-icon",
["medium-cyan", "medium-cyan"],
/\.cabal$/i,
,
false,
,
/\.cabal$/i,
/^Cabal$/i,
],
[
"cake-icon",
["medium-yellow", "medium-yellow"],
/\.cake$/i,
,
false,
,
/\.cake$/i,
/^Cake$/i,
],
["cakefile-icon", ["medium-red", "medium-red"], /^Cakefile$/],
["cakephp-icon", ["medium-red", "medium-red"], /\.ctp$/i],
["ceylon-icon", ["medium-orange", "medium-orange"], /\.ceylon$/i],
[
"chapel-icon",
["medium-green", "medium-green"],
/\.chpl$/i,
,
false,
,
/\.chapel$/i,
/^Chapel$|^chpl$/i,
],
[
"chrome-icon",
["medium-red", "medium-red"],
/\.crx$/i,
,
false,
,
,
,
/^Cr24/,
],
[
"chuck-icon",
["medium-green", "medium-green"],
/\.ck$/i,
,
false,
,
/\.chuck$/i,
/^ChucK$/i,
],
[
"cirru-icon",
["medium-pink", "dark-pink"],
/\.cirru$/i,
,
false,
,
/\.cirru$/i,
/^Cirru$/i,
],
[
"clarion-icon",
["medium-orange", "medium-orange"],
/\.clw$/i,
,
false,
,
/\.clarion$/i,
/^Clarion$/i,
],
[
"clean-icon",
["dark-cyan", "dark-cyan"],
/\.icl$/i,
,
false,
/^clean$/,
/\.clean$/i,
/^clean$/i,
],
["clean-icon", ["medium-cyan", "medium-cyan"], /\.dcl$/i],
["clean-icon", ["medium-blue", "medium-blue"], /\.abc$/i],
[
"click-icon",
["medium-yellow", "medium-yellow"],
/\.click$/i,
,
false,
,
/\.click$/i,
/^Click$|^Click!$/i,
],
[
"clips-icon",
["dark-green", "dark-green"],
/\.clp$/i,
,
false,
,
/\.clips$/i,
/^CLIPS$/i,
],
[
"clojure-icon",
["medium-blue", "dark-blue"],
/\.clj$/i,
,
false,
/^clojure$/,
/\.clojure$/i,
/^cl[0o]jure$/i,
],
["clojure-icon", ["medium-purple", "dark-purple"], /\.cl2$/i],
["clojure-icon", ["medium-green", "dark-green"], /\.cljc$/i],
["clojure-icon", ["medium-red", "dark-red"], /\.cljx$|\.hic$/i],
["cljs-icon", ["medium-blue", "dark-blue"], /\.cljs(?:\.hl|cm)?$/i],
[
"cmake-icon",
["medium-green", "medium-green"],
/\.cmake$/i,
,
false,
/^cmake$/,
/\.cmake$/i,
/^cmake$/i,
],
["cmake-icon", ["medium-red", "medium-red"], /^CMakeLists\.txt$/],
[
"coffee-icon",
["medium-maroon", "medium-maroon"],
/\.coffee$/i,
,
false,
/^coffee$/,
/\.coffee$/i,
/^CoffeeScript$|^Coffee(?:-Script)?$/i,
],
["coffee-icon", ["dark-maroon", "dark-maroon"], /\.cjsx$/i],
[
"coffee-icon",
["light-maroon", "light-maroon"],
/\.litcoffee$/i,
,
false,
/^litcoffee$/,
/\.litcoffee$/i,
/^CoffeeScript$|^litc[0o]ffee$/i,
],
["coffee-icon", ["medium-blue", "medium-blue"], /\.iced$/i],
[
"cf-icon",
["light-cyan", "light-cyan"],
/\.cfc$/i,
,
false,
,
/\.cfscript$/i,
/^ColdFusion$|^(?:CFC|CFScript)$/i,
],
[
"cf-icon",
["medium-cyan", "medium-cyan"],
/\.cfml?$/i,
,
false,
,
/\.cfml?$/i,
/^ColdFusion$|^(?:cfml?|ColdFusion\s*HTML)$/i,
],
["khronos-icon", ["medium-orange", "medium-orange"], /\.dae$/i],
[
"cl-icon",
["medium-orange", "medium-orange"],
/\.cl$/i,
,
false,
/^(?:c?lisp|sbcl|[ec]cl)$/,
/\.common-lisp$/i,
/^Common Lisp$|^c?lisp$/i,
],
["cp-icon", ["medium-maroon", "medium-maroon"], /\.cp$/i],
["cp-icon", ["dark-red", "dark-red"], /\.cps$/i],
[
"zip-icon",
[null, null],
/\.(?:zip|z|xz)$/i,
,
false,
,
,
,
/^(?:\x50\x4B(?:\x03\x04|\x05\x06|\x07|\x08)|\x1F[\x9D\xA0]|BZh|RNC[\x01\x02]|\xD0\xCF\x11\xE0)/,
],
[
"zip-icon",
["medium-blue", "medium-blue"],
/\.rar$/i,
,
false,
,
,
,
/^Rar!\x1A\x07\x01?\0/,
],
[
"zip-icon",
["dark-blue", "dark-blue"],
/\.t?gz$|\.tar$|\.whl$/i,
,
false,
,
,
,
/^\x1F\x8B/,
],
[
"zip-icon",
["medium-maroon", "medium-maroon"],
/\.(?:lzo?|lzma|tlz|tar\.lzma)$/i,
,
false,
,
,
,
/^LZIP/,
],
[
"zip-icon",
["medium-maroon", "medium-maroon"],
/\.7z$/i,
,
false,
,
,
,
/^7z\xBC\xAF\x27\x1C/,
],
["zip-icon", ["medium-red", "medium-red"], /\.apk$|\.gem$/i],
["zip-icon", ["dark-cyan", "dark-cyan"], /\.bz2$/i],
[
"zip-icon",
["medium-blue", "medium-blue"],
/\.iso$/i,
,
false,
,
,
,
/^\x45\x52\x02\0{3}|^\x8B\x45\x52\x02/,
],
["zip-icon", ["medium-orange", "medium-orange"], /\.xpi$/i],
["zip-icon", ["medium-green", "medium-green"], /\.epub$/i],
["zip-icon", ["dark-pink", "dark-pink"], /\.jar$/i],
["zip-icon", ["medium-purple", "medium-purple"], /\.war$/i],
[
"zip-icon",
["dark-orange", "dark-orange"],
/\.xar$/i,
,
false,
,
,
,
/^xar!/,
],
["zip-icon", ["light-orange", "light-orange"], /\.egg$/i],
[
"config-icon",
["medium-yellow", "medium-yellow"],
/\.(?:ini|desktop|directory|cfg|conf|prefs)$/i,
,
false,
,
/\.ini$/i,
/^d[0o]sini$/i,
],
[
"config-icon",
["medium-purple", "medium-purple"],
/\.properties$/i,
,
false,
,
/\.java-properties$/i,
],
["config-icon", ["medium-green", "medium-green"], /\.toml$|\.opts$/i],
["config-icon", ["dark-red", "dark-red"], /\.ld$/i],
["config-icon", ["medium-red", "medium-red"], /\.lds$|\.reek$/i],
["config-icon", ["dark-blue", "dark-blue"], /\.terminal$/i],
["config-icon", ["medium-orange", "medium-orange"], /^ld\.script$/i],
[
"config-icon",
["dark-red", "dark-red"],
/\.git[\/\\](?:config|info[\/\\]\w+)$/,
,
true,
],
[
"config-icon",
["dark-orange", "dark-orange"],
/^\/(?:private\/)?etc\/(?:[^\/]+\/)*[^\/]*\.(?:cf|conf|ini)(?:\.default)?$/i,
,
true,
],
[
"config-icon",
["medium-maroon", "medium-maroon"],
/^\/(?:private\/)?etc\/(?:aliases|auto_(?:home|master)|ftpusers|group|gettytab|hosts(?:\.equiv)?|manpaths|networks|paths|protocols|services|shells|sudoers|ttys)$/i,
,
true,
],
[
"coq-icon",
["medium-maroon", "medium-maroon"],
/\.coq$/i,
,
false,
,
/\.coq$/i,
/^Coq$/i,
],
[
"creole-icon",
["medium-blue", "medium-blue"],
/\.creole$/i,
,
false,
,
/\.creole$/i,
/^Creole$/i,
],
[
"crystal-icon",
["medium-cyan", "medium-cyan"],
/\.e?cr$/i,
,
false,
/^crystal$/,
/\.crystal$/i,
/^Crystal$/i,
],
[
"csound-icon",
["medium-maroon", "medium-maroon"],
/\.orc$/i,
,
false,
,
/\.csound$/i,
/^Csound$|^cs[0o]und[\W_ \t]?[0o]rc$/i,
],
["csound-icon", ["dark-orange", "dark-orange"], /\.udo$/i],
[
"csound-icon",
["dark-maroon", "dark-maroon"],
/\.csd$/i,
,
false,
,
/\.csound-document$/i,
/^Csound$|^cs[0o]und[\W_ \t]?csd$/i,
],
[
"csound-icon",
["dark-blue", "dark-blue"],
/\.sco$/i,
,
false,
,
/\.csound-score$/i,
/^Csound$|^cs[0o]und[\W_ \t]?sc[0o]$/i,
],
[
"css3-icon",
["medium-blue", "medium-blue"],
/\.css$/i,
,
false,
/^css$/,
/\.css$/i,
/^css$/i,
],
[
"css3-icon",
["dark-blue", "dark-blue"],
/\.less$/i,
,
false,
/^less$/,
/\.less$/i,
/^CSS$|^less$/i,
],
[
"cucumber-icon",
["medium-green", "medium-green"],
/\.feature$/i,
,
false,
,
/(?:^|\.)(?:gherkin\.feature|cucumber\.steps)(?:\.|$)/i,
/^Cucumber$|^gherkin$/i,
],
[
"nvidia-icon",
["medium-green", "medium-green"],
/\.cu$/i,
,
false,
,
/\.cuda(?:-c\+\+)?$/i,
/^CUDA$/i,
],
["nvidia-icon", ["dark-green", "dark-green"], /\.cuh$/i],
[
"cython-icon",
["medium-orange", "medium-orange"],
/\.pyx$/i,
,
false,
,
/\.cython$/i,
/^Cython$|^pyrex$/i,
],
["cython-icon", ["medium-blue", "medium-blue"], /\.pxd$/i],
["cython-icon", ["dark-blue", "dark-blue"], /\.pxi$/i],
[
"dlang-icon",
["medium-red", "medium-red"],
/\.di?$/i,
,
false,
,
/\.d$/i,
/^D$/i,
],
[
"yang-icon",
["medium-red", "medium-red"],
/\.dnh$/i,
,
false,
,
/\.danmakufu$/i,
/^Danmakufu$/i,
],
["darcs-icon", ["medium-green", "medium-green"], /\.d(?:arcs)?patch$/i],
[
"dart-icon",
["medium-cyan", "medium-cyan"],
/\.dart$/i,
,
false,
/^dart$/,
/\.dart$/i,
/^Dart$/i,
],
[
"dashboard-icon",
["medium-orange", "medium-orange"],
/\.s[kl]im$/i,
,
false,
/^slim$/,
/\.slim$/i,
/^slim$/i,
],
["dashboard-icon", ["medium-green", "medium-green"], /\.cpuprofile$/i],
[
"database-icon",
["medium-yellow", "medium-yellow"],
/\.(?:h|geo|topo)?json$/i,
],
["database-icon", ["light-red", "light-red"], /\.ya?ml$/i],
[
"database-icon",
["medium-maroon", "medium-maroon"],
/\.cson$|\.ston$|^mime\.types$/i,
],
[
"database-icon",
["dark-yellow", "dark-yellow"],
/\.json5$/i,
,
false,
/^json5$/,
/\.json5$/i,
/^js[0o]n5$/i,
],
["database-icon", ["medium-red", "medium-red"], /\.http$|\.pot?$/i],
[
"database-icon",
["medium-orange", "medium-orange"],
/\.ndjson$|\.pytb$/i,
,
false,
,
/\.python\.traceback$/i,
],
[
"database-icon",
["light-blue", "light-blue"],
/\.fea$/i,
,
false,
,
/\.opentype$/i,
/^afdk[0o]$/i,
],
[
"database-icon",
["medium-purple", "medium-purple"],
/\.json\.eex$|\.edn$/i,
],
[
"database-icon",
["dark-cyan", "dark-cyan"],
/\.proto$/i,
,
false,
,
/\.protobuf$/i,
/^(?:protobuf|Protocol\s*Buffers?)$/i,
],
["database-icon", ["dark-blue", "dark-blue"], /\.pydeps$|\.rviz$/i],
["database-icon", ["dark-purple", "dark-purple"], /\.eam\.fs$/i],
["database-icon", ["medium-pink", "medium-pink"], /\.qml$/i],
["database-icon", ["dark-pink", "dark-pink"], /\.qbs$/i],
[
"database-icon",
["medium-cyan", "medium-cyan"],
/\.ttl$/i,
,
false,
,
/\.turtle$/i,
],
["database-icon", ["medium-blue", "medium-blue"], /\.syntax$/i],
[
"database-icon",
["dark-red", "dark-red"],
/[\/\\](?:magic[\/\\]Magdir|file[\/\\]magic)[\/\\][-.\w]+$|lib[\\\/]icons[\\\/]\.icondb\.js$/i,
,
true,
],
["dbase-icon", ["medium-red", "medium-red"], /\.dbf$/i],
["debian-icon", ["medium-red", "medium-red"], /\.deb$/i],
["debian-icon", ["dark-cyan", "dark-cyan"], /^control$/],
["debian-icon", ["medium-cyan", "medium-cyan"], /^rules$/],
[
"diff-icon",
["medium-orange", "medium-orange"],
/\.diff$/i,
,
false,
,
/\.diff$/i,
/^Diff$|^udiff$/i,
],
["earth-icon", ["medium-blue", "medium-blue"], /\.zone$/i],
["earth-icon", ["medium-green", "medium-green"], /\.arpa$/i],
["earth-icon", ["dark-blue", "dark-blue"], /^CNAME$/],
[
"doxygen-icon",
["medium-blue", "medium-blue"],
/^Doxyfile$/,
,
false,
,
/\.doxygen$/i,
/^Doxyfile$/i,
],
[
"dyalog-icon",
["medium-orange", "medium-orange"],
/\.dyalog$/i,
,
false,
/^dyalog$/,
],
["dylib-icon", ["medium-cyan", "medium-cyan"], /\.(?:dylib|bundle)$/i],
["e-icon", ["medium-green", "medium-green"], /\.E$/, , false, /^rune$/],
["eagle-icon", ["medium-red", "medium-red"], /\.sch$/i],
["eagle-icon", ["dark-red", "dark-red"], /\.brd$/i],
[
"ec-icon",
["dark-blue", "dark-blue"],
/\.ec$/i,
,
false,
/^ec$/,
/\.ec$/i,
/^ec$/i,
],
["ec-icon", ["dark-purple", "dark-purple"], /\.eh$/i],
["ecere-icon", ["medium-blue", "medium-blue"], /\.epj$/i],
["eclipse-icon", ["dark-blue", "dark-blue"], /\.c?project$/],
["eclipse-icon", ["medium-red", "medium-red"], /\.classpath$/i],
[
"editorconfig-icon",
["medium-orange", "medium-orange"],
/\.editorconfig$/i,
,
false,
,
/\.editorconfig$/i,
/^EditorConfig$/i,
],
[
"eiffel-icon",
["medium-cyan", "medium-cyan"],
/\.e$/,
,
false,
,
/\.eiffel$/i,
/^Eiffel$/i,
],
[
"elixir-icon",
["dark-purple", "dark-purple"],
/\.ex$/i,
,
false,
/^elixir$/,
/\.elixir$/i,
/^elixir$/i,
],
["elixir-icon", ["medium-purple", "medium-purple"], /\.(?:exs|eex)$/i],
["elixir-icon", ["light-purple", "light-purple"], /mix\.exs?$/i],
[
"elm-icon",
["medium-blue", "medium-blue"],
/\.elm$/i,
,
false,
,
/\.elm$/i,
/^Elm$/i,
],
[
"emacs-icon",
["medium-purple", "medium-purple"],
/(?:^|\.)(?:el|_?emacs|spacemacs|emacs\.desktop|abbrev[-_]defs)$/i,
,
false,
/^emacs$/,
/\.emacs\.lisp$/i,
/^Emacs Lisp$|^elisp$/i,
],
[
"emacs-icon",
["dark-purple", "dark-purple"],
/(?:^|\.)(?:elc|eld)$/i,
,
false,
,
,
,
/^;ELC\x17\0{3}/,
],
["at-icon", ["medium-red", "dark-red"], /^(?:authors|owners)$/i],
[
"em-icon",
["medium-red", "medium-red"],
/\.emberscript$/i,
,
false,
,
/\.ember(?:script)?$/i,
/^EmberScript$/i,
],
[
"mustache-icon",
["medium-blue", "medium-blue"],
/\.em(?:blem)?$/i,
,
false,
,
/\.emblem$/i,
/^Emblem$/i,
],
[
"eq-icon",
["medium-orange", "medium-orange"],
/\.eq$/i,
,
false,
,
/\.eq$/i,
/^EQ$/i,
],
[
"erlang-icon",
["medium-red", "medium-red"],
/\.erl$/i,
,
false,
/^escript$/,
/\.erlang$/i,
/^Erlang$/i,
],
["erlang-icon", ["dark-red", "dark-red"], /\.beam$/i],
["erlang-icon", ["medium-maroon", "medium-maroon"], /\.hrl$/i],
["erlang-icon", ["medium-green", "medium-green"], /\.xrl$/i],
["erlang-icon", ["dark-green", "dark-green"], /\.yrl$/i],
["erlang-icon", ["dark-maroon", "dark-maroon"], /\.app\.src$/i],
[
"factor-icon",
["medium-orange", "medium-orange"],
/\.factor$/i,
,
false,
,
/\.factor$/i,
/^Factor$/i,
],
["factor-icon", ["dark-orange", "dark-orange"], /\.factor-rc$/i],
["factor-icon", ["medium-red", "medium-red"], /\.factor-boot-rc$/i],
[
"fancy-icon",
["dark-blue", "dark-blue"],
/\.fy$/i,
,
false,
/^fancy$/,
/\.fancy$/i,
/^fancy$/i,
],
["fancy-icon", ["medium-blue", "medium-blue"], /\.fancypack$/i],
["fancy-icon", ["medium-green", "medium-green"], /^Fakefile$/],
[
"fantom-icon",
["medium-blue", "medium-blue"],
/\.fan$/i,
,
false,
,
/\.fan(?:tom)?$/i,
/^Fantom$/i,
],
["fbx-icon", ["medium-maroon", "medium-maroon"], /\.fbx$/i],
["finder-icon", ["medium-blue", "medium-blue"], /^Icon\r$/],
["finder-icon", ["dark-blue", "dark-blue"], /\.rsrc$/i],
[
"flow-icon",
["medium-orange", "medium-orange"],
/\.(?:flowconfig|js\.flow)$/i,
],
["flux-icon", ["medium-blue", "medium-blue"], /\.fx$/i],
["flux-icon", ["dark-blue", "dark-blue"], /\.flux$/i],
[
"font-icon",
["dark-blue", "dark-blue"],
/\.woff2$/i,
,
false,
,
,
,
/^wOF2/,
],
[
"font-icon",
["medium-blue", "medium-blue"],
/\.woff$/i,
,
false,
,
,
,
/^wOFF/,
],
[
"font-icon",
["light-green", "light-green"],
/\.eot$/i,
,
false,
,
,
,
/^.{34}LP/,
],
[
"font-icon",
["dark-green", "dark-green"],
/\.ttc$/i,
,
false,
,
,
,
/^ttcf/,
],
[
"font-icon",
["medium-green", "medium-green"],
/\.ttf$/i,
,
false,
,
,
,
/^\0\x01\0{3}/,
],
[
"font-icon",
["dark-yellow", "dark-yellow"],
/\.otf$/i,
,
false,
,
,
,
/^OTTO.*\0/,
],
["font-icon", ["dark-red", "dark-red"], /\.pfb$/i],
["font-icon", ["medium-red", "medium-red"], /\.pfm$/i],
[
"ff-icon",
["medium-orange", "medium-orange"],
/\.pe$/i,
,
false,
/^fontforge$/,
/\.source\.fontforge$/i,
/^FontForge$|^pfaedit$/i,
],
[
"ff-icon",
["dark-blue", "dark-blue"],
/\.sfd$/i,
,
false,
,
/\.text\.sfd$/i,
/^FontForge$/i,
],
[
"fortran-icon",
["medium-maroon", "medium-maroon"],
/\.f$/i,
,
false,
,
/\.fortran\.?(?:modern|punchcard)?$/i,
/^Fortran$/i,
],
[
"fortran-icon",
["medium-green", "medium-green"],
/\.f90$/i,
,
false,
,
/\.fortran\.free$/i,
/^Fortran$/i,
],
["fortran-icon", ["medium-red", "medium-red"], /\.f03$/i],
["fortran-icon", ["medium-blue", "medium-blue"], /\.f08$/i],
[
"fortran-icon",
["medium-maroon", "medium-maroon"],
/\.f77$/i,
,
false,
,
/\.fortran\.fixed$/i,
/^Fortran$/i,
],
["fortran-icon", ["dark-pink", "dark-pink"], /\.f95$/i],
["fortran-icon", ["dark-cyan", "dark-cyan"], /\.for$/i],
["fortran-icon", ["dark-yellow", "dark-yellow"], /\.fpp$/i],
[
"freemarker-icon",
["medium-blue", "medium-blue"],
/\.ftl$/i,
,
false,
,
/\.ftl$/i,
/^FreeMarker$|^ftl$/i,
],
["frege-icon", ["dark-red", "dark-red"], /\.fr$/i],
[
"fsharp-icon",
["medium-blue", "medium-blue"],
/\.fs[xi]?$/i,
,
false,
,
/\.fsharp$/i,
/^FSharp$|^f#$/i,
],
["gml-icon", ["medium-green", "medium-green"], /\.gml$/i],
[
"gams-icon",
["dark-red", "dark-red"],
/\.gms$/i,
,
false,
,
/\.gams(?:-lst)?$/i,
/^GAMS$/i,
],
[
"gap-icon",
["medium-yellow", "dark-yellow"],
/\.gap$/i,
,
false,
/^gap$/,
/\.gap$/i,
/^gap$/i,
],
["gap-icon", ["dark-blue", "dark-blue"], /\.gi$/i],
["gap-icon", ["medium-orange", "medium-orange"], /\.tst$/i],
[
"gdb-icon",
["medium-green", "dark-green"],
/\.gdb$/i,
,
false,
/^gdb$/,
/\.gdb$/i,
/^gdb$/i,
],
["gdb-icon", ["medium-cyan", "dark-cyan"], /gdbinit$/i],
[
"godot-icon",
["medium-blue", "medium-blue"],
/\.gd$/i,
,
false,
,
/\.gdscript$/i,
/^GDScript$/i,
],
[
"gear-icon",
["medium-red", "medium-red"],
/^\.htaccess$|\.yardopts$/i,
],
["gear-icon", ["medium-orange", "medium-orange"], /^\.htpasswd$/i],
["gear-icon", ["dark-green", "dark-green"], /^\.env\.|\.pairs$/i],
["gear-icon", ["dark-yellow", "dark-yellow"], /^\.lesshintrc$/i],
[
"gear-icon",
["medium-yellow", "medium-yellow"],
/^\.csscomb\.json$|\.csslintrc$|\.jsbeautifyrc$|\.jshintrc$|\.jscsrc$/i,
],
[
"gear-icon",
["medium-maroon", "medium-maroon"],
/\.coffeelintignore$|\.codoopts$/i,
],
["gear-icon", ["medium-blue", "medium-blue"], /\.module$/i],
[
"gear-icon",
["dark-blue", "dark-blue"],
/\.arcconfig$|\.python-version$/i,
],
["gear-icon", ["dark-orange", "dark-orange"], /\.lintstagedrc$/i],
[
"gears-icon",
["dark-orange", "dark-orange"],
/\.dll$/i,
,
false,
,
,
,
/^PMOCCMOC/,
],
[
"code-icon",
["medium-blue", "medium-blue"],
/\.xml$|\.config$|\.4th$|\.cocci$|\.dyl$|\.dylan$|\.ecl$|\.forth$|\.launch$|\.manifest$|\.menu$|\.srdf$|\.st$|\.ui$|\.wsf$|\.x3d$|\.xaml$/i,
,
false,
,
,
,
/^<\?xml /,
],
[
"code-icon",
["dark-red", "dark-red"],
/\.rdf$|\.capnp$|\.dotsettings$|\.flex$|\.fsh$|\.fsproj$|\.prw$|\.xproj$/i,
,
false,
,
/\.capnp$/i,
],
["code-icon", ["medium-blue", "medium-blue"], /^_service$/],
["code-icon", ["medium-red", "medium-red"], /^configure\.ac$|\.ML$/],
["code-icon", ["medium-green", "medium-green"], /^Settings\.StyleCop$/],
[
"code-icon",
["medium-green", "medium-green"],
/\.abnf$|\.ditaval$|\.storyboard$|\.xmi$|\.yacc$/i,
,
false,
/^abnf$/,
/\.abnf$/i,
/^abnf$/i,
],
[
"code-icon",
["medium-purple", "medium-purple"],
/\.aepx$|\.dita$|\.grace$|\.lid$|\.nproj$/i,
],
[
"code-icon",
["dark-cyan", "dark-cyan"],
/\.agda$|\.plist$|\.wisp$|\.xlf$|\.xslt$/i,
,
false,
,
/\.plist$/i,
],
[
"code-icon",
["medium-orange", "medium-orange"],
/\.appxmanifest$|\.befunge$|\.fun$|\.muf$|\.xul$/i,
],
[
"code-icon",
["medium-cyan", "medium-cyan"],
/\.ash$|\.asn1?$|\.lagda$|\.lex$|\.props$|\.resx$|\.smt2$|\.vsh$|\.xsl$|\.yy$/i,
,
false,
/^xsl$/,
/\.xsl$/i,
],
[
"code-icon",
["dark-blue", "dark-blue"],
/\.axml$|\.bmx$|\.brs$|\.ccxml$|\.clixml$|\.fth$|\.intr$|\.mdpolicy$|\.mtml$|\.myt$|\.xsd$/i,
,
false,
/^brightscript$/,
/\.brightscript$/i,
],
[
"code-icon",
["medium-maroon", "medium-maroon"],
/\.bnf$|\.cbl$|\.cob$|\.cobol$|\.fxml$/i,
,
false,
/^bnf$/,
/\.bnf$/i,
/^bnf$/i,
],
["code-icon", ["dark-maroon", "dark-maroon"], /\.ccp$|\.cpy$|\.mxml$/i],
[
"code-icon",
["medium-red", "medium-red"],
/\.ch$|\.cw$|\.ebnf$|\.iml$|\.jflex$|\.m4$|\.mask$|\.mumps$|\.prg$|\.pt$|\.rl$|\.sml$|\.targets$|\.webidl$|\.wsdl$|\.xacro$|\.xliff$/i,
,
false,
/^ebnf$/,
/\.ebnf$/i,
],
["code-icon", ["dark-pink", "dark-pink"], /\.ct$|\.zcml$/i],
[
"code-icon",
["dark-green", "dark-green"],
/\.cy$|\.eclxml$|\.ivy$|\.sed$|\.tml$|\.y$/i,
],
[
"code-icon",
["dark-purple", "dark-purple"],
/\.ditamap$|\.frt$|\.lp$|\.omgrofl$|\.osm$|\.wxs$|\.xib$/i,
],
[
"code-icon",
["medium-pink", "medium-pink"],
/\.filters$|\.lol$|\.pig$/i,
],
["code-icon", ["dark-orange", "dark-orange"], /\.grxml$|\.urdf$/i],
["code-icon", ["medium-yellow", "medium-yellow"], /\.jelly$/i],
[
"code-icon",
["dark-yellow", "dark-yellow"],
/\.jsproj$|\.ohm$|\.sgml?$/i,
,
false,
/^ohm$/,
/\.ohm$/i,
],
[
"code-icon",
["dark-blue", "dark-blue"],
/\.mq[45h]$/i,
,
false,
,
/(?:^|\.)mq[45](?=\.|$)/i,
],
["code-icon", ["light-green", "light-green"], /\.odd$/i],
[
"code-icon",
["light-blue", "light-blue"],
/\.psc1$|\.smt$/i,
,
false,
/boolector|cvc4|mathsat5|opensmt|smtinterpol|smt-rat|stp|verit|yices2|z3/,
/\.smt$/i,
],
["code-icon", ["light-cyan", "light-cyan"], /\.scxml$/i],
["code-icon", ["light-maroon", "light-maroon"], /\.sig$|\.wxl$/i],
["code-icon", ["light-orange", "light-orange"], /\.ux$|\.wxi$/i],
["code-icon", ["light-purple", "light-purple"], /\.vxml$/i],
[
"genshi-icon",
["medium-red", "medium-red"],
/\.kid$/i,
,
false,
,
/\.genshi$/i,
/^Genshi$|^xml\+(?:genshi|kid)$/i,
],
[
"gentoo-icon",
["dark-cyan", "dark-cyan"],
/\.ebuild$/i,
,
false,
,
/\.ebuild$/i,
/^Gentoo$/i,
],
["gentoo-icon", ["medium-blue", "medium-blue"], /\.eclass$/i],
[
"git-icon",
["medium-red", "medium-red"],
/^\.git|^\.keep$|\.mailmap$/i,
,
false,
,
/\.git-(?:commit|config|rebase)$/i,
/^Git$/i,
],
["git-commit-icon", ["medium-red", "medium-red"], /^COMMIT_EDITMSG$/],
[
"git-merge-icon",
["medium-red", "medium-red"],
/^MERGE_(?:HEAD|MODE|MSG)$/,
],
["glade-icon", ["medium-green", "medium-green"], /\.glade$/i],
["pointwise-icon", ["medium-blue", "medium-blue"], /\.glf$/i],
["glyphs-icon", ["medium-green", "medium-green"], /\.glyphs$/i],
[
"gn-icon",
["dark-blue", "dark-blue"],
/\.gn$/i,
,
false,
/^gn$/,
/\.gn$/i,
/^gn$/i,
],
["gn-icon", ["medium-blue", "medium-blue"], /\.gni$/i],
["gnu-icon", ["medium-red", "dark-red"], /\.(?:gnu|gplv[23])$/i],
[
"graph-icon",
["medium-red", "medium-red"],
/\.(?:gp|plo?t|gnuplot)$/i,
,
false,
/^gnuplot$/,
/\.gnuplot$/i,
/^Gnuplot$/i,
],
[
"go-icon",
["medium-blue", "medium-blue"],
/\.go$/i,
,
false,
,
/\.go(?:template)?$/i,
/^Go$/i,
],
[
"golo-icon",
["medium-orange", "medium-orange"],
/\.golo$/i,
,
false,
,
/\.golo$/i,
/^Golo$/i,
],
[
"gosu-icon",
["medium-blue", "medium-blue"],
/\.gs$/i,
,
false,
,
/\.gosu(?:\.\d+)?$/i,
/^Gosu$/i,
],
["gosu-icon", ["medium-green", "medium-green"], /\.gst$/i],
["gosu-icon", ["dark-green", "dark-green"], /\.gsx$/i],
["gosu-icon", ["dark-blue", "dark-blue"], /\.vark$/i],
[
"gradle-icon",
["medium-blue", "medium-blue"],
/\.gradle$/i,
,
false,
,
/\.gradle$/i,
/^Gradle$/i,
],
["gradle-icon", ["dark-purple", "dark-purple"], /gradlew$/i],
["gf-icon", ["medium-red", "medium-red"], /\.gf$/i],
[
"graphql-icon",
["medium-pink", "medium-pink"],
/\.graphql$/i,
,
false,
,
/\.graphql$/i,
/^GraphQL$/i,
],
["graphql-icon", ["medium-purple", "medium-purple"], /\.gql$/i],
[
"graphviz-icon",
["medium-blue", "medium-blue"],
/\.gv$/i,
,
false,
,
/\.dot$/i,
/^Graphviz$/i,
],
["graphviz-icon", ["dark-cyan", "dark-cyan"], /\.dot$/i],
[
"groovy-icon",
["light-blue", "light-blue"],
/\.(?:groovy|grt|gtpl|gsp|gvy)$/i,
,
false,
/^groovy$/,
/\.groovy$/i,
/^Groovy$|^gsp$/i,
],
[
"hack-icon",
["medium-orange", "medium-orange"],
/\.hh$/i,
,
false,
,
/\.hack$/i,
/^Hack$/i,
],
[
"haml-icon",
["medium-yellow", "medium-yellow"],
/\.haml$/i,
,
false,
/^haml$/,
/\.haml$/i,
/^haml$/i,
],
[
"haml-icon",
["medium-maroon", "medium-maroon"],
/\.hamlc$/i,
,
false,
/^hamlc$/,
/\.hamlc$/i,
/^Haml$|^hamlc$/i,
],
[
"harbour-icon",
["dark-blue", "dark-blue"],
/\.hb$/i,
,
false,
,
/\.harbour$/i,
/^Harbour$/i,
],
[
"hashicorp-icon",
["dark-purple", "dark-purple"],
/\.hcl$/i,
,
false,
,
/(?:^|\.)(?:hcl|hashicorp)(?:\.|$)/i,
/^Hashicorp Configuration Language$/i,
],
[
"haskell-icon",
["medium-purple", "medium-purple"],
/\.hs$/i,
,
false,
/^runhaskell$/,
/\.source\.haskell$/i,
/^Haskell$/i,
],
[
"haskell-icon",
["medium-blue", "medium-blue"],
/\.hsc$/i,
,
false,
,
/\.hsc2hs$/i,
/^Haskell$/i,
],
[
"haskell-icon",
["dark-purple", "dark-purple"],
/\.c2hs$/i,
,
false,
,
/\.c2hs$/i,
/^Haskell$|^C2hs(?:\s*Haskell)?$/i,
],
[
"haskell-icon",
["dark-blue", "dark-blue"],
/\.lhs$/i,
,
false,
,
/\.latex\.haskell$/i,
/^Haskell$|^(?:lhaskell|lhs|Literate\s*Haskell)$/i,
],
[
"haxe-icon",
["medium-orange", "medium-orange"],
/\.hx(?:[sm]l|)?$/,
,
false,
,
/(?:^|\.)haxe(?:\.\d+)?$/i,
/^Haxe$/i,
],
["heroku-icon", ["medium-purple", "medium-purple"], /^Procfile$/],
["heroku-icon", ["light-purple", "light-purple"], /\.buildpacks$/i],
["heroku-icon", ["dark-purple", "dark-purple"], /^\.vendor_urls$/],
[
"html5-icon",
["medium-orange", "medium-orange"],
/\.x?html?$/i,
,
false,
,
/\.html\.basic$/i,
/^HTML$|^(?:xhtml|htm)$/i,
],
[
"html5-icon",
["medium-red", "medium-red"],
/\.cshtml$|\.latte$/i,
,
false,
/^latte$/,
/\.latte$/i,
],
[
"html5-icon",
["medium-green", "medium-green"],
/\.ejs$|\.kit$|\.swig$/i,
,
false,
/^swig$/,
/\.swig$/i,
],
[
"html5-icon",
["dark-blue", "dark-blue"],
/\.gohtml$|\.phtml$/i,
,
false,
/^gohtml$/,
/\.gohtml$/i,
/^HTML$|^g[0o]html$/i,
],
[
"html5-icon",
["medium-purple", "medium-purple"],
/\.html\.eex$|\.jsp$/i,
,
false,
,
/\.jsp$/i,
],
["html5-icon", ["medium-cyan", "medium-cyan"], /\.shtml$/i],
[
"html5-icon",
["dark-red", "dark-red"],
/\.scaml$/i,
,
false,
/^scaml$/,
/\.scaml$/i,
/^HTML$|^scaml$/i,
],
[
"html5-icon",
["medium-red", "medium-red"],
/\.vash$/i,
,
false,
/^vash$/,
/\.vash$/i,
/^HTML$|^vash$/i,
],
[
"html5-icon",
["medium-blue", "medium-blue"],
/\.dtml$/i,
,
false,
/^dtml$/,
/\.dtml$/i,
/^HTML$|^dtml$/i,
],
[
"hy-icon",
["dark-blue", "dark-blue"],
/\.hy$/i,
,
false,
,
/\.hy$/i,
/^Hy$|^hylang$/i,
],
[
"idl-icon",
["medium-blue", "medium-blue"],
/\.dlm$/i,
,
false,
,
/\.idl$/i,
/^IDL$/i,
],
[
"idris-icon",
["dark-red", "dark-red"],
/\.idr$/i,
,
false,
,
/\.(?:idris|ipkg)$/i,
/^Idris$/i,
],
["idris-icon", ["medium-maroon", "medium-maroon"], /\.lidr$/i],
["igorpro-icon", ["dark-red", "dark-red"], /\.ipf$/i],
[
"image-icon",
["medium-orange", "medium-orange"],
/\.a?png$|\.svgz$/i,
,
false,
,
,
,
/^.PNG\r\n\x1A\n/,
],
[
"image-icon",
["medium-yellow", "medium-yellow"],
/\.gif$|\.ora$|\.sgi$/i,
,
false,
,
,
,
/^GIF8[97]a/,
],
[
"image-icon",
["medium-green", "medium-green"],
/\.jpg$/i,
,
false,
,
,
,
/^\xFF\xD8\xFF[\xDB\xE0\xE1]|(?:JFIF|Exif)\0|^\xCF\x84\x01|^\xFF\xD8.+\xFF\xD9$/,
],
[
"image-icon",
["medium-blue", "medium-blue"],
/\.ico$/i,
,
false,
,
,
,
/^\0{2}\x01\0/,
],
[
"image-icon",
["dark-blue", "dark-blue"],
/\.webp$|\.iff$|\.lbm$|\.liff$|\.nrrd$|\.pcx$|\.vsdx?$/i,
,
false,
,
,
,
/^RIFF.{4}WEBPVP8/,
],
[
"image-icon",
["medium-red", "medium-red"],
/\.bmp$/i,
,
false,
,
,
,
/^BM/,
],
[
"image-icon",
["medium-red", "medium-red"],
/\.bpg$/i,
,
false,
,
,
,
/^BPG\xFB/,
],
[
"image-icon",
["medium-orange", "medium-orange"],
/\.cin$/i,
,
false,
,
,
,
/^\x80\x2A\x5F\xD7/,
],
[
"image-icon",
["dark-green", "dark-green"],
/\.cd5$/i,
,
false,
,
,
,
/^_CD5\x10\0/,
],
["image-icon", ["light-yellow", "light-yellow"], /\.cpc$/i],
[
"image-icon",
["medium-orange", "medium-orange"],
/\.cr2$/i,
,
false,
,
,
,
/^II\*\0\x10\0{3}CR/,
],
[
"image-icon",
["medium-pink", "medium-pink"],
/\.dcm$|\.mpo$|\.pbm$/i,
,
false,
,
,
,
/^.{128}DICM/,
],
[
"image-icon",
["dark-green", "dark-green"],
/\.dds$/i,
,
false,
,
,
,
/^DDS \|\0{3}/,
],
[
"image-icon",
["medium-purple", "medium-purple"],
/\.djvu?$|\.pxr$/i,
,
false,
,
,
,
/^AT&TFORM/,
],
[
"image-icon",
["dark-orange", "dark-orange"],
/\.dpx$|\.raw$/i,
,
false,
,
,
,
/^(?:SDPX|XPDS)/,
],
["image-icon", ["light-blue", "light-blue"], /\.ecw$|\.sct$/i],
[
"image-icon",
["dark-yellow", "dark-yellow"],
/\.exr$/i,
,
false,
,
,
,
/^v\/1\x01/,
],
[
"image-icon",
["medium-cyan", "medium-cyan"],
/\.fits?$|\.fts$/i,
,
false,
,
,
,
/^SIMPLE =/,
],
[
"image-icon",
["dark-red", "dark-red"],
/\.flif$|\.hdp$|\.heic$|\.heif$|\.jxr$|\.wdp$/i,
,
false,
,
,
,
/^FLIF/,
],
[
"image-icon",
["medium-blue", "medium-blue"],
/\.hdr$/i,
,
false,
,
,
,
/^#\?RADIANCE\n/,
],
[
"image-icon",
["medium-pink", "medium-pink"],
/\.icns$/i,
,
false,
,
,
,
/^icns/,
],
[
"image-icon",
["dark-green", "dark-green"],
/\.(?:jp[f2xm]|j2c|mj2)$/i,
,
false,
,
,
,
/^\0{3}\fjP {2}/,
],
["image-icon", ["dark-cyan", "dark-cyan"], /\.jps$/i],
[
"image-icon",
["medium-orange", "medium-orange"],
/\.mng$/i,
,
false,
,
,
,
/^.MNG\r\n\x1A\n/,
],
["image-icon", ["light-red", "light-red"], /\.pgf$/i],
["image-icon", ["light-purple", "light-purple"], /\.pict$/i],
[
"image-icon",
["dark-orange", "dark-orange"],
/\.tga$/i,
,
false,
,
,
,
/TRUEVISION-XFILE\.\0$/,
],
[
"image-icon",
["medium-red", "medium-red"],
/\.tiff?$/i,
,
false,
,
,
,
/^II\x2A\0|^MM\0\x2A/,
],
["image-icon", ["dark-maroon", "dark-maroon"], /\.wbm$/i],
[
"inform7-icon",
["medium-blue", "medium-blue"],
/\.ni$/i,
,
false,
,
/\.inform-?7?$/i,
/^Inform 7$|^i7$/i,
],
["inform7-icon", ["dark-blue", "dark-blue"], /\.i7x$/i],
[
"inno-icon",
["dark-blue", "dark-blue"],
/\.iss$/i,
,
false,
,
/\.inno$/i,
/^Inno Setup$/i,
],
[
"io-icon",
["dark-purple", "dark-purple"],
/\.io$/i,
,
false,
/^io$/,
/^source\.io$/i,
/^Io$/i,
],
[
"ioke-icon",
["medium-red", "medium-red"],
/\.ik$/i,
,
false,
/^ioke$/,
],
[
"isabelle-icon",
["dark-red", "dark-red"],
/\.thy$/i,
,
false,
,
/\.isabelle\.theory$/i,
/^Isabelle$/i,
],
["isabelle-icon", ["dark-blue", "dark-blue"], /^ROOT$/],
[
"j-icon",
["light-blue", "light-blue"],
/\.ijs$/i,
,
false,
/^jconsole$/,
/\.j$/i,
/^J$/i,
],
[
"jade-icon",
["medium-red", "medium-red"],
/\.jade$/i,
,
false,
,
/\.jade$/i,
/^Jade$/i,
],
["jake-icon", ["medium-maroon", "dark-maroon"], /^Jakefile$/],
["jake-icon", ["medium-yellow", "dark-yellow"], /\.jake$/i],
[
"java-icon",
["medium-purple", "medium-purple"],
/\.java$/i,
,
false,
,
/\.java$/i,
/^Java$/i,
],
[
"js-icon",
["medium-yellow", "dark-yellow"],
/\.js$|\.es6$|\.es$/i,
,
false,
/^(?:node|iojs)$/,
/\.js$/i,
/^JavaScript$|^(?:js|node)$/i,
],
["js-icon", ["medium-orange", "dark-orange"], /\._js$/i],
["js-icon", ["medium-maroon", "dark-maroon"], /\.jsb$|\.dust$/i],
["js-icon", ["medium-blue", "dark-blue"], /\.jsm$|\.mjs$|\.xsjslib$/i],
["js-icon", ["medium-green", "dark-green"], /\.jss$/i],
["js-icon", ["medium-pink", "dark-pink"], /\.sjs$/i],
["js-icon", ["medium-red", "dark-red"], /\.ssjs$/i],
["js-icon", ["medium-purple", "dark-purple"], /\.xsjs$/i],
["jenkins-icon", ["medium-red", "dark-red"], /^Jenkinsfile$/],
[
"jinja-icon",
["dark-red", "dark-red"],
/\.jinja$/i,
,
false,
,
/\.jinja$/i,
/^Jinja$|^(?:django|htmldjango|html\+django\/jinja|html\+jinja)$/i,
],
["jinja-icon", ["medium-red", "medium-red"], /\.jinja2$/i],
["jsonld-icon", ["medium-blue", "medium-blue"], /\.jsonld$/i],
[
"sql-icon",
["medium-blue", "medium-blue"],
/\.jq$/i,
,
false,
,
/\.jq$/i,
/^JSONiq$/i,
],
[
"jsx-icon",
["medium-blue", "dark-blue"],
/\.jsx$/i,
,
false,
,
/\.jsx$/i,
/^JSX$/i,
],
[
"julia-icon",
["medium-purple", "medium-purple"],
/\.jl$/i,
,
false,
,
/\.julia$/i,
/^Julia$/i,
],
[
"jupyter-icon",
["dark-orange", "dark-orange"],
/\.ipynb$/i,
,
false,
,
/\.ipynb$/i,
/^(?:ipynb|(?:Jupyter|IPython)\s*Notebook)$/i,
],
["jupyter-icon", ["dark-cyan", "dark-cyan"], /^Notebook$/],
["keynote-icon", ["medium-blue", "medium-blue"], /\.keynote$/i],
["keynote-icon", ["dark-blue", "dark-blue"], /\.knt$/i],
[
"kivy-icon",
["dark-maroon", "dark-maroon"],
/\.kv$/i,
,
false,
,
/\.kv$/i,
/^Kivy$/i,
],
["earth-icon", ["medium-green", "medium-green"], /\.kml$/i],
[
"kotlin-icon",
["dark-blue", "dark-blue"],
/\.kt$/i,
,
false,
/^kotlin$/,
/\.kotlin$/i,
/^k[0o]tlin$/i,
],
["kotlin-icon", ["medium-blue", "medium-blue"], /\.ktm$/i],
["kotlin-icon", ["medium-orange", "medium-orange"], /\.kts$/i],
[
"krl-icon",
["medium-blue", "medium-blue"],
/\.krl$/i,
,
false,
,
/\.krl$/i,
/^KRL$/i,
],
["labview-icon", ["dark-blue", "dark-blue"], /\.lvproj$/i],
[
"laravel-icon",
["medium-orange", "medium-orange"],
/\.blade\.php$/i,
,
false,
,
/\.php\.blade$/i,
/^Laravel$/i,
],
[
"lasso-icon",
["dark-blue", "dark-blue"],
/\.lasso$|\.las$/i,
,
false,
,
/\.lasso$/i,
/^Lasso$|^lass[0o]script$/i,
],
["lasso-icon", ["medium-blue", "medium-blue"], /\.lasso8$/i],
["lasso-icon", ["medium-purple", "medium-purple"], /\.lasso9$/i],
["lasso-icon", ["medium-red", "medium-red"], /\.ldml$/i],
[
"lean-icon",
["dark-purple", "dark-purple"],
/\.lean$/i,
,
false,
/^lean$/,
/\.lean$/i,
/^lean$/i,
],
["lean-icon", ["dark-red", "dark-red"], /\.hlean$/i],
["lfe-icon", ["dark-red", "dark-red"], /\.lfe$/i],
["lightwave-icon", ["medium-red", "medium-red"], /\.lwo$/i],
["lightwave-icon", ["medium-blue", "medium-blue"], /\.lws$/i],
[
"lisp-icon",
["medium-red", "medium-red"],
/\.lsp$/i,
,
false,
/^newlisp$/,
/\.newlisp$/i,
/^Lisp$|^newlisp$/i,
],
[
"lisp-icon",
["dark-red", "dark-red"],
/\.lisp$/i,
,
false,
/^lisp$/,
/\.lisp$/i,
/^lisp$/i,
],
[
"lisp-icon",
["medium-maroon", "medium-maroon"],
/\.l$|\.nl$/i,
,
false,
/picolisp|pil/,
],
["lisp-icon", ["medium-blue", "medium-blue"], /\.ny$|\.sexp$/i],
["lisp-icon", ["medium-purple", "medium-purple"], /\.podsl$/i],
[
"ls-icon",
["medium-blue", "medium-blue"],
/\.ls$/i,
,
false,
,
/\.livescript$/i,
/^LiveScript$|^(?:ls|live-script)$/i,
],
["ls-icon", ["dark-blue", "dark-blue"], /\._ls$/i],
["ls-icon", ["medium-green", "medium-green"], /^Slakefile$/],
[
"llvm-icon",
["dark-green", "dark-green"],
/\.ll$/i,
,
false,
/^llvm$/,
/\.llvm$/i,
/^llvm$/i,
],
["llvm-icon", ["medium-yellow", "dark-yellow"], /\.clang-format$/i],
[
"mobile-icon",
["dark-blue", "dark-blue"],
/\.xm$/i,
,
false,
/^logos$/,
/\.logos$/i,
/^l[0o]g[0o]s$/i,
],
["mobile-icon", ["dark-red", "dark-red"], /\.xi$/i],
[
"logtalk-icon",
["medium-red", "medium-red"],
/\.(?:logtalk|lgt)$/i,
,
false,
,
/\.logtalk$/i,
/^Logtalk$/i,
],
["lookml-icon", ["medium-purple", "medium-purple"], /\.lookml$/i],
[
"lsl-icon",
["medium-cyan", "medium-cyan"],
/\.lsl$/i,
,
false,
/^lsl$/,
/\.lsl$/i,
/^lsl$/i,
],
["lsl-icon", ["dark-cyan", "dark-cyan"], /\.lslp$/i],
[
"lua-icon",
["medium-blue", "medium-blue"],
/\.lua$/i,
,
false,
/^lua$/,
/\.lua$/i,
/^lua$/i,
],
["lua-icon", ["dark-blue", "dark-blue"], /\.pd_lua$/i],
["lua-icon", ["dark-purple", "dark-purple"], /\.rbxs$/i],
["lua-icon", ["dark-red", "dark-red"], /\.wlua$/i],
[
"checklist-icon",
["medium-yellow", "medium-yellow"],
/^Makefile|^makefile$/,
,
false,
/^make$/,
/\.makefile$/i,
/^Makefile$|^(?:bsdmake|make|mf)$/i,
],
[
"checklist-icon",
["medium-yellow", "medium-yellow"],
/\.(?:mk|mak|make)$|^mkfile$/i,
],
[
"checklist-icon",
["medium-red", "medium-red"],
/^BSDmakefile$|\.am$/i,
],
["checklist-icon", ["medium-green", "medium-green"], /^GNUmakefile$/i],
["checklist-icon", ["medium-blue", "medium-blue"], /^Kbuild$/],
["checklist-icon", ["dark-blue", "dark-blue"], /\.bb$/i],
["checklist-icon", ["dark-blue", "dark-blue"], /^DEPS$/],
["checklist-icon", ["medium-blue", "medium-blue"], /\.mms$/i],
["checklist-icon", ["light-blue", "light-blue"], /\.mmk$/i],
["checklist-icon", ["dark-purple", "dark-purple"], /\.pri$/i],
[
"mako-icon",
["dark-blue", "dark-blue"],
/\.mak?o$/i,
,
false,
,
/\.mako$/i,
/^Mako$/i,
],
[
"manpage-icon",
["dark-green", "dark-green"],
/\.(?:1(?:[bcmsx]|has|in)?|[24568]|3(?:avl|bsm|3c|in|m|qt|x)?|7(?:d|fs|i|ipp|m|p)?|9[efps]?|chem|eqn|groff|man|mandoc|mdoc|me|mom|n|nroff|pic|tmac|tmac-u|tr|troff)$/i,
,
false,
/man|mandoc|(?:[gnt]|dit)roff/i,
/\.[gt]?roff$/i,
/^Manual Page$|^(?:[gtn]?roff|manpage)$/i,
/^\.TH[ \t]+(?:\S+)|^'\\" [tre]+(?=\s|$)/,
],
[
"manpage-icon",
["dark-maroon", "dark-maroon"],
/\.(?:rnh|rno|roff|run|runoff)$/i,
,
false,
/^runoff$/,
/\.runoff$/i,
/^Manual Page$|^run[0o]ff$/i,
],
[
"mapbox-icon",
["medium-cyan", "medium-cyan"],
/\.mss$/i,
,
false,
,
/\.mss$/i,
/^Mapbox$|^Carto(?:CSS)?$/i,
],
[
"markdown-icon",
["medium-blue", "medium-blue"],
/\.(?:md|mdown|markdown|mkd|mkdown|mkdn|rmd|ron)$/i,
,
false,
,
/\.gfm$/i,
/^Markdown$/i,
],
[
"mathematica-icon",
["dark-red", "dark-red"],
/\.mathematica$|\.nbp$/i,
,
false,
,
/\.mathematica$/i,
/^Mathematica$|^mma$/i,
],
["mathematica-icon", ["medium-red", "medium-red"], /\.cdf$/i],
["mathematica-icon", ["medium-orange", "medium-orange"], /\.ma$/i],
["mathematica-icon", ["medium-maroon", "medium-maroon"], /\.mt$/i],
["mathematica-icon", ["dark-orange", "dark-orange"], /\.nb$/i],
["mathematica-icon", ["medium-yellow", "medium-yellow"], /\.wl$/i],
["mathematica-icon", ["dark-yellow", "dark-yellow"], /\.wlt$/i],
[
"matlab-icon",
["medium-yellow", "medium-yellow"],
/\.matlab$/i,
,
false,
,
/\.(?:matlab|octave)$/i,
/^MATLAB$|^[0o]ctave$/i,
],
["max-icon", ["dark-purple", "dark-purple"], /\.maxpat$/i],
["max-icon", ["medium-red", "medium-red"], /\.maxhelp$/i],
["max-icon", ["medium-blue", "medium-blue"], /\.maxproj$/i],
["max-icon", ["medium-purple", "medium-purple"], /\.mxt$/i],
["max-icon", ["medium-green", "medium-green"], /\.pat$/i],
[
"maxscript-icon",
["dark-blue", "dark-blue"],
/\.ms$/i,
,
false,
,
/\.maxscript$/i,
/^MAXScript$/i,
],
["maxscript-icon", ["dark-purple", "dark-purple"], /\.mcr$/i],
["maxscript-icon", ["medium-red", "medium-red"], /\.mce$/i],
["maxscript-icon", ["dark-cyan", "dark-cyan"], /\.max$/i],
["maxscript-icon", ["medium-cyan", "medium-cyan"], /\.3ds$/i],
["maya-icon", ["dark-cyan", "dark-cyan"], /\.mb$/i],
["maya-icon", ["dark-blue", "dark-blue"], /\.mel$/i],
["maya-icon", ["dark-purple", "dark-purple"], /\.mcf[ip]$/i],
[
"mediawiki-icon",
["medium-yellow", "medium-yellow"],
/\.mediawiki$/i,
,
false,
/^mediawiki$/,
/\.mediawiki$/i,
/^mediawiki$/i,
],
["mediawiki-icon", ["medium-orange", "medium-orange"], /\.wiki$/i],
[
"bullhorn-icon",
["medium-orange", "medium-orange"],
/^\.mention-bot$/i,
],
[
"mercury-icon",
["medium-cyan", "medium-cyan"],
/\.moo$/i,
,
false,
/^mmi$/,
/\.mercury$/i,
/^Mercury$/i,
],
["metal-icon", ["dark-cyan", "dark-cyan"], /\.metal$/i],
["access-icon", ["dark-maroon", "dark-maroon"], /\.accda$/i],
["access-icon", ["medium-maroon", "medium-maroon"], /\.accdb$/i],
["access-icon", ["medium-green", "medium-green"], /\.accde$/i],
["access-icon", ["medium-red", "medium-red"], /\.accdr$/i],
["access-icon", ["dark-red", "dark-red"], /\.accdt$/i],
["access-icon", ["light-maroon", "light-maroon"], /\.adn$|\.laccdb$/i],
["access-icon", ["dark-purple", "dark-purple"], /\.mdw$/i],
["excel-icon", ["dark-orange", "dark-orange"], /\.xls$/i],
["excel-icon", ["dark-green", "dark-green"], /\.xlsx$/i],
["excel-icon", ["medium-green", "medium-green"], /\.xlsm$/i],
["excel-icon", ["medium-red", "medium-red"], /\.xlsb$/i],
["excel-icon", ["dark-cyan", "dark-cyan"], /\.xlt$/i],
["onenote-icon", ["dark-purple", "dark-purple"], /\.one$/i],
["powerpoint-icon", ["dark-red", "dark-red"], /\.pps$/i],
["powerpoint-icon", ["medium-orange", "medium-orange"], /\.ppsx$/i],
["powerpoint-icon", ["dark-orange", "dark-orange"], /\.ppt$/i],
["powerpoint-icon", ["medium-red", "medium-red"], /\.pptx$/i],
["powerpoint-icon", ["medium-maroon", "medium-maroon"], /\.potm$/i],
["powerpoint-icon", ["dark-green", "dark-green"], /\.mpp$/i],
["word-icon", ["medium-blue", "medium-blue"], /\.doc$/i],
["word-icon", ["dark-blue", "dark-blue"], /\.docx$/i],
["word-icon", ["medium-maroon", "medium-maroon"], /\.docm$/i],
["word-icon", ["dark-cyan", "dark-cyan"], /\.docxml$/i],
["word-icon", ["dark-maroon", "dark-maroon"], /\.dotm$/i],
["word-icon", ["medium-cyan", "medium-cyan"], /\.dotx$/i],
["word-icon", ["medium-orange", "medium-orange"], /\.wri$/i],
[
"minecraft-icon",
["dark-green", "dark-green"],
/^mcmod\.info$/i,
,
false,
,
/\.forge-config$/i,
/^Minecraft$/i,
],
[
"mirah-icon",
["medium-blue", "medium-blue"],
/\.dr?uby$/g,
,
false,
/^mirah$/,
/\.mirah$/i,
/^mirah$/i,
],
["mirah-icon", ["light-blue", "light-blue"], /\.mir(?:ah)?$/g],
[
"model-icon",
["medium-red", "medium-red"],
/\.obj$/i,
,
false,
,
/\.wavefront\.obj$/i,
],
[
"model-icon",
["dark-blue", "dark-blue"],
/\.mtl$/i,
,
false,
,
/\.wavefront\.mtl$/i,
],
["model-icon", ["dark-green", "dark-green"], /\.stl$/i],
["model-icon", ["medium-orange", "medium-orange"], /\.u3d$/i],
[
"circle-icon",
["light-red", "light-red"],
/\.mo$/i,
,
false,
,
/\.modelica(?:script)?$/i,
/^Modelica$/i,
],
[
"modula2-icon",
["medium-blue", "medium-blue"],
/\.mod$/i,
,
false,
,
/(?:^|\.)modula-?2(?:\.|$)/i,
/^Modula-2$/i,
],
["modula2-icon", ["medium-green", "medium-green"], /\.def$/i],
["modula2-icon", ["medium-red", "medium-red"], /\.m2$/i],
[
"monkey-icon",
["medium-maroon", "medium-maroon"],
/\.monkey$/i,
,
false,
,
/\.monkey$/i,
/^Monkey$/i,
],
[
"moon-icon",
["medium-yellow", "medium-yellow"],
/\.moon$/i,
,
false,
/^moon$/,
/\.moon$/i,
/^MoonScript$/i,
],
[
"mruby-icon",
["medium-red", "medium-red"],
/\.mrb$/i,
,
false,
/^mruby$/,
],
["msql-icon", ["medium-purple", "medium-purple"], /\.dsql$/i],
["mupad-icon", ["medium-red", "medium-red"], /\.mu$/i],
["music-icon", ["medium-orange", "medium-orange"], /\.chord$/i],
[
"music-icon",
["dark-blue", "dark-blue"],
/\.midi?$/i,
,
false,
,
,
,
/^MThd/,
],
[
"music-icon",
["medium-green", "medium-green"],
/\.ly$/i,
,
false,
,
/\.(?:At)?lilypond-/i,
/^Lily\s*Pond$/i,
],
["music-icon", ["dark-green", "dark-green"], /\.ily$/i],
["music-icon", ["dark-red", "dark-red"], /\.pd$/i],
[
"mustache-icon",
["medium-orange", "medium-orange"],
/\.(?:hbs|handlebars|mustache)$/i,
,
false,
,
/(?:^|\.)(?:mustache|handlebars)(?:\.|$)/i,
/^Mustache$|^(?:hbs|htmlbars|handlebars)$/i,
],
[
"nant-icon",
["medium-orange", "medium-orange"],
/\.build$/i,
,
false,
,
/\.nant-build$/i,
/^NAnt$/i,
],
[
"earth-icon",
["medium-green", "medium-green"],
/\.ncl$/i,
,
false,
,
/\.ncl$/i,
/^NCAR Command Language \(NCL\)$/i,
],
[
"neko-icon",
["medium-orange", "medium-orange"],
/\.neko$/i,
,
false,
/^neko$/,
/\.neko$/i,
/^nek[0o]$/i,
],
["amx-icon", ["medium-blue", "medium-blue"], /\.axs$/i],
["amx-icon", ["dark-blue", "dark-blue"], /\.axi$/i],
["netlogo-icon", ["medium-red", "medium-red"], /\.nlogo$/i],
[
"nginx-icon",
["medium-green", "medium-green"],
/\.nginxconf$/i,
,
false,
,
/\.nginx$/i,
/^NGINX$|^nginx[\W_ \t]?c[0o]nfigurati[0o]n[\W_ \t]?file$/i,
],
["nib-icon", ["dark-orange", "dark-orange"], /\.nib$/i],
[
"nimrod-icon",
["medium-green", "medium-green"],
/\.nim(?:rod)?$/i,
,
false,
,
/\.nim$/i,
/^Nimrod$/i,
],
[
"shuriken-icon",
["medium-blue", "medium-blue"],
/\.ninja$/i,
,
false,
/^ninja$/,
/\.ninja$/i,
/^ninja$/i,
],
[
"nit-icon",
["dark-green", "dark-green"],
/\.nit$/i,
,
false,
,
/\.nit$/i,
/^Nit$/i,
],
[
"nix-icon",
["medium-cyan", "medium-cyan"],
/\.nix$/i,
,
false,
,
/\.nix$/i,
/^Nix$|^nix[0o]s$/i,
],
[
"nmap-icon",
["dark-blue", "dark-blue"],
/\.nse$/i,
,
false,
,
/\.nmap$/i,
/^Nmap$/i,
],
["node-icon", ["medium-green", "medium-green"], /\.njs$|\.nvmrc$/i],
["node-icon", ["dark-green", "dark-green"], /\.node-version$/i],
[
"nsis-icon",
["medium-purple", "medium-purple"],
/\.nsi$/i,
,
false,
/^nsis$/,
/\.nsis$/i,
/^nsis$/i,
],
["nsis-icon", ["dark-cyan", "dark-cyan"], /\.nsh$/i],
[
"recycle-icon",
["light-green", "light-green"],
/\.nu$/i,
,
false,
/^nush$/,
/\.nu$/i,
/^Nu$|^nush$/i,
],
["recycle-icon", ["dark-green", "dark-green"], /^Nukefile$/],
["nuget-icon", ["medium-blue", "medium-blue"], /\.nuspec$/i],
["nuget-icon", ["dark-purple", "dark-purple"], /\.pkgproj$/i],
["numpy-icon", ["dark-blue", "dark-blue"], /\.numpy$/i],
["numpy-icon", ["medium-blue", "medium-blue"], /\.numpyw$/i],
["numpy-icon", ["medium-orange", "medium-orange"], /\.numsc$/i],
["nunjucks-icon", ["dark-green", "dark-green"], /\.(?:nunjucks|njk)$/i],
[
"objc-icon",
["medium-blue", "medium-blue"],
/\.mm?$/i,
,
false,
,
/\.objc(?:pp)?$/i,
/^Objective-C$|^(?:Obj-?C|ObjectiveC)(?:\+\+)?$/i,
],
["objc-icon", ["dark-red", "dark-red"], /\.pch$/i],
["objc-icon", ["dark-green", "dark-green"], /\.x$/i],
[
"objj-icon",
["dark-orange", "dark-orange"],
/\.j$/i,
,
false,
,
/\.objj$/i,
/^Objective-J$|^(?:Obj-?J|ObjectiveJ)$/i,
],
["objj-icon", ["dark-red", "dark-red"], /\.sj$/i],
[
"ocaml-icon",
["medium-orange", "medium-orange"],
/\.ml$/i,
,
false,
/ocaml(?:run|script)?/,
/\.ocaml$/i,
/^OCaml$/i,
],
["ocaml-icon", ["dark-orange", "dark-orange"], /\.mli$/i],
["ocaml-icon", ["medium-red", "medium-red"], /\.eliom$/i],
["ocaml-icon", ["dark-red", "dark-red"], /\.eliomi$/i],
["ocaml-icon", ["medium-green", "medium-green"], /\.ml4$/i],
[
"ocaml-icon",
["dark-green", "dark-green"],
/\.mll$/i,
,
false,
/^ocamllex$/,
/\.ocamllex$/i,
/^OCaml$|^[0o]camllex$/i,
],
[
"ocaml-icon",
["dark-yellow", "dark-yellow"],
/\.mly$/i,
,
false,
/^menhir$/,
/\.menhir$/i,
/^OCaml$|^menhir$/i,
],
[
"ooc-icon",
["medium-green", "medium-green"],
/\.ooc$/i,
,
false,
,
/\.ooc$/i,
/^OOC$/i,
],
[
"opa-icon",
["medium-blue", "medium-blue"],
/\.opa$/i,
,
false,
,
/\.opa$/i,
/^Opa$/i,
],
[
"opencl-icon",
["medium-red", "medium-red"],
/\.opencl$/i,
,
false,
,
/\.opencl$/i,
/^OpenCL$/i,
],
[
"progress-icon",
["medium-red", "medium-red"],
/\.p$/i,
,
false,
,
/\.abl$/i,
/^OpenEdge ABL$|^(?:progress|openedge|abl)$/i,
],
["openoffice-icon", ["medium-blue", "medium-blue"], /\.odt$/i],
["openoffice-icon", ["dark-blue", "dark-blue"], /\.ott$/i],
["openoffice-icon", ["dark-purple", "dark-purple"], /\.fodt$/i],
["openoffice-icon", ["medium-green", "medium-green"], /\.ods$/i],
["openoffice-icon", ["dark-green", "dark-green"], /\.ots$/i],
["openoffice-icon", ["dark-cyan", "dark-cyan"], /\.fods$/i],
["openoffice-icon", ["medium-purple", "medium-purple"], /\.odp$/i],
["openoffice-icon", ["dark-pink", "dark-pink"], /\.otp$/i],
["openoffice-icon", ["medium-pink", "medium-pink"], /\.fodp$/i],
["openoffice-icon", ["medium-red", "medium-red"], /\.odg$/i],
["openoffice-icon", ["dark-red", "dark-red"], /\.otg$/i],
["openoffice-icon", ["dark-orange", "dark-orange"], /\.fodg$/i],
["openoffice-icon", ["medium-maroon", "medium-maroon"], /\.odf$/i],
["openoffice-icon", ["light-pink", "light-pink"], /\.odb$/i],
[
"scad-icon",
["medium-orange", "medium-orange"],
/\.scad$/i,
,
false,
,
/\.scad$/i,
/^OpenSCAD$/i,
],
["scad-icon", ["medium-yellow", "medium-yellow"], /\.jscad$/i],
["org-icon", ["dark-green", "dark-green"], /\.org$/i],
[
"osx-icon",
["medium-red", "medium-red"],
/\.dmg$/i,
,
false,
,
,
,
/^\x78\x01\x73\x0D\x62\x62\x60/,
],
[
"ox-icon",
["medium-cyan", "dark-cyan"],
/\.ox$/i,
,
false,
,
/\.ox$/i,
/^Ox$/i,
],
["ox-icon", ["medium-green", "dark-green"], /\.oxh$/i],
["ox-icon", ["medium-blue", "dark-blue"], /\.oxo$/i],
[
"oxygene-icon",
["medium-cyan", "dark-cyan"],
/\.oxygene$/i,
,
false,
,
/\.oxygene$/i,
/^Oxygene$/i,
],
[
"oz-icon",
["medium-yellow", "medium-yellow"],
/\.oz$/i,
,
false,
,
/\.oz$/i,
/^Oz$/i,
],
["pan-icon", ["medium-red", "medium-red"], /\.pan$/i],
[
"papyrus-icon",
["medium-green", "medium-green"],
/\.psc$/i,
,
false,
,
/(?:^|\.)(?:papyrus\.skyrim|compiled-?papyrus|papyrus-assembly)(?:\.|$)/i,
/^Papyrus$/i,
],
[
"parrot-icon",
["medium-green", "medium-green"],
/\.parrot$/i,
,
false,
/^parrot$/,
],
[
"parrot-icon",
["dark-green", "dark-green"],
/\.pasm$/i,
,
false,
,
/\.parrot\.pasm$/i,
/^Parrot$|^pasm$/i,
],
[
"parrot-icon",
["dark-blue", "dark-blue"],
/\.pir$/i,
,
false,
,
/\.parrot\.pir$/i,
/^Parrot$|^pir$/i,
],
[
"pascal-icon",
["medium-purple", "medium-purple"],
/\.pas(?:cal)?$/i,
,
false,
/pascal|instantfpc/,
/\.pascal$/i,
/^Pascal$/i,
],
["pascal-icon", ["medium-blue", "medium-blue"], /\.dfm$/i],
["pascal-icon", ["dark-blue", "dark-blue"], /\.dpr$/i],
["pascal-icon", ["dark-purple", "dark-purple"], /\.lpr$/i],
["patch-icon", ["medium-green", "medium-green"], /\.patch$/i],
[
"pawn-icon",
["medium-orange", "medium-orange"],
/\.pwn$/i,
,
false,
,
/\.pwn$/i,
/^PAWN$/i,
],
[
"pdf-icon",
["medium-red", "medium-red"],
/\.pdf$/i,
,
false,
,
,
,
/^%PDF/,
],
[
"perl-icon",
["medium-blue", "medium-blue"],
/\.p(?:er)?l$|\.t$/i,
,
false,
/^perl$/,
/\.perl$/i,
/^perl$/i,
],
["perl-icon", ["dark-purple", "dark-purple"], /\.ph$/i],
["perl-icon", ["medium-purple", "medium-purple"], /\.plx$/i],
["perl-icon", ["dark-blue", "dark-blue"], /\.pm$/i],
["perl-icon", ["medium-red", "medium-red"], /\.(?:psgi|xs)$/i],
[
"perl6-icon",
["medium-purple", "medium-purple"],
/\.pl6$/i,
,
false,
/^perl6$/,
/(?:^|\.)perl6(?:fe)?(?=\.|$)/,
/^(?:pl6|Perl\s*6)$/i,
],
["perl6-icon", ["light-blue", "light-blue"], /\.[tp]6$|\.6pl$/i],
["perl6-icon", ["dark-pink", "dark-pink"], /\.(?:pm6|p6m)$/i],
["perl6-icon", ["dark-cyan", "dark-cyan"], /\.6pm$/i],
["perl6-icon", ["dark-purple", "dark-purple"], /\.nqp$/i],
["perl6-icon", ["medium-blue", "medium-blue"], /\.p6l$/i],
["perl6-icon", ["dark-green", "dark-green"], /\.pod6$/i],
["perl6-icon", ["medium-green", "medium-green"], /^Rexfile$/],
[
"phalcon-icon",
["medium-cyan", "medium-cyan"],
/\.volt$/i,
,
false,
,
/\.volt$/i,
/^Phalcon$/i,
],
[
"php-icon",
["dark-blue", "dark-blue"],
/\.php(?:[st\d]|_cs)?$/i,
,
false,
/^php$/,
/\.php$/i,
/^PHP$/i,
/^<\?php/,
],
["php-icon", ["dark-green", "dark-green"], /^Phakefile/],
["pickle-icon", ["dark-cyan", "dark-cyan"], /\.pkl$/i],
[
"pike-icon",
["dark-cyan", "dark-cyan"],
/\.pike$/i,
,
false,
/^pike$/,
],
["pike-icon", ["medium-blue", "medium-blue"], /\.pmod$/i],
[
"sql-icon",
["medium-red", "medium-red"],
/\.(?:pls|pck|pks|plb|plsql|pkb)$/i,
,
false,
,
/\.plsql(?:\.oracle)?(?:\.|$)/i,
/^PLSQL$/i,
],
["pod-icon", ["dark-blue", "dark-blue"], /\.pod$/i],
[
"pogo-icon",
["medium-orange", "dark-orange"],
/\.pogo$/i,
,
false,
,
/\.pogoscript$/i,
/^PogoScript$/i,
],
[
"pony-icon",
["light-maroon", "light-maroon"],
/\.pony$/i,
,
false,
,
/\.pony$/i,
/^Pony$/i,
],
[
"postcss-icon",
["dark-red", "dark-red"],
/\.p(?:ost)?css$/i,
,
false,
/^postcss$/,
/\.postcss$/i,
/^p[0o]stcss$/i,
],
[
"postcss-icon",
["dark-pink", "dark-pink"],
/\.sss$/i,
,
false,
/^sugarss$/,
/\.sugarss$/i,
/^PostCSS$|^sugarss$/i,
],
["postcss-icon", ["medium-orange", "dark-orange"], /\.postcssrc$/i],
[
"postscript-icon",
["medium-red", "medium-red"],
/\.ps$/i,
,
false,
,
/\.postscript$/i,
/^PostScript$|^p[0o]stscr$/i,
/^%!PS/,
],
["postscript-icon", ["medium-orange", "medium-orange"], /\.eps$/i],
["postscript-icon", ["dark-blue", "dark-blue"], /\.pfa$/i],
["postscript-icon", ["medium-green", "medium-green"], /\.afm$/i],
["povray-icon", ["dark-blue", "dark-blue"], /\.pov$/i],
["powerbuilder-icon", ["medium-blue", "medium-blue"], /\.pbl$|\.sra$/i],
["powerbuilder-icon", ["dark-blue", "dark-blue"], /\.pbt$/i],
["powerbuilder-icon", ["medium-red", "medium-red"], /\.srw$/i],
["powerbuilder-icon", ["medium-orange", "medium-orange"], /\.sru$/i],
["powerbuilder-icon", ["medium-maroon", "medium-maroon"], /\.srp$/i],
["powerbuilder-icon", ["medium-purple", "medium-purple"], /\.srj$/i],
[
"powershell-icon",
["medium-blue", "medium-blue"],
/\.ps1$/i,
,
false,
,
/\.powershell$/i,
/^PowerShell$|^p[0o]sh$/i,
],
["powershell-icon", ["dark-blue", "dark-blue"], /\.psd1$/i],
["powershell-icon", ["medium-purple", "medium-purple"], /\.psm1$/i],
["powershell-icon", ["dark-purple", "dark-purple"], /\.ps1xml$/i],
["print-icon", ["dark-cyan", "dark-cyan"], /\.ppd$/i],
[
"processing-icon",
["dark-blue", "dark-blue"],
/\.pde$/i,
,
false,
,
/\.processing$/i,
/^Processing$/i,
],
[
"prolog-icon",
["medium-blue", "medium-blue"],
/\.pro$/i,
,
false,
/^swipl$/,
/\.prolog$/i,
/^Prolog$/i,
],
["prolog-icon", ["medium-cyan", "medium-cyan"], /\.prolog$/i],
[
"prolog-icon",
["medium-purple", "medium-purple"],
/\.yap$/i,
,
false,
/^yap$/,
],
[
"propeller-icon",
["medium-orange", "medium-orange"],
/\.spin$/i,
,
false,
,
/\.spin$/i,
/^Propeller Spin$/i,
],
[
"pug-icon",
["medium-red", "medium-red"],
/\.pug$/i,
,
false,
,
/\.pug$/i,
/^Pug$/i,
],
[
"puppet-icon",
["medium-purple", "medium-purple"],
/\.pp$/i,
,
false,
/^puppet$/,
/\.puppet$/i,
/^puppet$/i,
],
["puppet-icon", ["dark-blue", "dark-blue"], /Modulefile$/i],
[
"purebasic-icon",
["medium-red", "medium-red"],
/\.pb$/i,
,
false,
/^purebasic$/,
/\.purebasic$/i,
/^purebasic$/i,
],
["purebasic-icon", ["dark-orange", "dark-orange"], /\.pbi$/i],
[
"purescript-icon",
["dark-purple", "dark-purple"],
/\.purs$/i,
,
false,
,
/\.purescript$/i,
/^PureScript$/i,
],
[
"python-icon",
["dark-blue", "dark-blue"],
/\.py$|\.bzl$|\.py3$|\.?(?:pypirc|pythonrc|python-venv)$/i,
,
false,
/python[\d.]*/,
/\.python$/i,
/^Python$|^rusth[0o]n$/i,
],
["python-icon", ["medium-blue", "medium-blue"], /\.ipy$/i],
[
"python-icon",
["dark-green", "dark-green"],
/\.isolate$|\.gypi$|\.pyt$/i,
],
[
"python-icon",
["medium-orange", "medium-orange"],
/\.pep$|\.pyde$/i,
,
false,
/^pep8$/,
/\.pep8$/i,
/^Python$|^pep8$/i,
],
["python-icon", ["medium-green", "medium-green"], /\.gyp$/i],
["python-icon", ["dark-purple", "dark-purple"], /\.pyp$/i],
["python-icon", ["medium-maroon", "medium-maroon"], /\.pyw$/i],
["python-icon", ["dark-pink", "dark-pink"], /\.tac$/i],
["python-icon", ["dark-red", "dark-red"], /\.wsgi$/i],
["python-icon", ["medium-yellow", "dark-yellow"], /\.xpy$/i],
[
"python-icon",
["medium-pink", "medium-pink"],
/\.rpy$/i,
,
false,
,
/\.renpy$/i,
/^Python$|^Ren'?Py$/i,
],
[
"python-icon",
["dark-green", "dark-green"],
/^(?:BUCK|BUILD|SConstruct|SConscript)$/,
],
[
"python-icon",
["medium-green", "medium-green"],
/^(?:Snakefile|WATCHLISTS)$/,
],
["python-icon", ["dark-maroon", "dark-maroon"], /^wscript$/],
[
"r-icon",
["medium-blue", "medium-blue"],
/\.(?:r|Rprofile|rsx|rd)$/i,
,
false,
/^Rscript$/,
/\.r$/i,
/^R$|^(?:Rscript|splus|Rlang)$/i,
],
[
"racket-icon",
["medium-red", "medium-red"],
/\.rkt$/i,
,
false,
/^racket$/,
/\.racket$/i,
/^racket$/i,
],
["racket-icon", ["medium-blue", "medium-blue"], /\.rktd$/i],
["racket-icon", ["light-red", "light-red"], /\.rktl$/i],
[
"racket-icon",
["dark-blue", "dark-blue"],
/\.scrbl$/i,
,
false,
/^scribble$/,
/\.scribble$/i,
/^Racket$|^scribble$/i,
],
[
"raml-icon",
["medium-cyan", "medium-cyan"],
/\.raml$/i,
,
false,
,
/\.raml$/i,
/^RAML$/i,
],
[
"rascal-icon",
["medium-yellow", "medium-yellow"],
/\.rsc$/i,
,
false,
,
/\.rascal$/i,
/^Rascal$/i,
],
[
"rdoc-icon",
["medium-red", "medium-red"],
/\.rdoc$/i,
,
false,
,
/\.rdoc$/i,
/^RDoc$/i,
],
["xojo-icon", ["medium-green", "medium-green"], /\.rbbas$/i],
["xojo-icon", ["dark-green", "dark-green"], /\.rbfrm$/i],
["xojo-icon", ["dark-cyan", "dark-cyan"], /\.rbmnu$/i],
["xojo-icon", ["medium-cyan", "medium-cyan"], /\.rbres$/i],
["xojo-icon", ["medium-blue", "medium-blue"], /\.rbtbar$/i],
["xojo-icon", ["dark-blue", "dark-blue"], /\.rbuistate$/i],
[
"reason-icon",
["medium-red", "medium-red"],
/\.re$/i,
,
false,
/^reason$/,
/\.reason$/i,
/^reas[0o]n$/i,
],
["reason-icon", ["medium-orange", "medium-orange"], /\.rei$/i],
[
"rebol-icon",
["dark-green", "dark-green"],
/\.reb(?:ol)?$/i,
,
false,
/^rebol$/,
/\.rebol$/i,
/^reb[0o]l$/i,
],
["rebol-icon", ["dark-red", "dark-red"], /\.r2$/i],
["rebol-icon", ["dark-blue", "dark-blue"], /\.r3$/i],
[
"red-icon",
["medium-red", "medium-red"],
/\.red$/i,
,
false,
,
/\.red$/i,
/^Red$|^red\/?system$/i,
],
["red-icon", ["light-red", "light-red"], /\.reds$/i],
["red-hat-icon", ["medium-red", "medium-red"], /\.rpm$/i],
["red-hat-icon", ["dark-red", "dark-red"], /\.spec$/i],
[
"regex-icon",
["medium-green", "medium-green"],
/\.regexp?$/i,
,
false,
,
/(?:\.|^)regexp?(?:\.|$)/i,
/^RegExp$/i,
],
["android-icon", ["dark-maroon", "dark-maroon"], /\.rsh$/i],
[
"rst-icon",
["dark-blue", "dark-blue"],
/\.re?st(?:\.txt)?$/i,
,
false,
,
/\.restructuredtext$/i,
/^reStructuredText$|^re?st$/i,
],
[
"rexx-icon",
["medium-red", "medium-red"],
/\.rexx?$/i,
,
false,
/rexx|regina/i,
/\.rexx$/i,
/^REXX$/i,
],
["rexx-icon", ["medium-blue", "medium-blue"], /\.pprx$/i],
[
"riot-icon",
["medium-red", "medium-red"],
/\.tag$/i,
,
false,
,
/\.riot$/i,
/^RiotJS$/i,
],
["robot-icon", ["medium-purple", "medium-purple"], /\.robot$/i],
["clojure-icon", ["medium-red", "medium-red"], /\.rg$/i],
["rss-icon", ["medium-orange", "medium-orange"], /\.rss$/i],
[
"ruby-icon",
["medium-red", "medium-red"],
/\.(?:rb|ru|ruby|erb|gemspec|god|mspec|pluginspec|podspec|rabl|rake|opal)$|^\.?(?:irbrc|gemrc|pryrc|rspec|ruby-(?:gemset|version))$/i,
,
false,
/(?:mac|j)?ruby|rake|rbx/,
/\.ruby$/i,
/^Ruby$|^(?:rbx?|rake|jruby|macruby)$/i,
],
[
"ruby-icon",
["medium-red", "medium-red"],
/^(?:Appraisals|(?:Rake|Gem|[bB]uild|Berks|Cap|Danger|Deliver|Fast|Guard|Jar|Maven|Pod|Puppet|Snap)file(?:\.lock)?)$|^rails$/,
],
[
"ruby-icon",
["dark-red", "dark-red"],
/\.(?:jbuilder|rbuild|rb[wx]|builder)$/i,
],
["ruby-icon", ["dark-yellow", "dark-yellow"], /\.watchr$/i],
[
"rust-icon",
["medium-maroon", "medium-maroon"],
/\.rs$/i,
,
false,
/^rust$/,
/\.rust$/i,
/^rust$/i,
],
["rust-icon", ["light-maroon", "light-maroon"], /\.rlib$/i],
[
"sage-icon",
["medium-blue", "medium-blue"],
/\.sage$/i,
,
false,
/^sage$/,
/\.sage$/i,
/^sage$/i,
],
["sage-icon", ["dark-blue", "dark-blue"], /\.sagews$/i],
[
"saltstack-icon",
["medium-blue", "dark-blue"],
/\.sls$/i,
,
false,
,
/\.salt$/i,
/^SaltStack$|^Salt(?:State)?$/i,
],
[
"sas-icon",
["medium-blue", "medium-blue"],
/\.sas$/i,
,
false,
,
/\.sas$/i,
/^SAS$/i,
],
[
"sass-icon",
["light-pink", "light-pink"],
/\.scss$/i,
,
false,
/^scss$/,
/\.scss$/i,
/^Sass$|^scss$/i,
],
[
"sass-icon",
["dark-pink", "dark-pink"],
/\.sass$/i,
,
false,
/^sass$/,
/\.sass$/i,
/^sass$/i,
],
["sbt-icon", ["dark-purple", "dark-purple"], /\.sbt$/i],
[
"scala-icon",
["medium-red", "medium-red"],
/\.(?:sc|scala)$/i,
,
false,
/^scala$/,
/\.scala$/i,
/^Scala$/i,
],
[
"scheme-icon",
["medium-red", "medium-red"],
/\.scm$/i,
,
false,
/guile|bigloo|chicken/,
/\.scheme$/i,
/^Scheme$/i,
],
["scheme-icon", ["medium-blue", "medium-blue"], /\.sld$/i],
["scheme-icon", ["medium-purple", "medium-purple"], /\.sps$/i],
[
"scilab-icon",
["dark-purple", "dark-purple"],
/\.sci$/i,
,
false,
/^scilab$/,
/\.scilab$/i,
/^scilab$/i,
],
["scilab-icon", ["dark-blue", "dark-blue"], /\.sce$/i],
["scilab-icon", ["dark-cyan", "dark-cyan"], /\.tst$/i],
["secret-icon", [null, null], /\.secret$/i],
[
"self-icon",
["dark-blue", "dark-blue"],
/\.self$/i,
,
false,
,
/\.self$/i,
/^Self$/i,
],
[
"graph-icon",
["light-red", "light-red"],
/\.csv$/i,
,
false,
,
/(?:^|\.)csv(?:\.semicolon)?(?:\.|$)/i,
],
["graph-icon", ["light-green", "light-green"], /\.(?:tab|tsv)$/i],
["graph-icon", ["medium-green", "medium-green"], /\.dif$/i],
["graph-icon", ["medium-cyan", "medium-cyan"], /\.slk$/i],
["sf-icon", ["light-orange", "light-orange"], /\.sfproj$/i],
[
"terminal-icon",
["medium-purple", "medium-purple"],
/\.(?:sh|rc|bats|bash|tool|install|command)$/i,
,
false,
/bash|sh|zsh|rc/,
/\.shell$/i,
/^(?:sh|shell|Shell-?Script|Bash)$/i,
],
[
"terminal-icon",
["dark-purple", "dark-purple"],
/^(?:\.?bash(?:rc|[-_]?(?:profile|login|logout|history|prompt))|_osc|config|install-sh|PKGBUILD)$/i,
],
["terminal-icon", ["dark-yellow", "dark-yellow"], /\.ksh$/i],
[
"terminal-icon",
["medium-yellow", "dark-yellow"],
/\.sh-session$/i,
,
false,
,
/\.shell-session$/i,
/^(?:Bash|Shell|Sh)[-\s]*(?:Session|Console)$/i,
],
[
"terminal-icon",
["medium-blue", "medium-blue"],
/\.zsh(?:-theme|_history)?$|^\.?(?:antigen|zpreztorc|zlogin|zlogout|zprofile|zshenv|zshrc)$|\.tmux$/i,
],
[
"terminal-icon",
["medium-green", "medium-green"],
/\.fish$|^\.fishrc$|\.tcsh$/i,
,
false,
/^fish$/,
/\.fish$/i,
/^fish$/i,
],
["terminal-icon", ["medium-red", "medium-red"], /\.inputrc$/i],
[
"terminal-icon",
["medium-red", "medium-red"],
/^(?:configure|config\.(?:guess|rpath|status|sub)|depcomp|libtool|compile)$/,
],
[
"terminal-icon",
["dark-purple", "dark-purple"],
/^\/(?:private\/)?etc\/(?:[^\/]+\/)*(?:profile$|nanorc$|rc\.|csh\.)/i,
,
true,
],
["terminal-icon", ["medium-yellow", "medium-yellow"], /\.csh$/i],
["shen-icon", ["dark-cyan", "dark-cyan"], /\.shen$/i],
["shopify-icon", ["medium-green", "medium-green"], /\.liquid$/i],
["sigils-icon", ["dark-red", "dark-red"], /\.sigils$/i],
[
"silverstripe-icon",
["medium-blue", "medium-blue"],
/\.ss$/i,
,
false,
,
/(?:^|\.)ss(?:template)?(?:\.|$)/i,
/^SilverStripe$/i,
],
["sketch-icon", ["medium-orange", "medium-orange"], /\.sketch$/i],
[
"slash-icon",
["dark-blue", "dark-blue"],
/\.sl$/i,
,
false,
,
/\.slash$/i,
/^Slash$/i,
],
[
"android-icon",
["medium-green", "medium-green"],
/\.smali$/i,
,
false,
,
/\.smali$/i,
/^Smali$/i,
],
[
"smarty-icon",
["medium-yellow", "dark-yellow"],
/\.tpl$/i,
,
false,
,
/\.smarty$/i,
/^Smarty$/i,
],
["snyk-icon", ["dark-purple", "dark-purple"], /\.snyk$/i],
[
"clojure-icon",
["medium-yellow", "dark-yellow"],
/\.(?:sma|sp)$/i,
,
false,
,
/\.sp$/i,
/^SourcePawn$|^s[0o]urcem[0o]d$/i,
],
[
"sparql-icon",
["medium-blue", "medium-blue"],
/\.sparql$/i,
,
false,
,
/\.rq$/i,
/^SPARQL$/i,
],
["sparql-icon", ["dark-blue", "dark-blue"], /\.rq$/i],
[
"sqf-icon",
["dark-maroon", "dark-maroon"],
/\.sqf$/i,
,
false,
/^sqf$/,
/\.sqf$/i,
/^sqf$/i,
],
["sqf-icon", ["dark-red", "dark-red"], /\.hqf$/i],
[
"sql-icon",
["medium-orange", "medium-orange"],
/\.(?:my)?sql$/i,
,
false,
/^sql$/,
/\.sql$/i,
/^sql$/i,
],
["sql-icon", ["medium-blue", "medium-blue"], /\.ddl$/i],
["sql-icon", ["medium-green", "medium-green"], /\.udf$/i],
["sql-icon", ["dark-cyan", "dark-cyan"], /\.viw$/i],
["sql-icon", ["dark-blue", "dark-blue"], /\.prc$/i],
["sql-icon", ["medium-purple", "medium-purple"], /\.db2$/i],
["sqlite-icon", ["medium-blue", "medium-blue"], /\.sqlite$/i],
["sqlite-icon", ["dark-blue", "dark-blue"], /\.sqlite3$/i],
["sqlite-icon", ["medium-purple", "medium-purple"], /\.db$/i],
["sqlite-icon", ["dark-purple", "dark-purple"], /\.db3$/i],
[
"squirrel-icon",
["medium-maroon", "medium-maroon"],
/\.nut$/i,
,
false,
,
/\.nut$/i,
/^Squirrel$/i,
],
["key-icon", ["medium-yellow", "medium-yellow"], /\.pub$/i],
["key-icon", ["medium-orange", "medium-orange"], /\.pem$/i],
["key-icon", ["medium-blue", "medium-blue"], /\.key$|\.crt$/i],
["key-icon", ["medium-purple", "medium-purple"], /\.der$/i],
["key-icon", ["medium-red", "medium-red"], /^id_rsa/],
[
"key-icon",
["medium-green", "medium-green"],
/\.glyphs\d*License$|^git-credential-osxkeychain$/i,
],
["key-icon", ["dark-green", "dark-green"], /^(?:master\.)?passwd$/i],
[
"stan-icon",
["medium-red", "medium-red"],
/\.stan$/i,
,
false,
,
/\.stan$/i,
/^Stan$/i,
],
[
"stata-icon",
["medium-blue", "medium-blue"],
/\.do$/i,
,
false,
/^stata$/,
/\.stata$/i,
/^stata$/i,
],
["stata-icon", ["dark-blue", "dark-blue"], /\.ado$/i],
["stata-icon", ["light-blue", "light-blue"], /\.doh$/i],
["stata-icon", ["medium-cyan", "medium-cyan"], /\.ihlp$/i],
[
"stata-icon",
["dark-cyan", "dark-cyan"],
/\.mata$/i,
,
false,
/^mata$/,
/\.mata$/i,
/^Stata$|^mata$/i,
],
["stata-icon", ["light-cyan", "light-cyan"], /\.matah$/i],
["stata-icon", ["medium-purple", "medium-purple"], /\.sthlp$/i],
["storyist-icon", ["medium-blue", "medium-blue"], /\.story$/i],
[
"strings-icon",
["medium-red", "medium-red"],
/\.strings$/i,
,
false,
,
/\.strings$/i,
/^Strings$/i,
],
[
"stylus-icon",
["medium-green", "medium-green"],
/\.styl$/i,
,
false,
,
/\.stylus$/i,
/^Stylus$/i,
],
[
"sublime-icon",
["medium-orange", "medium-orange"],
/\.(?:stTheme|sublime[-_](?:build|commands|completions|keymap|macro|menu|mousemap|project|settings|theme|workspace|metrics|session|snippet))$/i,
],
["sublime-icon", ["dark-orange", "dark-orange"], /\.sublime-syntax$/i],
[
"scd-icon",
["medium-red", "medium-red"],
/\.scd$/i,
,
false,
/sclang|scsynth/,
/\.supercollider$/i,
/^SuperCollider$/i,
],
[
"svg-icon",
["dark-yellow", "dark-yellow"],
/\.svg$/i,
,
false,
,
/\.svg$/i,
/^SVG$/i,
],
[
"swift-icon",
["medium-green", "medium-green"],
/\.swift$/i,
,
false,
,
/\.swift$/i,
/^Swift$/i,
],
["sysverilog-icon", ["medium-blue", "dark-blue"], /\.sv$/i],
["sysverilog-icon", ["medium-green", "dark-green"], /\.svh$/i],
["sysverilog-icon", ["medium-cyan", "dark-cyan"], /\.vh$/i],
["tag-icon", ["medium-blue", "medium-blue"], /\.?c?tags$/i],
["tag-icon", ["medium-red", "medium-red"], /\.gemtags/i],
[
"tcl-icon",
["dark-orange", "dark-orange"],
/\.tcl$/i,
,
false,
/tclsh|wish/,
/\.tcl$/i,
/^Tcl$/i,
],
["tcl-icon", ["medium-orange", "medium-orange"], /\.adp$/i],
["tcl-icon", ["medium-red", "medium-red"], /\.tm$/i],
[
"coffee-icon",
["medium-orange", "medium-orange"],
/\.tea$/i,
,
false,
,
/\.tea$/i,
/^Tea$/i,
],
["tt-icon", ["medium-blue", "medium-blue"], /\.tt2?$/i],
["tt-icon", ["medium-purple", "medium-purple"], /\.tt3$/i],
["tern-icon", ["medium-blue", "medium-blue"], /\.tern-project$/i],
[
"terraform-icon",
["dark-purple", "dark-purple"],
/\.tf(?:vars)?$/i,
,
false,
,
/\.terra(?:form)?$/i,
/^Terraform$/i,
],
[
"tex-icon",
["medium-blue", "dark-blue"],
/\.tex$|\.ltx$|\.lbx$/i,
,
false,
,
/(?:^|\.)latex(?:\.|$)/i,
/^TeX$|^latex$/i,
],
["tex-icon", ["medium-green", "dark-green"], /\.aux$|\.ins$/i],
[
"tex-icon",
["medium-red", "dark-red"],
/\.sty$|\.texi$/i,
,
false,
,
/(?:^|\.)tex(?:\.|$)/i,
/^TeX$/i,
],
["tex-icon", ["medium-maroon", "dark-maroon"], /\.dtx$/i],
[
"tex-icon",
["medium-orange", "dark-orange"],
/\.cls$|\.mkiv$|\.mkvi$|\.mkii$/i,
],
[
"text-icon",
["medium-blue", "medium-blue"],
/\.te?xt$|\.irclog$|\.uot$/i,
,
false,
,
,
,
/^\xEF\xBB\xBF|^\xFF\xFE/,
],
[
"text-icon",
["medium-maroon", "medium-maroon"],
/\.log$|^Terminal[-_\s]Saved[-_\s]Output$|\.brf$/i,
],
[
"text-icon",
["dark-red", "dark-red"],
/\.git[\/\\]description$/,
,
true,
],
[
"text-icon",
["medium-red", "medium-red"],
/\.err$|\.no$|^(?:bug-report|fdl|for-release|tests)$/i,
],
["text-icon", ["dark-red", "dark-red"], /\.rtf$|\.uof$/i],
["text-icon", ["dark-blue", "dark-blue"], /\.i?nfo$/i],
["text-icon", ["dark-purple", "dark-purple"], /\.abt$|\.sub$/i],
["text-icon", ["dark-orange", "dark-orange"], /\.ans$/i],
["text-icon", ["medium-yellow", "medium-yellow"], /\.etx$/i],
["text-icon", ["medium-orange", "medium-orange"], /\.msg$/i],
["text-icon", ["medium-purple", "medium-purple"], /\.srt$|\.uop$/i],
["text-icon", ["medium-cyan", "medium-cyan"], /\.(?:utxt|utf8)$/i],
[
"text-icon",
["medium-green", "medium-green"],
/\.weechatlog$|\.uos$/i,
],
[
"textile-icon",
["medium-orange", "medium-orange"],
/\.textile$/i,
,
false,
,
/\.textile$/i,
/^Textile$/i,
],
["textmate-icon", ["dark-green", "dark-green"], /\.tmcg$/i],
["textmate-icon", ["dark-purple", "dark-purple"], /\.tmLanguage$/i],
["textmate-icon", ["medium-blue", "medium-blue"], /\.tmCommand$/i],
["textmate-icon", ["dark-blue", "dark-blue"], /\.tmPreferences$/i],
["textmate-icon", ["dark-orange", "dark-orange"], /\.tmSnippet$/i],
["textmate-icon", ["medium-pink", "medium-pink"], /\.tmTheme$/i],
["textmate-icon", ["medium-maroon", "medium-maroon"], /\.tmMacro$/i],
[
"textmate-icon",
["medium-orange", "medium-orange"],
/\.yaml-tmlanguage$/i,
],
[
"textmate-icon",
["medium-purple", "medium-purple"],
/\.JSON-tmLanguage$/i,
],
["thor-icon", ["medium-orange", "medium-orange"], /\.thor$/i],
["thor-icon", ["dark-orange", "dark-orange"], /^Thorfile$/i],
[
"tsx-icon",
["light-blue", "light-blue"],
/\.tsx$/i,
,
false,
,
/\.tsx$/i,
/^TSX$/i,
],
[
"turing-icon",
["medium-red", "medium-red"],
/\.tu$/i,
,
false,
,
/\.turing$/i,
/^Turing$/i,
],
[
"twig-icon",
["medium-green", "medium-green"],
/\.twig$/i,
,
false,
,
/\.twig$/i,
/^Twig$/i,
],
[
"txl-icon",
["medium-orange", "medium-orange"],
/\.txl$/i,
,
false,
,
/\.txl$/i,
/^TXL$/i,
],
[
"ts-icon",
["medium-blue", "medium-blue"],
/\.ts$/i,
,
false,
,
/\.ts$/i,
/^(?:ts|Type[-\s]*Script)$/i,
],
[
"unity3d-icon",
["dark-blue", "dark-blue"],
/\.anim$/i,
,
false,
/^shaderlab$/,
/\.shaderlab$/i,
/^Unity3D$|^shaderlab$/i,
],
["unity3d-icon", ["dark-green", "dark-green"], /\.asset$/i],
["unity3d-icon", ["medium-red", "medium-red"], /\.mat$/i],
["unity3d-icon", ["dark-red", "dark-red"], /\.meta$/i],
["unity3d-icon", ["dark-cyan", "dark-cyan"], /\.prefab$/i],
["unity3d-icon", ["medium-blue", "medium-blue"], /\.unity$/i],
["unity3d-icon", ["medium-maroon", "medium-maroon"], /\.unityproj$/i],
["uno-icon", ["dark-blue", "dark-blue"], /\.uno$/i],
[
"unreal-icon",
[null, null],
/\.uc$/i,
,
false,
,
/\.uc$/i,
/^UnrealScript$/i,
],
["link-icon", ["dark-blue", "dark-blue"], /\.url$/i],
[
"urweb-icon",
["medium-maroon", "medium-maroon"],
/\.ur$/i,
,
false,
,
/\.ur$/i,
/^UrWeb$|^Ur(?:\/Web)?$/i,
],
["urweb-icon", ["dark-blue", "dark-blue"], /\.urs$/i],
["vagrant-icon", ["medium-cyan", "medium-cyan"], /^Vagrantfile$/i],
[
"gnome-icon",
["medium-purple", "medium-purple"],
/\.vala$/i,
,
false,
/^vala$/,
/\.vala$/i,
/^vala$/i,
],
["gnome-icon", ["dark-purple", "dark-purple"], /\.vapi$/i],
[
"varnish-icon",
["dark-blue", "dark-blue"],
/\.vcl$/i,
,
false,
,
/(?:^|\.)(?:varnish|vcl)(?:\.|$)/i,
/^VCL$/i,
],
[
"verilog-icon",
["dark-green", "dark-green"],
/\.v$/i,
,
false,
/^verilog$/,
/\.verilog$/i,
/^veril[0o]g$/i,
],
["verilog-icon", ["medium-red", "medium-red"], /\.veo$/i],
[
"vhdl-icon",
["dark-green", "dark-green"],
/\.vhdl$/i,
,
false,
/^vhdl$/,
/\.vhdl$/i,
/^vhdl$/i,
],
["vhdl-icon", ["medium-green", "medium-green"], /\.vhd$/i],
["vhdl-icon", ["dark-blue", "dark-blue"], /\.vhf$/i],
["vhdl-icon", ["medium-blue", "medium-blue"], /\.vhi$/i],
["vhdl-icon", ["dark-purple", "dark-purple"], /\.vho$/i],
["vhdl-icon", ["medium-purple", "medium-purple"], /\.vhs$/i],
["vhdl-icon", ["dark-red", "dark-red"], /\.vht$/i],
["vhdl-icon", ["dark-orange", "dark-orange"], /\.vhw$/i],
[
"video-icon",
["medium-blue", "medium-blue"],
/\.3gpp?$/i,
,
false,
,
,
,
/^.{4}ftyp3g/,
],
[
"video-icon",
["dark-blue", "dark-blue"],
/\.(?:mp4|m4v|h264)$/i,
,
false,
,
,
,
/^.{4}ftyp/,
],
[
"video-icon",
["medium-blue", "medium-blue"],
/\.avi$/i,
,
false,
,
,
,
/^MLVI/,
],
[
"video-icon",
["medium-cyan", "medium-cyan"],
/\.mov$/i,
,
false,
,
,
,
/^.{4}moov/,
],
[
"video-icon",
["medium-purple", "medium-purple"],
/\.mkv$/i,
,
false,
,
,
,
/^\x1AEߣ\x93B\x82\x88matroska/,
],
[
"video-icon",
["medium-red", "medium-red"],
/\.flv$/i,
,
false,
,
,
,
/^FLV\x01/,
],
[
"video-icon",
["dark-blue", "dark-blue"],
/\.webm$/i,
,
false,
,
,
,
/^\x1A\x45\xDF\xA3/,
],
[
"video-icon",
["medium-red", "medium-red"],
/\.mpe?g$/i,
,
false,
,
,
,
/^\0{2}\x01[\xB3\xBA]/,
],
[
"video-icon",
["dark-purple", "dark-purple"],
/\.(?:asf|wmv)$/i,
,
false,
,
,
,
/^0&²u\x8EfÏ\x11¦Ù\0ª\0bÎl/,
],
[
"video-icon",
["medium-orange", "medium-orange"],
/\.(?:ogm|og[gv])$/i,
,
false,
,
,
,
/^OggS/,
],
[
"vim-icon",
["medium-green", "medium-green"],
/\.(?:vim|n?vimrc)$/i,
,
false,
/Vim?/i,
/\.viml$/i,
/^(?:VimL?|NVim|Vim\s*Script)$/i,
],
["vim-icon", ["dark-green", "dark-green"], /^[gn_]?vim(?:rc|info)$/i],
[
"vs-icon",
["medium-blue", "medium-blue"],
/\.(?:vba?|fr[mx]|bas)$/i,
,
false,
,
/\.vbnet$/i,
/^Visual Studio$|^vb\.?net$/i,
],
["vs-icon", ["medium-red", "medium-red"], /\.vbhtml$/i],
["vs-icon", ["medium-green", "medium-green"], /\.vbs$/i],
["vs-icon", ["dark-blue", "dark-blue"], /\.csproj$/i],
["vs-icon", ["dark-red", "dark-red"], /\.vbproj$/i],
["vs-icon", ["dark-purple", "dark-purple"], /\.vcx?proj$/i],
["vs-icon", ["dark-green", "dark-green"], /\.vssettings$/i],
["vs-icon", ["medium-maroon", "medium-maroon"], /\.builds$/i],
["vs-icon", ["medium-orange", "medium-orange"], /\.sln$/i],
[
"vue-icon",
["light-green", "light-green"],
/\.vue$/i,
,
false,
,
/\.vue$/i,
/^Vue$/i,
],
["owl-icon", ["dark-blue", "dark-blue"], /\.owl$/i],
[
"windows-icon",
["medium-purple", "medium-purple"],
/\.bat$|\.cmd$/i,
,
false,
,
/(?:^|\.)(?:bat|dosbatch)(?:\.|$)/i,
/^(?:bat|(?:DOS|Win)?Batch)$/i,
],
["windows-icon", [null, null], /\.(?:exe|com|msi)$/i],
["windows-icon", ["medium-blue", "medium-blue"], /\.reg$/i],
[
"x10-icon",
["light-maroon", "light-maroon"],
/\.x10$/i,
,
false,
,
/\.x10$/i,
/^X10$|^xten$/i,
],
[
"x11-icon",
["medium-orange", "medium-orange"],
/\.X(?:authority|clients|initrc|profile|resources|session-errors|screensaver)$/i,
],
["xmos-icon", ["medium-orange", "medium-orange"], /\.xc$/i],
[
"appstore-icon",
["medium-blue", "medium-blue"],
/\.(?:pbxproj|pbxuser|mode\dv\3|xcplugindata|xcrequiredplugins)$/i,
],
["xojo-icon", ["medium-green", "medium-green"], /\.xojo_code$/i],
["xojo-icon", ["medium-blue", "medium-blue"], /\.xojo_menu$/i],
["xojo-icon", ["medium-red", "medium-red"], /\.xojo_report$/i],
["xojo-icon", ["dark-green", "dark-green"], /\.xojo_script$/i],
["xojo-icon", ["dark-purple", "dark-purple"], /\.xojo_toolbar$/i],
["xojo-icon", ["dark-cyan", "dark-cyan"], /\.xojo_window$/i],
["xpages-icon", ["medium-blue", "medium-blue"], /\.xsp-config$/i],
["xpages-icon", ["dark-blue", "dark-blue"], /\.xsp\.metadata$/i],
["xmos-icon", ["dark-blue", "dark-blue"], /\.xpl$/i],
["xmos-icon", ["medium-purple", "medium-purple"], /\.xproc$/i],
[
"sql-icon",
["dark-red", "dark-red"],
/\.(?:xquery|xq|xql|xqm|xqy)$/i,
,
false,
,
/\.xq$/i,
/^XQuery$/i,
],
[
"xtend-icon",
["dark-purple", "dark-purple"],
/\.xtend$/i,
,
false,
,
/\.xtend$/i,
/^Xtend$/i,
],
[
"yang-icon",
["medium-yellow", "medium-yellow"],
/\.yang$/i,
,
false,
,
/\.yang$/i,
/^YANG$/i,
],
["zbrush-icon", ["dark-purple", "dark-purple"], /\.zpr$/i],
["zephir-icon", ["medium-pink", "medium-pink"], /\.zep$/i],
[
"zimpl-icon",
["medium-orange", "medium-orange"],
/\.(?:zimpl|zmpl|zpl)$/i,
],
["apple-icon", ["medium-blue", "medium-blue"], /^com\.apple\./, 0.5],
["apache-icon", ["medium-red", "medium-red"], /^httpd\.conf/i, 0],
["checklist-icon", ["medium-yellow", "medium-yellow"], /TODO/, 0],
["config-icon", [null, null], /config|settings|option|pref/i, 0],
[
"doge-icon",
["medium-yellow", "medium-yellow"],
/\.djs$/i,
0,
false,
,
/\.dogescript$/i,
/^Dogescript$/i,
],
["gear-icon", [null, null], /^\./, 0],
[
"book-icon",
["medium-blue", "medium-blue"],
/\b(?:changelog|copying(?:v?\d)?|install|read[-_]?me)\b|^licen[sc]es?[-._]/i,
0,
],
[
"book-icon",
["dark-blue", "dark-blue"],
/^news(?:[-_.]?[-\d]+)?$/i,
0,
],
[
"v8-icon",
["medium-blue", "medium-blue"],
/^(?:[dv]8|v8[-_.][^.]*|mksnapshot|mkpeephole)$/i,
0,
],
],
[
[
69,
147,
152,
154,
169,
192,
195,
196,
197,
198,
204,
217,
239,
244,
249,
251,
253,
258,
287,
292,
293,
303,
304,
309,
331,
333,
336,
343,
347,
353,
362,
380,
395,
398,
416,
420,
421,
422,
424,
431,
434,
448,
451,
465,
467,
468,
471,
480,
481,
482,
485,
486,
487,
525,
526,
529,
534,
555,
565,
570,
571,
572,
578,
580,
584,
586,
590,
601,
602,
626,
629,
658,
669,
670,
681,
688,
694,
696,
709,
714,
715,
745,
748,
755,
760,
769,
772,
778,
779,
798,
800,
803,
805,
808,
811,
822,
823,
826,
836,
838,
848,
854,
858,
860,
864,
865,
867,
868,
871,
881,
886,
903,
905,
924,
928,
936,
944,
987,
1000,
1003,
1005,
1023,
],
[
42,
57,
69,
105,
120,
121,
124,
126,
129,
143,
145,
147,
149,
151,
152,
154,
156,
157,
158,
166,
167,
169,
174,
192,
194,
195,
196,
197,
198,
204,
206,
210,
211,
213,
215,
216,
217,
223,
224,
225,
229,
230,
234,
236,
237,
238,
239,
242,
243,
244,
249,
251,
253,
255,
256,
258,
275,
285,
286,
287,
288,
290,
291,
292,
293,
294,
295,
297,
300,
301,
303,
304,
309,
312,
314,
326,
330,
336,
341,
342,
343,
346,
347,
350,
351,
352,
353,
359,
362,
365,
380,
381,
382,
383,
386,
390,
392,
394,
395,
398,
400,
416,
422,
439,
440,
442,
448,
451,
452,
453,
454,
458,
461,
463,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
479,
482,
485,
486,
487,
488,
489,
490,
522,
524,
525,
527,
529,
530,
533,
534,
543,
546,
547,
548,
549,
553,
555,
558,
560,
561,
565,
570,
571,
575,
578,
580,
582,
584,
586,
590,
600,
601,
602,
603,
604,
605,
612,
618,
626,
629,
657,
658,
664,
665,
668,
669,
675,
678,
679,
680,
681,
685,
687,
688,
689,
690,
691,
694,
696,
704,
707,
709,
714,
715,
716,
717,
718,
719,
734,
738,
741,
742,
744,
746,
747,
748,
753,
755,
760,
768,
769,
774,
776,
777,
778,
779,
781,
792,
797,
798,
801,
802,
803,
805,
807,
808,
811,
818,
822,
823,
826,
827,
828,
829,
836,
838,
841,
845,
847,
848,
850,
854,
858,
860,
862,
863,
864,
865,
867,
868,
871,
875,
881,
884,
886,
894,
896,
897,
898,
900,
901,
903,
905,
915,
923,
924,
928,
932,
933,
936,
937,
938,
944,
947,
951,
952,
954,
970,
982,
983,
984,
985,
986,
987,
995,
997,
1000,
1002,
1003,
1005,
1023,
1025,
1034,
1036,
1039,
1053,
1054,
1055,
1063,
],
[41, 150, 282, 283, 284, 321, 889, 959],
[
42,
57,
69,
105,
120,
121,
124,
126,
129,
143,
145,
147,
149,
151,
152,
154,
156,
157,
158,
166,
167,
169,
174,
192,
194,
195,
196,
197,
198,
204,
206,
210,
211,
213,
215,
216,
217,
223,
224,
225,
229,
230,
234,
236,
237,
238,
239,
242,
243,
244,
249,
251,
253,
255,
256,
258,
275,
276,
285,
286,
287,
288,
290,
291,
292,
293,
294,
295,
297,
300,
301,
303,
304,
309,
311,
312,
314,
319,
326,
330,
336,
341,
342,
343,
346,
347,
350,
351,
352,
353,
359,
362,
365,
380,
381,
382,
383,
386,
390,
392,
394,
395,
398,
400,
412,
416,
418,
420,
421,
422,
424,
431,
432,
434,
439,
440,
442,
448,
451,
452,
453,
454,
458,
461,
463,
465,
466,
467,
468,
469,
470,
471,
472,
473,
474,
475,
479,
480,
481,
482,
483,
485,
486,
487,
488,
489,
490,
522,
524,
525,
527,
529,
530,
533,
534,
543,
546,
547,
548,
549,
553,
555,
558,
560,
561,
565,
570,
571,
575,
578,
580,
582,
584,
586,
590,
600,
601,
602,
603,
604,
605,
612,
618,
626,
629,
657,
658,
660,
661,
664,
665,
668,
669,
675,
678,
679,
680,
681,
685,
687,
688,
689,
690,
691,
694,
696,
704,
707,
709,
714,
715,
716,
717,
718,
719,
734,
738,
741,
742,
744,
746,
747,
748,
753,
755,
760,
768,
769,
774,
776,
777,
778,
779,
781,
792,
797,
798,
801,
802,
803,
805,
807,
808,
811,
818,
822,
823,
826,
827,
828,
829,
836,
838,
841,
845,
847,
848,
850,
854,
858,
860,
862,
863,
864,
865,
867,
868,
871,
875,
876,
881,
884,
886,
894,
896,
897,
898,
900,
901,
903,
905,
915,
923,
924,
928,
932,
933,
936,
937,
938,
944,
947,
951,
952,
954,
970,
982,
983,
984,
985,
986,
987,
995,
997,
1000,
1002,
1003,
1005,
1023,
1025,
1034,
1036,
1039,
1053,
1054,
1055,
1063,
],
[
106,
138,
178,
179,
180,
181,
182,
183,
184,
185,
186,
188,
189,
235,
261,
262,
263,
264,
265,
268,
273,
348,
372,
373,
374,
375,
376,
377,
410,
411,
493,
494,
495,
496,
497,
498,
499,
500,
501,
503,
504,
505,
506,
507,
509,
510,
511,
512,
513,
514,
516,
519,
520,
601,
674,
737,
754,
769,
781,
957,
1013,
1014,
1015,
1016,
1017,
1018,
1019,
1020,
1021,
1022,
],
],
],
];
/* ---------------------------------------------------------------------------
* FileIcons
* ------------------------------------------------------------------------- */
/**
* Create FileIcons instance
*
* @param {Array} icondb - Icons database
* @class
* @constructor
*/
var FileIcons = function (icondb) {
this.db = new IconTables(icondb);
};
/**
* Get icon class name of the provided filename. If not found, default to text icon.
*
* @param {string} name - file name
* @return {string}
* @public
*/
FileIcons.prototype.getClass = function (name) {
var match = this.db.matchName(name);
return match ? match.getClass() : null;
};
/**
* Get icon class name of the provided filename with color. If not found, default to text icon.
*
* @param {string} name - file name
* @return {string}
* @public
*/
FileIcons.prototype.getClassWithColor = function (name, isTree) {
var match = this.db.matchName(name);
return match ? match.getClass(0) : getGenericTreeIcons(isTree);
};
const getGenericTreeIcons = (isTree) => {
return isTree
? isTree.isOpen
? "folder-open-icon"
: "folder-closed-icon"
: "generic-file-icon";
};
return new FileIcons(icondb);
};
export default fileIcons();
================================================
FILE: content/src/scripts/utils/searchBarWorker.js
================================================
export default () => {
self.addEventListener("message", (e) => {
if (!e) return;
let searchTerms = e.data.searchTerms;
let URLDetails = e.data.URLDetails;
let query = e.data.query;
const max = (a, b) => {
return a > b ? a : b;
};
const fzyIsLower = (s) => {
return s.toLowerCase() === s;
};
const fzyIsUpper = (s) => {
return s.toUpperCase() === s;
};
const fzyPreComputeBonus = (haystack) => {
const SCORE_MATCH_SLASH = 0.9;
const SCORE_MATCH_WORD = 0.8;
const SCORE_MATCH_CAPITAL = 0.7;
const SCORE_MATCH_DOT = 0.6;
let m = haystack.length;
let match_bonus = new Array(m);
let last_ch = "/";
for (let i = 0; i < m; i++) {
let ch = haystack[i];
if (last_ch === "/") {
match_bonus[i] = SCORE_MATCH_SLASH;
} else if (last_ch === "-" || last_ch === "_" || last_ch === " ") {
match_bonus[i] = SCORE_MATCH_WORD;
} else if (last_ch === ".") {
match_bonus[i] = SCORE_MATCH_DOT;
} else if (fzyIsLower(last_ch) && fzyIsUpper(ch)) {
match_bonus[i] = SCORE_MATCH_CAPITAL;
} else {
match_bonus[i] = 0;
}
last_ch = ch;
}
return match_bonus;
};
const fzyCompute = (needle, haystack, D, M) => {
const SCORE_MIN = -Infinity;
const SCORE_GAP_LEADING = -0.005;
const SCORE_GAP_TRAILING = -0.005;
const SCORE_GAP_INNER = -0.01;
const SCORE_MATCH_CONSECUTIVE = 1.0;
let n = needle.length;
let m = haystack.length;
let lower_needle = needle.toLowerCase();
let lower_haystack = haystack.toLowerCase();
let match_bonus = fzyPreComputeBonus(haystack);
for (let i = 0; i < n; i++) {
D[i] = new Array(m);
M[i] = new Array(m);
let prev_score = SCORE_MIN;
let gap_score = i === n - 1 ? SCORE_GAP_TRAILING : SCORE_GAP_INNER;
for (let j = 0; j < m; j++) {
if (lower_needle[i] === lower_haystack[j]) {
let score = SCORE_MIN;
if (!i) {
score = j * SCORE_GAP_LEADING + match_bonus[j];
} else if (j) {
/* i > 0 && j > 0*/
score = max(
M[i - 1][j - 1] + match_bonus[j],
D[i - 1][j - 1] + SCORE_MATCH_CONSECUTIVE
);
}
D[i][j] = score;
M[i][j] = prev_score = max(score, prev_score + gap_score);
} else {
D[i][j] = SCORE_MIN;
M[i][j] = prev_score = prev_score + gap_score;
}
}
}
};
const fzyScore = (needle, haystack) => {
const SCORE_MIN = -Infinity;
const SCORE_MAX = Infinity;
let n = needle.length;
let m = haystack.length;
if (!n || !m) return SCORE_MIN;
if (n === m) {
return SCORE_MAX;
}
if (m > 1024) {
return SCORE_MIN;
}
let D = new Array(n);
let M = new Array(n);
fzyCompute(needle, haystack, D, M);
return M[n - 1][m - 1];
};
const topNElements = (arr, n) => {
if (arr.length <= n) {
arr.sort((a, b) => fzyScore(query, b) - fzyScore(query, a));
return arr;
}
const fzyScores = arr.map((x) => fzyScore(query, x));
const result = [];
for (let i = 0; i < n; i++) {
let largestScoreIdx = -1;
for (let j = 0; j < fzyScores.length; j++) {
if (fzyScores[j]) {
if (largestScoreIdx === -1) {
largestScoreIdx = j;
continue;
}
if (fzyScores[j] > fzyScores[largestScoreIdx]) {
largestScoreIdx = j;
}
}
}
result.push(arr[largestScoreIdx]);
fzyScores[largestScoreIdx] = null;
}
return result;
};
const getSearchResults = (searchTerms, URLDetails, query) => {
if (
searchTerms &&
searchTerms[URLDetails.dirFormatted] &&
searchTerms[URLDetails.dirFormatted][URLDetails.branchName]
) {
const reRegExpChar = /[\\^$.*+?()[\]{}|]/g,
reHasRegExpChar = RegExp(reRegExpChar.source);
const escapeRegExp = (string) =>
reHasRegExpChar.test(string)
? string.replace(reRegExpChar, "\\$&")
: string;
const regex = new RegExp(
query.split("").map(escapeRegExp).join(".*"),
"i"
);
let resultArray = searchTerms[URLDetails.dirFormatted][
URLDetails.branchName
].filter((ele) => ele.match(regex));
return topNElements(resultArray, 25);
}
return [];
};
postMessage(getSearchResults(searchTerms, URLDetails, query));
});
};
================================================
FILE: content/src/scripts/utils/styling.js
================================================
export const applyOpenedPageStyling = (width) => {
if (document.querySelector("nav.super-sidebar")) {
document.querySelector(".content-wrapper").style.paddingLeft = width + "px";
document.querySelector('[data-testid="top-bar"]').style.paddingLeft =
24 + width + "px";
const sidebar = document.querySelector("nav.super-sidebar");
if (extractE(window.getComputedStyle(sidebar).transform)) {
// sidebar.style.transform = `translateX(0px)`;
} else {
sidebar.style.transform = `translateX(${width + "px"})`;
}
} else {
document.querySelector("header").style.left = width + "px";
document.querySelector("body").style.marginLeft = width + "px";
document.querySelector("body").style.overflowX = "auto";
if (document.querySelector(".nav-sidebar")) {
document.querySelector(".nav-sidebar").style.left = width + "px";
}
}
};
export const applyClosedPageStyling = () => {
if (document.querySelector("nav.super-sidebar")) {
document.querySelector(".content-wrapper").style.paddingLeft = 0 + "px";
document.querySelector('[data-testid="top-bar"]').style.paddingLeft =
24 + "px";
const sidebar = document.querySelector("nav.super-sidebar");
if (extractE(window.getComputedStyle(sidebar).transform) > 0) {
sidebar.style.transform = `translateX(0px)`;
}
} else {
document.querySelector("header").style.left = "0";
document.querySelector("body").style.marginLeft = "0";
if (document.querySelector(".nav-sidebar")) {
document.querySelector(".nav-sidebar").style.left = "0";
}
}
};
function extractE(transformValue) {
// Check if the provided transform value is in matrix format
if (transformValue && transformValue.startsWith("matrix")) {
// Extract the matrix values
var matrixRegex =
/matrix\((-?\d*\.?\d+), (-?\d*\.?\d+), (-?\d*\.?\d+), (-?\d*\.?\d+), (-?\d*\.?\d+), (-?\d*\.?\d+)\)/;
var match = matrixRegex.exec(transformValue);
// If the regex matched successfully
if (match) {
// Return the 'e' value (horizontal translation)
return parseFloat(match[5]);
}
}
// If the transform value is not in matrix format or if extraction fails, return null
return null;
}
================================================
FILE: content/src/scripts/utils/themeList.js
================================================
import { browserKey } from "./browser";
export const switchTheme = () => {
const domain = location.origin;
let themeList = JSON.parse(localStorage.getItem("spantree-themelist")) || {};
if (domain in themeList) {
const alteredValue = !themeList[domain];
themeList[domain] = alteredValue;
if (document.getElementById("spantree-theme") === null) {
insertCSS(!alteredValue);
} else {
document.getElementById("spantree-theme").disabled = !alteredValue;
}
} else {
themeList[domain] = true;
if (document.getElementById("spantree-theme") === null) {
insertCSS(false);
} else {
document.getElementById("spantree-theme").disabled = false;
}
}
localStorage.setItem("spantree-themelist", JSON.stringify(themeList));
};
const insertCSS = (isDisabled) => {
// Insert CSS into Head
const darkGitlab = document.createElement("link");
darkGitlab.id = "spantree-theme";
darkGitlab.disabled = isDisabled;
darkGitlab.rel = "stylesheet";
darkGitlab.type = "text/css";
darkGitlab.href = `${browserKey()}-extension://${chrome.i18n.getMessage(
"@@extension_id"
)}/libs/gitlab-dark.css`;
document.querySelector("head").appendChild(darkGitlab);
};
================================================
FILE: content/src/scripts/utils/throttle.js
================================================
export function throttle(func, wait, options) {
let context, args, result;
let timeout = null;
let previous = 0;
if (!options) options = {};
let later = function () {
previous = options.leading === false ? 0 : Date.now();
timeout = null;
result = func.apply(context, args);
if (!timeout) context = args = null;
};
return function () {
let now = Date.now();
if (!previous && options.leading === false) previous = now;
let remaining = wait - (now - previous);
context = this;
args = arguments;
if (remaining <= 0 || remaining > wait) {
if (timeout) {
clearTimeout(timeout);
timeout = null;
}
previous = now;
result = func.apply(context, args);
if (!timeout) context = args = null;
} else if (!timeout && options.trailing !== false) {
timeout = setTimeout(later, remaining);
}
return result;
};
}
================================================
FILE: content/src/scripts/utils/url.js
================================================
export const fetchURLDetails = () => {
const pathName = window.location.pathname;
const pathNameSplit = pathName
.split("/")
.filter((pathSub) => pathSub.length !== 0);
let dir = [];
let branchName = "master";
if (document.querySelector(".dropdown-toggle-text"))
branchName = document.querySelector(".dropdown-toggle-text").innerText;
if (document.querySelector(".ref-selector"))
branchName = document.querySelector(".ref-selector").innerText;
let branchNameSplit = branchName
.split("/")
.filter((pathSub) => pathSub.length !== 0);
let branchFound = false;
let findingBranch = false;
let baseRemovedURLItems = [];
for (let i = 0; i < pathNameSplit.length; i++) {
if (findingBranch) {
if (!branchFound) {
i += branchNameSplit.length;
branchFound = true;
}
baseRemovedURLItems.push(pathNameSplit[i]);
} else {
if (pathNameSplit[i] === "-") {
i++;
findingBranch = true;
} else if (
pathNameSplit[i] === "blob" ||
pathNameSplit[i] === "tree" ||
pathNameSplit[i] === "blame" ||
pathNameSplit[i] === "commits" ||
pathNameSplit[i] === "find_file"
) {
findingBranch = true;
} else {
dir.push(pathNameSplit[i]);
}
}
}
const dirFormatted = dir.join("/");
const baseRemovedURL = baseRemovedURLItems.join("/");
const projectId = document.body.getAttribute("data-project-id");
return {
dir,
dirFormatted: dirFormatted,
dirURLParam: encodeURIComponent(dir.join("/")),
branchName,
branchNameURL: encodeURIComponent(branchName),
baseRemovedURL: baseRemovedURL,
projectId,
};
};
================================================
FILE: content/src/scripts/utils/useEventListener.js
================================================
import { useRef, useEffect } from "react";
function useEventListener(eventName, handler, element = window) {
const savedHandler = useRef();
useEffect(() => {
savedHandler.current = handler;
}, [handler]);
useEffect(() => {
const isSupported = element && element.addEventListener;
if (!isSupported) return;
const eventListener = (event) => savedHandler.current(event);
element.addEventListener(eventName, eventListener);
return () => {
element.removeEventListener(eventName, eventListener);
};
}, [eventName, element]);
}
export default useEventListener;
================================================
FILE: content/webpack.config.js
================================================
const path = require("path");
module.exports = {
mode: process.env.NODE_ENV === "production" ? "production" : "development",
devtool: "cheap-module-source-map",
entry: ["./content/src/scripts/index.js"],
output: {
filename: "content.js",
path: path.join(__dirname, "../", "build"),
publicPath: "/",
},
resolve: {
extensions: [".js", ".jsx", ".json", ".css", ".svg"],
modules: ["node_modules"],
},
module: {
rules: [
{ test: /\.css$/, use: ["style-loader", "css-loader"] },
{
test: /\.(jsx|js)?$/,
exclude: /(node_modules)/,
include: path.join(__dirname, "src"),
use: {
loader: "babel-loader",
options: {
presets: ["es2015", "react"],
},
},
},
],
},
};
================================================
FILE: event/axios.js
================================================
import axios from "axios";
const options = {
baseURL: `${window.location.origin}/api/v4/projects/`,
};
const inst = axios.create(options);
export default inst;
================================================
FILE: event/src/actions/API/index.js
================================================
import axiosOriginal from "axios";
import * as types from "../../types/API";
import store from "../../../../content/src/scripts";
import axios from "../../../axios";
export const getInitialTree = (id, params, reducerDetails) => {
let url = `${id}/repository/tree`;
url += "?per_page=10000";
for (let param in params) {
url += `&${param}=${params[param]}`;
}
axios
.get(url)
.then((res) => {
store.dispatch({
type: types.FETCH_TREE,
payload: res.data,
reducerDetails,
});
})
.catch((_err) => {});
};
export const openDir = (id, path, params, reducerDetails) => {
store.dispatch({
type: types.OPEN_DIR,
payload: path,
reducerDetails,
});
let url = `${id}/repository/tree`;
url += "?per_page=10000";
for (let param in params) {
url += `&${param}=${params[param]}`;
}
axios
.get(url)
.then((res) => {
store.dispatch({
type: types.UPDATE_TREE,
payload: res.data,
reducerDetails,
});
})
.catch((_err) => {});
};
export const closeDir = (path, reducerDetails) => {
store.dispatch({
type: types.CLOSE_DIR,
payload: path,
reducerDetails,
});
};
export const getSearchTerms = (reducerDetails) => {
let url = `${window.location.origin}/${reducerDetails.repoName}/`;
if (!reducerDetails.compatibilityMode) {
url += "-/";
}
url += `files/${reducerDetails.branchName}?format=json`;
axiosOriginal
.get(url)
.then((res) => {
store.dispatch({
type: types.FETCH_SEARCH_TERMS,
payload: res.data,
reducerDetails,
});
})
.catch((_err) => {});
};
================================================
FILE: event/src/actions/UI/index.js
================================================
import * as types from "../../types/UI";
import store from "../../../../content/src/scripts";
export const togglePinned = () => {
store.dispatch({
type: types.TOGGLE_PINNED,
});
};
export const toggleOpened = (reducerDetails) => {
store.dispatch({
type: types.TOGGLE_OPENED,
reducerDetails,
});
};
export const setWidth = (width) => {
store.dispatch({
type: types.SET_WIDTH,
payload: width,
});
};
export const setClicked = (clicked) => {
store.dispatch({
type: types.SET_CLICKED,
payload: clicked,
});
};
export const optionsChanged = (options) => {
store.dispatch({
type: types.OPTIONS_CHANGED,
payload: options,
});
};
================================================
FILE: event/src/index.js
================================================
import thunk from "redux-thunk";
import { createStore } from "redux";
import { TabIdentifier } from "chrome-tab-identifier";
import rootReducer from "./reducers";
const tabIdentifier = new TabIdentifier();
import { wrapStore, applyMiddleware } from "@eduardoac-skimlinks/webext-redux";
const store = createStore(rootReducer);
wrapStore(applyMiddleware(store, thunk));
================================================
FILE: event/src/reducers/API/searchTerms.js
================================================
import { FETCH_SEARCH_TERMS } from "../../types/API";
const initialState = {};
export default (state = initialState, action) => {
switch (action.type) {
case FETCH_SEARCH_TERMS:
return {
...state,
[action.reducerDetails.repoName]: {
...state[action.reducerDetails.repoName],
[action.reducerDetails.branchName]: action.payload,
},
};
default:
return state;
}
};
================================================
FILE: event/src/reducers/API/tree.js
================================================
import produce from "immer";
import { FETCH_TREE, OPEN_DIR, CLOSE_DIR, UPDATE_TREE } from "../../types/API";
const initialState = {};
export default (state = initialState, action) => {
switch (action.type) {
case FETCH_TREE:
return {
...state,
[action.reducerDetails.tabId]: action.payload
.map((node) => {
return {
name: node.name,
path: node.path
.split("/")
.filter((pathSub) => pathSub.length !== 0),
isTree:
node.type === "tree"
? {
isOpen: false,
}
: false,
children: node.type === "tree" ? {} : undefined,
};
})
.reduce((map, obj) => {
map[obj.name] = obj;
return map;
}, {}),
};
case OPEN_DIR:
let objectPath = [action.reducerDetails.tabId];
for (let i = 0; i < action.payload.length; i++) {
objectPath.push(action.payload[i]);
if (i !== action.payload.length - 1) {
objectPath.push("children");
}
}
objectPath = [...objectPath, "isTree", "isOpen"];
let propName = objectPath.pop();
let nextState = produce(state, (draft) => {
draft = objectPath.reduce((it, prop) => it[prop], draft);
draft[propName] = true;
});
return nextState;
case UPDATE_TREE:
objectPath = [action.reducerDetails.tabId];
for (let i = 0; i < action.reducerDetails.path.length; i++) {
objectPath.push(action.reducerDetails.path[i]);
if (i !== action.reducerDetails.path.length - 1) {
objectPath.push("children");
}
}
propName = objectPath.pop();
const children = action.payload
.map((node) => {
return {
name: node.name,
path: node.path
.split("/")
.filter((pathSub) => pathSub.length !== 0),
isTree:
node.type === "tree"
? {
isOpen: false,
}
: false,
children: node.type === "tree" ? {} : undefined,
};
})
.reduce((map, obj) => {
map[obj.name] = obj;
return map;
}, {});
nextState = produce(state, (draft) => {
draft = objectPath.reduce((it, prop) => it[prop], draft);
if (Object.keys(draft[propName]["children"]) <= 0) {
draft[propName]["children"] = children;
}
});
return nextState;
case CLOSE_DIR:
objectPath = [action.reducerDetails.tabId];
for (let i = 0; i < action.payload.length; i++) {
objectPath.push(action.payload[i]);
if (i !== action.payload.length - 1) {
objectPath.push("children");
}
}
propName = objectPath.pop();
nextState = produce(state, (draft) => {
draft = objectPath.reduce((it, prop) => it[prop], draft);
draft[propName]["isTree"]["isOpen"] = false;
// draft[propName]["children"] = {};
});
return nextState;
default:
return state;
}
};
================================================
FILE: event/src/reducers/UI/clicked.js
================================================
import { SET_CLICKED } from "../../types/UI";
const initialState = false;
export default (state = initialState, action) => {
switch (action.type) {
case SET_CLICKED:
return action.payload;
default:
return state;
}
};
================================================
FILE: event/src/reducers/UI/opened.js
================================================
import { TOGGLE_OPENED } from "../../types/UI";
const initialState = {};
export default (state = initialState, action) => {
switch (action.type) {
case TOGGLE_OPENED:
return {
...state,
[action.reducerDetails.tabId]:
action.reducerDetails.tabId in state
? !state[action.reducerDetails.tabId]
: true,
};
default:
return state;
}
};
================================================
FILE: event/src/reducers/UI/options.js
================================================
import { OPTIONS_CHANGED } from "../../types/UI";
export const intitialState = {
data: {},
version: 0,
};
export default (state = intitialState, action) => {
switch (action.type) {
case OPTIONS_CHANGED: {
const newData = {
data: action.payload,
version: !isNaN(state.version) ? state.version + 1 : 0,
};
return newData;
}
default:
return state;
}
};
================================================
FILE: event/src/reducers/UI/pinned.js
================================================
import { TOGGLE_PINNED } from "../../types/UI";
const initialState = false;
export default (state = initialState, action) => {
switch (action.type) {
case TOGGLE_PINNED:
return !state;
default:
return state;
}
};
================================================
FILE: event/src/reducers/UI/width.js
================================================
import { SET_WIDTH } from "../../types/UI";
const initialWidth = 250;
export default (state = initialWidth, action) => {
switch (action.type) {
case SET_WIDTH:
return action.payload;
default:
return state;
}
};
================================================
FILE: event/src/reducers/index.js
================================================
import { combineReducers } from "redux";
import opened from "./UI/opened";
import pinned from "./UI/pinned";
import width from "./UI/width";
import clicked from "./UI/clicked";
import options from "./UI/options";
import tree from "./API/tree";
import searchTerms from "./API/searchTerms";
export default combineReducers({
opened,
pinned,
width,
clicked,
options,
tree,
searchTerms,
});
================================================
FILE: event/src/types/API.js
================================================
export const FETCH_TREE = "FETCH_TREE";
export const UPDATE_TREE = "UPDATE_TREE";
export const OPEN_DIR = "OPEN_DIR";
export const CLOSE_DIR = "CLOSE_DIR";
export const FETCH_SEARCH_TERMS = "FETCH_SEARCH_TERMS";
================================================
FILE: event/src/types/UI.js
================================================
export const TOGGLE_PINNED = "TOGGLE_PINNED";
export const TOGGLE_OPENED = "TOGGLE_OPENED";
export const SET_WIDTH = "SET_WIDTH";
export const SET_CLICKED = "SET_CLICKED";
export const OPTIONS_CHANGED = "OPTIONS_CHANGED";
================================================
FILE: event/webpack.config.js
================================================
const path = require("path");
module.exports = {
mode: process.env.NODE_ENV === "production" ? "production" : "development",
devtool: "cheap-module-source-map",
entry: ["./event/src/index.js"],
output: {
filename: "event.js",
path: path.join(__dirname, "../", "build"),
},
resolve: {
extensions: [".js", ".json"],
modules: ["node_modules"],
},
module: {
rules: [
{
test: /\.(js)?$/,
exclude: /(node_modules)/,
include: path.join(__dirname, "src"),
use: {
loader: "babel-loader",
options: {
presets: ["es2015", "react"],
},
},
},
],
},
};
================================================
FILE: gulpfile.babel.js
================================================
import gulp from "gulp";
import webpack from "webpack";
import rimraf from "rimraf";
import log from "fancy-log";
import PluginError from "plugin-error";
import rename from "gulp-rename";
import popupWebpackConfig from "./popup/webpack.config";
import eventWebpackConfig from "./event/webpack.config";
import contentWebpackConfig from "./content/webpack.config";
const popupJs = (cb) => {
webpack(popupWebpackConfig, (err, stats) => {
if (err) throw new PluginError("webpack", err);
log("[webpack]", stats.toString());
cb();
});
};
const eventJs = (cb) => {
webpack(eventWebpackConfig, (err, stats) => {
if (err) throw new PluginError("webpack", err);
log("[webpack]", stats.toString());
cb();
});
};
const contentJs = (cb) => {
webpack(contentWebpackConfig, (err, stats) => {
if (err) throw new PluginError("webpack", err);
log("[webpack]", stats.toString());
cb();
});
};
const popupHtml = () => {
return gulp
.src("popup/src/index.html")
.pipe(rename("popup.html"))
.pipe(gulp.dest("./build"));
};
const copyManifest = () => {
return gulp.src("manifest.json").pipe(gulp.dest("./build"));
};
const clean = (cb) => {
rimraf("./build", cb);
};
const copyLibs = () => {
return gulp
.src("./content/src/scripts/libs/**/*")
.pipe(gulp.dest("./build/libs"));
};
const copyIcons = () => {
return gulp.src("./icons/**/*").pipe(gulp.dest("./build/icons"));
};
const build = gulp.series(
clean,
gulp.parallel(
copyLibs,
copyIcons,
copyManifest,
popupJs,
popupHtml,
eventJs,
contentJs
)
);
gulp.task("watch", () =>
gulp.watch(
["popup/**/*", "content/**/*", "event/**/*", "manifest.json"],
build
)
);
gulp.task("default", build);
================================================
FILE: license
================================================
MIT License
Copyright (c) 2021 Taveesh Anand
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: manifest.json
================================================
{
"manifest_version": 3,
"name": "SpanTree",
"description": "Tree for Gitlab",
"version": "0.0.5.2",
"background": {
"service_worker": "event.js"
},
"host_permissions": [
""
],
"action": {
"default_title": "SpanTree",
"default_popup": "popup.html"
},
"web_accessible_resources": [
{
"resources": [
"*.png",
"*.woff2",
"*.svg",
"*.css"
],
"matches": [
""
]
}
],
"content_scripts": [
{
"matches": [
""
],
"css": [],
"js": [
"content.js"
]
},
{
"run_at": "document_start",
"matches": [
""
],
"css": [],
"js": [
"libs/contentDark.js"
]
}
],
"icons": {
"16": "icons/icon16.png",
"48": "icons/icon48.png",
"64": "icons/icon64.png",
"128": "icons/icon128.png"
}
}
================================================
FILE: package.json
================================================
{
"name": "span-tree",
"version": "0.0.1",
"description": "Tree for Gitlab",
"scripts": {
"start": "gulp && gulp watch",
"export": "NODE_ENV=production npm start"
},
"author": "Taveesh Anand",
"dependencies": {
"@eduardoac-skimlinks/webext-redux": "^3.0.1-release-candidate",
"axios": "^0.21.1",
"chrome-tab-identifier": "0.0.1",
"fzy.js": "^0.4.1",
"immer": "^9.0.2",
"react": "^16.13.0",
"react-dom": "^16.13.0",
"react-redux": "^7.2.0",
"redux": "^4.0.5",
"redux-thunk": "^2.3.0",
"style-loader": "^1.1.3"
},
"devDependencies": {
"babel-core": "^6.24.1",
"babel-loader": "^7.0.0",
"babel-minify-webpack-plugin": "^0.3.1",
"babel-plugin-transform-es2015-destructuring": "^6.23.0",
"babel-plugin-transform-object-rest-spread": "^6.26.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-react": "^6.24.1",
"css-loader": "^5.2.5",
"fancy-log": "^2.0.0",
"file-loader": "^6.0.0",
"gulp": "^4.0.2",
"gulp-rename": "^2.0.0",
"plugin-error": "^2.0.0",
"rimraf": "^2.7.1",
"webpack": "^5.37.1"
}
}
================================================
FILE: popup/src/index.html
================================================
RCR Example
================================================
FILE: popup/src/scripts/components/app/App.jsx
================================================
import React from "react";
import { connect } from "react-redux";
import Options from "../options";
import "./styles.css";
const optionList = [
{
name: "Compatibility Mode",
keyName: "compatibility-mode",
type: "CheckBox",
defaultVal: true,
},
{
name: "Auto Theme",
keyName: "auto-theme",
type: "CheckBox",
defaultVal: false,
},
];
const App = ({ dispatch, options }) => {
return (
SpanTree Options
{
dispatch({
type: "OPTIONS_CHANGED",
payload: newOptions,
});
}}
/>
);
};
const mapStateToProps = (state) => {
return {
options: state.options,
};
};
export default connect(mapStateToProps)(App);
================================================
FILE: popup/src/scripts/components/app/styles.css
================================================
body {
margin: 0;
}
.spantree-popup {
font-family: Arial, Helvetica, sans-serif;
width: 200px;
padding: 0;
margin: 0;
}
.spantree-options-heading {
background-color: rgb(77, 61, 146);
font-size: 20px;
font-weight: bold;
padding: 8px;
color: white;
display: flex;
justify-content: center;
user-select: none;
}
.spantree-options {
display: flex;
flex-direction: column;
justify-content: space-around;
}
================================================
FILE: popup/src/scripts/components/options/index.js
================================================
export { default } from "./options";
================================================
FILE: popup/src/scripts/components/options/options.jsx
================================================
import React from "react";
import "./styles.css";
function Option({ id, value, label, type, handleChange }) {
switch (type) {
case "CheckBox":
return (
);
default:
return null;
}
}
function Options({ options, optionList, changeOptions }) {
const handleChangeOptions = (key, value) => {
changeOptions({
...options,
[key]: value,
});
};
return optionList.map((option) => (
));
}
export default Options;
================================================
FILE: popup/src/scripts/components/options/styles.css
================================================
.option {
display: flex;
flex-direction: row;
justify-content: space-between;
margin: 8px;
}
.option:hover {
cursor: pointer;
}
.option input:hover {
cursor: pointer;
}
.option-name {
font-size: 14px;
user-select: none;
}
================================================
FILE: popup/src/scripts/index.js
================================================
import React from "react";
import { render } from "react-dom";
import App from "./components/app/App";
import { Store } from "@eduardoac-skimlinks/webext-redux";
import { Provider } from "react-redux";
const proxyStore = new Store();
proxyStore.ready().then(() => {
render(
,
document.getElementById("app")
);
});
export default proxyStore;
================================================
FILE: popup/webpack.config.js
================================================
const path = require("path");
module.exports = {
mode: process.env.NODE_ENV === "production" ? "production" : "development",
devtool: "cheap-module-source-map",
entry: ["./popup/src/scripts/index.js"],
output: {
filename: "popup.js",
path: path.join(__dirname, "../", "build"),
publicPath: "/",
},
resolve: {
extensions: [".js", ".jsx", ".css", ".json"],
modules: ["node_modules"],
},
module: {
rules: [
{ test: /\.css$/, use: ["style-loader", "css-loader"] },
{
test: /\.(jsx|js)?$/,
exclude: /(node_modules)/,
include: path.join(__dirname, "src"),
use: {
loader: "babel-loader",
options: {
presets: ["es2015", "react"],
},
},
},
],
},
};