@auxiora/dashboard 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/LICENSE +191 -0
  2. package/dist/auth.d.ts +13 -0
  3. package/dist/auth.d.ts.map +1 -0
  4. package/dist/auth.js +69 -0
  5. package/dist/auth.js.map +1 -0
  6. package/dist/cloud-types.d.ts +71 -0
  7. package/dist/cloud-types.d.ts.map +1 -0
  8. package/dist/cloud-types.js +2 -0
  9. package/dist/cloud-types.js.map +1 -0
  10. package/dist/index.d.ts +6 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +4 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/router.d.ts +13 -0
  15. package/dist/router.d.ts.map +1 -0
  16. package/dist/router.js +2250 -0
  17. package/dist/router.js.map +1 -0
  18. package/dist/types.d.ts +314 -0
  19. package/dist/types.d.ts.map +1 -0
  20. package/dist/types.js +7 -0
  21. package/dist/types.js.map +1 -0
  22. package/dist-ui/assets/index-BfY0i5jw.css +1 -0
  23. package/dist-ui/assets/index-CXpk9mvw.js +60 -0
  24. package/dist-ui/icon.svg +59 -0
  25. package/dist-ui/index.html +20 -0
  26. package/package.json +32 -0
  27. package/src/auth.ts +83 -0
  28. package/src/cloud-types.ts +63 -0
  29. package/src/index.ts +5 -0
  30. package/src/router.ts +2494 -0
  31. package/src/types.ts +269 -0
  32. package/tests/auth.test.ts +51 -0
  33. package/tests/cloud-router.test.ts +249 -0
  34. package/tests/desktop-router.test.ts +151 -0
  35. package/tests/router.test.ts +388 -0
  36. package/tests/trust-router.test.ts +170 -0
  37. package/tsconfig.json +12 -0
  38. package/tsconfig.tsbuildinfo +1 -0
  39. package/ui/index.html +19 -0
  40. package/ui/node_modules/.bin/browserslist +17 -0
  41. package/ui/node_modules/.bin/tsc +17 -0
  42. package/ui/node_modules/.bin/tsserver +17 -0
  43. package/ui/node_modules/.bin/vite +17 -0
  44. package/ui/package.json +23 -0
  45. package/ui/public/icon.svg +59 -0
  46. package/ui/src/App.tsx +63 -0
  47. package/ui/src/api.ts +238 -0
  48. package/ui/src/components/ActivityFeed.tsx +123 -0
  49. package/ui/src/components/BehaviorHealth.tsx +105 -0
  50. package/ui/src/components/DataTable.tsx +39 -0
  51. package/ui/src/components/Layout.tsx +160 -0
  52. package/ui/src/components/PasswordStrength.tsx +31 -0
  53. package/ui/src/components/SetupProgress.tsx +26 -0
  54. package/ui/src/components/StatusBadge.tsx +12 -0
  55. package/ui/src/components/ThemeSelector.tsx +39 -0
  56. package/ui/src/contexts/ThemeContext.tsx +58 -0
  57. package/ui/src/hooks/useApi.ts +19 -0
  58. package/ui/src/hooks/usePolling.ts +8 -0
  59. package/ui/src/main.tsx +16 -0
  60. package/ui/src/pages/AuditLog.tsx +36 -0
  61. package/ui/src/pages/Behaviors.tsx +426 -0
  62. package/ui/src/pages/Chat.tsx +688 -0
  63. package/ui/src/pages/Login.tsx +64 -0
  64. package/ui/src/pages/Overview.tsx +56 -0
  65. package/ui/src/pages/Sessions.tsx +26 -0
  66. package/ui/src/pages/SettingsAmbient.tsx +185 -0
  67. package/ui/src/pages/SettingsConnections.tsx +201 -0
  68. package/ui/src/pages/SettingsNotifications.tsx +241 -0
  69. package/ui/src/pages/SetupAppearance.tsx +45 -0
  70. package/ui/src/pages/SetupChannels.tsx +143 -0
  71. package/ui/src/pages/SetupComplete.tsx +31 -0
  72. package/ui/src/pages/SetupConnections.tsx +80 -0
  73. package/ui/src/pages/SetupDashboardPassword.tsx +50 -0
  74. package/ui/src/pages/SetupIdentity.tsx +68 -0
  75. package/ui/src/pages/SetupPersonality.tsx +78 -0
  76. package/ui/src/pages/SetupProvider.tsx +65 -0
  77. package/ui/src/pages/SetupVault.tsx +50 -0
  78. package/ui/src/pages/SetupWelcome.tsx +19 -0
  79. package/ui/src/pages/UnlockVault.tsx +56 -0
  80. package/ui/src/pages/Webhooks.tsx +158 -0
  81. package/ui/src/pages/settings/Appearance.tsx +63 -0
  82. package/ui/src/pages/settings/Channels.tsx +138 -0
  83. package/ui/src/pages/settings/Identity.tsx +61 -0
  84. package/ui/src/pages/settings/Personality.tsx +54 -0
  85. package/ui/src/pages/settings/PersonalityEditor.tsx +577 -0
  86. package/ui/src/pages/settings/Provider.tsx +537 -0
  87. package/ui/src/pages/settings/Security.tsx +111 -0
  88. package/ui/src/styles/global.css +2308 -0
  89. package/ui/src/styles/themes/index.css +7 -0
  90. package/ui/src/styles/themes/monolith.css +125 -0
  91. package/ui/src/styles/themes/nebula.css +90 -0
  92. package/ui/src/styles/themes/neon.css +149 -0
  93. package/ui/src/styles/themes/polar.css +151 -0
  94. package/ui/src/styles/themes/signal.css +163 -0
  95. package/ui/src/styles/themes/terra.css +146 -0
  96. package/ui/tsconfig.json +14 -0
  97. package/ui/vite.config.ts +20 -0
