diff --git a/README.md b/README.md index ed267eb5..7842ca0a 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,17 @@ -[![DocSearch][1]][8] +# @docsearch/css -The easiest way to add search to your documentation. For free. +Style package for [DocSearch](http://docsearch.algolia.com/), the best search experience for docs. -[![npm version][2]](https://npmjs.org/package/docsearch.js) -[![build][3]](https://travis-ci.org/algolia/docsearch) -[![coverage][4]](https://coveralls.io/github/algolia/docsearch) -[![License][5]](./LICENSE) -[![Downloads][6]](https://npm-stat.com/charts.html?package=docsearch.js) -[![jsDelivr Hits][7]](https://www.jsdelivr.com/package/npm/docsearch.js) +## Installation -DocSearch will crawl your documentation website, push its content to an Algolia -index, and allow you to add a dropdown search menu for your users to find -relevant content in no time. +In a JavaScript environment: -Check out our [website][8] for a complete explanation and documentation. +```sh +yarn add @docsearch/css@alpha +# or +npm install @docsearch/css@alpha +``` -[![Bootstrap demo][9]][8] +## Documentation -## Related projects - -DocSearch is made of 4 repositories: - -- [algolia/docsearch][10] contains the `docsearch.js` code source -- [algolia/docsearch-website](https://github.com/algolia/docsearch-website) contains the - documentation website. -- [algolia/docsearch-configs][11] contains the JSON files representing all the - configs for all the documentations DocSearch is powering -- [algolia/docsearch-scraper][12] contains the crawler we use to extract data - from your documentation. The code is open-source and you can run it from - a Docker image - -[1]: ./.github/docsearch-logo.svg -[2]: https://img.shields.io/npm/v/docsearch.js.svg?style=flat-square -[3]: https://img.shields.io/travis/algolia/docsearch/master.svg?style=flat-square -[4]: https://img.shields.io/coveralls/algolia/docsearch/master.svg?style=flat-square -[5]: https://img.shields.io/badge/license-MIT-green.svg?style=flat-square -[6]: https://img.shields.io/npm/dm/docsearch.js.svg?style=flat-square -[7]: https://data.jsdelivr.com/v1/package/npm/docsearch.js/badge -[8]: https://docsearch.algolia.com/ -[9]: ./.github/demo.gif -[10]: https://github.com/algolia/docsearch -[11]: https://github.com/algolia/docsearch-configs -[12]: https://github.com/algolia/docsearch-scraper +[Read documentation →](https://autocomplete-experimental.netlify.app/docs/docsearch-css) diff --git a/build-css.js b/build-css.js new file mode 100644 index 00000000..22a51126 --- /dev/null +++ b/build-css.js @@ -0,0 +1,81 @@ +/* eslint-disable import/no-commonjs, import/no-extraneous-dependencies */ + +const { execSync } = require('child_process'); +const fs = require('fs'); +const util = require('util'); + +const cssnano = require('cssnano'); +const postcss = require('postcss'); + +const pkg = require('./package.json'); + +const readFile = util.promisify(fs.readFile); + +function getBundleBanner(pkg) { + const lastCommitHash = execSync('git rev-parse --short HEAD') + .toString() + .trim(); + const version = process.env.SHIPJS + ? pkg.version + : `${pkg.version} (UNRELEASED ${lastCommitHash})`; + const authors = '© Algolia, Inc. and contributors'; + + return `/*! ${pkg.name} ${version} | MIT License | ${authors} | ${pkg.homepage} */`; +} + +function build({ input, output, banner }) { + fs.readFile(input, (error, css) => { + if (error) { + throw error; + } + + postcss([cssnano]) + .process(css, { from: input, to: output }) + .then((result) => { + fs.writeFile(output, [banner, result.css].join('\n'), () => true); + }); + }); +} + +build({ + input: 'src/_variables.css', + output: 'dist/_variables.css', + banner: getBundleBanner({ ...pkg, name: `${pkg.name} Variables` }), +}); +build({ + input: 'src/button.css', + output: 'dist/button.css', + banner: getBundleBanner({ ...pkg, name: `${pkg.name} Button` }), +}); +build({ + input: 'src/modal.css', + output: 'dist/modal.css', + banner: getBundleBanner({ ...pkg, name: `${pkg.name} Modal` }), +}); + +async function buildStyle() { + const variablesCss = await readFile('src/_variables.css'); + const buttonCss = await readFile('src/button.css'); + const modalCss = await readFile('src/modal.css'); + + const variablesOutput = await postcss([cssnano]).process(variablesCss, { + from: undefined, + }); + const buttonOutput = await postcss([cssnano]).process(buttonCss, { + from: undefined, + }); + const modalOutput = await postcss([cssnano]).process(modalCss, { + from: undefined, + }); + + fs.writeFile( + 'dist/style.css', + [ + getBundleBanner(pkg), + [variablesOutput.css, buttonOutput.css, modalOutput.css].join(''), + ].join('\n'), + () => true + ); +} + +buildStyle(); diff --git a/package.json b/package.json index f6eef43a..08eb4733 100644 --- a/package.json +++ b/package.json @@ -1,87 +1,25 @@ { - "name": "docsearch.js", - "version": "2.6.3", - "description": "Add an autocomplete dropdown to your documentation", - "homepage": "https://docsearch.algolia.com/", - "main": "dist/npm/index.js", - "scripts": { - "build": "./scripts/build", - "build:css": "./scripts/build-css", - "build:js": "./scripts/build-js", - "docs:build": "cd ./docs && yarn build", - "docs:serve": "cd ./docs && yarn serve", - "docs:deploy": "cd ./docs && yarn deploy", - "doctoc": "doctoc --maxlevel 3 README.md CONTRIBUTING.md", - "lint": "./scripts/lint", - "format:scss": "prettier --write ./src/**/*.scss", - "format:md": "prettier --write '**/*.md'", - "release": "./scripts/release", - "serve": "./scripts/serve", - "test": "./scripts/test", - "test:watch": "./scripts/test-watch" + "name": "@docsearch/css", + "description": "Styles for DocSearch.", + "version": "1.0.0-alpha.28", + "license": "MIT", + "homepage": "https://github.com/francoischalifour/autocomplete.js", + "repository": "francoischalifour/autocomplete.js", + "author": { + "name": "Algolia, Inc.", + "url": "https://www.algolia.com" }, + "sideEffects": false, "files": [ "dist/" ], - "author": "Algolia (https://github.com/algolia/)", - "license": "MIT", - "repository": "algolia/docsearch", - "renovate": { - "extends": [ - "config:library", - "schedule:weekends", - ":automergeMinor", - ":automergeBranchPush", - ":semanticCommits", - ":rebaseStalePrs", - ":timezone(Europe/Paris)" - ] - }, - "devDependencies": { - "autoprefixer": "9.6.1", - "babel-cli": "6.26.0", - "babel-core": "6.26.3", - "babel-eslint": "10.0.3", - "babel-istanbul": "0.12.2", - "babel-jest": "24.9.0", - "babel-loader": "8.0.6", - "babel-plugin-rewire": "1.2.0", - "babel-preset-env": "1.7.0", - "babel-preset-stage-3": "6.24.1", - "conventional-changelog-cli": "2.0.23", - "cssnano": "4.1.10", - "eslint": "6.3.0", - "eslint-config-algolia": "13.4.0", - "eslint-config-prettier": "6.1.0", - "eslint-plugin-import": "2.18.2", - "eslint-plugin-jest": "22.16.0", - "eslint-plugin-prettier": "3.1.0", - "jest": "24.9.0", - "jsdom": "15.1.1", - "json": "9.0.6", - "live-server": "1.2.1", - "mversion": "2.0.0", - "node-sass": "4.12.0", - "onchange": "6.0.0", - "parallelshell": "3.0.2", - "postcss-cli": "6.1.3", - "prettier": "1.19.1", - "pretty-bytes-cli": "2.0.0", - "semver": "6.3.0", - "sinon": "7.4.2", - "tailwindcss": "1.1.2", - "uglify-js": "3.7.6", - "webpack": "4.39.3", - "webpack-cli": "3.3.10" - }, - "peerDependencies": {}, - "dependencies": { - "algoliasearch": "^3.24.5", - "autocomplete.js": "0.37.0", - "hogan.js": "^3.0.2", - "request": "^2.87.0", - "stack-utils": "^1.0.1", - "to-factory": "^1.0.0", - "zepto": "^1.2.0" + "main": "dist/style.css", + "unpkg": "dist/style.css", + "jsdelivr": "dist/style.css", + "scripts": { + "build": "yarn build:clean && mkdir dist && yarn build:css", + "build:css": "node build-css.js", + "build:clean": "rm -rf ./dist", + "watch": "watch \"yarn build:css\" --ignoreDirectoryPattern \"/dist/\"" } } diff --git a/src/_variables.css b/src/_variables.css new file mode 100644 index 00000000..d59766d9 --- /dev/null +++ b/src/_variables.css @@ -0,0 +1,74 @@ +/* Variables */ + +:root { + --docsearch-primary-color: rgb(84, 104, 255); + --docsearch-text-color: rgb(28, 30, 33); + --docsearch-spacing: 12px; + --docsearch-icon-stroke-width: 1.4; + --docsearch-highlight-color: var(--docsearch-primary-color); + --docsearch-muted-color: rgb(150, 159, 175); + --docsearch-container-background: rgba(101, 108, 133, 0.8); + --docsearch-logo-color: rgba(84, 104, 255); + + /* modal */ + --docsearch-modal-width: 560px; + --docsearch-modal-height: 600px; + --docsearch-modal-background: rgb(245, 246, 247); + --docsearch-modal-shadow: inset 1px 1px 0 0 rgba(255, 255, 255, 0.5), + 0 3px 8px 0 rgba(85, 90, 100, 1); + + /* searchbox */ + --docsearch-searchbox-height: 56px; + --docsearch-searchbox-background: rgb(235, 237, 240); + --docsearch-searchbox-focus-background: #fff; + --docsearch-searchbox-shadow: inset 0 0 0 2px var(--docsearch-primary-color); + + /* hit */ + --docsearch-hit-height: 56px; + --docsearch-hit-color: rgb(68, 73, 80); + --docsearch-hit-active-color: #fff; + --docsearch-hit-background: #fff; + --docsearch-hit-shadow: 0 1px 3px 0 rgb(212, 217, 225); + + /* key */ + --docsearch-key-gradient: linear-gradient( + -225deg, + rgb(213, 219, 228) 0%, + rgb(248, 248, 248) 100% + ); + --docsearch-key-shadow: inset 0 -2px 0 0 rgb(205, 205, 230), + inset 0 0 1px 1px #fff, 0 1px 2px 1px rgba(30, 35, 90, 0.4); + + /* footer */ + --docsearch-footer-height: 44px; + --docsearch-footer-background: #fff; + --docsearch-footer-shadow: 0 -1px 0 0 rgb(224, 227, 232), + 0 -3px 6px 0 rgba(69, 98, 155, 0.12); +} + +/* Darkmode */ + +html[data-theme='dark'] { + --docsearch-text-color: rgb(245, 246, 247); + --docsearch-container-background: rgba(9, 10, 17, 0.8); + --docsearch-modal-background: rgb(21, 23, 42); + --docsearch-modal-shadow: inset 1px 1px 0 0 rgb(44, 46, 64), + 0 3px 8px 0 rgb(0, 3, 9); + --docsearch-searchbox-background: rgb(9, 10, 17); + --docsearch-searchbox-focus-background: #000; + --docsearch-hit-color: rgb(190, 195, 201); + --docsearch-hit-shadow: none; + --docsearch-hit-background: rgb(9, 10, 17); + --docsearch-key-gradient: linear-gradient( + -26.5deg, + rgb(86, 88, 114) 0%, + rgb(49, 53, 91) 100% + ); + --docsearch-key-shadow: inset 0 -2px 0 0 rgb(40, 45, 85), + inset 0 0 1px 1px rgb(81, 87, 125), 0 2px 2px 0 rgba(3, 4, 9, 0.3); + --docsearch-footer-background: rgb(30, 33, 54); + --docsearch-footer-shadow: inset 0 1px 0 0 rgba(73, 76, 106, 0.5), + 0 -4px 8px 0 rgba(0, 0, 0, 0.2); + --docsearch-logo-color: rgb(255, 255, 255); + --docsearch-muted-color: rgb(127, 132, 151); +} diff --git a/src/button.css b/src/button.css new file mode 100644 index 00000000..28deebc3 --- /dev/null +++ b/src/button.css @@ -0,0 +1,63 @@ +.DocSearch-Button { + align-items: center; + background: var(--docsearch-searchbox-background); + border: 0; + border-radius: 40px; + color: var(--docsearch-muted-color); + cursor: pointer; + display: flex; + font-weight: 500; + height: 36px; + margin: 0 0 0 16px; + padding: 0 8px; + user-select: none; +} + +.DocSearch-Button:hover, +.DocSearch-Button:active, +.DocSearch-Button:focus { + background: var(--docsearch-searchbox-focus-background); + box-shadow: var(--docsearch-searchbox-shadow); + color: var(--docsearch-text-color); + outline: none; +} + +.DocSearch-Search-Icon { + stroke-width: 1.6; +} + +.DocSearch-Button .DocSearch-Search-Icon { + color: var(--docsearch-text-color); +} + +.DocSearch-Button-Placeholder { + font-size: 1rem; + padding: 0 12px 0 6px; +} + +.DocSearch-Button-Key { + align-items: center; + background: var(--docsearch-key-gradient); + border-radius: 3px; + box-shadow: var(--docsearch-key-shadow); + color: var(--docsearch-muted-color); + display: flex; + height: 18px; + justify-content: center; + margin-right: 0.4em; + padding-bottom: 2px; + position: relative; + top: -1px; + width: 20px; +} + +@media (max-width: 750px) { + .DocSearch-Button-KeySeparator, + .DocSearch-Button-Key { + display: none; + } + + .DocSearch-Button-Placeholder { + display: none; + } +} diff --git a/src/modal.css b/src/modal.css new file mode 100644 index 00000000..417a58c4 --- /dev/null +++ b/src/modal.css @@ -0,0 +1,629 @@ +/* Body modifier */ + +.DocSearch--active { + /* + * We need to mark it as important because some websites override the + * `style` attribute (e.g. Docusaurus). + */ + overflow: hidden !important; +} + +/* Container & Modal */ + +.DocSearch-Container, +.DocSearch-Container * { + box-sizing: border-box; +} + +.DocSearch-Container { + background-color: var(--docsearch-container-background); + height: 100vh; + left: 0; + position: fixed; + top: 0; + width: 100vw; + z-index: 200; +} + +.DocSearch-Container a { + text-decoration: none; +} + +.DocSearch-Link { + appearance: none; + background: none; + border: 0; + color: var(--docsearch-highlight-color); + cursor: pointer; + font: inherit; + margin: 0; + padding: 0; +} + +.DocSearch-Modal { + background: var(--docsearch-modal-background); + border-radius: 6px; + box-shadow: var(--docsearch-modal-shadow); + flex-direction: column; + margin: 60px auto auto; + max-width: var(--docsearch-modal-width); + position: relative; +} + +/* Modal Searchbox */ + +.DocSearch-SearchBar { + display: flex; + padding: var(--docsearch-spacing) var(--docsearch-spacing) 0; +} + +.DocSearch-Form { + align-items: center; + background: var(--docsearch-searchbox-focus-background); + border-radius: 4px; + box-shadow: var(--docsearch-searchbox-shadow); + display: flex; + height: var(--docsearch-searchbox-height); + padding: 0 var(--docsearch-spacing); + position: relative; + width: 100%; +} + +.DocSearch-Input { + appearance: none; + background: transparent; + border: 0; + color: var(--docsearch-text-color); + flex: 1; + font: inherit; + font-size: 1.2em; + height: 100%; + outline: none; + padding: 0 0 0 8px; + width: 80%; +} + +.DocSearch-Input::placeholder { + color: var(--docsearch-muted-color); + opacity: 1; /* Firefox */ +} + +.DocSearch-Input::-webkit-search-cancel-button, +.DocSearch-Input::-webkit-search-decoration, +.DocSearch-Input::-webkit-search-results-button, +.DocSearch-Input::-webkit-search-results-decoration { + display: none; +} + +.DocSearch-LoadingIndicator, +.DocSearch-MagnifierLabel, +.DocSearch-Reset { + margin: 0; + padding: 0; +} + +.DocSearch-MagnifierLabel, +.DocSearch-Reset { + align-items: center; + color: var(--docsearch-highlight-color); + display: flex; + justify-content: center; +} + +.DocSearch-Container--Stalled .DocSearch-MagnifierLabel { + display: none; +} + +.DocSearch-LoadingIndicator { + display: none; +} + +.DocSearch-Container--Stalled .DocSearch-LoadingIndicator { + align-items: center; + color: var(--docsearch-highlight-color); + display: flex; + justify-content: center; +} + +@media screen and (prefers-reduced-motion: reduce) { + .DocSearch-Reset { + animation: none; + appearance: none; + background: none; + border: 0; + border-radius: 50%; + color: var(--docsearch-icon-color); + cursor: pointer; + right: 0; + stroke-width: var(--docsearch-icon-stroke-width); + } +} + +.DocSearch-Reset { + animation: fade-in 0.1s ease-in forwards; + appearance: none; + background: none; + border: 0; + border-radius: 50%; + color: var(--docsearch-icon-color); + cursor: pointer; + padding: 2px; + right: 0; + stroke-width: var(--docsearch-icon-stroke-width); +} + +.DocSearch-Reset[hidden] { + display: none; +} + +.DocSearch-Reset:focus { + outline: none; +} + +.DocSearch-Reset:hover { + color: var(--docsearch-highlight-color); +} + +.DocSearch-LoadingIndicator svg, +.DocSearch-MagnifierLabel svg { + height: 24px; + width: 24px; +} + +.DocSearch-Cancel { + display: none; +} + +/* Modal Dropdown */ + +.DocSearch-Dropdown { + max-height: calc( + var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - + var(--docsearch-spacing) - var(--docsearch-footer-height) + ); + min-height: var(--docsearch-spacing); + overflow-y: auto; /* firefox */ + overflow-y: overlay; + padding: 0 var(--docsearch-spacing); + scrollbar-color: var(--docsearch-muted-color) + var(--docsearch-modal-background); + scrollbar-width: thin; +} + +.DocSearch-Dropdown::-webkit-scrollbar { + width: 12px; +} + +.DocSearch-Dropdown::-webkit-scrollbar-track { + background: transparent; +} + +.DocSearch-Dropdown::-webkit-scrollbar-thumb { + background-color: var(--docsearch-muted-color); + border: 3px solid var(--docsearch-modal-background); + border-radius: 20px; +} + +.DocSearch-Dropdown ul { + list-style: none; + margin: 0; + padding: 0; +} + +.DocSearch-Label { + color: var(--docsearch-muted-color); + font-size: 0.75em; + line-height: 1.6em; +} + +.DocSearch-Help { + color: var(--docsearch-muted-color); + font-size: 0.9em; + margin: 0; + user-select: none; +} + +.DocSearch-Title { + font-size: 1.2em; +} + +.DocSearch-Logo a { + display: flex; +} + +.DocSearch-Logo svg { + color: var(--docsearch-logo-color); + margin-left: 8px; +} + +/* Hit */ + +.DocSearch-Hits:last-of-type { + margin-bottom: 24px; +} + +.DocSearch-Hits mark { + background: none; + color: var(--docsearch-highlight-color); +} + +.DocSearch-HitsFooter { + color: var(--docsearch-muted-color); + display: flex; + font-size: 0.85em; + justify-content: center; + margin-bottom: var(--docsearch-spacing); + padding: var(--docsearch-spacing); +} + +.DocSearch-HitsFooter a { + border-bottom: 1px solid; + color: inherit; +} + +.DocSearch-Hit { + border-radius: 4px; + display: flex; + padding-bottom: 4px; + position: relative; +} + +@media screen and (prefers-reduced-motion: reduce) { + .DocSearch-Hit--deleting { + transition: none; + } +} + +.DocSearch-Hit--deleting { + opacity: 0; + transition: all 250ms linear; +} + +@media screen and (prefers-reduced-motion: reduce) { + .DocSearch-Hit--favoriting { + transition: none; + } +} + +.DocSearch-Hit--favoriting { + transform: scale(0); + transform-origin: top center; + transition: all 250ms linear; + transition-delay: 250ms; +} + +.DocSearch-Hit a { + background: var(--docsearch-hit-background); + border-radius: 4px; + box-shadow: var(--docsearch-hit-shadow); + display: block; + padding-left: var(--docsearch-spacing); + width: 100%; +} + +.DocSearch-Hit-source { + background: var(--docsearch-modal-background); + color: var(--docsearch-highlight-color); + font-size: 0.85em; + font-weight: 600; + line-height: 32px; + margin: 0 -4px; + padding: 8px 4px 0; + position: sticky; + top: 0; + z-index: 10; +} + +.DocSearch-Hit-Tree { + color: var(--docsearch-muted-color); + height: var(--docsearch-hit-height); + opacity: 0.5; + stroke-width: var(--docsearch-icon-stroke-width); + width: 24px; +} + +.DocSearch-Hit[aria-selected='true'] a { + background-color: var(--docsearch-highlight-color); +} + +.DocSearch-Hit[aria-selected='true'] mark { + text-decoration: underline; +} + +.DocSearch-Hit-Container { + align-items: center; + color: var(--docsearch-hit-color); + display: flex; + flex-direction: row; + height: var(--docsearch-hit-height); + padding: 0 var(--docsearch-spacing) 0 0; +} + +.DocSearch-Hit-icon { + color: var(--docsearch-muted-color); + height: 20px; + stroke-width: var(--docsearch-icon-stroke-width); + width: 20px; +} + +.DocSearch-Hit-action { + align-items: center; + color: var(--docsearch-muted-color); + display: flex; + height: 22px; + stroke-width: var(--docsearch-icon-stroke-width); + width: 22px; +} + +.DocSearch-Hit-action svg { + display: block; + height: 18px; + width: 18px; +} + +.DocSearch-Hit-action + .DocSearch-Hit-action { + margin-left: 6px; +} + +.DocSearch-Hit-action-button { + appearance: none; + background: none; + border: 0; + border-radius: 50%; + color: inherit; + cursor: pointer; + padding: 2px; +} + +svg.DocSearch-Hit-Select-Icon { + display: none; +} + +.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-Select-Icon { + display: block; +} + +@media screen and (prefers-reduced-motion: reduce) { + .DocSearch-Hit-action-button:hover, + .DocSearch-Hit-action-button:focus { + background: rgba(0, 0, 0, 0.2); + transition: none; + } +} + +.DocSearch-Hit-action-button:hover, +.DocSearch-Hit-action-button:focus { + background: rgba(0, 0, 0, 0.2); + transition: background-color 0.1s ease-in; +} + +@media screen and (prefers-reduced-motion: reduce) { + .DocSearch-Hit-action-button:hover, + .DocSearch-Hit-action-button:focus { + transition: none; + } +} + +.DocSearch-Hit-action-button:hover path, +.DocSearch-Hit-action-button:focus path { + fill: #fff; +} + +.DocSearch-Hit-content-wrapper { + display: flex; + flex: 1 1 auto; + flex-direction: column; + font-weight: 500; + justify-content: center; + line-height: 1.2em; + margin: 0 8px; + overflow-x: hidden; + position: relative; + text-overflow: ellipsis; + white-space: nowrap; + width: 80%; +} + +.DocSearch-Hit-title { + font-size: 0.9em; +} + +.DocSearch-Hit-path { + color: var(--docsearch-muted-color); + font-size: 0.75em; +} + +.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-title, +.DocSearch-Hit[aria-selected='true'] mark, +.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-text, +.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-path, +.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-icon, +.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-action, +.DocSearch-Hit[aria-selected='true'] .DocSearch-Hit-Tree { + color: var(--docsearch-hit-active-color) !important; +} + +@media screen and (prefers-reduced-motion: reduce) { + .DocSearch-Hit-action-button:hover, + .DocSearch-Hit-action-button:focus { + background: rgba(0, 0, 0, 0.2); + transition: none; + } +} + +/* No Results - Start Screen - Error Screen */ + +.DocSearch-NoResults, +.DocSearch-StartScreen, +.DocSearch-ErrorScreen { + font-size: 0.9em; + margin: 0 auto; + padding: 36px 0; + text-align: center; + width: 80%; +} + +.DocSearch-Screen-Icon { + color: var(--docsearch-muted-color); + padding-bottom: 12px; +} + +.DocSearch-NoResults-Prefill-List { + display: inline-block; + padding-bottom: 24px; + text-align: left; +} + +.DocSearch-NoResults-Prefill-List ul { + display: inline-block; + padding: 8px 0 0; +} + +.DocSearch-NoResults-Prefill-List li { + list-style-position: inside; + list-style-type: '» '; +} + +.DocSearch-Prefill { + appearance: none; + background: none; + border: 0; + border-radius: 1em; + color: var(--docsearch-highlight-color); + cursor: pointer; + display: inline-block; + font-size: 1em; + font-weight: 700; + padding: 0; +} + +.DocSearch-Prefill:hover, +.DocSearch-Prefill:focus { + outline: none; + text-decoration: underline; +} + +/* Modal Footer */ + +.DocSearch-Footer { + align-items: center; + background: var(--docsearch-footer-background); + border-radius: 0 0 8px 8px; + box-shadow: var(--docsearch-footer-shadow); + display: flex; + flex-direction: row-reverse; + flex-shrink: 0; + height: var(--docsearch-footer-height); + justify-content: space-between; + padding: 0 var(--docsearch-spacing); + position: relative; + user-select: none; + width: 100%; + z-index: 300; +} + +.DocSearch-Commands { + color: var(--docsearch-muted-color); + display: flex; + list-style: none; + margin: 0; + padding: 0; +} + +.DocSearch-Commands li { + align-items: center; + display: flex; +} + +.DocSearch-Commands li:not(:last-of-type) { + margin-right: 0.8em; +} + +.DocSearch-Commands-Key { + align-items: center; + background: var(--docsearch-key-gradient); + border-radius: 2px; + box-shadow: var(--docsearch-key-shadow); + display: flex; + height: 18px; + justify-content: center; + margin-right: 0.4em; + padding-bottom: 2px; + width: 20px; +} + +/* Responsive */ +@media (max-width: 750px) { + :root { + --docsearch-spacing: 10px; + --docsearch-footer-height: 40px; + } + + .DocSearch-Dropdown { + height: 100%; + } + + .DocSearch-Container { + height: 100vh; + height: -webkit-fill-available; + position: absolute; + } + + .DocSearch-Footer { + border-radius: 0; + bottom: 0; + position: absolute; + } + + .DocSearch-Hit-content-wrapper { + display: flex; + position: relative; + width: 80%; + } + + .DocSearch-Modal { + border-radius: 0; + box-shadow: none; + height: 100vh; + height: -webkit-fill-available; + margin: 0; + max-width: 100%; + width: 100%; + } + + .DocSearch-Cancel { + appearance: none; + background: none; + border: 0; + color: var(--docsearch-highlight-color); + cursor: pointer; + display: inline-block; + flex: none; + font: inherit; + font-size: 1em; + font-weight: 500; + margin-left: var(--docsearch-spacing); + outline: none; + overflow: hidden; + padding: 0; + user-select: none; + white-space: nowrap; + } + + .DocSearch-Commands { + display: none; + } + + .DocSearch-Hit-Tree { + display: none; + } +} + +@keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +}