diff --git a/frontend/src/lib/components/traits/WebViewerTrait.svelte b/frontend/src/lib/components/traits/WebViewerTrait.svelte
new file mode 100644
index 0000000..6bad73b
--- /dev/null
+++ b/frontend/src/lib/components/traits/WebViewerTrait.svelte
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {#each bookmarks as bm (bm.url)}
+
+ {/each}
+
+
+
+ {#if url}
+
+ {:else}
+
+
Skriv inn en URL eller velg et bokmerke
+
+ {/if}
+
+
+
diff --git a/frontend/src/lib/workspace/types.ts b/frontend/src/lib/workspace/types.ts
index 6f0a34b..c17a959 100644
--- a/frontend/src/lib/workspace/types.ts
+++ b/frontend/src/lib/workspace/types.ts
@@ -58,6 +58,7 @@ export const TRAIT_PANEL_INFO: Record = {
mindmap: { title: 'Tankekart', icon: '🧠', defaultWidth: 600, defaultHeight: 500 },
ai: { title: 'AI-verktøy', icon: '🤖', defaultWidth: 420, defaultHeight: 500 },
node_explorer: { title: 'Nodeutforsker', icon: '🔍', defaultWidth: 600, defaultHeight: 500 },
+ web: { title: 'Nettleser', icon: '🌐', defaultWidth: 700, defaultHeight: 500 },
usage: { title: 'Ressursforbruk', icon: '📊', defaultWidth: 380, defaultHeight: 350 },
storyboard: { title: 'Storyboard', icon: '🎬', defaultWidth: 500, defaultHeight: 450 },
};
diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte
index bde329a..e0f4972 100644
--- a/frontend/src/routes/+page.svelte
+++ b/frontend/src/routes/+page.svelte
@@ -43,6 +43,7 @@
import AiToolPanel from '$lib/components/AiToolPanel.svelte';
import NodeUsage from '$lib/components/NodeUsage.svelte';
import NodeExplorerTrait from '$lib/components/traits/NodeExplorerTrait.svelte';
+ import WebViewerTrait from '$lib/components/traits/WebViewerTrait.svelte';
import { createBlockReceiver, executeTransfer, resolveTransferMode, type DragPayload } from '$lib/transfer';
import type { BlockReceiver } from '$lib/components/blockshell/types';
@@ -308,7 +309,7 @@
const knownTraits = new Set([
'editor', 'chat', 'kanban', 'podcast', 'publishing',
'rss', 'calendar', 'recording', 'transcription', 'studio', 'mixer', 'mindmap',
- 'ai', 'usage', 'node_explorer'
+ 'ai', 'usage', 'node_explorer', 'web'
]);
// =========================================================================
@@ -403,6 +404,7 @@
{#each [
['node_explorer', '🔍', 'Nodeutforsker'],
+ ['web', '🌐', 'Nettleser'],
['usage', '📊', 'Forbruk'],
['ai', '🤖', 'AI-verktøy'],
] as [key, icon, label] (key)}
@@ -486,6 +488,8 @@
{/if}
{:else if panel.trait === 'node_explorer'}
+ {:else if panel.trait === 'web'}
+
{/if}
{:else}
@@ -554,6 +558,8 @@
{/if}
{:else if trait === 'node_explorer'}
+ {:else if trait === 'web'}
+
{/if}
{:else}