<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2015 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<resources>

    <!-- AppCompat theme (day/night vesion) for activities. -->
    <style name="Theme.AppCompat.DayNight" parent="Theme.AppCompat.Light" />

    <!-- Variant of AppCompat.DayNight that has a solid (opaque) action bar
         with an inverse color profile. The dark action bar sharply stands out against
         the light content (when applicable).  -->
    <style name="Theme.AppCompat.DayNight.DarkActionBar" parent="Theme.AppCompat.Light.DarkActionBar" />

    <!-- Variant of AppCompat.DayNight with no action bar.  -->
    <style name="Theme.AppCompat.DayNight.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar" />

    <!-- AppCompat theme (day/night vesion) for dialog windows and activities,
         which is used by the {@candroidx.appcompat.app.app.Dialog} class. This changes
         the window to be floating (not fill the entire screen), and puts a
         frame around its contents. You can set this theme on an activity if
         you would like to make an activity that looks like a Dialog. -->
    <style name="Theme.AppCompat.DayNight.Dialog" parent="Theme.AppCompat.Light.Dialog" />

    <!-- Variant of Theme.AppCompat.DayNight.Dialog that has a nice minimum width for
         a regular dialog. -->
    <style name="Theme.AppCompat.DayNight.Dialog.MinWidth" parent="Theme.AppCompat.Light.Dialog.MinWidth" />

    <!-- Theme for a window that will be displayed either full-screen on
         smaller screens (small, normal) or as a dialog on larger screens
         (large, xlarge). -->
    <style name="Theme.AppCompat.DayNight.DialogWhenLarge" parent="Theme.AppCompat.Light.DialogWhenLarge" />

    <!-- AppCompat user theme for alert dialog windows, which is used by the
         {@candroidx.appcompat.app.app.AlertDialog} class. -->
    <style name="Theme.AppCompat.DayNight.Dialog.Alert" parent="Theme.AppCompat.Light.Dialog.Alert" />

    <!-- Variant of ThemeOverlay.AppCompat which switches to light/dark based on the night mode. -->
    <style name="ThemeOverlay.AppCompat.DayNight" parent="ThemeOverlay.AppCompat.Light" />

    <!-- Variant of ThemeOverlay.AppCompat.ActionBar which switches to light/dark based on the night mode. -->
    <style name="ThemeOverlay.AppCompat.DayNight.ActionBar">
        <item name="colorControlNormal">?android:attr/textColorPrimary</item>
        <item name="searchViewStyle">@style/Widget.AppCompat.SearchView.ActionBar</item>
    </style>

</resources>