diff --git a/src/client/components/center/search/index.ts b/src/client/components/center/search/index.ts
new file mode 100644
index 0000000..3ed8704
--- /dev/null
+++ b/src/client/components/center/search/index.ts
@@ -0,0 +1,2 @@
+export * from "./search.service";
+export * from "./search";
diff --git a/src/client/components/center/search/search.service.ts b/src/client/components/center/search/search.service.ts
new file mode 100644
index 0000000..52606f2
--- /dev/null
+++ b/src/client/components/center/search/search.service.ts
@@ -0,0 +1,41 @@
+import { makeAutoObservable } from "mobx";
+
+import { CentralViewType } from "@/client/constants";
+import { ICentralPanelContentService } from "@/client/interface";
+import { DomainManager } from "@/domain";
+
+import { EntrySearchService } from "../../shared/entry-search-field";
+
+export class SearchService implements ICentralPanelContentService {
+ entrySearch: EntrySearchService;
+
+ constructor(domain: DomainManager) {
+ this.entrySearch = new EntrySearchService(domain);
+
+ makeAutoObservable(this, { entrySearch: false });
+ }
+
+ get key() {
+ return this.type;
+ }
+
+ get type() {
+ return CentralViewType.Search;
+ }
+
+ get details() {
+ return { type: this.type };
+ }
+
+ load() {
+ return;
+ }
+
+ activate() {
+ return;
+ }
+
+ cleanUp() {
+ return;
+ }
+}
diff --git a/src/client/components/center/search/search.tsx b/src/client/components/center/search/search.tsx
new file mode 100644
index 0000000..db517e1
--- /dev/null
+++ b/src/client/components/center/search/search.tsx
@@ -0,0 +1,24 @@
+import { Box, Title } from "@mantine/core";
+import { observer } from "mobx-react-lite";
+
+import { DIVIDER, SPACE } from "@/shared/common";
+
+import { SearchService } from "./search.service";
+import { EntrySearchField } from "../../shared/entry-search-field";
+
+interface SearchProps {
+ service: SearchService;
+}
+
+function renderSearch({ service }: SearchProps) {
+ return (
+
+ Search Results
+ {DIVIDER}
+ {SPACE}
+
+
+ );
+}
+
+export const Search = observer(renderSearch);
diff --git a/src/client/components/shared/entry-search-field/entry-search-field.service.ts b/src/client/components/shared/entry-search-field/entry-search-field.service.ts
index 20f3d22..a51375e 100644
--- a/src/client/components/shared/entry-search-field/entry-search-field.service.ts
+++ b/src/client/components/shared/entry-search-field/entry-search-field.service.ts
@@ -49,6 +49,10 @@ export class EntrySearchService {
});
}
+ get enabled() {
+ return this._domain.hasProject;
+ }
+
get searchQuery() {
return this._searchQuery;
}
diff --git a/src/client/components/shared/entry-search-field/entry-search-field.tsx b/src/client/components/shared/entry-search-field/entry-search-field.tsx
index c7ad7f1..9b4b434 100644
--- a/src/client/components/shared/entry-search-field/entry-search-field.tsx
+++ b/src/client/components/shared/entry-search-field/entry-search-field.tsx
@@ -13,6 +13,7 @@ interface EntrySearchProps {
function renderEntrySearchField({ service }: EntrySearchProps) {
return (
service.selectEntrySearchResult(value)}
getSearch={() => service.searchQuery}
onSearchChange={(value) => (service.searchQuery = value)}
diff --git a/src/client/constants/view.ts b/src/client/constants/view.ts
index 98501a2..4d3cc65 100644
--- a/src/client/constants/view.ts
+++ b/src/client/constants/view.ts
@@ -10,6 +10,7 @@ export enum ViewAction {
export enum CentralViewType {
Home = "HOME",
Settings = "SETTINGS",
+ Search = "SEARCH",
EntryEditor = "ENTRY_EDITOR",
}
diff --git a/src/shared/search-field/search-field.tsx b/src/shared/search-field/search-field.tsx
index 975b569..8769552 100644
--- a/src/shared/search-field/search-field.tsx
+++ b/src/shared/search-field/search-field.tsx
@@ -26,6 +26,7 @@ export interface SearchFieldProps extends ComboboxProps {
function renderSearchField({
placeholder = "Search",
+ disabled = false,
value,
getValue,
search,
@@ -72,6 +73,7 @@ function renderSearchField({
return (
{
onSearchChange?.(props.children?.toString() ?? "");
onValueChange?.(value);
@@ -81,6 +83,7 @@ function renderSearchField({
>
{