diff --git a/src/events/AdminEvents.tsx b/src/events/AdminEvents.tsx
new file mode 100644
index 0000000000..457d90dd06
--- /dev/null
+++ b/src/events/AdminEvents.tsx
@@ -0,0 +1,147 @@
+import React, { ReactNode, useContext, useState } from "react";
+import { useTranslation } from "react-i18next";
+import {
+ Button,
+ Modal,
+ ModalVariant,
+ ToolbarItem,
+} from "@patternfly/react-core";
+import moment from "moment";
+
+import { useAdminClient } from "../context/auth/AdminClient";
+import { DataList } from "../components/table-toolbar/DataList";
+import { RealmContext } from "../context/realm-context/RealmContext";
+import {
+ Table,
+ TableBody,
+ TableHeader,
+ TableVariant,
+} from "@patternfly/react-table";
+import AdminEventRepresentation from "keycloak-admin/lib/defs/adminEventRepresentation";
+import { ListEmptyState } from "../components/list-empty-state/ListEmptyState";
+
+type DisplayDialogProps = {
+ titleKey: string;
+ onClose: () => void;
+ children: ReactNode;
+};
+
+const DisplayDialog = ({ titleKey, onClose, children }: DisplayDialogProps) => {
+ const { t } = useTranslation("events");
+ return (
+
+ {children}
+
+ );
+};
+
+export const AdminEvents = () => {
+ const { t } = useTranslation("events");
+ const adminClient = useAdminClient();
+ const { realm } = useContext(RealmContext);
+
+ const [key, setKey] = useState("");
+ const refresh = () => setKey(`${new Date().getTime()}`);
+
+ const [authEvent, setAuthEvent] = useState();
+ const [representationEvent, setRepresentationEvent] = useState<
+ AdminEventRepresentation
+ >();
+
+ const loader = async (first?: number, max?: number, search?: string) => {
+ const params = {
+ first: first!,
+ max: max!,
+ realm,
+ };
+ if (search) {
+ console.log("how to search?", search);
+ }
+ return await adminClient.realms.findAdminEvents({ ...params });
+ };
+
+ return (
+ <>
+ {authEvent && (
+ setAuthEvent(undefined)}>
+
+
+ )}
+ {representationEvent && (
+ setRepresentationEvent(undefined)}
+ >
+ some json from the changed values
+
+ )}
+