Skip to content

Commit 8c58619

Browse files
committed
docs: add docsearch
1 parent 5bf28a1 commit 8c58619

File tree

8 files changed

+149
-0
lines changed

8 files changed

+149
-0
lines changed

packages/docs/gatsby-browser.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import '@docsearch/css'
23
import DefaultLayout from './src/templates/DefaultLayout'
34
import './src/styles/styles.scss'
45

packages/docs/gatsby-ssr.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React from 'react'
2+
import '@docsearch/css'
23
import DefaultLayout from './src/templates/DefaultLayout'
34
import './src/styles/styles.scss'
45

packages/docs/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"@coreui/icons": "^3.0.0",
3030
"@coreui/icons-react": "^2.1.0",
3131
"@coreui/react-chartjs": "^2.1.2",
32+
"@docsearch/css": "^3.3.3",
3233
"@mdx-js/mdx": "^2.2.1",
3334
"@mdx-js/react": "^2.2.1",
3435
"@types/react-helmet": "^6.1.6",

packages/docs/src/components/Header.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ const Header: FC = () => {
2020
>
2121
<CIcon icon={cilMenu} size="lg" />
2222
</CHeaderToggler>
23+
<div className="docs-search" id="docsearch"></div>
2324
<CHeaderNav className="ms-auto">
2425
<CNavItem
2526
href="https://github.com/coreui/coreui-react/"

packages/docs/src/styles/_search.scss

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
// stylelint-disable selector-class-pattern
2+
3+
.DocSearch-Container {
4+
--docsearch-muted-color: #{$text-muted};
5+
--docsearch-hit-shadow: none;
6+
7+
z-index: 2000; // Make sure to be over all components showcased in the documentation
8+
cursor: auto; // Needed because of [role="button"] in Algolia search modal. Remove once https://github.com/algolia/docsearch/issues/1370 is tackled.
9+
10+
@include media-breakpoint-up(lg) {
11+
padding-top: 4rem;
12+
}
13+
}
14+
15+
.DocSearch-Button {
16+
min-width: 200px;
17+
min-height: 38px;
18+
font-family: $input-font-family;
19+
font-weight: $input-font-weight;
20+
line-height: $input-line-height;
21+
@include font-size($input-font-size);
22+
color: $input-color;
23+
background-color: $input-bg;
24+
background-clip: padding-box;
25+
border: $input-border-width solid $input-border-color;
26+
27+
// Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.
28+
@include border-radius($btn-border-radius);
29+
30+
@include box-shadow($input-box-shadow);
31+
@include transition($input-transition);
32+
33+
&:focus {
34+
color: $input-focus-color;
35+
background-color: $input-focus-bg;
36+
border-color: $input-focus-border-color;
37+
outline: 0;
38+
@if $enable-shadows {
39+
@include box-shadow($input-box-shadow, $input-focus-box-shadow);
40+
} @else {
41+
// Avoid using mixin so we can pass custom focus shadow properly
42+
box-shadow: $input-focus-box-shadow;
43+
}
44+
}
45+
46+
&:hover:not(:disabled):not([readonly])::file-selector-button {
47+
background-color: $form-file-button-hover-bg;
48+
}
49+
50+
.DocSearch-Search-Icon {
51+
opacity: .65;
52+
}
53+
}
54+
55+
56+
.DocSearch-Button-Keys {
57+
min-width: 0;
58+
padding: 0 .25rem;
59+
background: rgba($black, .125);
60+
@include border-radius(.25rem);
61+
}
62+
63+
.DocSearch-Button-Key {
64+
top: 0;
65+
width: auto;
66+
height: 1.5rem;
67+
padding: 0 .125rem;
68+
margin-right: 0;
69+
font-size: .875rem;
70+
background: none;
71+
box-shadow: none;
72+
}
73+
74+
.DocSearch-Commands-Key {
75+
padding-left: 1px;
76+
font-size: .875rem;
77+
background-color: rgba($black, .1);
78+
background-image: none;
79+
box-shadow: none;
80+
}
81+
82+
.DocSearch-Form {
83+
@include border-radius(var(--cui-border-radius));
84+
}
85+
86+
.DocSearch-Hits {
87+
mark {
88+
padding: 0;
89+
}
90+
}
91+
92+
.DocSearch-Hit {
93+
padding-bottom: 0;
94+
@include border-radius(0);
95+
96+
a {
97+
@include border-radius(0);
98+
border: solid var(--cui-border-color);
99+
border-width: 0 1px 1px;
100+
}
101+
102+
&:first-child a {
103+
@include border-top-radius(var(--cui-border-radius));
104+
border-top-width: 1px;
105+
}
106+
&:last-child a {
107+
@include border-bottom-radius(var(--cui-border-radius));
108+
}
109+
}
110+
111+
.DocSearch-Hit-icon {
112+
display: flex;
113+
align-items: center;
114+
}

packages/docs/src/styles/styles.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
@import "footer";
1111
@import "layout";
1212
@import "prism";
13+
@import "search";
1314
@import "sidebar";
1415
@import "table-api";
1516
@import "toc";

packages/docs/src/templates/DefaultLayout.tsx

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { CContainer } from '@coreui/react/src/'
44
import DocsLayout from './DocsLayout'
55

66
import { AppContext } from '../AppContext'
7+
import { Script } from 'gatsby'
8+
import { Helmet } from 'react-helmet'
79

810
interface DefaultLayoutProps {
911
children: any
@@ -42,6 +44,29 @@ const DefaultLayout: FC<DefaultLayoutProps> = ({ children, data, pageContext, pa
4244
</div>
4345
<Footer />
4446
</div>
47+
<Script
48+
src="https://cdn.jsdelivr.net/npm/@docsearch/js@3"
49+
onLoad={() => {
50+
const searchElement = document.getElementById('docsearch')
51+
52+
// @ts-expect-error global variable
53+
if (!window.docsearch || !searchElement) {
54+
return
55+
}
56+
57+
// @ts-expect-error global variable
58+
window.docsearch({
59+
appId: 'JIOZIZPLMM',
60+
apiKey: '6e3f7692d2589d042bb40426b75df1b7',
61+
indexName: 'coreui-react',
62+
container: searchElement,
63+
// Set debug to `true` if you want to inspect the dropdown
64+
debug: true,
65+
})
66+
}}
67+
/>
68+
69+
<script type="text/javascript"></script>
4570
</AppContext.Provider>
4671
)
4772
}

yarn.lock

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1101,6 +1101,11 @@
11011101
resolved "https://registry.yarnpkg.com/@coreui/icons/-/icons-3.0.0.tgz#e36ef6e10fdc61aaff22e4ab1f6e71775b26f365"
11021102
integrity sha512-t4hJilv5IFBvaHIIQeUoXctV5nJkW21PTIhgeGO80xS25Ii4kkXa2gzryj6v6OEPSDPnY2YWhYm39TBjbXt1Xw==
11031103

1104+
"@docsearch/css@^3.3.3":
1105+
version "3.3.3"
1106+
resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.3.3.tgz#f9346c9e24602218341f51b8ba91eb9109add434"
1107+
integrity sha512-6SCwI7P8ao+se1TUsdZ7B4XzL+gqeQZnBc+2EONZlcVa0dVrk0NjETxozFKgMv0eEGH8QzP1fkN+A1rH61l4eg==
1108+
11041109
"@eslint/eslintrc@^0.4.3":
11051110
version "0.4.3"
11061111
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"

0 commit comments

Comments
 (0)