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://img.shields.io/github/stars/tavyandy97/span-tree?color=red&style=for-the-badge)](https://github.com/tavyandy97/span-tree)  [![](https://img.shields.io/chrome-web-store/users/gcjikeldobhnaglcoaejmdlmbienoocg?style=for-the-badge)](https://chrome.google.com/webstore/detail/spantree-gitlab-tree/gcjikeldobhnaglcoaejmdlmbienoocg)  [![](https://img.shields.io/chrome-web-store/v/gcjikeldobhnaglcoaejmdlmbienoocg?style=for-the-badge)](https://chrome.google.com/webstore/detail/spantree-gitlab-tree/gcjikeldobhnaglcoaejmdlmbienoocg)  [![](https://img.shields.io/amo/v/spantree-gitlab-tree?style=for-the-badge)](https://addons.mozilla.org/en-GB/firefox/addon/spantree-gitlab-tree/)  [![](https://img.shields.io/badge/Made%20With-React-%2340D8FC?color=dodgerblue&logo=react&style=for-the-badge)](https://reactjs.org/) ![](docs//banner.png) ## 📖 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)
![](docs/demo.gif) ## ✨ Stargazers [![Stargazers repo roster for @tavyandy97/span-tree](https://reporoster.com/stars/tavyandy97/span-tree)](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); }} >
    {fileName}
    {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) => (