| Server IP : 185.208.173.17 / Your IP : 87.236.161.98 Web Server : Microsoft-IIS/10.0 System : Windows NT SRV8576125506 10.0 build 26100 (Windows Server 2016) AMD64 User : IUSR ( 0) PHP Version : 7.4.13 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /Program Files (x86)/Microsoft/EdgeCore/152.0.4191.53/undocked_copilot/ |
Upload File : |
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:controls="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:muxc="using:Microsoft.UI.Xaml.Controls"
mc:Ignorable="d">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Light">
<LinearGradientBrush x:Key="BackgroundBrush" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#E5F3F3F3" Offset="0"/>
<GradientStop Color="#00F3F3F3" Offset="1"/>
</LinearGradientBrush>
<SolidColorBrush x:Key="LiveBarBackgroundBrush" Color="#FFFFFF" />
<SolidColorBrush x:Key="LiveBarBorderBrush" Color="#21000000" />
<SolidColorBrush x:Key="VoiceComposerTranscriptPaneBackgroundBrush" Color="#FFFFFF" />
<SolidColorBrush x:Key="DismissButtonBackgroundBrush" Color="#000000" />
<SolidColorBrush x:Key="DismissButtonForegroundBrush" Color="#FFFFFF" />
<SolidColorBrush x:Key="ZeroQueryHeaderBrush" Color="#5F5F5F" />
<SolidColorBrush x:Key="ButtonFocusBackgroundBrush">#ebebeb</SolidColorBrush>
<SolidColorBrush x:Key="ButtonFocusVisualPrimaryBrush">#F3F3F3</SolidColorBrush>
<SolidColorBrush x:Key="Mic">#000000</SolidColorBrush>
<SolidColorBrush x:Key="ScreenShare">#000000</SolidColorBrush>
<SolidColorBrush x:Key="ToolTipBackground">#FCFCFC</SolidColorBrush>
<SolidColorBrush x:Key="VisionFlyoutBorderBrush" Color="#0F000000" />
<Thickness x:Key="VisionFlyoutBorderThickness">0</Thickness>
<CornerRadius x:Key="VisionFlyoutBorderCornerRadius">0</CornerRadius>
<SolidColorBrush x:Key="HighlightedTextBrush">#000000</SolidColorBrush>
<SolidColorBrush x:Key="TranscriptV2SpokenTextBrush" Color="#000000" />
<SolidColorBrush x:Key="TranscriptV2GreyTextBrush" Color="#B4B4B4" />
<SolidColorBrush x:Key="TranscriptV2UserBubbleBgBrush" Color="#E8E8E8" />
<SolidColorBrush x:Key="TranscriptV2UserBubbleTextBrush" Color="#1A1A1A" />
<SolidColorBrush x:Key="TranscriptV2ResizeGripBrush" Color="#80808080" />
<Color x:Key="TranscriptV2FadeColor">#FFFFFF</Color>
<SolidColorBrush x:Key="P2TMicFreSurfaceBrush" Color="#FFFFFF" />
<SolidColorBrush x:Key="P2TMicFreBorderBrush" Color="#1A000000" />
<SolidColorBrush x:Key="P2TMicFrePrimaryBrush" Color="#050505" />
<SolidColorBrush x:Key="P2TMicFrePrimaryForegroundBrush" Color="#FFFFFF" />
<SolidColorBrush x:Key="P2TMicFreFooterBrush" Color="#616161" />
</ResourceDictionary>
<ResourceDictionary x:Key="Dark">
<SolidColorBrush x:Key="LiveBarBackgroundBrush" Color="#1A1A1A" />
<SolidColorBrush x:Key="LiveBarBorderBrush" Color="#545454" />
<SolidColorBrush x:Key="VoiceComposerTranscriptPaneBackgroundBrush" Color="#1A1A1A" />
<SolidColorBrush x:Key="DismissButtonBackgroundBrush" Color="#FFFFFF" />
<SolidColorBrush x:Key="DismissButtonForegroundBrush" Color="#000000" />
<SolidColorBrush x:Key="ZeroQueryHeaderBrush" Color="#B0B0B0" />
<LinearGradientBrush x:Key="BackgroundBrush" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#F5202020" Offset="0"/>
<GradientStop Color="#80202020" Offset="1"/>
</LinearGradientBrush>
<SolidColorBrush x:Key="ButtonFocusBackgroundBrush">#545454</SolidColorBrush>
<SolidColorBrush x:Key="ButtonFocusVisualPrimaryBrush">#3A3A3A</SolidColorBrush>
<SolidColorBrush x:Key="Mic">#FFFFFF</SolidColorBrush>
<SolidColorBrush x:Key="ScreenShare">#FFFFFF</SolidColorBrush>
<SolidColorBrush x:Key="ToolTipBackground">#1E1E1E</SolidColorBrush>
<SolidColorBrush x:Key="VisionFlyoutBorderBrush" Color="#0FFFFFFF" />
<Thickness x:Key="VisionFlyoutBorderThickness">0</Thickness>
<CornerRadius x:Key="VisionFlyoutBorderCornerRadius">0</CornerRadius>
<SolidColorBrush x:Key="HighlightedTextBrush">#FFFFFF</SolidColorBrush>
<SolidColorBrush x:Key="TranscriptV2SpokenTextBrush" Color="#FFFFFF" />
<SolidColorBrush x:Key="TranscriptV2GreyTextBrush" Color="#808080" />
<SolidColorBrush x:Key="TranscriptV2UserBubbleBgBrush" Color="#3D3D3D" />
<SolidColorBrush x:Key="TranscriptV2UserBubbleTextBrush" Color="#FFFFFF" />
<SolidColorBrush x:Key="TranscriptV2ResizeGripBrush" Color="#80808080" />
<Color x:Key="TranscriptV2FadeColor">#2A2A2A</Color>
<SolidColorBrush x:Key="P2TMicFreSurfaceBrush" Color="#2B2B2B" />
<SolidColorBrush x:Key="P2TMicFreBorderBrush" Color="#26FFFFFF" />
<SolidColorBrush x:Key="P2TMicFrePrimaryBrush" Color="#F5F5F5" />
<SolidColorBrush x:Key="P2TMicFrePrimaryForegroundBrush" Color="#1A1A1A" />
<SolidColorBrush x:Key="P2TMicFreFooterBrush" Color="#ADADAD" />
</ResourceDictionary>
<ResourceDictionary x:Key="HighContrast">
<SolidColorBrush x:Key="BackgroundBrush" Color="{ThemeResource SystemColorWindowColor}" />
<SolidColorBrush x:Key="LiveBarBackgroundBrush" Color="{ThemeResource SystemColorWindowColor}" />
<SolidColorBrush x:Key="LiveBarBorderBrush" Color="{ThemeResource SystemColorWindowTextColor}" />
<SolidColorBrush x:Key="VoiceComposerTranscriptPaneBackgroundBrush" Color="{ThemeResource SystemColorWindowColor}" />
<SolidColorBrush x:Key="DismissButtonBackgroundBrush" Color="{ThemeResource SystemColorWindowTextColor}" />
<SolidColorBrush x:Key="DismissButtonForegroundBrush" Color="{ThemeResource SystemColorWindowColor}" />
<SolidColorBrush x:Key="ZeroQueryHeaderBrush" Color="{ThemeResource SystemColorGrayTextColor}" />
<SolidColorBrush x:Key="ButtonFocusBackgroundBrush" Color="{ThemeResource SystemColorHighlightColor}" />
<SolidColorBrush x:Key="ButtonFocusVisualPrimaryBrush" Color="{ThemeResource SystemColorHighlightTextColor}" />
<SolidColorBrush x:Key="Mic" Color="{ThemeResource SystemColorHighlightColor}" />
<SolidColorBrush x:Key="ScreenShare" Color="{ThemeResource SystemColorHighlightColor}" />
<SolidColorBrush x:Key="ToolTipBackground" Color="{ThemeResource SystemColorInfoColor}" />
<SolidColorBrush x:Key="VisionFlyoutBorderBrush" Color="{ThemeResource SystemColorWindowTextColor}" />
<Thickness x:Key="VisionFlyoutBorderThickness">1</Thickness>
<CornerRadius x:Key="VisionFlyoutBorderCornerRadius">24</CornerRadius>
<SolidColorBrush x:Key="HighlightedTextBrush" Color="{ThemeResource SystemColorHighlightTextColor}" />
<SolidColorBrush x:Key="TranscriptV2SpokenTextBrush" Color="{ThemeResource SystemColorWindowTextColor}" />
<SolidColorBrush x:Key="TranscriptV2GreyTextBrush" Color="{ThemeResource SystemColorGrayTextColor}" />
<SolidColorBrush x:Key="TranscriptV2UserBubbleBgBrush" Color="{ThemeResource SystemColorHighlightColor}" />
<SolidColorBrush x:Key="TranscriptV2UserBubbleTextBrush" Color="{ThemeResource SystemColorHighlightTextColor}" />
<SolidColorBrush x:Key="TranscriptV2ResizeGripBrush" Color="{ThemeResource SystemColorGrayTextColor}" />
<Color x:Key="TranscriptV2FadeColor">#000000</Color>
<SolidColorBrush x:Key="TranscriptV2FadeBrush" Color="{ThemeResource SystemColorWindowColor}" />
<SolidColorBrush x:Key="P2TMicFreSurfaceBrush" Color="{ThemeResource SystemColorWindowColor}" />
<SolidColorBrush x:Key="P2TMicFreBorderBrush" Color="{ThemeResource SystemColorWindowTextColor}" />
<SolidColorBrush x:Key="P2TMicFrePrimaryBrush" Color="{ThemeResource SystemColorHighlightColor}" />
<SolidColorBrush x:Key="P2TMicFrePrimaryForegroundBrush" Color="{ThemeResource SystemColorHighlightTextColor}" />
<SolidColorBrush x:Key="P2TMicFreFooterBrush" Color="{ThemeResource SystemColorGrayTextColor}" />
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
<!-- Storyboard for gradient animation -->
<Storyboard x:Name="GradientShiftStoryboard" RepeatBehavior="Forever">
<PointAnimation
AutoReverse="True"
Storyboard.TargetName="AnimatedGradient"
Storyboard.TargetProperty="StartPoint"
From="0,0"
To="1,1"
Duration="0:0:1" />
<PointAnimation
AutoReverse="True"
Storyboard.TargetName="AnimatedGradient"
Storyboard.TargetProperty="EndPoint"
From="1,1"
To="0,0"
Duration="0:0:1" />
</Storyboard>
<!-- Define a Custom ToolTip Style -->
<Style x:Key="CustomToolTipStyle" TargetType="ToolTip">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToolTip">
<Border
Padding="8"
Background="{ThemeResource ToolTipBackground}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="4">
<ContentPresenter
HorizontalAlignment="Center"
VerticalAlignment="Center"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Define a Custom Button Style -->
<Style x:Key="CustomButtonStyle" TargetType="Button">
<Setter Property="MinHeight" Value="44" />
<Setter Property="MinWidth" Value="44" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid Margin="4">
<Border
x:Name="BackgroundElement"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="22">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="PointerOver">
<VisualState.Setters>
<Setter Target="BackgroundElement.Background" Value="{ThemeResource ButtonFocusBackgroundBrush}" />
<Setter Target="BackgroundElement.BorderBrush" Value="Transparent" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Pressed">
<VisualState.Setters>
<Setter Target="BackgroundElement.Background" Value="Transparent" />
<Setter Target="BackgroundElement.BorderBrush" Value="Transparent" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Disabled">
<VisualState.Setters>
<Setter Target="BackgroundElement.Opacity" Value="0.3" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Define a Custom MenuFlyoutSubItem Style -->
<Style x:Key="CustomMenuFlyoutSubItemStyle" TargetType="MenuFlyoutSubItem">
<Setter Property="Margin" Value="2,1,2,1" />
<Setter Property="CornerRadius" Value="5" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="MenuFlyoutSubItem">
<Grid
x:Name="LayoutRoot"
Padding="{TemplateBinding Padding}"
Margin="{TemplateBinding Margin}"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="{TemplateBinding CornerRadius}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<ContentPresenter
Grid.Column="0"
Content="{TemplateBinding Icon}"
Margin="0,0,12,0"
VerticalAlignment="Center" />
<TextBlock
x:Name="TextBlock"
Grid.Column="1"
VerticalAlignment="Center"
Text="{Binding Text, RelativeSource={RelativeSource TemplatedParent}}" />
<FontIcon
x:Name="SubItemChevron"
Grid.Column="2"
Margin="{StaticResource MenuFlyoutItemChevronMargin}"
AutomationProperties.AccessibilityView="Raw"
Foreground="{ThemeResource MenuFlyoutSubItemChevron}"
Glyph=""
MirroredWhenRightToLeft="True" />
</Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="PointerOver" />
<VisualState x:Name="Pressed" />
<VisualState x:Name="SubMenuOpened">
<VisualState.Setters>
<Setter Target="LayoutRoot.Background" Value="{ThemeResource MenuFlyoutSubItemRevealBackgroundPointerOver}" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Disabled" />
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="P2TMicFreCloseButtonStyle" TargetType="Button">
<Setter Property="Padding" Value="0" />
<Setter Property="MinWidth" Value="0" />
<Setter Property="MinHeight" Value="0" />
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderBrush" Value="Transparent" />
</Style>
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<!-- VoiceComposerTranscriptPane - the NeonBrush card. Row 1 stretches to fill its allocated
composer area for the native orb; row 0 independently reserves space for the FRE. -->
<Grid x:Name="VoiceComposerTranscriptPane"
Grid.Row="1"
Margin="8,8,8,16"
VerticalAlignment="Stretch"
Background="Transparent"
CornerRadius="34"
Translation="0, 0, 48">
<Grid.Shadow>
<ThemeShadow />
</Grid.Shadow>
<!-- Resize grip at the top edge - hover shows grip bar opacity, drag resizes transcript -->
<!-- Disabled: resize functionality is temporarily removed; kept for future reuse -->
<Border x:Name="ResizeGripArea"
Height="16"
VerticalAlignment="Top"
HorizontalAlignment="Stretch"
Background="Transparent"
Canvas.ZIndex="10"
Margin="30,0,30,0"
Visibility="Collapsed">
<!-- Visible resize handle bar (appears on hover) -->
<Border x:Name="ResizeGripBar"
Height="4"
Width="40"
CornerRadius="2"
Background="{ThemeResource TranscriptV2ResizeGripBrush}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Opacity="0" />
</Border>
<Border
CornerRadius="34"
Background="{ThemeResource VoiceComposerTranscriptPaneBackgroundBrush}"
BorderBrush="#4DF3F3F3"
BorderThickness="1">
<Border.BackgroundTransition>
<BrushTransition Duration="0:0:0.2" />
</Border.BackgroundTransition>
<Border.Resources>
<ResourceDictionary>
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Light">
<SolidColorBrush x:Key="TranscriptPaneBackgroundBrush" Color="#FFFFFF" />
</ResourceDictionary>
<ResourceDictionary x:Key="Dark">
<SolidColorBrush x:Key="TranscriptPaneBackgroundBrush" Color="#1A1A1A" />
</ResourceDictionary>
<ResourceDictionary x:Key="HighContrast">
<SolidColorBrush x:Key="TranscriptPaneBackgroundBrush" Color="{ThemeResource SystemColorWindowColor}" />
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>
</Border.Resources>
<Grid>
<Grid.RowDefinitions>
<!-- Row 0 = orb (OrbRow: grows to ~210 when there's no transcript so the orb
shows big/centered, shrinks to 140 when the transcript is up). Row 1 (star)
= transcript / zero-query below the orb. Row 2 (auto) = bar. -->
<RowDefinition x:Name="OrbRow" Height="210" />
<RowDefinition x:Name="TranscriptRow" Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- Transcript content area -->
<Grid x:Name="TranscriptGrid"
Grid.Row="1"
Visibility="Collapsed"
VerticalAlignment="Stretch"
Margin="0,0,0,0">
<!-- TransitionOverlay for transcript animations -->
<Grid x:Name="TransitionOverlay"
Background="Transparent"
Visibility="Collapsed"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch" />
<!-- V1: Original single RichTextBlock transcript -->
<ScrollViewer x:Name="TranscriptScrollViewer"
Padding="24,24,24,16"
VerticalScrollBarVisibility="Auto"
VerticalScrollMode="Auto"
HorizontalScrollBarVisibility="Disabled"
HorizontalScrollMode="Disabled"
Background="{ThemeResource TranscriptPaneBackgroundBrush}">
<RichTextBlock x:Name="TranscriptTextBlock"
FontFamily="Segoe UI, Segoe UI Emoji, Segoe UI Symbol"
FontWeight="Normal"
FontSize="20"
Foreground="{ThemeResource SystemControlForegroundBaseHighBrush}"
TextWrapping="Wrap"
LineHeight="28"
VerticalAlignment="Top"
HorizontalAlignment="Left"
IsTextScaleFactorEnabled="False"
OpticalMarginAlignment="None"
TextLineBounds="Full">
<Paragraph x:Name="TranscriptParagraph">
</Paragraph>
</RichTextBlock>
</ScrollViewer>
<!-- V2: Chat-style transcript with user bubbles and greyed bot text -->
<ScrollViewer x:Name="TranscriptV2ScrollViewer"
Padding="0,4,0,0"
VerticalScrollBarVisibility="Auto"
VerticalScrollMode="Auto"
HorizontalScrollBarVisibility="Disabled"
HorizontalScrollMode="Disabled"
Background="{ThemeResource TranscriptPaneBackgroundBrush}"
Visibility="Collapsed">
<StackPanel x:Name="TranscriptV2Container"
Orientation="Vertical"
Spacing="12"
Padding="16,0,16,16">
<!-- User query bubble (dynamically shown) -->
<Border x:Name="UserBubbleBorder"
Background="{ThemeResource TranscriptV2UserBubbleBgBrush}"
BorderThickness="0"
CornerRadius="16"
HorizontalAlignment="Right"
MaxWidth="320"
Margin="0,6,0,0"
Padding="16,12,16,12"
Visibility="Collapsed">
<TextBlock x:Name="UserBubbleText"
FontFamily="Segoe UI, Segoe UI Emoji, Segoe UI Symbol"
FontSize="18"
FontStyle="Italic"
FontWeight="Normal"
TextWrapping="Wrap"
LineHeight="26"
Foreground="{ThemeResource TranscriptV2UserBubbleTextBrush}"
IsTextScaleFactorEnabled="False"
HighContrastAdjustment="None" />
</Border>
<!-- Bot response with greyed preview + highlighted text -->
<RichTextBlock x:Name="TranscriptV2TextBlock"
FontFamily="Segoe UI, Segoe UI Emoji, Segoe UI Symbol"
FontWeight="Normal"
FontSize="18"
TextWrapping="Wrap"
LineHeight="26"
VerticalAlignment="Top"
HorizontalAlignment="Left"
IsTextScaleFactorEnabled="False"
OpticalMarginAlignment="None"
TextLineBounds="Full"
Padding="8,0,8,0">
<Paragraph x:Name="TranscriptV2Paragraph">
</Paragraph>
</RichTextBlock>
</StackPanel>
</ScrollViewer>
</Grid>
<!--
Bebop / NeonBrush orb host in the OrbRow (Row 0). NeonBrushOrbPlaceholder is
sized big (189x182) when there's no transcript and small (140x140) when the
transcript is up (see UpdateNeonBrushOrbLayout, which also sets OrbRow height).
While connecting the orb renders its grey error/connecting state; it moves to
Idle once the mic is ready. The native orb (Direct3D 11 composited) renders
into NeonBrushOrbPlaceholder.
-->
<Border x:Name="ClothPanelHost"
Grid.Row="0"
Background="Transparent"
IsHitTestVisible="False"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Border x:Name="NeonBrushOrbPlaceholder"
Width="189"
Height="182"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="Transparent"
IsHitTestVisible="False"
Visibility="Visible" />
</Grid>
</Border>
<!--
Bebop / NeonBrush inline zero-query suggestions ("Try saying...").
Shown inside the Live Mode window (NeonBrush layout) instead of the
ZeroQuerySuggestionFlyout overlay. Populated from C++
(ShowZeroQuerySuggestions, NeonBrush branch) and Collapsed by default.
Sits in the content row (Row 0) above the always-visible bar; hidden as
soon as the user speaks (the transcript takes over).
-->
<Border x:Name="InlineZeroQueryPane"
Grid.Row="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
Background="Transparent"
Padding="20,8,20,12"
Visibility="Collapsed">
<StackPanel Orientation="Vertical" Spacing="14" HorizontalAlignment="Stretch">
<TextBlock x:Name="InlineZeroQueryHeader"
FontFamily="Segoe UI, Segoe UI Emoji, Segoe UI Symbol"
FontSize="13"
Foreground="{ThemeResource ZeroQueryHeaderBrush}"
HorizontalAlignment="Center"
TextAlignment="Center"
IsTextScaleFactorEnabled="False" />
<StackPanel x:Name="InlineZeroQuerySuggestionList"
Orientation="Vertical"
Spacing="14"
HorizontalAlignment="Stretch" />
</StackPanel>
</Border>
<!--
Bebop / NeonBrush inline screen-share picker (vision). Overlays the
content row (Row 0) with the card background so the transcript /
zero-query behind it is covered, while the always-visible bar (Row 1)
stays interactive. Declared after the other Row-0 content so it renders
on top in z-order. Shown from C++ (ScreenShareButton click, NeonBrush
branch); ScreenShareFlyout::PopulateInlineMenu fills
InlineScreenShareItemsPanel (localized title + Displays / Open-windows
sections + items). The Cancel button dismisses the picker and restores
the previous view. Collapsed by default.
-->
<!-- Screen-share picker overlay. The card's rows are content-sized (the star row
collapses when there's no transcript), so this pane uses an explicit Height to
fill the card instead of relying on Stretch; the picker-open path forces the
window to its full fixed height so this never clips. Inner: Row 0 = scrollable
list, Row 1 = Cancel button pinned at the bottom. -->
<Grid x:Name="InlineScreenSharePane"
Grid.Row="0"
Grid.RowSpan="3"
Canvas.ZIndex="20"
Height="514"
VerticalAlignment="Bottom"
HorizontalAlignment="Stretch"
Background="{ThemeResource TranscriptPaneBackgroundBrush}"
Visibility="Collapsed">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- Picker list area + loading placeholder -->
<Grid Grid.Row="0">
<ScrollViewer VerticalScrollMode="Auto"
VerticalScrollBarVisibility="Auto"
HorizontalScrollMode="Disabled"
HorizontalScrollBarVisibility="Disabled">
<StackPanel x:Name="InlineScreenShareItemsPanel" Orientation="Vertical">
<!-- Header styles mirror the screenShareFlyout's Border.Resources so the
inline title / section headers (built by ScreenShareFlyout::BuildInitialContent
via MakeHeaderTextBlock, which falls back to this panel's resources when
there is no flyout) match the overlay picker's typography. -->
<StackPanel.Resources>
<Style TargetType="TextBlock" x:Key="ScreenShareTitleTextStyle">
<Setter Property="FontSize" Value="14" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="Padding" Value="18,12,18,8" />
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="AutomationProperties.HeadingLevel" Value="Level1" />
</Style>
<Style TargetType="TextBlock" x:Key="ScreenShareSubheaderTextStyle">
<Setter Property="FontSize" Value="12" />
<Setter Property="FontWeight" Value="Normal" />
<Setter Property="Padding" Value="18,6,18,6" />
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="AutomationProperties.HeadingLevel" Value="Level2" />
</Style>
</StackPanel.Resources>
</StackPanel>
</ScrollViewer>
<StackPanel x:Name="InlineScreenShareLoadingPlaceholder"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Spacing="12">
<ProgressRing IsActive="True" Width="32" Height="32" />
<TextBlock x:Name="InlineLiveModeLoadingScreens"
HorizontalAlignment="Center"
FontSize="14" />
</StackPanel>
</Grid>
<!-- Cancel button (Figma): full-width, pinned to the bottom of the picker. Its
localized Content is set from C++ (VisionCancelButton). -->
<Button x:Name="InlineScreenShareCancelButton"
Grid.Row="1"
HorizontalAlignment="Stretch"
HorizontalContentAlignment="Center"
Height="48"
Margin="8"
Padding="0,10,0,10"
CornerRadius="25"
FontWeight="SemiBold"
IsTabStop="True"
AutomationProperties.Name="Cancel" />
</Grid>
<!--
Bebop / NeonBrush inline vision-consent overlay host (MSA users). Empty
full-card container: the consent card itself is VisionConsent.xaml, loaded +
localized + wired in C++ (ShowInlineVisionConsent) and parented here, so the
flyout popup and this inline overlay share ONE markup + ONE localization path.
Covers the content row(s) with the card background while the always-visible bar
(Row 2) stays behind it. Pinned to full height while open. Collapsed by default;
on accept the picker that follows reuses InlineScreenSharePane.
-->
<Grid x:Name="InlineVisionConsentHost"
Grid.Row="0"
Grid.RowSpan="3"
Canvas.ZIndex="21"
Height="514"
VerticalAlignment="Bottom"
HorizontalAlignment="Stretch"
Background="{ThemeResource TranscriptPaneBackgroundBrush}"
Visibility="Collapsed" />
<!-- Bebop / NeonBrush: notifications other than screen-share render as
separate rounded pills ABOVE the voice pill; the voice pill (which holds
the screen-share notification inside it) sits below.
Overlay (NOT stacked above the pill): spans the orb + transcript rows and is
bottom-anchored just above the pill row, so the pills grow UPWARD and clip at
the card top WITHOUT changing the pill's row height. This keeps the voice bar
pinned to the window bottom and always visible in the fixed-height
(captions-on) window, even with many notifications. -->
<StackPanel x:Name="ExternalNotificationStackPanel"
Grid.Row="0"
Grid.RowSpan="2"
Canvas.ZIndex="15"
Orientation="Vertical"
Margin="0,0,0,8"
Spacing="8"
VerticalAlignment="Bottom"
HorizontalAlignment="Stretch"
Visibility="Collapsed" />
<StackPanel x:Name="LiveBarStack"
Grid.Row="2"
VerticalAlignment="Bottom"
HorizontalAlignment="Stretch">
<!-- ShadowContainerGrid stays inside VoiceComposerTranscriptPane -->
<Grid x:Name="ShadowContainerGrid"
Margin="8,8,8,8"
HorizontalAlignment="Center"
Background="Transparent"
CornerRadius="28">
<Border
x:Name="GradientBorder"
CornerRadius="28"
Background="{ThemeResource LiveBarBackgroundBrush}"
BorderBrush="{ThemeResource LiveBarBorderBrush}"
BorderThickness="1">
<!-- No margin needed - overlay approach prevents layout shifts --> <Grid x:Name="ContainerGrid" CornerRadius="28">
<Grid.Resources>
<ResourceDictionary>
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Light">
<SolidColorBrush x:Key="CustomButtonFocusVisualPrimaryBrush">#F3F3F3</SolidColorBrush>
<SolidColorBrush x:Key="CustomButtonHoverBackground">#d3d3d3</SolidColorBrush>
</ResourceDictionary>
<ResourceDictionary x:Key="Dark">
<SolidColorBrush x:Key="CustomButtonFocusVisualPrimaryBrush">#CCCCCC</SolidColorBrush>
<SolidColorBrush x:Key="CustomButtonHoverBackground">#333333</SolidColorBrush>
</ResourceDictionary>
<ResourceDictionary x:Key="HighContrast">
<SolidColorBrush x:Key="CustomButtonFocusVisualPrimaryBrush" Color="{ThemeResource SystemColorHighlightTextColor}" />
<SolidColorBrush x:Key="CustomButtonHoverBackground" Color="{ThemeResource SystemColorHighlightColor}" />
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
<Style x:Key="NotificationCustomButtonStyle" TargetType="Button">
<Setter Property="MinWidth" Value="16"/>
<Setter Property="MinHeight" Value="16"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="Padding" Value="0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid
Width="{TemplateBinding MinWidth}"
Height="{TemplateBinding MinHeight}"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<Ellipse
x:Name="HoverCircle"
Width="{TemplateBinding MinWidth}"
Height="{TemplateBinding MinHeight}"
Fill="Transparent"
HorizontalAlignment="Center"
VerticalAlignment="Center"
RenderTransformOrigin="0.5,0.5">
<Ellipse.RenderTransform>
<CompositeTransform x:Name="HoverTransform"
ScaleX="1" ScaleY="1"/>
</Ellipse.RenderTransform>
</Ellipse>
<ContentPresenter
HorizontalAlignment="Center"
VerticalAlignment="Center"
Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}" />
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="PointerOver">
<VisualState.Setters>
<Setter Target="HoverCircle.Fill"
Value="{ThemeResource CustomButtonHoverBackground}" />
<Setter Target="HoverTransform.ScaleX" Value="2.2"/>
<Setter Target="HoverTransform.ScaleY" Value="2.2"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Pressed">
<VisualState.Setters>
<Setter Target="HoverCircle.Fill" Value="Transparent"/>
<Setter Target="HoverTransform.ScaleX" Value="1"/>
<Setter Target="HoverTransform.ScaleY" Value="1"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ResourceDictionary>
</Grid.Resources>
<!--
Overlay layout: no RowDefinitions — both notification pane and button bar
are bottom-anchored in the same Grid cell. This ensures the button bar
screen position = ContainerGrid_bottom − 0 = constant throughout the
window expand/collapse animation (no row-height recalculation, no overflow).
VoiceComposerNotificationPane sits immediately above the bar via Margin.Bottom=60
(VoiceComposerBar height). When the window shrinks, the notification is clipped
at the top by the window frame — the bar never moves.
-->
<Grid x:Name="VoiceComposerNotificationPane"
VerticalAlignment="Bottom"
Margin="0,0,0,60"
Visibility="Collapsed"
Background="Transparent"
>
<StackPanel x:Name="NotificationStackPanel"
VerticalAlignment="Bottom"
Orientation="Vertical"
Spacing="1">
<!-- Notifications will be added here dynamically -->
</StackPanel>
</Grid>
<Grid
x:Name="VoiceComposerBar"
Padding="4"
VerticalAlignment="Bottom"
HorizontalAlignment="Center"
CornerRadius="28"
Background="{ThemeResource LiveBarBackgroundBrush}">
<StackPanel
Grid.Column="1"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Horizontal">
<!-- Settings button - your code will create the flyout dynamically -->
<Button
Name="SettingsButton"
Background="Transparent"
BorderBrush="Transparent"
IsTabStop="True"
Style="{StaticResource CustomButtonStyle}"
>
<ToolTipService.ToolTip>
<ToolTip Style="{StaticResource CustomToolTipStyle}" />
</ToolTipService.ToolTip>
<Viewbox Width="16" Height="16" Stretch="Uniform">
<FontIcon
Margin="0"
FontSize="16"
AutomationProperties.AccessibilityView="Raw"
Glyph="" />
</Viewbox>
<Button.Flyout>
<MenuFlyout x:Name="settingsFlyout">
<MenuFlyout.MenuFlyoutPresenterStyle>
<Style TargetType="MenuFlyoutPresenter">
<Setter Property="Background" Value="{ThemeResource LiveBarBackgroundBrush}" />
<Setter Property="BorderBrush" Value="{ThemeResource LiveBarBorderBrush}" />
</Style>
</MenuFlyout.MenuFlyoutPresenterStyle>
<!-- Caption toggle (Bebop): one-click turn captions on/off; Text set from C++ -->
<MenuFlyoutItem x:Name="CaptionToggleItem">
<MenuFlyoutItem.Icon>
<FontIcon Glyph="" FontSize="16" />
</MenuFlyoutItem.Icon>
</MenuFlyoutItem>
<MenuFlyoutSeparator />
<!-- Microphone List -->
<MenuFlyoutSubItem
x:Name="MicrophoneSubMenu"
Style="{StaticResource CustomMenuFlyoutSubItemStyle}">
<MenuFlyoutSubItem.Icon>
<FontIcon Glyph="" FontSize="16" />
</MenuFlyoutSubItem.Icon>
<MenuFlyoutItem
x:Name="NoMicrophonesItem"
IsEnabled="False"
Visibility="Collapsed" />
</MenuFlyoutSubItem>
<!-- Speaker List -->
<MenuFlyoutSubItem
x:Name="SpeakerSubMenu"
Style="{StaticResource CustomMenuFlyoutSubItemStyle}">
<MenuFlyoutSubItem.Icon>
<FontIcon Glyph="" FontSize="16" />
</MenuFlyoutSubItem.Icon>
<MenuFlyoutItem
x:Name="NoSpeakersItem"
IsEnabled="False"
Visibility="Collapsed" />
</MenuFlyoutSubItem>
<!-- ACS Diagnostics (gated by WebRTCACSDiagnosticsEnabled) -->
<MenuFlyoutSeparator
x:Name="diagnosticsSeparator"
Visibility="Collapsed" />
<MenuFlyoutItem
x:Name="exportDiagnosticsItem"
Text="Export Logs"
Visibility="Collapsed" />
</MenuFlyout>
</Button.Flyout>
</Button>
<Button Name="ScreenShareButton"
AutomationProperties.HelpText="Open screen share menu"
AutomationProperties.Name="Screen Share"
Background="Transparent"
BorderBrush="Transparent"
IsTabStop="True"
Visibility="Collapsed"
Style="{StaticResource CustomButtonStyle}"
>
<ToolTipService.ToolTip>
<ToolTip x:Name="LiveModeShareScreenToolTipContent" Style="{StaticResource CustomToolTipStyle}" />
</ToolTipService.ToolTip>
<Viewbox Width="16" Height="16" VerticalAlignment="Center" HorizontalAlignment="Center">
<FontIcon FontFamily="ms-appx:///Assets/Fonts/CopilotIcons.ttf#Copilot Fluent Icons"
Glyph=""
AutomationProperties.AccessibilityView="Raw"/>
</Viewbox>
<Button.Flyout>
<Flyout x:Name="screenShareFlyout"
Placement="Top"
ShouldConstrainToRootBounds="False">
<Flyout.FlyoutPresenterStyle>
<Style TargetType="FlyoutPresenter">
<Setter Property="Padding" Value="0" />
<Setter Property="Margin" Value="0" />
<Setter Property="BorderBrush" Value="{ThemeResource VisionFlyoutBorderBrush}" />
<Setter Property="BorderThickness" Value="1" />
<Setter Property="CornerRadius" Value="24" />
<Setter Property="Width" Value="360" />
<Setter Property="MaxHeight" Value="440" />
<Setter Property="MinHeight" Value="100" />
<Setter Property="IsTabStop" Value="True" />
<Setter Property="AllowFocusOnInteraction" Value="True" />
<Setter Property="AutomationProperties.Name" Value="M365 Copilot Vision" />
<Setter Property="AutomationProperties.AutomationId" Value="ScreenShareFlyoutPresenter" />
<!-- Disable entrance animation -->
<Setter Property="Transitions">
<Setter.Value>
<TransitionCollection />
</Setter.Value>
</Setter>
<!-- Prevent auto-sizing -->
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="FlyoutPresenter">
<Border x:Name="LayoutRoot"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="{TemplateBinding CornerRadius}"
Padding="{TemplateBinding Padding}"
Width="{TemplateBinding Width}"
Height="{TemplateBinding Height}">
<ContentPresenter Content="{TemplateBinding Content}"
ContentTemplate="{TemplateBinding ContentTemplate}"
Margin="{TemplateBinding Padding}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="RenderTransform">
<Setter.Value>
<TranslateTransform Y="-16"/>
</Setter.Value>
</Setter>
</Style>
</Flyout.FlyoutPresenterStyle>
<Border x:Uid="VisionFlyoutBorder"
Background="Transparent"
BorderBrush="{ThemeResource VisionFlyoutBorderBrush}"
BorderThickness="{ThemeResource VisionFlyoutBorderThickness}"
CornerRadius="{ThemeResource VisionFlyoutBorderCornerRadius}"
MaxHeight="440"
Padding="0"
AutomationProperties.AutomationId="VisionFlyoutBorder">
<Border.Resources>
<ResourceDictionary>
<!-- Implicit styles that apply to all elements in this flyout -->
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" />
</Style>
<Style TargetType="Button">
<Setter Property="Foreground" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" />
</Style>
<!-- ScrollBar style with vertical offset -->
<Style TargetType="ScrollBar">
<Setter Property="Margin" Value="0,36,0,36" />
</Style>
<!-- Header text styles (sizing + theming moved out of C++) -->
<Style TargetType="TextBlock" x:Key="ScreenShareTitleTextStyle">
<Setter Property="FontSize" Value="14" />
<Setter Property="FontWeight" Value="SemiBold" />
<Setter Property="Padding" Value="18,12,18,8" />
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="AutomationProperties.HeadingLevel" Value="Level1" />
</Style>
<Style TargetType="TextBlock" x:Key="ScreenShareSubheaderTextStyle">
<Setter Property="FontSize" Value="12" />
<Setter Property="FontWeight" Value="Normal" />
<Setter Property="Padding" Value="18,6,18,6" />
<Setter Property="TextWrapping" Value="Wrap" />
<Setter Property="AutomationProperties.HeadingLevel" Value="Level2" />
</Style>
</ResourceDictionary>
</Border.Resources>
<ScrollViewer VerticalScrollMode="Auto"
VerticalScrollBarVisibility="Auto"
HorizontalScrollMode="Disabled"
HorizontalScrollBarVisibility="Disabled"
Height="440"
Width="360">
<Grid>
<!-- Loading placeholder content -->
<StackPanel x:Name="LoadingPlaceholder"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Spacing="12">
<ProgressRing IsActive="True" Width="32" Height="32" />
<TextBlock x:Name="LiveModeLoadingScreens"
HorizontalAlignment="Center"
FontSize="14" />
</StackPanel>
<StackPanel x:Name="ScreenShareItemsPanel" Orientation="Vertical" />
<!-- Content will be populated dynamically -->
</Grid>
</ScrollViewer>
</Border>
</Flyout>
</Button.Flyout>
</Button>
<Button
Name="StopScreenShareButton"
Background="Transparent"
BorderBrush="Transparent"
Visibility="Collapsed"
IsTabStop="True"
Style="{StaticResource CustomButtonStyle}"
>
<ToolTipService.ToolTip>
<ToolTip x:Name="LiveModeStopScreenShareToolTipContent" Style="{StaticResource CustomToolTipStyle}"/>
</ToolTipService.ToolTip>
<Grid Width="16" Height="16">
<Viewbox Width="16" Height="16" VerticalAlignment="Center" HorizontalAlignment="Center">
<FontIcon FontFamily="ms-appx:///Assets/Fonts/CopilotIcons.ttf#Copilot Fluent Icons"
Glyph=""
Foreground="{ThemeResource ScreenShare}"
AutomationProperties.AccessibilityView="Raw"/>
</Viewbox>
<Ellipse Width="7" Height="7"
Fill="{ThemeResource SystemFillColorCriticalBrush}"
Stroke="{ThemeResource LiveBarBackgroundBrush}"
StrokeThickness="1"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Margin="0,-2,-4,0"/>
</Grid>
</Button>
<Viewbox
Name="micOffElement"
Width="16"
Height="16"
Visibility="Visible"
Margin="16,0">
<FontIcon
AutomationProperties.AccessibilityView="Raw"
Glyph=""
Opacity="0.4" />
</Viewbox>
<Grid
x:Name="micLoadingGrid"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Width="44"
Height="44"
Visibility="Collapsed">
<!-- Lottie feasibility test: AnimatedVisualPlayer is a framework
control so it loads via runtime XamlReader::Load; its Source is
the ported LottieGen UserSpeakingLight, set in C++ (code-behind),
because custom IAnimatedVisualSource types can't be expressed in
runtime markup. -->
<muxc:AnimatedVisualPlayer
x:Name="LottiePlayer"
Width="32"
Height="32"
AutoPlay="True"
VerticalAlignment="Center"
HorizontalAlignment="Center"/>
</Grid>
<Grid
x:Name="micButtonGrid"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Visibility="Collapsed">
<Grid.Resources>
<!-- Smooth Fade-In Animation -->
<Storyboard x:Name="MicCircleFadeIn">
<ColorAnimation
Storyboard.TargetName="MicButtonCircle"
Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"
To="#B0BEFF"
Duration="0:0:0.4" />
<DoubleAnimation
Storyboard.TargetName="MicButtonCircle"
Storyboard.TargetProperty="Opacity"
To="0.4"
Duration="0:0:0.4" />
</Storyboard>
<!-- Smooth Fade-Out Animation -->
<Storyboard x:Name="MicCircleFadeOut">
<ColorAnimation
Storyboard.TargetName="MicButtonCircle"
Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)"
To="Transparent"
Duration="0:0:0.4" />
<DoubleAnimation
Storyboard.TargetName="MicButtonCircle"
Storyboard.TargetProperty="Opacity"
To="0.0"
Duration="0:0:0.4" />
</Storyboard>
</Grid.Resources>
<!-- Small circular background for speaking indicator -->
<Ellipse
x:Name="MicButtonCircle"
Width="40"
Height="40"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Fill="Transparent" />
<!-- Mic button -->
<Button
Name="MicButton"
HorizontalAlignment="Center"
VerticalAlignment="Center"
AutomationProperties.LiveSetting="Polite"
Background="Transparent"
BorderBrush="Transparent"
IsTabStop="True"
Style="{StaticResource CustomButtonStyle}"
>
<ToolTipService.ToolTip>
<ToolTip Style="{StaticResource CustomToolTipStyle}" />
</ToolTipService.ToolTip>
<Grid Width="16" Height="16" HorizontalAlignment="Center" VerticalAlignment="Center" AutomationProperties.AccessibilityView="Raw">
<Viewbox Width="16" Height="16" Stretch="Uniform" AutomationProperties.Name="MicOnIconViewbox" AutomationProperties.AccessibilityView="Raw">
<FontIcon
x:Name="MicOnIcon"
Margin="0"
FontSize="16"
AutomationProperties.AccessibilityView="Raw"
Glyph="" />
<ToolTipService.ToolTip>
<ToolTip x:Name="MicOnToolTip" Style="{StaticResource CustomToolTipStyle}" />
</ToolTipService.ToolTip>
</Viewbox>
<!-- Mic Off Icon -->
<Viewbox Width="16" Height="16" Stretch="Uniform" AutomationProperties.Name="MicOffIconViewbox" AutomationProperties.AccessibilityView="Raw">
<FontIcon
x:Name="MicOffIcon"
AutomationProperties.Name="MicOffIcon"
FontSize="16"
AutomationProperties.AccessibilityView="Raw"
Glyph=""
Visibility="Collapsed" />
<ToolTipService.ToolTip>
<ToolTip x:Name="MicOffToolTip" Style="{StaticResource CustomToolTipStyle}" />
</ToolTipService.ToolTip>
</Viewbox>
</Grid>
</Button>
</Grid>
<Button
Name="DismissButton"
Background="Transparent"
BorderBrush="Transparent"
IsTabStop="True"
Style="{StaticResource CustomButtonStyle}"
>
<ToolTipService.ToolTip>
<ToolTip Placement="Top" Style="{StaticResource CustomToolTipStyle}" />
</ToolTipService.ToolTip>
<Grid Width="32" Height="32">
<Ellipse Fill="{ThemeResource DismissButtonBackgroundBrush}" />
<Viewbox Width="14" Height="14" Stretch="Uniform" HorizontalAlignment="Center" VerticalAlignment="Center">
<FontIcon
Margin="0"
FontSize="16"
AutomationProperties.AccessibilityView="Raw"
FontFamily="ms-appx:///Assets/Fonts/CopilotIcons.ttf#Copilot Fluent Icons"
Foreground="{ThemeResource DismissButtonForegroundBrush}"
Glyph="" />
</Viewbox>
</Grid>
</Button>
</StackPanel>
</Grid>
</Grid>
</Border>
</Grid>
</StackPanel>
</Grid>
</Border>
</Grid>
<!-- The FRE fully takes over the composer window: it spans both rows so no composer
content (or window background) can show around it, and it carries no top/side inset
so the card fills the window edge-to-edge. The composer pane in the row below is
collapsed while the FRE is up (see VoiceComposer.Fre.cpp). -->
<Border x:Name="P2TMicFreOverlay"
Grid.Row="0"
Grid.RowSpan="2"
Width="384"
Margin="0"
Padding="0"
HorizontalAlignment="Center"
VerticalAlignment="Top"
Background="Transparent"
BorderThickness="0"
Canvas.ZIndex="1000"
Visibility="Collapsed">
<Grid>
<Border x:Name="P2TMicFreCard"
Margin="0"
Background="{ThemeResource P2TMicFreSurfaceBrush}"
BorderBrush="{ThemeResource P2TMicFreBorderBrush}"
BorderThickness="1"
CornerRadius="24"
Translation="0,0,16">
<Border.Shadow>
<ThemeShadow />
</Border.Shadow>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="156" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Border Grid.Row="0"
Background="{ThemeResource P2TMicFreSurfaceBrush}"
CornerRadius="24,24,0,0">
<Image x:Name="P2TMicFreImage" Stretch="UniformToFill"
HorizontalAlignment="Center"
VerticalAlignment="Center"
AutomationProperties.AccessibilityView="Raw" />
</Border>
<Button x:Name="P2TMicFreCloseButton"
Grid.Row="0"
Width="32"
Height="32"
Margin="0,6,6,0"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Style="{StaticResource P2TMicFreCloseButtonStyle}">
<ToolTipService.ToolTip>
<ToolTip x:Name="P2TMicFreCloseToolTip"
Placement="Top"
Style="{StaticResource CustomToolTipStyle}" />
</ToolTipService.ToolTip>
<FontIcon FontSize="16"
AutomationProperties.AccessibilityView="Raw"
FontFamily="ms-appx:///Assets/Fonts/CopilotIcons.ttf#Copilot Fluent Icons"
Foreground="#1A1A1A"
Glyph="" />
</Button>
<StackPanel Grid.Row="1"
Padding="20,16,20,20"
Spacing="0">
<TextBlock x:Name="P2TMicFreTitleText"
Margin="0,0,0,8"
Text="Meet copilot voice and vision"
FontSize="18"
FontWeight="SemiBold"
LineHeight="24"
TextWrapping="Wrap" />
<!-- Body and bullet inlines are built in code from single
localized sentences (P2TMicFreBody / P2TMicFreBullet1-3) that
carry {0}/{1} placeholders for the bold terms, so translators
can reorder the words and place the bold terms per language. -->
<TextBlock x:Name="P2TMicFreBodyText"
Margin="0,0,0,16"
FontSize="14"
LineHeight="20"
TextWrapping="Wrap" />
<Grid Margin="0,0,0,12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="32" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<PathIcon Grid.Column="0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
AutomationProperties.AccessibilityView="Raw"
Data="F1 M17.132 1.05993C17.3751 0.92894 17.6783 1.01982 17.8093 1.26291C18.5693 2.6734 19.0004 4.28714 19.0004 6.0001C19.0004 7.71305 18.5693 9.3268 17.8093 10.7373C17.6783 10.9804 17.3751 11.0713 17.132 10.9403C16.8889 10.8093 16.798 10.506 16.929 10.2629C17.6124 8.9946 18.0004 7.54341 18.0004 6.0001C18.0004 4.45679 17.6124 3.00559 16.929 1.73728C16.798 1.49418 16.8889 1.19092 17.132 1.05993ZM14.8072 3.03436C15.062 2.92789 15.3549 3.04813 15.4613 3.30292C15.8085 4.13367 16 5.04516 16 6.0001C16 6.95505 15.8085 7.86653 15.4613 8.69729C15.3549 8.95208 15.062 9.07231 14.8072 8.96584C14.5524 8.85937 14.4322 8.5665 14.5387 8.31171C14.8357 7.60093 15 6.82034 15 6.0001C15 5.17987 14.8357 4.39928 14.5387 3.68849C14.4322 3.4337 14.5524 3.14084 14.8072 3.03436ZM5 6.0001C5 3.79096 6.79086 2.0001 9 2.0001C11.2091 2.0001 13 3.79096 13 6.0001C13 8.20924 11.2091 10.0001 9 10.0001C6.79086 10.0001 5 8.20924 5 6.0001ZM9 3.0001C7.34315 3.0001 6 4.34324 6 6.0001C6 7.65695 7.34315 9.0001 9 9.0001C10.6569 9.0001 12 7.65695 12 6.0001C12 4.34324 10.6569 3.0001 9 3.0001ZM2 13.0001C2 11.887 2.90315 11.0001 4.00873 11.0001L14 11.0001C15.1045 11.0001 16 11.8957 16 13.0001C16 14.6913 15.1672 15.9664 13.865 16.7967C12.583 17.6141 10.8547 18.0001 9 18.0001C7.14526 18.0001 5.41697 17.6141 4.13499 16.7967C2.83281 15.9664 2 14.6913 2 13.0001ZM4.00873 12.0001C3.44786 12.0001 3 12.4468 3 13.0001C3 14.3089 3.62226 15.2838 4.67262 15.9535C5.74318 16.6361 7.26489 17.0001 9 17.0001C10.7351 17.0001 12.2568 16.6361 13.3274 15.9535C14.3777 15.2838 15 14.3089 15 13.0001C15 12.4479 14.5522 12.0001 14 12.0001L4.00873 12.0001Z" />
<TextBlock x:Name="P2TMicFreBullet1Text"
Grid.Column="1"
FontSize="14"
LineHeight="20"
TextWrapping="Wrap" />
</Grid>
<Grid Margin="0,0,0,12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="32" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<PathIcon Grid.Column="0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
AutomationProperties.AccessibilityView="Raw"
Data="F1 M10 14C9.72386 14 9.5 13.7761 9.5 13.5L9.5 7.7071L7.85355 9.35355C7.65829 9.54882 7.34171 9.54882 7.14645 9.35355C6.95118 9.15829 6.95118 8.84171 7.14645 8.64645L9.64645 6.14645C9.84171 5.95118 10.1583 5.95118 10.3536 6.14645L12.8536 8.64645C13.0488 8.84171 13.0488 9.15829 12.8536 9.35355C12.6583 9.54882 12.3417 9.54882 12.1464 9.35355L10.5 7.70711L10.5 13.5C10.5 13.7761 10.2761 14 10 14ZM2 6C2 4.89543 2.89543 4 4 4H16C17.1046 4 18 4.89543 18 6V14C18 15.1046 17.1046 16 16 16H4C2.89543 16 2 15.1046 2 14V6ZM4 5C3.44772 5 3 5.44772 3 6V14C3 14.5523 3.44772 15 4 15H16C16.5523 15 17 14.5523 17 14V6C17 5.44772 16.5523 5 16 5H4Z" />
<TextBlock x:Name="P2TMicFreBullet2Text"
Grid.Column="1"
FontSize="14"
LineHeight="20"
TextWrapping="Wrap" />
</Grid>
<Grid Margin="0,0,0,12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="32" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<PathIcon Grid.Column="0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
AutomationProperties.AccessibilityView="Raw"
Data="F1 M13.8536 7.85355C14.0488 7.65829 14.0488 7.34171 13.8536 7.14645C13.6583 6.95118 13.3417 6.95118 13.1464 7.14645L9.5 10.7929L7.85355 9.14645C7.65829 8.95119 7.34171 8.95119 7.14645 9.14645C6.95118 9.34171 6.95118 9.65829 7.14645 9.85355L9.14645 11.8536C9.34171 12.0488 9.65829 12.0488 9.85355 11.8536L13.8536 7.85355ZM10.2774 2.08397C10.1094 1.97201 9.8906 1.97201 9.72265 2.08397C7.78446 3.3761 5.68833 4.18231 3.42929 4.50503C3.18296 4.54021 3 4.75118 3 5V9.5C3 13.3913 5.30699 16.2307 9.82051 17.9667C9.93605 18.0111 10.064 18.0111 10.1795 17.9667C14.693 16.2307 17 13.3913 17 9.5V5C17 4.75118 16.817 4.54021 16.5707 4.50503C14.3117 4.18231 12.2155 3.3761 10.2774 2.08397ZM4 5.42787C5.98541 5.09055 7.85275 4.39606 9.59914 3.34583L10 3.09715L10.4009 3.34583C12.1473 4.39606 14.0146 5.09055 16 5.42787V9.5C16 12.8921 14.0321 15.3634 10 16.9632C5.96795 15.3634 4 12.8921 4 9.5V5.42787Z" />
<TextBlock x:Name="P2TMicFreBullet3Text"
Grid.Column="1"
FontSize="14"
LineHeight="20"
TextWrapping="Wrap" />
</Grid>
<Grid Margin="0,0,0,16">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="32" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<PathIcon Grid.Column="0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
AutomationProperties.AccessibilityView="Raw"
Data="F1 M10 13C11.6569 13 13 11.6568 13 9.99998V5C13 3.34315 11.6569 2 10 2C8.34315 2 7 3.34315 7 5V9.99998C7 11.6568 8.34315 13 10 13ZM10 12C8.89543 12 8 11.1046 8 9.99998V5C8 3.89543 8.89543 3 10 3C11.1046 3 12 3.89543 12 5V9.99998C12 11.1046 11.1046 12 10 12ZM5 9.49998C5.27614 9.49998 5.5 9.72384 5.5 9.99998C5.5 12.4853 7.51472 14.5 10 14.5C12.4853 14.5 14.5 12.4853 14.5 9.99998C14.5 9.72384 14.7239 9.49998 15 9.49998C15.2761 9.49998 15.5 9.72384 15.5 9.99998C15.5 12.869 13.3033 15.2249 10.5 15.4776V17.5C10.5 17.7761 10.2761 18 10 18C9.72386 18 9.5 17.7761 9.5 17.5V15.4776C6.69675 15.2249 4.5 12.869 4.5 9.99998C4.5 9.72384 4.72386 9.49998 5 9.49998Z" />
<TextBlock x:Name="P2TMicFreBullet4Text"
Grid.Column="1"
FontSize="14"
LineHeight="20"
Text="We will need access to your microphone."
TextWrapping="Wrap" />
</Grid>
<!-- Footer: "Change your existing shortcut settings here." The
"here." hyperlink opens the Copilot-key shortcut settings. The
prefix + link text are set from resources and the click is wired
in VoiceComposer.Fre.cpp (mirrors the OfficeHomeUWP P2T Mic FRE). -->
<TextBlock x:Name="P2TMicFreFooterText"
Margin="0,0,0,16"
FontSize="14"
Foreground="{ThemeResource P2TMicFreFooterBrush}"
LineHeight="20"
TextWrapping="Wrap"><Run x:Name="P2TMicFreFooterPrefixRun" /><Hyperlink x:Name="P2TMicFreFooterLink" Foreground="{ThemeResource P2TMicFreFooterBrush}" UnderlineStyle="Single"><Run x:Name="P2TMicFreFooterLinkRun" /></Hyperlink></TextBlock>
<Button x:Name="P2TMicFreTryNowButton"
Height="40"
Padding="0"
HorizontalAlignment="Stretch"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center"
Background="{ThemeResource P2TMicFrePrimaryBrush}"
BorderBrush="Transparent"
Content="Try now"
CornerRadius="20"
FontSize="14"
Foreground="{ThemeResource P2TMicFrePrimaryForegroundBrush}">
<Button.Resources>
<StaticResource x:Key="ButtonBackgroundPointerOver"
ResourceKey="P2TMicFrePrimaryBrush" />
<StaticResource x:Key="ButtonBackgroundPressed"
ResourceKey="P2TMicFrePrimaryBrush" />
<StaticResource x:Key="ButtonForegroundPointerOver"
ResourceKey="P2TMicFrePrimaryForegroundBrush" />
<StaticResource x:Key="ButtonForegroundPressed"
ResourceKey="P2TMicFrePrimaryForegroundBrush" />
<SolidColorBrush x:Key="ButtonBorderBrushPointerOver" Color="Transparent" />
<SolidColorBrush x:Key="ButtonBorderBrushPressed" Color="Transparent" />
</Button.Resources>
</Button>
</StackPanel>
</Grid>
</Border>
</Grid>
</Border>
</Grid>
</UserControl>