@@ -0,0 +1,7 @@
1
+ /* Theme imports — all themes loaded, activated via [data-theme] on <html> */
2
+ @import './nebula.css';
3
+ @import './monolith.css';
4
+ @import './signal.css';
5
+ @import './polar.css';
6
+ @import './neon.css';
7
+ @import './terra.css';
@@ -0,0 +1,125 @@
1
+ /* monolith.css — Cinematic Ultra-Minimal */
2
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;500;600;700&display=swap');
3
+
4
+ [data-theme="monolith"] {
5
+ --bg-primary: #000000;
6
+ --bg-secondary: #000000;
7
+ --bg-card: #0a0a0a;
8
+ --bg-hover: #111111;
9
+ --text-primary: #ffffff;
10
+ --text-secondary: #404040;
11
+ --accent: #7c3aed;
12
+ --accent-hover: #6d28d9;
13
+ --accent-glow: rgba(124, 58, 237, 0.08);
14
+ --accent-subtle: rgba(124, 58, 237, 0.04);
15
+ --danger: #ef4444;
16
+ --danger-hover: #dc2626;
17
+ --success: #ffffff;
18
+ --warning: #a3a3a3;
19
+ --border: #1a1a1a;
20
+ --border-strong: #222222;
21
+ --radius: 4px;
22
+ --radius-lg: 6px;
23
+ --font-display: 'Inter', sans-serif;
24
+ --font-body: 'Inter', sans-serif;
25
+ --font-mono: 'Inter', sans-serif;
26
+ }
27
+
28
+ /* Monolith-specific: pure black body */
29
+ [data-theme="monolith"] body {
30
+ background: #000000;
31
+ }
32
+
33
+ /* Monolith-specific: ultra-light stat numbers */
34
+ [data-theme="monolith"] .stat-value,
35
+ [data-theme="monolith"] .overview-stat {
36
+ font-weight: 200;
37
+ }
38
+
39
+ /* Monolith-specific: minimal nav — no sidebar border */
40
+ [data-theme="monolith"] .sidebar {
41
+ border-right: none;
42
+ background: #000000;
43
+ }
44
+
45
+ /* Monolith-specific: no card backgrounds, hairline border-bottom */
46
+ [data-theme="monolith"] .status-card {
47
+ background: transparent;
48
+ border: none;
49
+ border-bottom: 1px solid #111111;
50
+ border-radius: 0;
51
+ }
52
+
53
+ /* Monolith-specific: card hover */
54
+ [data-theme="monolith"] .card {
55
+ background: #0a0a0a;
56
+ border: 1px solid #111111;
57
+ }
58
+
59
+ /* Monolith-specific: hairline nav group labels */
60
+ [data-theme="monolith"] .nav-group-label {
61
+ color: #333333;
62
+ font-weight: 500;
63
+ letter-spacing: 0.2em;
64
+ }
65
+
66
+ /* Monolith-specific: nav items */
67
+ [data-theme="monolith"] .nav-link {
68
+ color: #444444;
69
+ font-weight: 400;
70
+ }
71
+ [data-theme="monolith"] .nav-link:hover {
72
+ color: #888888;
73
+ }
74
+ [data-theme="monolith"] .nav-link.active {
75
+ color: #ffffff;
76
+ border-left-color: #7c3aed;
77
+ }
78
+
79
+ /* Monolith-specific: page headings */
80
+ [data-theme="monolith"] .page h2 {
81
+ font-weight: 300;
82
+ letter-spacing: -0.02em;
83
+ }
84
+
85
+ /* Monolith-specific: chat messages */
86
+ [data-theme="monolith"] .chat-message.user .chat-message-bubble {
87
+ background: #0a0a0a;
88
+ border-radius: 2px;
89
+ }
90
+
91
+ [data-theme="monolith"] .chat-message.assistant .chat-message-bubble {
92
+ background: transparent;
93
+ border-left: 2px solid #7c3aed;
94
+ border-radius: 0;
95
+ font-weight: 300;
96
+ color: #d4d4d4;
97
+ }
98
+
99
+ /* Monolith-specific: data tables — minimal */
100
+ [data-theme="monolith"] .data-table th {
101
+ color: #555555;
102
+ border-bottom-color: #111111;
103
+ }
104
+ [data-theme="monolith"] .data-table td {
105
+ border-bottom-color: #111111;
106
+ }
107
+
108
+ /* Monolith-specific: badges */
109
+ [data-theme="monolith"] .badge {
110
+ border-radius: 2px;
111
+ }
112
+
113
+ /* Monolith-specific: selection */
114
+ [data-theme="monolith"] ::selection {
115
+ background: rgba(124, 58, 237, 0.3);
116
+ color: #ffffff;
117
+ }
118
+
119
+ /* Monolith-specific: scrollbar */
120
+ [data-theme="monolith"] ::-webkit-scrollbar-thumb {
121
+ background: #1a1a1a;
122
+ }
123
+ [data-theme="monolith"] ::-webkit-scrollbar-thumb:hover {
124
+ background: #333333;
125
+ }
@@ -0,0 +1,90 @@
1
+ /* nebula.css — Glassmorphism Command Center */
2
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');
3
+
4
+ [data-theme="nebula"] {
5
+ --bg-primary: #080b16;
6
+ --bg-secondary: rgba(255, 255, 255, 0.03);
7
+ --bg-card: rgba(255, 255, 255, 0.04);
8
+ --bg-hover: rgba(255, 255, 255, 0.06);
9
+ --text-primary: #f0f0f5;
10
+ --text-secondary: #6b7280;
11
+ --accent: #8b5cf6;
12
+ --accent-hover: #7c3aed;
13
+ --accent-glow: rgba(139, 92, 246, 0.15);
14
+ --accent-subtle: rgba(139, 92, 246, 0.08);
15
+ --danger: #f43f5e;
16
+ --danger-hover: #e11d48;
17
+ --success: #10b981;
18
+ --warning: #f59e0b;
19
+ --border: rgba(255, 255, 255, 0.08);
20
+ --border-strong: rgba(255, 255, 255, 0.12);
21
+ --radius: 12px;
22
+ --radius-lg: 16px;
23
+ --font-display: 'Inter', sans-serif;
24
+ --font-body: 'Inter', sans-serif;
25
+ --font-mono: 'JetBrains Mono', monospace;
26
+ }
27
+
28
+ /* Nebula-specific: glassmorphism cards */
29
+ [data-theme="nebula"] .card,
30
+ [data-theme="nebula"] .status-card,
31
+ [data-theme="nebula"] .setup-card,
32
+ [data-theme="nebula"] .create-form {
33
+ backdrop-filter: blur(20px);
34
+ -webkit-backdrop-filter: blur(20px);
35
+ border: 1px solid rgba(255, 255, 255, 0.08);
36
+ }
37
+
38
+ /* Nebula-specific: purple gradient background */
39
+ [data-theme="nebula"] body {
40
+ background: #080b16;
41
+ background-image:
42
+ radial-gradient(ellipse 900px 700px at 85% 8%, rgba(139, 92, 246, 0.12) 0%, transparent 70%),
43
+ radial-gradient(ellipse 600px 500px at 75% 5%, rgba(59, 130, 246, 0.08) 0%, transparent 60%),
44
+ radial-gradient(ellipse 400px 400px at 20% 90%, rgba(139, 92, 246, 0.05) 0%, transparent 60%);
45
+ }
46
+
47
+ /* Nebula-specific: sidebar glassmorphism */
48
+ [data-theme="nebula"] .sidebar {
49
+ background: rgba(255, 255, 255, 0.025);
50
+ backdrop-filter: blur(24px);
51
+ -webkit-backdrop-filter: blur(24px);
52
+ }
53
+
54
+ /* Nebula-specific: nav active glow */
55
+ [data-theme="nebula"] .nav-link.active {
56
+ background: rgba(139, 92, 246, 0.08);
57
+ box-shadow: 0 0 12px rgba(139, 92, 246, 0.15);
58
+ }
59
+
60
+ /* Nebula-specific: chat input focus */
61
+ [data-theme="nebula"] .chat-input:focus {
62
+ border-color: rgba(139, 92, 246, 0.4);
63
+ box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.08);
64
+ }
65
+
66
+ /* Nebula-specific: chat message bubbles */
67
+ [data-theme="nebula"] .chat-message.user .chat-message-bubble {
68
+ background: rgba(139, 92, 246, 0.12);
69
+ border: 1px solid rgba(139, 92, 246, 0.2);
70
+ }
71
+
72
+ [data-theme="nebula"] .chat-message.assistant .chat-message-bubble {
73
+ background: rgba(255, 255, 255, 0.03);
74
+ border: 1px solid rgba(255, 255, 255, 0.08);
75
+ border-left: 3px solid rgba(139, 92, 246, 0.4);
76
+ }
77
+
78
+ /* Nebula-specific: selection color */
79
+ [data-theme="nebula"] ::selection {
80
+ background: rgba(139, 92, 246, 0.3);
81
+ color: #f0f0f5;
82
+ }
83
+
84
+ /* Nebula-specific: scrollbar */
85
+ [data-theme="nebula"] ::-webkit-scrollbar-thumb {
86
+ background: rgba(139, 92, 246, 0.15);
87
+ }
88
+ [data-theme="nebula"] ::-webkit-scrollbar-thumb:hover {
89
+ background: rgba(139, 92, 246, 0.25);
90
+ }
@@ -0,0 +1,149 @@
1
+ /* neon.css — Cyberpunk Vivid */
2
+ @import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700;800&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap');
3
+
4
+ [data-theme="neon"] {
5
+ --bg-primary: #09090b;
6
+ --bg-secondary: #09090b;
7
+ --bg-card: #111113;
8
+ --bg-hover: #18181b;
9
+ --text-primary: #e4e4e7;
10
+ --text-secondary: #71717a;
11
+ --accent: #06b6d4;
12
+ --accent-hover: #0891b2;
13
+ --accent-glow: rgba(6, 182, 212, 0.15);
14
+ --accent-subtle: rgba(6, 182, 212, 0.06);
15
+ --danger: #ef4444;
16
+ --danger-hover: #dc2626;
17
+ --success: #22c55e;
18
+ --warning: #f97316;
19
+ --border: rgba(228, 228, 231, 0.08);
20
+ --border-strong: rgba(228, 228, 231, 0.12);
21
+ --radius: 8px;
22
+ --radius-lg: 12px;
23
+ --font-display: 'Space Grotesk', sans-serif;
24
+ --font-body: 'Inter', sans-serif;
25
+ --font-mono: 'JetBrains Mono', monospace;
26
+ /* Neon extra accents */
27
+ --neon-cyan: #06b6d4;
28
+ --neon-magenta: #ec4899;
29
+ --neon-green: #22c55e;
30
+ --neon-orange: #f97316;
31
+ }
32
+
33
+ /* Neon-specific: subtle color wash background */
34
+ [data-theme="neon"] body {
35
+ background: #09090b;
36
+ background-image:
37
+ radial-gradient(ellipse at 20% 50%, rgba(6, 182, 212, 0.03) 0%, transparent 50%),
38
+ radial-gradient(ellipse at 80% 20%, rgba(236, 72, 153, 0.03) 0%, transparent 50%),
39
+ radial-gradient(ellipse at 50% 80%, rgba(34, 197, 94, 0.02) 0%, transparent 50%);
40
+ }
41
+
42
+ /* Neon-specific: multi-color sidebar border */
43
+ [data-theme="neon"] .sidebar {
44
+ border-right: 1px solid;
45
+ border-image: linear-gradient(180deg, #06b6d4, #ec4899, #22c55e, #f97316, #06b6d4) 1;
46
+ }
47
+
48
+ /* Neon-specific: brand heading */
49
+ [data-theme="neon"] .sidebar-header h1 {
50
+ font-family: 'Space Grotesk', sans-serif;
51
+ font-weight: 800;
52
+ letter-spacing: 0.05em;
53
+ }
54
+
55
+ /* Neon-specific: gradient heading */
56
+ [data-theme="neon"] .page h2 {
57
+ background: linear-gradient(90deg, #06b6d4, #ec4899, #f97316);
58
+ -webkit-background-clip: text;
59
+ -webkit-text-fill-color: transparent;
60
+ background-clip: text;
61
+ }
62
+
63
+ /* Neon-specific: colored card top borders */
64
+ [data-theme="neon"] .status-card:nth-child(1) {
65
+ border: 1px solid rgba(6, 182, 212, 0.15);
66
+ border-top: 2px solid #06b6d4;
67
+ }
68
+ [data-theme="neon"] .status-card:nth-child(2) {
69
+ border: 1px solid rgba(236, 72, 153, 0.15);
70
+ border-top: 2px solid #ec4899;
71
+ }
72
+ [data-theme="neon"] .status-card:nth-child(3) {
73
+ border: 1px solid rgba(34, 197, 94, 0.15);
74
+ border-top: 2px solid #22c55e;
75
+ }
76
+ [data-theme="neon"] .status-card:nth-child(4) {
77
+ border: 1px solid rgba(249, 115, 22, 0.15);
78
+ border-top: 2px solid #f97316;
79
+ }
80
+
81
+ /* Neon-specific: sidebar nav group colored accents */
82
+ [data-theme="neon"] .nav-group:nth-child(1) .nav-group-label {
83
+ color: #e4e4e7;
84
+ }
85
+ [data-theme="neon"] .nav-group:nth-child(2) .nav-group-label {
86
+ color: #06b6d4;
87
+ }
88
+ [data-theme="neon"] .nav-group:nth-child(3) .nav-group-label {
89
+ color: #22c55e;
90
+ }
91
+ [data-theme="neon"] .nav-group:nth-child(4) .nav-group-label {
92
+ color: #ec4899;
93
+ }
94
+
95
+ /* Neon-specific: nav items */
96
+ [data-theme="neon"] .nav-link {
97
+ font-family: 'Space Grotesk', sans-serif;
98
+ font-weight: 500;
99
+ }
100
+ [data-theme="neon"] .nav-link.active {
101
+ color: #e4e4e7;
102
+ border-left-color: #06b6d4;
103
+ background: rgba(6, 182, 212, 0.05);
104
+ }
105
+
106
+ /* Neon-specific: chat messages */
107
+ [data-theme="neon"] .chat-message.user .chat-message-bubble {
108
+ background: #141416;
109
+ border: 1px solid transparent;
110
+ background-clip: padding-box;
111
+ position: relative;
112
+ }
113
+
114
+ [data-theme="neon"] .chat-message.assistant .chat-message-bubble {
115
+ background: var(--bg-card);
116
+ border: 1px solid rgba(228, 228, 231, 0.06);
117
+ border-left: 3px solid;
118
+ border-image: linear-gradient(180deg, #06b6d4, #ec4899, #22c55e) 1;
119
+ border-image-slice: 0 0 0 1;
120
+ }
121
+
122
+ /* Neon-specific: send button gradient */
123
+ [data-theme="neon"] .btn-primary {
124
+ background: linear-gradient(135deg, #06b6d4, #ec4899);
125
+ border: none;
126
+ box-shadow: 0 0 20px rgba(6, 182, 212, 0.15), 0 0 20px rgba(236, 72, 153, 0.15);
127
+ }
128
+ [data-theme="neon"] .btn-primary:hover {
129
+ box-shadow: 0 0 30px rgba(6, 182, 212, 0.3), 0 0 30px rgba(236, 72, 153, 0.3);
130
+ }
131
+
132
+ /* Neon-specific: badges */
133
+ [data-theme="neon"] .badge {
134
+ font-family: 'Space Grotesk', sans-serif;
135
+ }
136
+
137
+ /* Neon-specific: selection */
138
+ [data-theme="neon"] ::selection {
139
+ background: rgba(6, 182, 212, 0.3);
140
+ color: #e4e4e7;
141
+ }
142
+
143
+ /* Neon-specific: scrollbar */
144
+ [data-theme="neon"] ::-webkit-scrollbar-thumb {
145
+ background: #3f3f46;
146
+ }
147
+ [data-theme="neon"] ::-webkit-scrollbar-thumb:hover {
148
+ background: #71717a;
149
+ }
@@ -0,0 +1,151 @@
1
+ /* polar.css — Premium Light Mode */
2
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
3
+
4
+ [data-theme="polar"] {
5
+ --bg-primary: #ffffff;
6
+ --bg-secondary: #f8f9fb;
7
+ --bg-card: #ffffff;
8
+ --bg-hover: #f3f4f6;
9
+ --text-primary: #111827;
10
+ --text-secondary: #6b7280;
11
+ --accent: #3b82f6;
12
+ --accent-hover: #2563eb;
13
+ --accent-glow: rgba(59, 130, 246, 0.1);
14
+ --accent-subtle: rgba(59, 130, 246, 0.05);
15
+ --danger: #dc2626;
16
+ --danger-hover: #b91c1c;
17
+ --success: #059669;
18
+ --warning: #d97706;
19
+ --border: #e5e7eb;
20
+ --border-strong: #d1d5db;
21
+ --radius: 10px;
22
+ --radius-lg: 14px;
23
+ --font-display: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
24
+ --font-body: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
25
+ --font-mono: 'JetBrains Mono', ui-monospace, monospace;
26
+ }
27
+
28
+ /* Polar-specific: light body */
29
+ [data-theme="polar"] body {
30
+ background: #eef0f4;
31
+ color: #374151;
32
+ }
33
+
34
+ /* Polar-specific: sidebar light background */
35
+ [data-theme="polar"] .sidebar {
36
+ background: #f8f9fb;
37
+ border-right: 1px solid #e5e7eb;
38
+ }
39
+
40
+ /* Polar-specific: sidebar header text */
41
+ [data-theme="polar"] .sidebar-header h1 {
42
+ color: #111827;
43
+ }
44
+
45
+ /* Polar-specific: card shadows instead of borders */
46
+ [data-theme="polar"] .card,
47
+ [data-theme="polar"] .status-card,
48
+ [data-theme="polar"] .create-form {
49
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04);
50
+ border: 1px solid #e5e7eb;
51
+ background: #ffffff;
52
+ }
53
+ [data-theme="polar"] .card:hover,
54
+ [data-theme="polar"] .status-card:hover {
55
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 2px 4px rgba(0, 0, 0, 0.04);
56
+ }
57
+
58
+ /* Polar-specific: setup card */
59
+ [data-theme="polar"] .setup-card {
60
+ background: #ffffff;
61
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06), 0 8px 24px rgba(0, 0, 0, 0.04);
62
+ }
63
+
64
+ /* Polar-specific: nav items */
65
+ [data-theme="polar"] .nav-link {
66
+ color: #6b7280;
67
+ }
68
+ [data-theme="polar"] .nav-link:hover {
69
+ background: #f3f4f6;
70
+ color: #111827;
71
+ }
72
+ [data-theme="polar"] .nav-link.active {
73
+ background: #eff6ff;
74
+ color: #3b82f6;
75
+ }
76
+
77
+ /* Polar-specific: nav group labels */
78
+ [data-theme="polar"] .nav-group-label {
79
+ color: #9ca3af;
80
+ }
81
+
82
+ /* Polar-specific: page headings */
83
+ [data-theme="polar"] .page h2 {
84
+ color: #111827;
85
+ }
86
+
87
+ /* Polar-specific: data tables */
88
+ [data-theme="polar"] .data-table th {
89
+ color: #9ca3af;
90
+ border-bottom-color: #e5e7eb;
91
+ }
92
+ [data-theme="polar"] .data-table td {
93
+ border-bottom-color: #f3f4f6;
94
+ }
95
+ [data-theme="polar"] .data-table tr:hover {
96
+ background: #f9fafb;
97
+ }
98
+
99
+ /* Polar-specific: chat messages */
100
+ [data-theme="polar"] .chat-message.user .chat-message-bubble {
101
+ background: #3b82f6;
102
+ color: #ffffff;
103
+ }
104
+
105
+ [data-theme="polar"] .chat-message.assistant .chat-message-bubble {
106
+ background: #f8f9fb;
107
+ color: #111827;
108
+ border-left: 3px solid #3b82f6;
109
+ }
110
+
111
+ /* Polar-specific: chat input */
112
+ [data-theme="polar"] .chat-input {
113
+ background: #ffffff;
114
+ border-color: #e5e7eb;
115
+ color: #111827;
116
+ }
117
+ [data-theme="polar"] .chat-input::placeholder {
118
+ color: #9ca3af;
119
+ }
120
+ [data-theme="polar"] .chat-input:focus {
121
+ border-color: #3b82f6;
122
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
123
+ }
124
+
125
+ /* Polar-specific: badges */
126
+ [data-theme="polar"] .badge {
127
+ border-radius: 100px;
128
+ }
129
+
130
+ /* Polar-specific: light scrollbar */
131
+ [data-theme="polar"] ::-webkit-scrollbar-thumb {
132
+ background: rgba(0, 0, 0, 0.12);
133
+ }
134
+ [data-theme="polar"] ::-webkit-scrollbar-thumb:hover {
135
+ background: rgba(0, 0, 0, 0.2);
136
+ }
137
+
138
+ /* Polar-specific: selection color */
139
+ [data-theme="polar"] ::selection {
140
+ background: rgba(59, 130, 246, 0.2);
141
+ color: #111827;
142
+ }
143
+
144
+ /* Polar-specific: buttons */
145
+ [data-theme="polar"] .btn-primary {
146
+ background: #3b82f6;
147
+ color: #ffffff;
148
+ }
149
+ [data-theme="polar"] .btn-primary:hover {
150
+ background: #2563eb;
151
+ }
@@ -0,0 +1,163 @@
1
+ /* signal.css — Warm Sci-Fi Terminal */
2
+ @import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;500;700&family=Inter:wght@400;500;600&display=swap');
3
+
4
+ [data-theme="signal"] {
5
+ --bg-primary: #0c0c0c;
6
+ --bg-secondary: #0a0a0a;
7
+ --bg-card: #141414;
8
+ --bg-hover: #1a1a1a;
9
+ --text-primary: #e8e4dd;
10
+ --text-secondary: #7a7568;
11
+ --accent: #f59e0b;
12
+ --accent-hover: #d97706;
13
+ --accent-glow: rgba(245, 158, 11, 0.12);
14
+ --accent-subtle: rgba(245, 158, 11, 0.06);
15
+ --danger: #ef4444;
16
+ --danger-hover: #dc2626;
17
+ --success: #22c55e;
18
+ --warning: #f59e0b;
19
+ --border: rgba(245, 158, 11, 0.1);
20
+ --border-strong: rgba(245, 158, 11, 0.18);
21
+ --radius: 4px;
22
+ --radius-lg: 6px;
23
+ --font-display: 'JetBrains Mono', monospace;
24
+ --font-body: 'Inter', sans-serif;
25
+ --font-mono: 'JetBrains Mono', monospace;
26
+ }
27
+
28
+ /* Signal-specific: terminal-style body */
29
+ [data-theme="signal"] body {
30
+ background: #0c0c0c;
31
+ }
32
+
33
+ /* Signal-specific: scanline overlay */
34
+ [data-theme="signal"] body::after {
35
+ content: '';
36
+ position: fixed;
37
+ top: 0;
38
+ left: 0;
39
+ width: 100%;
40
+ height: 100%;
41
+ pointer-events: none;
42
+ z-index: 9999;
43
+ background: repeating-linear-gradient(
44
+ 0deg,
45
+ transparent,
46
+ transparent 2px,
47
+ rgba(0, 0, 0, 0.03) 2px,
48
+ rgba(0, 0, 0, 0.03) 4px
49
+ );
50
+ }
51
+
52
+ /* Signal-specific: sidebar */
53
+ [data-theme="signal"] .sidebar {
54
+ background: #0e0e0e;
55
+ border-right: 1px solid rgba(245, 158, 11, 0.15);
56
+ }
57
+
58
+ /* Signal-specific: terminal-style header */
59
+ [data-theme="signal"] .sidebar-header h1 {
60
+ font-family: 'JetBrains Mono', monospace;
61
+ font-weight: 500;
62
+ }
63
+
64
+ [data-theme="signal"] .sidebar-header h1::before {
65
+ content: '>';
66
+ background: none;
67
+ color: var(--accent);
68
+ border-radius: 0;
69
+ width: auto;
70
+ height: auto;
71
+ font-family: 'JetBrains Mono', monospace;
72
+ margin-right: 0.4rem;
73
+ }
74
+
75
+ /* Signal-specific: amber-tinted cards */
76
+ [data-theme="signal"] .card,
77
+ [data-theme="signal"] .status-card {
78
+ border: 1px solid rgba(245, 158, 11, 0.12);
79
+ border-radius: 2px;
80
+ }
81
+
82
+ /* Signal-specific: nav items with terminal feel */
83
+ [data-theme="signal"] .nav-group-label {
84
+ font-family: 'JetBrains Mono', monospace;
85
+ color: #4a4740;
86
+ letter-spacing: 0.12em;
87
+ }
88
+
89
+ [data-theme="signal"] .nav-group-label::before {
90
+ content: '// ';
91
+ color: #3a3530;
92
+ }
93
+
94
+ /* Signal-specific: nav items in mono font */
95
+ [data-theme="signal"] .nav-link {
96
+ font-family: 'JetBrains Mono', monospace;
97
+ font-size: 0.8rem;
98
+ color: var(--text-secondary);
99
+ }
100
+ [data-theme="signal"] .nav-link:hover {
101
+ background: rgba(245, 158, 11, 0.04);
102
+ }
103
+ [data-theme="signal"] .nav-link.active {
104
+ color: var(--accent);
105
+ background: rgba(245, 158, 11, 0.06);
106
+ border-left-color: var(--accent);
107
+ }
108
+
109
+ /* Signal-specific: page headings in mono */
110
+ [data-theme="signal"] .page h2 {
111
+ font-family: 'JetBrains Mono', monospace;
112
+ }
113
+
114
+ /* Signal-specific: chat messages */
115
+ [data-theme="signal"] .chat-message.user .chat-message-bubble {
116
+ background: #181818;
117
+ border: 1px solid rgba(245, 158, 11, 0.15);
118
+ border-radius: 3px;
119
+ font-family: 'JetBrains Mono', monospace;
120
+ font-size: 0.85rem;
121
+ }
122
+
123
+ [data-theme="signal"] .chat-message.assistant .chat-message-bubble {
124
+ border-left: 3px solid var(--success);
125
+ background: rgba(34, 197, 94, 0.02);
126
+ border-radius: 0 3px 3px 0;
127
+ }
128
+
129
+ /* Signal-specific: chat input */
130
+ [data-theme="signal"] .chat-input {
131
+ font-family: 'JetBrains Mono', monospace;
132
+ border-color: rgba(245, 158, 11, 0.15);
133
+ caret-color: var(--accent);
134
+ }
135
+ [data-theme="signal"] .chat-input:focus {
136
+ border-color: var(--accent);
137
+ }
138
+
139
+ /* Signal-specific: data tables */
140
+ [data-theme="signal"] .data-table {
141
+ font-family: 'JetBrains Mono', monospace;
142
+ font-size: 0.8rem;
143
+ }
144
+
145
+ /* Signal-specific: badges */
146
+ [data-theme="signal"] .badge {
147
+ font-family: 'JetBrains Mono', monospace;
148
+ border-radius: 2px;
149
+ }
150
+
151
+ /* Signal-specific: selection */
152
+ [data-theme="signal"] ::selection {
153
+ background: rgba(245, 158, 11, 0.3);
154
+ color: #e8e4dd;
155
+ }
156
+
157
+ /* Signal-specific: scrollbar */
158
+ [data-theme="signal"] ::-webkit-scrollbar-thumb {
159
+ background: rgba(245, 158, 11, 0.12);
160
+ }
161
+ [data-theme="signal"] ::-webkit-scrollbar-thumb:hover {
162
+ background: rgba(245, 158, 11, 0.25);
163
+ }