+
Queued requests will be automatically processed when you're back
online. You can remove individual requests or clear the entire
diff --git a/apps/web/src/components/Onboarding.tsx b/apps/web/src/components/Onboarding.tsx
index c49e8fe6b..09000464d 100644
--- a/apps/web/src/components/Onboarding.tsx
+++ b/apps/web/src/components/Onboarding.tsx
@@ -166,7 +166,7 @@ export function Onboarding({
{step.title}
-
+
{step.description}
diff --git a/apps/web/src/components/developer/SwaggerUI.tsx b/apps/web/src/components/developer/SwaggerUI.tsx
index 696c795a0..e66117b5e 100644
--- a/apps/web/src/components/developer/SwaggerUI.tsx
+++ b/apps/web/src/components/developer/SwaggerUI.tsx
@@ -149,7 +149,7 @@ export function SwaggerUIDoc({ specUrl, spec, useIframe = false }: SwaggerUIProp
Failed to Load API Documentation
-
+
{error}
diff --git a/apps/web/src/components/developer/modals/CreateAPIKeyModal.tsx b/apps/web/src/components/developer/modals/CreateAPIKeyModal.tsx
index 4d9cd4c49..b37289421 100644
--- a/apps/web/src/components/developer/modals/CreateAPIKeyModal.tsx
+++ b/apps/web/src/components/developer/modals/CreateAPIKeyModal.tsx
@@ -115,7 +115,7 @@ export const CreateAPIKeyModal: React.FC = ({
{step === 1 ? (
-
+
Key Name
= ({
-
+
Permissions (Scopes)
diff --git a/apps/web/src/components/notifications/NotificationBell.tsx b/apps/web/src/components/notifications/NotificationBell.tsx
index 814f78739..8b48fa20e 100644
--- a/apps/web/src/components/notifications/NotificationBell.tsx
+++ b/apps/web/src/components/notifications/NotificationBell.tsx
@@ -40,7 +40,7 @@ export const NotificationBell: React.FC = ({
setIsOpen(!isOpen)}
>
diff --git a/apps/web/src/components/pwa/PWAInstallBanner.tsx b/apps/web/src/components/pwa/PWAInstallBanner.tsx
index af702e58d..c999d9285 100644
--- a/apps/web/src/components/pwa/PWAInstallBanner.tsx
+++ b/apps/web/src/components/pwa/PWAInstallBanner.tsx
@@ -40,7 +40,7 @@ export function PWAInstallBanner() {
DISMISS
diff --git a/apps/web/src/components/theme/ThemeSwitcher.tsx b/apps/web/src/components/theme/ThemeSwitcher.tsx
index aae91bb85..f5a730395 100644
--- a/apps/web/src/components/theme/ThemeSwitcher.tsx
+++ b/apps/web/src/components/theme/ThemeSwitcher.tsx
@@ -48,7 +48,7 @@ export function ThemeSwitcher({
Color Theme
-
+
Choose your visual style
@@ -89,7 +89,7 @@ export function ThemeSwitcher({
{theme.name}
-
diff --git a/apps/web/src/features/chat/components/ChatInput.tsx b/apps/web/src/features/chat/components/ChatInput.tsx
index 230ba4bf7..215445c35 100644
--- a/apps/web/src/features/chat/components/ChatInput.tsx
+++ b/apps/web/src/features/chat/components/ChatInput.tsx
@@ -140,7 +140,7 @@ export const ChatInput: React.FC = () => {
{att.file_type.startsWith('image') ? (
) : (
-
+
)}
{att.file_name}
{
type="button"
variant="ghost"
size="icon"
- className="text-kodo-secondary hover:text-white hover:bg-white/5"
+ className="text-muted-foreground hover:text-white hover:bg-white/5"
onClick={() => fileInputRef.current?.click()}
>
@@ -172,7 +172,7 @@ export const ChatInput: React.FC = () => {
variant="ghost"
size="icon"
className={cn(
- 'text-kodo-secondary hover:text-white hover:bg-white/5',
+ 'text-muted-foreground hover:text-white hover:bg-white/5',
showEmojiPicker && 'text-kodo-steel bg-white/5',
)}
onClick={() => setShowEmojiPicker(!showEmojiPicker)}
@@ -214,7 +214,7 @@ export const ChatInput: React.FC = () => {
value={message}
onChange={(e) => setMessage(e.target.value)}
placeholder="Broadcast message..."
- className="w-full bg-white/5 border border-white/10 rounded-xl px-4 py-2.5 text-white placeholder:text-kodo-secondary/50 focus:outline-none focus:border-border/50 focus:ring-1 focus:ring-kodo-steel/50 transition-all font-mono text-sm"
+ className="w-full bg-white/5 border border-white/10 rounded-xl px-4 py-2.5 text-white placeholder:text-muted-foreground/50 focus:outline-none focus:border-border/50 focus:ring-1 focus:ring-kodo-steel/50 transition-all font-mono text-sm"
disabled={!currentConversationId || isUploading}
/>
{message.length === 0 && !isUploading && (
@@ -222,7 +222,7 @@ export const ChatInput: React.FC = () => {
type="button"
variant="ghost"
size="icon"
- className="absolute right-1 top-1/2 -translate-y-1/2 h-8 w-8 text-kodo-secondary/30 hover:text-white"
+ className="absolute right-1 top-1/2 -translate-y-1/2 h-8 w-8 text-muted-foreground/30 hover:text-white"
>
@@ -237,7 +237,7 @@ export const ChatInput: React.FC = () => {
'rounded-xl transition-all duration-[var(--duration-normal)]',
message.trim() || attachments.length > 0
? 'bg-kodo-cyan text-kodo-void hover:bg-kodo-cyan-dim shadow-neon-cyan'
- : 'bg-white/5 text-kodo-secondary hover:bg-white/10',
+ : 'bg-white/5 text-muted-foreground hover:bg-white/10',
)}
disabled={
!currentConversationId ||
diff --git a/apps/web/src/features/chat/components/ChatMessage.tsx b/apps/web/src/features/chat/components/ChatMessage.tsx
index ece71d1bc..ac4d56fbf 100644
--- a/apps/web/src/features/chat/components/ChatMessage.tsx
+++ b/apps/web/src/features/chat/components/ChatMessage.tsx
@@ -56,7 +56,7 @@ export const ChatMessageComponent: React.FC
= ({
// ...
{isMe ? 'You' : safeString(message.sender_username || 'Unknown_Signal')}
-
+
{new Date(message.created_at).toLocaleTimeString([], {
hour: '2-digit',
minute: '2-digit',
@@ -69,7 +69,7 @@ export const ChatMessageComponent: React.FC = ({
{isMe && (
setShowEmojiPicker(!showEmojiPicker)}
- className="opacity-0 group-hover/bubble:opacity-100 p-1.5 hover:bg-white/10 rounded-full transition-all text-kodo-secondary hover:text-white"
+ className="opacity-0 group-hover/bubble:opacity-100 p-1.5 hover:bg-white/10 rounded-full transition-all text-muted-foreground hover:text-white"
>
@@ -128,7 +128,7 @@ export const ChatMessageComponent: React.FC = ({
{!isMe && (
setShowEmojiPicker(!showEmojiPicker)}
- className="opacity-0 group-hover/bubble:opacity-100 p-1.5 hover:bg-white/10 rounded-full transition-all text-kodo-secondary hover:text-white"
+ className="opacity-0 group-hover/bubble:opacity-100 p-1.5 hover:bg-white/10 rounded-full transition-all text-muted-foreground hover:text-white"
>
@@ -179,7 +179,7 @@ export const ChatMessageComponent: React.FC = ({
'flex items-center gap-1 px-1.5 py-0.5 rounded-full text-xs border transition-all animate-scaleIn',
users.includes(user?.id || '')
? 'bg-kodo-cyan/20 border-kodo-cyan/40 text-kodo-cyan shadow-queue-item-current'
- : 'bg-white/5 border-white/10 text-kodo-secondary hover:bg-white/10 hover:border-white/20',
+ : 'bg-white/5 border-white/10 text-muted-foreground hover:bg-white/10 hover:border-white/20',
)}
>
{emoji}
@@ -191,7 +191,7 @@ export const ChatMessageComponent: React.FC = ({
{isMe && (
-
+
)}
diff --git a/apps/web/src/features/chat/components/ChatRoom.tsx b/apps/web/src/features/chat/components/ChatRoom.tsx
index 039a11364..c65b66e22 100644
--- a/apps/web/src/features/chat/components/ChatRoom.tsx
+++ b/apps/web/src/features/chat/components/ChatRoom.tsx
@@ -61,7 +61,7 @@ export const ChatRoom: React.FC
= ({ conversationId }) => {
if (!conversationId) {
return (
-
+
@@ -106,7 +106,7 @@ export const ChatRoom: React.FC
= ({ conversationId }) => {
variant="ghost"
size="sm"
onClick={() => setShowSearch(true)}
- className="text-kodo-secondary/50 hover:text-white hover:bg-white/5 bg-black/20 backdrop-blur-sm rounded-full h-8 px-4 border border-white/5"
+ className="text-muted-foreground/50 hover:text-white hover:bg-white/5 bg-black/20 backdrop-blur-sm rounded-full h-8 px-4 border border-white/5"
>
Search Log
@@ -124,7 +124,7 @@ export const ChatRoom: React.FC = ({ conversationId }) => {
Channel Established
-
+
Begin transmission on this frequency.
diff --git a/apps/web/src/features/chat/components/chat-sidebar/ConversationItem.tsx b/apps/web/src/features/chat/components/chat-sidebar/ConversationItem.tsx
index e202430a4..77af10f21 100644
--- a/apps/web/src/features/chat/components/chat-sidebar/ConversationItem.tsx
+++ b/apps/web/src/features/chat/components/chat-sidebar/ConversationItem.tsx
@@ -123,7 +123,7 @@ export function ConversationItem({
'w-8 h-8 rounded-lg flex items-center justify-center transition-colors shrink-0',
isSelected
? 'bg-kodo-cyan text-kodo-void'
- : 'bg-white/5 text-kodo-secondary group-hover:text-white',
+ : 'bg-white/5 text-muted-foreground group-hover:text-white',
)}
>
{conversation.type === 'direct' ? (
@@ -142,7 +142,7 @@ export function ConversationItem({
{safeString(conversation.name || `Channel ${conversation.id.substring(0, 4)}`)}
{conversation.type !== 'direct' && (
-
+
{safeString(conversation.type)}
)}
@@ -162,7 +162,7 @@ export function ConversationItem({
size="sm"
className={cn(
'h-6 w-6 p-0 opacity-0 group-hover:opacity-100 transition-opacity shrink-0',
- isSelected ? 'text-kodo-cyan hover:bg-kodo-cyan/20' : 'text-kodo-secondary hover:text-white',
+ isSelected ? 'text-kodo-cyan hover:bg-kodo-cyan/20' : 'text-muted-foreground hover:text-white',
)}
>