diff --git a/components/search/forms/simple.jsx b/components/search/forms/simple.jsx
index 6088018d5..f10fe17b0 100644
--- a/components/search/forms/simple.jsx
+++ b/components/search/forms/simple.jsx
@@ -1,24 +1,60 @@
-import React from 'react'
-import { Button, InputGroup, InputGroupAddon, Input } from 'reactstrap'
+import React, { useRef } from 'react'
+import { Select } from '@oacore/design'
-const SearchField = ({
- size = '',
- id = 'search-form-field',
- label = 'Search in CORE',
- ...fieldProps
-}) => (
- <>
-
-
-
-
-
-
-
- >
-)
+import styles from './styles.module.css'
+
+const options = [
+ { id: 1, icon: '#magnify', value: 'Option A' },
+ { id: 2, icon: '#magnify', value: 'Option B' },
+ { id: 3, icon: '#magnify', value: 'Option C' },
+ { id: 4, icon: '#magnify', value: 'Option D' },
+ { id: 5, icon: '#magnify', value: 'Option E' },
+]
+
+const SearchAutocompletion = ({ formRef, ...passProps }) => {
+ const [suggestions, setSuggestions] = React.useState(options)
+ const [value, setValue] = React.useState('')
+
+ const handleOnChange = data => {
+ if (data.value === '') return
+ formRef.current.submit()
+ }
+
+ const handleOnInput = data => {
+ // if id doesn't exists it means user type own text
+ // and didn't use suggestion
+ if (!data.id) {
+ setSuggestions(
+ options.slice(0, Math.max(0, options.length - data.value.length))
+ )
+ }
+
+ setValue(data.value)
+ }
+
+ return (
+
+ )
+}
const SearchForm = ({
action,
@@ -26,10 +62,13 @@ const SearchForm = ({
onSubmit,
id = 'search-form',
...fieldProps
-}) => (
-
-)
+}) => {
+ const ref = useRef(null)
+ return (
+
+ )
+}
export default SearchForm
diff --git a/components/search/forms/styles.module.css b/components/search/forms/styles.module.css
new file mode 100644
index 000000000..e822c1242
--- /dev/null
+++ b/components/search/forms/styles.module.css
@@ -0,0 +1,46 @@
+.search-box {
+ --form-control-corner-radius: 0.3rem;
+ --form-control-color: var(--gray-500);
+ --form-label-color: var(--gray-500);
+ --select-option-color: var(--gray-700);
+ --select-option-icon-color: var(--black);
+
+ border-bottom: 1px solid transparent;
+}
+
+.search-box:focus-within,
+.search-box ul > * {
+ padding-left: 0.25rem;
+ padding-right: 0.25rem;
+}
+
+.search-box:focus-within {
+ --form-control-color: var(--primary);
+}
+
+.search-box:focus-within div:nth-child(2) {
+ border-bottom: 1px solid var(--primary);
+}
+
+.search-box:focus-within {
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.25);
+}
+
+.search-box:focus-within div:nth-child(2) > * {
+ border-color: transparent;
+}
+
+.search-box:focus-within ul {
+ color: var(--gray-500)
+}
+
+.search-box:focus-within ul > li:last-child {
+ position: relative;
+}
+.search-box:focus-within ul > li:last-child::after {
+ content: '';
+ left: 0.25rem;
+ right: 0.25rem;
+ position: absolute;
+ border-top: 1px solid var(--gray-300);
+}
diff --git a/design.config.js b/design.config.js
new file mode 100644
index 000000000..e83b2602a
--- /dev/null
+++ b/design.config.js
@@ -0,0 +1,26 @@
+const path = require('path')
+
+const icons = ['magnify']
+
+const iconsRoot = path.join(
+ path.dirname(require.resolve('@mdi/svg/package.json')),
+ './svg'
+)
+
+const config = {
+ icons: {
+ path: iconsRoot,
+ files: icons,
+ },
+
+ output: {
+ path: path.join(__dirname, 'public/design'),
+ publicPath: '/design',
+ icons: {
+ files: 'icons',
+ sprite: 'icons.svg',
+ },
+ },
+}
+
+module.exports = config
diff --git a/package.json b/package.json
index 44ec5c7a2..e648f449c 100644
--- a/package.json
+++ b/package.json
@@ -70,7 +70,7 @@
"test-staging": "blc https://${CORE_STAGING_AREA}core.ac.uk -ro --exclude='/browse' --exclude='/search' --exclude='/public'",
"test": "npm run test-dev",
"dev": "next",
- "build": "next build",
+ "build": "node ./node_modules/.bin/design build icons && next build",
"export": "next build && next export",
"start": "next start"
}
diff --git a/pages/index.jsx b/pages/index.jsx
index 5106ebeac..6464b4444 100644
--- a/pages/index.jsx
+++ b/pages/index.jsx
@@ -85,7 +85,9 @@ const IndexPage = () => (
{page.covid19Notice}