-
+
- {/* Compose */}
+ {/* Compose: Technical Input Field */}
-
+
setComment(e.target.value)}
- placeholder="Add a comment..."
- className="flex-1 px-3 py-2 rounded-md text-sm outline-none focus:ring-1 focus:ring-teal-500/50 transition-all"
- style={{
- backgroundColor: 'var(--color-bg-input)',
- color: 'var(--color-text-primary)',
- border: '1px solid rgba(255, 255, 255, 0.1)',
- }}
+ placeholder="Transmit message..."
+ className="flex-1 bg-transparent px-3 py-2 text-sm text-white placeholder:text-text-muted/30 outline-none"
onKeyDown={(e) => {
if (e.key === 'Enter' && comment.trim()) {
setComment('');
@@ -108,16 +102,20 @@ export function ThreadDrawer({ isOpen, onClose, title, id, items = SAMPLE_ITEMS,
}}
/>
+
+
Encrypted Channel_Active
+
+
);
diff --git a/src/components/social/social-page.tsx b/src/components/social/social-page.tsx
index 463fb28..8de8755 100644
--- a/src/components/social/social-page.tsx
+++ b/src/components/social/social-page.tsx
@@ -4,6 +4,7 @@ import { useMemo } from 'react';
import type { BeadIssue } from '../../lib/types';
import { buildSocialCards } from '../../lib/social-cards';
import { SocialCard } from './social-card';
+import { cn } from '@/lib/utils';
interface SocialPageProps {
issues: BeadIssue[];
@@ -13,44 +14,84 @@ interface SocialPageProps {
export function SocialPage({ issues, selectedId, onSelect }: SocialPageProps) {
const cards = useMemo(() => buildSocialCards(issues), [issues]);
+
+ const selectedTask = useMemo(() =>
+ cards.find(c => c.id === selectedId) || null,
+ [cards, selectedId]);
+
+ const otherCards = useMemo(() =>
+ cards.filter(c => c.id !== selectedId),
+ [cards, selectedId]);
return (
-
- {/* Top: Card Stream (Restricted Height) */}
-
-
-
- {cards.map((card) => (
-
onSelect(card.id)}
- />
- ))}
- {cards.length === 0 && (
-
-
ðŸ“
-
No active tasks found in stream.
+
+ {/* Background Atmosphere */}
+
+
+
+
+
+ {/* STAGE: Featured / Selected Task (Media Player "Now Playing") */}
+
+ {selectedTask ? (
+
+ ) : (
+
+ {/* Holographic Ring Effect */}
+
+
+
+
+
+
Initialize Focus
+
STANDBY_MODE // AWAITING_INPUT
+
)}
-
-
-
+
- {/* Bottom: Conversation Deck (Fills remaining space) */}
-
- {/* Placeholder for Chat Interface */}
-
-
-
Conversation Deck
-
Select a task above to open its secure communication channel and activity log.
+ {/* LIBRARY: The Feed (Masonry Grid) */}
+
+
+
Module Library
+
{otherCards.length} Units Available
+
+
+
+ {otherCards.map((card) => (
+ onSelect(card.id)}
+ className="hover:scale-[1.02] active:scale-[0.98]"
+ />
+ ))}
+
+
);
-}
+}
\ No newline at end of file
diff --git a/src/hooks/use-url-state.ts b/src/hooks/use-url-state.ts
index 3e9a74c..6e4736e 100644
--- a/src/hooks/use-url-state.ts
+++ b/src/hooks/use-url-state.ts
@@ -27,7 +27,7 @@ export interface UrlState {
}
const DEFAULT_VIEW: ViewType = 'social';
-const DEFAULT_PANEL: PanelState = 'closed';
+const DEFAULT_PANEL: PanelState = 'open';
const DEFAULT_DRAWER: DrawerState = 'closed';
const DEFAULT_GRAPH_TAB: GraphTabType = 'flow';