+ );
+};
diff --git a/packages/core/frontend/sirius-components-omnibox/src/Omnibox.types.ts b/packages/core/frontend/sirius-components-omnibox/src/Omnibox.types.ts
new file mode 100644
index 0000000000..e77d74bb49
--- /dev/null
+++ b/packages/core/frontend/sirius-components-omnibox/src/Omnibox.types.ts
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Obeo.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+
+export interface OmniboxProps {
+ initialContextEntries: OmniboxContextEntry[];
+ open: boolean;
+ onClose: () => void;
+}
+
+export interface OmniboxState {
+ contextEntries: OmniboxContextEntry[];
+ query: string;
+ actions: OmniboxAction[];
+}
+
+export interface OmniboxContextEntry {
+ id: string;
+ label: string;
+ kind: OmniboxContextKind;
+}
+
+export type OmniboxContextKind = 'EditingContext';
+
+export interface OmniboxAction {
+ id: string;
+ icon: JSX.Element;
+ label: string;
+ kind: string;
+}
diff --git a/packages/core/frontend/sirius-components-omnibox/src/OmniboxButton.tsx b/packages/core/frontend/sirius-components-omnibox/src/OmniboxButton.tsx
new file mode 100644
index 0000000000..e8dfb9480d
--- /dev/null
+++ b/packages/core/frontend/sirius-components-omnibox/src/OmniboxButton.tsx
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2024 Obeo.
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+
+import ChevronRightIcon from '@mui/icons-material/ChevronRight';
+import Button from '@mui/material/Button';
+import { useContext } from 'react';
+import { makeStyles } from 'tss-react/mui';
+import { OmniboxButtonProps } from './OmniboxButton.types';
+import { OmniboxContext } from './OmniboxContext';
+import { OmniboxContextValue } from './OmniboxContext.types';
+
+const useOmniboxButtonStyles = makeStyles()((theme) => ({
+ omniboxButton: {
+ color: 'inherit',
+ border: `1px solid ${theme.palette.background.paper}`,
+ },
+ placeholder: {
+ verticalAlign: 'middle',
+ lineHeight: '16px',
+ },
+ omniboxField: {
+ display: 'flex',
+ flexDirection: 'row',
+ alignItems: 'center',
+ border: `1px solid ${theme.palette.background.paper}`,
+ borderRadius: '3px',
+ marginLeft: theme.spacing(4),
+ fontSize: '0.75rem',
+ fontWeight: 700,
+ lineHeight: '20px',
+ padding: '0px 4px',
+ fontFamily: 'sans-serif',
+ opacity: 0.7,
+ },
+}));
+
+export const OmniboxButton = ({ size = 'small' }: OmniboxButtonProps) => {
+ const { classes } = useOmniboxButtonStyles();
+
+ const { openOmnibox } = useContext