diff --git a/platforms/blabsy/public/assets/w3dslogo.svg b/platforms/blabsy/public/assets/w3dslogo.svg
new file mode 100644
index 00000000..fbb94553
--- /dev/null
+++ b/platforms/blabsy/public/assets/w3dslogo.svg
@@ -0,0 +1,5 @@
+
diff --git a/platforms/blabsy/src/components/layout/common-layout.tsx b/platforms/blabsy/src/components/layout/common-layout.tsx
index 277c2e2e..3e5aa24c 100644
--- a/platforms/blabsy/src/components/layout/common-layout.tsx
+++ b/platforms/blabsy/src/components/layout/common-layout.tsx
@@ -2,19 +2,79 @@ import { useRequireAuth } from '@lib/hooks/useRequireAuth';
import { Aside } from '@components/aside/aside';
import { Suggestions } from '@components/aside/suggestions';
import { Placeholder } from '@components/common/placeholder';
-import type { ReactNode } from 'react';
+import { type ReactNode, useState } from 'react';
+import { Modal } from '@components/modal/modal';
+import { Button } from '@components/ui/button';
+import { useAuth } from '@lib/context/auth-context';
export type LayoutProps = {
children: ReactNode;
};
export function ProtectedLayout({ children }: LayoutProps): JSX.Element {
- // const user = useRequireAuth();
- const user = true; // TODO: Change back to useRequireAuth; Doing for development purposes
+ const user = useRequireAuth();
+ const { signOut } = useAuth();
+ const [disclaimerAccepted, setDisclaimerAccepted] = useState(false);
if (!user) return ;
- return <>{children}>;
+ return (
+ <>
+ {children}
+ {!disclaimerAccepted ? (
+ signOut()}
+ className='max-w-lg mx-auto mt-24'
+ modalClassName='bg-black backdrop-blur-md p-6 rounded-lg flex flex-col gap-2'
+ >
+
+ Disclaimer from MetaState Foundation
+
+
⚠️ Please note:
+
+ Blabsy is a functional prototype, intended to
+ showcase interoperability and core concepts of
+ the W3DS ecosystem.
+
+
+ It is not a production-grade platform and may
+ lack full reliability, performance, and security
+ guarantees.
+
+
+ We strongly recommend that you avoid sharing{' '}
+ sensitive or private content, and kindly ask for
+ your understanding regarding any bugs, incomplete
+ features, or unexpected behaviours.
+
+
+ The app is still in development, so we kindly ask for
+ your understanding regarding any potential issues. If
+ you experience issues or have feedback, feel free to
+ contact us at:
+
+
+ info@metastate.foundation
+
+
+
+ ) : (
+ <>>
+ )}
+ >
+ );
}
export function HomeLayout({ children }: LayoutProps): JSX.Element {
diff --git a/platforms/blabsy/src/components/login/login-main.tsx b/platforms/blabsy/src/components/login/login-main.tsx
index 0bdf07c2..252ed2c6 100644
--- a/platforms/blabsy/src/components/login/login-main.tsx
+++ b/platforms/blabsy/src/components/login/login-main.tsx
@@ -3,6 +3,7 @@ import axios from 'axios';
import { useEffect, useState } from 'react';
import { useAuth } from '@lib/context/auth-context';
import { NextImage } from '@components/ui/next-image';
+import Image from 'next/image';
export function LoginMain(): JSX.Element {
const { signInWithCustomToken } = useAuth();
@@ -76,9 +77,23 @@ export function LoginMain(): JSX.Element {
{qr && }
+
+
+
-
-
+
+
+ You are entering Blabsy - a social network built on the
+ Web 3.0 Data Space (W3DS) architecture. This system is
+ designed around the principle of data-platform
+ separation, where all your personal content is stored in
+ your own sovereign eVault, not on centralised servers.
+
diff --git a/platforms/blabsy/src/lib/context/auth-context.tsx b/platforms/blabsy/src/lib/context/auth-context.tsx
index 67b996a1..1b72fd9e 100644
--- a/platforms/blabsy/src/lib/context/auth-context.tsx
+++ b/platforms/blabsy/src/lib/context/auth-context.tsx
@@ -169,7 +169,6 @@ export function AuthContextProvider({
export function useAuth(): AuthContext {
const context = useContext(AuthContext);
-
if (!context)
throw new Error('useAuth must be used within an AuthContextProvider');
diff --git a/platforms/pictique/package.json b/platforms/pictique/package.json
index 0cbc52af..69877e8d 100644
--- a/platforms/pictique/package.json
+++ b/platforms/pictique/package.json
@@ -56,6 +56,7 @@
"axios": "^1.6.7",
"moment": "^2.30.1",
"svelte-qrcode": "^1.0.1",
+ "svelte-qrcode-action": "^1.0.2",
"tailwind-merge": "^3.0.2"
}
}
diff --git a/platforms/pictique/src/declaration.d.ts b/platforms/pictique/src/declaration.d.ts
index 195e8086..356f352c 100644
--- a/platforms/pictique/src/declaration.d.ts
+++ b/platforms/pictique/src/declaration.d.ts
@@ -1,4 +1,7 @@
-declare module 'svelte-qrcode' {
- import { SvelteComponentTyped } from 'svelte';
- export default class QRCode extends SvelteComponentTyped<{ value: string; size?: number }> {}
+declare module "svelte-qrcode" {
+ import { SvelteComponentTyped } from "svelte";
+ export default class QRCode extends SvelteComponentTyped<{
+ value: string;
+ size?: number;
+ }> {}
}
diff --git a/platforms/pictique/src/lib/icons/W3dslogo.svelte b/platforms/pictique/src/lib/icons/W3dslogo.svelte
new file mode 100644
index 00000000..e2de2f25
--- /dev/null
+++ b/platforms/pictique/src/lib/icons/W3dslogo.svelte
@@ -0,0 +1,21 @@
+
diff --git a/platforms/pictique/src/lib/icons/index.ts b/platforms/pictique/src/lib/icons/index.ts
index 4e216554..c3a8328d 100644
--- a/platforms/pictique/src/lib/icons/index.ts
+++ b/platforms/pictique/src/lib/icons/index.ts
@@ -1,12 +1,13 @@
-export { default as Icons } from './Icons.svelte';
-export { default as Like } from './Like.svelte';
-export { default as Refresh } from './Refresh.svelte';
-export { default as CommentIcon } from './CommentIcon.svelte';
-export { default as VerticalDots } from './VerticalDots.svelte';
-export { default as Home } from './Home.svelte';
-export { default as Flash } from './Flash.svelte';
-export { default as CommentsTwo } from './CommentsTwo.svelte';
-export { default as Search } from './Search.svelte';
-export { default as Camera } from './Camera.svelte';
-export { default as Settings } from './Settings.svelte';
-export { default as Cross } from './Cross.svelte';
+export { default as Icons } from "./Icons.svelte";
+export { default as Like } from "./Like.svelte";
+export { default as Refresh } from "./Refresh.svelte";
+export { default as CommentIcon } from "./CommentIcon.svelte";
+export { default as VerticalDots } from "./VerticalDots.svelte";
+export { default as Home } from "./Home.svelte";
+export { default as Flash } from "./Flash.svelte";
+export { default as CommentsTwo } from "./CommentsTwo.svelte";
+export { default as Search } from "./Search.svelte";
+export { default as Camera } from "./Camera.svelte";
+export { default as Settings } from "./Settings.svelte";
+export { default as Cross } from "./Cross.svelte";
+export { default as W3dslogo } from "./W3dslogo.svelte";
diff --git a/platforms/pictique/src/lib/stores/disclaimer.ts b/platforms/pictique/src/lib/stores/disclaimer.ts
new file mode 100644
index 00000000..b5e71079
--- /dev/null
+++ b/platforms/pictique/src/lib/stores/disclaimer.ts
@@ -0,0 +1,5 @@
+import { writable } from "svelte/store";
+
+export const isDisclaimerModalOpen = writable(true);
+
+export const closeDisclaimerModal = () => isDisclaimerModalOpen.set(false);
diff --git a/platforms/pictique/src/routes/(auth)/auth/+page.svelte b/platforms/pictique/src/routes/(auth)/auth/+page.svelte
index 5459c2b8..086863af 100644
--- a/platforms/pictique/src/routes/(auth)/auth/+page.svelte
+++ b/platforms/pictique/src/routes/(auth)/auth/+page.svelte
@@ -1,9 +1,11 @@