-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMainWindow.xaml
More file actions
402 lines (382 loc) · 25.9 KB
/
Copy pathMainWindow.xaml
File metadata and controls
402 lines (382 loc) · 25.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
<Window x:Class="Verdict.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Verdict"
xmlns:conv="clr-namespace:Verdict.Converters"
mc:Ignorable="d"
Title="{Binding WindowTitle}" Height="950" Width="1500" MinHeight="700" MinWidth="1100"
Background="#2C3E50">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MainWindow.Resources.xaml"/>
</ResourceDictionary.MergedDictionaries>
<!-- DataTemplates must stay in MainWindow.xaml because they contain event handlers -->
<!-- Agent Seat DataTemplate -->
<DataTemplate x:Key="AgentSeatTemplate">
<Grid Margin="5">
<Border Style="{StaticResource SeatBase}" Background="#34495E" AllowDrop="True" Drop="AgentSeat_Drop" ContextMenuOpening="AgentSeat_ContextMenuOpening" IsHitTestVisible="True">
<Border.ContextMenu>
<ContextMenu>
<MenuItem Header="Add Agent..." Click="AddAgent_Click"/>
<MenuItem Header="Edit Profile..." Click="AddAgent_Click"/>
<MenuItem Header="Generate Juror..." Click="GenerateLikelyJuror_Click" Tag="{Binding}"/>
<MenuItem Header="Chat" Click="AgentChat_Click" Tag="{Binding}"/>
<MenuItem Header="Juror Report" Click="JurorReport_Click" Tag="{Binding}"/>
<MenuItem Header="Opinion Drift ▸" Click="OpinionDrift_Click" Tag="{Binding}"/>
<MenuItem Header="Save Character" Click="ExportCharacter_Click"/>
<MenuItem Header="Delete" Click="DeleteAgent_Click" Foreground="Red"/>
</ContextMenu>
</Border.ContextMenu>
<Grid>
<TextBlock Text="+" Foreground="White" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="18" FontWeight="Bold" Visibility="{Binding IsOccupied, Converter={StaticResource BoolToVis}, ConverterParameter=Inverse}"/>
<Grid Visibility="{Binding IsOccupied, Converter={StaticResource BoolToVis}}"
HorizontalAlignment="Center" VerticalAlignment="Center" Width="24" Height="24">
<Ellipse Fill="#2C3E50" Stroke="#7F8C8D" StrokeThickness="1"/>
<Polygon Points="12,5 16,12 8,12" Fill="#E74C3C"/>
<Rectangle Width="18" Height="4" Fill="#E74C3C" RadiusX="2" RadiusY="2"
HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,9,0,0"/>
<Rectangle Width="2" Height="3" Fill="#F1C40F" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="0,10,0,0"/>
<Rectangle Width="14" Height="2" Fill="#95A5A6" Opacity="0.9" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,8"/>
<TextBlock Text="{Binding Initials}" Foreground="White" FontSize="7" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Grid>
</Border>
<Border Style="{StaticResource StatusWindow}"
Visibility="{Binding IsOccupied, Converter={StaticResource BoolToVis}}"
HorizontalAlignment="Center" VerticalAlignment="Center"
Margin="-50,-25,-50,-25">
<StackPanel>
<TextBlock Style="{StaticResource RoleLabel}" Text="{Binding Name}"/>
<StackPanel Orientation="Horizontal" Visibility="{Binding CanVote, Converter={StaticResource BoolToVis}}">
<TextBlock Style="{StaticResource MetricValue}" Text="{Binding Sentiment, StringFormat={}{0:P0}}" FontSize="10" Foreground="#2ECC71"/>
<TextBlock Style="{StaticResource MetricLabel}" Text=" L:"/>
<TextBlock Style="{StaticResource MetricValue}" Text="{Binding VerdictLean, StringFormat={}{0:N2}}"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Visibility="{Binding CanVote, Converter={StaticResource BoolToVis}}">
<TextBlock Style="{StaticResource MetricLabel}" Text="$:"/>
<TextBlock Style="{StaticResource MetricValue}" Text="{Binding Valuation}"/>
</StackPanel>
</StackPanel>
</Border>
</Grid>
</DataTemplate>
<!-- Special DataTemplate for Clerk/Reporter with document intake functionality -->
<DataTemplate x:Key="ClerkSeatTemplate">
<StackPanel Orientation="Vertical" Margin="5">
<Border Style="{StaticResource SeatBase}" Background="#27AE60" MouseLeftButtonDown="ClerkSeat_Click" Cursor="Hand">
<Border.ContextMenu>
<ContextMenu>
<MenuItem Header="Edit Profile..." Click="EditReporterProfile_Click"/>
<Separator/>
<MenuItem Header="Submit Document as Evidence..." Click="ClerkSeat_Click"/>
</ContextMenu>
</Border.ContextMenu>
<TextBlock Text="📋" FontSize="16" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
<TextBlock Text="{Binding Name}" HorizontalAlignment="Center" Foreground="White" FontSize="10" FontWeight="SemiBold" Margin="0,3,0,0" />
<Border Style="{StaticResource StatusWindow}">
<StackPanel>
<TextBlock Style="{StaticResource RoleLabel}" Text="{Binding Role}"/>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource MetricLabel}" Text="Docs:"/>
<TextBlock Style="{StaticResource MetricValue}" Text="{Binding DocumentCount, Mode=OneWay}"/>
</StackPanel>
</StackPanel>
</Border>
</StackPanel>
</DataTemplate>
</ResourceDictionary>
</Window.Resources>
<DockPanel>
<Menu DockPanel.Dock="Top" Background="#F0F0F0" Foreground="Black">
<MenuItem Header="_File">
<MenuItem Header="_New Case" Click="NewCase_Click"/>
<MenuItem Header="_Open Case..." Click="OpenCase_Click"/>
<Separator/>
<MenuItem Header="_Default Cases" x:Name="DefaultCasesMenu">
<MenuItem Header="Apple River Stabbing Trial" Click="DefaultCase_AppleRiver_Click"
ToolTip="State v. Nicolae Miu — Balanced middle-ground criminal case testing self-defense vs. reckless homicide. Juror demographics and bias factors will drive the verdict."/>
<MenuItem Header="Apple Juice Murders" Click="DefaultCase_AppleJuice_Click"
ToolTip="Criminal case involving poisoned apple juice. Tests juror bias toward product liability and corporate negligence."/>
<MenuItem Header="NC Comparative Fault Accident" Click="DefaultCase_NCAccident_Click"
ToolTip="Civil negligence case with comparative fault. Tests how jurors assign percentages of blame between plaintiff and defendant."/>
<MenuItem Header="Smoking Memo (Punitive)" Click="DefaultCase_SmokingMemo_Click"
ToolTip="Corporate liability case involving a smoking-gun internal memo. Tests jury punitive damage capacity and outrage response."/>
<Separator/>
<MenuItem Header="Circumstantial Locked Room" Click="DefaultCase_LockedRoom_Click"
ToolTip="State v. Marcus Webb — Circumstantial-evidence-only criminal case. No murder weapon, no eyewitness, no confession. Tests how jurors weigh inference vs. direct proof."/>
<MenuItem Header="Few Bad Apples (Following Orders)" Click="DefaultCase_FewBadApples_Click"
ToolTip="State v. Kowalski & Reyes — Police academy hazing death. Defendants claim they were following orders. Tests chain-of-command and institutional-betrayal dynamics."/>
<MenuItem Header="Twelve Mildly Bothered Agents" Click="DefaultCase_TwelveAgents_Click"
ToolTip="People v. Daniel Torres — Adaptation of 12 Angry Men. Seemingly strong prosecution case unravels under deliberation. Tests turnaround verdict dynamics."/>
</MenuItem>
<Separator/>
<MenuItem Header="_Save Case" Click="SaveSimulation_Click"/>
<MenuItem Header="Save Case _As..." Click="SaveCaseAs_Click"/>
<Separator/>
<MenuItem Header="_Recent Files" x:Name="RecentFilesMenu" IsEnabled="False">
<MenuItem.Visibility>
<Visibility>Collapsed</Visibility>
</MenuItem.Visibility>
</MenuItem>
<Separator/>
<MenuItem Header="_Import Transcript..." Click="ImportTranscript_Click"/>
<MenuItem Header="Export _PDF Report" Click="GenerateReport_Click"/>
<Separator/>
<MenuItem Header="E_xit" Click="Exit_Click"/>
</MenuItem>
<MenuItem Header="_Stage">
<MenuItem Header="_Discovery" Click="SetTrialPhase_Discovery_Click" IsChecked="{Binding CurrentCase.TrialPhase, Converter={StaticResource EnumMatchConverter}, ConverterParameter=Discovery}" IsCheckable="True"/>
<MenuItem Header="_Pretrial" Click="SetTrialPhase_Pretrial_Click" IsChecked="{Binding CurrentCase.TrialPhase, Converter={StaticResource EnumMatchConverter}, ConverterParameter=Pretrial}" IsCheckable="True"/>
<MenuItem Header="_Trial">
<MenuItem Header="_Opening Statements" Click="SetCourtPhase_OpeningStatements_Click"/>
<MenuItem Header="_Witness Testimony" Click="SetCourtPhase_WitnessTestimony_Click"/>
<MenuItem Header="_Cross Examination" Click="SetCourtPhase_CrossExamination_Click"/>
<MenuItem Header="_Party Statements" Click="SetCourtPhase_PartyStatements_Click"/>
<MenuItem Header="_Closing Arguments" Click="SetCourtPhase_ClosingArguments_Click"/>
<Separator/>
<MenuItem Header="_Jury Instructions" Click="SetCourtPhase_JuryInstructions_Click"/>
<MenuItem Header="_Jury Deliberation" Click="SetCourtPhase_JuryDeliberation_Click"/>
</MenuItem>
</MenuItem>
<MenuItem Header="_Case">
<MenuItem Header="_Import Transcript..." Click="ImportTranscript_Click"/>
<MenuItem Header="E_xtract Entities from Transcript" Click="ExtractEntities_Click"/>
<MenuItem Header="_Exhibit List" Click="ExhibitList_Click"/>
<MenuItem Header="Re-evaluate Evidence" Click="ReevaluateEvidence_Click"
ToolTip="Replay all admitted exhibits through each juror's current psychology"/>
<Separator/>
<MenuItem Header="_Generate Case (Demos)" Click="GenerateCase_Click"/>
<MenuItem Header="_Case Settings" Click="CaseSettings_Click"/>
<Separator/>
<MenuItem Header="_Custom Models" Click="CaseCustomModels_Click"
ToolTip="Configure models specific to this case only. These won't affect other cases."/>
</MenuItem>
<MenuItem Header="_Agents">
<MenuItem Header="_Initiate Counsel Discussion" Click="CounselDiscussion_Click"/>
<MenuItem Header="_Attorney-Client Consultation" Click="ClientConsultation_Click"/>
<Separator/>
<MenuItem Header="_Dynamic Role Assignment" Click="DynamicRoleAssignment_Click"/>
<Separator/>
<MenuItem Header="_Opinion Drift Chart" Click="OpinionChartAll_Click"
ToolTip="View a chart showing how each juror's verdict lean has changed over the course of the trial."/>
<Separator/>
<MenuItem Header="_Load Agent..." Click="LoadAgent_Click"/>
<MenuItem Header="_Build Agent" Click="BuildAgent_Click"/>
<MenuItem Header="_Design Prompts" Click="DesignPrompts_Click"/>
<MenuItem Header="_Batch Update Prompts" Click="BatchUpdatePrompts_Click"/>
</MenuItem>
<MenuItem Header="_Settings">
<MenuItem Header="_Case Settings" Click="CaseSettings_Click"/>
<MenuItem Header="_Default Case Settings" Click="DefaultCaseSettings_Click"/>
<Separator/>
<MenuItem Header="_General Settings" Click="GeneralSettings_Click"/>
<MenuItem Header="_LLM Configuration" Click="LLMConfiguration_Click"/>
<MenuItem Header="_Model Weights" Click="ModelWeights_Click"/>
<MenuItem Header="_Courtroom Layout" Click="CourtroomLayoutSettings_Click"/>
</MenuItem>
<MenuItem Header="_Help">
<MenuItem Header="_About Verdict" Click="About_Click"/>
</MenuItem>
</Menu>
<StatusBar DockPanel.Dock="Bottom" Background="#1A252F" Foreground="White" Padding="10,5">
<StatusBarItem>
<StackPanel Orientation="Horizontal">
<TextBlock Text="PHASE:" Foreground="#E67E22" FontWeight="Bold" Margin="0,0,8,0"/>
<TextBlock Text="{Binding TrialPhaseLabel, Mode=OneWay}" FontWeight="SemiBold" Foreground="#3498DB" Margin="0,0,6,0"/>
<TextBlock Text="▸" Foreground="#7F8C8D" Margin="0,0,6,0"/>
<TextBlock Text="{Binding CurrentDebateStageDisplay, Mode=OneWay}" FontWeight="SemiBold" Foreground="#2ECC71"/>
<Button Content="ADVANCE" Click="AdvanceStage_Click" Margin="15,0,0,0" Padding="8,2" Background="#2980B9" Foreground="White" FontSize="10"/>
<Button Content="AUTOPILOT" Click="AutoDeliberate_Click" Margin="8,0,0,0" Padding="8,2" Background="#E67E22" Foreground="White" FontSize="10" FontWeight="Bold"/>
</StackPanel>
</StatusBarItem>
<Separator Margin="15,0"/>
<StatusBarItem>
<StackPanel Orientation="Horizontal">
<TextBlock Text="VERDICT:" Foreground="#E67E22" FontWeight="Bold" Margin="0,0,8,0"/>
<TextBlock Text="{Binding LikelyVerdict, Mode=OneWay}" FontWeight="SemiBold"/>
</StackPanel>
</StatusBarItem>
<Separator Margin="15,0"/>
<StatusBarItem>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding VerdictThresholdLabel, Mode=OneWay}" Foreground="#E67E22" FontWeight="Bold" Margin="0,0,8,0"/>
<ProgressBar Value="{Binding JuryLiabilityAverage, Mode=OneWay}" Minimum="0" Maximum="1" Width="120" Height="14" Foreground="#2ECC71" Background="#34495E"/>
<TextBlock Text="{Binding JuryLiabilityAverage, Mode=OneWay, StringFormat=P0}" Margin="8,0,0,0"/>
</StackPanel>
</StatusBarItem>
</StatusBar>
<Grid Margin="20">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/> <!-- Bench -->
<RowDefinition Height="1.5*"/> <!-- Reply Window -->
<RowDefinition Height="2.5*"/> <!-- Floor Area -->
<RowDefinition Height="Auto"/> <!-- Prompt Entry -->
</Grid.RowDefinitions>
<!-- Bench Area -->
<Grid Grid.Row="0">
<ItemsControl ItemsSource="{Binding JudgeArea}" HorizontalAlignment="Center">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Margin" Value="24,0"/>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplateSelector>
<local:ClerkTemplateSelector
AgentTemplate="{StaticResource AgentSeatTemplate}"
ClerkTemplate="{StaticResource ClerkSeatTemplate}" />
</ItemsControl.ItemTemplateSelector>
</ItemsControl>
<Button Content="ADMIT EVIDENCE"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Background="#2980B9"
Foreground="White"
Padding="10,5"
FontWeight="Bold"
Click="AddEvidence_Click"
Margin="0,0,20,0"/>
</Grid>
<!-- Court Record / Replies -->
<Border Grid.Row="1" Background="#1A252F" BorderBrush="#34495E" BorderThickness="2" Padding="15" CornerRadius="10" Margin="0,15">
<DockPanel>
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="0,0,0,8">
<TextBlock Text="{Binding CourtRecordLabel, Mode=OneWay}" Foreground="#E67E22" FontWeight="Bold" FontSize="13"/>
<TextBlock Text=" ▸ " Foreground="#7F8C8D" FontSize="11" VerticalAlignment="Center"/>
<TextBlock Text="{Binding CurrentDebateStageDisplay, Mode=OneWay}" Foreground="#2ECC71" FontSize="11" FontWeight="SemiBold" VerticalAlignment="Center"/>
</StackPanel>
<ScrollViewer VerticalScrollBarVisibility="Auto">
<TextBox x:Name="ReplyOutput" Text="{Binding TranscriptOutput, Mode=OneWay}"
Foreground="#ECF0F1" TextWrapping="Wrap" FontSize="14"
Background="Transparent" BorderThickness="0"
IsReadOnly="True" IsReadOnlyCaretVisible="True"
VerticalScrollBarVisibility="Disabled"/>
</ScrollViewer>
</DockPanel>
</Border>
<!-- Main Floor Area -->
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="240"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="240"/>
</Grid.ColumnDefinitions>
<!-- Jury Box (12 Jurors in 3x4 + 2 Alternates below) -->
<Border Grid.Column="0" Background="#34495E" CornerRadius="5" Padding="15">
<StackPanel>
<TextBlock Text="JURY BOX (12+2)" Foreground="#BDC3C7" FontWeight="Bold" Margin="0,0,0,10" HorizontalAlignment="Center"/>
<ItemsControl ItemsSource="{Binding Jurors}" ItemTemplate="{StaticResource AgentSeatTemplate}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="3"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<!-- Alternate Jurors below the main jury -->
<ItemsControl ItemsSource="{Binding AlternateJurors}" ItemTemplate="{StaticResource AgentSeatTemplate}" Margin="0,8,0,0">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="3"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0,10,0,0">
<Button Content="GENERATE JURY"
Click="GenerateJury_Click"
Padding="5,2"
Background="#2ECC71"
Foreground="White"
FontSize="9"
Width="120"/>
<Button Content="GENERATE ALTS"
Click="GenerateAlternates_Click"
Margin="8,0,0,0"
Padding="5,2"
Background="#3498DB"
Foreground="White"
FontSize="9"
Width="110"/>
</StackPanel>
</StackPanel>
</Border>
<!-- Observer Box (Max 6 in 2x3) -->
<Border Grid.Column="2" Background="#34495E" CornerRadius="5" Padding="15">
<StackPanel>
<TextBlock Text="OBSERVERS (MAX 6)" Foreground="#BDC3C7" FontWeight="Bold" Margin="0,0,0,10" HorizontalAlignment="Center"/>
<ItemsControl ItemsSource="{Binding Gallery}" ItemTemplate="{StaticResource AgentSeatTemplate}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="2"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</StackPanel>
</Border>
<!-- Counsel Area -->
<Grid Grid.Column="1" Margin="20,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- Prosecution/Plaintiff Table (nearest jury) -->
<StackPanel Grid.Column="0" VerticalAlignment="Center">
<TextBlock Text="{Binding ProsecutionTableLabel}" Foreground="#BDC3C7" FontWeight="Bold" Margin="0,0,0,10" HorizontalAlignment="Center" FontSize="14"/>
<ItemsControl ItemsSource="{Binding ProsecutionTeam}" ItemTemplate="{StaticResource AgentSeatTemplate}" VerticalAlignment="Center"/>
</StackPanel>
<Button Grid.Column="1" Width="60" Height="40" Background="#D35400" Content="PODIUM" Foreground="White" FontWeight="Bold" Click="Podium_Click" VerticalAlignment="Center"/>
<!-- Defense Table -->
<StackPanel Grid.Column="2" VerticalAlignment="Center">
<TextBlock Text="DEFENSE TABLE" Foreground="#BDC3C7" FontWeight="Bold" Margin="0,0,0,10" HorizontalAlignment="Center" FontSize="14"/>
<ItemsControl ItemsSource="{Binding DefenseTeam}" ItemTemplate="{StaticResource AgentSeatTemplate}" VerticalAlignment="Center"/>
</StackPanel>
</Grid>
</Grid>
<!-- Prompt Entry -->
<Border Grid.Row="3" Background="#1A252F" BorderBrush="#34495E" BorderThickness="2" Padding="12" CornerRadius="10" Margin="0,15,0,0" MaxWidth="900" HorizontalAlignment="Center">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Text="INPUT PROMPT" Grid.Row="0" Foreground="#E67E22" FontWeight="Bold" Margin="0,0,0,6" FontSize="11"/>
<Grid Grid.Row="1" VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBox x:Name="ChatInput"
Grid.Column="0"
Background="#2C3E50"
Foreground="#ECF0F1"
BorderThickness="0"
Padding="8"
FontSize="13"
MinHeight="50"
VerticalAlignment="Stretch"
TextWrapping="Wrap"
AcceptsReturn="True"
CaretBrush="#E67E22"
KeyDown="ChatInput_KeyDown"/>
<Button Content="SEND"
Grid.Column="1"
Click="SendMessage_Click"
Width="70"
Margin="8,0,0,0"
Background="#E67E22"
Foreground="White"
FontWeight="Bold"/>
</Grid>
</Grid>
</Border>
</Grid>
</DockPanel>
</Window>