diff --git a/src/app/application-layout.tsx b/src/app/application-layout.tsx
index 5f920bd..e278dd9 100644
--- a/src/app/application-layout.tsx
+++ b/src/app/application-layout.tsx
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2025 by Ideal Labs, LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
'use client'
import { Avatar } from '@/components/avatar'
import { BlockHeaders } from '@/components/etf/latestBlocks'
diff --git a/src/app/client-layout.tsx b/src/app/client-layout.tsx
new file mode 100644
index 0000000..8521b70
--- /dev/null
+++ b/src/app/client-layout.tsx
@@ -0,0 +1,26 @@
+'use client';
+
+import '@/styles/tailwind.css';
+import { Inter } from 'next/font/google';
+import { ConnectedWalletProvider } from '@/components/etf/connectedWalletContext';
+import { PolkadotProvider } from '@/contexts/PolkadotContext';
+import { ApplicationLayout } from './application-layout';
+import { DIProvider } from '@/components/providers/di-provider';
+
+const inter = Inter({ subsets: ['latin'] });
+
+export function ClientLayout({ children }: { children: React.ReactNode }) {
+ return (
+
+
+
+
+
+ {children}
+
+
+
+
+
+ );
+}
diff --git a/src/app/compose/[...id]/page.tsx b/src/app/compose/[...id]/page.tsx
index 19ba398..d4926de 100644
--- a/src/app/compose/[...id]/page.tsx
+++ b/src/app/compose/[...id]/page.tsx
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2025 by Ideal Labs, LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
'use client'
import { Badge } from '@/components/badge'
@@ -87,4 +103,4 @@ export default function ExecutedTransaction({ params }: { readonly params: { rea
:
Loading...
);
-}
\ No newline at end of file
+}
diff --git a/src/app/compose/page.tsx b/src/app/compose/page.tsx
index f62e5d9..54226ad 100644
--- a/src/app/compose/page.tsx
+++ b/src/app/compose/page.tsx
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2025 by Ideal Labs, LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
'use client'
import { Badge } from '@/components/badge'
@@ -13,7 +29,7 @@ import { NUMBER_BLOCKS_EXECUTED, useConnectedWallet } from '@/components/etf/con
import { ConnectWallet } from '@/components/etf/connectWallet'
import { useState } from 'react'
import { ExclamationTriangleIcon, XCircleIcon } from '@heroicons/react/20/solid'
-import { explorerClient } from '../explorerClient'
+import { explorerClient } from '@/lib/explorer-client';
interface LatestError {
index: number;
diff --git a/src/app/compose/schedule/page.tsx b/src/app/compose/schedule/page.tsx
index 53196fd..603886e 100644
--- a/src/app/compose/schedule/page.tsx
+++ b/src/app/compose/schedule/page.tsx
@@ -1,3 +1,19 @@
+/*
+ * Copyright 2025 by Ideal Labs, LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
'use client'
import { Button } from '@/components/button'
@@ -15,7 +31,7 @@ import { useState } from 'react'
import { DelayedTransactionDetails } from '@/domain/DelayedTransactionDetails'
import { XCircleIcon } from '@heroicons/react/20/solid'
import { useRouter } from 'next/navigation'
-import { explorerClient } from '@/app/explorerClient'
+import { explorerClient } from '@/lib/explorer-client'
const FUTURE_BLOCK_DEFAULT_START: number = 100;
diff --git a/src/app/explorerClient.ts b/src/app/explorerClient.ts
deleted file mode 100644
index 69ea5f4..0000000
--- a/src/app/explorerClient.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import "reflect-metadata";
-import { ExplorerService } from "@/services/ExplorerService";
-import type { IExplorerService } from "@/services/IExplorerService";
-import { container, delay, inject, injectable, registry } from "tsyringe";
-
-@injectable()
-@registry([
- {
- token: "ExplorerServiceImplementation",
- useToken: delay(() => ExplorerService)
- }
-])
-class ExplorerClient {
- constructor(@inject("ExplorerServiceImplementation") public explorerServiceInstance: IExplorerService
- ) { }
-}
-
-export const explorerClient: IExplorerService = container.resolve(ExplorerClient).explorerServiceInstance;
\ No newline at end of file
diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 3dff73d..ee8befd 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -1,7 +1,23 @@
+/*
+ * Copyright 2025 by Ideal Labs, LLC
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
import '@/styles/tailwind.css'
import type { Metadata } from 'next'
import type React from 'react'
-import { ApplicationLayout } from './application-layout'
+import { ClientLayout } from './client-layout'
export const metadata: Metadata = {
title: {
@@ -23,9 +39,7 @@ export default async function RootLayout({ children }: { children: React.ReactNo
-
- {children}
-
+ {children}