diff --git a/TEST_MAPPING b/TEST_MAPPING
index 0bde595..72b9f3a 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -1,12 +1,28 @@
 {
   "presubmit": [
     {
+      "name": "WallpaperPicker2Tests",
+      "options": [
+        {
+          "exclude-annotation": "org.junit.Ignore"
+        }
+      ]
+    },
+    {
       "name": "ThemePickerTests",
       "options": [
         {
           "exclude-annotation": "org.junit.Ignore"
         }
       ]
+    },
+    {
+      "name": "WallpaperPickerGoogleTests",
+      "options": [
+        {
+          "exclude-annotation": "org.junit.Ignore"
+        }
+      ]
     }
   ]
 }
diff --git a/res/color/keyguard_quick_affordance_slot_tab_background_color.xml b/res/color/picker_fragment_tab_background_color.xml
similarity index 90%
rename from res/color/keyguard_quick_affordance_slot_tab_background_color.xml
rename to res/color/picker_fragment_tab_background_color.xml
index 4708cef..6edf5f8 100644
--- a/res/color/keyguard_quick_affordance_slot_tab_background_color.xml
+++ b/res/color/picker_fragment_tab_background_color.xml
@@ -16,6 +16,6 @@
   -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_selected="true" android:color="@color/color_accent_primary" />
+    <item android:state_selected="true" android:color="@color/system_primary" />
     <item android:color="@android:color/transparent" />
 </selector>
diff --git a/res/color/picker_fragment_tab_text_color.xml b/res/color/picker_fragment_tab_text_color.xml
index 84502d4..438e4fc 100644
--- a/res/color/picker_fragment_tab_text_color.xml
+++ b/res/color/picker_fragment_tab_text_color.xml
@@ -16,6 +16,6 @@
   -->
 
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_selected="true" android:color="@color/text_color_on_accent" />
-    <item android:color="@color/text_color_primary" />
+    <item android:state_selected="true" android:color="@color/system_on_primary" />
+    <item android:color="@color/system_on_surface" />
 </selector>
diff --git a/res/drawable/carousel_item_card_background.xml b/res/drawable/carousel_item_card_background.xml
new file mode 100644
index 0000000..946d279
--- /dev/null
+++ b/res/drawable/carousel_item_card_background.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2023 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.
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/color_surface" />
+    <corners android:radius="16dp" />
+</shape>
\ No newline at end of file
diff --git a/res/drawable/clock_color_size_button_background.xml b/res/drawable/clock_color_size_button_background.xml
new file mode 100644
index 0000000..08d1c45
--- /dev/null
+++ b/res/drawable/clock_color_size_button_background.xml
@@ -0,0 +1,27 @@
+<!--
+     Copyright (C) 2023 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.
+-->
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+    android:color="?android:colorControlHighlight">
+
+    <item android:id="@android:id/mask">
+        <shape android:shape="rectangle">
+            <corners android:radius="@dimen/clock_color_size_button_corner_radius" />
+            <solid android:color="?android:colorControlHighlight" />
+        </shape>
+    </item>
+
+    <item android:drawable="@drawable/clock_color_size_button_background_base" />
+</ripple>
diff --git a/res/drawable/clock_color_size_button_background_base.xml b/res/drawable/clock_color_size_button_background_base.xml
new file mode 100644
index 0000000..2e6f2be
--- /dev/null
+++ b/res/drawable/clock_color_size_button_background_base.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright (C) 2023 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.
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="@dimen/clock_color_size_button_corner_radius" />
+    <solid android:color="@color/color_surface" />
+</shape>
\ No newline at end of file
diff --git a/res/drawable/color_option_selected_no_background.xml b/res/drawable/color_option_selected_no_background.xml
index 13451a5..365d70a 100644
--- a/res/drawable/color_option_selected_no_background.xml
+++ b/res/drawable/color_option_selected_no_background.xml
@@ -25,7 +25,7 @@
             android:innerRadius="@dimen/component_color_overflow_small_radius_default"
             android:thickness="2dp"
             android:useLevel="false">
-            <solid android:color="@color/text_color_primary"/>
+            <solid android:color="@color/system_secondary"/>
         </shape>
     </item>
     <item
diff --git a/res/drawable/ic_contrast.xml b/res/drawable/ic_contrast.xml
index 6e9f3bd..c95220c 100644
--- a/res/drawable/ic_contrast.xml
+++ b/res/drawable/ic_contrast.xml
@@ -2,7 +2,7 @@
     android:width="24dp"
     android:height="24dp"
     android:autoMirrored="true"
-    android:tint="@color/text_color_primary_inverse"
+    android:tint="@color/system_on_secondary"
     android:viewportHeight="24"
     android:viewportWidth="24">
     <path
diff --git a/res/drawable/ic_settings.xml b/res/drawable/ic_settings.xml
new file mode 100644
index 0000000..1a5b281
--- /dev/null
+++ b/res/drawable/ic_settings.xml
@@ -0,0 +1,24 @@
+<!--
+     Copyright (C) 2023 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="960"
+    android:viewportHeight="960">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M370,880L354,752Q341,747 329.5,740Q318,733 307,725L188,775L78,585L181,507Q180,500 180,493.5Q180,487 180,480Q180,473 180,466.5Q180,460 181,453L78,375L188,185L307,235Q318,227 330,220Q342,213 354,208L370,80L590,80L606,208Q619,213 630.5,220Q642,227 653,235L772,185L882,375L779,453Q780,460 780,466.5Q780,473 780,480Q780,487 780,493.5Q780,500 778,507L881,585L771,775L653,725Q642,733 630,740Q618,747 606,752L590,880L370,880ZM440,800L519,800L533,694Q564,686 590.5,670.5Q617,655 639,633L738,674L777,606L691,541Q696,527 698,511.5Q700,496 700,480Q700,464 698,448.5Q696,433 691,419L777,354L738,286L639,328Q617,305 590.5,289.5Q564,274 533,266L520,160L441,160L427,266Q396,274 369.5,289.5Q343,305 321,327L222,286L183,354L269,418Q264,433 262,448Q260,463 260,480Q260,496 262,511Q264,526 269,541L183,606L222,674L321,632Q343,655 369.5,670.5Q396,686 427,694L440,800ZM482,620Q540,620 581,579Q622,538 622,480Q622,422 581,381Q540,340 482,340Q423,340 382.5,381Q342,422 342,480Q342,538 382.5,579Q423,620 482,620ZM480,480L480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480Q480,480 480,480L480,480L480,480L480,480Q480,480 480,480Q480,480 480,480L480,480L480,480Z"/>
+</vector>
diff --git a/res/drawable/picker_fragment_background.xml b/res/drawable/picker_fragment_background.xml
index 3a49d7a..49fa48b 100644
--- a/res/drawable/picker_fragment_background.xml
+++ b/res/drawable/picker_fragment_background.xml
@@ -16,5 +16,5 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
     <corners android:radius="28dp" />
-    <solid android:color="@color/color_surface" />
+    <solid android:color="@color/picker_fragment_background" />
 </shape>
diff --git a/res/drawable/picker_fragment_tab_background.xml b/res/drawable/picker_fragment_tab_background.xml
index 3dad344..2742c72 100644
--- a/res/drawable/picker_fragment_tab_background.xml
+++ b/res/drawable/picker_fragment_tab_background.xml
@@ -16,5 +16,5 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
     <corners android:radius="12dp" />
-    <solid android:color="@color/keyguard_quick_affordance_slot_tab_background_color" />
+    <solid android:color="@color/picker_fragment_tab_background_color" />
 </shape>
diff --git a/res/drawable/saturation_progress_drawable.xml b/res/drawable/saturation_progress_drawable.xml
index 6ba7e81..1461abe 100644
--- a/res/drawable/saturation_progress_drawable.xml
+++ b/res/drawable/saturation_progress_drawable.xml
@@ -24,7 +24,7 @@
             <shape>
                 <size android:height="4dp" />
                 <corners android:radius="2dp" />
-                <solid android:color="@color/color_surface_variant" />
+                <solid android:color="@color/system_outline_variant" />
             </shape>
         </inset>
     </item>
diff --git a/res/drawable/saturation_progress_full_drawable.xml b/res/drawable/saturation_progress_full_drawable.xml
index 9d14bcd..02be02a 100644
--- a/res/drawable/saturation_progress_full_drawable.xml
+++ b/res/drawable/saturation_progress_full_drawable.xml
@@ -21,7 +21,7 @@
         android:height="48dp">
         <shape>
             <size android:height="48dp" />
-            <solid android:color="@color/color_accent_primary" />
+            <solid android:color="@color/system_secondary" />
             <corners android:radius="24dp"/>
         </shape>
     </item>
diff --git a/res/layout/clock_carousel.xml b/res/layout/clock_carousel.xml
index 35defd6..e93a697 100644
--- a/res/layout/clock_carousel.xml
+++ b/res/layout/clock_carousel.xml
@@ -22,76 +22,167 @@
     android:layout_height="match_parent"
     app:layoutDescription="@xml/carousel_scene">
 
-    <com.android.wallpaper.picker.DisplayAspectRatioFrameLayout
+    <FrameLayout
         android:id="@+id/item_view_0"
-        android:layout_width="@dimen/clock_carousel_item_width"
-        android:layout_height="@dimen/clock_carousel_item_height"
+        android:layout_width="@dimen/screen_preview_width"
+        android:layout_height="wrap_content"
         android:layout_marginEnd="@dimen/clock_carousel_item_margin"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toStartOf="@+id/item_view_1"
         app:layout_constraintTop_toTopOf="parent">
-        <FrameLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:layout_gravity="center" />
-    </com.android.wallpaper.picker.DisplayAspectRatioFrameLayout>
 
-    <com.android.wallpaper.picker.DisplayAspectRatioFrameLayout
+        <View
+            android:id="@+id/item_card_0"
+            android:layout_width="@dimen/clock_carousel_item_card_width"
+            android:layout_height="@dimen/clock_carousel_item_card_height"
+            android:layout_gravity="center"
+            android:background="@drawable/carousel_item_card_background"/>
+
+        <com.android.wallpaper.picker.FixedWidthDisplayRatioFrameLayout
+            android:id="@+id/clock_scale_view_0"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:clipChildren="false"
+            android:importantForAccessibility="noHideDescendants">
+            <com.android.customization.picker.clock.ui.view.ClockHostView
+                android:id="@+id/clock_host_view_0"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_gravity="center"
+                android:clipChildren="false" />
+        </com.android.wallpaper.picker.FixedWidthDisplayRatioFrameLayout>
+    </FrameLayout>
+
+    <FrameLayout
         android:id="@+id/item_view_1"
-        android:layout_width="@dimen/clock_carousel_item_width"
-        android:layout_height="@dimen/clock_carousel_item_height"
+        android:layout_width="@dimen/screen_preview_width"
+        android:layout_height="wrap_content"
         android:layout_marginEnd="@dimen/clock_carousel_item_margin"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toStartOf="@+id/item_view_2"
-        app:layout_constraintTop_toTopOf="parent" >
-        <FrameLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:layout_gravity="center" />
-    </com.android.wallpaper.picker.DisplayAspectRatioFrameLayout>
+        app:layout_constraintTop_toTopOf="parent">
 
-    <com.android.wallpaper.picker.DisplayAspectRatioFrameLayout
+        <View
+            android:id="@+id/item_card_1"
+            android:layout_width="@dimen/clock_carousel_item_card_width"
+            android:layout_height="@dimen/clock_carousel_item_card_height"
+            android:layout_gravity="center"
+            android:background="@drawable/carousel_item_card_background"/>
+
+        <com.android.wallpaper.picker.FixedWidthDisplayRatioFrameLayout
+            android:id="@+id/clock_scale_view_1"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:clipChildren="false"
+            android:importantForAccessibility="noHideDescendants">
+            <com.android.customization.picker.clock.ui.view.ClockHostView
+                android:id="@+id/clock_host_view_1"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_gravity="center"
+                android:clipChildren="false"/>
+        </com.android.wallpaper.picker.FixedWidthDisplayRatioFrameLayout>
+    </FrameLayout>
+
+    <FrameLayout
         android:id="@+id/item_view_2"
-        android:layout_width="@dimen/clock_carousel_item_width"
-        android:layout_height="@dimen/clock_carousel_item_height"
+        android:layout_width="@dimen/screen_preview_width"
+        android:layout_height="wrap_content"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintHorizontal_bias="0.5"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent">
-        <FrameLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:layout_gravity="center" />
-    </com.android.wallpaper.picker.DisplayAspectRatioFrameLayout>
 
-    <com.android.wallpaper.picker.DisplayAspectRatioFrameLayout
+        <View
+            android:id="@+id/item_card_2"
+            android:layout_width="@dimen/clock_carousel_item_card_width"
+            android:layout_height="@dimen/clock_carousel_item_card_height"
+            android:alpha="0.0"
+            android:layout_gravity="center"
+            android:background="@drawable/carousel_item_card_background"/>
+
+        <com.android.wallpaper.picker.FixedWidthDisplayRatioFrameLayout
+            android:id="@+id/clock_scale_view_2"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:clipChildren="false"
+            android:importantForAccessibility="noHideDescendants">
+            <com.android.customization.picker.clock.ui.view.ClockHostView
+                android:id="@+id/clock_host_view_2"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_gravity="center"
+                android:clipChildren="false"/>
+        </com.android.wallpaper.picker.FixedWidthDisplayRatioFrameLayout>
+    </FrameLayout>
+
+    <FrameLayout
         android:id="@+id/item_view_3"
-        android:layout_width="@dimen/clock_carousel_item_width"
-        android:layout_height="@dimen/clock_carousel_item_height"
+        android:layout_width="@dimen/screen_preview_width"
+        android:layout_height="wrap_content"
         android:layout_marginStart="@dimen/clock_carousel_item_margin"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toEndOf="@+id/item_view_2"
-        app:layout_constraintTop_toTopOf="parent" >
-        <FrameLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:layout_gravity="center" />
-    </com.android.wallpaper.picker.DisplayAspectRatioFrameLayout>
+        app:layout_constraintTop_toTopOf="parent">
 
-    <com.android.wallpaper.picker.DisplayAspectRatioFrameLayout
+        <View
+            android:id="@+id/item_card_3"
+            android:layout_width="@dimen/clock_carousel_item_card_width"
+            android:layout_height="@dimen/clock_carousel_item_card_height"
+            android:layout_gravity="center"
+            android:background="@drawable/carousel_item_card_background"/>
+
+        <com.android.wallpaper.picker.FixedWidthDisplayRatioFrameLayout
+            android:id="@+id/clock_scale_view_3"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:clipChildren="false"
+            android:importantForAccessibility="noHideDescendants">
+            <com.android.customization.picker.clock.ui.view.ClockHostView
+                android:id="@+id/clock_host_view_3"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_gravity="center"
+                android:clipChildren="false"/>
+        </com.android.wallpaper.picker.FixedWidthDisplayRatioFrameLayout>
+    </FrameLayout>
+
+    <FrameLayout
         android:id="@+id/item_view_4"
-        android:layout_width="@dimen/clock_carousel_item_width"
-        android:layout_height="@dimen/clock_carousel_item_height"
+        android:layout_width="@dimen/screen_preview_width"
+        android:layout_height="wrap_content"
         android:layout_marginStart="@dimen/clock_carousel_item_margin"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toEndOf="@+id/item_view_3"
-        app:layout_constraintTop_toTopOf="parent" >
-        <FrameLayout
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:layout_gravity="center" />
-    </com.android.wallpaper.picker.DisplayAspectRatioFrameLayout>
+        app:layout_constraintTop_toTopOf="parent">
+
+        <View
+            android:id="@+id/item_card_4"
+            android:layout_width="@dimen/clock_carousel_item_card_width"
+            android:layout_height="@dimen/clock_carousel_item_card_height"
+            android:layout_gravity="center"
+            android:background="@drawable/carousel_item_card_background"/>
+
+        <com.android.wallpaper.picker.FixedWidthDisplayRatioFrameLayout
+            android:id="@+id/clock_scale_view_4"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:clipChildren="false"
+            android:importantForAccessibility="noHideDescendants">
+            <com.android.customization.picker.clock.ui.view.ClockHostView
+                android:id="@+id/clock_host_view_4"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_gravity="center"
+                android:clipChildren="false" />
+        </com.android.wallpaper.picker.FixedWidthDisplayRatioFrameLayout>
+    </FrameLayout>
 
     <androidx.constraintlayout.helper.widget.Carousel
         android:id="@+id/carousel"
diff --git a/res/layout/clock_carousel_view.xml b/res/layout/clock_carousel_view.xml
index f1c959c..9add933 100644
--- a/res/layout/clock_carousel_view.xml
+++ b/res/layout/clock_carousel_view.xml
@@ -17,4 +17,4 @@
 <com.android.customization.picker.clock.ui.view.ClockCarouselView
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="@dimen/screen_preview_height" />
\ No newline at end of file
+    android:layout_height="match_parent" />
\ No newline at end of file
diff --git a/res/layout/clock_color_and_size_button.xml b/res/layout/clock_color_and_size_button.xml
new file mode 100644
index 0000000..bb2b77d
--- /dev/null
+++ b/res/layout/clock_color_and_size_button.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:minHeight="@dimen/clock_color_size_button_min_height"
+    android:background="@drawable/clock_color_size_button_background"
+    android:orientation="horizontal"
+    android:gravity="center_vertical"
+    android:paddingVertical="@dimen/clock_color_size_button_vertical_padding"
+    android:paddingHorizontal="@dimen/clock_color_size_button_horizontal_padding">
+
+    <ImageView
+        android:layout_width="@dimen/clock_color_size_button_icon_size"
+        android:layout_height="@dimen/clock_color_size_button_icon_size"
+        android:src="@drawable/ic_settings"
+        android:importantForAccessibility="no"
+        android:tint="@color/system_primary"
+        android:layout_marginEnd="@dimen/clock_color_size_button_icon_margin_end"
+        tools:ignore="UseAppTint" />
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textColor="@color/system_primary"
+        android:text="@string/clock_color_and_size_title" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/clock_color_option.xml b/res/layout/clock_color_option.xml
new file mode 100644
index 0000000..786d633
--- /dev/null
+++ b/res/layout/clock_color_option.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+     Copyright (C) 2023 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.
+-->
+<!-- Content description is set programmatically on the parent FrameLayout -->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="@dimen/option_item_size"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:clipChildren="false">
+
+    <include layout="@layout/color_option_2"/>
+
+    <TextView
+        android:id="@+id/text"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/option_bottom_margin"
+        android:textColor="@color/text_color_primary"
+        android:maxLines="2"
+        android:hyphenationFrequency="normal"
+        android:ellipsize="end"
+        android:visibility="invisible"
+        android:gravity="center_horizontal"
+        android:text="Placeholder for stable size calculation, please do not remove."
+        tools:ignore="HardcodedText" />
+</LinearLayout>
+
diff --git a/res/layout/clock_option.xml b/res/layout/clock_option.xml
deleted file mode 100644
index e65cb65..0000000
--- a/res/layout/clock_option.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-     Copyright (C) 2019 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.
--->
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:paddingRight="2dp"
-    android:paddingBottom="@dimen/option_bottom_margin"
-    android:clipChildren="false"
-    android:clipToPadding="false"
-    android:orientation="vertical">
-
-    <TextView
-        android:id="@+id/option_label"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_horizontal"
-        android:layout_marginBottom="@dimen/theme_option_label_margin"
-        android:textAppearance="@style/OptionTitleTextAppearance"/>
-    <FrameLayout
-        android:id="@+id/option_tile"
-        android:layout_width="@dimen/option_tile_width"
-        android:layout_height="@dimen/option_tile_width"
-        android:layout_gravity="center_horizontal"
-        android:paddingHorizontal="@dimen/option_tile_padding_horizontal"
-        android:paddingVertical="@dimen/option_tile_padding_vertical"
-        android:background="@drawable/option_border">
-        <ImageView
-            android:id="@+id/clock_option_thumbnail"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"/>
-    </FrameLayout>
-</LinearLayout>
diff --git a/res/layout/clock_section_view.xml b/res/layout/clock_section_view.xml
index 31f08fc..0632601 100644
--- a/res/layout/clock_section_view.xml
+++ b/res/layout/clock_section_view.xml
@@ -20,7 +20,7 @@
     android:layout_height="wrap_content"
     android:background="?selectableItemBackground"
     android:clickable="true"
-    android:paddingVertical="@dimen/section_top_padding"
+    android:paddingVertical="@dimen/section_padding"
     android:paddingHorizontal="@dimen/section_horizontal_padding"
     android:orientation="horizontal">
 
diff --git a/res/layout/clock_size_radio_button_group.xml b/res/layout/clock_size_radio_button_group.xml
index 4264007..2aa78d2 100644
--- a/res/layout/clock_size_radio_button_group.xml
+++ b/res/layout/clock_size_radio_button_group.xml
@@ -57,6 +57,7 @@
         android:id="@+id/button_container_small"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
+        android:minHeight="@dimen/touch_target_min_height"
         android:orientation="horizontal">
 
         <RadioButton
diff --git a/res/layout/color_option_2.xml b/res/layout/color_option_2.xml
index 2ac0fe6..dff03d0 100644
--- a/res/layout/color_option_2.xml
+++ b/res/layout/color_option_2.xml
@@ -16,14 +16,14 @@
 <!-- Content description is set programmatically on the parent FrameLayout -->
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
+    android:layout_width="@dimen/option_item_size"
     android:layout_height="wrap_content"
     android:orientation="vertical"
     android:clipChildren="false">
     <FrameLayout
         android:id="@+id/icon_container"
-        android:layout_width="@dimen/option_tile_width"
-        android:layout_height="@dimen/option_tile_width"
+        android:layout_width="@dimen/option_item_size"
+        android:layout_height="@dimen/option_item_size"
         android:clipChildren="false">
 
         <ImageView
@@ -41,50 +41,11 @@
             android:background="@drawable/option_item_background"
             android:importantForAccessibility="no" />
 
-        <FrameLayout
-            android:id="@id/foreground"
+        <com.android.customization.picker.color.ui.view.ColorOptionIconView
+            android:id="@+id/foreground"
             android:layout_width="match_parent"
-            android:layout_height="match_parent">
-            <ImageView
-                android:id="@+id/color_preview_0"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center"
-                android:layout_marginRight="@dimen/color_seed_chip_margin"
-                android:layout_marginBottom="@dimen/color_seed_chip_margin"
-                android:src="@drawable/color_chip_seed_filled0"
-                android:importantForAccessibility="no"/>
-
-            <ImageView
-                android:id="@+id/color_preview_1"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center"
-                android:layout_marginLeft="@dimen/color_seed_chip_margin"
-                android:layout_marginBottom="@dimen/color_seed_chip_margin"
-                android:src="@drawable/color_chip_seed_filled2"
-                android:importantForAccessibility="no"/>
-
-            <ImageView
-                android:id="@+id/color_preview_2"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center"
-                android:layout_marginRight="@dimen/color_seed_chip_margin"
-                android:layout_marginTop="@dimen/color_seed_chip_margin"
-                android:src="@drawable/color_chip_seed_filled1"
-                android:importantForAccessibility="no"/>
-
-            <ImageView
-                android:id="@+id/color_preview_3"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center"
-                android:layout_marginLeft="@dimen/color_seed_chip_margin"
-                android:layout_marginTop="@dimen/color_seed_chip_margin"
-                android:src="@drawable/color_chip_seed_filled3"
-                android:importantForAccessibility="no" />
-        </FrameLayout>
+            android:layout_height="match_parent"
+            android:layout_margin="@dimen/color_seed_chip_margin2"/>
     </FrameLayout>
 </LinearLayout>
 
diff --git a/res/layout/color_option_no_background.xml b/res/layout/color_option_no_background.xml
index b90b480..3b8e2dc 100644
--- a/res/layout/color_option_no_background.xml
+++ b/res/layout/color_option_no_background.xml
@@ -34,63 +34,17 @@
         constraint percentage is sized to leave a padding for the outer selection outline,
         proportionate to 2dp for a 40dp color wheel
     -->
-    <androidx.constraintlayout.widget.ConstraintLayout
+    <com.android.customization.picker.color.ui.view.ColorOptionIconView
         android:id="@+id/option_tile"
         android:layout_width="0dp"
         android:layout_height="0dp"
         android:layout_gravity="center"
-        android:gravity="center"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintWidth_percent="0.909">
-
-        <ImageView
-            android:id="@+id/color_preview_0"
-            android:layout_width="0dp"
-            android:layout_height="0dp"
-            android:adjustViewBounds="true"
-            android:src="@drawable/color_chip_seed_filled0"
-            app:layout_constraintHeight_percent=".50"
-            app:layout_constraintLeft_toLeftOf="parent"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintWidth_percent=".50" />
-
-        <ImageView
-            android:id="@+id/color_preview_1"
-            android:layout_width="0dp"
-            android:layout_height="0dp"
-            android:adjustViewBounds="true"
-            android:src="@drawable/color_chip_seed_filled2"
-            app:layout_constraintHeight_percent=".50"
-            app:layout_constraintLeft_toRightOf="@id/color_preview_0"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintWidth_percent=".50" />
-
-        <ImageView
-            android:id="@+id/color_preview_2"
-            android:layout_width="0dp"
-            android:layout_height="0dp"
-            android:adjustViewBounds="true"
-            android:src="@drawable/color_chip_seed_filled1"
-            app:layout_constraintHeight_percent=".50"
-            app:layout_constraintLeft_toLeftOf="parent"
-            app:layout_constraintTop_toBottomOf="@id/color_preview_0"
-            app:layout_constraintWidth_percent=".50" />
-
-        <ImageView
-            android:id="@+id/color_preview_3"
-            android:layout_width="0dp"
-            android:layout_height="0dp"
-            android:adjustViewBounds="true"
-            android:src="@drawable/color_chip_seed_filled3"
-            app:layout_constraintHeight_percent=".50"
-            app:layout_constraintLeft_toRightOf="@id/color_preview_2"
-            app:layout_constraintTop_toBottomOf="@id/color_preview_1"
-            app:layout_constraintWidth_percent=".50" />
-    </androidx.constraintlayout.widget.ConstraintLayout>
+        app:layout_constraintWidth_percent="0.909" />
 
     <ImageView
         android:id="@+id/option_selected"
@@ -98,5 +52,6 @@
         android:layout_height="match_parent"
         android:adjustViewBounds="true"
         android:src="@drawable/color_option_selected_no_background"
-        android:visibility="gone"/>
+        android:visibility="gone"
+        android:importantForAccessibility="no" />
 </androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/color_option_overflow_no_background.xml b/res/layout/color_option_overflow_no_background.xml
index fb25c35..abb9c6b 100644
--- a/res/layout/color_option_overflow_no_background.xml
+++ b/res/layout/color_option_overflow_no_background.xml
@@ -51,6 +51,7 @@
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:adjustViewBounds="true"
-            android:src="@drawable/color_overflow" />
+            android:src="@drawable/color_overflow"
+            android:contentDescription="@string/more_colors"/>
     </androidx.constraintlayout.widget.ConstraintLayout>
 </androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/color_option_with_background.xml b/res/layout/color_option_with_background.xml
deleted file mode 100644
index 36990b5..0000000
--- a/res/layout/color_option_with_background.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?><!--
-     Copyright (C) 2023 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.
--->
-<!-- Content description is set programmatically on the parent FrameLayout -->
-<!-- TODO (b/272109171): Remove after clock settings is refactored to use OptionItemAdapter -->
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:orientation="vertical" >
-    <FrameLayout
-        android:id="@+id/icon_container"
-        android:layout_width="@dimen/option_item_size"
-        android:layout_height="@dimen/option_item_size"
-        android:importantForAccessibility="yes">
-
-        <ImageView
-            android:id="@id/selection_border"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:background="@drawable/option_item_border"
-            android:alpha="0"
-            android:importantForAccessibility="no" />
-
-        <ImageView
-            android:id="@id/background"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            android:background="@drawable/option_item_background"
-            android:importantForAccessibility="no" />
-
-        <ImageView
-            android:id="@+id/color_preview_0"
-            android:layout_width="@dimen/component_color_chip_small_radius_default2"
-            android:layout_height="@dimen/component_color_chip_small_radius_default2"
-            android:layout_gravity="center"
-            android:layout_marginRight="@dimen/color_seed_chip_margin2"
-            android:layout_marginBottom="@dimen/color_seed_chip_margin2"
-            android:src="@drawable/color_chip_seed_filled0"
-            android:importantForAccessibility="no"/>
-
-        <ImageView
-            android:id="@+id/color_preview_1"
-            android:layout_width="@dimen/component_color_chip_small_radius_default2"
-            android:layout_height="@dimen/component_color_chip_small_radius_default2"
-            android:layout_gravity="center"
-            android:layout_marginLeft="@dimen/color_seed_chip_margin2"
-            android:layout_marginBottom="@dimen/color_seed_chip_margin2"
-            android:src="@drawable/color_chip_seed_filled2"
-            android:importantForAccessibility="no"/>
-
-        <ImageView
-            android:id="@+id/color_preview_2"
-            android:layout_width="@dimen/component_color_chip_small_radius_default2"
-            android:layout_height="@dimen/component_color_chip_small_radius_default2"
-            android:layout_gravity="center"
-            android:layout_marginRight="@dimen/color_seed_chip_margin2"
-            android:layout_marginTop="@dimen/color_seed_chip_margin2"
-            android:src="@drawable/color_chip_seed_filled1"
-            android:importantForAccessibility="no"/>
-
-        <ImageView
-            android:id="@+id/color_preview_3"
-            android:layout_width="@dimen/component_color_chip_small_radius_default2"
-            android:layout_height="@dimen/component_color_chip_small_radius_default2"
-            android:layout_gravity="center"
-            android:layout_marginLeft="@dimen/color_seed_chip_margin2"
-            android:layout_marginTop="@dimen/color_seed_chip_margin2"
-            android:src="@drawable/color_chip_seed_filled3"
-            android:importantForAccessibility="no"/>
-    </FrameLayout>
-    
-    <TextView
-        android:id="@+id/option_title"
-        android:layout_width="@dimen/option_tile_width"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="@dimen/option_bottom_margin"
-        android:textColor="@color/text_color_primary"
-        android:visibility="gone"
-        android:gravity="center" />
-</LinearLayout>
diff --git a/res/layout/color_section_view2.xml b/res/layout/color_section_view2.xml
index 687bcef..9dbdf15 100644
--- a/res/layout/color_section_view2.xml
+++ b/res/layout/color_section_view2.xml
@@ -37,7 +37,7 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="horizontal"
-        android:paddingVertical="24dp"
+        android:paddingVertical="20dp"
         android:paddingHorizontal="24dp"
         android:weightSum="@integer/color_section_num_columns">
         <include
@@ -58,10 +58,10 @@
         android:gravity="center"
         android:drawablePadding="12dp"
         android:drawableStart="@drawable/ic_nav_color"
-        android:drawableTint="@color/text_color_primary"
+        android:drawableTint="@color/system_primary"
         android:text="@string/more_colors"
         android:textAppearance="@android:style/TextAppearance.DeviceDefault.Small"
-        android:textColor="@color/text_color_primary"
+        android:textColor="@color/system_primary"
         android:visibility="gone"
         tools:ignore="UseCompatTextViewDrawableXml" />
 </com.android.customization.picker.color.ui.view.ColorSectionView2>
diff --git a/res/layout/dark_mode_section_view.xml b/res/layout/dark_mode_section_view.xml
index e1b4b81..27550e2 100644
--- a/res/layout/dark_mode_section_view.xml
+++ b/res/layout/dark_mode_section_view.xml
@@ -22,7 +22,7 @@
     android:clickable="true"
     android:gravity="center_vertical"
     android:orientation="horizontal"
-    android:paddingVertical="@dimen/section_vertical_padding"
+    android:paddingVertical="@dimen/section_padding"
     android:paddingHorizontal="@dimen/section_horizontal_padding">
 
     <TextView
diff --git a/res/layout/fragment_clock_settings.xml b/res/layout/fragment_clock_settings.xml
index 5208222..bb4a0c2 100644
--- a/res/layout/fragment_clock_settings.xml
+++ b/res/layout/fragment_clock_settings.xml
@@ -18,7 +18,9 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:orientation="vertical">
+    android:orientation="vertical"
+    android:clipChildren="false">
+
     <FrameLayout
         android:id="@+id/section_header_container"
         android:layout_width="match_parent"
@@ -31,24 +33,25 @@
         android:layout_width="match_parent"
         android:layout_height="0dp"
         android:layout_weight="1"
-        android:paddingTop="36dp"
-        android:paddingBottom="40dp">
+        android:paddingTop="20dp"
+        android:paddingBottom="40dp"
+        android:clipChildren="false">
 
         <include
             android:id="@+id/lock_preview"
             layout="@layout/wallpaper_preview_card"
-            android:layout_width="match_parent"
+            android:layout_width="0dp"
             android:layout_height="match_parent"
             android:layout_gravity="center" />
 
-        <FrameLayout
+        <com.android.customization.picker.clock.ui.view.ClockHostView
             android:id="@+id/clock_host_view"
+            android:importantForAccessibility="noHideDescendants"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_gravity="center" />
     </com.android.wallpaper.picker.DisplayAspectRatioFrameLayout>
 
-
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
@@ -57,11 +60,14 @@
         android:layout_marginBottom="28dp"
         android:background="@drawable/picker_fragment_background"
         android:paddingTop="22dp"
-        android:paddingBottom="62dp">
+        android:paddingBottom="36dp"
+        android:clipChildren="false">
 
         <FrameLayout
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content">
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="22dp"
+            android:layout_gravity="center_horizontal">
 
             <androidx.recyclerview.widget.RecyclerView
                 android:id="@+id/tabs"
@@ -90,35 +96,50 @@
         <FrameLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:paddingTop="16dp">
+            android:clipChildren="false">
 
             <LinearLayout
                 android:id="@+id/color_picker_container"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:orientation="vertical">
+                android:orientation="vertical"
+                android:clipChildren="false">
 
                 <FrameLayout
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:layout_marginBottom="16dp">
+                    android:clipChildren="false">
 
-                    <androidx.recyclerview.widget.RecyclerView
-                        android:id="@+id/color_options"
+                    <HorizontalScrollView
+                        android:id="@+id/color_options_scroll_view"
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
-                        android:clipToPadding="false"
-                        android:paddingHorizontal="16dp" />
+                        android:clipChildren="false"
+                        android:scrollbars="none">
+
+                        <LinearLayout
+                            android:id="@+id/color_options"
+                            android:clipToPadding="false"
+                            android:clipChildren="false"
+                            android:paddingHorizontal="16dp"
+                            android:layout_marginBottom="16dp"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:orientation="horizontal"
+                            android:divider="@drawable/horizontal_divider_8dp"
+                            android:showDividers="middle" />
+                    </HorizontalScrollView>
 
                     <!--
-                    This is just an invisible placeholder put in place so that the parent keeps its
-                    height stable as the RecyclerView updates from 0 items to N items. Keeping it
-                    stable allows the layout logic to keep the size of the preview container stable
-                    as well, which bodes well for setting up the SurfaceView for remote rendering
-                    without changing its size after the content is loaded into the RecyclerView.
-                    -->
+                        This is just an invisible placeholder put in place so that the parent keeps
+                        its height stable as the RecyclerView updates from 0 items to N items.
+                        Keeping it stable allows the layout logic to keep the size of the preview
+                        container stable as well, which bodes well for setting up the SurfaceView
+                        for remote rendering without changing its size after the content is loaded
+                        into the RecyclerView.
+                        -->
                     <include
-                        layout="@layout/color_option_with_background"
+                        layout="@layout/clock_color_option"
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:visibility="invisible" />
diff --git a/res/layout/grid_section_view.xml b/res/layout/grid_section_view.xml
index ee7b76f..a90ee64 100644
--- a/res/layout/grid_section_view.xml
+++ b/res/layout/grid_section_view.xml
@@ -20,7 +20,7 @@
     android:layout_height="wrap_content"
     android:background="?selectableItemBackground"
     android:clickable="true"
-    android:paddingVertical="@dimen/section_top_padding"
+    android:paddingVertical="@dimen/section_padding"
     android:paddingHorizontal="@dimen/section_horizontal_padding"
     android:orientation="horizontal">
 
diff --git a/res/layout/keyguard_quick_affordance.xml b/res/layout/keyguard_quick_affordance.xml
index 1e5c339..a86489a 100644
--- a/res/layout/keyguard_quick_affordance.xml
+++ b/res/layout/keyguard_quick_affordance.xml
@@ -62,8 +62,10 @@
         android:id="@id/text"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:gravity="center_horizontal"
         android:textColor="@color/text_color_primary"
-        android:singleLine="true"
+        android:maxLines="2"
+        android:hyphenationFrequency="normal"
         android:ellipsize="end"
         android:text="Placeholder for stable size calculation, please do not remove."
         tools:ignore="HardcodedText" />
diff --git a/res/layout/keyguard_quick_affordance_section_view.xml b/res/layout/keyguard_quick_affordance_section_view.xml
index 458f659..7c5babb 100644
--- a/res/layout/keyguard_quick_affordance_section_view.xml
+++ b/res/layout/keyguard_quick_affordance_section_view.xml
@@ -16,11 +16,11 @@
 -->
 <com.android.customization.picker.quickaffordance.ui.view.KeyguardQuickAffordanceSectionView
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
     android:layout_height="wrap_content"
+    android:layout_width="match_parent"
     android:background="?selectableItemBackground"
     android:clickable="true"
-    android:paddingVertical="@dimen/section_top_padding"
+    android:paddingVertical="@dimen/option_section_vertical_padding"
     android:paddingHorizontal="@dimen/section_horizontal_padding"
     android:orientation="horizontal">
 
@@ -28,7 +28,8 @@
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_weight="1"
-        android:orientation="vertical">
+        android:orientation="vertical"
+        android:layout_gravity="center">
 
         <TextView
             android:layout_width="match_parent"
@@ -51,6 +52,7 @@
         android:importantForAccessibility="noHideDescendants"
         android:gravity="center"
         android:divider="@drawable/horizontal_divider_14dp"
+        android:layout_gravity="center"
         android:showDividers="middle">
 
         <ImageView
diff --git a/res/layout/more_settings_section_view.xml b/res/layout/more_settings_section_view.xml
index b60bb45..5745a27 100644
--- a/res/layout/more_settings_section_view.xml
+++ b/res/layout/more_settings_section_view.xml
@@ -20,7 +20,7 @@
     android:layout_height="wrap_content"
     android:background="?selectableItemBackground"
     android:clickable="true"
-    android:paddingVertical="@dimen/section_top_padding"
+    android:paddingVertical="@dimen/section_padding"
     android:paddingHorizontal="@dimen/section_horizontal_padding"
     android:orientation="vertical">
 
diff --git a/res/layout/notification_section.xml b/res/layout/notification_section.xml
index 713624e..f490e00 100644
--- a/res/layout/notification_section.xml
+++ b/res/layout/notification_section.xml
@@ -22,35 +22,25 @@
     android:layout_height="wrap_content"
     android:background="?selectableItemBackground"
     android:clickable="true"
-    android:paddingVertical="@dimen/section_top_padding"
+    android:paddingVertical="@dimen/section_padding"
     android:paddingHorizontal="@dimen/section_horizontal_padding"
     android:orientation="horizontal"
     android:gravity="center_vertical">
 
-    <LinearLayout
+    <TextView
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_weight="1"
-        android:orientation="vertical">
-
-        <TextView
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:text="@string/notifications_section_title"
-            style="@style/SectionTitleTextStyle" />
-
-        <TextView
-            android:id="@+id/subtitle"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            style="@style/SectionSubtitleTextStyle"/>
-    </LinearLayout>
+        android:layout_gravity="center"
+        android:text="@string/show_notifications_on_lock_screen"
+        style="@style/SectionTitleTextStyle"/>
 
     <Switch
         android:id="@+id/switcher"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:clickable="false"
+        android:layout_gravity="center"
         style="@style/Switch.SettingsLib"
         tools:ignore="UseSwitchCompatOrMaterialXml" />
 
diff --git a/res/layout/picker_fragment_tab.xml b/res/layout/picker_fragment_tab.xml
index 2e6e8fa..7aaa776 100644
--- a/res/layout/picker_fragment_tab.xml
+++ b/res/layout/picker_fragment_tab.xml
@@ -14,21 +14,26 @@
   ~ limitations under the License.
   ~
   -->
-
-<TextView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/text"
+<FrameLayout
+    android:id="@+id/text_wrapper"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
-    android:textColor="@color/picker_fragment_tab_text_color"
-    android:paddingVertical="8dp"
-    android:paddingHorizontal="16dp"
-    android:minWidth="48dp"
-    android:minHeight="36dp"
-    android:gravity="center"
-    android:background="@drawable/picker_fragment_tab_background"
-    android:text="Placeholder for stable size calculation, please do not remove."
-    android:maxLines="1"
-    android:ellipsize="end"
-    tools:ignore="HardcodedText" />
+    android:minWidth="@dimen/touch_target_min_width"
+    android:minHeight="@dimen/touch_target_min_height"
+    xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <TextView
+        android:id="@+id/text"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textColor="@color/picker_fragment_tab_text_color"
+        android:paddingVertical="8dp"
+        android:paddingHorizontal="16dp"
+        android:minWidth="48dp"
+        android:minHeight="36dp"
+        android:gravity="center"
+        android:background="@drawable/picker_fragment_tab_background"
+        android:maxLines="1"
+        android:ellipsize="end" />
+
+</FrameLayout>
diff --git a/res/layout/single_clock_view.xml b/res/layout/single_clock_view.xml
index e7ac518..ffc6039 100644
--- a/res/layout/single_clock_view.xml
+++ b/res/layout/single_clock_view.xml
@@ -13,13 +13,15 @@
      See the License for the specific language governing permissions and
      limitations under the License.
 -->
-<com.android.wallpaper.picker.DisplayAspectRatioFrameLayout
+<com.android.wallpaper.picker.FixedWidthDisplayRatioFrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="@dimen/clock_carousel_item_height">
-    <FrameLayout
+    android:layout_width="@dimen/screen_preview_width"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center"
+    android:clipChildren="false">
+    <com.android.customization.picker.clock.ui.view.ClockHostView
         android:id="@+id/single_clock_host_view"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_gravity="center" />
-</com.android.wallpaper.picker.DisplayAspectRatioFrameLayout>
\ No newline at end of file
+</com.android.wallpaper.picker.FixedWidthDisplayRatioFrameLayout>
\ No newline at end of file
diff --git a/res/layout/themed_icon_section_view.xml b/res/layout/themed_icon_section_view.xml
index 95be207..84ef3e8 100644
--- a/res/layout/themed_icon_section_view.xml
+++ b/res/layout/themed_icon_section_view.xml
@@ -22,7 +22,7 @@
     android:clickable="true"
     android:orientation="vertical"
     android:paddingHorizontal="@dimen/section_horizontal_padding"
-    android:paddingVertical="@dimen/section_vertical_padding">
+    android:paddingVertical="@dimen/section_padding">
 
     <LinearLayout
         android:layout_width="match_parent"
diff --git a/res/values-af/clock_colors.xml b/res/values-af/clock_colors.xml
deleted file mode 100644
index f4e0fef..0000000
--- a/res/values-af/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ROOI"</item>
-    <item msgid="6882970855289978213">"ORANJE"</item>
-    <item msgid="5560732545714984533">"GEEL"</item>
-    <item msgid="7246284817845434226">"GROEN"</item>
-    <item msgid="6762906417604676001">"BLOU"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"VIOOLTJIEPERS"</item>
-    <item msgid="6835537356703747621">"GRYS"</item>
-    <item msgid="2470141365136884119">"BLOUGROEN"</item>
-  </string-array>
-</resources>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 4da90a9..e016927 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -40,7 +40,7 @@
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Horlosiegrootte verander na gelang van sluitskerminhoud"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Groot"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"Klein"</string>
-    <string name="grid_title" msgid="1688173478777254123">"Approoster"</string>
+    <string name="grid_title" msgid="1688173478777254123">"Programrooster"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Pas toe"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Tik om te wysig"</string>
     <string name="keep_my_wallpaper" msgid="8012385376769568517">"Hou huidige muurpapier"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Kortpaaie"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Geen"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Kennisgewings"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Wys kennisgewings op die sluitskerm"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Versteek kennisgewings op die sluitskerm"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Meer opsies"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Teks op sluitskerm, Wat Speel, en meer"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"Meer sluitskermopsies"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Privaatheid, Wat Speel, en meer"</string>
     <string name="more_colors" msgid="3191071655353004591">"Nog kleure"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Verstekkleuropsie"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Kleuropsie <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-am/clock_colors.xml b/res/values-am/clock_colors.xml
deleted file mode 100644
index 3da51af..0000000
--- a/res/values-am/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ቀይ"</item>
-    <item msgid="6882970855289978213">"ብርቱካናማ"</item>
-    <item msgid="5560732545714984533">"ቢጫ"</item>
-    <item msgid="7246284817845434226">"አረንጓዴ"</item>
-    <item msgid="6762906417604676001">"ሰማያዊ"</item>
-    <item msgid="8974135109557664892">"ሐምራዊ"</item>
-    <item msgid="786643557830463422">"ወይን ጠጅ"</item>
-    <item msgid="6835537356703747621">"ግራጫ"</item>
-    <item msgid="2470141365136884119">"ደማቅ አረንጓዴ-ሰማያዊ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index c33c7e0..2c61157 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -37,7 +37,7 @@
     <string name="clock_color_teal" msgid="7499223425741344251">"ደማቅ አረንጓዴ-ሰማያዊ"</string>
     <string name="clock_size" msgid="5028923902364418263">"መጠን"</string>
     <string name="clock_size_dynamic" msgid="1023930312455061642">"ተለዋዋጭ"</string>
-    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"የClock መጠን በማያ ገፅ ቁልፍ ይዘት መሰረት ይለወጣል"</string>
+    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"የClock መጠን በማያ ገጽ ቁልፍ ይዘት መሰረት ይለወጣል"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"ትልቅ"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"ትንሽ"</string>
     <string name="grid_title" msgid="1688173478777254123">"የመተግበሪያ ፍርግርግ"</string>
@@ -62,7 +62,7 @@
     <string name="preview_name_shape" msgid="5676971146080968721">"ቅርጽ"</string>
     <string name="preview_name_wallpaper" msgid="1738652462949531828">"ልጣፍ"</string>
     <string name="font_card_title" msgid="2343292653502548685">"ABC • abc • 123"</string>
-    <string name="font_card_body" msgid="6790525594503904468">"የእርስዎን ተወዳጅ ቁፊዎች ወደ ሁሉም ማያ ገፅ ያክሉ"</string>
+    <string name="font_card_body" msgid="6790525594503904468">"የእርስዎን ተወዳጅ ቁፊዎች ወደ ሁሉም ማያ ገጽ ያክሉ"</string>
     <string name="grid_options_title" msgid="7071930966989877023">"የፍርግርግ መጠን ይምረጡ"</string>
     <string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
     <string name="applied_theme_msg" msgid="3749018706366796244">"ቅጥ በተሳካ ሁኔታ ተቀናብሯል"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"አቋራጮች"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>፣ <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ምንም"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"ማሳወቂያዎች"</string>
-    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"በማያ ገፅ ቁልፉ ላይ ማሳወቂያዎችን አሳይ"</string>
-    <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"በማያ ገፅ ቁልፉ ላይ ማሳወቂያዎችን ደብቅ"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"ተጨማሪ አማራጮች"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"ጽሑፍ በማያ ገፅ ቁልፍ፣ አሁን በመጫወት ላይ እና ሌሎችም"</string>
+    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"በማያ ገጽ ቁልፉ ላይ ማሳወቂያዎችን አሳይ"</string>
+    <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"በማያ ገጽ ቁልፉ ላይ ማሳወቂያዎችን ደብቅ"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"ተጨማሪ ቀለማት"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"ነባሪ የቀለም አማራጭ"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"የቀለም አማራጭ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-ar/clock_colors.xml b/res/values-ar/clock_colors.xml
deleted file mode 100644
index 51bc5fe..0000000
--- a/res/values-ar/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"أحمر"</item>
-    <item msgid="6882970855289978213">"برتقالي"</item>
-    <item msgid="5560732545714984533">"أصفر"</item>
-    <item msgid="7246284817845434226">"أخضر"</item>
-    <item msgid="6762906417604676001">"أزرق"</item>
-    <item msgid="8974135109557664892">"نيلي"</item>
-    <item msgid="786643557830463422">"بنفسجي"</item>
-    <item msgid="6835537356703747621">"رمادي"</item>
-    <item msgid="2470141365136884119">"أزرق مخضرّ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index f0a2b64..f3a3fae 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"الاختصارات"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"\"<xliff:g id="FIRST">%1$s</xliff:g>\" و\"<xliff:g id="SECOND">%2$s</xliff:g>\""</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"بدون اختصارات"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"الإشعارات"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"إظهار الإشعارات على شاشة القفل"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"إخفاء الإشعارات على شاشة القفل"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"خيارات إضافية"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"النص على شاشة القفل و\"التعرف التلقائي على الموسيقى\" والمزيد"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"المزيد من الألوان"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"خيار اللون التلقائي"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"خيار اللون <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-as/clock_colors.xml b/res/values-as/clock_colors.xml
deleted file mode 100644
index 74e0aaf..0000000
--- a/res/values-as/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ৰঙা"</item>
-    <item msgid="6882970855289978213">"কমলা"</item>
-    <item msgid="5560732545714984533">"হালধীয়া"</item>
-    <item msgid="7246284817845434226">"সেউজীয়া"</item>
-    <item msgid="6762906417604676001">"নীলা"</item>
-    <item msgid="8974135109557664892">"ইণ্ডিগ’"</item>
-    <item msgid="786643557830463422">"বেঙুনীয়া"</item>
-    <item msgid="6835537356703747621">"ধোঁৱাবৰণীয়া"</item>
-    <item msgid="2470141365136884119">"গাঢ় সেউজ-নীলা"</item>
-  </string-array>
-</resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 083d1db..6279d5d 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"শ্বৰ্টকাট"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"নাই"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"জাননী"</string>
-    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"লক স্ক্ৰীনত জাননী দেখুৱাওক"</string>
+    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"বন্ধ স্ক্ৰীনত জাননী দেখুৱাওক"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"বন্ধ স্ক্ৰীনত জাননী লুকুৱাওক"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"অধিক বিকল্প"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"লক স্ক্ৰীন, বৰ্তমান প্লে’ হৈ থকা সমল আৰু অধিকত থকা পাঠ"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"অধিক ৰং"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"ডিফ’ল্ট ৰঙৰ বিকল্প"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"ৰঙৰ বিকল্প <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-az/clock_colors.xml b/res/values-az/clock_colors.xml
deleted file mode 100644
index 6cea40b..0000000
--- a/res/values-az/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"QIRMIZI"</item>
-    <item msgid="6882970855289978213">"NARINCI"</item>
-    <item msgid="5560732545714984533">"SARI"</item>
-    <item msgid="7246284817845434226">"YAŞIL"</item>
-    <item msgid="6762906417604676001">"MAVİ"</item>
-    <item msgid="8974135109557664892">"TÜND-GÖY"</item>
-    <item msgid="786643557830463422">"BƏNÖVŞƏYİ"</item>
-    <item msgid="6835537356703747621">"BOZ"</item>
-    <item msgid="2470141365136884119">"YAŞILIMTIL MAVİ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 0b674ca..8a971ed 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Qısayollar"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Heç biri"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Bildirişlər"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Kilid ekranında bildirişləri göstərin"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Kilid ekranında bildirişləri gizlədin"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Digər seçimlər"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Kilid ekranında mətn, İndi Oxudulur və s."</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"Digər kilid ekranı seçimləri"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Məxfilik, İndi Efirdə və s."</string>
     <string name="more_colors" msgid="3191071655353004591">"Digər rənglər"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Defolt rəng seçimi"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Rəng seçimi <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-b+sr+Latn/clock_colors.xml b/res/values-b+sr+Latn/clock_colors.xml
deleted file mode 100644
index c30c8c2..0000000
--- a/res/values-b+sr+Latn/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"CRVENA"</item>
-    <item msgid="6882970855289978213">"NARANDŽASTA"</item>
-    <item msgid="5560732545714984533">"ŽUTA"</item>
-    <item msgid="7246284817845434226">"ZELENA"</item>
-    <item msgid="6762906417604676001">"PLAVA"</item>
-    <item msgid="8974135109557664892">"TAMNOPLAVA"</item>
-    <item msgid="786643557830463422">"LJUBIČASTA"</item>
-    <item msgid="6835537356703747621">"SIVA"</item>
-    <item msgid="2470141365136884119">"TIRKIZNA"</item>
-  </string-array>
-</resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 57a7e12..f887be1 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -39,7 +39,7 @@
     <string name="clock_size_dynamic" msgid="1023930312455061642">"Dinamički"</string>
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Veličina sata se menja u skladu sa sadržajem zaključanog ekrana"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Veliko"</string>
-    <string name="clock_size_small" msgid="2280449912094164133">"Mali"</string>
+    <string name="clock_size_small" msgid="2280449912094164133">"Malo"</string>
     <string name="grid_title" msgid="1688173478777254123">"Mreža apl."</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Primeni"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Dodirnite da biste izmenili"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Prečice"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ništa"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Obaveštenja"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Prikazuj obaveštenja na zaključanom ekranu"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Sakrij obaveštenja na zaključanom ekranu"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Još opcija"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Tekst na zaključanom ekranu, Trenutno svira i drugo"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"Još opcija za zaključani ekran"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Privatnost, Trenutno svira i drugo"</string>
     <string name="more_colors" msgid="3191071655353004591">"Još boja"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Podrazumevana opcija boje"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Opcija boje <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-be/clock_colors.xml b/res/values-be/clock_colors.xml
deleted file mode 100644
index d9a4bcc..0000000
--- a/res/values-be/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ЧЫРВОНЫ"</item>
-    <item msgid="6882970855289978213">"АРАНЖАВЫ"</item>
-    <item msgid="5560732545714984533">"ЖОЎТЫ"</item>
-    <item msgid="7246284817845434226">"ЗЯЛЁНЫ"</item>
-    <item msgid="6762906417604676001">"СІНІ"</item>
-    <item msgid="8974135109557664892">"ІНДЫГА"</item>
-    <item msgid="786643557830463422">"ФІЯЛЕТАВЫ"</item>
-    <item msgid="6835537356703747621">"ШЭРЫ"</item>
-    <item msgid="2470141365136884119">"СІНЕ-ЗЯЛЁНЫ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 4facba9..fec9d8b 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -55,7 +55,7 @@
     <string name="option_previewed_description" msgid="3467217598865047661">"<xliff:g id="ID_1">%1$s</xliff:g>, цяпер папярэдне паказваецца"</string>
     <string name="option_change_applied_previewed_description" msgid="9197311327728570816">"<xliff:g id="ID_1">%1$s</xliff:g>, змяніце выбранае і папярэдне прагледжанае"</string>
     <string name="theme_description" msgid="3697012391785254635">"Шрыфт: <xliff:g id="ID_1">%1$s</xliff:g>, значкі: <xliff:g id="ID_2">%2$s</xliff:g>, фігура: <xliff:g id="ID_3">%3$s</xliff:g>, колер: <xliff:g id="ID_4">%4$s</xliff:g>"</string>
-    <string name="default_theme_title" msgid="2555741736622366797">"Стандарт"</string>
+    <string name="default_theme_title" msgid="2555741736622366797">"Стандартна"</string>
     <string name="preview_name_font" msgid="4465423899630037038">"Шрыфт"</string>
     <string name="preview_name_icon" msgid="6818927315316316440">"Значок"</string>
     <string name="preview_name_color" msgid="8776203144994416172">"Колер"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Ярлыкі"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Няма"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Апавяшчэнні"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Паказваць апавяшчэнні на экране блакіроўкі"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Не паказваць апавяшчэнні на экране блакіроўкі"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Іншыя дзеянні"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Тэкст на экране блакіроўкі, функцыя \"Зараз іграе\" і іншае"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Больш колераў"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Стандартны варыянт колеру"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Варыянт колеру <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-bg/clock_colors.xml b/res/values-bg/clock_colors.xml
deleted file mode 100644
index 058b54d..0000000
--- a/res/values-bg/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ЧЕРВЕНО"</item>
-    <item msgid="6882970855289978213">"ОРАНЖЕВО"</item>
-    <item msgid="5560732545714984533">"ЖЪЛТО"</item>
-    <item msgid="7246284817845434226">"ЗЕЛЕНО"</item>
-    <item msgid="6762906417604676001">"СИНЬО"</item>
-    <item msgid="8974135109557664892">"ИНДИГО"</item>
-    <item msgid="786643557830463422">"ВИОЛЕТОВО"</item>
-    <item msgid="6835537356703747621">"СИВО"</item>
-    <item msgid="2470141365136884119">"СИНЬО-ЗЕЛЕНО"</item>
-  </string-array>
-</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 018b241..eb5386d 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -55,7 +55,7 @@
     <string name="option_previewed_description" msgid="3467217598865047661">"Понастоящем е визуализирана опцията „<xliff:g id="ID_1">%1$s</xliff:g>“"</string>
     <string name="option_change_applied_previewed_description" msgid="9197311327728570816">"Промяна на избраната и визуализирана опция „<xliff:g id="ID_1">%1$s</xliff:g>“"</string>
     <string name="theme_description" msgid="3697012391785254635">"Шрифт: <xliff:g id="ID_1">%1$s</xliff:g> – икони: <xliff:g id="ID_2">%2$s</xliff:g> – форма: <xliff:g id="ID_3">%3$s</xliff:g> – цвят: <xliff:g id="ID_4">%4$s</xliff:g>"</string>
-    <string name="default_theme_title" msgid="2555741736622366797">"Основен"</string>
+    <string name="default_theme_title" msgid="2555741736622366797">"Основно"</string>
     <string name="preview_name_font" msgid="4465423899630037038">"Шрифт"</string>
     <string name="preview_name_icon" msgid="6818927315316316440">"Икона"</string>
     <string name="preview_name_color" msgid="8776203144994416172">"Цвят"</string>
@@ -64,7 +64,7 @@
     <string name="font_card_title" msgid="2343292653502548685">"ABC • abc • 123"</string>
     <string name="font_card_body" msgid="6790525594503904468">"Добавете любимите си шрифтове на всеки екран"</string>
     <string name="grid_options_title" msgid="7071930966989877023">"Избиране на размер на решетката"</string>
-    <string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
+    <string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
     <string name="applied_theme_msg" msgid="3749018706366796244">"Стилът бе зададен успешно"</string>
     <string name="applied_clock_msg" msgid="1303338016701443767">"Часовникът бе зададен успешно"</string>
     <string name="applied_grid_msg" msgid="3250499654436933034">"Решетката бе зададена успешно"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Преки пътища"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Няма"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Известия"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Показване на известията на заключения екран"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Скриване на известията на заключения екран"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Още опции"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Текст на заключения екран, „Сега слушате“ и др."</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Още цветове"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Опция за цвета по подразбиране"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Опция за цвета: <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-bn/clock_colors.xml b/res/values-bn/clock_colors.xml
deleted file mode 100644
index cd433fa..0000000
--- a/res/values-bn/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"লাল"</item>
-    <item msgid="6882970855289978213">"কমলা"</item>
-    <item msgid="5560732545714984533">"হলুদ"</item>
-    <item msgid="7246284817845434226">"সবুজ"</item>
-    <item msgid="6762906417604676001">"নীল"</item>
-    <item msgid="8974135109557664892">"নীলচে বেগুনি"</item>
-    <item msgid="786643557830463422">"বেগুনি"</item>
-    <item msgid="6835537356703747621">"ধূসর"</item>
-    <item msgid="2470141365136884119">"নীলচে সবুজ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 514ae2e..b3a323a 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -22,8 +22,8 @@
     <string name="clock_title" msgid="1974314575211361352">"কাস্টম ঘড়ি"</string>
     <string name="clock_description" msgid="3563839327378948">"কাস্টম ঘড়ি বেছে নিন"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"কাস্টম ঘড়ি পরিবর্তন করুন"</string>
-    <string name="clock_settings_title" msgid="2940654205471453913">"ঘড়ির সেটিংস"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"ঘড়ির রঙ ও সাইজ"</string>
+    <string name="clock_settings_title" msgid="2940654205471453913">"ঘড়ির \'সেটিংস\'"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"ঘড়ির রঙ &amp; সাইজ"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"রঙ"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"লাল"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"শর্টকাট"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"কোনও শর্টকাট নেই"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"বিজ্ঞপ্তি"</string>
-    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"লক স্ক্রিনে বিজ্ঞপ্তি দেখুন"</string>
+    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"লক স্ক্রিনে বিজ্ঞপ্তি দেখান"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"লক স্ক্রিনে বিজ্ঞপ্তি লুকান"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"আরও বিকল্প"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"লক স্ক্রিনে টেক্সট, এখন চলছে এবং আরও অনেক কিছু"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"আরও রঙ"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"রঙের ডিফল্ট বিকল্প"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"রঙের বিকল্প <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-bs/clock_colors.xml b/res/values-bs/clock_colors.xml
deleted file mode 100644
index 0e7f923..0000000
--- a/res/values-bs/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"CRVENA"</item>
-    <item msgid="6882970855289978213">"NARANDŽASTA"</item>
-    <item msgid="5560732545714984533">"ŽUTA"</item>
-    <item msgid="7246284817845434226">"ZELENA"</item>
-    <item msgid="6762906417604676001">"PLAVA"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"LJUBIČASTA"</item>
-    <item msgid="6835537356703747621">"SIVA"</item>
-    <item msgid="2470141365136884119">"TIRKIZNA"</item>
-  </string-array>
-</resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 4563c66..c2fd8a8 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -36,7 +36,7 @@
     <string name="clock_color_gray" msgid="9221530636948859231">"Siva"</string>
     <string name="clock_color_teal" msgid="7499223425741344251">"Tirkizna"</string>
     <string name="clock_size" msgid="5028923902364418263">"Veličina"</string>
-    <string name="clock_size_dynamic" msgid="1023930312455061642">"Dinamično"</string>
+    <string name="clock_size_dynamic" msgid="1023930312455061642">"Dinamički"</string>
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Veličina sata se mijenja u skladu sa sadržajem na zaključanom ekranu"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Veliko"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"Malo"</string>
@@ -111,10 +111,10 @@
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Druge boje"</string>
     <string name="preset_color_subheader" msgid="8230588536141279371">"Odaberite bilo koju boju za ikone, sat i drugo"</string>
     <string name="color_changed" msgid="7029571720331641235">"Boja je promijenjena"</string>
-    <string name="adaptive_color_title" msgid="1336508599235896205">"Dinamično"</string>
+    <string name="adaptive_color_title" msgid="1336508599235896205">"Dinamički"</string>
     <string name="color_picker_title" msgid="6666830057938082864">"Boje sistema"</string>
-    <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Lijeva prečica"</string>
-    <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Desna prečica"</string>
+    <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Prečica lijevo"</string>
+    <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Prečica desno"</string>
     <string name="keyguard_affordance_none" msgid="1751643933430782312">"Ništa"</string>
     <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Da odaberete aplikaciju \"<xliff:g id="APPNAME">%1$s</xliff:g>\" provjerite sljedeće"</string>
     <string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Otvori aplikaciju <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Prečice"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ništa"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Obavještenja"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Prikaz obavještenja na zaključanom ekranu"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Sakrivanje obavještenja na zaključanom ekranu"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Više opcija"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Tekst na zaključanom ekranu, Trenutno se reproducira i drugo"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"Više opcija zaključavanja ekrana"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Privatnost, Trenutno se reproducira i drugo"</string>
     <string name="more_colors" msgid="3191071655353004591">"Više boja"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Zadana opcija boje"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Opcija boje <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-ca/clock_colors.xml b/res/values-ca/clock_colors.xml
deleted file mode 100644
index c44a460..0000000
--- a/res/values-ca/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"VERMELL"</item>
-    <item msgid="6882970855289978213">"TARONJA"</item>
-    <item msgid="5560732545714984533">"GROC"</item>
-    <item msgid="7246284817845434226">"VERD"</item>
-    <item msgid="6762906417604676001">"BLAU"</item>
-    <item msgid="8974135109557664892">"ANYIL"</item>
-    <item msgid="786643557830463422">"VIOLETA"</item>
-    <item msgid="6835537356703747621">"GRIS"</item>
-    <item msgid="2470141365136884119">"VERD BLAVÓS"</item>
-  </string-array>
-</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 62a5d6f..fa98f97 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -22,8 +22,8 @@
     <string name="clock_title" msgid="1974314575211361352">"Rellotge pers."</string>
     <string name="clock_description" msgid="3563839327378948">"Tria rellotge pers."</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Canvia un rellotge personalitzat"</string>
-    <string name="clock_settings_title" msgid="2940654205471453913">"Configuració del rellotge"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Color i mida del rellotge"</string>
+    <string name="clock_settings_title" msgid="2940654205471453913">"Config. rellotge"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Color i mida rellotge"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Color"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"Vermell"</string>
@@ -36,7 +36,7 @@
     <string name="clock_color_gray" msgid="9221530636948859231">"Gris"</string>
     <string name="clock_color_teal" msgid="7499223425741344251">"Verd blavós"</string>
     <string name="clock_size" msgid="5028923902364418263">"Mida"</string>
-    <string name="clock_size_dynamic" msgid="1023930312455061642">"Dinàmic"</string>
+    <string name="clock_size_dynamic" msgid="1023930312455061642">"Dinàmica"</string>
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"La mida del rellotge canvia d\'acord amb el contingut de la pantalla de bloqueig"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Gran"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"Petit"</string>
@@ -105,8 +105,8 @@
     <string name="beta_title" msgid="8703819523760746458">"Beta"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Canvia la quadrícula d\'aplicacions"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"Colors del fons"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Combina el color d\'icones, text i més amb el fons"</string>
-    <string name="wallpaper_color_title" msgid="5687965239180986458">"Color de fons de pantalla"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Icones, text i més poden combinar amb els colors del fons"</string>
+    <string name="wallpaper_color_title" msgid="5687965239180986458">"Color del fons de pantalla"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Colors bàsics"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Altres colors"</string>
     <string name="preset_color_subheader" msgid="8230588536141279371">"Tria qualsevol color per a les icones, el rellotge i més"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Dreceres"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Cap"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Notificacions"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostra les notificacions a la pantalla de bloqueig"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Amaga les notificacions a la pantalla de bloqueig"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Més opcions"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Text a la pantalla de bloqueig, Està sonant i més"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Més colors"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Opció de color predeterminada"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Opció de color <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-cs/clock_colors.xml b/res/values-cs/clock_colors.xml
deleted file mode 100644
index 9406e46..0000000
--- a/res/values-cs/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ČERVENÁ"</item>
-    <item msgid="6882970855289978213">"ORANŽOVÁ"</item>
-    <item msgid="5560732545714984533">"ŽLUTÁ"</item>
-    <item msgid="7246284817845434226">"ZELENÁ"</item>
-    <item msgid="6762906417604676001">"MODRÁ"</item>
-    <item msgid="8974135109557664892">"INDIGOVÁ"</item>
-    <item msgid="786643557830463422">"FIALOVÁ"</item>
-    <item msgid="6835537356703747621">"ŠEDÁ"</item>
-    <item msgid="2470141365136884119">"ŠEDOZELENÁ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 72a3c63..f853901 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -101,7 +101,7 @@
     <string name="mode_title" msgid="2394873501427436055">"Tmavý motiv"</string>
     <string name="mode_disabled_msg" msgid="9196245518435936512">"Dočasně deaktivováno spořičem baterie"</string>
     <string name="mode_changed" msgid="2243581369395418584">"Motiv byl změněn"</string>
-    <string name="themed_icon_title" msgid="7312460430471956558">"Přebarvené ikony"</string>
+    <string name="themed_icon_title" msgid="7312460430471956558">"Tematické ikony"</string>
     <string name="beta_title" msgid="8703819523760746458">"Beta"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Změnit mřížku aplikací"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"Barvy tapety"</string>
@@ -112,7 +112,7 @@
     <string name="preset_color_subheader" msgid="8230588536141279371">"Vyberte barvu pro ikony, hodiny atd."</string>
     <string name="color_changed" msgid="7029571720331641235">"Barva byla změněna"</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"Dynamické"</string>
-    <string name="color_picker_title" msgid="6666830057938082864">"Systémové barvy"</string>
+    <string name="color_picker_title" msgid="6666830057938082864">"Barvy systému"</string>
     <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Zkratka vlevo"</string>
     <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Zkratka vpravo"</string>
     <string name="keyguard_affordance_none" msgid="1751643933430782312">"Žádné"</string>
@@ -120,15 +120,16 @@
     <string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Otevřít aplikaci <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
     <string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Podmínky pro to, aby aplikaci <xliff:g id="APPNAME">%1$s</xliff:g> bylo možné přidat jako zkratku:"</string>
     <string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Hotovo"</string>
-    <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Zkratky"</string>
-    <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Zkratky"</string>
+    <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Zástupci"</string>
+    <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Zástupci"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Žádné"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Oznámení"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Zobrazovat oznámení na obrazovce uzamčení"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Skrýt oznámení na obrazovce uzamčení"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Další možnosti"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Text na obrazovce uzamčení, Co to hraje a další funkce"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Další barvy"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Výchozí barevná varianta"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Barevná varianta <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-da/clock_colors.xml b/res/values-da/clock_colors.xml
deleted file mode 100644
index 6dcbb4d..0000000
--- a/res/values-da/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"RØD"</item>
-    <item msgid="6882970855289978213">"ORANGE"</item>
-    <item msgid="5560732545714984533">"GUL"</item>
-    <item msgid="7246284817845434226">"GRØN"</item>
-    <item msgid="6762906417604676001">"BLÅ"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"VIOLET"</item>
-    <item msgid="6835537356703747621">"GRÅ"</item>
-    <item msgid="2470141365136884119">"GRØNBLÅ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index d8ed823..8dbb97c 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Genveje"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ingen"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Notifikationer"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Vis notifikationer på låseskærmen"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Skjul notifikationer på låseskærmen"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Flere valgmuligheder"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Tekst på låseskærmen, Find sangen og meget mere"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Flere farver"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Standardfarve"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Farvevalg <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-de/clock_colors.xml b/res/values-de/clock_colors.xml
deleted file mode 100644
index 170bf96..0000000
--- a/res/values-de/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ROT"</item>
-    <item msgid="6882970855289978213">"ORANGE"</item>
-    <item msgid="5560732545714984533">"GELB"</item>
-    <item msgid="7246284817845434226">"GRÜN"</item>
-    <item msgid="6762906417604676001">"BLAU"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"VIOLETT"</item>
-    <item msgid="6835537356703747621">"GRAU"</item>
-    <item msgid="2470141365136884119">"BLAUGRÜN"</item>
-  </string-array>
-</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index fa17dab..2683947 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -17,7 +17,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_name" msgid="1647136562008520313">"Hintergrund und Stil"</string>
+    <string name="app_name" msgid="1647136562008520313">"Hintergrund &amp; Stil"</string>
     <string name="theme_title" msgid="2144932106319405101">"Design"</string>
     <string name="clock_title" msgid="1974314575211361352">"Benutzerdefinierte Uhr"</string>
     <string name="clock_description" msgid="3563839327378948">"Benutzerdefinierte Uhr wählen"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Verknüpfungen"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Keine"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Benachrichtigungen"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Benachrichtigungen auf dem Sperrbildschirm einblenden"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Benachrichtigungen auf dem Sperrbildschirm ausblenden"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Weitere Optionen"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Text auf dem Sperrbildschirm, Now Playing und mehr"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Weitere Farben"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Standardfarboption"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Farboption <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-el/clock_colors.xml b/res/values-el/clock_colors.xml
deleted file mode 100644
index 9c0394f..0000000
--- a/res/values-el/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ΚΟΚΚΙΝΟ"</item>
-    <item msgid="6882970855289978213">"ΠΟΡΤΟΚΑΛΙ"</item>
-    <item msgid="5560732545714984533">"ΚΙΤΡΙΝΟ"</item>
-    <item msgid="7246284817845434226">"ΠΡΑΣΙΝΟ"</item>
-    <item msgid="6762906417604676001">"ΜΠΛΕ"</item>
-    <item msgid="8974135109557664892">"ΛΟΥΛΑΚΙ"</item>
-    <item msgid="786643557830463422">"ΒΙΟΛΕΤΙ"</item>
-    <item msgid="6835537356703747621">"ΓΚΡΙ"</item>
-    <item msgid="2470141365136884119">"ΓΑΛΑΖΟΠΡΑΣΙΝΟ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index c9f12f8..38a4cf6 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -55,7 +55,7 @@
     <string name="option_previewed_description" msgid="3467217598865047661">"Αυτήν τη στιγμή εμφανίζεται σε προεπισκόπηση η επιλογή <xliff:g id="ID_1">%1$s</xliff:g>"</string>
     <string name="option_change_applied_previewed_description" msgid="9197311327728570816">"<xliff:g id="ID_1">%1$s</xliff:g>, η αλλαγή επιλέχθηκε και προβλήθηκε σε προεπισκόπηση"</string>
     <string name="theme_description" msgid="3697012391785254635">"Γραμματοσειρά: <xliff:g id="ID_1">%1$s</xliff:g>, εικονίδια: <xliff:g id="ID_2">%2$s</xliff:g>, σχήμα: <xliff:g id="ID_3">%3$s</xliff:g>, χρώμα: <xliff:g id="ID_4">%4$s</xliff:g>"</string>
-    <string name="default_theme_title" msgid="2555741736622366797">"Προεπιλ."</string>
+    <string name="default_theme_title" msgid="2555741736622366797">"Προεπιλογή"</string>
     <string name="preview_name_font" msgid="4465423899630037038">"Γραμματοσειρά"</string>
     <string name="preview_name_icon" msgid="6818927315316316440">"Εικονίδιο"</string>
     <string name="preview_name_color" msgid="8776203144994416172">"Χρώμα"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Συντομεύσεις"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Καμία"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Ειδοποιήσεις"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Εμφάνιση ειδοποιήσεων στην οθόνη κλειδώματος"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Απόκρυψη ειδοποιήσεων στην οθόνη κλειδώματος"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Περισσότερες επιλογές"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Κείμενο στην οθόνη κλειδώματος, λειτουργία \"Ακούγεται τώρα\" κ.ά."</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"Περισσότ. επιλογές οθόνης κλειδ."</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Απόρρητο, Ακούγεται τώρα κ.ά."</string>
     <string name="more_colors" msgid="3191071655353004591">"Περισσότερα χρώματα"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Επιλογή προεπιλεγμένου χρώματος"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Επιλογή χρώματος <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-en-rAU/clock_colors.xml b/res/values-en-rAU/clock_colors.xml
deleted file mode 100644
index 31e40f5..0000000
--- a/res/values-en-rAU/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"RED"</item>
-    <item msgid="6882970855289978213">"ORANGE"</item>
-    <item msgid="5560732545714984533">"YELLOW"</item>
-    <item msgid="7246284817845434226">"GREEN"</item>
-    <item msgid="6762906417604676001">"BLUE"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"VIOLET"</item>
-    <item msgid="6835537356703747621">"GREY"</item>
-    <item msgid="2470141365136884119">"TEAL"</item>
-  </string-array>
-</resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 89150c9..0a0d7fb 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -23,7 +23,7 @@
     <string name="clock_description" msgid="3563839327378948">"Pick a custom clock"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Change a custom clock"</string>
     <string name="clock_settings_title" msgid="2940654205471453913">"Clock settings"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock colour and size"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock colour &amp; size"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Colour"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"Red"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Shortcuts"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"None"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Notifications"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Show notifications on the lock screen"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Hide notifications on the lock screen"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"More options"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Text on lock screen, Now Playing and more"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"More lock screen options"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Privacy, Now Playing and more"</string>
     <string name="more_colors" msgid="3191071655353004591">"More colours"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Default colour option"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Colour option <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-en-rCA/clock_colors.xml b/res/values-en-rCA/clock_colors.xml
deleted file mode 100644
index da2322f..0000000
--- a/res/values-en-rCA/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"RED"</item>
-    <item msgid="6882970855289978213">"ORANGE"</item>
-    <item msgid="5560732545714984533">"YELLOW"</item>
-    <item msgid="7246284817845434226">"GREEN"</item>
-    <item msgid="6762906417604676001">"BLUE"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"VIOLET"</item>
-    <item msgid="6835537356703747621">"GRAY"</item>
-    <item msgid="2470141365136884119">"TEAL"</item>
-  </string-array>
-</resources>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 5cbf5b4..d0ef6ac 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -19,27 +19,45 @@
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <string name="app_name" msgid="1647136562008520313">"Wallpaper and style"</string>
     <string name="theme_title" msgid="2144932106319405101">"Style"</string>
-    <string name="clock_title" msgid="1974314575211361352">"Custom Clock"</string>
+    <string name="clock_title" msgid="1974314575211361352">"Custom clock"</string>
     <string name="clock_description" msgid="3563839327378948">"Pick a custom clock"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Change a custom clock"</string>
-    <string name="clock_settings_title" msgid="2940654205471453913">"Clock Settings"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock color &amp; size"</string>
-    <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
-    <string name="clock_color" msgid="8081608867289156163">"Color"</string>
-    <string name="clock_color_red" msgid="3843504214807597810">"Red"</string>
-    <string name="clock_color_orange" msgid="4175805201144275804">"Orange"</string>
-    <string name="clock_color_yellow" msgid="7391699163247349977">"Yellow"</string>
-    <string name="clock_color_green" msgid="1991157556500156596">"Green"</string>
-    <string name="clock_color_blue" msgid="4037792003465759149">"Blue"</string>
-    <string name="clock_color_indigo" msgid="8910855386698452917">"Indigo"</string>
-    <string name="clock_color_violet" msgid="3454503847169375826">"Violet"</string>
-    <string name="clock_color_gray" msgid="9221530636948859231">"Grey"</string>
-    <string name="clock_color_teal" msgid="7499223425741344251">"Teal"</string>
-    <string name="clock_size" msgid="5028923902364418263">"Size"</string>
-    <string name="clock_size_dynamic" msgid="1023930312455061642">"Dynamic"</string>
-    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Clock size changes according to lock screen content"</string>
-    <string name="clock_size_large" msgid="3143248715744138979">"Large"</string>
-    <string name="clock_size_small" msgid="2280449912094164133">"Small"</string>
+    <!-- no translation found for clock_settings_title (2940654205471453913) -->
+    <skip />
+    <!-- no translation found for clock_color_and_size_title (7146791234905111351) -->
+    <skip />
+    <!-- no translation found for clock_color_and_size_description (6578061553012886817) -->
+    <skip />
+    <!-- no translation found for clock_color (8081608867289156163) -->
+    <skip />
+    <!-- no translation found for clock_color_red (3843504214807597810) -->
+    <skip />
+    <!-- no translation found for clock_color_orange (4175805201144275804) -->
+    <skip />
+    <!-- no translation found for clock_color_yellow (7391699163247349977) -->
+    <skip />
+    <!-- no translation found for clock_color_green (1991157556500156596) -->
+    <skip />
+    <!-- no translation found for clock_color_blue (4037792003465759149) -->
+    <skip />
+    <!-- no translation found for clock_color_indigo (8910855386698452917) -->
+    <skip />
+    <!-- no translation found for clock_color_violet (3454503847169375826) -->
+    <skip />
+    <!-- no translation found for clock_color_gray (9221530636948859231) -->
+    <skip />
+    <!-- no translation found for clock_color_teal (7499223425741344251) -->
+    <skip />
+    <!-- no translation found for clock_size (5028923902364418263) -->
+    <skip />
+    <!-- no translation found for clock_size_dynamic (1023930312455061642) -->
+    <skip />
+    <!-- no translation found for clock_size_dynamic_description (2776620745774561662) -->
+    <skip />
+    <!-- no translation found for clock_size_large (3143248715744138979) -->
+    <skip />
+    <!-- no translation found for clock_size_small (2280449912094164133) -->
+    <skip />
     <string name="grid_title" msgid="1688173478777254123">"App grid"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Apply"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Tap to edit"</string>
@@ -48,21 +66,21 @@
     <string name="grid_preview_card_content_description" msgid="8449383777584714842">"Grid preview"</string>
     <string name="font_preview_content_description" msgid="128230439293337891">"Font preview"</string>
     <string name="icon_preview_content_description" msgid="7761101284351952890">"Icon preview"</string>
-    <string name="color_preview_content_description" msgid="4879120462082058124">"Color preview"</string>
+    <string name="color_preview_content_description" msgid="4879120462082058124">"Colour preview"</string>
     <string name="shape_preview_content_description" msgid="6479487796176550432">"Shape preview"</string>
     <string name="option_applied_description" msgid="5022305212078053534">"<xliff:g id="ID_1">%1$s</xliff:g>, currently applied"</string>
     <string name="option_applied_previewed_description" msgid="5269654286638446858">"<xliff:g id="ID_1">%1$s</xliff:g>, currently applied and previewed"</string>
     <string name="option_previewed_description" msgid="3467217598865047661">"<xliff:g id="ID_1">%1$s</xliff:g>, currently previewed"</string>
     <string name="option_change_applied_previewed_description" msgid="9197311327728570816">"<xliff:g id="ID_1">%1$s</xliff:g>, change selected and previewed"</string>
-    <string name="theme_description" msgid="3697012391785254635">"Font: <xliff:g id="ID_1">%1$s</xliff:g>, icons: <xliff:g id="ID_2">%2$s</xliff:g>, shape: <xliff:g id="ID_3">%3$s</xliff:g>, color: <xliff:g id="ID_4">%4$s</xliff:g>"</string>
+    <string name="theme_description" msgid="3697012391785254635">"Font: <xliff:g id="ID_1">%1$s</xliff:g>, icons: <xliff:g id="ID_2">%2$s</xliff:g>, shape: <xliff:g id="ID_3">%3$s</xliff:g>, colour: <xliff:g id="ID_4">%4$s</xliff:g>"</string>
     <string name="default_theme_title" msgid="2555741736622366797">"Default"</string>
     <string name="preview_name_font" msgid="4465423899630037038">"Font"</string>
     <string name="preview_name_icon" msgid="6818927315316316440">"Icon"</string>
-    <string name="preview_name_color" msgid="8776203144994416172">"Color"</string>
+    <string name="preview_name_color" msgid="8776203144994416172">"Colour"</string>
     <string name="preview_name_shape" msgid="5676971146080968721">"Shape"</string>
     <string name="preview_name_wallpaper" msgid="1738652462949531828">"Wallpaper"</string>
     <string name="font_card_title" msgid="2343292653502548685">"ABC • abc • 123"</string>
-    <string name="font_card_body" msgid="6790525594503904468">"Add your favorite fonts to every screen"</string>
+    <string name="font_card_body" msgid="6790525594503904468">"Add your favourite fonts to every screen"</string>
     <string name="grid_options_title" msgid="7071930966989877023">"Choose a grid size"</string>
     <string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g>x<xliff:g id="ID_2">%2$d</xliff:g>"</string>
     <string name="applied_theme_msg" msgid="3749018706366796244">"Style set successfully"</string>
@@ -77,7 +95,7 @@
     <string name="custom_theme_delete" msgid="4744494663184126202">"Delete"</string>
     <string name="font_component_title" msgid="8800340833695292049">"Choose font"</string>
     <string name="icon_component_title" msgid="5779787138399083903">"Choose icons"</string>
-    <string name="color_component_title" msgid="1194089273921078816">"Choose color"</string>
+    <string name="color_component_title" msgid="1194089273921078816">"Choose colour"</string>
     <string name="shape_component_title" msgid="8366847436022025538">"Choose shape"</string>
     <string name="name_component_title" msgid="532425087968663437">"Name your style"</string>
     <string name="icon_component_label" msgid="2625784884001407944">"Icons <xliff:g id="ID_1">%1$d</xliff:g>"</string>
@@ -91,11 +109,11 @@
     <string name="no_thanks" msgid="7286616980115687627">"No, thanks"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> clock preview"</string>
     <string name="something_went_wrong" msgid="529840112449799117">"Oops! Something went wrong."</string>
-    <string name="theme_preview_icons_section_title" msgid="7064768910744000643">"Color / Icons"</string>
-    <string name="style_info_description" msgid="2612473574431003251">"Preview of font, icons, app shape, and color"</string>
+    <string name="theme_preview_icons_section_title" msgid="7064768910744000643">"Colour/Icons"</string>
+    <string name="style_info_description" msgid="2612473574431003251">"Preview of font, icons, app shape and colour"</string>
     <string name="accessibility_custom_font_title" msgid="966867359157303705">"Custom font"</string>
     <string name="accessibility_custom_icon_title" msgid="5753297905849062296">"Custom icon"</string>
-    <string name="accessibility_custom_color_title" msgid="4124246598886320663">"Custom color"</string>
+    <string name="accessibility_custom_color_title" msgid="4124246598886320663">"Customised colour"</string>
     <string name="accessibility_custom_shape_title" msgid="7708408259374643129">"Custom shape"</string>
     <string name="accessibility_custom_name_title" msgid="5494460518085463262">"Custom style name"</string>
     <string name="mode_title" msgid="2394873501427436055">"Dark theme"</string>
@@ -104,32 +122,53 @@
     <string name="themed_icon_title" msgid="7312460430471956558">"Themed icons"</string>
     <string name="beta_title" msgid="8703819523760746458">"Beta"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Change app grid"</string>
-    <string name="wallpaper_color_tab" msgid="1447926591721403840">"Wallpaper colors"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Icons, text, and more match colors in your wallpaper"</string>
-    <string name="wallpaper_color_title" msgid="5687965239180986458">"Wallpaper color"</string>
-    <string name="preset_color_tab" msgid="3133391839341329314">"Basic colors"</string>
-    <string name="preset_color_tab_2" msgid="1444107326712562538">"Other colors"</string>
-    <string name="preset_color_subheader" msgid="8230588536141279371">"Choose any color for your icons, clock, and more"</string>
-    <string name="color_changed" msgid="7029571720331641235">"Color changed"</string>
+    <string name="wallpaper_color_tab" msgid="1447926591721403840">"Wallpaper colours"</string>
+    <!-- no translation found for wallpaper_color_subheader (4044464573669965670) -->
+    <skip />
+    <string name="wallpaper_color_title" msgid="5687965239180986458">"Wallpaper colour"</string>
+    <string name="preset_color_tab" msgid="3133391839341329314">"Basic colours"</string>
+    <!-- no translation found for preset_color_tab_2 (1444107326712562538) -->
+    <skip />
+    <!-- no translation found for preset_color_subheader (8230588536141279371) -->
+    <skip />
+    <string name="color_changed" msgid="7029571720331641235">"Colour changed"</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"Dynamic"</string>
-    <string name="color_picker_title" msgid="6666830057938082864">"System colors"</string>
-    <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Left shortcut"</string>
-    <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Right shortcut"</string>
-    <string name="keyguard_affordance_none" msgid="1751643933430782312">"None"</string>
-    <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"To select `<xliff:g id="APPNAME">%1$s</xliff:g>` check the following"</string>
-    <string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Open <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
-    <string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"To add the <xliff:g id="APPNAME">%1$s</xliff:g> app as a shortcut, make sure"</string>
-    <string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Done"</string>
-    <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Shortcuts"</string>
-    <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Shortcuts"</string>
-    <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
-    <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"None"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Notifications"</string>
-    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Show notifications on the lock screen"</string>
-    <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Hide notifications on the lock screen"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"More options"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Text on lock screen, Now Playing, and more"</string>
-    <string name="more_colors" msgid="3191071655353004591">"More Colors"</string>
-    <string name="content_description_default_color_option" msgid="7011899327541080695">"Default color option"</string>
-    <string name="content_description_color_option" msgid="4169813692012119578">"Color option <xliff:g id="ID_1">%1$d</xliff:g>"</string>
+    <!-- no translation found for color_picker_title (6666830057938082864) -->
+    <skip />
+    <!-- no translation found for keyguard_slot_name_bottom_start (8747677880200629719) -->
+    <skip />
+    <!-- no translation found for keyguard_slot_name_bottom_end (2525487375680217083) -->
+    <skip />
+    <!-- no translation found for keyguard_affordance_none (1751643933430782312) -->
+    <skip />
+    <!-- no translation found for keyguard_affordance_enablement_dialog_title (3389730825561696493) -->
+    <skip />
+    <!-- no translation found for keyguard_affordance_enablement_dialog_action_template (8117011931337357438) -->
+    <skip />
+    <!-- no translation found for keyguard_affordance_enablement_dialog_message (6136286758939253570) -->
+    <skip />
+    <!-- no translation found for keyguard_affordance_enablement_dialog_dismiss_button (629754625264422508) -->
+    <skip />
+    <!-- no translation found for keyguard_quick_affordance_title (4242813186995735584) -->
+    <skip />
+    <!-- no translation found for keyguard_quick_affordance_section_title (2806304242671717309) -->
+    <skip />
+    <!-- no translation found for keyguard_quick_affordance_two_selected_template (1757099194522296363) -->
+    <skip />
+    <!-- no translation found for keyguard_quick_affordance_none_selected (8494127020144112003) -->
+    <skip />
+    <!-- no translation found for show_notifications_on_lock_screen (4157744243084646720) -->
+    <skip />
+    <!-- no translation found for hide_notifications_on_lock_screen (7413548956484779174) -->
+    <skip />
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
+    <!-- no translation found for more_colors (3191071655353004591) -->
+    <skip />
+    <!-- no translation found for content_description_default_color_option (7011899327541080695) -->
+    <skip />
+    <!-- no translation found for content_description_color_option (4169813692012119578) -->
+    <skip />
 </resources>
diff --git a/res/values-en-rGB/clock_colors.xml b/res/values-en-rGB/clock_colors.xml
deleted file mode 100644
index 31e40f5..0000000
--- a/res/values-en-rGB/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"RED"</item>
-    <item msgid="6882970855289978213">"ORANGE"</item>
-    <item msgid="5560732545714984533">"YELLOW"</item>
-    <item msgid="7246284817845434226">"GREEN"</item>
-    <item msgid="6762906417604676001">"BLUE"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"VIOLET"</item>
-    <item msgid="6835537356703747621">"GREY"</item>
-    <item msgid="2470141365136884119">"TEAL"</item>
-  </string-array>
-</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 89150c9..0a0d7fb 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -23,7 +23,7 @@
     <string name="clock_description" msgid="3563839327378948">"Pick a custom clock"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Change a custom clock"</string>
     <string name="clock_settings_title" msgid="2940654205471453913">"Clock settings"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock colour and size"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock colour &amp; size"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Colour"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"Red"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Shortcuts"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"None"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Notifications"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Show notifications on the lock screen"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Hide notifications on the lock screen"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"More options"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Text on lock screen, Now Playing and more"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"More lock screen options"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Privacy, Now Playing and more"</string>
     <string name="more_colors" msgid="3191071655353004591">"More colours"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Default colour option"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Colour option <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-en-rIN/clock_colors.xml b/res/values-en-rIN/clock_colors.xml
deleted file mode 100644
index 31e40f5..0000000
--- a/res/values-en-rIN/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"RED"</item>
-    <item msgid="6882970855289978213">"ORANGE"</item>
-    <item msgid="5560732545714984533">"YELLOW"</item>
-    <item msgid="7246284817845434226">"GREEN"</item>
-    <item msgid="6762906417604676001">"BLUE"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"VIOLET"</item>
-    <item msgid="6835537356703747621">"GREY"</item>
-    <item msgid="2470141365136884119">"TEAL"</item>
-  </string-array>
-</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 89150c9..0a0d7fb 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -23,7 +23,7 @@
     <string name="clock_description" msgid="3563839327378948">"Pick a custom clock"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Change a custom clock"</string>
     <string name="clock_settings_title" msgid="2940654205471453913">"Clock settings"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock colour and size"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock colour &amp; size"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Colour"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"Red"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Shortcuts"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"None"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Notifications"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Show notifications on the lock screen"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Hide notifications on the lock screen"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"More options"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Text on lock screen, Now Playing and more"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"More lock screen options"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Privacy, Now Playing and more"</string>
     <string name="more_colors" msgid="3191071655353004591">"More colours"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Default colour option"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Colour option <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-en-rXC/clock_colors.xml b/res/values-en-rXC/clock_colors.xml
deleted file mode 100644
index a06793b..0000000
--- a/res/values-en-rXC/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‎‏‎‏‎‏‏‎‏‎‏‎‏‎‏‏‎‎‏‏‎‎‏‎‏‏‏‎‏‎‎‎‎‎‎‏‎‏‎‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‎RED‎‏‎‎‏‎"</item>
-    <item msgid="6882970855289978213">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‎‎‎‎‏‎‏‎‎‏‏‏‎‎‏‏‎‎‎‎‏‏‎‎‏‏‏‏‏‎‎‏‏‏‎‏‏‎‎‏‏‏‏‏‏‎‏‎‏‏‎‎‏‎‏‎ORANGE‎‏‎‎‏‎"</item>
-    <item msgid="5560732545714984533">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‎‏‎‏‏‏‎‏‏‎‎‎‎‏‏‎‎‏‎‎‏‏‏‎‎‏‏‏‎‎‏‎‎‏‎‏‏‏‎‎‏‎‏‏‎‎‏‎‏‎‏‎‏‎YELLOW‎‏‎‎‏‎"</item>
-    <item msgid="7246284817845434226">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‏‎‎‎‏‏‏‏‎‎‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‏‎‏‏‏‎‎‏‎‎GREEN‎‏‎‎‏‎"</item>
-    <item msgid="6762906417604676001">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‏‎‏‏‎‏‎‏‎‏‎‏‎‏‏‏‎‎‎‏‏‏‎‎‎‏‎‏‏‏‎‏‎‎‎‏‎‎‏‎‏‎‎‏‎‎‏‏‎‏‎‎‎‎‏‎BLUE‎‏‎‎‏‎"</item>
-    <item msgid="8974135109557664892">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‏‎‏‎‏‎‎‎‏‎‎‎‎‏‎‏‎‏‎‏‏‏‎‎‏‎‏‏‏‎‎‎‏‎‏‏‏‎‏‏‏‏‎‎‎‏‏‏‏‏‎‎‎INDIGO‎‏‎‎‏‎"</item>
-    <item msgid="786643557830463422">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‏‎‏‎‏‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‎‏‏‏‏‎‎‏‎‏‎‏‎‏‎‏‎‏‏‎‎‎‏‏‏‏‏‎‏‏‏‏‏‎‎VIOLET‎‏‎‎‏‎"</item>
-    <item msgid="6835537356703747621">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‏‏‎‎‏‎‏‏‎‏‎‏‎‎‎‎‎‎‏‎‎‏‏‏‏‎‏‏‎‎‏‏‏‏‎‏‎‏‎‎‏‏‏‎‎‎‏‎‎‏‎‏‎GRAY‎‏‎‎‏‎"</item>
-    <item msgid="2470141365136884119">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‎‏‎‎‎‏‏‏‏‎‏‏‎‏‎‎‎‏‏‏‏‎‏‏‏‏‏‏‎‏‎‏‏‏‏‏‏‎‏‏‏‎‎‎‎‎‎‏‏‎‎‏‎‏‏‏‎TEAL‎‏‎‎‏‎"</item>
-  </string-array>
-</resources>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index 4bbe879..dc90fe4 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‏‏‏‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‎‎‎‏‏‏‎‎‎‎‎‏‏‏‏‎‏‎‎‎‏‎‏‏‏‎‏‏‏‏‎‏‎Shortcuts‎‏‎‎‏‎"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‎‎‏‏‎‎‎‏‎‎‏‏‏‏‎‎‎‎‏‏‎‏‎‎‎‎‏‏‎‏‏‎‎‏‎‏‎‎‎‎‎‎‏‏‎‎‎‎‎‎‎‏‎‏‎‏‏‎‎‏‎‎‏‏‎<xliff:g id="FIRST">%1$s</xliff:g>‎‏‎‎‏‏‏‎, ‎‏‎‎‏‏‎<xliff:g id="SECOND">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‎‎‎‎‏‎‎‏‏‎‎‏‏‏‎‎‎‎‏‎‏‎‏‏‎‎‎‎‎‏‎‏‏‏‏‎‎‏‎‏‏‎‎‎‏‏‎‎‎‎‎‏‏‎None‎‏‎‎‏‎"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‏‎‎‎‎‎‏‏‏‎‎‏‏‎‎‎‎‏‏‏‎‎‎‏‎‏‏‏‎‏‎‎‎‏‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‏‎‎Notifications‎‏‎‎‏‎"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‏‏‎‏‎‎‎‏‏‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‎‏‎‏‎‎‎‎‎‎‎Show notifications on the lock screen‎‏‎‎‏‎"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‏‎‎‎‏‎‎‎‏‏‎‏‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‎‎‏‏‏‏‏‎‎‎‏‏‏‏‎‎‏‎‏‎‎‏‏‎‎Hide notifications on the lock screen‎‏‎‎‏‎"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‏‎‏‏‏‏‏‎‏‏‏‏‎‎‎‏‎‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‏‎‎‎‏‎‏‎‎‎‏‏‎‏‏‏‏‎‎‎More options‎‏‎‎‏‎"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‏‎‏‎‎‎‏‏‎‏‏‎‎‏‏‏‏‎‎‏‏‏‎‏‏‎‎‏‏‏‎‏‏‏‎‏‎‏‎‎‎‏‏‎‏‏‎‏‎‏‎‏‏‎Text on lock screen, Now Playing, and more‎‏‎‎‏‎"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‏‏‏‎‏‎‎‎‏‎‏‏‎‎‎‏‏‎‎‏‎‏‏‎‎‏‏‏‎‎‏‏‎‏‎‎‏‏‎‏‎‎‏‏‏‏‎‎‎‏‎‏‏‎‎More lock screen options‎‏‎‎‏‎"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‎‏‎‎‎‎‎‏‏‏‎‏‎‏‎‏‏‎‎‎‎‏‏‏‎‏‎‎‏‏‎‏‎‏‏‏‎‏‎‏‎‎‏‎‎‎‎‏‏‏‎‏‎‏‎Privacy, Now Playing, and more‎‏‎‎‏‎"</string>
     <string name="more_colors" msgid="3191071655353004591">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‎‏‎‎‏‎‎‎‏‏‏‏‎‏‏‎‏‏‎‎‎‎‏‏‎‏‏‏‎‏‏‎‎‎‏‎‎‎‏‎‎‎‏‏‎‎‏‎‎‎‏‎‏‏‏‏‎More Colors‎‏‎‎‏‎"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‎‎‏‏‏‏‎‏‎‎‎‏‎‏‎‏‎‎‏‎‎‏‏‎‏‎‏‎‏‎‏‏‏‎‎‎‏‎‏‏‏‏‎‎‏‎‎‏‏‏‎‏‏‏‎Default color option‎‏‎‎‏‎"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‎‏‏‏‏‎‎‎‏‎‎‏‏‏‎‏‏‏‎‏‎‏‏‏‎‏‎‎‏‏‏‏‏‏‎‎‎‏‎‏‎‎‎‏‏‎‎‎‎‏‏‎‏‎‎Color option ‎‏‎‎‏‏‎<xliff:g id="ID_1">%1$d</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
diff --git a/res/values-es-rUS/clock_colors.xml b/res/values-es-rUS/clock_colors.xml
deleted file mode 100644
index 6caf3b8..0000000
--- a/res/values-es-rUS/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ROJO"</item>
-    <item msgid="6882970855289978213">"NARANJA"</item>
-    <item msgid="5560732545714984533">"AMARILLO"</item>
-    <item msgid="7246284817845434226">"VERDE"</item>
-    <item msgid="6762906417604676001">"AZUL"</item>
-    <item msgid="8974135109557664892">"ÍNDIGO"</item>
-    <item msgid="786643557830463422">"VIOLETA"</item>
-    <item msgid="6835537356703747621">"GRIS"</item>
-    <item msgid="2470141365136884119">"VERDE AZULADO"</item>
-  </string-array>
-</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index ade277f..1d6b3b2 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -22,7 +22,7 @@
     <string name="clock_title" msgid="1974314575211361352">"Reloj person."</string>
     <string name="clock_description" msgid="3563839327378948">"Elige un reloj"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Cambia el reloj personalizado"</string>
-    <string name="clock_settings_title" msgid="2940654205471453913">"Config. del reloj"</string>
+    <string name="clock_settings_title" msgid="2940654205471453913">"Config Reloj"</string>
     <string name="clock_color_and_size_title" msgid="7146791234905111351">"Reloj: color, tamaño"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Color"</string>
@@ -37,7 +37,7 @@
     <string name="clock_color_teal" msgid="7499223425741344251">"Verde azulado"</string>
     <string name="clock_size" msgid="5028923902364418263">"Tamaño"</string>
     <string name="clock_size_dynamic" msgid="1023930312455061642">"Dinámico"</string>
-    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"El tamaño del reloj cambia según el contenido de la pantalla de bloqueo"</string>
+    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Cambios del tamaño del reloj según el contenido de la pantalla de bloqueo"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Grande"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"Pequeño"</string>
     <string name="grid_title" msgid="1688173478777254123">"Cuadr. de apps"</string>
@@ -113,22 +113,23 @@
     <string name="color_changed" msgid="7029571720331641235">"Se cambió el color"</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"Dinámico"</string>
     <string name="color_picker_title" msgid="6666830057938082864">"Colores del sistema"</string>
-    <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Acceso izquierdo"</string>
-    <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Acceso derecho"</string>
+    <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Atajo izquierdo"</string>
+    <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Atajo derecho"</string>
     <string name="keyguard_affordance_none" msgid="1751643933430782312">"Ninguno"</string>
     <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Para seleccionar \"<xliff:g id="APPNAME">%1$s</xliff:g>\", verifica lo siguiente"</string>
     <string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Abrir <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
     <string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Para agregar la app <xliff:g id="APPNAME">%1$s</xliff:g> como acceso directo, asegúrate que se cumplan los siguientes requisitos:"</string>
     <string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Listo"</string>
-    <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Accesos directos"</string>
-    <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Accesos directos"</string>
+    <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Comb. de teclas"</string>
+    <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Comb. de teclas"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ninguno"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Notificaciones"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostrar las notificaciones en la pantalla de bloqueo"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Esconder las notificaciones en la pantalla de bloqueo"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Más opciones"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Texto en la pantalla de bloqueo, Está sonando y mucho más"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Más colores"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Opción de color predeterminada"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Opción en color <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-es/clock_colors.xml b/res/values-es/clock_colors.xml
deleted file mode 100644
index b8607fb..0000000
--- a/res/values-es/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ROJO"</item>
-    <item msgid="6882970855289978213">"NARANJA"</item>
-    <item msgid="5560732545714984533">"AMARILLO"</item>
-    <item msgid="7246284817845434226">"VERDE"</item>
-    <item msgid="6762906417604676001">"AZUL"</item>
-    <item msgid="8974135109557664892">"ÍNDIGO"</item>
-    <item msgid="786643557830463422">"VIOLETA"</item>
-    <item msgid="6835537356703747621">"GRIS"</item>
-    <item msgid="2470141365136884119">"TURQUESA"</item>
-  </string-array>
-</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 015dfa6..0752e5c 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -55,7 +55,7 @@
     <string name="option_previewed_description" msgid="3467217598865047661">"<xliff:g id="ID_1">%1$s</xliff:g> (vista previa en curso)"</string>
     <string name="option_change_applied_previewed_description" msgid="9197311327728570816">"<xliff:g id="ID_1">%1$s</xliff:g>, cambio seleccionado y con vista previa"</string>
     <string name="theme_description" msgid="3697012391785254635">"Fuente: <xliff:g id="ID_1">%1$s</xliff:g>; iconos: <xliff:g id="ID_2">%2$s</xliff:g>; forma: <xliff:g id="ID_3">%3$s</xliff:g>; color: <xliff:g id="ID_4">%4$s</xliff:g>"</string>
-    <string name="default_theme_title" msgid="2555741736622366797">"Predeter­minado"</string>
+    <string name="default_theme_title" msgid="2555741736622366797">"Predeterminado"</string>
     <string name="preview_name_font" msgid="4465423899630037038">"Fuente"</string>
     <string name="preview_name_icon" msgid="6818927315316316440">"Icono"</string>
     <string name="preview_name_color" msgid="8776203144994416172">"Color"</string>
@@ -113,8 +113,8 @@
     <string name="color_changed" msgid="7029571720331641235">"Color cambiado"</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"Dinámico"</string>
     <string name="color_picker_title" msgid="6666830057938082864">"Colores del sistema"</string>
-    <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Acceso izquierdo"</string>
-    <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Acceso derecho"</string>
+    <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Atajo izquierdo"</string>
+    <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Atajo derecho"</string>
     <string name="keyguard_affordance_none" msgid="1751643933430782312">"Ninguno"</string>
     <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Para seleccionar <xliff:g id="APPNAME">%1$s</xliff:g>, comprueba lo siguiente"</string>
     <string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Abrir <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Accesos directos"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ninguno"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Notificaciones"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostrar notificaciones en la pantalla de bloqueo"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Ocultar notificaciones en la pantalla de bloqueo"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Más opciones"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Texto en pantalla de bloqueo, Está Sonando y más"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Más colores"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Opción de color predeterminada"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Opción de color <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-et/clock_colors.xml b/res/values-et/clock_colors.xml
deleted file mode 100644
index 7d73aa2..0000000
--- a/res/values-et/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"PUNANE"</item>
-    <item msgid="6882970855289978213">"ORANŽ"</item>
-    <item msgid="5560732545714984533">"KOLLANE"</item>
-    <item msgid="7246284817845434226">"ROHELINE"</item>
-    <item msgid="6762906417604676001">"SININE"</item>
-    <item msgid="8974135109557664892">"INDIGOSININE"</item>
-    <item msgid="786643557830463422">"VIOLETNE"</item>
-    <item msgid="6835537356703747621">"HALL"</item>
-    <item msgid="2470141365136884119">"SINAKASROHELINE"</item>
-  </string-array>
-</resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 4be5a22..d7d452e 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Otseteed"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Pole"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Märguanded"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Kuva märguanded lukustuskuval"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Peida märguanded lukustuskuval"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Rohkem valikuid"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Tekst lukustuskuval, Hetkel mängimas ja muud"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Rohkem värve"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Vaikevärvi valik"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Värvivalik <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-eu/clock_colors.xml b/res/values-eu/clock_colors.xml
deleted file mode 100644
index 453cb8e..0000000
--- a/res/values-eu/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"GORRIA"</item>
-    <item msgid="6882970855289978213">"LARANJA"</item>
-    <item msgid="5560732545714984533">"HORIA"</item>
-    <item msgid="7246284817845434226">"BERDEA"</item>
-    <item msgid="6762906417604676001">"URDINA"</item>
-    <item msgid="8974135109557664892">"INDIGOA"</item>
-    <item msgid="786643557830463422">"BIOLETA"</item>
-    <item msgid="6835537356703747621">"GRISA"</item>
-    <item msgid="2470141365136884119">"ANILA"</item>
-  </string-array>
-</resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 90e3559..001eebd 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -104,8 +104,8 @@
     <string name="themed_icon_title" msgid="7312460430471956558">"Ikono gaidunak"</string>
     <string name="beta_title" msgid="8703819523760746458">"Beta"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Aldatu aplikazioen sareta"</string>
-    <string name="wallpaper_color_tab" msgid="1447926591721403840">"Horma-paperaren koloreak"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ikonoak, testua, etab. horma-paperaren koloreekin bat datoz"</string>
+    <string name="wallpaper_color_tab" msgid="1447926591721403840">"Horma-papereko koloreak"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ikonoak, testua eta abar horma-papereko koloreekin bat datoz"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Horma-paperaren kolorea"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Oinarrizko koloreak"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Beste kolore batzuk"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Lasterbideak"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g> eta <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Bat ere ez"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Jakinarazpenak"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Erakutsi jakinarazpenak pantaila blokeatuan"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Ezkutatu jakinarazpenak pantaila blokeatuan"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Aukera gehiago"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Testua pantaila blokeatuan, Orain erreproduzitzen eta abar"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Kolore gehiago"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Kolore-aukera lehenetsia"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Kolore-aukera <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-fa/clock_colors.xml b/res/values-fa/clock_colors.xml
deleted file mode 100644
index e890d08..0000000
--- a/res/values-fa/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"قرمز"</item>
-    <item msgid="6882970855289978213">"نارنجی"</item>
-    <item msgid="5560732545714984533">"زرد"</item>
-    <item msgid="7246284817845434226">"سبز"</item>
-    <item msgid="6762906417604676001">"آبی"</item>
-    <item msgid="8974135109557664892">"نیلی"</item>
-    <item msgid="786643557830463422">"یاسی"</item>
-    <item msgid="6835537356703747621">"خاکستری"</item>
-    <item msgid="2470141365136884119">"سبز دودی"</item>
-  </string-array>
-</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 94f3546..9170f2f 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -40,7 +40,7 @@
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"اندازه ساعت نسبت به محتوای صفحه قفل تغییر می‌کند"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"بزرگ"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"کوچک"</string>
-    <string name="grid_title" msgid="1688173478777254123">"شبکه برنامه‌ها"</string>
+    <string name="grid_title" msgid="1688173478777254123">"جدول برنامه"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"اعمال"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"برای ویرایش ضربه بزنید"</string>
     <string name="keep_my_wallpaper" msgid="8012385376769568517">"حفظ کاغذدیواری فعلی"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"میان‌برها"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>، <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"هیچ‌کدام"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"اعلان‌ها"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"نمایش اعلان‌ها در صفحه قفل"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"پنهان کردن اعلان‌ها در صفحه قفل"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"گزینه‌های بیشتر"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"نوشتار صفحه قفل، درحال پخش، و موارد دیگر"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"گزینه‌های بیشتر برای صفحه قفل"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"«حریم خصوصی»، «درحال پخش»، و موارد دیگر"</string>
     <string name="more_colors" msgid="3191071655353004591">"رنگ‌های بیشتر"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"گزینه رنگ پیش‌فرض"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"گزینه رنگ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-fi/clock_colors.xml b/res/values-fi/clock_colors.xml
deleted file mode 100644
index 4da60ae..0000000
--- a/res/values-fi/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"PUNAINEN"</item>
-    <item msgid="6882970855289978213">"ORANSSI"</item>
-    <item msgid="5560732545714984533">"KELTAINEN"</item>
-    <item msgid="7246284817845434226">"VIHREÄ"</item>
-    <item msgid="6762906417604676001">"SININEN"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"VIOLETTI"</item>
-    <item msgid="6835537356703747621">"HARMAA"</item>
-    <item msgid="2470141365136884119">"TURKOOSI"</item>
-  </string-array>
-</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 2d315cc..55ebaff 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -101,7 +101,7 @@
     <string name="mode_title" msgid="2394873501427436055">"Tumma teema"</string>
     <string name="mode_disabled_msg" msgid="9196245518435936512">"Tilapäisesti pois käytöstä virransäästön takia"</string>
     <string name="mode_changed" msgid="2243581369395418584">"Teema vaihdettu"</string>
-    <string name="themed_icon_title" msgid="7312460430471956558">"Teemaan sopivat kuvakkeet"</string>
+    <string name="themed_icon_title" msgid="7312460430471956558">"Kuvakkeiden teemat"</string>
     <string name="beta_title" msgid="8703819523760746458">"Beta"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Muuta sovellusruudukkoa"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"Taustakuvan värit"</string>
@@ -120,15 +120,16 @@
     <string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Avaa <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
     <string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Jos haluat, että <xliff:g id="APPNAME">%1$s</xliff:g> lisätään pikakuvakkeeksi, varmista nämä:"</string>
     <string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"Valmis"</string>
-    <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Pikakuvakkeet"</string>
-    <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Pikakuvakkeet"</string>
+    <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Pikakomennot"</string>
+    <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Pikakomennot"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"–"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Ilmoitukset"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Näytä ilmoitukset lukitusnäytöllä"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Piilota lukitusnäytön ilmoitukset"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Lisäasetukset"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Lukitusnäytöllä näkyvä teksti, Musiikintunnistus ja muita"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Lisää värejä"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Oletusväri"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Värivaihtoehto: <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-fr-rCA/clock_colors.xml b/res/values-fr-rCA/clock_colors.xml
deleted file mode 100644
index a02729a..0000000
--- a/res/values-fr-rCA/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ROUGE"</item>
-    <item msgid="6882970855289978213">"ORANGE"</item>
-    <item msgid="5560732545714984533">"JAUNE"</item>
-    <item msgid="7246284817845434226">"VERT"</item>
-    <item msgid="6762906417604676001">"BLEU"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"VIOLET"</item>
-    <item msgid="6835537356703747621">"GRIS"</item>
-    <item msgid="2470141365136884119">"BLEU SARCELLE"</item>
-  </string-array>
-</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 90334a7..4dd4be6 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -105,7 +105,7 @@
     <string name="beta_title" msgid="8703819523760746458">"Bêta"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Modifiez la grille d\'applications"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"Couleurs fond d\'écran"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Icônes, texte, etc., assortis aux couleurs du fond d\'écran"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Icônes, texte, etc. assortis aux couleurs du fond d\'écran"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Couleur du fond d\'écran"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Couleurs de base"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Autres couleurs"</string>
@@ -115,7 +115,7 @@
     <string name="color_picker_title" msgid="6666830057938082864">"Couleurs système"</string>
     <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Raccourci gauche"</string>
     <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Raccourci droit"</string>
-    <string name="keyguard_affordance_none" msgid="1751643933430782312">"Aucun"</string>
+    <string name="keyguard_affordance_none" msgid="1751643933430782312">"Aucune"</string>
     <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Pour sélectionner « <xliff:g id="APPNAME">%1$s</xliff:g> » vérifiez ce qui suit"</string>
     <string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Ouvrir <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
     <string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Pour ajouter l\'application <xliff:g id="APPNAME">%1$s</xliff:g> en tant que raccourci, assurez-vous"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Raccourcis"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Aucun"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Notifications"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Affichez les notifications sur l\'écran de verrouillage"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Masquez les notifications sur l\'écran de verrouillage"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Plus d\'options"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Texte sur l\'écran de verrouillage, En cours de lecture, etc."</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Plus de couleurs"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Option de couleur par défaut"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Option de couleur <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-fr/clock_colors.xml b/res/values-fr/clock_colors.xml
deleted file mode 100644
index 6daf394..0000000
--- a/res/values-fr/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ROUGE"</item>
-    <item msgid="6882970855289978213">"ORANGE"</item>
-    <item msgid="5560732545714984533">"JAUNE"</item>
-    <item msgid="7246284817845434226">"VERT"</item>
-    <item msgid="6762906417604676001">"BLEU"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"MAUVE"</item>
-    <item msgid="6835537356703747621">"GRIS"</item>
-    <item msgid="2470141365136884119">"TURQUOISE"</item>
-  </string-array>
-</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index cf97637..8738174 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -23,7 +23,7 @@
     <string name="clock_description" msgid="3563839327378948">"Choisir cadran"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Modifier un cadran personnalisé"</string>
     <string name="clock_settings_title" msgid="2940654205471453913">"Paramètres Horloge"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Taille et couleur de l\'horloge"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Taille et couleur Horloge"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Couleur"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"Rouge"</string>
@@ -105,7 +105,7 @@
     <string name="beta_title" msgid="8703819523760746458">"Bêta"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Modifier la grille d\'applis"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"Couleurs fond d\'écran"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Couleur des icônes, du texte… assortie au fond d\'écran"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Icônes, texte et autres couleurs de votre fond d\'écran"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Couleur du fond d\'écran"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Couleurs de base"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Autres couleurs"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Raccourcis"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Aucun"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Notifications"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Afficher les notifications sur l\'écran de verrouillage"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Masquer les notifications sur l\'écran de verrouillage"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Autres options"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Texte sur l\'écran de verrouillage, fonction En écoute etc."</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Autres couleurs"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Option de couleur par défaut"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Option de couleur <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-gl/clock_colors.xml b/res/values-gl/clock_colors.xml
deleted file mode 100644
index 5d9da17..0000000
--- a/res/values-gl/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"VERMELLO"</item>
-    <item msgid="6882970855289978213">"LARANXA"</item>
-    <item msgid="5560732545714984533">"AMARELO"</item>
-    <item msgid="7246284817845434226">"VERDE"</item>
-    <item msgid="6762906417604676001">"AZUL"</item>
-    <item msgid="8974135109557664892">"ÍNDIGO"</item>
-    <item msgid="786643557830463422">"VIOLETA"</item>
-    <item msgid="6835537356703747621">"GRIS"</item>
-    <item msgid="2470141365136884119">"VERDE AZULADO"</item>
-  </string-array>
-</resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 19b94fc..6d2401f 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -22,7 +22,7 @@
     <string name="clock_title" msgid="1974314575211361352">"Reloxo person."</string>
     <string name="clock_description" msgid="3563839327378948">"Elixe reloxo pers."</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Cambiar reloxo personalizado"</string>
-    <string name="clock_settings_title" msgid="2940654205471453913">"Configuración do reloxo"</string>
+    <string name="clock_settings_title" msgid="2940654205471453913">"Config. reloxo"</string>
     <string name="clock_color_and_size_title" msgid="7146791234905111351">"Tamaño/cor do reloxo"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Cor"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Atallos"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ningún"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Notificacións"</string>
-    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostrar notificacións na pantalla de bloqueo"</string>
-    <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Ocultar notificacións na pantalla de bloqueo"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Máis opcións"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Texto na pantalla de bloqueo, Está soando e moito máis"</string>
+    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostra as notificacións na pantalla de bloqueo"</string>
+    <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Oculta as notificacións na pantalla de bloqueo"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Máis cores"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Opción de cor predeterminada"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Opción de cor: <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-gu/clock_colors.xml b/res/values-gu/clock_colors.xml
deleted file mode 100644
index 0818083..0000000
--- a/res/values-gu/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"લાલ"</item>
-    <item msgid="6882970855289978213">"નારંગી"</item>
-    <item msgid="5560732545714984533">"પીળો"</item>
-    <item msgid="7246284817845434226">"લીલો"</item>
-    <item msgid="6762906417604676001">"વાદળી"</item>
-    <item msgid="8974135109557664892">"ઘેરો વાદળી રંગ"</item>
-    <item msgid="786643557830463422">"જાંબલી"</item>
-    <item msgid="6835537356703747621">"રાખોડી"</item>
-    <item msgid="2470141365136884119">"ટીલ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 4f6db11..5f8f4e6 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"શૉર્ટકટ"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"એકપણ નહીં"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"નોટિફિકેશન"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"લૉક સ્ક્રીન પર નોટિફિકેશન બતાવો"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"લૉક સ્ક્રીન પર નોટિફિકેશન છુપાવો"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"વધુ વિકલ્પો"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"લૉક સ્ક્રીન પરની ટેક્સ્ટ, હમણાં વાગી રહ્યું છે અને બીજું ઘણું"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"વધુ રંગો"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"ડિફૉલ્ટ રંગનો વિકલ્પ"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"રંગનો વિકલ્પ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-h800dp/dimens.xml b/res/values-h800dp/dimens.xml
new file mode 100644
index 0000000..36d0d62
--- /dev/null
+++ b/res/values-h800dp/dimens.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<resources>
+    <!--
+    Dimension for clock translationY when swiping clock carousel in picker,
+    copied from sysui resources
+    -->
+    <dimen name="keyguard_large_clock_top_margin">-112dp</dimen>
+</resources>
\ No newline at end of file
diff --git a/res/values-hi/clock_colors.xml b/res/values-hi/clock_colors.xml
deleted file mode 100644
index e613f33..0000000
--- a/res/values-hi/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"लाल"</item>
-    <item msgid="6882970855289978213">"नारंगी"</item>
-    <item msgid="5560732545714984533">"पीला"</item>
-    <item msgid="7246284817845434226">"हरा"</item>
-    <item msgid="6762906417604676001">"नीला"</item>
-    <item msgid="8974135109557664892">"इंडिगो"</item>
-    <item msgid="786643557830463422">"बैंगनी"</item>
-    <item msgid="6835537356703747621">"स्लेटी"</item>
-    <item msgid="2470141365136884119">"टील"</item>
-  </string-array>
-</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 84df6ff..3b9917b 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -39,7 +39,7 @@
     <string name="clock_size_dynamic" msgid="1023930312455061642">"डाइनैमिक"</string>
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"लॉक स्क्रीन के कॉन्टेंट के हिसाब से घड़ी का साइज़ बदलता है"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"बड़ा"</string>
-    <string name="clock_size_small" msgid="2280449912094164133">"छोटा"</string>
+    <string name="clock_size_small" msgid="2280449912094164133">"छोटा करें"</string>
     <string name="grid_title" msgid="1688173478777254123">"ऐप्लिकेशन ग्रिड"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"लागू करें"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"बदलाव करने के लिए टैप करें"</string>
@@ -124,12 +124,13 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"शॉर्टकट"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"कोई नहीं"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"सूचनाएं"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"लॉक स्क्रीन पर सूचनाएं दिखाएं"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"लॉक स्क्रीन पर सूचनाएं छिपाएं"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"ज़्यादा विकल्प"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"लॉक स्क्रीन पर टेक्स्ट जोड़ना, \'अभी चल रहा है\' सुविधा वगैरह"</string>
-    <string name="more_colors" msgid="3191071655353004591">"कुछ और रंग"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
+    <string name="more_colors" msgid="3191071655353004591">"ज़्यादा कलर"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"रंग का डिफ़ॉल्ट विकल्प"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"रंग का विकल्प <xliff:g id="ID_1">%1$d</xliff:g>"</string>
 </resources>
diff --git a/res/values-hr/clock_colors.xml b/res/values-hr/clock_colors.xml
deleted file mode 100644
index de6b751..0000000
--- a/res/values-hr/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"CRVENA"</item>
-    <item msgid="6882970855289978213">"NARANČASTA"</item>
-    <item msgid="5560732545714984533">"ŽUTA"</item>
-    <item msgid="7246284817845434226">"ZELENA"</item>
-    <item msgid="6762906417604676001">"PLAVA"</item>
-    <item msgid="8974135109557664892">"MODROLJUBIČASTA"</item>
-    <item msgid="786643557830463422">"LJUBIČASTA"</item>
-    <item msgid="6835537356703747621">"SIVA"</item>
-    <item msgid="2470141365136884119">"TIRKIZNOPLAVA"</item>
-  </string-array>
-</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 4c1a27e..2eb78b7 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -39,7 +39,7 @@
     <string name="clock_size_dynamic" msgid="1023930312455061642">"Dinamičan"</string>
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Veličina sata mijenja se u skladu sa sadržajem zaključanog zaslona"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Velik"</string>
-    <string name="clock_size_small" msgid="2280449912094164133">"Mali"</string>
+    <string name="clock_size_small" msgid="2280449912094164133">"Malo"</string>
     <string name="grid_title" msgid="1688173478777254123">"Rešetka aplik."</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Primijeni"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Dodirnite da biste uredili"</string>
@@ -105,11 +105,11 @@
     <string name="beta_title" msgid="8703819523760746458">"Beta"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Promjena rešetke aplikacije"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"Boje pozadine"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ikone, tekst i ostalo odgovara bojama na pozadini"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ikone, tekst i više toga odgovaraju bojama na pozadini"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Boja pozadine"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Osnovne boje"</string>
-    <string name="preset_color_tab_2" msgid="1444107326712562538">"Druge boje"</string>
-    <string name="preset_color_subheader" msgid="8230588536141279371">"Odaberite bilo koju boju za svoje ikone, sat i ostalo"</string>
+    <string name="preset_color_tab_2" msgid="1444107326712562538">"Ostale boje"</string>
+    <string name="preset_color_subheader" msgid="8230588536141279371">"Odaberite bilo koju boju za svoje ikone, sat i više"</string>
     <string name="color_changed" msgid="7029571720331641235">"Promijenjena boja"</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"Dinamično"</string>
     <string name="color_picker_title" msgid="6666830057938082864">"Boje sustava"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Prečaci"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ništa"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Obavijesti"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Prikaz obavijesti na zaključanom zaslonu"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Skrivanje obavijesti na zaključanom zaslonu"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Više opcija"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Tekst na zaključanom zaslonu, Upravo svira i još mnogo toga"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"Više opcija zaključanog zaslona"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Privatnost, Upravo svira i drugo"</string>
     <string name="more_colors" msgid="3191071655353004591">"Više boja"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Zadana opcija boje"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Opcija boje <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-hu/clock_colors.xml b/res/values-hu/clock_colors.xml
deleted file mode 100644
index cc869be..0000000
--- a/res/values-hu/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"PIROS"</item>
-    <item msgid="6882970855289978213">"NARANCSSÁRGA"</item>
-    <item msgid="5560732545714984533">"SÁRGA"</item>
-    <item msgid="7246284817845434226">"ZÖLD"</item>
-    <item msgid="6762906417604676001">"KÉK"</item>
-    <item msgid="8974135109557664892">"INDIGÓKÉK"</item>
-    <item msgid="786643557830463422">"IBOLYAKÉK"</item>
-    <item msgid="6835537356703747621">"SZÜRKE"</item>
-    <item msgid="2470141365136884119">"PÁVAKÉK"</item>
-  </string-array>
-</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 55607b8..0346ed0 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Gyorsparancsok"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Nincs"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Értesítések"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Értesítések megjelenítése a lezárási képernyőn"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Értesítések elrejtése a lezárási képernyőn"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"További beállítások"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Szöveg a lezárási képernyőn, Now Playing és egyebek"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"További színek"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Alapértelmezettként beállított szín"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Választható szín: <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-hy/clock_colors.xml b/res/values-hy/clock_colors.xml
deleted file mode 100644
index 15366a7..0000000
--- a/res/values-hy/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ԿԱՐՄԻՐ"</item>
-    <item msgid="6882970855289978213">"ՆԱՐՆՋԱԳՈՒՅՆ"</item>
-    <item msgid="5560732545714984533">"ԴԵՂԻՆ"</item>
-    <item msgid="7246284817845434226">"ԿԱՆԱՉ"</item>
-    <item msgid="6762906417604676001">"ԿԱՊՈՒՅՏ"</item>
-    <item msgid="8974135109557664892">"ԻՆԴԻԳՈ"</item>
-    <item msgid="786643557830463422">"ՄԱՆՈՒՇԱԿԱԳՈՒՅՆ"</item>
-    <item msgid="6835537356703747621">"ՄՈԽՐԱԳՈՒՅՆ"</item>
-    <item msgid="2470141365136884119">"ՓԻՐՈՒԶԱԳՈՒՅՆ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 0523dff..cad1120 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Դյուրանցումներ"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ընտրված չէ"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Ծանուցումներ"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Ցուցադրել ծանուցումները կողպէկրանին"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Թաքցնել ծանուցումները կողպէկրանին"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Այլ ընտրանքներ"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Տեքստ կողպէկրանին, Այժմ հնչում է և այլ գործառույթներ"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Այլ գույներ"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Գույնի կանխադրված տարբերակ"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Գույնի տարբերակ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-in/clock_colors.xml b/res/values-in/clock_colors.xml
deleted file mode 100644
index f3b4693..0000000
--- a/res/values-in/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"MERAH"</item>
-    <item msgid="6882970855289978213">"ORANYE"</item>
-    <item msgid="5560732545714984533">"KUNING"</item>
-    <item msgid="7246284817845434226">"HIJAU"</item>
-    <item msgid="6762906417604676001">"BIRU"</item>
-    <item msgid="8974135109557664892">"NILA"</item>
-    <item msgid="786643557830463422">"VIOLET"</item>
-    <item msgid="6835537356703747621">"ABU-ABU"</item>
-    <item msgid="2470141365136884119">"HIJAU KEBIRUAN"</item>
-  </string-array>
-</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 7205ccc..7e22274 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -105,11 +105,11 @@
     <string name="beta_title" msgid="8703819523760746458">"Beta"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Ubah petak aplikasi"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"Warna wallpaper"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ikon, teks, dan lain-lain serasi dengan warna wallpaper"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Warna ikon, teks, dan yang cocok lainnya di wallpaper"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Warna wallpaper"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Warna dasar"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Warna lainnya"</string>
-    <string name="preset_color_subheader" msgid="8230588536141279371">"Pilih warna untuk ikon, jam, dan lain-lain"</string>
+    <string name="preset_color_subheader" msgid="8230588536141279371">"Pilih warna apa pun untuk ikon, jam, dan lainnya"</string>
     <string name="color_changed" msgid="7029571720331641235">"Warna diubah"</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"Dinamis"</string>
     <string name="color_picker_title" msgid="6666830057938082864">"Warna sistem"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Pintasan"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Tidak ada"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Notifikasi"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Tampilkan notifikasi di layar kunci"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Sembunyikan notifikasi di layar kunci"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Opsi lainnya"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Teks di layar kunci, Now Playing, dan lainnya"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Warna Lainnya"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Opsi warna default"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Opsi warna <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-is/clock_colors.xml b/res/values-is/clock_colors.xml
deleted file mode 100644
index c7f0a59..0000000
--- a/res/values-is/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"RAUÐUR"</item>
-    <item msgid="6882970855289978213">"APPELSÍNUGULUR"</item>
-    <item msgid="5560732545714984533">"GULUR"</item>
-    <item msgid="7246284817845434226">"GRÆNN"</item>
-    <item msgid="6762906417604676001">"BLÁR"</item>
-    <item msgid="8974135109557664892">"DIMMFJÓLUBLÁR"</item>
-    <item msgid="786643557830463422">"FJÓLUBLÁR"</item>
-    <item msgid="6835537356703747621">"GRÁR"</item>
-    <item msgid="2470141365136884119">"GRÆNBLÁR"</item>
-  </string-array>
-</resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 1c6c951..4742dc4 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Flýtileiðir"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ekkert"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Tilkynningar"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Sýna tilkynningar á lásskjánum"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Fela tilkynningar á lásskjánum"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Fleiri valkostir"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Texti á lásskjá, „Í spilun“ og fleira"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"Fleiri valkostir fyrir lásskjá"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Persónuvernd, í spilun og fleira"</string>
     <string name="more_colors" msgid="3191071655353004591">"Fleiri litir"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Sjálfgefinn litavalkostur"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Litavalkostur <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-it/clock_colors.xml b/res/values-it/clock_colors.xml
deleted file mode 100644
index 6e9505c..0000000
--- a/res/values-it/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ROSSO"</item>
-    <item msgid="6882970855289978213">"ARANCIONE"</item>
-    <item msgid="5560732545714984533">"GIALLO"</item>
-    <item msgid="7246284817845434226">"VERDE"</item>
-    <item msgid="6762906417604676001">"BLU"</item>
-    <item msgid="8974135109557664892">"INDACO"</item>
-    <item msgid="786643557830463422">"VIOLA"</item>
-    <item msgid="6835537356703747621">"GRIGIO"</item>
-    <item msgid="2470141365136884119">"VERDE ACQUA"</item>
-  </string-array>
-</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 52c16f0..d54138d 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -22,8 +22,8 @@
     <string name="clock_title" msgid="1974314575211361352">"Orologio personalizzato"</string>
     <string name="clock_description" msgid="3563839327378948">"Scegli un orologio personalizzato"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Modifica un orologio personalizzato"</string>
-    <string name="clock_settings_title" msgid="2940654205471453913">"Impostazioni orologio"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Colore e dimensioni orologio"</string>
+    <string name="clock_settings_title" msgid="2940654205471453913">"Impos. Orologio"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Colore/dim. orologio"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Colore"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"Rosso"</string>
@@ -39,7 +39,7 @@
     <string name="clock_size_dynamic" msgid="1023930312455061642">"Dinamiche"</string>
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Le dimensioni dell\'orologio cambiano in base ai contenuti della schermata di blocco"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Grandi"</string>
-    <string name="clock_size_small" msgid="2280449912094164133">"Piccole"</string>
+    <string name="clock_size_small" msgid="2280449912094164133">"Piccolo"</string>
     <string name="grid_title" msgid="1688173478777254123">"Griglia di app"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Applica"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Tocca per modificare"</string>
@@ -115,7 +115,7 @@
     <string name="color_picker_title" msgid="6666830057938082864">"Colori di sistema"</string>
     <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Scorciatoia sinistra"</string>
     <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Scorciatoia destra"</string>
-    <string name="keyguard_affordance_none" msgid="1751643933430782312">"Nessuna"</string>
+    <string name="keyguard_affordance_none" msgid="1751643933430782312">"Nessuno"</string>
     <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"Per poter selezionare \"<xliff:g id="APPNAME">%1$s</xliff:g>\", devi controllare quanto segue:"</string>
     <string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"Apri <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
     <string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"Per aggiungere l\'app <xliff:g id="APPNAME">%1$s</xliff:g> come scorciatoia, assicurati che:"</string>
@@ -123,12 +123,13 @@
     <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"Scorciatoie"</string>
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Scorciatoie"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
-    <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Nessuna"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Notifiche"</string>
+    <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Nessun elemento"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostra le notifiche sulla schermata di blocco"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Nascondi le notifiche sulla schermata di blocco"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Altre opzioni"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Testo su schermata di blocco, Now Playing e altro"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Altri colori"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Opzione colore predefinita"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Opzione colore <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-iw/clock_colors.xml b/res/values-iw/clock_colors.xml
deleted file mode 100644
index 36c8783..0000000
--- a/res/values-iw/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"אדום"</item>
-    <item msgid="6882970855289978213">"כתום"</item>
-    <item msgid="5560732545714984533">"צהוב"</item>
-    <item msgid="7246284817845434226">"ירוק"</item>
-    <item msgid="6762906417604676001">"כחול"</item>
-    <item msgid="8974135109557664892">"אינדיגו"</item>
-    <item msgid="786643557830463422">"סגול"</item>
-    <item msgid="6835537356703747621">"אפור"</item>
-    <item msgid="2470141365136884119">"כחול-ירקרק"</item>
-  </string-array>
-</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index b4afd18..695536e 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -113,8 +113,8 @@
     <string name="color_changed" msgid="7029571720331641235">"הצבע השתנה"</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"דינמי"</string>
     <string name="color_picker_title" msgid="6666830057938082864">"צבעי המערכת"</string>
-    <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"קיצור דרך שמאלי"</string>
-    <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"קיצור דרך ימני"</string>
+    <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"קיצור דרך מימין"</string>
+    <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"קיצור דרך משמאל"</string>
     <string name="keyguard_affordance_none" msgid="1751643933430782312">"ללא"</string>
     <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"כדי לבחור באפליקציה <xliff:g id="APPNAME">%1$s</xliff:g> צריך לסמן את האפשרויות הבאות"</string>
     <string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"פתיחת <xliff:g id="APPNAME">%1$s</xliff:g>"</string>
@@ -123,12 +123,13 @@
     <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"קיצורי דרך"</string>
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"קיצורי דרך"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
-    <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"אין"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"התראות"</string>
+    <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ללא"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"הצגת ההתראות במסך הנעילה"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"הסתרת ההתראות במסך הנעילה"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"אפשרויות נוספות"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"טקסט שמופיע במסך הנעילה, \'מה שומעים עכשיו?\' ועוד"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"צבעים נוספים"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"אפשרות הצבע שמוגדרת כברירת מחדל"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"אפשרות צבע <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-ja/clock_colors.xml b/res/values-ja/clock_colors.xml
deleted file mode 100644
index 3bdde56..0000000
--- a/res/values-ja/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"赤"</item>
-    <item msgid="6882970855289978213">"オレンジ"</item>
-    <item msgid="5560732545714984533">"黄"</item>
-    <item msgid="7246284817845434226">"緑"</item>
-    <item msgid="6762906417604676001">"青"</item>
-    <item msgid="8974135109557664892">"インディゴ"</item>
-    <item msgid="786643557830463422">"バイオレット"</item>
-    <item msgid="6835537356703747621">"グレー"</item>
-    <item msgid="2470141365136884119">"ティール"</item>
-  </string-array>
-</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 96c0d5c..58bf265 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -37,7 +37,7 @@
     <string name="clock_color_teal" msgid="7499223425741344251">"ティール"</string>
     <string name="clock_size" msgid="5028923902364418263">"サイズ"</string>
     <string name="clock_size_dynamic" msgid="1023930312455061642">"動的"</string>
-    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"時計のサイズがロック画面の状況に応じて変わります"</string>
+    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"時計のサイズはロック画面の内容に応じて変わります"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"大"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"小"</string>
     <string name="grid_title" msgid="1688173478777254123">"アプリグリッド"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"ショートカット"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>、<xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"なし"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"通知"</string>
-    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ロック画面に通知を表示する"</string>
+    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ロック画面に通知を表示します"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ロック画面では通知を非表示にします"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"その他のオプション"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"ロック画面のテキスト、「この曲なに？」など"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"ロック画面の詳細オプション"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"プライバシー、この曲なに？、その他"</string>
     <string name="more_colors" msgid="3191071655353004591">"他の色"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"デフォルトのカラー オプション"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"カラー オプション <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-ka/clock_colors.xml b/res/values-ka/clock_colors.xml
deleted file mode 100644
index dd13e10..0000000
--- a/res/values-ka/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"წითელი"</item>
-    <item msgid="6882970855289978213">"ნარინჯისფერი"</item>
-    <item msgid="5560732545714984533">"ყვითელი"</item>
-    <item msgid="7246284817845434226">"მწვანე"</item>
-    <item msgid="6762906417604676001">"ლურჯი"</item>
-    <item msgid="8974135109557664892">"მუქი ლურჯი"</item>
-    <item msgid="786643557830463422">"იისფერი"</item>
-    <item msgid="6835537356703747621">"რუხი"</item>
-    <item msgid="2470141365136884119">"ზურმუხტისფერი"</item>
-  </string-array>
-</resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 77cc3e2..44ca0c5 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"მალსახმობები"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"არცერთი"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"შეტყობინებები"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"შეტყობინებების ჩვენება ჩაკეტილ ეკრანზე"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"შეტყობინებების დამალვა ჩაკეტილ ეკრანზე"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"სხვა ვარიანტები"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"ტექსტი ჩაკეტილ ეკრანზე, ახლა უკრავს და სხვა"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"ჩაკეტილი ეკრანის სხვა პარამეტრები"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"კონფიდენციალურობა, რა უკრავს და სხვა"</string>
     <string name="more_colors" msgid="3191071655353004591">"მეტი ფერი"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"ფერის ნაგულისხმევი ვარიანტი"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"ფერის ვარიანტი <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-kk/clock_colors.xml b/res/values-kk/clock_colors.xml
deleted file mode 100644
index b8abce4..0000000
--- a/res/values-kk/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ҚЫЗЫЛ"</item>
-    <item msgid="6882970855289978213">"ҚЫЗҒЫЛТ САРЫ"</item>
-    <item msgid="5560732545714984533">"САРЫ"</item>
-    <item msgid="7246284817845434226">"ЖАСЫЛ"</item>
-    <item msgid="6762906417604676001">"КӨК"</item>
-    <item msgid="8974135109557664892">"ИНДИГО"</item>
-    <item msgid="786643557830463422">"КҮЛГІН"</item>
-    <item msgid="6835537356703747621">"СҰР"</item>
-    <item msgid="2470141365136884119">"КӨКШІЛ ЖАСЫЛ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 2a6b1dc..47bac27 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -23,7 +23,7 @@
     <string name="clock_description" msgid="3563839327378948">"Арнаулы сағатты таңдау"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Арнаулы сағатты өзгерту"</string>
     <string name="clock_settings_title" msgid="2940654205471453913">"Сағат параметрі"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Сағаттың түсі, өлшемі"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Сағат түсі, көлемі"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Түс"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"Қызыл"</string>
@@ -35,9 +35,9 @@
     <string name="clock_color_violet" msgid="3454503847169375826">"Күлгін"</string>
     <string name="clock_color_gray" msgid="9221530636948859231">"Сұр"</string>
     <string name="clock_color_teal" msgid="7499223425741344251">"Көкшіл жасыл"</string>
-    <string name="clock_size" msgid="5028923902364418263">"Өлшем"</string>
+    <string name="clock_size" msgid="5028923902364418263">"Көлем"</string>
     <string name="clock_size_dynamic" msgid="1023930312455061642">"Динамикалық"</string>
-    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Сағаттың өлшемі құлып экранындағы контентке сай өзгереді."</string>
+    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Сағат көлемі құлып экранындағы контентке сай өзгереді."</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Үлкен"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"Кішi"</string>
     <string name="grid_title" msgid="1688173478777254123">"Қолданба торы"</string>
@@ -109,12 +109,12 @@
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Тұсқағаз түсі"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Негізгі түстер"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Басқа түстер"</string>
-    <string name="preset_color_subheader" msgid="8230588536141279371">"Белгішелер, сағат, т.б. үшін қалаған түсті таңдаңыз."</string>
+    <string name="preset_color_subheader" msgid="8230588536141279371">"Белгіше, сағат және т.б. үшін кез келген түс таңдаңыз."</string>
     <string name="color_changed" msgid="7029571720331641235">"Түс өзгертілді."</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"Динамикалық"</string>
     <string name="color_picker_title" msgid="6666830057938082864">"Жүйе түстері"</string>
-    <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Сол жақ жылдам пәрмен"</string>
-    <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Оң жақ жылдам пәрмен"</string>
+    <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Сол жақ таңбаша"</string>
+    <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Оң жақ таңбаша"</string>
     <string name="keyguard_affordance_none" msgid="1751643933430782312">"Жоқ"</string>
     <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"\"<xliff:g id="APPNAME">%1$s</xliff:g>\" қолданбасын таңдау үшін мынаны орындаңыз:"</string>
     <string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> қолданбасын ашу"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Жылдам пәрмендер"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ешқандай"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Хабарландырулар"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Құлып экранында хабарландыруларды көрсету"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Құлып экранында хабарландыруларды жасыру"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Қосымша опциялар"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Құлыптаулы экранда мәтіндік хабар жазу, Now Playing және т.б."</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Қосымша түстер"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Әдепкі түс опциясы"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"<xliff:g id="ID_1">%1$d</xliff:g> түс опциясы"</string>
diff --git a/res/values-km/clock_colors.xml b/res/values-km/clock_colors.xml
deleted file mode 100644
index 25bc604..0000000
--- a/res/values-km/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ក្រហម"</item>
-    <item msgid="6882970855289978213">"ទឹកក្រូច"</item>
-    <item msgid="5560732545714984533">"លឿង"</item>
-    <item msgid="7246284817845434226">"បៃតង"</item>
-    <item msgid="6762906417604676001">"ខៀវ"</item>
-    <item msgid="8974135109557664892">"ទឹកប៊ិក"</item>
-    <item msgid="786643557830463422">"ត្របែក​ព្រៃ"</item>
-    <item msgid="6835537356703747621">"ប្រផេះ"</item>
-    <item msgid="2470141365136884119">"បៃតងចាស់"</item>
-  </string-array>
-</resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 4c7c4ca..a1fe61f 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -98,7 +98,7 @@
     <string name="accessibility_custom_color_title" msgid="4124246598886320663">"ពណ៌​ផ្ទាល់ខ្លួន"</string>
     <string name="accessibility_custom_shape_title" msgid="7708408259374643129">"រូបរាង​ផ្ទាល់ខ្លួន"</string>
     <string name="accessibility_custom_name_title" msgid="5494460518085463262">"ឈ្មោះ​រចនាប័ទ្ម​ផ្ទាល់ខ្លួន"</string>
-    <string name="mode_title" msgid="2394873501427436055">"ទម្រង់រចនាងងឹត"</string>
+    <string name="mode_title" msgid="2394873501427436055">"​រចនាប័ទ្ម​ងងឹត"</string>
     <string name="mode_disabled_msg" msgid="9196245518435936512">"បានបិទ​ជា​បណ្តោះអាសន្ន ដោយសារ​មុខងារ​សន្សំ​ថ្ម"</string>
     <string name="mode_changed" msgid="2243581369395418584">"បាន​ផ្លាស់ប្ដូរ​រចនាប័ទ្ម"</string>
     <string name="themed_icon_title" msgid="7312460430471956558">"រូបតំណាងប្ដូរតាមទម្រង់រចនា"</string>
@@ -109,7 +109,7 @@
     <string name="wallpaper_color_title" msgid="5687965239180986458">"ពណ៌​ផ្ទាំងរូបភាព"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"ពណ៌​គោល"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"ពណ៌ផ្សេងទៀត"</string>
-    <string name="preset_color_subheader" msgid="8230588536141279371">"ជ្រើសរើសពណ៌ណាមួយសម្រាប់នាឡិកា រូបតំណាងរបស់អ្នក និងច្រើនទៀត"</string>
+    <string name="preset_color_subheader" msgid="8230588536141279371">"ជ្រើសរើសពណ៌ណាមួយសម្រាប់រូបតំណាង នាឡិកា និងអ្វីៗជាច្រើនទៀតរបស់អ្នក"</string>
     <string name="color_changed" msgid="7029571720331641235">"បាន​ផ្លាស់ប្ដូរ​ពណ៌"</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"ឌីណាមិក"</string>
     <string name="color_picker_title" msgid="6666830057938082864">"ពណ៌ប្រព័ន្ធ"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"ផ្លូវកាត់"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"គ្មាន"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"ការ​ជូនដំណឹង"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"បង្ហាញការជូនដំណឹងនៅលើអេក្រង់ចាក់សោ"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"លាក់ការជូនដំណឹងនៅលើអេក្រង់ចាក់សោ"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"ជម្រើសច្រើនទៀត"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"អក្សរនៅលើអេក្រង់ចាក់សោ, Now Playing និងអ្វីៗជាច្រើនទៀត"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"ជម្រើសអេក្រង់ចាក់សោច្រើនទៀត"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"ឯកជនភាព, Now Playing និងអ្វីៗច្រើនទៀត"</string>
     <string name="more_colors" msgid="3191071655353004591">"ពណ៌​ច្រើនទៀត"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"ជម្រើសពណ៌លំនាំដើម"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"ជម្រើស​ពណ៌ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-kn/clock_colors.xml b/res/values-kn/clock_colors.xml
deleted file mode 100644
index 775db7f..0000000
--- a/res/values-kn/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ಕೆಂಪು"</item>
-    <item msgid="6882970855289978213">"ಕಿತ್ತಳೆ"</item>
-    <item msgid="5560732545714984533">"ಹಳದಿ"</item>
-    <item msgid="7246284817845434226">"ಹಸಿರು"</item>
-    <item msgid="6762906417604676001">"ನೀಲಿ"</item>
-    <item msgid="8974135109557664892">"ಇಂಡಿಗೊ"</item>
-    <item msgid="786643557830463422">"ನೇರಳೆ"</item>
-    <item msgid="6835537356703747621">"ಬೂದು"</item>
-    <item msgid="2470141365136884119">"ಟೀಲ್"</item>
-  </string-array>
-</resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 0432b87..8b1c5ca 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -105,7 +105,7 @@
     <string name="beta_title" msgid="8703819523760746458">"ಬೀಟಾ"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"ಆ್ಯಪ್ ಗ್ರಿಡ್ ಬದಲಾಯಿಸಿ"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"ವಾಲ್‌ಪೇಪರ್ ಬಣ್ಣಗಳು"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"ಐಕಾನ್‌, ಪಠ್ಯ ಮತ್ತು ಇತ್ಯಾದಿಗಳು ವಾಲ್‌ಪೇಪರ್‌ನಲ್ಲಿನ ಬಣ್ಣಗಳನ್ನು ಹೋಲುತ್ತವೆ"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"ನಿಮ್ಮ ವಾಲ್‌ಪೇಪರ್‌ನಲ್ಲಿ ಐಕಾನ್‌ಗಳು, ಪಠ್ಯ ಮತ್ತು ಇನ್ನಷ್ಟುಹೊಂದಾಣಿಕೆಯ ಬಣ್ಣಗಳು"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"ವಾಲ್‌ಪೇಪರ್ ಬಣ್ಣ"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"ಮೂಲ ಬಣ್ಣಗಳು"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"ಇತರ ಬಣ್ಣಗಳು"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ಯಾವುದೂ ಅಲ್ಲ"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"ಅಧಿಸೂಚನೆಗಳು"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ಲಾಕ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ಅಧಿಸೂಚನೆಗಳನ್ನು ತೋರಿಸಿ"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ಲಾಕ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ಅಧಿಸೂಚನೆಗಳನ್ನು ಮರೆಮಾಡಿ"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳು"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"ಲಾಕ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿನ ಪಠ್ಯ, Now Playing ಮತ್ತು ಇನ್ನಷ್ಟು"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"ಇನ್ನಷ್ಟು ಲಾಕ್ ಸ್ಕ್ರೀನ್ ಆಯ್ಕೆಗಳು"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"ಗೌಪ್ಯತೆ, Now Playing ಮತ್ತು ಇನ್ನಷ್ಟು"</string>
     <string name="more_colors" msgid="3191071655353004591">"ಇನ್ನಷ್ಟು ಬಣ್ಣಗಳು"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"ಡೀಫಾಲ್ಟ್ ಬಣ್ಣದ ಆಯ್ಕೆ"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"ಬಣ್ಣದ ಆಯ್ಕೆ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-ko/clock_colors.xml b/res/values-ko/clock_colors.xml
deleted file mode 100644
index 2b596c8..0000000
--- a/res/values-ko/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"빨간색"</item>
-    <item msgid="6882970855289978213">"주황색"</item>
-    <item msgid="5560732545714984533">"노란색"</item>
-    <item msgid="7246284817845434226">"초록색"</item>
-    <item msgid="6762906417604676001">"파란색"</item>
-    <item msgid="8974135109557664892">"인디고"</item>
-    <item msgid="786643557830463422">"보라색"</item>
-    <item msgid="6835537356703747621">"회색"</item>
-    <item msgid="2470141365136884119">"청록색"</item>
-  </string-array>
-</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 09cfb14..88e8f4d 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"단축키"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"없음"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"알림"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"잠금 화면에 알림 표시"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"잠금 화면에서 알림 숨기기"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"옵션 더보기"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"잠금 화면에 표시되는 텍스트, Now Playing, 등"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"색상 더보기"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"기본 색상 옵션"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"<xliff:g id="ID_1">%1$d</xliff:g> 색상 옵션"</string>
diff --git a/res/values-ky/clock_colors.xml b/res/values-ky/clock_colors.xml
deleted file mode 100644
index 06d711c..0000000
--- a/res/values-ky/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"КЫЗЫЛ"</item>
-    <item msgid="6882970855289978213">"КЫЗГЫЛТ САРЫ"</item>
-    <item msgid="5560732545714984533">"САРЫ"</item>
-    <item msgid="7246284817845434226">"ЖАШЫЛ"</item>
-    <item msgid="6762906417604676001">"КӨК"</item>
-    <item msgid="8974135109557664892">"ИНДИГО"</item>
-    <item msgid="786643557830463422">"КЫЗГЫЛТ КӨК"</item>
-    <item msgid="6835537356703747621">"БОЗ"</item>
-    <item msgid="2470141365136884119">"КӨГҮШ ЖАШЫЛ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 3b0dcab..539a67f 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -105,14 +105,14 @@
     <string name="beta_title" msgid="8703819523760746458">"Бета"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Колдонмонун торчосун өзгөртүү"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"Тушкагаздын түстөрү"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Сүрөтчөлөр, текст ж.б. тушкагаздын түсүнө айкалышат"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Тушкагаз түсүнө жараша сүрөтчөлөр, текст же башкалар"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Тушкагаздын түсү"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Негизги түстөр"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Башка түстөр"</string>
     <string name="preset_color_subheader" msgid="8230588536141279371">"Сүрөтчөлөрүңүз, саатыңыз же башка нерселер үчүн каалаган түстү тандаңыз"</string>
     <string name="color_changed" msgid="7029571720331641235">"Түс өзгөртүлдү"</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"Динамикалык"</string>
-    <string name="color_picker_title" msgid="6666830057938082864">"Системанын түстөрү"</string>
+    <string name="color_picker_title" msgid="6666830057938082864">"Тутумдун түстөрү"</string>
     <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"Сол ыкчам баскыч"</string>
     <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"Оң ыкчам баскыч"</string>
     <string name="keyguard_affordance_none" msgid="1751643933430782312">"Жок"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Ыкчам баскычтар"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Жок"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Билдирмелер"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Билдирмелерди кулпуланган экранда көрсөтүү"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Билдирмелерди кулпуланган экранда жашыруу"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Башка параметрлер"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Кулпу экранындагы текст, \"Эмне ойноп жатат?\" жана башка нерселер"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Дагы түстөр"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Демейки түс варианты"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"<xliff:g id="ID_1">%1$d</xliff:g> түс варианты"</string>
diff --git a/res/values-lo/clock_colors.xml b/res/values-lo/clock_colors.xml
deleted file mode 100644
index 857c2b0..0000000
--- a/res/values-lo/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ສີແດງ"</item>
-    <item msgid="6882970855289978213">"ສີສົ້ມ"</item>
-    <item msgid="5560732545714984533">"ສີເຫຼືອງ"</item>
-    <item msgid="7246284817845434226">"ສີຂຽວ"</item>
-    <item msgid="6762906417604676001">"ສີຟ້າ"</item>
-    <item msgid="8974135109557664892">"ສີຄາມ"</item>
-    <item msgid="786643557830463422">"ສີມ່ວງ"</item>
-    <item msgid="6835537356703747621">"ສີເທົາ"</item>
-    <item msgid="2470141365136884119">"ສີຟ້າອົມຂຽວ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 730232d..9a41c5b 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"ທາງລັດ"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ບໍ່ມີ"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"ການແຈ້ງເຕືອນ"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ສະແດງການແຈ້ງເຕືອນຢູ່ໜ້າຈໍລັອກ"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ເຊື່ອງການແຈ້ງເຕືອນຢູ່ໜ້າຈໍລັອກ"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"ຕົວເລືອກເພີ່ມເຕີມ"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"ຂໍ້ຄວາມຢູ່ໜ້າຈໍລັອກ, Now Playing ແລະ ອື່ນໆ"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"ຕົວເລືອກໜ້າຈໍລັອກເພີ່ມເຕີມ"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"ຄວາມເປັນສ່ວນຕົວ, Now Playing ແລະ ອື່ນໆ"</string>
     <string name="more_colors" msgid="3191071655353004591">"ສີເພີ່ມເຕີມ"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"ຕົວເລືອກສີຄ່າເລີ່ມຕົ້ນ"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"ຕົວເລືອກສີ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-lt/clock_colors.xml b/res/values-lt/clock_colors.xml
deleted file mode 100644
index 4e30d75..0000000
--- a/res/values-lt/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"RAUDONA"</item>
-    <item msgid="6882970855289978213">"ORANŽINĖ"</item>
-    <item msgid="5560732545714984533">"GELTONA"</item>
-    <item msgid="7246284817845434226">"ŽALIA"</item>
-    <item msgid="6762906417604676001">"MĖLYNA"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"VIOLETINĖ"</item>
-    <item msgid="6835537356703747621">"PILKA"</item>
-    <item msgid="2470141365136884119">"ŽALSVAI MĖLYNA"</item>
-  </string-array>
-</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 3a5c864..90b8bd7 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Šaukiniai"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Nėra"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Pranešimai"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Rodyti pranešimus užrakinimo ekrane"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Slėpti pranešimus užrakinimo ekrane"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Daugiau parinkčių"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Tekstas užrakinimo ekrane, „Dabar leidžiama“ ir kt."</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"Daugiau užrakinimo ekrano parinkčių"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Privatumas, „Dabar leidžiama“ ir kt."</string>
     <string name="more_colors" msgid="3191071655353004591">"Daugiau spalvų"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Numatytoji spalvos parinktis"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Spalvos parinktis: <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-lv/clock_colors.xml b/res/values-lv/clock_colors.xml
deleted file mode 100644
index 0983836..0000000
--- a/res/values-lv/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"SARKANA"</item>
-    <item msgid="6882970855289978213">"ORANŽA"</item>
-    <item msgid="5560732545714984533">"DZELTENA"</item>
-    <item msgid="7246284817845434226">"ZAĻA"</item>
-    <item msgid="6762906417604676001">"ZILA"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"VIOLETA"</item>
-    <item msgid="6835537356703747621">"PELĒKA"</item>
-    <item msgid="2470141365136884119">"ZILGANZAĻA"</item>
-  </string-array>
-</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index eb41480..a28e6a5 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Saīsnes"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Nav"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Paziņojumi"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Rādīt paziņojumus bloķēšanas ekrānā"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Paslēpt paziņojumus bloķēšanas ekrānā"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Citas opcijas"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Teksts bloķēšanas ekrānā, funkcija “Tagad atskaņo” u.c."</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Citas krāsas"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Noklusējuma krāsas opcija"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"<xliff:g id="ID_1">%1$d</xliff:g>. krāsas opcija"</string>
diff --git a/res/values-mk/clock_colors.xml b/res/values-mk/clock_colors.xml
deleted file mode 100644
index e89597c..0000000
--- a/res/values-mk/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ЦРВЕНА"</item>
-    <item msgid="6882970855289978213">"ПОРТОКАЛОВА"</item>
-    <item msgid="5560732545714984533">"ЖОЛТА"</item>
-    <item msgid="7246284817845434226">"ЗЕЛЕНА"</item>
-    <item msgid="6762906417604676001">"СИНА"</item>
-    <item msgid="8974135109557664892">"ИНДИГО"</item>
-    <item msgid="786643557830463422">"ВИОЛЕТОВА"</item>
-    <item msgid="6835537356703747621">"СИВА"</item>
-    <item msgid="2470141365136884119">"СИНО-ЗЕЛЕНА"</item>
-  </string-array>
-</resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 54ebf67..9375f88 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -39,7 +39,7 @@
     <string name="clock_size_dynamic" msgid="1023930312455061642">"Динамичнa"</string>
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Големината на часовникот се променува според содржините на заклучен екран"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Голема"</string>
-    <string name="clock_size_small" msgid="2280449912094164133">"Мала"</string>
+    <string name="clock_size_small" msgid="2280449912094164133">"Мал"</string>
     <string name="grid_title" msgid="1688173478777254123">"Мрежа"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Примени"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Допрете за да измените"</string>
@@ -101,11 +101,11 @@
     <string name="mode_title" msgid="2394873501427436055">"Темна тема"</string>
     <string name="mode_disabled_msg" msgid="9196245518435936512">"Привремено оневозможено поради „Штедачот на батерија“"</string>
     <string name="mode_changed" msgid="2243581369395418584">"Темата е променета"</string>
-    <string name="themed_icon_title" msgid="7312460430471956558">"Тематски икони"</string>
+    <string name="themed_icon_title" msgid="7312460430471956558">"Икони со тема"</string>
     <string name="beta_title" msgid="8703819523760746458">"Бета"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Променете ја мрежата на апликации"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"Бои од тапетот"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Иконите, текстот и др. се совпаѓаат по боја со тапетот"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Икони, текст и повеќе совпаѓачки бои на тапетот"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Боја на тапет"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Основни бои"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Други бои"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Кратенки"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Нема"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Известувања"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Прикажувај известувања на заклучен екран"</string>
-    <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Скриј известувања на заклучен екран"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Повеќе опции"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Текст на заклучен екран, Now Playing и друго"</string>
+    <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Сокривај известувања на заклучен екран"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Повеќе бои"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Стандардна опција за боја"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Опција за <xliff:g id="ID_1">%1$d</xliff:g> боја"</string>
diff --git a/res/values-ml/clock_colors.xml b/res/values-ml/clock_colors.xml
deleted file mode 100644
index b194aed..0000000
--- a/res/values-ml/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ചുവപ്പ്"</item>
-    <item msgid="6882970855289978213">"ഓറഞ്ച്"</item>
-    <item msgid="5560732545714984533">"മഞ്ഞ"</item>
-    <item msgid="7246284817845434226">"പച്ച"</item>
-    <item msgid="6762906417604676001">"നീല"</item>
-    <item msgid="8974135109557664892">"ഇൻഡിഗോ"</item>
-    <item msgid="786643557830463422">"വയലറ്റ്"</item>
-    <item msgid="6835537356703747621">"ചാരനിറം"</item>
-    <item msgid="2470141365136884119">"ടീൽ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index e9e33d3..b5c9739 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -22,7 +22,7 @@
     <string name="clock_title" msgid="1974314575211361352">"കസ്റ്റം ക്ലോക്ക്"</string>
     <string name="clock_description" msgid="3563839327378948">"കസ്റ്റം ക്ലോക്ക് തിരഞ്ഞെടുക്കൂ"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"ഇഷ്‌ടാനുസൃത  ക്ലോക്ക് മാറ്റൂ"</string>
-    <string name="clock_settings_title" msgid="2940654205471453913">"ക്ലോക്ക് ക്രമീകരണം"</string>
+    <string name="clock_settings_title" msgid="2940654205471453913">"ക്ലോക്ക് സെറ്റിംഗ്"</string>
     <string name="clock_color_and_size_title" msgid="7146791234905111351">"ക്ലോക്കിന്റെ നിറം, വലുപ്പം"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"നിറം"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"കുറുക്കുവഴികൾ"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ഒന്നുമില്ല"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"അറിയിപ്പുകൾ"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ലോക്ക് സ്ക്രീനിൽ അറിയിപ്പുകൾ കാണിക്കുക"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ലോക്ക് സ്ക്രീനിൽ അറിയിപ്പുകൾ മറയ്ക്കുക"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"കൂടുതൽ ഓപ്‌ഷനുകൾ"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"ലോക്ക് സ്ക്രീനിൽ ടെക്സ്റ്റിംഗ്, \'ഇപ്പോൾ കേൾക്കുന്നത്\' തുടങ്ങിയവ"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"കൂടുതൽ ലോക്ക് സ്‌ക്രീൻ ഓപ്‌ഷനുകൾ"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"സ്വകാര്യത, ഇപ്പോൾ കേൾക്കുന്നത്, എന്നിവയും മറ്റും"</string>
     <string name="more_colors" msgid="3191071655353004591">"കൂടുതൽ നിറങ്ങൾ"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"ഡിഫോൾട്ട് വർണ്ണ ഓപ്‌ഷൻ"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"വർണ്ണ ഓപ്‌ഷൻ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-mn/clock_colors.xml b/res/values-mn/clock_colors.xml
deleted file mode 100644
index d059fc0..0000000
--- a/res/values-mn/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"УЛААН"</item>
-    <item msgid="6882970855289978213">"УЛБАР ШАР"</item>
-    <item msgid="5560732545714984533">"ШАР"</item>
-    <item msgid="7246284817845434226">"НОГООН"</item>
-    <item msgid="6762906417604676001">"ЦЭНХЭР"</item>
-    <item msgid="8974135109557664892">"ХӨХӨВТӨР НИЛ ЯГААН"</item>
-    <item msgid="786643557830463422">"ХӨХ ЯГААН"</item>
-    <item msgid="6835537356703747621">"СААРАЛ"</item>
-    <item msgid="2470141365136884119">"УСАН ЦЭНХЭР"</item>
-  </string-array>
-</resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 804a4e1..ddf19e2 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -37,7 +37,7 @@
     <string name="clock_color_teal" msgid="7499223425741344251">"Усан цэнхэр"</string>
     <string name="clock_size" msgid="5028923902364418263">"Хэмжээ"</string>
     <string name="clock_size_dynamic" msgid="1023930312455061642">"Динамик"</string>
-    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Цагны хэмжээ нь түгжээтэй дэлгэцийн контентоос хамаарч өөрчлөгддөг"</string>
+    <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Цагны хэмжээ нь түгжигдсэн дэлгэцийн контентоос хамаарч өөрчлөгддөг"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Том"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"Жижиг"</string>
     <string name="grid_title" msgid="1688173478777254123">"Аппын хүснэгт"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Товчлол"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Байхгүй"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Мэдэгдэл"</string>
-    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Түгжээтэй дэлгэц дээр мэдэгдэл харуулах"</string>
+    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Түгжигдсэн дэлгэц дээр мэдэгдлийг харуулах"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Түгжигдсэн дэлгэц дээрх мэдэгдлүүдийг нуух"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Бусад сонголт"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Түгжигдсэн дэлгэцийн текст, Now Playing болон бусад"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Бусад өнгө"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Өгөгдмөл өнгөний сонголт"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Өнгөний сонголт <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-mr/clock_colors.xml b/res/values-mr/clock_colors.xml
deleted file mode 100644
index a37bf2a..0000000
--- a/res/values-mr/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"लाल"</item>
-    <item msgid="6882970855289978213">"नारिंगी"</item>
-    <item msgid="5560732545714984533">"पिवळा"</item>
-    <item msgid="7246284817845434226">"हिरवा"</item>
-    <item msgid="6762906417604676001">"निळा"</item>
-    <item msgid="8974135109557664892">"गडद निळा"</item>
-    <item msgid="786643557830463422">"जांभळा"</item>
-    <item msgid="6835537356703747621">"राखाडी"</item>
-    <item msgid="2470141365136884119">"हिरवट निळा"</item>
-  </string-array>
-</resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index eb6c5b0..fa9267d 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -23,7 +23,7 @@
     <string name="clock_description" msgid="3563839327378948">"कस्टम क्लॉक निवडा"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"कस्टम क्लॉक बदला"</string>
     <string name="clock_settings_title" msgid="2940654205471453913">"क्लॉक सेटिंग्ज"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"घड्याळाचा रंग व आकार"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Clock चा रंग व आकार"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"रंग"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"लाल"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"शॉर्टकट"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"काहीही नाही"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"सूचना"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"लॉक स्‍क्रीनवर सूचना दाखवा"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"लॉक स्‍क्रीनवर सूचना लपवा"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"अधिक पर्याय"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"लॉक स्‍क्रीन, Now Playing आणि आणखी बरेच काही यासंबंधित मजकूर"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"आणखी लॉक स्‍क्रीन पर्याय"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"गोपनीयता, Now Playing आणि आणखी बरेच काही"</string>
     <string name="more_colors" msgid="3191071655353004591">"आणखी रंग"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"रंगाचा डीफॉल्ट पर्याय"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"<xliff:g id="ID_1">%1$d</xliff:g> रंगाचा पर्याय"</string>
diff --git a/res/values-ms/clock_colors.xml b/res/values-ms/clock_colors.xml
deleted file mode 100644
index fb06584..0000000
--- a/res/values-ms/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"MERAH"</item>
-    <item msgid="6882970855289978213">"JINGGA"</item>
-    <item msgid="5560732545714984533">"KUNING"</item>
-    <item msgid="7246284817845434226">"HIJAU"</item>
-    <item msgid="6762906417604676001">"BIRU"</item>
-    <item msgid="8974135109557664892">"BIRU NILA"</item>
-    <item msgid="786643557830463422">"LEMBAYUNG"</item>
-    <item msgid="6835537356703747621">"KELABU"</item>
-    <item msgid="2470141365136884119">"HIJAU KEBIRUAN"</item>
-  </string-array>
-</resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index ef25f12..14c8592 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -17,7 +17,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_name" msgid="1647136562008520313">"Hiasan latar &amp; gaya"</string>
+    <string name="app_name" msgid="1647136562008520313">"Kertas dinding &amp; gaya"</string>
     <string name="theme_title" msgid="2144932106319405101">"Gaya"</string>
     <string name="clock_title" msgid="1974314575211361352">"Jam Tersuai"</string>
     <string name="clock_description" msgid="3563839327378948">"Pilih jam tersuai"</string>
@@ -104,7 +104,7 @@
     <string name="themed_icon_title" msgid="7312460430471956558">"Ikon bertema"</string>
     <string name="beta_title" msgid="8703819523760746458">"Beta"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Tukar grid apl"</string>
-    <string name="wallpaper_color_tab" msgid="1447926591721403840">"Warna hiasan latar"</string>
+    <string name="wallpaper_color_tab" msgid="1447926591721403840">"Warna kertas dinding"</string>
     <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ikon, teks dan pelbagai padanan warna pada hiasan latar"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Warna kertas dinding"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Warna asas"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Pintasan"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Tiada"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Pemberitahuan"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Tunjukkan pemberitahuan pada skrin kunci"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Sembunyikan pemberitahuan pada skrin kunci"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Lagi pilihan"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Teks pada skrin kunci, Now Playing dan pelbagai lagi"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"Lebih banyak pilihan skrin kunci"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Privasi, Now Playing dan pelbagai lagi"</string>
     <string name="more_colors" msgid="3191071655353004591">"Lagi Warna"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Pilihan warna lalai"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Pilihan warna <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-my/clock_colors.xml b/res/values-my/clock_colors.xml
deleted file mode 100644
index 121056b..0000000
--- a/res/values-my/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"အနီရောင်"</item>
-    <item msgid="6882970855289978213">"လိမ္မော်ရောင်"</item>
-    <item msgid="5560732545714984533">"အဝါရောင်"</item>
-    <item msgid="7246284817845434226">"အစိမ်းရောင်"</item>
-    <item msgid="6762906417604676001">"အပြာရောင်"</item>
-    <item msgid="8974135109557664892">"မဲနယ်ရောင်"</item>
-    <item msgid="786643557830463422">"ခရမ်းရောင်"</item>
-    <item msgid="6835537356703747621">"မီးခိုးရောင်"</item>
-    <item msgid="2470141365136884119">"စိမ်းပြာရောင်"</item>
-  </string-array>
-</resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 88f3f32..a969545 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -101,11 +101,11 @@
     <string name="mode_title" msgid="2394873501427436055">"အမှောင်နောက်ခံ"</string>
     <string name="mode_disabled_msg" msgid="9196245518435936512">"‘ဘက်ထရီ အားထိန်း’ ကြောင့် ယာယီပိတ်ထားသည်"</string>
     <string name="mode_changed" msgid="2243581369395418584">"အပြင်အဆင် ပြောင်းလိုက်ပါပြီ"</string>
-    <string name="themed_icon_title" msgid="7312460430471956558">"အကြောင်းအရာ သင်္ကေတများ"</string>
+    <string name="themed_icon_title" msgid="7312460430471956558">"အပြင်အဆင်သုံး သင်္ကေတများ"</string>
     <string name="beta_title" msgid="8703819523760746458">"စမ်းသပ်"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"အက်ပ်ဇယား ပြောင်းရန်"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"နောက်ခံအရောင်များ"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"သင်္ကေတ၊ စာသားစသည်တို့သည် သင့်နောက်ခံအရောင်များနှင့် ကိုက်ညီသည်"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"သင့်နောက်ခံရှိ သင်္ကေတ၊ စာသား၊ နောက်ထပ်တူညီသည့်အရောင်"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"နောက်ခံအရောင်"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"အခြေခံအရောင်များ"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"အခြားအရောင်"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"ဖြတ်လမ်းလင့်ခ်"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>၊ <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"မရှိ"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"အကြောင်းကြားချက်များ"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"အကြောင်းကြားချက်များကို လော့ခ်မျက်နှာပြင်တွင် ပြပါ"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"အကြောင်းကြားချက်များကို လော့ခ်မျက်နှာပြင်တွင် ဖျောက်ထားရန်"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"နောက်ထပ်ရွေးစရာများ"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"လော့ခ်စကရင် စာသား၊ Now Playing နှင့် နောက်ထပ်ဆက်တင်"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"နောက်ထပ် လော့ခ်မျက်နှာပြင် နည်းလမ်းများ"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"ကိုယ်ရေးအချက်အလက်လုံခြုံမှု၊ Now Playing နှင့်အခြား"</string>
     <string name="more_colors" msgid="3191071655353004591">"နောက်ထပ်အရောင်များ"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"မူလ အရောင်ရွေးစရာ"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"အရောင်ရွေးစရာ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-nb/clock_colors.xml b/res/values-nb/clock_colors.xml
deleted file mode 100644
index 7b27822..0000000
--- a/res/values-nb/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"RØD"</item>
-    <item msgid="6882970855289978213">"ORANSJE"</item>
-    <item msgid="5560732545714984533">"GUL"</item>
-    <item msgid="7246284817845434226">"GRØNN"</item>
-    <item msgid="6762906417604676001">"BLÅ"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"FIOLETT"</item>
-    <item msgid="6835537356703747621">"GRÅ"</item>
-    <item msgid="2470141365136884119">"BLÅGRØNN"</item>
-  </string-array>
-</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 9f14aa3..cdf7f7c 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Snarveier"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ingen"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Varsler"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Vis varsler på låseskjermen"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Skjul varsler på låseskjermen"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Flere alternativer"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Tekst på låseskjermen, Spilles nå med mer"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Flere farger"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Standard fargealternativ"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Fargealternativ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-ne/clock_colors.xml b/res/values-ne/clock_colors.xml
deleted file mode 100644
index a46e357..0000000
--- a/res/values-ne/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"रातो"</item>
-    <item msgid="6882970855289978213">"सुन्तले"</item>
-    <item msgid="5560732545714984533">"पहेँलो"</item>
-    <item msgid="7246284817845434226">"हरियो"</item>
-    <item msgid="6762906417604676001">"निलो"</item>
-    <item msgid="8974135109557664892">"इन्डिगो"</item>
-    <item msgid="786643557830463422">"बैजनी"</item>
-    <item msgid="6835537356703747621">"खैरो"</item>
-    <item msgid="2470141365136884119">"निलोमिश्रित हरियो"</item>
-  </string-array>
-</resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 51a63e2..99d8675 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -90,7 +90,7 @@
     <string name="use_style_button" msgid="1754493078383627019">"<xliff:g id="ID_1">%1$s</xliff:g> प्रयोग गर्नु…"</string>
     <string name="no_thanks" msgid="7286616980115687627">"पर्दैन, धन्यवाद"</string>
     <string name="clock_preview_content_description" msgid="5460561185905717460">"<xliff:g id="ID_1">%1$s</xliff:g> घडीको पूर्वावलोकन"</string>
-    <string name="something_went_wrong" msgid="529840112449799117">"हत्तेरिका! कुनै समस्या आयो।"</string>
+    <string name="something_went_wrong" msgid="529840112449799117">"हत्तेरिका! केही चिज गडबड भयो।"</string>
     <string name="theme_preview_icons_section_title" msgid="7064768910744000643">"रङ / आइकनहरू"</string>
     <string name="style_info_description" msgid="2612473574431003251">"फन्ट, आइकन, एपको आकृति र रङको प्रिभ्यू"</string>
     <string name="accessibility_custom_font_title" msgid="966867359157303705">"आफूले रोजेको फन्ट"</string>
@@ -113,8 +113,8 @@
     <string name="color_changed" msgid="7029571720331641235">"रङ बदलियो"</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"गतिशील"</string>
     <string name="color_picker_title" msgid="6666830057938082864">"सिस्टमका रङहरू"</string>
-    <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"बायाँ सर्टकट"</string>
-    <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"दायाँ सर्टकट"</string>
+    <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"बायाँको सर्टकट"</string>
+    <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"दायाँको सर्टकट"</string>
     <string name="keyguard_affordance_none" msgid="1751643933430782312">"कुनै पनि होइन"</string>
     <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"\"<xliff:g id="APPNAME">%1$s</xliff:g>\" चयन गर्न तल दिइएका निर्देशनहरू पालना गर्नुहोस्"</string>
     <string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"<xliff:g id="APPNAME">%1$s</xliff:g> खोल्नुहोस्"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"सर्टकटहरू"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"कुनै पनि होइन"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"सूचनाहरू"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"लक स्क्रिनमा सूचनाहरू देखाइऊन्"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"लक स्क्रिनमा सूचनाहरू लुकाइऊन्"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"थप विकल्पहरू"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"लक स्क्रिनमा टेक्स्ट देखिने सुविधा, Now Playing र थप सुविधाहरू"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"लक स्क्रिनसम्बन्धी थप विकल्पहरू"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"गोपनीयता, Now Playing र अन्य कुराहरू"</string>
     <string name="more_colors" msgid="3191071655353004591">"थप रङहरू"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"रङसम्बन्धी डिफल्ट विकल्प"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"रङसम्बन्धी विकल्प <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-nl/clock_colors.xml b/res/values-nl/clock_colors.xml
deleted file mode 100644
index bd072a1..0000000
--- a/res/values-nl/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ROOD"</item>
-    <item msgid="6882970855289978213">"ORANJE"</item>
-    <item msgid="5560732545714984533">"GEEL"</item>
-    <item msgid="7246284817845434226">"GROEN"</item>
-    <item msgid="6762906417604676001">"BLAUW"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"VIOLET"</item>
-    <item msgid="6835537356703747621">"GRIJS"</item>
-    <item msgid="2470141365136884119">"BLAUWGROEN"</item>
-  </string-array>
-</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index b00ef09..26bd072 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -23,7 +23,7 @@
     <string name="clock_description" msgid="3563839327378948">"Klok kiezen"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Aangepaste klok wijzigen"</string>
     <string name="clock_settings_title" msgid="2940654205471453913">"Klokinstellingen"</string>
-    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Kleur en formaat van klok"</string>
+    <string name="clock_color_and_size_title" msgid="7146791234905111351">"Kleur en grootte van klok"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Kleur"</string>
     <string name="clock_color_red" msgid="3843504214807597810">"Rood"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Snelkoppelingen"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Geen"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Meldingen"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Meldingen tonen op het vergrendelscherm"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Meldingen verbergen op het vergrendelscherm"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Meer opties"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Tekst op vergrendelscherm, Now Playing en meer"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"Meer schermvergrendelingsopties"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Privacy, Now Playing en meer"</string>
     <string name="more_colors" msgid="3191071655353004591">"Meer kleuren"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Standaard kleuroptie"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Kleuroptie <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-or/clock_colors.xml b/res/values-or/clock_colors.xml
deleted file mode 100644
index ab38485..0000000
--- a/res/values-or/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ଲାଲ"</item>
-    <item msgid="6882970855289978213">"କମଳା"</item>
-    <item msgid="5560732545714984533">"ହଳଦିଆ"</item>
-    <item msgid="7246284817845434226">"ସବୁଜ"</item>
-    <item msgid="6762906417604676001">"ନୀଳ"</item>
-    <item msgid="8974135109557664892">"ଇଣ୍ଡିଗୋ"</item>
-    <item msgid="786643557830463422">"ବାଇଗଣୀ"</item>
-    <item msgid="6835537356703747621">"ଧୂସର"</item>
-    <item msgid="2470141365136884119">"ଟିଲ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 6a5f37d..b18bcb3 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -17,7 +17,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_name" msgid="1647136562008520313">"ୱାଲପେପର ଏବଂ ଷ୍ଟାଇଲ"</string>
+    <string name="app_name" msgid="1647136562008520313">"ୱାଲପେପର୍ ଏବଂ ଷ୍ଟାଇଲ୍"</string>
     <string name="theme_title" msgid="2144932106319405101">"ଷ୍ଟାଇଲ୍"</string>
     <string name="clock_title" msgid="1974314575211361352">"କଷ୍ଟମ ଘଣ୍ଟା"</string>
     <string name="clock_description" msgid="3563839327378948">"କଷ୍ଟମ ଘଣ୍ଟା ବାଛ"</string>
@@ -40,7 +40,7 @@
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"ଘଣ୍ଟାର ଆକାର ଲକ ସ୍କ୍ରିନର ବିଷୟବସ୍ତୁ ଅନୁସାରେ ପରିବର୍ତ୍ତନ ହୋଇଥାଏ"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"ବଡ଼"</string>
     <string name="clock_size_small" msgid="2280449912094164133">"ଛୋଟ"</string>
-    <string name="grid_title" msgid="1688173478777254123">"ଆପ ଗ୍ରିଡ"</string>
+    <string name="grid_title" msgid="1688173478777254123">"ଆପ୍ ଗ୍ରିଡ୍"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"ପ୍ରୟୋଗ କରନ୍ତୁ"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ଏଡିଟ କରିବା ପାଇଁ ଟାପ କରନ୍ତୁ"</string>
     <string name="keep_my_wallpaper" msgid="8012385376769568517">"ବର୍ତ୍ତମାନର ୱାଲ୍‌ପେପର୍‌କୁ ରଖନ୍ତୁ"</string>
@@ -101,7 +101,7 @@
     <string name="mode_title" msgid="2394873501427436055">"ଗାଢ଼ା ଥିମ୍"</string>
     <string name="mode_disabled_msg" msgid="9196245518435936512">"ବ୍ୟାଟେରୀ ସେଭର୍ ଯୋଗୁଁ ଅସ୍ଥାୟୀ ଭାବେ ଅକ୍ଷମ କରାଯାଇଛି"</string>
     <string name="mode_changed" msgid="2243581369395418584">"ଥିମ ପରିବର୍ତ୍ତନ କରାଯାଇଛି"</string>
-    <string name="themed_icon_title" msgid="7312460430471956558">"ଥିମ ଯୁକ୍ତ ଆଇକନ"</string>
+    <string name="themed_icon_title" msgid="7312460430471956558">"ଥିମ୍ ଯୁକ୍ତ ଆଇକନ୍"</string>
     <string name="beta_title" msgid="8703819523760746458">"ବିଟା"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"ଆପ୍ ଗ୍ରିଡ୍ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"ୱାଲପେପର ରଙ୍ଗଗୁଡ଼ିକ"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"ସର୍ଟକଟଗୁଡ଼ିକ"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"କିଛି ନାହିଁ"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ଲକ ସ୍କ୍ରିନରେ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଦେଖାନ୍ତୁ"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ଲକ ସ୍କ୍ରିନରେ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଲୁଚାନ୍ତୁ"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"ଅଧିକ ବିକଳ୍ପ"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"ଲକ ସ୍କ୍ରିନରେ ଟେକ୍ସଟ, ଏବେ ଚାଲୁଛି ଏବଂ ଆହୁରି ଅନେକ କିଛି"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"ଅଧିକ ରଙ୍ଗ"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"ଡିଫଲ୍ଟ ରଙ୍ଗର ବିକଳ୍ପ"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"ରଙ୍ଗର ବିକଳ୍ପ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-pa/clock_colors.xml b/res/values-pa/clock_colors.xml
deleted file mode 100644
index 3201dab..0000000
--- a/res/values-pa/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ਲਾਲ"</item>
-    <item msgid="6882970855289978213">"ਸੰਤਰੀ"</item>
-    <item msgid="5560732545714984533">"ਪੀਲਾ"</item>
-    <item msgid="7246284817845434226">"ਹਰਾ"</item>
-    <item msgid="6762906417604676001">"ਨੀਲਾ"</item>
-    <item msgid="8974135109557664892">"ਲਾਜਵਰ"</item>
-    <item msgid="786643557830463422">"ਜਾਮਣੀ"</item>
-    <item msgid="6835537356703747621">"ਸਲੇਟੀ"</item>
-    <item msgid="2470141365136884119">"ਟੀਲ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 2b3bb83..ed0e4f8 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -39,7 +39,7 @@
     <string name="clock_size_dynamic" msgid="1023930312455061642">"ਪਰਿਵਰਤਨਸ਼ੀਲ"</string>
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"ਘੜੀ ਦਾ ਆਕਾਰ ਲਾਕ ਸਕ੍ਰੀਨ ਦੀ ਸਮੱਗਰੀ ਮੁਤਾਬਕ ਬਦਲਦਾ ਹੈ"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"ਵੱਡਾ"</string>
-    <string name="clock_size_small" msgid="2280449912094164133">"ਛੋਟਾ"</string>
+    <string name="clock_size_small" msgid="2280449912094164133">"ਛੋਟਾ ਕਰੋ"</string>
     <string name="grid_title" msgid="1688173478777254123">"ਐਪ ਗ੍ਰਿਡ"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"ਲਾਗੂ ਕਰੋ"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"ਸੰਪਾਦਨ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
@@ -55,7 +55,7 @@
     <string name="option_previewed_description" msgid="3467217598865047661">"<xliff:g id="ID_1">%1$s</xliff:g>, ਫਿਲਹਾਲ ਪੂਰਵ-ਝਲਕ ਦੇਖੀ ਗਈ"</string>
     <string name="option_change_applied_previewed_description" msgid="9197311327728570816">"<xliff:g id="ID_1">%1$s</xliff:g>, ਉਸ ਵਿਕਲਪ ਨੂੰ ਬਦਲੋ ਜਿਸ ਨੂੰ ਚੁਣਿਆ ਗਿਆ ਅਤੇ ਜਿਸ ਦੀ ਪੂਰਵ-ਝਲਕ ਦੇਖੀ ਗਈ ਹੈ"</string>
     <string name="theme_description" msgid="3697012391785254635">"ਫੌਂਟ: <xliff:g id="ID_1">%1$s</xliff:g>, ਪ੍ਰਤੀਕ: <xliff:g id="ID_2">%2$s</xliff:g>, ਆਕ੍ਰਿਤੀ: <xliff:g id="ID_3">%3$s</xliff:g>, ਰੰਗ: <xliff:g id="ID_4">%4$s</xliff:g>"</string>
-    <string name="default_theme_title" msgid="2555741736622366797">"ਪੂਰਵ-ਨਿਰਧਾਰਿਤ"</string>
+    <string name="default_theme_title" msgid="2555741736622366797">"ਪੂਰਵ-ਨਿਰਧਾਰਤ"</string>
     <string name="preview_name_font" msgid="4465423899630037038">"ਫੌਂਟ"</string>
     <string name="preview_name_icon" msgid="6818927315316316440">"ਪ੍ਰਤੀਕ"</string>
     <string name="preview_name_color" msgid="8776203144994416172">"ਰੰਗ"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"ਸ਼ਾਰਟਕੱਟ"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ਕੋਈ ਨਹੀਂ"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"ਸੂਚਨਾਵਾਂ"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"ਲਾਕ ਸਕ੍ਰੀਨ \'ਤੇ ਸੂਚਨਾਵਾਂ ਦਿਖਾਓ"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ਲਾਕ ਸਕ੍ਰੀਨ \'ਤੇ ਸੂਚਨਾਵਾਂ ਲੁਕਾਓ"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"ਹੋਰ ਵਿਕਲਪ"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"ਲਾਕ ਸਕ੍ਰੀਨ \'ਤੇ ਲਿਖਤ ਸ਼ਾਮਲ ਕਰਨਾ, Now Playing ਅਤੇ ਹੋਰ"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"ਹੋਰ ਰੰਗ"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"ਰੰਗ ਦਾ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਵਿਕਲਪ"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"ਰੰਗ ਦਾ ਵਿਕਲਪ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-pl/clock_colors.xml b/res/values-pl/clock_colors.xml
deleted file mode 100644
index 2e6f58b..0000000
--- a/res/values-pl/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"CZERWONY"</item>
-    <item msgid="6882970855289978213">"POMARAŃCZOWY"</item>
-    <item msgid="5560732545714984533">"ŻÓŁTY"</item>
-    <item msgid="7246284817845434226">"ZIELONY"</item>
-    <item msgid="6762906417604676001">"NIEBIESKI"</item>
-    <item msgid="8974135109557664892">"INDYGO"</item>
-    <item msgid="786643557830463422">"FIOLETOWY"</item>
-    <item msgid="6835537356703747621">"SZARY"</item>
-    <item msgid="2470141365136884119">"MORSKI"</item>
-  </string-array>
-</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index b15937c..f67f187 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Skróty"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Brak"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Powiadomienia"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Pokazuj powiadomienia na ekranie blokady"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Ukrywaj powiadomienia na ekranie blokady"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Więcej opcji"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"SMS-y na ekranie blokady, Co jest grane i inne funkcje"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"Więcej opcji ekranu blokady"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Prywatność, Co jest grane i inne ustawienia"</string>
     <string name="more_colors" msgid="3191071655353004591">"Więcej kolorów"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Domyślna opcja koloru"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Opcja koloru <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-pt-rPT/clock_colors.xml b/res/values-pt-rPT/clock_colors.xml
deleted file mode 100644
index 029295a..0000000
--- a/res/values-pt-rPT/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"VERMELHO"</item>
-    <item msgid="6882970855289978213">"LARANJA"</item>
-    <item msgid="5560732545714984533">"AMARELO"</item>
-    <item msgid="7246284817845434226">"VERDE"</item>
-    <item msgid="6762906417604676001">"AZUL"</item>
-    <item msgid="8974135109557664892">"ÍNDIGO"</item>
-    <item msgid="786643557830463422">"VIOLETA"</item>
-    <item msgid="6835537356703747621">"CINZENTO"</item>
-    <item msgid="2470141365136884119">"AZUL-ESVERDEADO"</item>
-  </string-array>
-</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 0905a4c..8de02c3 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -105,7 +105,7 @@
     <string name="beta_title" msgid="8703819523760746458">"Beta"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Altere a grelha de apps"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"Cores imag. de fundo"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ícones, texto, etc. condizem com a imagem de fundo"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ícones, texto, etc. condizem c/ cores da imag. de fundo"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Cor da imagem de fundo"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Cores básicas"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Outras cores"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Atalhos"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Nenhum"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Notificações"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostre as notificações no ecrã de bloqueio"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Oculte as notificações no ecrã de bloqueio"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Mais opções"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Texto no ecrã de bloqueio, A tocar e muito mais"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Mais cores"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Opção de cor predefinida"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Opção de cor <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-pt/clock_colors.xml b/res/values-pt/clock_colors.xml
deleted file mode 100644
index 57538ba..0000000
--- a/res/values-pt/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"VERMELHO"</item>
-    <item msgid="6882970855289978213">"LARANJA"</item>
-    <item msgid="5560732545714984533">"AMARELO"</item>
-    <item msgid="7246284817845434226">"VERDE"</item>
-    <item msgid="6762906417604676001">"AZUL"</item>
-    <item msgid="8974135109557664892">"ÍNDIGO"</item>
-    <item msgid="786643557830463422">"VIOLETA"</item>
-    <item msgid="6835537356703747621">"CINZA"</item>
-    <item msgid="2470141365136884119">"AZUL-PETRÓLEO"</item>
-  </string-array>
-</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index ac3f506..a5a3ba8 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -105,7 +105,7 @@
     <string name="beta_title" msgid="8703819523760746458">"Beta"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Mudar a grade de apps"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"Cores do plano de fundo"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ícones, texto e mais para combinar com o plano de fundo"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Ícones, texto e mais cores que combinam com o plano de fundo"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Cor do plano de fundo"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Cores básicas"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Outras cores"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Atalhos"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Nenhum"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Notificações"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Mostrar notificações na tela de bloqueio"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Ocultar notificações na tela de bloqueio"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Mais opções"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Texto na tela de bloqueio, Tocando agora e muito mais"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"Mais opções da tela de bloqueio"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Privacidade, Tocando agora e muito mais"</string>
     <string name="more_colors" msgid="3191071655353004591">"Mais cores"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Opção de cor padrão"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Opção de cor <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-ro/clock_colors.xml b/res/values-ro/clock_colors.xml
deleted file mode 100644
index 003fa39..0000000
--- a/res/values-ro/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ROȘU"</item>
-    <item msgid="6882970855289978213">"PORTOCALIU"</item>
-    <item msgid="5560732545714984533">"GALBEN"</item>
-    <item msgid="7246284817845434226">"VERDE"</item>
-    <item msgid="6762906417604676001">"ALBASTRU"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"VIOLET"</item>
-    <item msgid="6835537356703747621">"GRI"</item>
-    <item msgid="2470141365136884119">"TURCOAZ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index a53e7c8..c0cecf4 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -39,7 +39,7 @@
     <string name="clock_size_dynamic" msgid="1023930312455061642">"Dinamică"</string>
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Dimensiunea ceasului se schimbă în funcție de conținutul ecranului de blocare"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Mare"</string>
-    <string name="clock_size_small" msgid="2280449912094164133">"Mică"</string>
+    <string name="clock_size_small" msgid="2280449912094164133">"Mic"</string>
     <string name="grid_title" msgid="1688173478777254123">"Grilă aplicații"</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Aplică"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Atinge pentru a modifica"</string>
@@ -105,7 +105,7 @@
     <string name="beta_title" msgid="8703819523760746458">"Beta"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"Schimbă grila de aplicații"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"Culori de fundal"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Culori pictograme, text etc. asortate cu imaginea de fundal"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"Culori pentru pictograme, text și altele din imaginea de fundal"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Culoarea imaginii de fundal"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Culori de bază"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Alte culori"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Comenzi rapide"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Niciunul"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Notificări"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Afișează notificările pe ecranul de blocare"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Ascunde notificările pe ecranul de blocare"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Mai multe opțiuni"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Text pe ecranul de blocare, Now Playing și altele"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Mai multe culori"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Opțiune de culoare prestabilită"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Opțiunea de culoare <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-ru/clock_colors.xml b/res/values-ru/clock_colors.xml
deleted file mode 100644
index 17e429a..0000000
--- a/res/values-ru/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"КРАСНЫЙ"</item>
-    <item msgid="6882970855289978213">"ОРАНЖЕВЫЙ"</item>
-    <item msgid="5560732545714984533">"ЖЕЛТЫЙ"</item>
-    <item msgid="7246284817845434226">"ЗЕЛЕНЫЙ"</item>
-    <item msgid="6762906417604676001">"СИНИЙ"</item>
-    <item msgid="8974135109557664892">"ИНДИГО"</item>
-    <item msgid="786643557830463422">"ФИОЛЕТОВЫЙ"</item>
-    <item msgid="6835537356703747621">"СЕРЫЙ"</item>
-    <item msgid="2470141365136884119">"ТЕМНО-БИРЮЗОВЫЙ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 5bf160b..c20c1a2 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Быстрые действия"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Нет"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Уведомления"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Показывать уведомления на заблокированном экране"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Скрывать уведомления на заблокированном экране"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Дополнительные настройки"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Текст на заблок. экране, функция \"Что сейчас играет?\" и др."</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Ещё цвета"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Цвет по умолчанию"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Цвет: <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-si/clock_colors.xml b/res/values-si/clock_colors.xml
deleted file mode 100644
index c0b3da5..0000000
--- a/res/values-si/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"රතු"</item>
-    <item msgid="6882970855289978213">"තැඹිලි"</item>
-    <item msgid="5560732545714984533">"කහ"</item>
-    <item msgid="7246284817845434226">"කොළ"</item>
-    <item msgid="6762906417604676001">"නිල්"</item>
-    <item msgid="8974135109557664892">"ඉන්ඩිගෝ"</item>
-    <item msgid="786643557830463422">"වයලට්"</item>
-    <item msgid="6835537356703747621">"අළු"</item>
-    <item msgid="2470141365136884119">"හරිත නිල්"</item>
-  </string-array>
-</resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index ee2570c..d34dea4 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"කෙටිමං"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"කිසිවක් නැත"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"දැනුම්දීම්"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"අගුළු තිරය මත දැනුම්දීම් පෙන්වන්න"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"අගුළු තිරය මත දැනුම්දීම් සඟවන්න"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"තවත් විකල්ප"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"අගුළු තිරය මත පෙළ, දැන් වාදනය වීම, සහ තවත් දේ"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"තවත් අගුලු තිර විකල්ප"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"පෞද්ගලිකත්වය, Now Playing, සහ තවත් දේ"</string>
     <string name="more_colors" msgid="3191071655353004591">"තවත් වර්ණ"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"පෙරනිමි වර්ණ විකල්පය"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"වර්ණ විකල්පය <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-sk/clock_colors.xml b/res/values-sk/clock_colors.xml
deleted file mode 100644
index a443c4b..0000000
--- a/res/values-sk/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ČERVENÁ"</item>
-    <item msgid="6882970855289978213">"ORANŽOVÁ"</item>
-    <item msgid="5560732545714984533">"ŽLTÁ"</item>
-    <item msgid="7246284817845434226">"ZELENÁ"</item>
-    <item msgid="6762906417604676001">"MODRÁ"</item>
-    <item msgid="8974135109557664892">"INDIGOVÁ"</item>
-    <item msgid="786643557830463422">"FIALOVÁ"</item>
-    <item msgid="6835537356703747621">"SIVÁ"</item>
-    <item msgid="2470141365136884119">"MODROZELENÁ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 64fee5d..8bf29a6 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Skratky"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Žiadne"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Upozornenia"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Zobrazovať upozornenia na uzamknutej obrazovke"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Skrývať upozornenia na uzamknutej obrazovke"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Ďalšie možnosti"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Text na uzamknutej obrazovke, Čo to hrá a ďalšie nastavenia"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"Viac možností uzamkn. obrazovky"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Ochrana súkromia, Čo to hrá a ďalšie funkcie"</string>
     <string name="more_colors" msgid="3191071655353004591">"Ďalšie farby"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Predvolená farba"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Farba: <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-sl/clock_colors.xml b/res/values-sl/clock_colors.xml
deleted file mode 100644
index edf1377..0000000
--- a/res/values-sl/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"RDEČA"</item>
-    <item msgid="6882970855289978213">"ORANŽNA"</item>
-    <item msgid="5560732545714984533">"RUMENA"</item>
-    <item msgid="7246284817845434226">"ZELENA"</item>
-    <item msgid="6762906417604676001">"MODRA"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"VIJOLIČNA"</item>
-    <item msgid="6835537356703747621">"SIVA"</item>
-    <item msgid="2470141365136884119">"ZELENOMODRA"</item>
-  </string-array>
-</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 670174a..5097ac3 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Bližnjice"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Brez"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Obvestila"</string>
-    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Prikaži obvestila na zaklenjenem zaslonu"</string>
+    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Prikaz obvestil na zaklenjenem zaslonu"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Skrivanje obvestil na zaklenjenem zaslonu"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Več možnosti"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Besedilo na zaklenjenem zaslonu, Zdaj se predvaja in drugo"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Več barv"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Privzeta možnost barve"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Možnost barve <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-sq/clock_colors.xml b/res/values-sq/clock_colors.xml
deleted file mode 100644
index 69a2b0c..0000000
--- a/res/values-sq/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"E KUQE"</item>
-    <item msgid="6882970855289978213">"PORTOKALLI"</item>
-    <item msgid="5560732545714984533">"E VERDHË"</item>
-    <item msgid="7246284817845434226">"E GJELBËR"</item>
-    <item msgid="6762906417604676001">"BLU"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"VJOLLCË"</item>
-    <item msgid="6835537356703747621">"GRI"</item>
-    <item msgid="2470141365136884119">"GURKALI"</item>
-  </string-array>
-</resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 78dfec2..cb09006 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -22,7 +22,7 @@
     <string name="clock_title" msgid="1974314575211361352">"Orë e personalizuar"</string>
     <string name="clock_description" msgid="3563839327378948">"Orë e personalizuar"</string>
     <string name="clock_picker_entry_content_description" msgid="8377139273468595734">"Ndrysho orën e personalizuar"</string>
-    <string name="clock_settings_title" msgid="2940654205471453913">"Cilësimet e orës"</string>
+    <string name="clock_settings_title" msgid="2940654205471453913">"Ora: Cilësimet"</string>
     <string name="clock_color_and_size_title" msgid="7146791234905111351">"Ora: Ngjyra/madhësia"</string>
     <string name="clock_color_and_size_description" msgid="6578061553012886817">"<xliff:g id="ID_1">%1$s</xliff:g>, <xliff:g id="ID_2">%2$s</xliff:g>"</string>
     <string name="clock_color" msgid="8081608867289156163">"Ngjyra"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Shkurtoret"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Asnjë"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Njoftimet"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Shfaq njoftimet në ekranin e kyçjes"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Fshih njoftimet në ekranin e kyçjes"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Opsione të tjera"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Tekst në ekranin e kyçjes, \"Gjej këngën\" dhe të tjera"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Më shumë ngjyra"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Opsioni i parazgjedhur i ngjyrës"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Opsioni i ngjyrës: <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-sr/clock_colors.xml b/res/values-sr/clock_colors.xml
deleted file mode 100644
index 9250371..0000000
--- a/res/values-sr/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ЦРВЕНА"</item>
-    <item msgid="6882970855289978213">"НАРАНЏАСТА"</item>
-    <item msgid="5560732545714984533">"ЖУТА"</item>
-    <item msgid="7246284817845434226">"ЗЕЛЕНА"</item>
-    <item msgid="6762906417604676001">"ПЛАВА"</item>
-    <item msgid="8974135109557664892">"ТАМНОПЛАВА"</item>
-    <item msgid="786643557830463422">"ЉУБИЧАСТА"</item>
-    <item msgid="6835537356703747621">"СИВА"</item>
-    <item msgid="2470141365136884119">"ТИРКИЗНА"</item>
-  </string-array>
-</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index af29aa2..0028732 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -39,7 +39,7 @@
     <string name="clock_size_dynamic" msgid="1023930312455061642">"Динамички"</string>
     <string name="clock_size_dynamic_description" msgid="2776620745774561662">"Величина сата се мења у складу са садржајем закључаног екрана"</string>
     <string name="clock_size_large" msgid="3143248715744138979">"Велико"</string>
-    <string name="clock_size_small" msgid="2280449912094164133">"Мали"</string>
+    <string name="clock_size_small" msgid="2280449912094164133">"Мало"</string>
     <string name="grid_title" msgid="1688173478777254123">"Мрежа апл."</string>
     <string name="apply_theme_btn" msgid="6293081192321303991">"Примени"</string>
     <string name="edit_custom_theme_lbl" msgid="5211377705710775224">"Додирните да бисте изменили"</string>
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Пречице"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Ништа"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Обавештења"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Приказуј обавештења на закључаном екрану"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Сакриј обавештења на закључаном екрану"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Још опција"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Текст на закључаном екрану, Тренутно свира и друго"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"Још опција за закључани екран"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Приватност, Тренутно свира и друго"</string>
     <string name="more_colors" msgid="3191071655353004591">"Још боја"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Подразумевана опција боје"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Опција боје <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-sv/clock_colors.xml b/res/values-sv/clock_colors.xml
deleted file mode 100644
index 46df56a..0000000
--- a/res/values-sv/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"RÖD"</item>
-    <item msgid="6882970855289978213">"ORANGE"</item>
-    <item msgid="5560732545714984533">"GUL"</item>
-    <item msgid="7246284817845434226">"GRÖN"</item>
-    <item msgid="6762906417604676001">"BLÅ"</item>
-    <item msgid="8974135109557664892">"INDIGOBLÅ"</item>
-    <item msgid="786643557830463422">"VIOLETT"</item>
-    <item msgid="6835537356703747621">"GRÅ"</item>
-    <item msgid="2470141365136884119">"BLÅGRÖN"</item>
-  </string-array>
-</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 22dff29..b600940 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Genvägar"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Inga"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Aviseringar"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Visa aviseringar på låsskärmen"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Dölj aviseringar på låsskärmen"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Fler alternativ"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Text på låsskärmen, Nu spelas med mera"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Fler färger"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Standardfärgen"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Färgalternativet <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-sw/clock_colors.xml b/res/values-sw/clock_colors.xml
deleted file mode 100644
index b2fd0c2..0000000
--- a/res/values-sw/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"NYEKUNDU"</item>
-    <item msgid="6882970855289978213">"RANGI YA CHUNGWA"</item>
-    <item msgid="5560732545714984533">"NJANO"</item>
-    <item msgid="7246284817845434226">"KIJANI"</item>
-    <item msgid="6762906417604676001">"BULUU"</item>
-    <item msgid="8974135109557664892">"NILI"</item>
-    <item msgid="786643557830463422">"ZAMBARAU ILIYOKOLEA"</item>
-    <item msgid="6835537356703747621">"KIJIVU"</item>
-    <item msgid="2470141365136884119">"SAMAWATI YA KIJANI"</item>
-  </string-array>
-</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 780ab94..f63c537 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -109,7 +109,7 @@
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Rangi ya mandhari"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Rangi za msingi"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Rangi nyinginezo"</string>
-    <string name="preset_color_subheader" msgid="8230588536141279371">"Chagua rangi yoyote uitumie kwenye aikoni, saa na zaidi"</string>
+    <string name="preset_color_subheader" msgid="8230588536141279371">"Chagua rangi yoyote ya aikoni zako, saa na zaidi"</string>
     <string name="color_changed" msgid="7029571720331641235">"Rangi imebadilishwa"</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"Inayobadilika"</string>
     <string name="color_picker_title" msgid="6666830057938082864">"Rangi za mfumo"</string>
@@ -124,12 +124,13 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Njia za mkato"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Hamna"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Arifa"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Onyesha arifa kwenye skrini iliyofungwa"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Ficha arifa kwenye skrini iliyofungwa"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Chaguo zaidi"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Maandishi kwenye skrini iliyofungwa, Kitambua Ngoma na zaidi"</string>
-    <string name="more_colors" msgid="3191071655353004591">"Rangi Zaidi"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
+    <string name="more_colors" msgid="3191071655353004591">"Rangi Nyingi Zaidi"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Chaguo la rangi chaguomsingi"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Chaguo la rangi ya <xliff:g id="ID_1">%1$d</xliff:g>"</string>
 </resources>
diff --git a/res/values-ta/clock_colors.xml b/res/values-ta/clock_colors.xml
deleted file mode 100644
index 67824d6..0000000
--- a/res/values-ta/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"சிவப்பு"</item>
-    <item msgid="6882970855289978213">"ஆரஞ்சு"</item>
-    <item msgid="5560732545714984533">"மஞ்சள்"</item>
-    <item msgid="7246284817845434226">"பச்சை"</item>
-    <item msgid="6762906417604676001">"நீலம்"</item>
-    <item msgid="8974135109557664892">"அடர் நீலம்"</item>
-    <item msgid="786643557830463422">"ஊதா"</item>
-    <item msgid="6835537356703747621">"சாம்பல்"</item>
-    <item msgid="2470141365136884119">"பசும் நீலம்"</item>
-  </string-array>
-</resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 429828b..ba70c1b 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -105,7 +105,7 @@
     <string name="beta_title" msgid="8703819523760746458">"பீட்டா"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"ஆப்ஸ் கட்டக் காட்சியை மாற்றும்"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"வால்பேப்பர் நிறங்கள்"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"ஐகான், உரை மற்றும் பலவற்றின் வண்ணம் வால்பேப்பருடன் பொருந்தும்"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"வால்பேப்பருடன் பொருந்தும் ஐகான், உரை &amp; பலவற்றின் வண்ணம்"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"வால்பேப்பரின் நிறம்"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"அடிப்படை வண்ணங்கள்"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"பிற வண்ணங்கள்"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"ஷார்ட்கட்கள்"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ஏதுமில்லை"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"அறிவிப்புகள்"</string>
-    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"பூட்டுத் திரையில் அறிவிப்புகளைக் காட்டு"</string>
+    <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"பூட்டுத் திரையில் அறிவிப்புகளைக் காட்டும்"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"பூட்டுத் திரையில் அறிவிப்புகளைக் காட்டாது"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"மேலும் விருப்பங்கள்"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"பூட்டுத் திரையில் உரை, பாடல் விவரம் மற்றும் பல"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"கூடுதல் வண்ணங்கள்"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"இயல்பு வண்ண விருப்பம்"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"வண்ண விருப்பம் <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-te/clock_colors.xml b/res/values-te/clock_colors.xml
deleted file mode 100644
index a142c76..0000000
--- a/res/values-te/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ఎరుపు రంగు"</item>
-    <item msgid="6882970855289978213">"నారింజ రంగు"</item>
-    <item msgid="5560732545714984533">"పసుపు రంగు"</item>
-    <item msgid="7246284817845434226">"ఆకుపచ్చ రంగు"</item>
-    <item msgid="6762906417604676001">"నీలం రంగు"</item>
-    <item msgid="8974135109557664892">"ఇండిగో రంగు"</item>
-    <item msgid="786643557830463422">"ఊదా రంగు"</item>
-    <item msgid="6835537356703747621">"బూడిద రంగు"</item>
-    <item msgid="2470141365136884119">"టీల్ రంగు"</item>
-  </string-array>
-</resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index b7581e1..af8e688 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -109,7 +109,7 @@
     <string name="wallpaper_color_title" msgid="5687965239180986458">"వాల్‌పేపర్ రంగు"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"ప్రాథమిక రంగులు"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"ఇతర రంగులు"</string>
-    <string name="preset_color_subheader" msgid="8230588536141279371">"మీ చిహ్నాలు, గడియారం, మరిన్నింటి కోసం రంగును ఎంచుకోండి"</string>
+    <string name="preset_color_subheader" msgid="8230588536141279371">"మీ చిహ్నాలు, గడియారం, అలాగే మరిన్నింటి కోసం ఏదైనా రంగును ఎంచుకోండి"</string>
     <string name="color_changed" msgid="7029571720331641235">"రంగు మార్చబడింది"</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"డైనమిక్"</string>
     <string name="color_picker_title" msgid="6666830057938082864">"సిస్టమ్ రంగులు"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"షార్ట్‌కట్‌లు"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ఏదీ ఎంచుకోలేదు"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"నోటిఫికేషన్‌లు"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"లాక్ స్క్రీన్‌లో నోటిఫికేషన్‌లను చూపండి"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"లాక్ స్క్రీన్‌లో నోటిఫికేషన్‌లను దాచండి"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"మరిన్ని ఆప్షన్‌లు"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"లాక్ స్క్రీన్, Now Playing, మరిన్ని కోసం టెక్స్ట్ మెసేజ్ పంపండి"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"మరిన్ని రంగులు"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"ఆటోమేటిక్ సెట్టింగ్ రంగు ఆప్షన్"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"రంగు ఆప్షన్ <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-th/clock_colors.xml b/res/values-th/clock_colors.xml
deleted file mode 100644
index c63bdd1..0000000
--- a/res/values-th/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"แดง"</item>
-    <item msgid="6882970855289978213">"ส้ม"</item>
-    <item msgid="5560732545714984533">"เหลือง"</item>
-    <item msgid="7246284817845434226">"เขียว"</item>
-    <item msgid="6762906417604676001">"น้ำเงิน"</item>
-    <item msgid="8974135109557664892">"น้ำเงินอมม่วง"</item>
-    <item msgid="786643557830463422">"ม่วงอมน้ำเงิน"</item>
-    <item msgid="6835537356703747621">"เทา"</item>
-    <item msgid="2470141365136884119">"น้ำเงินอมเขียว"</item>
-  </string-array>
-</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 1f790b0..ff21f6d 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"ทางลัด"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"ไม่มี"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"การแจ้งเตือน"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"แสดงการแจ้งเตือนบนหน้าจอล็อก"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"ซ่อนการแจ้งเตือนบนหน้าจอล็อก"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"ตัวเลือกเพิ่มเติม"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"ข้อความบนหน้าจอล็อก \"กำลังเล่น\" และอื่นๆ"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"สีเพิ่มเติม"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"ตัวเลือกสีเริ่มต้น"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"ตัวเลือกสี <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-tl/clock_colors.xml b/res/values-tl/clock_colors.xml
deleted file mode 100644
index 6c26409..0000000
--- a/res/values-tl/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"PULA"</item>
-    <item msgid="6882970855289978213">"ORANGE"</item>
-    <item msgid="5560732545714984533">"DILAW"</item>
-    <item msgid="7246284817845434226">"BERDE"</item>
-    <item msgid="6762906417604676001">"ASUL"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"VIOLET"</item>
-    <item msgid="6835537356703747621">"GRAY"</item>
-    <item msgid="2470141365136884119">"TEAL"</item>
-  </string-array>
-</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 2d901a8..a477a1f 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Mga Shortcut"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Wala"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Mga Notification"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Ipakita ang mga notification sa lock screen"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Itago ang mga notification sa lock screen"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Higit pang opsyon"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Text sa lock screen, Nagpi-play Ngayon, at higit pa"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Higit Pang Kulay"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Default na opsyon sa kulay"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Opsyon sa kulay na <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-tr/clock_colors.xml b/res/values-tr/clock_colors.xml
deleted file mode 100644
index 45c8118..0000000
--- a/res/values-tr/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"KIRMIZI"</item>
-    <item msgid="6882970855289978213">"TURUNCU"</item>
-    <item msgid="5560732545714984533">"SARI"</item>
-    <item msgid="7246284817845434226">"YEŞİL"</item>
-    <item msgid="6762906417604676001">"MAVİ"</item>
-    <item msgid="8974135109557664892">"ÇİVİT MAVİSİ"</item>
-    <item msgid="786643557830463422">"MOR"</item>
-    <item msgid="6835537356703747621">"GRİ"</item>
-    <item msgid="2470141365136884119">"TURKUAZ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index d5c66ab..d560791 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Kısayollar"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Yok"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Bildirimler"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Kilit ekranında bildirimleri göster"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Kilit ekranında bildirimleri gizle"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Diğer seçenekler"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Kilit ekranındaki metin, Ne Çalıyor? ve daha fazlası"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Diğer Renkler"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Varsayılan renk seçeneği"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"<xliff:g id="ID_1">%1$d</xliff:g> renk seçeneği"</string>
diff --git a/res/values-uk/clock_colors.xml b/res/values-uk/clock_colors.xml
deleted file mode 100644
index aaa3b71..0000000
--- a/res/values-uk/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ЧЕРВОНИЙ"</item>
-    <item msgid="6882970855289978213">"ОРАНЖЕВИЙ"</item>
-    <item msgid="5560732545714984533">"ЖОВТИЙ"</item>
-    <item msgid="7246284817845434226">"ЗЕЛЕНИЙ"</item>
-    <item msgid="6762906417604676001">"СИНІЙ"</item>
-    <item msgid="8974135109557664892">"ІНДИГО"</item>
-    <item msgid="786643557830463422">"ФІОЛЕТОВИЙ"</item>
-    <item msgid="6835537356703747621">"СІРИЙ"</item>
-    <item msgid="2470141365136884119">"БІРЮЗОВИЙ"</item>
-  </string-array>
-</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index e043eb8..b87d4f7 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -55,7 +55,7 @@
     <string name="option_previewed_description" msgid="3467217598865047661">"<xliff:g id="ID_1">%1$s</xliff:g> (відображається зараз)"</string>
     <string name="option_change_applied_previewed_description" msgid="9197311327728570816">"<xliff:g id="ID_1">%1$s</xliff:g>, змінити елемент, який ви вибрали й переглядаєте"</string>
     <string name="theme_description" msgid="3697012391785254635">"Шрифт: <xliff:g id="ID_1">%1$s</xliff:g>; значки: <xliff:g id="ID_2">%2$s</xliff:g>; форма: <xliff:g id="ID_3">%3$s</xliff:g>; колір: <xliff:g id="ID_4">%4$s</xliff:g>"</string>
-    <string name="default_theme_title" msgid="2555741736622366797">"Стандарт"</string>
+    <string name="default_theme_title" msgid="2555741736622366797">"За умовчанням"</string>
     <string name="preview_name_font" msgid="4465423899630037038">"Шрифт"</string>
     <string name="preview_name_icon" msgid="6818927315316316440">"Значок"</string>
     <string name="preview_name_color" msgid="8776203144994416172">"Колір"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Ярлики"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Немає"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Сповіщення"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Показувати сповіщення на заблокованому екрані"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Приховувати сповіщення на заблокованому екрані"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Інші опції"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Текст на заблокованому екрані, функція \"Зараз грає\" тощо"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Більше кольорів"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Колір за умовчанням"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Колір \"<xliff:g id="ID_1">%1$d</xliff:g>\""</string>
diff --git a/res/values-ur/clock_colors.xml b/res/values-ur/clock_colors.xml
deleted file mode 100644
index 2203d92..0000000
--- a/res/values-ur/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"سرخ"</item>
-    <item msgid="6882970855289978213">"نارنجی"</item>
-    <item msgid="5560732545714984533">"زرد"</item>
-    <item msgid="7246284817845434226">"سبز"</item>
-    <item msgid="6762906417604676001">"نیلا"</item>
-    <item msgid="8974135109557664892">"گہرا نیلا"</item>
-    <item msgid="786643557830463422">"بیگنی"</item>
-    <item msgid="6835537356703747621">"خاکستری"</item>
-    <item msgid="2470141365136884119">"نیلگوں سبز"</item>
-  </string-array>
-</resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 211a016..c642bb9 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -105,7 +105,7 @@
     <string name="beta_title" msgid="8703819523760746458">"بی ٹا"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"ایپ گرڈ تبدیل کریں"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"وال پیپر کے رنگ"</string>
-    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"آئیکنز، ٹیکسٹ اور مزید آپ کے وال پیپر سے مماثل رنگ"</string>
+    <string name="wallpaper_color_subheader" msgid="4044464573669965670">"آپ کے وال پیپر موجود آئیکنز، ٹیکسٹ اور مزید مماثل رنگ"</string>
     <string name="wallpaper_color_title" msgid="5687965239180986458">"وال پیپر کا رنگ"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"بنیادی رنگ"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"دیگر رنگ"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"شارٹ کٹس"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>، <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"کوئی نہیں"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"اطلاعات"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"مقفل اسکرین پر اطلاعات دکھائیں"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"مقفل اسکرین پر اطلاعات چھپائیں"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"مزید اختیارات"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"لاک اسکرین پر ٹیکسٹ، ابھی Now Playing اور مزید"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"مزید رنگ"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"رنگ کا ڈیفالٹ اختیار"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"<xliff:g id="ID_1">%1$d</xliff:g> رنگ کا اختیار"</string>
diff --git a/res/values-uz/clock_colors.xml b/res/values-uz/clock_colors.xml
deleted file mode 100644
index 737d2bd..0000000
--- a/res/values-uz/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"QIZIL"</item>
-    <item msgid="6882970855289978213">"TOʻQ SARIQ"</item>
-    <item msgid="5560732545714984533">"SARIQ"</item>
-    <item msgid="7246284817845434226">"YASHIL"</item>
-    <item msgid="6762906417604676001">"KOʻK"</item>
-    <item msgid="8974135109557664892">"INDIGO"</item>
-    <item msgid="786643557830463422">"BINAFSHARANG"</item>
-    <item msgid="6835537356703747621">"KULRANG"</item>
-    <item msgid="2470141365136884119">"MOVIY"</item>
-  </string-array>
-</resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index ac0d71e..4520ec3 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Tezkor tugmalar"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Hech qanday"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Bildirishnomalar"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Ekran qulfida bildirishnomalarni chiqarish"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Ekran qulfida bildirishnomalarni berkitish"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Boshqa parametrlar"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Ekran qulfidagi matn, Bu qaysi musiqa va boshqalar"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"Boshqa ekran qulfi sozlamalari"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Maxfiylik, Bu qaysi musiqa va boshqalar"</string>
     <string name="more_colors" msgid="3191071655353004591">"Boshqa ranglar"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Asosiy rang varianti"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"<xliff:g id="ID_1">%1$d</xliff:g> rangi varianti"</string>
diff --git a/res/values-vi/clock_colors.xml b/res/values-vi/clock_colors.xml
deleted file mode 100644
index 5ef97c5..0000000
--- a/res/values-vi/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"ĐỎ"</item>
-    <item msgid="6882970855289978213">"CAM"</item>
-    <item msgid="5560732545714984533">"VÀNG"</item>
-    <item msgid="7246284817845434226">"XANH LỤC"</item>
-    <item msgid="6762906417604676001">"XANH LAM"</item>
-    <item msgid="8974135109557664892">"CHÀM"</item>
-    <item msgid="786643557830463422">"TÍM"</item>
-    <item msgid="6835537356703747621">"XÁM"</item>
-    <item msgid="2470141365136884119">"XANH MÒNG KÉT"</item>
-  </string-array>
-</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 88ffe44..7ed6b59 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -109,7 +109,7 @@
     <string name="wallpaper_color_title" msgid="5687965239180986458">"Màu hình nền"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"Màu cơ bản"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"Màu khác"</string>
-    <string name="preset_color_subheader" msgid="8230588536141279371">"Chọn màu cho các biểu tượng, đồng hồ, v.v."</string>
+    <string name="preset_color_subheader" msgid="8230588536141279371">"Chọn màu bất kỳ cho biểu tượng, đồng hồ của bạn, v.v."</string>
     <string name="color_changed" msgid="7029571720331641235">"Đã thay đổi màu"</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"Động"</string>
     <string name="color_picker_title" msgid="6666830057938082864">"Màu hệ thống"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Lối tắt"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Không có"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Thông báo"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Hiển thị thông báo trên màn hình khoá"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Ẩn thông báo trên màn hình khoá"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Tuỳ chọn khác"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Văn bản trên màn hình khoá, Phát hiện nhạc, v.v."</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"Màu khác"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Tuỳ chọn màu mặc định"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Tuỳ chọn màu <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-w400dp/dimens.xml b/res/values-w400dp/dimens.xml
new file mode 100644
index 0000000..e546787
--- /dev/null
+++ b/res/values-w400dp/dimens.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2023 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>
+    <!-- Clock carousel dimens -->
+    <dimen name="clock_carousel_item_card_width">114dp</dimen>
+    <dimen name="clock_carousel_item_card_height">124dp</dimen>
+    <dimen name="clock_carousel_guideline_margin">130dp</dimen>
+</resources>
diff --git a/res/values-w500dp/dimens.xml b/res/values-w500dp/dimens.xml
new file mode 100644
index 0000000..6d9476a
--- /dev/null
+++ b/res/values-w500dp/dimens.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2023 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>
+    <!-- Clock carousel dimens -->
+    <dimen name="clock_carousel_item_card_width">114dp</dimen>
+    <dimen name="clock_carousel_item_card_height">124dp</dimen>
+    <dimen name="clock_carousel_guideline_margin">180dp</dimen>
+</resources>
diff --git a/res/values-w600dp/dimens.xml b/res/values-w600dp/dimens.xml
new file mode 100644
index 0000000..f9ed41b
--- /dev/null
+++ b/res/values-w600dp/dimens.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2023 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>
+    <dimen name="clock_carousel_item_width">607dp</dimen>
+
+    <!-- Clock carousel dimens -->
+    <dimen name="clock_carousel_item_card_width">114dp</dimen>
+    <dimen name="clock_carousel_item_card_height">124dp</dimen>
+    <dimen name="clock_carousel_guideline_margin">220dp</dimen>
+</resources>
diff --git a/res/values-w700dp/dimens.xml b/res/values-w700dp/dimens.xml
new file mode 100644
index 0000000..3e3fa01
--- /dev/null
+++ b/res/values-w700dp/dimens.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2023 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>
+    <!-- Clock carousel dimens -->
+    <dimen name="clock_carousel_item_card_width">114dp</dimen>
+    <dimen name="clock_carousel_item_card_height">124dp</dimen>
+    <dimen name="clock_carousel_guideline_margin">240dp</dimen>
+</resources>
\ No newline at end of file
diff --git a/res/values-w800dp/dimens.xml b/res/values-w800dp/dimens.xml
index 6ba900e..d5032b6 100644
--- a/res/values-w800dp/dimens.xml
+++ b/res/values-w800dp/dimens.xml
@@ -18,4 +18,9 @@
     <!-- Dimensions for the customization option tiles -->
     <dimen name="option_tile_width">87dp</dimen>
     <dimen name="option_tile_linear_padding_horizontal">8dp</dimen>
+
+    <!-- Clock carousel dimens -->
+    <dimen name="clock_carousel_item_card_width">114dp</dimen>
+    <dimen name="clock_carousel_item_card_height">124dp</dimen>
+    <dimen name="clock_carousel_guideline_margin">320dp</dimen>
 </resources>
\ No newline at end of file
diff --git a/res/values-zh-rCN/clock_colors.xml b/res/values-zh-rCN/clock_colors.xml
deleted file mode 100644
index e3c68c0..0000000
--- a/res/values-zh-rCN/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"红色"</item>
-    <item msgid="6882970855289978213">"橙色"</item>
-    <item msgid="5560732545714984533">"黄色"</item>
-    <item msgid="7246284817845434226">"绿色"</item>
-    <item msgid="6762906417604676001">"蓝色"</item>
-    <item msgid="8974135109557664892">"靛蓝色"</item>
-    <item msgid="786643557830463422">"紫罗兰色"</item>
-    <item msgid="6835537356703747621">"灰色"</item>
-    <item msgid="2470141365136884119">"蓝绿色"</item>
-  </string-array>
-</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 6057cb4..b194ca1 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -17,7 +17,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_name" msgid="1647136562008520313">"壁纸与个性化"</string>
+    <string name="app_name" msgid="1647136562008520313">"壁纸和样式"</string>
     <string name="theme_title" msgid="2144932106319405101">"样式"</string>
     <string name="clock_title" msgid="1974314575211361352">"自定义钟面"</string>
     <string name="clock_description" msgid="3563839327378948">"选择自定义钟面"</string>
@@ -101,7 +101,7 @@
     <string name="mode_title" msgid="2394873501427436055">"深色主题"</string>
     <string name="mode_disabled_msg" msgid="9196245518435936512">"因省电模式已开启，该功能被暂时停用了"</string>
     <string name="mode_changed" msgid="2243581369395418584">"主题已更改"</string>
-    <string name="themed_icon_title" msgid="7312460430471956558">"主题图标"</string>
+    <string name="themed_icon_title" msgid="7312460430471956558">"带主题的图标"</string>
     <string name="beta_title" msgid="8703819523760746458">"Beta 版"</string>
     <string name="gird_picker_entry_content_description" msgid="9087651470212293439">"更改应用网格"</string>
     <string name="wallpaper_color_tab" msgid="1447926591721403840">"壁纸颜色"</string>
@@ -113,8 +113,8 @@
     <string name="color_changed" msgid="7029571720331641235">"颜色已更改"</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"动态"</string>
     <string name="color_picker_title" msgid="6666830057938082864">"系统颜色"</string>
-    <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"左侧快捷方式"</string>
-    <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"右侧快捷方式"</string>
+    <string name="keyguard_slot_name_bottom_start" msgid="8747677880200629719">"向左快捷方式"</string>
+    <string name="keyguard_slot_name_bottom_end" msgid="2525487375680217083">"向右快捷方式"</string>
     <string name="keyguard_affordance_none" msgid="1751643933430782312">"无"</string>
     <string name="keyguard_affordance_enablement_dialog_title" msgid="3389730825561696493">"若要选择“<xliff:g id="APPNAME">%1$s</xliff:g>”，请确认满足已以下条件："</string>
     <string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"打开<xliff:g id="APPNAME">%1$s</xliff:g>"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"快捷方式"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>、<xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"无"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"通知"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"在锁定的屏幕上显示通知"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"在锁定的屏幕上不显示通知"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"更多选项"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"在锁定屏幕上添加文字、闻曲知音和其他设置"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"更多颜色"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"默认颜色选项"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"颜色选项 <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-zh-rHK/clock_colors.xml b/res/values-zh-rHK/clock_colors.xml
deleted file mode 100644
index 2861c3b..0000000
--- a/res/values-zh-rHK/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"紅色"</item>
-    <item msgid="6882970855289978213">"橙色"</item>
-    <item msgid="5560732545714984533">"黃色"</item>
-    <item msgid="7246284817845434226">"綠色"</item>
-    <item msgid="6762906417604676001">"藍色"</item>
-    <item msgid="8974135109557664892">"靛藍色"</item>
-    <item msgid="786643557830463422">"紫羅蘭色"</item>
-    <item msgid="6835537356703747621">"灰色"</item>
-    <item msgid="2470141365136884119">"藍綠色"</item>
-  </string-array>
-</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 54f5a16..3c0c8c6 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -62,7 +62,7 @@
     <string name="preview_name_shape" msgid="5676971146080968721">"形狀"</string>
     <string name="preview_name_wallpaper" msgid="1738652462949531828">"桌布"</string>
     <string name="font_card_title" msgid="2343292653502548685">"ABC • abc • 123"</string>
-    <string name="font_card_body" msgid="6790525594503904468">"讓每個畫面顯示你喜愛的字型"</string>
+    <string name="font_card_body" msgid="6790525594503904468">"讓每個畫面顯示您喜愛的字型"</string>
     <string name="grid_options_title" msgid="7071930966989877023">"請選擇網格大小"</string>
     <string name="grid_title_pattern" msgid="9188866567612607806">"<xliff:g id="ID_1">%1$d</xliff:g> x <xliff:g id="ID_2">%2$d</xliff:g>"</string>
     <string name="applied_theme_msg" msgid="3749018706366796244">"成功設定樣式"</string>
@@ -109,7 +109,7 @@
     <string name="wallpaper_color_title" msgid="5687965239180986458">"桌布顏色"</string>
     <string name="preset_color_tab" msgid="3133391839341329314">"基本顏色"</string>
     <string name="preset_color_tab_2" msgid="1444107326712562538">"其他顏色"</string>
-    <string name="preset_color_subheader" msgid="8230588536141279371">"為圖示、時鐘等選擇顏色"</string>
+    <string name="preset_color_subheader" msgid="8230588536141279371">"為圖示、時鐘等選擇任何顏色"</string>
     <string name="color_changed" msgid="7029571720331641235">"已經變咗顏色"</string>
     <string name="adaptive_color_title" msgid="1336508599235896205">"動態"</string>
     <string name="color_picker_title" msgid="6666830057938082864">"系統顏色"</string>
@@ -124,11 +124,12 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"捷徑"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>，<xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"無"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"通知"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"在上鎖畫面顯示通知"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"在上鎖畫面隱藏通知"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"更多選項"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"在上鎖畫面發短訊、使用「歌曲識別」功能等"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"更多顏色"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"預設顏色選項"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"顏色選項：<xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-zh-rTW/clock_colors.xml b/res/values-zh-rTW/clock_colors.xml
deleted file mode 100644
index 596109b..0000000
--- a/res/values-zh-rTW/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"紅色"</item>
-    <item msgid="6882970855289978213">"橘色"</item>
-    <item msgid="5560732545714984533">"黃色"</item>
-    <item msgid="7246284817845434226">"綠色"</item>
-    <item msgid="6762906417604676001">"藍色"</item>
-    <item msgid="8974135109557664892">"靛藍色"</item>
-    <item msgid="786643557830463422">"紫羅蘭色"</item>
-    <item msgid="6835537356703747621">"灰色"</item>
-    <item msgid="2470141365136884119">"藍綠色"</item>
-  </string-array>
-</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 0cc225d..72a137b 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -120,15 +120,16 @@
     <string name="keyguard_affordance_enablement_dialog_action_template" msgid="8117011931337357438">"開啟「<xliff:g id="APPNAME">%1$s</xliff:g>」"</string>
     <string name="keyguard_affordance_enablement_dialog_message" msgid="6136286758939253570">"如要將「<xliff:g id="APPNAME">%1$s</xliff:g>」應用程式新增為捷徑，必須滿足以下條件"</string>
     <string name="keyguard_affordance_enablement_dialog_dismiss_button" msgid="629754625264422508">"完成"</string>
-    <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"快速鍵"</string>
+    <string name="keyguard_quick_affordance_title" msgid="4242813186995735584">"捷徑"</string>
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"捷徑"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>、<xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"無"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"通知"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"在螢幕鎖定畫面上顯示通知"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"在螢幕鎖定畫面上隱藏通知"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"更多選項"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"「在螢幕鎖定畫面上顯示特定文字」、「聽聲辨曲」和其他設定"</string>
+    <!-- no translation found for more_settings_section_title (1331425454775815958) -->
+    <skip />
+    <!-- no translation found for more_settings_section_description (1860115709122398325) -->
+    <skip />
     <string name="more_colors" msgid="3191071655353004591">"更多顏色"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"預設顏色選項"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"顏色選項 <xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values-zu/clock_colors.xml b/res/values-zu/clock_colors.xml
deleted file mode 100644
index f33ef25..0000000
--- a/res/values-zu/clock_colors.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-     Copyright (C) 2023 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 xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-  <string-array name="clock_color_ids">
-    <item msgid="4948142733161826319">"OKUBOMVU"</item>
-    <item msgid="6882970855289978213">"OKUWOLINTSHI"</item>
-    <item msgid="5560732545714984533">"OKUPHUZI"</item>
-    <item msgid="7246284817845434226">"OKULUHLAZA OKOTSHANI"</item>
-    <item msgid="6762906417604676001">"OKULUHLAZA OKWESIBHAKABHAKA"</item>
-    <item msgid="8974135109557664892">"OKU-INDIGO"</item>
-    <item msgid="786643557830463422">"OKU-VIOLET"</item>
-    <item msgid="6835537356703747621">"OKUMPUNGA"</item>
-    <item msgid="2470141365136884119">"OKU-TEAL"</item>
-  </string-array>
-</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index bf3ad3d..def5d0a 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -124,11 +124,10 @@
     <string name="keyguard_quick_affordance_section_title" msgid="2806304242671717309">"Izinqamuleli"</string>
     <string name="keyguard_quick_affordance_two_selected_template" msgid="1757099194522296363">"<xliff:g id="FIRST">%1$s</xliff:g>, <xliff:g id="SECOND">%2$s</xliff:g>"</string>
     <string name="keyguard_quick_affordance_none_selected" msgid="8494127020144112003">"Lutho"</string>
-    <string name="notifications_section_title" msgid="4283049750376871538">"Izaziso"</string>
     <string name="show_notifications_on_lock_screen" msgid="4157744243084646720">"Bonisa izaziso esikrinini sokukhiya"</string>
     <string name="hide_notifications_on_lock_screen" msgid="7413548956484779174">"Fihla izaziso esikrinini sokukhiya"</string>
-    <string name="more_settings_section_title" msgid="8524741850115625404">"Okunye ongakhetha kukho"</string>
-    <string name="more_settings_section_description" msgid="8787768566854880683">"Umbhalo esikrinini sokukhiya, Okudlala Manje, nokuningi"</string>
+    <string name="more_settings_section_title" msgid="1331425454775815958">"Okukhethwa kukho kokukhiya isikrini okuningi"</string>
+    <string name="more_settings_section_description" msgid="1860115709122398325">"Ubumfihlo, Okudlala Manje, nokuningi"</string>
     <string name="more_colors" msgid="3191071655353004591">"Imibala Eyengeziwe"</string>
     <string name="content_description_default_color_option" msgid="7011899327541080695">"Okukhethwa kukho kombala okuzenzakalelayo"</string>
     <string name="content_description_color_option" msgid="4169813692012119578">"Okukhethwa kukho kombala kwe-<xliff:g id="ID_1">%1$d</xliff:g>"</string>
diff --git a/res/values/clock_colors.xml b/res/values/clock_colors.xml
index 1539a92..465f0a0 100644
--- a/res/values/clock_colors.xml
+++ b/res/values/clock_colors.xml
@@ -15,7 +15,8 @@
      limitations under the License.
 -->
 <resources>
-    <string-array name="clock_color_ids">
+    <string-array translatable="false" name="clock_color_ids">
+        <item>GRAY</item>
         <item>RED</item>
         <item>ORANGE</item>
         <item>YELLOW</item>
@@ -23,10 +24,10 @@
         <item>BLUE</item>
         <item>INDIGO</item>
         <item>VIOLET</item>
-        <item>GRAY</item>
         <item>TEAL</item>
     </string-array>
     <array name="clock_color_names">
+        <item>@string/clock_color_gray</item>
         <item>@string/clock_color_red</item>
         <item>@string/clock_color_orange</item>
         <item>@string/clock_color_yellow</item>
@@ -34,10 +35,10 @@
         <item>@string/clock_color_blue</item>
         <item>@string/clock_color_indigo</item>
         <item>@string/clock_color_violet</item>
-        <item>@string/clock_color_gray</item>
         <item>@string/clock_color_teal</item>
     </array>
     <array name="clock_colors">
+        <item>#B9B9B9</item>
         <item>#FFA3A7</item>
         <item>#F7AC69</item>
         <item>#FFC951</item>
@@ -45,10 +46,10 @@
         <item>#8EC8FF</item>
         <item>#B9AAFF</item>
         <item>#F6A2FF</item>
-        <item>#B9B9B9</item>
         <item>#40D9CF</item>
     </array>
     <array name="clock_color_tone_min">
+        <item>0</item>
         <item>20</item>
         <item>20</item>
         <item>50</item>
@@ -56,10 +57,10 @@
         <item>20</item>
         <item>10</item>
         <item>20</item>
-        <item>0</item>
         <item>20</item>
     </array>
     <array name="clock_color_tone_max">
+        <item>100</item>
         <item>95</item>
         <item>95</item>
         <item>95</item>
@@ -67,7 +68,6 @@
         <item>95</item>
         <item>95</item>
         <item>97</item>
-        <item>100</item>
         <item>99</item>
     </array>
 </resources>
\ No newline at end of file
diff --git a/res/values/config.xml b/res/values/config.xml
index d992bf3..ad81e67 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -19,4 +19,8 @@
     <item type="id" name="option_tile" />
     <!-- ID for the label of an option tile -->
     <item type="id" name="option_label" />
+
+    <!-- ID for the a11y actions on carousel -->
+    <item type="id" name="action_scroll_forward" />
+    <item type="id" name="action_scroll_backward" />
 </resources>
\ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 0d5a9a8..a3e0d4a 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -33,7 +33,7 @@
     <dimen name="options_container_width">0dp</dimen>
     <dimen name="option_bottom_margin">8dp</dimen>
     <dimen name="option_padding_horizontal">2dp</dimen>
-    <dimen name="option_tile_width">82dp</dimen>
+    <dimen name="option_tile_width">80dp</dimen>
     <dimen name="option_tile_radius">20dp</dimen>
     <dimen name="option_tile_margin_horizontal">6dp</dimen>
     <dimen name="option_tile_padding_vertical">12dp</dimen>
@@ -157,11 +157,27 @@
     <dimen name="keyguard_quick_affordance_icon_size">24dp</dimen>
 
     <dimen name="clock_carousel_item_width">190dp</dimen>
-    <dimen name="clock_carousel_item_height">380dp</dimen>
     <dimen name="clock_carousel_item_margin">16dp</dimen>
-    <dimen name="clock_carousel_guideline_margin">140dp</dimen>
-    <!-- Scale of the carousel items that are not selected and at the side -->
-    <dimen name="clock_carousel_scale" format="float">0.5</dimen>
-    <!-- Alpha of the carousel items that are not selected and at the side -->
-    <dimen name="clock_carousel_alpha" format="float">0.4</dimen>
+    <dimen name="clock_carousel_guideline_margin">100dp</dimen>
+    <dimen name="clock_carousel_item_card_width">100dp</dimen>
+    <dimen name="clock_carousel_item_card_height">108dp</dimen>
+    <dimen name="clock_carousel_guideline_margin_for_2_pane_small_width">122dp</dimen>
+
+    <!-- Clock color and size button -->
+    <dimen name="clock_color_size_button_min_height">32dp</dimen>
+    <dimen name="clock_color_size_button_horizontal_padding">12dp</dimen>
+    <dimen name="clock_color_size_button_vertical_padding">6dp</dimen>
+    <dimen name="clock_color_size_button_corner_radius">16dp</dimen>
+    <dimen name="clock_color_size_button_icon_size">20dp</dimen>
+    <dimen name="clock_color_size_button_icon_margin_end">12dp</dimen>
+
+    <!--
+    Dimension for clock translationY when swiping clock carousel in picker,
+    copied from sysui resources
+    -->
+    <dimen name="keyguard_large_clock_top_margin">-60dp</dimen>
+    <!-- Dimension for the clock view, copied from sysui resources. -->
+    <dimen name="small_clock_height">114dp</dimen>
+    <dimen name="small_clock_padding_top">28dp</dimen>
+    <dimen name="clock_padding_start">28dp</dimen>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 01113c4..680947d 100755
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -33,8 +33,11 @@
     <!-- The content description of clock entry. [CHAR LIMIT=NONE] -->
     <string name="clock_picker_entry_content_description">Change a custom clock</string>
 
+    <!-- action description for announcing selected Clock [CHAR LIMIT=NONE]-->
+    <string name="select_clock_action_description">Clock face option <xliff:g name="clock_face_description">%1$s</xliff:g></string>
+
     <!-- Title of a section of the customization picker where the user can configure Clock face. [CHAR LIMIT=19] -->
-    <string name="clock_settings_title">Clock Settings</string>
+    <string name="clock_settings_title">Clock color &amp; size</string>
 
     <!-- Title of a section of the customization picker where the user can configure clock color and size. [CHAR LIMIT=20] -->
     <string name="clock_color_and_size_title">Clock color &amp; size</string>
@@ -360,7 +363,7 @@
     enabled. The dialog contains a list of instructions that the user needs to take in order to
     enable the option before it can be selected again. [CHAR LIMIT=NONE].
     -->
-    <string name="keyguard_affordance_enablement_dialog_title">To select `<xliff:g id="appName" example="Wallet">%1$s</xliff:g>` check the following</string>
+    <string name="keyguard_affordance_enablement_dialog_headline">Can\'t add shortcut</string>
 
     <!--
     Template for an action that opens a specific app. [CHAR LIMIT=16]
@@ -412,14 +415,6 @@
     <string name="keyguard_quick_affordance_none_selected">None</string>
 
     <!--
-    Title for a section in a list of sections in the settings app that allows the user to modify
-    how notifications behave whilst the device is locked.
-
-    [CHAR LIMIT=32].
-    -->
-    <string name="notifications_section_title">Notifications</string>
-
-    <!--
     Summary for a setting that lets the user toggle between showing or hiding notifications on their
     device's lock screen. This one is shown when the user is allowing notifications to show on their
     device's lock screen.
@@ -443,7 +438,7 @@
 
     [CHAR LIMIT=32].
     -->
-    <string name="more_settings_section_title">More options</string>
+    <string name="more_settings_section_title">More lock screen options</string>
 
     <!--
     Summary for a setting that lets the user access additional settings related to lock screen
@@ -453,7 +448,7 @@
 
     [CHAR LIMIT=64].
     -->
-    <string name="more_settings_section_description">Text on lock screen, Now Playing, and more</string>
+    <string name="more_settings_section_description">Privacy, Now Playing, and more</string>
 
     <!--
     Label for button that lets the user navigate to a full-screen experience of selecting
@@ -464,6 +459,38 @@
     <string name="more_colors">More Colors</string>
 
     <!--
+    Accessibility string for a button that allows the user to select a color scheme generated from
+    their current wallpaper as the system color. This is shown in a list with other color options.
+
+    [CHAR LIMIT=NONE].
+    -->
+    <string name="content_description_dynamic_color_option">Primary dynamic theme</string>
+
+    <!--
+    Accessibility string for a button that allows the user to select a color scheme generated from
+    their current wallpaper as the system color. This is shown in a list with other color options.
+
+    [CHAR LIMIT=NONE].
+    -->
+    <string name="content_description_neutral_color_option">Primary neutral theme</string>
+
+    <!--
+    Accessibility string for a button that allows the user to select a color scheme generated from
+    their current wallpaper as the system color. This is shown in a list with other color options.
+
+    [CHAR LIMIT=NONE].
+    -->
+    <string name="content_description_vibrant_color_option">Primary vibrant theme</string>
+
+    <!--
+    Accessibility string for a button that allows the user to select a color scheme generated from
+    their current wallpaper as the system color. This is shown in a list with other color options.
+
+    [CHAR LIMIT=NONE].
+    -->
+    <string name="content_description_expressive_color_option">Primary expressive theme</string>
+
+    <!--
     Accessibility string for a button that allows the user to select the default color for their
     lock screen clock on the device. This is shown next to other buttons that allow the user to
     select from a set of custom colors.
@@ -480,4 +507,22 @@
     [CHAR LIMIT=NONE].
     -->
     <string name="content_description_color_option">Color option <xliff:g name="color_number" example="1">%1$d</xliff:g></string>
+
+    <!--
+    Accessibility label for forward scrolling in the carousel of clock faces.
+    [CHAR LIMIT=128].
+    -->
+    <string name="scroll_forward_and_select">Swipe left to choose a different clock face</string>
+
+    <!--
+    Accessibility label for backward scrolling in the carousel of clock faces.
+    [CHAR LIMIT=128].
+    -->
+    <string name="scroll_backward_and_select">Swipe right to choose a different clock face</string>
+
+    <!--
+    Accessibility label for the carousel of clock faces.
+    [CHAR LIMIT=128].
+    -->
+    <string name="custom_clocks_label">Custom Clocks</string>
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 3991b65..c70b596 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -47,6 +47,7 @@
         <item name="colorAccent">@color/accent_color</item>
         <item name="colorSurface">@color/design_default_color_surface</item>
         <item name="colorOnSurface">@color/design_default_color_on_surface</item>
+        <item name="android:textAllCaps">false</item>
     </style>
 
     <!-- Snackbar margin -->
@@ -123,7 +124,7 @@
         <item name="android:fontFamily">@*android:string/config_bodyFontFamily</item>
         <item name="android:textColor">?android:textColorSecondary</item>
         <item name="android:textSize">14sp</item>
-        <item name="android:lineHeight">20dp</item>
+        <item name="android:lineHeight">16sp</item>
     </style>
 
     <style name="BetaTagTextStyle" parent="SectionTitleTextStyle">
diff --git a/res/xml/carousel_scene.xml b/res/xml/carousel_scene.xml
index 44fb556..aae3d39 100644
--- a/res/xml/carousel_scene.xml
+++ b/res/xml/carousel_scene.xml
@@ -21,119 +21,143 @@
     <Transition
         motion:constraintSetStart="@id/start"
         motion:constraintSetEnd="@+id/next"
-        motion:duration="1000"
+        motion:duration="200"
         android:id="@+id/forward">
         <OnSwipe
-            motion:dragDirection="dragLeft"
-            motion:touchAnchorSide="left" />
+            motion:dragDirection="dragStart"
+            motion:touchAnchorSide="start"
+            motion:maxVelocity="10"
+            motion:maxAcceleration="100"/>
     </Transition>
 
     <Transition
         motion:constraintSetStart="@+id/start"
         motion:constraintSetEnd="@+id/previous"
+        motion:duration="200"
         android:id="@+id/backward">
         <OnSwipe
-            motion:dragDirection="dragRight"
-            motion:touchAnchorSide="right" />
+            motion:dragDirection="dragEnd"
+            motion:touchAnchorSide="end"
+            motion:maxVelocity="10"
+            motion:maxAcceleration="100" />
     </Transition>
 
     <ConstraintSet android:id="@+id/previous">
         <Constraint
             android:id="@+id/item_view_0"
-            android:layout_width="@dimen/clock_carousel_item_width"
-            android:layout_height="@dimen/clock_carousel_item_height"
-            android:scaleX="@dimen/clock_carousel_scale"
-            android:scaleY="@dimen/clock_carousel_scale"
-            android:alpha="@dimen/clock_carousel_alpha"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
             motion:layout_constraintEnd_toStartOf="@id/guideline_start"
             motion:layout_constraintTop_toTopOf="parent"
             motion:layout_constraintBottom_toBottomOf="parent" />
+
         <Constraint
             android:id="@+id/item_view_1"
-            android:layout_width="@dimen/clock_carousel_item_width"
-            android:layout_height="@dimen/clock_carousel_item_height"
-            motion:layout_constraintWidth_max="@dimen/clock_carousel_item_width"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
+            motion:layout_constraintWidth_max="@dimen/screen_preview_width"
             motion:layout_constraintHorizontal_bias="0.5"
             motion:layout_constraintStart_toStartOf="parent"
             motion:layout_constraintEnd_toEndOf="parent"
             motion:layout_constraintTop_toTopOf="parent"
             motion:layout_constraintBottom_toBottomOf="parent" />
+
         <Constraint
             android:id="@+id/item_view_2"
-            android:layout_width="@dimen/clock_carousel_item_width"
-            android:layout_height="@dimen/clock_carousel_item_height"
-            android:scaleX="@dimen/clock_carousel_scale"
-            android:scaleY="@dimen/clock_carousel_scale"
-            android:alpha="@dimen/clock_carousel_alpha"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
             motion:layout_constraintStart_toStartOf="@id/guideline_end"
             motion:layout_constraintTop_toTopOf="parent"
             motion:layout_constraintBottom_toBottomOf="parent" />
+
+        <Constraint
+            android:id="@+id/item_view_3"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
+            motion:layout_constraintStart_toEndOf="@+id/item_view_2"
+            motion:layout_constraintTop_toTopOf="parent"
+            motion:layout_constraintBottom_toBottomOf="parent" />
     </ConstraintSet>
 
     <ConstraintSet android:id="@+id/start">
         <Constraint
+            android:id="@+id/item_view_0"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
+            motion:layout_constraintEnd_toStartOf="@+id/item_view_1"
+            motion:layout_constraintTop_toTopOf="parent"
+            motion:layout_constraintBottom_toBottomOf="parent" />
+
+        <Constraint
             android:id="@+id/item_view_1"
-            android:layout_width="@dimen/clock_carousel_item_width"
-            android:layout_height="@dimen/clock_carousel_item_height"
-            android:scaleX="@dimen/clock_carousel_scale"
-            android:scaleY="@dimen/clock_carousel_scale"
-            android:alpha="@dimen/clock_carousel_alpha"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
             motion:layout_constraintEnd_toStartOf="@id/guideline_start"
             motion:layout_constraintTop_toTopOf="parent"
             motion:layout_constraintBottom_toBottomOf="parent" />
+
         <Constraint
             android:id="@+id/item_view_2"
-            android:layout_width="@dimen/clock_carousel_item_width"
-            android:layout_height="@dimen/clock_carousel_item_height"
-            motion:layout_constraintWidth_max="@dimen/clock_carousel_item_width"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
+            motion:layout_constraintWidth_max="@dimen/screen_preview_width"
             motion:layout_constraintHorizontal_bias="0.5"
             motion:layout_constraintStart_toStartOf="parent"
             motion:layout_constraintEnd_toEndOf="parent"
             motion:layout_constraintTop_toTopOf="parent"
             motion:layout_constraintBottom_toBottomOf="parent" />
+
         <Constraint
             android:id="@+id/item_view_3"
-            android:layout_width="@dimen/clock_carousel_item_width"
-            android:layout_height="@dimen/clock_carousel_item_height"
-            android:scaleX="@dimen/clock_carousel_scale"
-            android:scaleY="@dimen/clock_carousel_scale"
-            android:alpha="@dimen/clock_carousel_alpha"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
             motion:layout_constraintStart_toStartOf="@id/guideline_end"
             motion:layout_constraintTop_toTopOf="parent"
             motion:layout_constraintBottom_toBottomOf="parent" />
+
+        <Constraint
+            android:id="@+id/item_view_4"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
+            motion:layout_constraintStart_toEndOf="@+id/item_view_3"
+            motion:layout_constraintTop_toTopOf="parent"
+            motion:layout_constraintBottom_toBottomOf="parent" />
     </ConstraintSet>
 
     <ConstraintSet android:id="@+id/next">
         <Constraint
+            android:id="@+id/item_view_1"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
+            motion:layout_constraintEnd_toStartOf="@+id/item_view_2"
+            motion:layout_constraintTop_toTopOf="parent"
+            motion:layout_constraintBottom_toBottomOf="parent" />
+
+        <Constraint
             android:id="@+id/item_view_2"
-            android:layout_width="@dimen/clock_carousel_item_width"
-            android:layout_height="@dimen/clock_carousel_item_height"
-            android:scaleX="@dimen/clock_carousel_scale"
-            android:scaleY="@dimen/clock_carousel_scale"
-            android:alpha="@dimen/clock_carousel_alpha"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
             motion:layout_constraintEnd_toStartOf="@id/guideline_start"
             motion:layout_constraintTop_toTopOf="parent"
             motion:layout_constraintBottom_toBottomOf="parent" />
+
         <Constraint
             android:id="@+id/item_view_3"
-            android:layout_width="@dimen/clock_carousel_item_width"
-            android:layout_height="@dimen/clock_carousel_item_height"
-            motion:layout_constraintWidth_max="@dimen/clock_carousel_item_width"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
+            motion:layout_constraintWidth_max="@dimen/screen_preview_width"
             motion:layout_constraintHorizontal_bias="0.5"
             motion:layout_constraintStart_toStartOf="parent"
             motion:layout_constraintEnd_toEndOf="parent"
             motion:layout_constraintTop_toTopOf="parent"
             motion:layout_constraintBottom_toBottomOf="parent" />
+
         <Constraint
             android:id="@+id/item_view_4"
-            android:layout_width="@dimen/clock_carousel_item_width"
-            android:layout_height="@dimen/clock_carousel_item_height"
-            android:scaleX="@dimen/clock_carousel_scale"
-            android:scaleY="@dimen/clock_carousel_scale"
-            android:alpha="@dimen/clock_carousel_alpha"
+            android:layout_width="@dimen/screen_preview_width"
+            android:layout_height="wrap_content"
             motion:layout_constraintStart_toStartOf="@id/guideline_end"
             motion:layout_constraintTop_toTopOf="parent"
             motion:layout_constraintBottom_toBottomOf="parent" />
     </ConstraintSet>
-
 </MotionScene>
\ No newline at end of file
diff --git a/src/com/android/customization/model/clock/BaseClockManager.java b/src/com/android/customization/model/clock/BaseClockManager.java
deleted file mode 100644
index 3434780..0000000
--- a/src/com/android/customization/model/clock/BaseClockManager.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2019 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.
- */
-package com.android.customization.model.clock;
-
-import com.android.customization.model.CustomizationManager;
-
-/**
- * {@link CustomizationManager} for clock faces.
- */
-public abstract class BaseClockManager implements CustomizationManager<Clockface> {
-
-    private final ClockProvider mClockProvider;
-
-    public BaseClockManager(ClockProvider provider) {
-        mClockProvider = provider;
-    }
-
-    @Override
-    public boolean isAvailable() {
-        return mClockProvider.isAvailable();
-    }
-
-    @Override
-    public void apply(Clockface option, Callback callback) {
-        handleApply(option, callback);
-    }
-
-    @Override
-    public void fetchOptions(OptionsFetchedListener<Clockface> callback, boolean reload) {
-        mClockProvider.fetch(callback, false);
-    }
-
-    /** Returns the ID of the current clock face, which may be null for the default clock face. */
-    String getCurrentClock() {
-        return lookUpCurrentClock();
-    }
-
-    /**
-     * Implement to apply the clock picked by the user for {@link BaseClockManager#apply}.
-     *
-     * @param option Clock option, containing ID of the clock, that the user picked.
-     * @param callback Report success and failure.
-     */
-    protected abstract void handleApply(Clockface option, Callback callback);
-
-    /**
-     * Implement to look up the current clock face for {@link BaseClockManager#getCurrentClock()}.
-     *
-     * @return ID of current clock. Can be null for the default clock face.
-     */
-    protected abstract String lookUpCurrentClock();
-}
diff --git a/src/com/android/customization/model/clock/ClockManager.java b/src/com/android/customization/model/clock/ClockManager.java
deleted file mode 100644
index 4e77a49..0000000
--- a/src/com/android/customization/model/clock/ClockManager.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2019 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.
- */
-package com.android.customization.model.clock;
-
-import android.content.ContentResolver;
-import android.provider.Settings.Secure;
-import android.text.TextUtils;
-
-import com.android.customization.module.ThemesUserEventLogger;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-/**
- * {@link CustomizationManager} for clock faces that implements apply by writing to secure settings.
- */
-public class ClockManager extends BaseClockManager {
-
-    // TODO: use constant from Settings.Secure
-    static final String CLOCK_FACE_SETTING = "lock_screen_custom_clock_face";
-    private static final String CLOCK_FIELD = "clock";
-    private static final String TIMESTAMP_FIELD = "_applied_timestamp";
-    private final ContentResolver mContentResolver;
-    private final ThemesUserEventLogger mEventLogger;
-
-    public ClockManager(ContentResolver resolver, ClockProvider provider,
-            ThemesUserEventLogger logger) {
-        super(provider);
-        mContentResolver = resolver;
-        mEventLogger = logger;
-    }
-
-    @Override
-    protected void handleApply(Clockface option, Callback callback) {
-        boolean stored;
-        try {
-            final JSONObject json = new JSONObject();
-            json.put(CLOCK_FIELD, option.getId());
-            json.put(TIMESTAMP_FIELD, System.currentTimeMillis());
-            stored = Secure.putString(mContentResolver, CLOCK_FACE_SETTING, json.toString());
-        } catch (JSONException ex) {
-            stored = false;
-        }
-        if (stored) {
-            mEventLogger.logClockApplied(option);
-            callback.onSuccess();
-        } else {
-            callback.onError(null);
-        }
-    }
-
-    @Override
-    protected String lookUpCurrentClock() {
-        final String value = Secure.getString(mContentResolver, CLOCK_FACE_SETTING);
-        if (TextUtils.isEmpty(value)) {
-            return value;
-        }
-        try {
-            final JSONObject json = new JSONObject(value);
-            return json.getString(CLOCK_FIELD);
-        } catch (JSONException ex) {
-            return value;
-        }
-    }
-}
diff --git a/src/com/android/customization/model/clock/ClockProvider.java b/src/com/android/customization/model/clock/ClockProvider.java
deleted file mode 100644
index d9a6779..0000000
--- a/src/com/android/customization/model/clock/ClockProvider.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2019 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.
- */
-package com.android.customization.model.clock;
-
-import com.android.customization.model.CustomizationManager.OptionsFetchedListener;
-
-/**
- * Interface for a class that can retrieve Themes from the system.
- */
-public interface ClockProvider {
-    /**
-     * Returns whether clockfaces are available in the current setup.
-     */
-    boolean isAvailable();
-
-    /**
-     * Retrieve the available clockfaces.
-     * @param callback called when the clockfaces have been retrieved (or immediately if cached)
-     * @param reload whether to reload clockfaces if they're cached.
-     */
-    void fetch(OptionsFetchedListener<Clockface> callback, boolean reload);
-}
diff --git a/src/com/android/customization/model/clock/Clockface.java b/src/com/android/customization/model/clock/Clockface.java
deleted file mode 100644
index 9bdcaef..0000000
--- a/src/com/android/customization/model/clock/Clockface.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (C) 2019 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.
- */
-package com.android.customization.model.clock;
-
-import android.text.TextUtils;
-import android.view.View;
-import android.widget.ImageView;
-
-import com.android.customization.model.CustomizationManager;
-import com.android.customization.model.CustomizationOption;
-import com.android.wallpaper.R;
-import com.android.wallpaper.asset.Asset;
-
-public class Clockface implements CustomizationOption<Clockface> {
-
-    private final String mTitle;
-    private final String mId;
-    private final Asset mPreview;
-    private final Asset mThumbnail;
-
-    private Clockface(String title, String id, Asset preview, Asset thumbnail) {
-        mTitle = title;
-        mId = id;
-        mPreview = preview;
-        mThumbnail = thumbnail;
-    }
-
-    @Override
-    public String getTitle() {
-        return mTitle;
-    }
-
-    @Override
-    public void bindThumbnailTile(View view) {
-        ImageView thumbView = view.findViewById(R.id.clock_option_thumbnail);
-        mThumbnail.loadDrawableWithTransition(thumbView.getContext(), thumbView, 50, null,
-                thumbView.getResources().getColor(android.R.color.transparent, null));
-    }
-
-    @Override
-    public boolean isActive(CustomizationManager<Clockface> manager) {
-        String currentClock = ((BaseClockManager) manager).getCurrentClock();
-        // Empty clock Id is the default system clock
-        return (TextUtils.isEmpty(currentClock) && TextUtils.isEmpty(mId))
-                || (mId != null && mId.equals(currentClock));
-    }
-
-    @Override
-    public int getLayoutResId() {
-        return R.layout.clock_option;
-    }
-
-    public Asset getPreviewAsset() {
-        return mPreview;
-    }
-
-    public String getId() {
-        return mId;
-    }
-
-    public static class Builder {
-        private String mTitle;
-        private String mId;
-        private Asset mPreview;
-        private Asset mThumbnail;
-
-        public Clockface build() {
-            return new Clockface(mTitle, mId, mPreview, mThumbnail);
-        }
-
-        public Builder setTitle(String title) {
-            mTitle = title;
-            return this;
-        }
-
-        public Builder setId(String id) {
-            mId = id;
-            return this;
-        }
-
-        public Builder setPreview(Asset preview) {
-            mPreview = preview;
-            return this;
-        }
-
-        public Builder setThumbnail(Asset thumbnail) {
-            mThumbnail = thumbnail;
-            return this;
-        }
-    }
-}
diff --git a/src/com/android/customization/model/clock/ContentProviderClockProvider.java b/src/com/android/customization/model/clock/ContentProviderClockProvider.java
deleted file mode 100644
index f0df031..0000000
--- a/src/com/android/customization/model/clock/ContentProviderClockProvider.java
+++ /dev/null
@@ -1,135 +0,0 @@
-package com.android.customization.model.clock;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.ProviderInfo;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Handler;
-import android.os.Looper;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.android.customization.model.CustomizationManager.OptionsFetchedListener;
-import com.android.customization.model.clock.Clockface.Builder;
-import com.android.wallpaper.R;
-import com.android.wallpaper.asset.ContentUriAsset;
-
-import com.bumptech.glide.Glide;
-import com.bumptech.glide.request.RequestOptions;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-public class ContentProviderClockProvider implements ClockProvider {
-
-    private static final String TAG = "ContentProviderClockProvider";
-    private static final ExecutorService sExecutorService = Executors.newSingleThreadExecutor();
-    private static final String LIST_OPTIONS = "list_options";
-    private static final String COL_TITLE = "title";
-    private static final String COL_ID = "id";
-    private static final String COL_THUMBNAIL = "thumbnail";
-    private static final String COL_PREVIEW = "preview";
-
-    private final Context mContext;
-    private final ProviderInfo mProviderInfo;
-    private List<Clockface> mClocks;
-    private boolean mClockContentAvailable;
-
-    public ContentProviderClockProvider(Context context) {
-        mContext = context;
-        String providerAuthority = mContext.getString(R.string.clocks_provider_authority);
-        // TODO: check permissions if needed
-        mProviderInfo = TextUtils.isEmpty(providerAuthority) ? null
-                : mContext.getPackageManager().resolveContentProvider(providerAuthority,
-                        PackageManager.MATCH_SYSTEM_ONLY);
-
-        if (TextUtils.isEmpty(mContext.getString(R.string.clocks_stub_package))) {
-            mClockContentAvailable = false;
-        } else {
-            try {
-                ApplicationInfo applicationInfo = mContext.getPackageManager().getApplicationInfo(
-                        mContext.getString(R.string.clocks_stub_package),
-                        PackageManager.MATCH_SYSTEM_ONLY);
-                mClockContentAvailable = applicationInfo != null;
-            } catch (NameNotFoundException e) {
-                mClockContentAvailable = false;
-            }
-        }
-    }
-
-    @Override
-    public boolean isAvailable() {
-        return mProviderInfo != null && mClockContentAvailable
-                && (mClocks == null || !mClocks.isEmpty());
-    }
-
-    @Override
-    public void fetch(OptionsFetchedListener<Clockface> callback, boolean reload) {
-        if (!isAvailable()) {
-            if (callback != null) {
-                callback.onError(null);
-            }
-            return;
-        }
-        if (mClocks != null && !reload) {
-            if (callback != null) {
-                if (!mClocks.isEmpty()) {
-                    callback.onOptionsLoaded(mClocks);
-                } else {
-                    callback.onError(null);
-                }
-            }
-            return;
-        }
-        sExecutorService.submit(() -> {
-            Uri optionsUri = new Uri.Builder()
-                    .scheme(ContentResolver.SCHEME_CONTENT)
-                    .authority(mProviderInfo.authority)
-                    .appendPath(LIST_OPTIONS)
-                    .build();
-
-            ContentResolver resolver = mContext.getContentResolver();
-
-            List<Clockface> clockfaces = new ArrayList<>();
-            try (Cursor c = resolver.query(optionsUri, null, null, null, null)) {
-                while (c != null && c.moveToNext()) {
-                    String id = c.getString(c.getColumnIndex(COL_ID));
-                    String title = c.getString(c.getColumnIndex(COL_TITLE));
-                    String thumbnailUri = c.getString(c.getColumnIndex(COL_THUMBNAIL));
-                    String previewUri = c.getString(c.getColumnIndex(COL_PREVIEW));
-                    Uri thumbnail = Uri.parse(thumbnailUri);
-                    Uri preview = Uri.parse(previewUri);
-
-                    Clockface.Builder builder = new Builder();
-                    builder.setId(id).setTitle(title)
-                            .setThumbnail(new ContentUriAsset(mContext, thumbnail,
-                                    RequestOptions.fitCenterTransform()))
-                            .setPreview(new ContentUriAsset(mContext, preview,
-                                    RequestOptions.fitCenterTransform()));
-                    clockfaces.add(builder.build());
-                }
-                Glide.get(mContext).clearDiskCache();
-            } catch (Exception e) {
-                clockfaces = null;
-                Log.e(TAG, "Failed to query clock face options.", e);
-            }
-            final List<Clockface> clockfaceList = clockfaces;
-            new Handler(Looper.getMainLooper()).post(() -> {
-                mClocks = clockfaceList;
-                if (callback != null) {
-                    if (!mClocks.isEmpty()) {
-                        callback.onOptionsLoaded(mClocks);
-                    } else {
-                        callback.onError(null);
-                    }
-                }
-            });
-        });
-    }
-}
diff --git a/src/com/android/customization/model/clock/custom/ClockCustomManager.java b/src/com/android/customization/model/clock/custom/ClockCustomManager.java
deleted file mode 100644
index 0815a3e..0000000
--- a/src/com/android/customization/model/clock/custom/ClockCustomManager.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2022 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.
- */
-package com.android.customization.model.clock.custom;
-
-import com.android.customization.model.CustomizationManager;
-
-import com.google.common.collect.Lists;
-
-/**
- * {@link CustomizationManager} for clock faces.
- */
-public class ClockCustomManager implements CustomizationManager<ClockOption> {
-    @Override
-    public boolean isAvailable() {
-        return true;
-    }
-
-    @Override
-    public void apply(ClockOption option, Callback callback) {
-        // TODO(/b241966062) execute applying the clock when user selects a clock
-    }
-
-    @Override
-    public void fetchOptions(OptionsFetchedListener<ClockOption> callback, boolean reload) {
-        // TODO(/b241966062) fetch the real clock metadata from the ClockRegistry
-        callback.onOptionsLoaded(
-                Lists.newArrayList(new ClockOption(), new ClockOption(), new ClockOption(),
-                        new ClockOption(), new ClockOption()));
-    }
-}
diff --git a/src/com/android/customization/model/clock/custom/ClockOption.java b/src/com/android/customization/model/clock/custom/ClockOption.java
deleted file mode 100644
index 5a9f051..0000000
--- a/src/com/android/customization/model/clock/custom/ClockOption.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2022 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.
- */
-package com.android.customization.model.clock.custom;
-
-import android.view.View;
-
-import com.android.customization.model.CustomizationManager;
-import com.android.customization.model.CustomizationOption;
-import com.android.wallpaper.R;
-
-/**
- * {@link CustomizationOption} for a clock face.
- */
-public class ClockOption implements CustomizationOption<ClockOption> {
-
-    @Override
-    public String getTitle() {
-        // TODO(/b241966062) use the title from the clock metadata
-        return "title";
-    }
-
-    @Override
-    public void bindThumbnailTile(View view) {
-        // TODO(/b241966062) bind the thumbnail
-    }
-
-    @Override
-    public boolean isActive(CustomizationManager<ClockOption> manager) {
-        return false;
-    }
-
-
-    @Override
-    public int getLayoutResId() {
-        return R.layout.clock_option;
-    }
-}
diff --git a/src/com/android/customization/model/color/ColorCustomizationManager.java b/src/com/android/customization/model/color/ColorCustomizationManager.java
index 29f6ba6..790c86f 100644
--- a/src/com/android/customization/model/color/ColorCustomizationManager.java
+++ b/src/com/android/customization/model/color/ColorCustomizationManager.java
@@ -181,7 +181,23 @@
         if (lockWallpaperColors != null && mLockWallpaperColors.equals(mHomeWallpaperColors)) {
             lockWallpaperColors = null;
         }
-        mProvider.fetch(callback, reload, mHomeWallpaperColors, lockWallpaperColors);
+        mProvider.fetch(callback, reload, mHomeWallpaperColors,
+                lockWallpaperColors,  /* shouldUseRevampedUi= */ false);
+    }
+
+    /**
+     * Fetch options function for the customization hub revamped UI
+     *
+     * TODO (b/276417460): refactor to reduce code repetition with the other fetch options function
+     */
+    public void fetchRevampedUIOptions(OptionsFetchedListener<ColorOption> callback,
+            boolean reload) {
+        WallpaperColors lockWallpaperColors = mLockWallpaperColors;
+        if (lockWallpaperColors != null && mLockWallpaperColors.equals(mHomeWallpaperColors)) {
+            lockWallpaperColors = null;
+        }
+        mProvider.fetch(callback, reload, mHomeWallpaperColors,
+                lockWallpaperColors,  /* shouldUseRevampedUi= */ true);
     }
 
     /**
diff --git a/src/com/android/customization/model/color/ColorOptionImpl.kt b/src/com/android/customization/model/color/ColorOptionImpl.kt
new file mode 100644
index 0000000..3273ce2
--- /dev/null
+++ b/src/com/android/customization/model/color/ColorOptionImpl.kt
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2023 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.
+ *
+ */
+package com.android.customization.model.color
+
+import android.content.Context
+import android.view.View
+import androidx.annotation.ColorInt
+import com.android.customization.model.color.ColorOptionsProvider.ColorSource
+import com.android.customization.picker.color.shared.model.ColorType
+import com.android.systemui.monet.Style
+import com.android.wallpaper.R
+
+/**
+ * Represents a color option in the revamped UI, it can be used for both wallpaper and preset colors
+ */
+class ColorOptionImpl(
+    title: String?,
+    overlayPackages: Map<String, String?>,
+    isDefault: Boolean,
+    private val source: String?,
+    style: Style,
+    index: Int,
+    private val previewInfo: PreviewInfo,
+    val type: ColorType,
+) : ColorOption(title, overlayPackages, isDefault, style, index) {
+
+    class PreviewInfo(
+        @ColorInt val lightColors: IntArray,
+        @ColorInt val darkColors: IntArray,
+    ) : ColorOption.PreviewInfo {
+        @ColorInt
+        fun resolveColors(darkTheme: Boolean): IntArray {
+            return if (darkTheme) darkColors else lightColors
+        }
+    }
+
+    override fun bindThumbnailTile(view: View?) {
+        // Do nothing. This function will no longer be used in the Revamped UI
+    }
+
+    override fun getLayoutResId(): Int {
+        return R.layout.color_option
+    }
+
+    override fun getPreviewInfo(): PreviewInfo {
+        return previewInfo
+    }
+
+    override fun getContentDescription(context: Context): CharSequence? {
+        return title
+    }
+
+    override fun getSource(): String? {
+        return source
+    }
+
+    class Builder {
+        var title: String? = null
+
+        @ColorInt var lightColors: IntArray = intArrayOf()
+
+        @ColorInt var darkColors: IntArray = intArrayOf()
+
+        @ColorSource var source: String? = null
+        var isDefault = false
+        var style = Style.TONAL_SPOT
+        var index = 0
+        var packages: MutableMap<String, String?> = HashMap()
+        var type = ColorType.WALLPAPER_COLOR
+
+        fun build(): ColorOptionImpl {
+            return ColorOptionImpl(
+                title,
+                packages,
+                isDefault,
+                source,
+                style,
+                index,
+                createPreviewInfo(),
+                type
+            )
+        }
+
+        private fun createPreviewInfo(): PreviewInfo {
+            return PreviewInfo(lightColors, darkColors)
+        }
+
+        fun addOverlayPackage(category: String?, packageName: String?): ColorOptionImpl.Builder {
+            category?.let { packages[category] = packageName }
+            return this
+        }
+    }
+}
diff --git a/src/com/android/customization/model/color/ColorOptionsProvider.java b/src/com/android/customization/model/color/ColorOptionsProvider.java
index 2803c7b..166b4da 100644
--- a/src/com/android/customization/model/color/ColorOptionsProvider.java
+++ b/src/com/android/customization/model/color/ColorOptionsProvider.java
@@ -70,8 +70,12 @@
      * @param homeWallpaperColors to get seed colors from
      * @param lockWallpaperColors WallpaperColors from the lockscreen wallpaper to get seeds from,
      *                            if different than homeWallpaperColors
+     * @param shouldUseRevampedUi fetches color options with new preview mappings for the revamped
+     *                            UI if set to true
      */
     void fetch(OptionsFetchedListener<ColorOption> callback, boolean reload,
             @Nullable WallpaperColors homeWallpaperColors,
-            @Nullable WallpaperColors lockWallpaperColors);
+            @Nullable WallpaperColors lockWallpaperColors,
+            boolean shouldUseRevampedUi
+    );
 }
diff --git a/src/com/android/customization/model/color/ColorProvider.kt b/src/com/android/customization/model/color/ColorProvider.kt
index f91ec6b..63d298d 100644
--- a/src/com/android/customization/model/color/ColorProvider.kt
+++ b/src/com/android/customization/model/color/ColorProvider.kt
@@ -34,11 +34,12 @@
 import com.android.customization.model.color.ColorOptionsProvider.COLOR_SOURCE_HOME
 import com.android.customization.model.color.ColorOptionsProvider.COLOR_SOURCE_LOCK
 import com.android.customization.model.color.ColorUtils.toColorString
+import com.android.customization.picker.color.shared.model.ColorType
 import com.android.systemui.monet.ColorScheme
 import com.android.systemui.monet.Style
+import com.android.wallpaper.R
 import com.android.wallpaper.compat.WallpaperManagerCompat
 import com.android.wallpaper.module.InjectorProvider
-import java.util.*
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.SupervisorJob
@@ -48,7 +49,7 @@
 /**
  * Default implementation of {@link ColorOptionsProvider} that reads preset colors from a stub APK.
  */
-class ColorProvider(context: Context, stubPackageName: String) :
+class ColorProvider(private val context: Context, stubPackageName: String) :
     ResourcesApkProvider(context, stubPackageName), ColorOptionsProvider {
 
     companion object {
@@ -67,6 +68,10 @@
             arrayOf(Style.TONAL_SPOT, Style.SPRITZ, Style.VIBRANT, Style.EXPRESSIVE)
         else arrayOf(Style.TONAL_SPOT)
 
+    private val monochromeEnabled =
+        InjectorProvider.getInjector().getFlags().isMonochromaticThemeEnabled(mContext)
+    private var monochromeBundleName: String? = null
+
     private val scope =
         if (mContext is LifecycleOwner) {
             mContext.lifecycleScope
@@ -87,7 +92,8 @@
         callback: OptionsFetchedListener<ColorOption>?,
         reload: Boolean,
         homeWallpaperColors: WallpaperColors?,
-        lockWallpaperColors: WallpaperColors?
+        lockWallpaperColors: WallpaperColors?,
+        shouldUseRevampedUi: Boolean
     ) {
         val wallpaperColorsChanged =
             this.homeWallpaperColors != homeWallpaperColors ||
@@ -100,10 +106,14 @@
             scope.launch {
                 try {
                     if (colorBundles == null || reload) {
-                        loadPreset()
+                        loadPreset(shouldUseRevampedUi)
                     }
                     if (wallpaperColorsChanged || reload) {
-                        loadSeedColors(homeWallpaperColors, lockWallpaperColors)
+                        loadSeedColors(
+                            homeWallpaperColors,
+                            lockWallpaperColors,
+                            shouldUseRevampedUi
+                        )
                     }
                 } catch (e: Throwable) {
                     colorsAvailable = false
@@ -127,7 +137,8 @@
 
     private fun loadSeedColors(
         homeWallpaperColors: WallpaperColors?,
-        lockWallpaperColors: WallpaperColors?
+        lockWallpaperColors: WallpaperColors?,
+        shouldUseRevampedUi: Boolean,
     ) {
         if (homeWallpaperColors == null) return
 
@@ -147,7 +158,8 @@
                 colorsPerSource,
                 if (shouldLockColorsGoFirst) COLOR_SOURCE_LOCK else COLOR_SOURCE_HOME,
                 true,
-                bundles
+                bundles,
+                shouldUseRevampedUi
             )
             // Second half of the colors
             buildColorSeeds(
@@ -155,13 +167,45 @@
                 MAX_SEED_COLORS - bundles.size / styleSize,
                 if (shouldLockColorsGoFirst) COLOR_SOURCE_HOME else COLOR_SOURCE_LOCK,
                 false,
-                bundles
+                bundles,
+                shouldUseRevampedUi
             )
         } else {
-            buildColorSeeds(homeWallpaperColors, colorsPerSource, COLOR_SOURCE_HOME, true, bundles)
+            buildColorSeeds(
+                homeWallpaperColors,
+                colorsPerSource,
+                COLOR_SOURCE_HOME,
+                true,
+                bundles,
+                shouldUseRevampedUi
+            )
         }
 
-        bundles.addAll(colorBundles?.filterNot { it is ColorSeedOption } ?: emptyList())
+        if (shouldUseRevampedUi) {
+            // Insert monochrome in the second position if it is enabled and included in preset
+            // colors
+            if (monochromeEnabled) {
+                monochromeBundleName?.let {
+                    bundles.add(
+                        1,
+                        buildRevampedUIPreset(
+                            it,
+                            -1,
+                            Style.MONOCHROMATIC,
+                            ColorType.WALLPAPER_COLOR
+                        )
+                    )
+                }
+            }
+            bundles.addAll(
+                colorBundles?.filterNot {
+                    (it as ColorOptionImpl).type == ColorType.WALLPAPER_COLOR
+                }
+                    ?: emptyList()
+            )
+        } else {
+            bundles.addAll(colorBundles?.filterNot { it is ColorSeedOption } ?: emptyList())
+        }
         colorBundles = bundles
     }
 
@@ -170,13 +214,14 @@
         maxColors: Int,
         source: String,
         containsDefault: Boolean,
-        bundles: MutableList<ColorOption>
+        bundles: MutableList<ColorOption>,
+        shouldUseRevampedUi: Boolean,
     ) {
         val seedColors = ColorScheme.getSeedColors(wallpaperColors)
         val defaultSeed = seedColors.first()
-        buildBundle(defaultSeed, 0, containsDefault, source, bundles)
+        buildBundle(defaultSeed, 0, containsDefault, source, bundles, shouldUseRevampedUi)
         for ((i, colorInt) in seedColors.drop(1).take(maxColors - 1).withIndex()) {
-            buildBundle(colorInt, i + 1, false, source, bundles)
+            buildBundle(colorInt, i + 1, false, source, bundles, shouldUseRevampedUi)
         }
     }
 
@@ -185,38 +230,72 @@
         i: Int,
         isDefault: Boolean,
         source: String,
-        bundles: MutableList<ColorOption>
+        bundles: MutableList<ColorOption>,
+        shouldUseRevampedUi: Boolean,
     ) {
         // TODO(b/202145216): Measure time cost in the loop.
-        for (style in styleList) {
-            val builder = ColorSeedOption.Builder()
-            val lightColorScheme = ColorScheme(colorInt, /* darkTheme= */ false, style)
-            val darkColorScheme = ColorScheme(colorInt, /* darkTheme= */ true, style)
-            builder
-                .setLightColors(lightColorScheme.getLightColorPreview())
-                .setDarkColors(darkColorScheme.getDarkColorPreview())
-                .addOverlayPackage(
+        if (shouldUseRevampedUi) {
+            for (style in styleList) {
+                val lightColorScheme = ColorScheme(colorInt, /* darkTheme= */ false, style)
+                val darkColorScheme = ColorScheme(colorInt, /* darkTheme= */ true, style)
+                val builder = ColorOptionImpl.Builder()
+                builder.lightColors = getRevampedUILightColorPreview(lightColorScheme)
+                builder.darkColors = getRevampedUIDarkColorPreview(darkColorScheme)
+                builder.addOverlayPackage(
                     OVERLAY_CATEGORY_SYSTEM_PALETTE,
                     if (isDefault) "" else toColorString(colorInt)
                 )
-                .addOverlayPackage(
-                    OVERLAY_CATEGORY_COLOR,
-                    if (isDefault) "" else toColorString(colorInt)
-                )
-                .setSource(source)
-                .setStyle(style)
+                builder.title =
+                    when (style) {
+                        Style.TONAL_SPOT ->
+                            context.getString(R.string.content_description_dynamic_color_option)
+                        Style.SPRITZ ->
+                            context.getString(R.string.content_description_neutral_color_option)
+                        Style.VIBRANT ->
+                            context.getString(R.string.content_description_vibrant_color_option)
+                        Style.EXPRESSIVE ->
+                            context.getString(R.string.content_description_expressive_color_option)
+                        else -> context.getString(R.string.content_description_dynamic_color_option)
+                    }
+                builder.source = source
+                builder.style = style
                 // Color option index value starts from 1.
-                .setIndex(i + 1)
+                builder.index = i + 1
+                builder.isDefault = isDefault
+                builder.type = ColorType.WALLPAPER_COLOR
+                bundles.add(builder.build())
+            }
+        } else {
+            for (style in styleList) {
+                val lightColorScheme = ColorScheme(colorInt, /* darkTheme= */ false, style)
+                val darkColorScheme = ColorScheme(colorInt, /* darkTheme= */ true, style)
+                val builder = ColorSeedOption.Builder()
+                builder
+                    .setLightColors(lightColorScheme.getLightColorPreview())
+                    .setDarkColors(darkColorScheme.getDarkColorPreview())
+                    .addOverlayPackage(
+                        OVERLAY_CATEGORY_SYSTEM_PALETTE,
+                        if (isDefault) "" else toColorString(colorInt)
+                    )
+                    .addOverlayPackage(
+                        OVERLAY_CATEGORY_COLOR,
+                        if (isDefault) "" else toColorString(colorInt)
+                    )
+                    .setSource(source)
+                    .setStyle(style)
+                    // Color option index value starts from 1.
+                    .setIndex(i + 1)
 
-            if (isDefault) builder.asDefault()
+                if (isDefault) builder.asDefault()
 
-            bundles.add(builder.build())
+                bundles.add(builder.build())
+            }
         }
     }
 
     /**
      * Returns the colors for the light theme version of the preview of a ColorScheme based on this
-     * order: |-------| | 0 | 1 | |---+---| | 2 | 3 | |-------|
+     * order: top left, top right, bottom left, bottom right
      */
     @ColorInt
     private fun ColorScheme.getLightColorPreview(): IntArray {
@@ -240,13 +319,101 @@
 
     /**
      * Returns the color for the dark theme version of the preview of a ColorScheme based on this
-     * order: |-------| | 0 | 1 | |---+---| | 2 | 3 | |-------|
+     * order: top left, top right, bottom left, bottom right
      */
     @ColorInt
     private fun ColorScheme.getDarkColorPreview(): IntArray {
         return getLightColorPreview()
     }
 
+    /**
+     * Returns the light theme version of the Revamped UI preview of a ColorScheme based on this
+     * order: top left, top right, bottom left, bottom right
+     *
+     * This color mapping corresponds to GM3 colors: Primary (light), Primary (light), Secondary
+     * LStar 85, and Tertiary LStar 70
+     */
+    @ColorInt
+    private fun getRevampedUILightColorPreview(colorScheme: ColorScheme): IntArray {
+        return intArrayOf(
+            setAlphaComponent(colorScheme.accent1.s600, ALPHA_MASK),
+            setAlphaComponent(colorScheme.accent1.s600, ALPHA_MASK),
+            ColorStateList.valueOf(colorScheme.accent2.s500).withLStar(85f).colors[0],
+            setAlphaComponent(colorScheme.accent3.s300, ALPHA_MASK),
+        )
+    }
+
+    /**
+     * Returns the dark theme version of the Revamped UI preview of a ColorScheme based on this
+     * order: top left, top right, bottom left, bottom right
+     *
+     * This color mapping corresponds to GM3 colors: Primary (dark), Primary (dark), Secondary LStar
+     * 35, and Tertiary LStar 70
+     */
+    @ColorInt
+    private fun getRevampedUIDarkColorPreview(colorScheme: ColorScheme): IntArray {
+        return intArrayOf(
+            setAlphaComponent(colorScheme.accent1.s200, ALPHA_MASK),
+            setAlphaComponent(colorScheme.accent1.s200, ALPHA_MASK),
+            ColorStateList.valueOf(colorScheme.accent2.s500).withLStar(35f).colors[0],
+            setAlphaComponent(colorScheme.accent3.s300, ALPHA_MASK),
+        )
+    }
+
+    /**
+     * Returns the light theme version of the Revamped UI preview of a ColorScheme based on this
+     * order: top left, top right, bottom left, bottom right
+     *
+     * This color mapping corresponds to GM3 colors: Primary LStar 0, Primary LStar 0, Secondary
+     * LStar 85, and Tertiary LStar 70
+     */
+    @ColorInt
+    private fun getRevampedUILightMonochromePreview(colorScheme: ColorScheme): IntArray {
+        return intArrayOf(
+            setAlphaComponent(colorScheme.accent1.s1000, ALPHA_MASK),
+            setAlphaComponent(colorScheme.accent1.s1000, ALPHA_MASK),
+            ColorStateList.valueOf(colorScheme.accent2.s500).withLStar(85f).colors[0],
+            setAlphaComponent(colorScheme.accent3.s300, ALPHA_MASK),
+        )
+    }
+
+    /**
+     * Returns the dark theme version of the Revamped UI preview of a ColorScheme based on this
+     * order: top left, top right, bottom left, bottom right
+     *
+     * This color mapping corresponds to GM3 colors: Primary LStar 99, Primary LStar 99, Secondary
+     * LStar 35, and Tertiary LStar 70
+     */
+    @ColorInt
+    private fun getRevampedUIDarkMonochromePreview(colorScheme: ColorScheme): IntArray {
+        return intArrayOf(
+            setAlphaComponent(colorScheme.accent1.s10, ALPHA_MASK),
+            setAlphaComponent(colorScheme.accent1.s10, ALPHA_MASK),
+            ColorStateList.valueOf(colorScheme.accent2.s500).withLStar(35f).colors[0],
+            setAlphaComponent(colorScheme.accent3.s300, ALPHA_MASK),
+        )
+    }
+
+    /**
+     * Returns the Revamped UI preview of a preset ColorScheme based on this order: top left, top
+     * right, bottom left, bottom right
+     */
+    private fun getRevampedUIPresetColorPreview(colorScheme: ColorScheme, seed: Int): IntArray {
+        val colors =
+            when (colorScheme.style) {
+                Style.FRUIT_SALAD -> intArrayOf(seed, colorScheme.accent1.s200)
+                Style.TONAL_SPOT -> intArrayOf(colorScheme.accentColor, colorScheme.accentColor)
+                Style.RAINBOW -> intArrayOf(colorScheme.accent1.s200, colorScheme.accent1.s200)
+                else -> intArrayOf(colorScheme.accent1.s100, colorScheme.accent1.s100)
+            }
+        return intArrayOf(
+            colors[0],
+            colors[1],
+            colors[0],
+            colors[1],
+        )
+    }
+
     private fun ColorScheme.getPresetColorPreview(seed: Int): IntArray {
         return when (this.style) {
             Style.FRUIT_SALAD -> intArrayOf(seed, this.accent1.s100)
@@ -260,7 +427,7 @@
         }
     }
 
-    private suspend fun loadPreset() =
+    private suspend fun loadPreset(shouldUseRevampedUi: Boolean) =
         withContext(Dispatchers.IO) {
             val extractor = ColorBundlePreviewExtractor(mContext)
             val bundles: MutableList<ColorOption> = ArrayList()
@@ -269,52 +436,134 @@
             // Color option index value starts from 1.
             var index = 1
             val maxPresetColors = if (themeStyleEnabled) bundleNames.size else MAX_PRESET_COLORS
-            for (bundleName in bundleNames.take(maxPresetColors)) {
-                val builder = ColorBundle.Builder()
-                builder.title = getItemStringFromStub(COLOR_BUNDLE_NAME_PREFIX, bundleName)
-                builder.setIndex(index)
-                val colorFromStub = getItemColorFromStub(COLOR_BUNDLE_MAIN_COLOR_PREFIX, bundleName)
-                extractor.addPrimaryColor(builder, colorFromStub)
-                extractor.addSecondaryColor(builder, colorFromStub)
-                if (themeStyleEnabled) {
-                    val styleName =
-                        try {
-                            getItemStringFromStub(COLOR_BUNDLE_STYLE_PREFIX, bundleName)
-                        } catch (e: Resources.NotFoundException) {
-                            null
-                        }
-                    extractor.addColorStyle(builder, styleName)
-                    val style =
-                        try {
-                            if (styleName != null) Style.valueOf(styleName) else Style.TONAL_SPOT
-                        } catch (e: IllegalArgumentException) {
-                            Style.TONAL_SPOT
-                        }
 
-                    if (
-                        style == Style.MONOCHROMATIC &&
-                            !InjectorProvider.getInjector()
-                                .getFlags()
-                                .isMonochromaticThemeEnabled(mContext)
-                    ) {
-                        continue
+            if (shouldUseRevampedUi) {
+                // keep track of whether monochrome is included in preset colors to determine
+                // inclusion in wallpaper colors
+                var hasMonochrome = false
+                for (bundleName in bundleNames.take(maxPresetColors)) {
+                    if (themeStyleEnabled) {
+                        val styleName =
+                            try {
+                                getItemStringFromStub(COLOR_BUNDLE_STYLE_PREFIX, bundleName)
+                            } catch (e: Resources.NotFoundException) {
+                                null
+                            }
+                        val style =
+                            try {
+                                if (styleName != null) Style.valueOf(styleName)
+                                else Style.TONAL_SPOT
+                            } catch (e: IllegalArgumentException) {
+                                Style.TONAL_SPOT
+                            }
+
+                        if (style == Style.MONOCHROMATIC) {
+                            if (!monochromeEnabled) {
+                                continue
+                            }
+                            hasMonochrome = true
+                            monochromeBundleName = bundleName
+                        }
+                        bundles.add(buildRevampedUIPreset(bundleName, index, style))
+                    } else {
+                        bundles.add(buildRevampedUIPreset(bundleName, index, null))
                     }
 
-                    val darkColors =
-                        ColorScheme(colorFromStub, true, style).getPresetColorPreview(colorFromStub)
-                    val lightColors =
-                        ColorScheme(colorFromStub, false, style)
-                            .getPresetColorPreview(colorFromStub)
-                    builder.setColorPrimaryDark(darkColors[0]).setColorSecondaryDark(darkColors[1])
-                    builder
-                        .setColorPrimaryLight(lightColors[0])
-                        .setColorSecondaryLight(lightColors[1])
+                    index++
                 }
+                if (!hasMonochrome) {
+                    monochromeBundleName = null
+                }
+            } else {
+                for (bundleName in bundleNames.take(maxPresetColors)) {
+                    val builder = ColorBundle.Builder()
+                    builder.title = getItemStringFromStub(COLOR_BUNDLE_NAME_PREFIX, bundleName)
+                    builder.setIndex(index)
+                    val colorFromStub =
+                        getItemColorFromStub(COLOR_BUNDLE_MAIN_COLOR_PREFIX, bundleName)
+                    extractor.addPrimaryColor(builder, colorFromStub)
+                    extractor.addSecondaryColor(builder, colorFromStub)
+                    if (themeStyleEnabled) {
+                        val styleName =
+                            try {
+                                getItemStringFromStub(COLOR_BUNDLE_STYLE_PREFIX, bundleName)
+                            } catch (e: Resources.NotFoundException) {
+                                null
+                            }
+                        extractor.addColorStyle(builder, styleName)
+                        val style =
+                            try {
+                                if (styleName != null) Style.valueOf(styleName)
+                                else Style.TONAL_SPOT
+                            } catch (e: IllegalArgumentException) {
+                                Style.TONAL_SPOT
+                            }
 
-                bundles.add(builder.build(mContext))
-                index++
+                        if (style == Style.MONOCHROMATIC && !monochromeEnabled) {
+                            continue
+                        }
+
+                        val darkColors =
+                            ColorScheme(colorFromStub, /* darkTheme= */ true, style)
+                                .getPresetColorPreview(colorFromStub)
+                        val lightColors =
+                            ColorScheme(colorFromStub, /* darkTheme= */ false, style)
+                                .getPresetColorPreview(colorFromStub)
+                        builder
+                            .setColorPrimaryDark(darkColors[0])
+                            .setColorSecondaryDark(darkColors[1])
+                        builder
+                            .setColorPrimaryLight(lightColors[0])
+                            .setColorSecondaryLight(lightColors[1])
+                    }
+
+                    bundles.add(builder.build(mContext))
+                    index++
+                }
             }
 
             colorBundles = bundles
         }
+
+    private fun buildRevampedUIPreset(
+        bundleName: String,
+        index: Int,
+        style: Style? = null,
+        type: ColorType = ColorType.PRESET_COLOR,
+    ): ColorOptionImpl {
+        val builder = ColorOptionImpl.Builder()
+        builder.title = getItemStringFromStub(COLOR_BUNDLE_NAME_PREFIX, bundleName)
+        builder.index = index
+        builder.source = ColorOptionsProvider.COLOR_SOURCE_PRESET
+        builder.type = type
+        val colorFromStub = getItemColorFromStub(COLOR_BUNDLE_MAIN_COLOR_PREFIX, bundleName)
+        var darkColorScheme = ColorScheme(colorFromStub, /* darkTheme= */ true)
+        var lightColorScheme = ColorScheme(colorFromStub, /* darkTheme= */ false)
+        val lightColor = lightColorScheme.accentColor
+        val darkColor = darkColorScheme.accentColor
+        var lightColors = intArrayOf(lightColor, lightColor, lightColor, lightColor)
+        var darkColors = intArrayOf(darkColor, darkColor, darkColor, darkColor)
+        builder.addOverlayPackage(OVERLAY_CATEGORY_COLOR, toColorString(colorFromStub))
+        builder.addOverlayPackage(OVERLAY_CATEGORY_SYSTEM_PALETTE, toColorString(colorFromStub))
+        if (style != null) {
+            builder.style = style
+
+            lightColorScheme = ColorScheme(colorFromStub, /* darkTheme= */ false, style)
+            darkColorScheme = ColorScheme(colorFromStub, /* darkTheme= */ true, style)
+
+            when (style) {
+                Style.MONOCHROMATIC -> {
+                    darkColors = getRevampedUIDarkMonochromePreview(darkColorScheme)
+                    lightColors = getRevampedUILightMonochromePreview(lightColorScheme)
+                }
+                else -> {
+                    darkColors = getRevampedUIPresetColorPreview(darkColorScheme, colorFromStub)
+                    lightColors = getRevampedUIPresetColorPreview(lightColorScheme, colorFromStub)
+                }
+            }
+        }
+        builder.lightColors = lightColors
+        builder.darkColors = darkColors
+        return builder.build()
+    }
 }
diff --git a/src/com/android/customization/model/color/ColorSeedOption.java b/src/com/android/customization/model/color/ColorSeedOption.java
index ba61ed1..ed38049 100644
--- a/src/com/android/customization/model/color/ColorSeedOption.java
+++ b/src/com/android/customization/model/color/ColorSeedOption.java
@@ -100,6 +100,7 @@
         /**
          * Returns the colors to be applied corresponding with the current
          * configuration's UI mode.
+         * @param res resources to read to the UI mode configuration from
          * @return one of {@link #lightColors} or {@link #darkColors}
          */
         @ColorInt
@@ -108,6 +109,17 @@
                     == Configuration.UI_MODE_NIGHT_YES;
             return night ? darkColors : lightColors;
         }
+
+        /**
+         * Returns the preview colors based on whether dark theme or light theme colors are
+         * requested.
+         * @param darkTheme if true, returns dark theme colors, otherwise returns light theme colors
+         * @return one of {@link #lightColors} or {@link #darkColors}
+         */
+        @ColorInt
+        public int[] resolveColors(boolean darkTheme) {
+            return darkTheme ? darkColors : lightColors;
+        }
     }
 
     /**
diff --git a/src/com/android/customization/model/grid/ui/fragment/GridFragment2.kt b/src/com/android/customization/model/grid/ui/fragment/GridFragment2.kt
index d8cad82..6ab561f 100644
--- a/src/com/android/customization/model/grid/ui/fragment/GridFragment2.kt
+++ b/src/com/android/customization/model/grid/ui/fragment/GridFragment2.kt
@@ -122,11 +122,11 @@
                         }
                     },
                     wallpaperInteractor = wallpaperInteractor,
+                    screen = CustomizationSections.Screen.HOME_SCREEN,
                 ),
-            lifecycleOwner = this,
+            lifecycleOwner = viewLifecycleOwner,
             offsetToStart = false,
-            screen = CustomizationSections.Screen.HOME_SCREEN,
-            onPreviewDirty = { activity?.recreate() },
+            onWallpaperPreviewDirty = { activity?.recreate() },
         )
     }
 }
diff --git a/src/com/android/customization/module/CustomizationInjector.kt b/src/com/android/customization/module/CustomizationInjector.kt
index 306ef04..5f8f9d3 100644
--- a/src/com/android/customization/module/CustomizationInjector.kt
+++ b/src/com/android/customization/module/CustomizationInjector.kt
@@ -15,8 +15,8 @@
  */
 package com.android.customization.module
 
-import android.app.Activity
 import android.content.Context
+import androidx.activity.ComponentActivity
 import androidx.fragment.app.FragmentActivity
 import com.android.customization.model.theme.OverlayManagerCompat
 import com.android.customization.model.theme.ThemeBundleProvider
@@ -26,6 +26,7 @@
 import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewModel
 import com.android.customization.picker.clock.ui.viewmodel.ClockSectionViewModel
 import com.android.customization.picker.clock.ui.viewmodel.ClockSettingsViewModel
+import com.android.customization.picker.clock.utils.ClockDescriptionUtils
 import com.android.customization.picker.color.domain.interactor.ColorPickerInteractor
 import com.android.customization.picker.color.ui.viewmodel.ColorPickerViewModel
 import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor
@@ -47,11 +48,13 @@
         context: Context,
     ): KeyguardQuickAffordancePickerInteractor
 
-    fun getClockRegistry(context: Context): ClockRegistry
+    fun getClockRegistry(context: Context): ClockRegistry?
 
     fun getClockPickerInteractor(context: Context): ClockPickerInteractor
 
-    fun getClockSectionViewModel(context: Context): ClockSectionViewModel
+    fun getClockSectionViewModel(
+        context: Context,
+    ): ClockSectionViewModel
 
     fun getColorPickerInteractor(
         context: Context,
@@ -63,12 +66,17 @@
         wallpaperColorsViewModel: WallpaperColorsViewModel,
     ): ColorPickerViewModel.Factory
 
-    fun getClockCarouselViewModel(context: Context): ClockCarouselViewModel
+    fun getClockCarouselViewModelFactory(
+        interactor: ClockPickerInteractor,
+    ): ClockCarouselViewModel.Factory
 
-    fun getClockViewFactory(activity: Activity): ClockViewFactory
+    fun getClockViewFactory(activity: ComponentActivity): ClockViewFactory
 
     fun getClockSettingsViewModelFactory(
         context: Context,
         wallpaperColorsViewModel: WallpaperColorsViewModel,
+        clockViewFactory: ClockViewFactory,
     ): ClockSettingsViewModel.Factory
+
+    fun getClockDescriptionUtils(): ClockDescriptionUtils
 }
diff --git a/src/com/android/customization/module/DefaultCustomizationSections.java b/src/com/android/customization/module/DefaultCustomizationSections.java
index 232e948..b408a89 100644
--- a/src/com/android/customization/module/DefaultCustomizationSections.java
+++ b/src/com/android/customization/module/DefaultCustomizationSections.java
@@ -1,5 +1,6 @@
 package com.android.customization.module;
 
+import android.app.WallpaperManager;
 import android.os.Bundle;
 
 import androidx.annotation.Nullable;
@@ -23,6 +24,7 @@
 import com.android.customization.picker.notifications.ui.section.NotificationSectionController;
 import com.android.customization.picker.notifications.ui.viewmodel.NotificationSectionViewModel;
 import com.android.customization.picker.preview.ui.section.PreviewWithClockCarouselSectionController;
+import com.android.customization.picker.preview.ui.section.PreviewWithThemeSectionController;
 import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor;
 import com.android.customization.picker.quickaffordance.ui.section.KeyguardQuickAffordanceSectionController;
 import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel;
@@ -38,9 +40,8 @@
 import com.android.wallpaper.module.CustomizationSections;
 import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor;
 import com.android.wallpaper.picker.customization.ui.section.ConnectedSectionController;
-import com.android.wallpaper.picker.customization.ui.section.ScreenPreviewSectionController;
 import com.android.wallpaper.picker.customization.ui.section.WallpaperQuickSwitchSectionController;
-import com.android.wallpaper.picker.customization.ui.viewmodel.WallpaperQuickSwitchViewModel;
+import com.android.wallpaper.picker.customization.ui.viewmodel.CustomizationPickerViewModel;
 import com.android.wallpaper.util.DisplayUtils;
 
 import java.util.ArrayList;
@@ -55,7 +56,7 @@
             mKeyguardQuickAffordancePickerViewModelFactory;
     private final NotificationSectionViewModel.Factory mNotificationSectionViewModelFactory;
     private final BaseFlags mFlags;
-    private final ClockCarouselViewModel mClockCarouselViewModel;
+    private final ClockCarouselViewModel.Factory mClockCarouselViewModelFactory;
     private final ClockViewFactory mClockViewFactory;
     private final DarkModeSnapshotRestorer mDarkModeSnapshotRestorer;
     private final ThemedIconSnapshotRestorer mThemedIconSnapshotRestorer;
@@ -68,7 +69,7 @@
                     keyguardQuickAffordancePickerViewModelFactory,
             NotificationSectionViewModel.Factory notificationSectionViewModelFactory,
             BaseFlags flags,
-            ClockCarouselViewModel clockCarouselViewModel,
+            ClockCarouselViewModel.Factory clockCarouselViewModelFactory,
             ClockViewFactory clockViewFactory,
             DarkModeSnapshotRestorer darkModeSnapshotRestorer,
             ThemedIconSnapshotRestorer themedIconSnapshotRestorer,
@@ -79,7 +80,7 @@
                 keyguardQuickAffordancePickerViewModelFactory;
         mNotificationSectionViewModelFactory = notificationSectionViewModelFactory;
         mFlags = flags;
-        mClockCarouselViewModel = clockCarouselViewModel;
+        mClockCarouselViewModelFactory = clockCarouselViewModelFactory;
         mClockViewFactory = clockViewFactory;
         mDarkModeSnapshotRestorer = darkModeSnapshotRestorer;
         mThemedIconSnapshotRestorer = themedIconSnapshotRestorer;
@@ -98,8 +99,10 @@
             @Nullable Bundle savedInstanceState,
             CurrentWallpaperInfoFactory wallpaperInfoFactory,
             DisplayUtils displayUtils,
-            WallpaperQuickSwitchViewModel wallpaperQuickSwitchViewModel,
-            WallpaperInteractor wallpaperInteractor) {
+            CustomizationPickerViewModel customizationPickerViewModel,
+            WallpaperInteractor wallpaperInteractor,
+            WallpaperManager wallpaperManager,
+            boolean isTwoPaneAndSmallWidth) {
         List<CustomizationSectionController<?>> sectionControllers = new ArrayList<>();
 
         // Wallpaper section.
@@ -112,19 +115,26 @@
                         wallpaperInfoFactory,
                         wallpaperColorsViewModel,
                         displayUtils,
-                        mClockCarouselViewModel,
+                        mClockCarouselViewModelFactory,
                         mClockViewFactory,
+                        wallpaperPreviewNavigator,
                         sectionNavigationController,
-                        wallpaperInteractor)
-                        : new ScreenPreviewSectionController(
+                        wallpaperInteractor,
+                        mThemedIconInteractor,
+                        wallpaperManager,
+                        isTwoPaneAndSmallWidth)
+                        : new PreviewWithThemeSectionController(
                                 activity,
                                 lifecycleOwner,
                                 screen,
                                 wallpaperInfoFactory,
                                 wallpaperColorsViewModel,
                                 displayUtils,
-                                sectionNavigationController,
-                                wallpaperInteractor));
+                                wallpaperPreviewNavigator,
+                                wallpaperInteractor,
+                                mThemedIconInteractor,
+                                wallpaperManager,
+                                isTwoPaneAndSmallWidth));
 
         sectionControllers.add(
                 new ConnectedSectionController(
@@ -138,10 +148,11 @@
                                 lifecycleOwner),
                         // Wallpaper quick switch section.
                         new WallpaperQuickSwitchSectionController(
-                                screen,
-                                wallpaperQuickSwitchViewModel,
+                                customizationPickerViewModel.getWallpaperQuickSwitchViewModel(
+                                        screen),
                                 lifecycleOwner,
-                                sectionNavigationController),
+                                sectionNavigationController,
+                                savedInstanceState == null),
                         /* reverseOrderWhenHorizontal= */ true));
 
         switch (screen) {
diff --git a/src/com/android/customization/module/StatsLogUserEventLogger.java b/src/com/android/customization/module/StatsLogUserEventLogger.java
index 9645454..32e0599 100644
--- a/src/com/android/customization/module/StatsLogUserEventLogger.java
+++ b/src/com/android/customization/module/StatsLogUserEventLogger.java
@@ -44,7 +44,6 @@
 
 import androidx.annotation.Nullable;
 
-import com.android.customization.model.clock.Clockface;
 import com.android.customization.model.color.ColorOption;
 import com.android.customization.model.grid.GridOption;
 import com.android.customization.model.theme.ThemeBundle;
@@ -237,22 +236,6 @@
     }
 
     @Override
-    public void logClockSelected(Clockface clock) {
-        new SysUiStatsLogger()
-                .setAction(StyleEnums.PICKER_SELECT)
-                .setClockPackageHash(Objects.hashCode(clock.getId()))
-                .log();
-    }
-
-    @Override
-    public void logClockApplied(Clockface clock) {
-        new SysUiStatsLogger()
-                .setAction(StyleEnums.PICKER_APPLIED)
-                .setClockPackageHash(Objects.hashCode(clock.getId()))
-                .log();
-    }
-
-    @Override
     public void logGridSelected(GridOption grid) {
         new SysUiStatsLogger()
                 .setAction(StyleEnums.PICKER_SELECT)
diff --git a/src/com/android/customization/module/ThemePickerInjector.kt b/src/com/android/customization/module/ThemePickerInjector.kt
index eb20037..cceb896 100644
--- a/src/com/android/customization/module/ThemePickerInjector.kt
+++ b/src/com/android/customization/module/ThemePickerInjector.kt
@@ -15,8 +15,8 @@
  */
 package com.android.customization.module
 
-import android.app.Activity
 import android.app.UiModeManager
+import android.app.WallpaperManager
 import android.content.Context
 import android.content.Intent
 import android.net.Uri
@@ -25,6 +25,8 @@
 import androidx.activity.ComponentActivity
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentActivity
+import androidx.lifecycle.DefaultLifecycleObserver
+import androidx.lifecycle.LifecycleOwner
 import androidx.lifecycle.ViewModelProvider
 import com.android.customization.model.color.ColorCustomizationManager
 import com.android.customization.model.color.ColorOptionsProvider
@@ -44,10 +46,13 @@
 import com.android.customization.picker.clock.data.repository.ClockPickerRepositoryImpl
 import com.android.customization.picker.clock.data.repository.ClockRegistryProvider
 import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor
+import com.android.customization.picker.clock.domain.interactor.ClockPickerSnapshotRestorer
 import com.android.customization.picker.clock.ui.view.ClockViewFactory
 import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewModel
 import com.android.customization.picker.clock.ui.viewmodel.ClockSectionViewModel
 import com.android.customization.picker.clock.ui.viewmodel.ClockSettingsViewModel
+import com.android.customization.picker.clock.utils.ClockDescriptionUtils
+import com.android.customization.picker.clock.utils.ThemePickerClockDescriptionUtils
 import com.android.customization.picker.color.data.repository.ColorPickerRepositoryImpl
 import com.android.customization.picker.color.domain.interactor.ColorPickerInteractor
 import com.android.customization.picker.color.domain.interactor.ColorPickerSnapshotRestorer
@@ -79,11 +84,9 @@
 import com.android.wallpaper.picker.customization.data.repository.WallpaperRepository
 import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor
 import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer
-import kotlinx.coroutines.DelicateCoroutinesApi
+import com.android.wallpaper.util.ScreenSizeCalculator
 import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.GlobalScope
 
-@OptIn(DelicateCoroutinesApi::class)
 open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInjector {
     private var customizationSections: CustomizationSections? = null
     private var userEventLogger: UserEventLogger? = null
@@ -99,11 +102,11 @@
     private var keyguardQuickAffordanceSnapshotRestorer: KeyguardQuickAffordanceSnapshotRestorer? =
         null
     private var notificationsSnapshotRestorer: NotificationsSnapshotRestorer? = null
-    private var clockRegistry: ClockRegistry? = null
     private var clockPickerInteractor: ClockPickerInteractor? = null
     private var clockSectionViewModel: ClockSectionViewModel? = null
-    private var clockCarouselViewModel: ClockCarouselViewModel? = null
-    private var clockViewFactory: ClockViewFactory? = null
+    private var clockCarouselViewModelFactory: ClockCarouselViewModel.Factory? = null
+    private var clockViewFactories: MutableMap<Int, ClockViewFactory> = HashMap()
+    private var clockPickerSnapshotRestorer: ClockPickerSnapshotRestorer? = null
     private var notificationsInteractor: NotificationsInteractor? = null
     private var notificationSectionViewModelFactory: NotificationSectionViewModel.Factory? = null
     private var colorPickerInteractor: ColorPickerInteractor? = null
@@ -114,9 +117,11 @@
     private var themedIconSnapshotRestorer: ThemedIconSnapshotRestorer? = null
     private var themedIconInteractor: ThemedIconInteractor? = null
     private var clockSettingsViewModelFactory: ClockSettingsViewModel.Factory? = null
+    private var clockDescriptionUtils: ClockDescriptionUtils? = null
     private var gridInteractor: GridInteractor? = null
     private var gridSnapshotRestorer: GridSnapshotRestorer? = null
     private var gridScreenViewModelFactory: GridScreenViewModel.Factory? = null
+    private var clockRegistryProvider: ClockRegistryProvider? = null
 
     override fun getCustomizationSections(activity: ComponentActivity): CustomizationSections {
         return customizationSections
@@ -131,7 +136,9 @@
                         interactor = getNotificationsInteractor(activity),
                     ),
                     getFlags(),
-                    getClockCarouselViewModel(activity),
+                    getClockCarouselViewModelFactory(
+                        getClockPickerInteractor(activity.applicationContext),
+                    ),
                     getClockViewFactory(activity),
                     getDarkModeSnapshotRestorer(activity),
                     getThemedIconSnapshotRestorer(activity),
@@ -177,7 +184,7 @@
     @Synchronized
     override fun getUserEventLogger(context: Context): ThemesUserEventLogger {
         return if (userEventLogger != null) userEventLogger as ThemesUserEventLogger
-        else StatsLogUserEventLogger(context).also { userEventLogger = it }
+        else StatsLogUserEventLogger(context.applicationContext).also { userEventLogger = it }
     }
 
     @Synchronized
@@ -190,17 +197,23 @@
         return fragmentFactory ?: ThemePickerFragmentFactory().also { fragmentFactory }
     }
 
-    override fun getSnapshotRestorers(context: Context): Map<Int, SnapshotRestorer> {
+    override fun getSnapshotRestorers(
+        context: Context,
+    ): Map<Int, SnapshotRestorer> {
         return super<WallpaperPicker2Injector>.getSnapshotRestorers(context).toMutableMap().apply {
             this[KEY_QUICK_AFFORDANCE_SNAPSHOT_RESTORER] =
                 getKeyguardQuickAffordanceSnapshotRestorer(context)
-            this[KEY_WALLPAPER_SNAPSHOT_RESTORER] = getWallpaperSnapshotRestorer(context)
+            // TODO(b/285047815): Enable after adding wallpaper id for default static wallpaper
+            if (getFlags().isWallpaperRestorerEnabled()) {
+                this[KEY_WALLPAPER_SNAPSHOT_RESTORER] = getWallpaperSnapshotRestorer(context)
+            }
             this[KEY_NOTIFICATIONS_SNAPSHOT_RESTORER] = getNotificationsSnapshotRestorer(context)
             this[KEY_DARK_MODE_SNAPSHOT_RESTORER] = getDarkModeSnapshotRestorer(context)
             this[KEY_THEMED_ICON_SNAPSHOT_RESTORER] = getThemedIconSnapshotRestorer(context)
             this[KEY_APP_GRID_SNAPSHOT_RESTORER] = getGridSnapshotRestorer(context)
             this[KEY_COLOR_PICKER_SNAPSHOT_RESTORER] =
                 getColorPickerSnapshotRestorer(context, getWallpaperColorsViewModel())
+            this[KEY_CLOCKS_SNAPSHOT_RESTORER] = getClockPickerSnapshotRestorer(context)
         }
     }
 
@@ -218,17 +231,24 @@
     }
 
     override fun getWallpaperInteractor(context: Context): WallpaperInteractor {
+        val appContext = context.applicationContext
         return wallpaperInteractor
             ?: WallpaperInteractor(
                     repository =
                         WallpaperRepository(
-                            scope = GlobalScope,
-                            client = WallpaperClientImpl(context = context),
+                            scope = getApplicationCoroutineScope(),
+                            client =
+                                WallpaperClientImpl(
+                                    context = appContext,
+                                    infoFactory = getCurrentWallpaperInfoFactory(appContext),
+                                    wallpaperManager = WallpaperManager.getInstance(appContext)
+                                ),
+                            wallpaperPreferences = getPreferences(context = appContext),
                             backgroundDispatcher = Dispatchers.IO,
                         ),
                     shouldHandleReload = {
                         TextUtils.equals(
-                            getColorCustomizationManager(context).currentColorSource,
+                            getColorCustomizationManager(appContext).currentColorSource,
                             ColorOptionsProvider.COLOR_SOURCE_PRESET
                         )
                     }
@@ -250,42 +270,32 @@
     ): KeyguardQuickAffordancePickerViewModel.Factory {
         return keyguardQuickAffordancePickerViewModelFactory
             ?: KeyguardQuickAffordancePickerViewModel.Factory(
-                    context,
+                    context.applicationContext,
                     getKeyguardQuickAffordancePickerInteractor(context),
+                    getWallpaperInteractor(context),
                     getCurrentWallpaperInfoFactory(context),
-                ) { intent ->
-                    context.startActivity(intent)
-                }
-                .also { keyguardQuickAffordancePickerViewModelFactory = it }
-    }
-
-    fun getNotificationSectionViewModelFactory(
-        context: Context,
-    ): NotificationSectionViewModel.Factory {
-        return notificationSectionViewModelFactory
-            ?: NotificationSectionViewModel.Factory(
-                    interactor = getNotificationsInteractor(context),
                 )
-                .also { notificationSectionViewModelFactory = it }
+                .also { keyguardQuickAffordancePickerViewModelFactory = it }
     }
 
     private fun getKeyguardQuickAffordancePickerInteractorImpl(
         context: Context
     ): KeyguardQuickAffordancePickerInteractor {
         val client = getKeyguardQuickAffordancePickerProviderClient(context)
+        val appContext = context.applicationContext
         return KeyguardQuickAffordancePickerInteractor(
             KeyguardQuickAffordancePickerRepository(client, Dispatchers.IO),
             client
         ) {
-            getKeyguardQuickAffordanceSnapshotRestorer(context)
+            getKeyguardQuickAffordanceSnapshotRestorer(appContext)
         }
     }
 
-    protected fun getKeyguardQuickAffordancePickerProviderClient(
+    private fun getKeyguardQuickAffordancePickerProviderClient(
         context: Context
     ): CustomizationProviderClient {
         return customizationProviderClient
-            ?: CustomizationProviderClientImpl(context, Dispatchers.IO).also {
+            ?: CustomizationProviderClientImpl(context.applicationContext, Dispatchers.IO).also {
                 customizationProviderClient = it
             }
     }
@@ -301,6 +311,33 @@
                 .also { keyguardQuickAffordanceSnapshotRestorer = it }
     }
 
+    fun getNotificationSectionViewModelFactory(
+        context: Context,
+    ): NotificationSectionViewModel.Factory {
+        return notificationSectionViewModelFactory
+            ?: NotificationSectionViewModel.Factory(
+                    interactor = getNotificationsInteractor(context),
+                )
+                .also { notificationSectionViewModelFactory = it }
+    }
+
+    private fun getNotificationsInteractor(
+        context: Context,
+    ): NotificationsInteractor {
+        val appContext = context.applicationContext
+        return notificationsInteractor
+            ?: NotificationsInteractor(
+                    repository =
+                        NotificationsRepository(
+                            scope = getApplicationCoroutineScope(),
+                            backgroundDispatcher = Dispatchers.IO,
+                            secureSettingsRepository = getSecureSettingsRepository(context),
+                        ),
+                    snapshotRestorer = { getNotificationsSnapshotRestorer(appContext) },
+                )
+                .also { notificationsInteractor = it }
+    }
+
     private fun getNotificationsSnapshotRestorer(context: Context): NotificationsSnapshotRestorer {
         return notificationsSnapshotRestorer
             ?: NotificationsSnapshotRestorer(
@@ -313,79 +350,102 @@
     }
 
     override fun getClockRegistry(context: Context): ClockRegistry {
-        return clockRegistry
-            ?: ClockRegistryProvider(
-                    context = context,
-                    coroutineScope = GlobalScope,
-                    mainDispatcher = Dispatchers.Main,
-                    backgroundDispatcher = Dispatchers.IO,
-                )
-                .get()
-                .also { clockRegistry = it }
+        return (clockRegistryProvider
+                ?: ClockRegistryProvider(
+                        context = context.applicationContext,
+                        coroutineScope = getApplicationCoroutineScope(),
+                        mainDispatcher = Dispatchers.Main,
+                        backgroundDispatcher = Dispatchers.IO,
+                    )
+                    .also { clockRegistryProvider = it })
+            .get()
     }
 
     override fun getClockPickerInteractor(
         context: Context,
     ): ClockPickerInteractor {
+        val appContext = context.applicationContext
         return clockPickerInteractor
             ?: ClockPickerInteractor(
-                    ClockPickerRepositoryImpl(
-                        secureSettingsRepository = getSecureSettingsRepository(context),
-                        registry = getClockRegistry(context),
-                        scope = GlobalScope,
-                    ),
+                    repository =
+                        ClockPickerRepositoryImpl(
+                            secureSettingsRepository = getSecureSettingsRepository(appContext),
+                            registry = getClockRegistry(appContext),
+                            scope = getApplicationCoroutineScope(),
+                            mainDispatcher = Dispatchers.Main,
+                        ),
+                    snapshotRestorer = { getClockPickerSnapshotRestorer(appContext) },
                 )
                 .also { clockPickerInteractor = it }
     }
 
-    override fun getClockSectionViewModel(context: Context): ClockSectionViewModel {
-        return clockSectionViewModel
-            ?: ClockSectionViewModel(context, getClockPickerInteractor(context)).also {
-                clockSectionViewModel = it
-            }
-    }
-
-    override fun getClockCarouselViewModel(context: Context): ClockCarouselViewModel {
-        return clockCarouselViewModel
-            ?: ClockCarouselViewModel(getClockPickerInteractor(context)).also {
-                clockCarouselViewModel = it
-            }
-    }
-
-    override fun getClockViewFactory(activity: Activity): ClockViewFactory {
-        return clockViewFactory
-            ?: ClockViewFactory(activity, getClockRegistry(activity)).also { clockViewFactory = it }
-    }
-
-    protected fun getNotificationsInteractor(
+    override fun getClockSectionViewModel(
         context: Context,
-    ): NotificationsInteractor {
-        return notificationsInteractor
-            ?: NotificationsInteractor(
-                    repository =
-                        NotificationsRepository(
-                            scope = GlobalScope,
-                            backgroundDispatcher = Dispatchers.IO,
-                            secureSettingsRepository = getSecureSettingsRepository(context),
-                        ),
-                    snapshotRestorer = { getNotificationsSnapshotRestorer(context) },
+    ): ClockSectionViewModel {
+        return clockSectionViewModel
+            ?: ClockSectionViewModel(
+                    context.applicationContext,
+                    getClockPickerInteractor(context.applicationContext)
                 )
-                .also { notificationsInteractor = it }
+                .also { clockSectionViewModel = it }
+    }
+
+    override fun getClockCarouselViewModelFactory(
+        interactor: ClockPickerInteractor,
+    ): ClockCarouselViewModel.Factory {
+        return clockCarouselViewModelFactory
+            ?: ClockCarouselViewModel.Factory(interactor, Dispatchers.IO).also {
+                clockCarouselViewModelFactory = it
+            }
+    }
+
+    override fun getClockViewFactory(activity: ComponentActivity): ClockViewFactory {
+        val activityHashCode = activity.hashCode()
+        return clockViewFactories[activityHashCode]
+            ?: ClockViewFactory(
+                    activity.applicationContext,
+                    ScreenSizeCalculator.getInstance()
+                        .getScreenSize(activity.windowManager.defaultDisplay),
+                    WallpaperManager.getInstance(activity.applicationContext),
+                    getClockRegistry(activity.applicationContext),
+                )
+                .also {
+                    clockViewFactories[activityHashCode] = it
+                    activity.lifecycle.addObserver(
+                        object : DefaultLifecycleObserver {
+                            override fun onDestroy(owner: LifecycleOwner) {
+                                super.onDestroy(owner)
+                                clockViewFactories[activityHashCode]?.onDestroy()
+                                clockViewFactories.remove(activityHashCode)
+                            }
+                        }
+                    )
+                }
+    }
+
+    private fun getClockPickerSnapshotRestorer(
+        context: Context,
+    ): ClockPickerSnapshotRestorer {
+        return clockPickerSnapshotRestorer
+            ?: ClockPickerSnapshotRestorer(getClockPickerInteractor(context)).also {
+                clockPickerSnapshotRestorer = it
+            }
     }
 
     override fun getColorPickerInteractor(
         context: Context,
         wallpaperColorsViewModel: WallpaperColorsViewModel,
     ): ColorPickerInteractor {
+        val appContext = context.applicationContext
         return colorPickerInteractor
             ?: ColorPickerInteractor(
                     repository =
                         ColorPickerRepositoryImpl(
                             wallpaperColorsViewModel,
-                            getColorCustomizationManager(context)
+                            getColorCustomizationManager(appContext)
                         ),
                     snapshotRestorer = {
-                        getColorPickerSnapshotRestorer(context, wallpaperColorsViewModel)
+                        getColorPickerSnapshotRestorer(appContext, wallpaperColorsViewModel)
                     }
                 )
                 .also { colorPickerInteractor = it }
@@ -397,7 +457,7 @@
     ): ColorPickerViewModel.Factory {
         return colorPickerViewModelFactory
             ?: ColorPickerViewModel.Factory(
-                    context,
+                    context.applicationContext,
                     getColorPickerInteractor(context, wallpaperColorsViewModel),
                 )
                 .also { colorPickerViewModelFactory = it }
@@ -424,10 +484,11 @@
     fun getDarkModeSnapshotRestorer(
         context: Context,
     ): DarkModeSnapshotRestorer {
+        val appContext = context.applicationContext
         return darkModeSnapshotRestorer
             ?: DarkModeSnapshotRestorer(
-                    context = context,
-                    manager = context.getSystemService(Context.UI_MODE_SERVICE) as UiModeManager,
+                    context = appContext,
+                    manager = appContext.getSystemService(Context.UI_MODE_SERVICE) as UiModeManager,
                     backgroundDispatcher = Dispatchers.IO,
                 )
                 .also { darkModeSnapshotRestorer = it }
@@ -459,19 +520,28 @@
     override fun getClockSettingsViewModelFactory(
         context: Context,
         wallpaperColorsViewModel: WallpaperColorsViewModel,
+        clockViewFactory: ClockViewFactory,
     ): ClockSettingsViewModel.Factory {
         return clockSettingsViewModelFactory
             ?: ClockSettingsViewModel.Factory(
-                    context,
+                    context.applicationContext,
                     getClockPickerInteractor(context),
                     getColorPickerInteractor(
                         context,
                         wallpaperColorsViewModel,
                     ),
-                )
+                ) { clockId ->
+                    clockId?.let { clockViewFactory.getController(clockId).config.isReactiveToTone }
+                        ?: false
+                }
                 .also { clockSettingsViewModelFactory = it }
     }
 
+    override fun getClockDescriptionUtils(): ClockDescriptionUtils {
+        return clockDescriptionUtils
+            ?: ThemePickerClockDescriptionUtils().also { clockDescriptionUtils = it }
+    }
+
     fun getGridScreenViewModelFactory(
         context: Context,
     ): ViewModelProvider.Factory {
@@ -486,16 +556,17 @@
     private fun getGridInteractor(
         context: Context,
     ): GridInteractor {
+        val appContext = context.applicationContext
         return gridInteractor
             ?: GridInteractor(
-                    applicationScope = GlobalScope,
+                    applicationScope = getApplicationCoroutineScope(),
                     repository =
                         GridRepositoryImpl(
-                            applicationScope = GlobalScope,
+                            applicationScope = getApplicationCoroutineScope(),
                             manager = GridOptionsManager.getInstance(context),
                             backgroundDispatcher = Dispatchers.IO,
                         ),
-                    snapshotRestorer = { getGridSnapshotRestorer(context) },
+                    snapshotRestorer = { getGridSnapshotRestorer(appContext) },
                 )
                 .also { gridInteractor = it }
     }
@@ -526,6 +597,7 @@
         private val KEY_APP_GRID_SNAPSHOT_RESTORER = KEY_THEMED_ICON_SNAPSHOT_RESTORER + 1
         @JvmStatic
         private val KEY_COLOR_PICKER_SNAPSHOT_RESTORER = KEY_APP_GRID_SNAPSHOT_RESTORER + 1
+        @JvmStatic private val KEY_CLOCKS_SNAPSHOT_RESTORER = KEY_COLOR_PICKER_SNAPSHOT_RESTORER + 1
 
         /**
          * When this injector is overridden, this is the minimal value that should be used by
@@ -533,6 +605,6 @@
          *
          * It should always be greater than the biggest restorer key.
          */
-        @JvmStatic protected val MIN_SNAPSHOT_RESTORER_KEY = KEY_COLOR_PICKER_SNAPSHOT_RESTORER + 1
+        @JvmStatic protected val MIN_SNAPSHOT_RESTORER_KEY = KEY_CLOCKS_SNAPSHOT_RESTORER + 1
     }
 }
diff --git a/src/com/android/customization/module/ThemesUserEventLogger.java b/src/com/android/customization/module/ThemesUserEventLogger.java
index 3e5bb54..b1a87b9 100644
--- a/src/com/android/customization/module/ThemesUserEventLogger.java
+++ b/src/com/android/customization/module/ThemesUserEventLogger.java
@@ -15,7 +15,6 @@
  */
 package com.android.customization.module;
 
-import com.android.customization.model.clock.Clockface;
 import com.android.customization.model.color.ColorOption;
 import com.android.customization.model.grid.GridOption;
 import com.android.customization.model.theme.ThemeBundle;
@@ -38,10 +37,6 @@
      */
     void logColorApplied(int action, ColorOption colorOption);
 
-    void logClockSelected(Clockface clock);
-
-    void logClockApplied(Clockface clock);
-
     void logGridSelected(GridOption grid);
 
     void logGridApplied(GridOption grid);
diff --git a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepository.kt b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepository.kt
index ae66ce3..57f77b0 100644
--- a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepository.kt
+++ b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepository.kt
@@ -33,7 +33,7 @@
 
     val selectedClockSize: Flow<ClockSize>
 
-    fun setSelectedClock(clockId: String)
+    suspend fun setSelectedClock(clockId: String)
 
     /**
      * Set clock color to the settings.
@@ -42,7 +42,7 @@
      * @param colorToneProgress color tone from 0 to 100 to apply to the selected color
      * @param seedColor the actual clock color after blending the selected color and color tone
      */
-    fun setClockColor(
+    suspend fun setClockColor(
         selectedColorId: String?,
         @IntRange(from = 0, to = 100) colorToneProgress: Int,
         @ColorInt seedColor: Int?,
diff --git a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt
index 880a00b..be6c6cb 100644
--- a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt
+++ b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt
@@ -24,6 +24,7 @@
 import com.android.systemui.plugins.ClockMetadata
 import com.android.systemui.shared.clocks.ClockRegistry
 import com.android.wallpaper.settings.data.repository.SecureSettingsRepository
+import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.channels.awaitClose
@@ -32,6 +33,7 @@
 import kotlinx.coroutines.flow.SharedFlow
 import kotlinx.coroutines.flow.SharingStarted
 import kotlinx.coroutines.flow.callbackFlow
+import kotlinx.coroutines.flow.flowOn
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.mapLatest
 import kotlinx.coroutines.flow.mapNotNull
@@ -43,6 +45,7 @@
     private val secureSettingsRepository: SecureSettingsRepository,
     private val registry: ClockRegistry,
     scope: CoroutineScope,
+    mainDispatcher: CoroutineDispatcher,
 ) : ClockPickerRepository {
 
     @OptIn(ExperimentalCoroutinesApi::class)
@@ -67,6 +70,7 @@
                 send()
                 awaitClose { registry.unregisterClockChangeListener(listener) }
             }
+            .flowOn(mainDispatcher)
             .mapLatest { allClocks ->
                 // Loading list of clock plugins can cause many consecutive calls of
                 // onAvailableClocksChanged(). We only care about the final fully-initiated clock
@@ -108,9 +112,10 @@
                 send()
                 awaitClose { registry.unregisterClockChangeListener(listener) }
             }
+            .flowOn(mainDispatcher)
             .mapNotNull { it }
 
-    override fun setSelectedClock(clockId: String) {
+    override suspend fun setSelectedClock(clockId: String) {
         registry.mutateSetting { oldSettings ->
             val newSettings = oldSettings.copy(clockId = clockId)
             newSettings.metadata = oldSettings.metadata
@@ -118,7 +123,7 @@
         }
     }
 
-    override fun setClockColor(
+    override suspend fun setClockColor(
         selectedColorId: String?,
         @IntRange(from = 0, to = 100) colorToneProgress: Int,
         @ColorInt seedColor: Int?,
@@ -137,6 +142,7 @@
         secureSettingsRepository
             .intSetting(
                 name = Settings.Secure.LOCKSCREEN_USE_DOUBLE_LINE_CLOCK,
+                defaultValue = DEFAULT_CLOCK_SIZE,
             )
             .map { setting -> setting == 1 }
             .map { isDynamic -> if (isDynamic) ClockSize.DYNAMIC else ClockSize.SMALL }
@@ -189,5 +195,8 @@
 
         // The color tone to apply to the selected color
         private const val KEY_METADATA_COLOR_TONE_PROGRESS = "metadataColorToneProgress"
+
+        // The default clock size is 1, which means dynamic
+        private const val DEFAULT_CLOCK_SIZE = 1
     }
 }
diff --git a/src/com/android/customization/picker/clock/data/repository/ClockRegistryProvider.kt b/src/com/android/customization/picker/clock/data/repository/ClockRegistryProvider.kt
index bfe87c9..652ffdd 100644
--- a/src/com/android/customization/picker/clock/data/repository/ClockRegistryProvider.kt
+++ b/src/com/android/customization/picker/clock/data/repository/ClockRegistryProvider.kt
@@ -43,25 +43,28 @@
     private val mainDispatcher: CoroutineDispatcher,
     private val backgroundDispatcher: CoroutineDispatcher,
 ) {
-    private val pluginManager: PluginManager by lazy { createPluginManager(context) }
     private val clockRegistry: ClockRegistry by lazy {
         ClockRegistry(
-                context,
-                pluginManager,
-                coroutineScope,
-                mainDispatcher,
-                backgroundDispatcher,
-                isEnabled = true,
-                handleAllUsers = false,
-                DefaultClockProvider(context, LayoutInflater.from(context), context.resources)
-            )
-            .apply { registerListeners() }
+            context,
+            createPluginManager(context),
+            coroutineScope,
+            mainDispatcher,
+            backgroundDispatcher,
+            isEnabled = true,
+            handleAllUsers = false,
+            DefaultClockProvider(context, LayoutInflater.from(context), context.resources),
+            keepAllLoaded = true,
+            subTag = "Picker",
+        )
     }
 
-    fun get(): ClockRegistry {
-        return clockRegistry
+    init {
+        // Listeners in ClockRegistry get cleaned up when app ended
+        clockRegistry.registerListeners()
     }
 
+    fun get() = clockRegistry
+
     private fun createPluginManager(context: Context): PluginManager {
         val privilegedPlugins = listOf<String>()
         val isDebugDevice = true
@@ -70,7 +73,7 @@
             PluginInstance.Factory(
                 this::class.java.classLoader,
                 PluginInstance.InstanceFactory<Plugin>(),
-                PluginInstance.VersionChecker(),
+                PluginInstance.VersionCheckerImpl(),
                 privilegedPlugins,
                 isDebugDevice,
             )
diff --git a/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractor.kt b/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractor.kt
index 6f3657a..30887e5 100644
--- a/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractor.kt
+++ b/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractor.kt
@@ -22,15 +22,21 @@
 import com.android.customization.picker.clock.data.repository.ClockPickerRepository
 import com.android.customization.picker.clock.shared.ClockSize
 import com.android.customization.picker.clock.shared.model.ClockMetadataModel
+import com.android.customization.picker.clock.shared.model.ClockSnapshotModel
+import javax.inject.Provider
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.firstOrNull
 import kotlinx.coroutines.flow.map
 
 /**
  * Interactor for accessing application clock settings, as well as selecting and configuring custom
  * clocks.
  */
-class ClockPickerInteractor(private val repository: ClockPickerRepository) {
+class ClockPickerInteractor(
+    private val repository: ClockPickerRepository,
+    private val snapshotRestorer: Provider<ClockPickerSnapshotRestorer>,
+) {
 
     val allClocks: Flow<List<ClockMetadataModel>> = repository.allClocks
 
@@ -47,19 +53,69 @@
 
     val selectedClockSize: Flow<ClockSize> = repository.selectedClockSize
 
-    fun setSelectedClock(clockId: String) {
-        repository.setSelectedClock(clockId)
+    suspend fun setSelectedClock(clockId: String) {
+        // Use the [clockId] to override saved clock id, since it might not be updated in time
+        setClockOption(ClockSnapshotModel(clockId = clockId))
     }
 
-    fun setClockColor(
+    suspend fun setClockColor(
         selectedColorId: String?,
         @IntRange(from = 0, to = 100) colorToneProgress: Int,
         @ColorInt seedColor: Int?,
     ) {
-        repository.setClockColor(selectedColorId, colorToneProgress, seedColor)
+        // Use the color to override saved color, since it might not be updated in time
+        setClockOption(
+            ClockSnapshotModel(
+                selectedColorId = selectedColorId,
+                colorToneProgress = colorToneProgress,
+                seedColor = seedColor,
+            )
+        )
     }
 
     suspend fun setClockSize(size: ClockSize) {
-        repository.setClockSize(size)
+        // Use the [ClockSize] to override saved clock size, since it might not be updated in time
+        setClockOption(ClockSnapshotModel(clockSize = size))
+    }
+
+    suspend fun setClockOption(clockSnapshotModel: ClockSnapshotModel) {
+        // [ClockCarouselViewModel] is monitoring the [ClockPickerInteractor.setSelectedClock] job,
+        // so it needs to finish last.
+        storeCurrentClockOption(clockSnapshotModel)
+
+        clockSnapshotModel.clockSize?.let { repository.setClockSize(it) }
+        clockSnapshotModel.colorToneProgress?.let {
+            repository.setClockColor(
+                selectedColorId = clockSnapshotModel.selectedColorId,
+                colorToneProgress = clockSnapshotModel.colorToneProgress,
+                seedColor = clockSnapshotModel.seedColor
+            )
+        }
+        clockSnapshotModel.clockId?.let { repository.setSelectedClock(it) }
+    }
+
+    /**
+     * Gets the [ClockSnapshotModel] from the storage and override with [latestOption].
+     *
+     * The storage might be in the middle of a write, and not reflecting the user's options, always
+     * pass in a [ClockSnapshotModel] if we know it's the latest option from a user's point of view.
+     *
+     * [selectedColorId] and [seedColor] have null state collide with nullable type, but we know
+     * they are presented whenever there's a [colorToneProgress].
+     */
+    suspend fun getCurrentClockToRestore(latestOption: ClockSnapshotModel? = null) =
+        ClockSnapshotModel(
+            clockId = latestOption?.clockId ?: selectedClockId.firstOrNull(),
+            clockSize = latestOption?.clockSize ?: selectedClockSize.firstOrNull(),
+            colorToneProgress = latestOption?.colorToneProgress ?: colorToneProgress.firstOrNull(),
+            selectedColorId = latestOption?.colorToneProgress?.let { latestOption.selectedColorId }
+                    ?: selectedColorId.firstOrNull(),
+            seedColor = latestOption?.colorToneProgress?.let { latestOption.seedColor }
+                    ?: seedColor.firstOrNull(),
+        )
+
+    private suspend fun storeCurrentClockOption(clockSnapshotModel: ClockSnapshotModel) {
+        val option = getCurrentClockToRestore(clockSnapshotModel)
+        snapshotRestorer.get().storeSnapshot(option)
     }
 }
diff --git a/src/com/android/customization/picker/clock/domain/interactor/ClockPickerSnapshotRestorer.kt b/src/com/android/customization/picker/clock/domain/interactor/ClockPickerSnapshotRestorer.kt
new file mode 100644
index 0000000..ecaf10f
--- /dev/null
+++ b/src/com/android/customization/picker/clock/domain/interactor/ClockPickerSnapshotRestorer.kt
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2023 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.
+ *
+ */
+
+package com.android.customization.picker.clock.domain.interactor
+
+import android.text.TextUtils
+import android.util.Log
+import com.android.customization.picker.clock.shared.model.ClockSnapshotModel
+import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer
+import com.android.wallpaper.picker.undo.domain.interactor.SnapshotStore
+import com.android.wallpaper.picker.undo.shared.model.RestorableSnapshot
+
+/** Handles state restoration for clocks. */
+class ClockPickerSnapshotRestorer(private val interactor: ClockPickerInteractor) :
+    SnapshotRestorer {
+    private var snapshotStore: SnapshotStore = SnapshotStore.NOOP
+    private var originalOption: ClockSnapshotModel? = null
+
+    override suspend fun setUpSnapshotRestorer(
+        store: SnapshotStore,
+    ): RestorableSnapshot {
+        snapshotStore = store
+        originalOption = interactor.getCurrentClockToRestore()
+        return snapshot(originalOption)
+    }
+
+    override suspend fun restoreToSnapshot(snapshot: RestorableSnapshot) {
+        originalOption?.let { optionToRestore ->
+            if (
+                TextUtils.isEmpty(optionToRestore.clockId) ||
+                    optionToRestore.clockId != snapshot.args[KEY_CLOCK_ID] ||
+                    optionToRestore.clockSize?.toString() != snapshot.args[KEY_CLOCK_SIZE] ||
+                    optionToRestore.colorToneProgress?.toString() !=
+                        snapshot.args[KEY_COLOR_TONE_PROGRESS] ||
+                    optionToRestore.seedColor?.toString() != snapshot.args[KEY_SEED_COLOR] ||
+                    optionToRestore.selectedColorId != snapshot.args[KEY_COLOR_ID]
+            ) {
+                Log.wtf(
+                    TAG,
+                    """ Original clock option does not match snapshot option to restore to. The
+                        | current implementation doesn't support undo, only a reset back to the
+                        | original clock option."""
+                        .trimMargin(),
+                )
+            }
+
+            interactor.setClockOption(optionToRestore)
+        }
+    }
+
+    fun storeSnapshot(clockSnapshotModel: ClockSnapshotModel) {
+        snapshotStore.store(snapshot(clockSnapshotModel))
+    }
+
+    private fun snapshot(clockSnapshotModel: ClockSnapshotModel? = null): RestorableSnapshot {
+        val options =
+            if (clockSnapshotModel == null) emptyMap()
+            else
+                buildMap {
+                    clockSnapshotModel.clockId?.let { put(KEY_CLOCK_ID, it) }
+                    clockSnapshotModel.clockSize?.let { put(KEY_CLOCK_SIZE, it.toString()) }
+                    clockSnapshotModel.selectedColorId?.let { put(KEY_COLOR_ID, it) }
+                    clockSnapshotModel.colorToneProgress?.let {
+                        put(KEY_COLOR_TONE_PROGRESS, it.toString())
+                    }
+                    clockSnapshotModel.seedColor?.let { put(KEY_SEED_COLOR, it.toString()) }
+                }
+
+        return RestorableSnapshot(options)
+    }
+
+    companion object {
+        private const val TAG = "ClockPickerSnapshotRestorer"
+        private const val KEY_CLOCK_ID = "clock_id"
+        private const val KEY_CLOCK_SIZE = "clock_size"
+        private const val KEY_COLOR_ID = "color_id"
+        private const val KEY_COLOR_TONE_PROGRESS = "color_tone_progress"
+        private const val KEY_SEED_COLOR = "seed_color"
+    }
+}
diff --git a/src/com/android/customization/picker/clock/domain/interactor/ClocksSnapshotRestorer.kt b/src/com/android/customization/picker/clock/domain/interactor/ClocksSnapshotRestorer.kt
deleted file mode 100644
index 7bb3232..0000000
--- a/src/com/android/customization/picker/clock/domain/interactor/ClocksSnapshotRestorer.kt
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2023 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.
- *
- */
-
-package com.android.customization.picker.clock.domain.interactor
-
-import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer
-import com.android.wallpaper.picker.undo.domain.interactor.SnapshotStore
-import com.android.wallpaper.picker.undo.shared.model.RestorableSnapshot
-
-/** Handles state restoration for clocks. */
-class ClocksSnapshotRestorer : SnapshotRestorer {
-    override suspend fun setUpSnapshotRestorer(
-        store: SnapshotStore,
-    ): RestorableSnapshot {
-        // TODO(b/262924055): implement as part of the clock settings screen.
-        return RestorableSnapshot(mapOf())
-    }
-
-    override suspend fun restoreToSnapshot(snapshot: RestorableSnapshot) {
-        // TODO(b/262924055): implement as part of the clock settings screen.
-    }
-}
diff --git a/src/com/android/customization/picker/clock/shared/model/ClockSnapshotModel.kt b/src/com/android/customization/picker/clock/shared/model/ClockSnapshotModel.kt
new file mode 100644
index 0000000..942cc59
--- /dev/null
+++ b/src/com/android/customization/picker/clock/shared/model/ClockSnapshotModel.kt
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2023 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.
+ *
+ */
+
+package com.android.customization.picker.clock.shared.model
+
+import androidx.annotation.ColorInt
+import androidx.annotation.IntRange
+import com.android.customization.picker.clock.shared.ClockSize
+
+/** Models application state for a clock option in a picker experience. */
+data class ClockSnapshotModel(
+    val clockId: String? = null,
+    val clockSize: ClockSize? = null,
+    val selectedColorId: String? = null,
+    @IntRange(from = 0, to = 100) val colorToneProgress: Int? = null,
+    @ColorInt val seedColor: Int? = null,
+)
diff --git a/src/com/android/customization/picker/clock/ui/adapter/ClockSettingsTabAdapter.kt b/src/com/android/customization/picker/clock/ui/adapter/ClockSettingsTabAdapter.kt
index 746fdb3..981a8e8 100644
--- a/src/com/android/customization/picker/clock/ui/adapter/ClockSettingsTabAdapter.kt
+++ b/src/com/android/customization/picker/clock/ui/adapter/ClockSettingsTabAdapter.kt
@@ -54,7 +54,7 @@
         val item = items[position]
         holder.itemView.isSelected = item.isSelected
         holder.textView.text = item.name
-        holder.textView.setOnClickListener(
+        holder.itemView.setOnClickListener(
             if (item.onClicked != null) {
                 View.OnClickListener { item.onClicked.invoke() }
             } else {
diff --git a/src/com/android/customization/picker/clock/ui/binder/CarouselAccessibilityDelegate.kt b/src/com/android/customization/picker/clock/ui/binder/CarouselAccessibilityDelegate.kt
new file mode 100644
index 0000000..eb11171
--- /dev/null
+++ b/src/com/android/customization/picker/clock/ui/binder/CarouselAccessibilityDelegate.kt
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2023 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.
+ *
+ */
+
+package com.android.customization.picker.clock.ui.binder
+
+import android.content.Context
+import android.os.Bundle
+import android.view.View
+import android.view.accessibility.AccessibilityNodeInfo
+import com.android.wallpaper.R
+
+class CarouselAccessibilityDelegate(
+    private val context: Context,
+    private val scrollForwardCallback: () -> Unit,
+    private val scrollBackwardCallback: () -> Unit
+) : View.AccessibilityDelegate() {
+
+    var contentDescriptionOfSelectedClock = ""
+
+    private val ACTION_SCROLL_BACKWARD = R.id.action_scroll_backward
+    private val ACTION_SCROLL_FORWARD = R.id.action_scroll_forward
+
+    override fun onInitializeAccessibilityNodeInfo(host: View, info: AccessibilityNodeInfo) {
+        super.onInitializeAccessibilityNodeInfo(host, info)
+        info.isScrollable = true
+        info.addAction(
+            AccessibilityNodeInfo.AccessibilityAction(
+                ACTION_SCROLL_FORWARD,
+                context.getString(R.string.scroll_forward_and_select)
+            )
+        )
+        info.addAction(
+            AccessibilityNodeInfo.AccessibilityAction(
+                ACTION_SCROLL_BACKWARD,
+                context.getString(R.string.scroll_backward_and_select)
+            )
+        )
+        info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_ACCESSIBILITY_FOCUS)
+        // We need to specifically set the content description since for some reason the talkback
+        // service does not go to children of the clock carousel in the view hierarchy
+        info.contentDescription = contentDescriptionOfSelectedClock
+    }
+
+    override fun performAccessibilityAction(host: View, action: Int, args: Bundle?): Boolean {
+        when (action) {
+            ACTION_SCROLL_BACKWARD -> {
+                scrollBackwardCallback.invoke()
+                return true
+            }
+            ACTION_SCROLL_FORWARD -> {
+                scrollForwardCallback.invoke()
+                return true
+            }
+        }
+        return super.performAccessibilityAction(host, action, args)
+    }
+}
diff --git a/src/com/android/customization/picker/clock/ui/binder/ClockCarouselViewBinder.kt b/src/com/android/customization/picker/clock/ui/binder/ClockCarouselViewBinder.kt
index 9ad735d..89fac89 100644
--- a/src/com/android/customization/picker/clock/ui/binder/ClockCarouselViewBinder.kt
+++ b/src/com/android/customization/picker/clock/ui/binder/ClockCarouselViewBinder.kt
@@ -15,10 +15,12 @@
  */
 package com.android.customization.picker.clock.ui.binder
 
+import android.content.Context
 import android.view.ViewGroup
 import android.widget.FrameLayout
 import androidx.core.view.isVisible
 import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleEventObserver
 import androidx.lifecycle.LifecycleOwner
 import androidx.lifecycle.lifecycleScope
 import androidx.lifecycle.repeatOnLifecycle
@@ -26,26 +28,39 @@
 import com.android.customization.picker.clock.ui.view.ClockViewFactory
 import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewModel
 import com.android.wallpaper.R
+import com.android.wallpaper.picker.customization.ui.section.ScreenPreviewClickView
+import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.launch
 
 object ClockCarouselViewBinder {
-    /**
-     * The binding is used by the view where there is an action executed from another view, e.g.
-     * toggling show/hide of the view that the binder is holding.
-     */
-    interface Binding {
-        fun show()
-        fun hide()
-    }
 
     @JvmStatic
     fun bind(
+        context: Context,
         carouselView: ClockCarouselView,
         singleClockView: ViewGroup,
+        screenPreviewClickView: ScreenPreviewClickView,
         viewModel: ClockCarouselViewModel,
         clockViewFactory: ClockViewFactory,
         lifecycleOwner: LifecycleOwner,
-    ): Binding {
+        isTwoPaneAndSmallWidth: Boolean,
+    ) {
+        carouselView.setClockViewFactory(clockViewFactory)
+        clockViewFactory.updateRegionDarkness()
+        val carouselAccessibilityDelegate =
+            CarouselAccessibilityDelegate(
+                context,
+                scrollForwardCallback = {
+                    // Callback code for scrolling forward
+                    carouselView.transitionToNext()
+                },
+                scrollBackwardCallback = {
+                    // Callback code for scrolling backward
+                    carouselView.transitionToPrevious()
+                }
+            )
+        screenPreviewClickView.accessibilityDelegate = carouselAccessibilityDelegate
+
         val singleClockHostView =
             singleClockView.requireViewById<FrameLayout>(R.id.single_clock_host_view)
         lifecycleOwner.lifecycleScope.launch {
@@ -53,17 +68,29 @@
                 launch { viewModel.isCarouselVisible.collect { carouselView.isVisible = it } }
 
                 launch {
-                    viewModel.allClockIds.collect { allClockIds ->
+                    combine(viewModel.selectedClockSize, viewModel.allClocks, ::Pair).collect {
+                        (size, allClocks) ->
                         carouselView.setUpClockCarouselView(
-                            clockIds = allClockIds,
-                            onGetClockPreview = { clockId -> clockViewFactory.getView(clockId) },
-                            onClockSelected = { clockId -> viewModel.setSelectedClock(clockId) },
+                            clockSize = size,
+                            clocks = allClocks,
+                            onClockSelected = { clock ->
+                                viewModel.setSelectedClock(clock.clockId)
+                            },
+                            isTwoPaneAndSmallWidth = isTwoPaneAndSmallWidth,
                         )
                     }
                 }
 
                 launch {
+                    viewModel.allClocks.collect {
+                        it.forEach { clock -> clockViewFactory.updateTimeFormat(clock.clockId) }
+                    }
+                }
+
+                launch {
                     viewModel.selectedIndex.collect { selectedIndex ->
+                        carouselAccessibilityDelegate.contentDescriptionOfSelectedClock =
+                            carouselView.getContentDescription(selectedIndex)
                         carouselView.setSelectedClockIndex(selectedIndex)
                     }
                 }
@@ -79,7 +106,7 @@
                 launch {
                     viewModel.clockId.collect { clockId ->
                         singleClockHostView.removeAllViews()
-                        val clockView = clockViewFactory.getView(clockId)
+                        val clockView = clockViewFactory.getLargeView(clockId)
                         // The clock view might still be attached to an existing parent. Detach
                         // before adding to another parent.
                         (clockView.parent as? ViewGroup)?.removeView(clockView)
@@ -89,22 +116,18 @@
             }
         }
 
-        lifecycleOwner.lifecycleScope.launch {
-            lifecycleOwner.repeatOnLifecycle(Lifecycle.State.RESUMED) {
-                clockViewFactory.registerTimeTicker()
+        lifecycleOwner.lifecycle.addObserver(
+            LifecycleEventObserver { source, event ->
+                when (event) {
+                    Lifecycle.Event.ON_RESUME -> {
+                        clockViewFactory.registerTimeTicker(source)
+                    }
+                    Lifecycle.Event.ON_PAUSE -> {
+                        clockViewFactory.unregisterTimeTicker(source)
+                    }
+                    else -> {}
+                }
             }
-            // When paused
-            clockViewFactory.unregisterTimeTicker()
-        }
-
-        return object : Binding {
-            override fun show() {
-                viewModel.showClockCarousel(true)
-            }
-
-            override fun hide() {
-                viewModel.showClockCarousel(false)
-            }
-        }
+        )
     }
 }
diff --git a/src/com/android/customization/picker/clock/ui/binder/ClockSettingsBinder.kt b/src/com/android/customization/picker/clock/ui/binder/ClockSettingsBinder.kt
index 66d9251..4f4bd1b 100644
--- a/src/com/android/customization/picker/clock/ui/binder/ClockSettingsBinder.kt
+++ b/src/com/android/customization/picker/clock/ui/binder/ClockSettingsBinder.kt
@@ -15,13 +15,17 @@
  */
 package com.android.customization.picker.clock.ui.binder
 
+import android.content.res.Configuration
+import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
-import android.widget.FrameLayout
+import android.widget.LinearLayout
 import android.widget.SeekBar
+import androidx.core.view.doOnPreDraw
 import androidx.core.view.isInvisible
 import androidx.core.view.isVisible
 import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleEventObserver
 import androidx.lifecycle.LifecycleOwner
 import androidx.lifecycle.lifecycleScope
 import androidx.lifecycle.repeatOnLifecycle
@@ -29,38 +33,37 @@
 import androidx.recyclerview.widget.RecyclerView
 import com.android.customization.picker.clock.shared.ClockSize
 import com.android.customization.picker.clock.ui.adapter.ClockSettingsTabAdapter
+import com.android.customization.picker.clock.ui.view.ClockHostView
 import com.android.customization.picker.clock.ui.view.ClockSizeRadioButtonGroup
 import com.android.customization.picker.clock.ui.view.ClockViewFactory
 import com.android.customization.picker.clock.ui.viewmodel.ClockSettingsViewModel
-import com.android.customization.picker.color.ui.adapter.ColorOptionAdapter
+import com.android.customization.picker.color.ui.binder.ColorOptionIconBinder
 import com.android.customization.picker.common.ui.view.ItemSpacing
 import com.android.wallpaper.R
+import com.android.wallpaper.picker.option.ui.binder.OptionItemBinder
+import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.mapNotNull
 import kotlinx.coroutines.launch
 
 /** Bind between the clock settings screen and its view model. */
 object ClockSettingsBinder {
+    private const val SLIDER_ENABLED_ALPHA = 1f
+    private const val SLIDER_DISABLED_ALPHA = .3f
+    private const val COLOR_PICKER_ITEM_PREFIX_ID = 1234
+
     fun bind(
         view: View,
         viewModel: ClockSettingsViewModel,
         clockViewFactory: ClockViewFactory,
         lifecycleOwner: LifecycleOwner,
     ) {
-        val clockHostView: FrameLayout = view.requireViewById(R.id.clock_host_view)
-
+        val clockHostView: ClockHostView = view.requireViewById(R.id.clock_host_view)
         val tabView: RecyclerView = view.requireViewById(R.id.tabs)
         val tabAdapter = ClockSettingsTabAdapter()
         tabView.adapter = tabAdapter
         tabView.layoutManager = LinearLayoutManager(view.context, RecyclerView.HORIZONTAL, false)
         tabView.addItemDecoration(ItemSpacing(ItemSpacing.TAB_ITEM_SPACING_DP))
-
-        val colorOptionContainerView: RecyclerView = view.requireViewById(R.id.color_options)
-        val colorOptionAdapter = ColorOptionAdapter()
-        colorOptionContainerView.adapter = colorOptionAdapter
-        colorOptionContainerView.layoutManager =
-            LinearLayoutManager(view.context, RecyclerView.HORIZONTAL, false)
-        colorOptionContainerView.addItemDecoration(ItemSpacing(ItemSpacing.ITEM_SPACING_DP))
-
+        val colorOptionContainerListView: LinearLayout = view.requireViewById(R.id.color_options)
         val slider: SeekBar = view.requireViewById(R.id.slider)
         slider.setOnSeekBarChangeListener(
             object : SeekBar.OnSeekBarChangeListener {
@@ -72,7 +75,9 @@
 
                 override fun onStartTrackingTouch(seekBar: SeekBar?) = Unit
                 override fun onStopTrackingTouch(seekBar: SeekBar?) {
-                    seekBar?.progress?.let { viewModel.onSliderProgressStop(it) }
+                    seekBar?.progress?.let {
+                        lifecycleOwner.lifecycleScope.launch { viewModel.onSliderProgressStop(it) }
+                    }
                 }
             }
         )
@@ -90,17 +95,6 @@
         lifecycleOwner.lifecycleScope.launch {
             lifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
                 launch {
-                    viewModel.selectedClockId
-                        .mapNotNull { it }
-                        .collect { clockId ->
-                            val clockView = clockViewFactory.getView(clockId)
-                            (clockView.parent as? ViewGroup)?.removeView(clockView)
-                            clockHostView.removeAllViews()
-                            clockHostView.addView(clockView)
-                        }
-                }
-
-                launch {
                     viewModel.seedColor.collect { seedColor ->
                         viewModel.selectedClockId.value?.let { selectedClockId ->
                             clockViewFactory.updateColor(selectedClockId, seedColor)
@@ -127,35 +121,90 @@
 
                 launch {
                     viewModel.colorOptions.collect { colorOptions ->
-                        colorOptionAdapter.setItems(colorOptions)
+                        colorOptions.forEachIndexed { index, colorOption ->
+                            colorOption.payload?.let { payload ->
+                                val item =
+                                    LayoutInflater.from(view.context)
+                                        .inflate(
+                                            R.layout.clock_color_option,
+                                            colorOptionContainerListView,
+                                            false,
+                                        ) as LinearLayout
+                                val darkMode =
+                                    (view.resources.configuration.uiMode and
+                                        Configuration.UI_MODE_NIGHT_MASK ==
+                                        Configuration.UI_MODE_NIGHT_YES)
+                                ColorOptionIconBinder.bind(
+                                    item.requireViewById(R.id.foreground),
+                                    payload,
+                                    darkMode
+                                )
+                                OptionItemBinder.bind(
+                                    view = item,
+                                    viewModel = colorOptions[index],
+                                    lifecycleOwner = lifecycleOwner,
+                                    foregroundTintSpec = null,
+                                )
+
+                                val id = COLOR_PICKER_ITEM_PREFIX_ID + index
+                                item.id = id
+                                colorOptionContainerListView.addView(item)
+                            }
+                        }
                     }
                 }
 
                 launch {
                     viewModel.selectedColorOptionPosition.collect { selectedPosition ->
                         if (selectedPosition != -1) {
-                            // We use "post" because we need to give the adapter item a pass to
-                            // update the view.
-                            colorOptionContainerView.post {
-                                colorOptionContainerView.smoothScrollToPosition(selectedPosition)
-                            }
+                            val colorOptionContainerListView: LinearLayout =
+                                view.requireViewById(R.id.color_options)
+
+                            val selectedView =
+                                colorOptionContainerListView.findViewById<View>(
+                                    COLOR_PICKER_ITEM_PREFIX_ID + selectedPosition
+                                )
+                            selectedView?.parent?.requestChildFocus(selectedView, selectedView)
                         }
                     }
                 }
 
                 launch {
-                    viewModel.selectedClockSize.collect { size ->
-                        when (size) {
-                            ClockSize.DYNAMIC -> {
-                                sizeOptions.radioButtonDynamic.isChecked = true
-                                sizeOptions.radioButtonSmall.isChecked = false
-                            }
-                            ClockSize.SMALL -> {
-                                sizeOptions.radioButtonDynamic.isChecked = false
-                                sizeOptions.radioButtonSmall.isChecked = true
+                    combine(
+                            viewModel.selectedClockId.mapNotNull { it },
+                            viewModel.selectedClockSize,
+                            ::Pair,
+                        )
+                        .collect { (clockId, size) ->
+                            clockHostView.removeAllViews()
+                            val clockView =
+                                when (size) {
+                                    ClockSize.DYNAMIC -> clockViewFactory.getLargeView(clockId)
+                                    ClockSize.SMALL -> clockViewFactory.getSmallView(clockId)
+                                }
+                            // The clock view might still be attached to an existing parent. Detach
+                            // before adding to another parent.
+                            (clockView.parent as? ViewGroup)?.removeView(clockView)
+                            clockHostView.addView(clockView)
+                            when (size) {
+                                ClockSize.DYNAMIC -> {
+                                    sizeOptions.radioButtonDynamic.isChecked = true
+                                    sizeOptions.radioButtonSmall.isChecked = false
+                                    clockHostView.doOnPreDraw {
+                                        it.pivotX = it.width / 2F
+                                        it.pivotY = it.height / 2F
+                                    }
+                                }
+                                ClockSize.SMALL -> {
+                                    sizeOptions.radioButtonDynamic.isChecked = false
+                                    sizeOptions.radioButtonSmall.isChecked = true
+                                    clockHostView.doOnPreDraw {
+                                        it.pivotX = 0F
+                                        it.pivotY = 0F
+                                    }
+                                }
                             }
                         }
-                    }
                 }
 
                 launch {
@@ -165,17 +214,27 @@
                 }
 
                 launch {
-                    viewModel.isSliderEnabled.collect { isEnabled -> slider.isEnabled = isEnabled }
+                    viewModel.isSliderEnabled.collect { isEnabled ->
+                        slider.isEnabled = isEnabled
+                        slider.alpha =
+                            if (isEnabled) SLIDER_ENABLED_ALPHA else SLIDER_DISABLED_ALPHA
+                    }
                 }
             }
         }
 
-        lifecycleOwner.lifecycleScope.launch {
-            lifecycleOwner.repeatOnLifecycle(Lifecycle.State.RESUMED) {
-                clockViewFactory.registerTimeTicker()
+        lifecycleOwner.lifecycle.addObserver(
+            LifecycleEventObserver { source, event ->
+                when (event) {
+                    Lifecycle.Event.ON_RESUME -> {
+                        clockViewFactory.registerTimeTicker(source)
+                    }
+                    Lifecycle.Event.ON_PAUSE -> {
+                        clockViewFactory.unregisterTimeTicker(source)
+                    }
+                    else -> {}
+                }
             }
-            // When paused
-            clockViewFactory.unregisterTimeTicker()
-        }
+        )
     }
 }
diff --git a/src/com/android/customization/picker/clock/ui/fragment/ClockCustomDemoFragment.kt b/src/com/android/customization/picker/clock/ui/fragment/ClockCustomDemoFragment.kt
index 7e53ac4..f138d6a 100644
--- a/src/com/android/customization/picker/clock/ui/fragment/ClockCustomDemoFragment.kt
+++ b/src/com/android/customization/picker/clock/ui/fragment/ClockCustomDemoFragment.kt
@@ -36,7 +36,7 @@
         setUpToolbar(view)
         clockRegistry =
             (InjectorProvider.getInjector() as ThemePickerInjector).getClockRegistry(
-                requireContext()
+                requireContext(),
             )
         val listInUse = clockRegistry.getClocks().filter { "NOT_IN_USE" !in it.clockId }
 
diff --git a/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt b/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
index c5cde53..f4684d8 100644
--- a/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
+++ b/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
@@ -26,6 +26,7 @@
 import com.android.customization.picker.clock.ui.binder.ClockSettingsBinder
 import com.android.systemui.shared.clocks.shared.model.ClockPreviewConstants
 import com.android.wallpaper.R
+import com.android.wallpaper.module.CustomizationSections
 import com.android.wallpaper.module.InjectorProvider
 import com.android.wallpaper.picker.AppbarFragment
 import com.android.wallpaper.picker.customization.ui.binder.ScreenPreviewBinder
@@ -66,70 +67,77 @@
         val colorViewModel = injector.getWallpaperColorsViewModel()
         val displayUtils = injector.getDisplayUtils(context)
         ScreenPreviewBinder.bind(
-                activity = activity,
-                previewView = lockScreenView,
-                viewModel =
-                    ScreenPreviewViewModel(
-                        previewUtils =
-                            PreviewUtils(
-                                context = context,
-                                authority =
-                                    resources.getString(
-                                        R.string.lock_screen_preview_provider_authority,
-                                    ),
-                            ),
-                        wallpaperInfoProvider = {
-                            suspendCancellableCoroutine { continuation ->
-                                injector
-                                    .getCurrentWallpaperInfoFactory(context)
-                                    .createCurrentWallpaperInfos(
-                                        { homeWallpaper, lockWallpaper, _ ->
-                                            continuation.resume(
-                                                homeWallpaper ?: lockWallpaper,
-                                                null,
-                                            )
-                                        },
-                                        /* forceRefresh= */ true,
-                                    )
-                            }
-                        },
-                        onWallpaperColorChanged = { colors ->
-                            colorViewModel.setLockWallpaperColors(colors)
-                        },
-                        initialExtrasProvider = {
-                            Bundle().apply {
-                                // Hide the clock from the system UI rendered preview so we can
-                                // place the carousel on top of it.
-                                putBoolean(
-                                    ClockPreviewConstants.KEY_HIDE_CLOCK,
-                                    true,
+            activity = activity,
+            previewView = lockScreenView,
+            viewModel =
+                ScreenPreviewViewModel(
+                    previewUtils =
+                        PreviewUtils(
+                            context = context,
+                            authority =
+                                resources.getString(
+                                    R.string.lock_screen_preview_provider_authority,
+                                ),
+                        ),
+                    wallpaperInfoProvider = { forceReload ->
+                        suspendCancellableCoroutine { continuation ->
+                            injector
+                                .getCurrentWallpaperInfoFactory(context)
+                                .createCurrentWallpaperInfos(
+                                    { homeWallpaper, lockWallpaper, _ ->
+                                        continuation.resume(
+                                            lockWallpaper ?: homeWallpaper,
+                                            null,
+                                        )
+                                    },
+                                    forceReload,
                                 )
-                            }
-                        },
-                    ),
-                lifecycleOwner = this,
-                offsetToStart = displayUtils.isSingleDisplayOrUnfoldedHorizontalHinge(activity),
-            )
-            .show()
+                        }
+                    },
+                    onWallpaperColorChanged = { colors ->
+                        colorViewModel.setLockWallpaperColors(colors)
+                    },
+                    initialExtrasProvider = {
+                        Bundle().apply {
+                            // Hide the clock from the system UI rendered preview so we can
+                            // place the carousel on top of it.
+                            putBoolean(
+                                ClockPreviewConstants.KEY_HIDE_CLOCK,
+                                true,
+                            )
+                        }
+                    },
+                    wallpaperInteractor = injector.getWallpaperInteractor(requireContext()),
+                    screen = CustomizationSections.Screen.LOCK_SCREEN,
+                ),
+            lifecycleOwner = this,
+            offsetToStart = displayUtils.isSingleDisplayOrUnfoldedHorizontalHinge(activity),
+            onWallpaperPreviewDirty = { activity.recreate() },
+        )
 
         ClockSettingsBinder.bind(
             view,
             ViewModelProvider(
-                    requireActivity(),
+                    this,
                     injector.getClockSettingsViewModelFactory(
                         context,
                         injector.getWallpaperColorsViewModel(),
+                        injector.getClockViewFactory(activity),
                     ),
                 )
                 .get(),
             injector.getClockViewFactory(activity),
-            this@ClockSettingsFragment,
+            viewLifecycleOwner,
         )
 
         return view
     }
 
     override fun getDefaultTitle(): CharSequence {
-        return requireContext().getString(R.string.clock_settings_title)
+        return requireContext().getString(R.string.clock_color_and_size_title)
+    }
+
+    override fun getToolbarColorId(): Int {
+        return android.R.color.transparent
     }
 }
diff --git a/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt b/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
index 90d7c42..8764e54 100644
--- a/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
+++ b/src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt
@@ -16,14 +16,24 @@
 package com.android.customization.picker.clock.ui.view
 
 import android.content.Context
+import android.content.res.Resources
 import android.util.AttributeSet
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.FrameLayout
 import androidx.constraintlayout.helper.widget.Carousel
+import androidx.constraintlayout.motion.widget.MotionLayout
+import androidx.constraintlayout.widget.ConstraintSet
+import androidx.core.view.doOnPreDraw
 import androidx.core.view.get
+import androidx.core.view.isNotEmpty
+import com.android.customization.picker.clock.shared.ClockSize
+import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselItemViewModel
+import com.android.systemui.plugins.ClockController
 import com.android.wallpaper.R
+import com.android.wallpaper.picker.FixedWidthDisplayRatioFrameLayout
+import java.lang.Float.max
 
 class ClockCarouselView(
     context: Context,
@@ -34,53 +44,475 @@
         attrs,
     ) {
 
-    private val carousel: Carousel
+    val carousel: Carousel
+    private val motionLayout: MotionLayout
     private lateinit var adapter: ClockCarouselAdapter
+    private lateinit var clockViewFactory: ClockViewFactory
+    private var toCenterClockController: ClockController? = null
+    private var offCenterClockController: ClockController? = null
+    private var toCenterClockScaleView: View? = null
+    private var offCenterClockScaleView: View? = null
+    private var toCenterClockHostView: ClockHostView? = null
+    private var offCenterClockHostView: ClockHostView? = null
+    private var toCenterCardView: View? = null
+    private var offCenterCardView: View? = null
 
     init {
-        val view = LayoutInflater.from(context).inflate(R.layout.clock_carousel, this)
-        carousel = view.requireViewById(R.id.carousel)
+        val clockCarousel = LayoutInflater.from(context).inflate(R.layout.clock_carousel, this)
+        carousel = clockCarousel.requireViewById(R.id.carousel)
+        motionLayout = clockCarousel.requireViewById(R.id.motion_container)
+        motionLayout.contentDescription = context.getString(R.string.custom_clocks_label)
+    }
+
+    /**
+     * Make sure to set [clockViewFactory] before calling any functions from [ClockCarouselView].
+     */
+    fun setClockViewFactory(factory: ClockViewFactory) {
+        clockViewFactory = factory
+    }
+
+    fun transitionToNext() {
+        val index = (carousel.currentIndex + 1) % carousel.count
+        if (index < carousel.count && index > 0) {
+            carousel.transitionToIndex(index, 0)
+        }
+    }
+
+    fun transitionToPrevious() {
+        val index = (carousel.currentIndex - 1) % carousel.count
+        if (index < carousel.count && index > 0) {
+            carousel.transitionToIndex(index, 0)
+        }
+    }
+
+    fun getContentDescription(index: Int): String {
+        return adapter.getContentDescription(index, resources)
     }
 
     fun setUpClockCarouselView(
-        clockIds: List<String>,
-        onGetClockPreview: (clockId: String) -> View,
-        onClockSelected: (clockId: String) -> Unit,
+        clockSize: ClockSize,
+        clocks: List<ClockCarouselItemViewModel>,
+        onClockSelected: (clock: ClockCarouselItemViewModel) -> Unit,
+        isTwoPaneAndSmallWidth: Boolean,
     ) {
-        adapter = ClockCarouselAdapter(clockIds, onGetClockPreview, onClockSelected)
+        if (isTwoPaneAndSmallWidth) {
+            overrideScreenPreviewWidth()
+        }
+
+        adapter = ClockCarouselAdapter(clockSize, clocks, clockViewFactory, onClockSelected)
         carousel.setAdapter(adapter)
         carousel.refresh()
+        motionLayout.setTransitionListener(
+            object : MotionLayout.TransitionListener {
+
+                override fun onTransitionStarted(
+                    motionLayout: MotionLayout?,
+                    startId: Int,
+                    endId: Int
+                ) {
+                    if (motionLayout == null) {
+                        return
+                    }
+                    when (clockSize) {
+                        ClockSize.DYNAMIC -> prepareDynamicClockView(motionLayout, endId)
+                        ClockSize.SMALL -> prepareSmallClockView(motionLayout, endId)
+                    }
+                    prepareCardView(motionLayout, endId)
+                    setCarouselItemAnimationState(true)
+                }
+
+                override fun onTransitionChange(
+                    motionLayout: MotionLayout?,
+                    startId: Int,
+                    endId: Int,
+                    progress: Float,
+                ) {
+                    when (clockSize) {
+                        ClockSize.DYNAMIC -> onDynamicClockViewTransition(progress)
+                        ClockSize.SMALL -> onSmallClockViewTransition(progress)
+                    }
+                    onCardViewTransition(progress)
+                }
+
+                override fun onTransitionCompleted(motionLayout: MotionLayout?, currentId: Int) {
+                    setCarouselItemAnimationState(currentId == R.id.start)
+                }
+
+                private fun prepareDynamicClockView(motionLayout: MotionLayout, endId: Int) {
+                    val scalingDownClockId = adapter.clocks[carousel.currentIndex].clockId
+                    val scalingUpIdx =
+                        if (endId == R.id.next) (carousel.currentIndex + 1) % adapter.count()
+                        else (carousel.currentIndex - 1 + adapter.count()) % adapter.count()
+                    val scalingUpClockId = adapter.clocks[scalingUpIdx].clockId
+                    offCenterClockController = clockViewFactory.getController(scalingDownClockId)
+                    toCenterClockController = clockViewFactory.getController(scalingUpClockId)
+                    offCenterClockScaleView = motionLayout.findViewById(R.id.clock_scale_view_2)
+                    toCenterClockScaleView =
+                        motionLayout.findViewById(
+                            if (endId == R.id.next) R.id.clock_scale_view_3
+                            else R.id.clock_scale_view_1
+                        )
+                }
+
+                private fun prepareSmallClockView(motionLayout: MotionLayout, endId: Int) {
+                    offCenterClockHostView = motionLayout.findViewById(R.id.clock_host_view_2)
+                    toCenterClockHostView =
+                        motionLayout.findViewById(
+                            if (endId == R.id.next) R.id.clock_host_view_3
+                            else R.id.clock_host_view_1
+                        )
+                }
+
+                private fun prepareCardView(motionLayout: MotionLayout, endId: Int) {
+                    offCenterCardView = motionLayout.findViewById(R.id.item_card_2)
+                    toCenterCardView =
+                        motionLayout.findViewById(
+                            if (endId == R.id.next) R.id.item_card_3 else R.id.item_card_1
+                        )
+                }
+
+                private fun onCardViewTransition(progress: Float) {
+                    offCenterCardView?.alpha = getShowingAlpha(progress)
+                    toCenterCardView?.alpha = getHidingAlpha(progress)
+                }
+
+                private fun onDynamicClockViewTransition(progress: Float) {
+                    offCenterClockController
+                        ?.largeClock
+                        ?.animations
+                        ?.onPickerCarouselSwiping(1 - progress)
+                    toCenterClockController
+                        ?.largeClock
+                        ?.animations
+                        ?.onPickerCarouselSwiping(progress)
+                    val scalingDownScale = getScalingDownScale(progress)
+                    val scalingUpScale = getScalingUpScale(progress)
+                    offCenterClockScaleView?.scaleX = scalingDownScale
+                    offCenterClockScaleView?.scaleY = scalingDownScale
+                    toCenterClockScaleView?.scaleX = scalingUpScale
+                    toCenterClockScaleView?.scaleY = scalingUpScale
+                }
+
+                private fun onSmallClockViewTransition(progress: Float) {
+                    val offCenterClockHostView = offCenterClockHostView ?: return
+                    val toCenterClockHostView = toCenterClockHostView ?: return
+                    val offCenterClockFrame =
+                        if (offCenterClockHostView.isNotEmpty()) {
+                            offCenterClockHostView[0]
+                        } else {
+                            null
+                        }
+                            ?: return
+                    val toCenterClockFrame =
+                        if (toCenterClockHostView.isNotEmpty()) {
+                            toCenterClockHostView[0]
+                        } else {
+                            null
+                        }
+                            ?: return
+                    offCenterClockHostView.doOnPreDraw {
+                        it.pivotX = progress * it.width / 2
+                        it.pivotY = progress * it.height / 2
+                    }
+                    toCenterClockHostView.doOnPreDraw {
+                        it.pivotX = (1 - progress) * it.width / 2
+                        it.pivotY = (1 - progress) * it.height / 2
+                    }
+                    offCenterClockFrame.translationX =
+                        getTranslationDistance(
+                            offCenterClockHostView.width,
+                            offCenterClockFrame.width,
+                            offCenterClockFrame.left,
+                        ) * progress
+                    offCenterClockFrame.translationY =
+                        getTranslationDistance(
+                            offCenterClockHostView.height,
+                            offCenterClockFrame.height,
+                            offCenterClockFrame.top,
+                        ) * progress
+                    toCenterClockFrame.translationX =
+                        getTranslationDistance(
+                            toCenterClockHostView.width,
+                            toCenterClockFrame.width,
+                            toCenterClockFrame.left,
+                        ) * (1 - progress)
+                    toCenterClockFrame.translationY =
+                        getTranslationDistance(
+                            toCenterClockHostView.height,
+                            toCenterClockFrame.height,
+                            toCenterClockFrame.top,
+                        ) * (1 - progress)
+                }
+
+                private fun setCarouselItemAnimationState(isStart: Boolean) {
+                    when (clockSize) {
+                        ClockSize.DYNAMIC -> onDynamicClockViewTransition(if (isStart) 0f else 1f)
+                        ClockSize.SMALL -> onSmallClockViewTransition(if (isStart) 0f else 1f)
+                    }
+                    onCardViewTransition(if (isStart) 0f else 1f)
+                }
+
+                override fun onTransitionTrigger(
+                    motionLayout: MotionLayout?,
+                    triggerId: Int,
+                    positive: Boolean,
+                    progress: Float
+                ) {}
+            }
+        )
     }
 
     fun setSelectedClockIndex(
         index: Int,
     ) {
-        carousel.jumpToIndex(index)
+        // jumpToIndex to the same position can cause the views unnecessarily populate again.
+        // Only call jumpToIndex when the jump-to index is different from the current carousel.
+        if (index != carousel.currentIndex) {
+            carousel.jumpToIndex(index)
+        }
     }
 
-    class ClockCarouselAdapter(
-        val clockIds: List<String>,
-        val onGetClockPreview: (clockId: String) -> View,
-        val onClockSelected: (clockId: String) -> Unit,
+    private fun overrideScreenPreviewWidth() {
+        val overrideWidth =
+            context.resources.getDimensionPixelSize(
+                R.dimen.screen_preview_width_for_2_pane_small_width
+            )
+        itemViewIds.forEach { id ->
+            val itemView = motionLayout.requireViewById<FrameLayout>(id)
+            val itemViewLp = itemView.layoutParams
+            itemViewLp.width = overrideWidth
+            itemView.layoutParams = itemViewLp
+
+            getClockScaleViewId(id)?.let {
+                val scaleView = motionLayout.requireViewById<FixedWidthDisplayRatioFrameLayout>(it)
+                val scaleViewLp = scaleView.layoutParams
+                scaleViewLp.width = overrideWidth
+                scaleView.layoutParams = scaleViewLp
+            }
+        }
+
+        val previousConstaintSet = motionLayout.getConstraintSet(R.id.previous)
+        val startConstaintSet = motionLayout.getConstraintSet(R.id.start)
+        val nextConstaintSet = motionLayout.getConstraintSet(R.id.next)
+        val constaintSetList =
+            listOf<ConstraintSet>(previousConstaintSet, startConstaintSet, nextConstaintSet)
+        constaintSetList.forEach { constraintSet ->
+            itemViewIds.forEach { id ->
+                constraintSet.getConstraint(id)?.let { constraint ->
+                    val layout = constraint.layout
+                    if (
+                        constraint.layout.mWidth ==
+                            context.resources.getDimensionPixelSize(R.dimen.screen_preview_width)
+                    ) {
+                        layout.mWidth = overrideWidth
+                    }
+                    if (
+                        constraint.layout.widthMax ==
+                            context.resources.getDimensionPixelSize(R.dimen.screen_preview_width)
+                    ) {
+                        layout.widthMax = overrideWidth
+                    }
+                }
+            }
+        }
+    }
+
+    private class ClockCarouselAdapter(
+        val clockSize: ClockSize,
+        val clocks: List<ClockCarouselItemViewModel>,
+        private val clockViewFactory: ClockViewFactory,
+        private val onClockSelected: (clock: ClockCarouselItemViewModel) -> Unit
     ) : Carousel.Adapter {
 
+        fun getContentDescription(index: Int, resources: Resources): String {
+            return clocks[index].getContentDescription(resources)
+        }
+
         override fun count(): Int {
-            return clockIds.size
+            return clocks.size
         }
 
         override fun populate(view: View?, index: Int) {
-            val viewRoot = view as ViewGroup
-            val clockHostView = viewRoot[0] as ViewGroup
+            val viewRoot = view as? ViewGroup ?: return
+            val cardView =
+                getClockCardViewId(viewRoot.id)?.let { viewRoot.findViewById(it) as? View }
+                    ?: return
+            val clockScaleView =
+                getClockScaleViewId(viewRoot.id)?.let { viewRoot.findViewById(it) as? View }
+                    ?: return
+            val clockHostView =
+                getClockHostViewId(viewRoot.id)?.let { viewRoot.findViewById(it) as? ClockHostView }
+                    ?: return
+            val clockId = clocks[index].clockId
+
+            // Add the clock view to the cloc host view
             clockHostView.removeAllViews()
-            val clockView = onGetClockPreview(clockIds[index])
+            val clockView =
+                when (clockSize) {
+                    ClockSize.DYNAMIC -> clockViewFactory.getLargeView(clockId)
+                    ClockSize.SMALL -> clockViewFactory.getSmallView(clockId)
+                }
             // The clock view might still be attached to an existing parent. Detach before adding to
             // another parent.
             (clockView.parent as? ViewGroup)?.removeView(clockView)
             clockHostView.addView(clockView)
+
+            val isMiddleView = isMiddleView(viewRoot.id)
+
+            // Accessibility
+            viewRoot.contentDescription = getContentDescription(index, view.resources)
+            viewRoot.isSelected = isMiddleView
+
+            when (clockSize) {
+                ClockSize.DYNAMIC ->
+                    initializeDynamicClockView(
+                        isMiddleView,
+                        clockScaleView,
+                        clockId,
+                        clockHostView,
+                    )
+                ClockSize.SMALL ->
+                    initializeSmallClockView(
+                        isMiddleView,
+                        clockHostView,
+                        clockView,
+                    )
+            }
+            cardView.alpha = if (isMiddleView) 0f else 1f
+        }
+
+        private fun initializeDynamicClockView(
+            isMiddleView: Boolean,
+            clockScaleView: View,
+            clockId: String,
+            clockHostView: ClockHostView,
+        ) {
+            clockHostView.doOnPreDraw {
+                it.pivotX = it.width / 2F
+                it.pivotY = it.height / 2F
+            }
+            if (isMiddleView) {
+                clockScaleView.scaleX = 1f
+                clockScaleView.scaleY = 1f
+                clockViewFactory
+                    .getController(clockId)
+                    .largeClock
+                    .animations
+                    .onPickerCarouselSwiping(1F)
+            } else {
+                clockScaleView.scaleX = CLOCK_CAROUSEL_VIEW_SCALE
+                clockScaleView.scaleY = CLOCK_CAROUSEL_VIEW_SCALE
+                clockViewFactory
+                    .getController(clockId)
+                    .largeClock
+                    .animations
+                    .onPickerCarouselSwiping(0F)
+            }
+        }
+
+        private fun initializeSmallClockView(
+            isMiddleView: Boolean,
+            clockHostView: ClockHostView,
+            clockView: View,
+        ) {
+            clockHostView.doOnPreDraw {
+                if (isMiddleView) {
+                    it.pivotX = 0F
+                    it.pivotY = 0F
+                    clockView.translationX = 0F
+                    clockView.translationY = 0F
+                } else {
+                    it.pivotX = it.width / 2F
+                    it.pivotY = it.height / 2F
+                    clockView.translationX =
+                        getTranslationDistance(
+                            clockHostView.width,
+                            clockView.width,
+                            clockView.left,
+                        )
+                    clockView.translationY =
+                        getTranslationDistance(
+                            clockHostView.height,
+                            clockView.height,
+                            clockView.top,
+                        )
+                }
+            }
         }
 
         override fun onNewItem(index: Int) {
-            onClockSelected.invoke(clockIds[index])
+            onClockSelected.invoke(clocks[index])
+        }
+    }
+
+    companion object {
+        const val CLOCK_CAROUSEL_VIEW_SCALE = 0.5f
+
+        val itemViewIds =
+            listOf(
+                R.id.item_view_0,
+                R.id.item_view_1,
+                R.id.item_view_2,
+                R.id.item_view_3,
+                R.id.item_view_4
+            )
+
+        fun getScalingUpScale(progress: Float) =
+            CLOCK_CAROUSEL_VIEW_SCALE + progress * (1f - CLOCK_CAROUSEL_VIEW_SCALE)
+
+        fun getScalingDownScale(progress: Float) = 1f - progress * (1f - CLOCK_CAROUSEL_VIEW_SCALE)
+
+        // This makes the card only starts to reveal in the last quarter of the trip so
+        // the card won't overlap the preview.
+        fun getShowingAlpha(progress: Float) = max(progress - 0.75f, 0f) * 4
+
+        // This makes the card starts to hide in the first quarter of the trip so the
+        // card won't overlap the preview.
+        fun getHidingAlpha(progress: Float) = max(1f - progress * 4, 0f)
+
+        fun getClockHostViewId(rootViewId: Int): Int? {
+            return when (rootViewId) {
+                R.id.item_view_0 -> R.id.clock_host_view_0
+                R.id.item_view_1 -> R.id.clock_host_view_1
+                R.id.item_view_2 -> R.id.clock_host_view_2
+                R.id.item_view_3 -> R.id.clock_host_view_3
+                R.id.item_view_4 -> R.id.clock_host_view_4
+                else -> null
+            }
+        }
+
+        fun getClockScaleViewId(rootViewId: Int): Int? {
+            return when (rootViewId) {
+                R.id.item_view_0 -> R.id.clock_scale_view_0
+                R.id.item_view_1 -> R.id.clock_scale_view_1
+                R.id.item_view_2 -> R.id.clock_scale_view_2
+                R.id.item_view_3 -> R.id.clock_scale_view_3
+                R.id.item_view_4 -> R.id.clock_scale_view_4
+                else -> null
+            }
+        }
+
+        fun getClockCardViewId(rootViewId: Int): Int? {
+            return when (rootViewId) {
+                R.id.item_view_0 -> R.id.item_card_0
+                R.id.item_view_1 -> R.id.item_card_1
+                R.id.item_view_2 -> R.id.item_card_2
+                R.id.item_view_3 -> R.id.item_card_3
+                R.id.item_view_4 -> R.id.item_card_4
+                else -> null
+            }
+        }
+
+        fun isMiddleView(rootViewId: Int): Boolean {
+            return rootViewId == R.id.item_view_2
+        }
+
+        private fun getTranslationDistance(
+            hostLength: Int,
+            frameLength: Int,
+            edgeDimen: Int,
+        ): Float {
+            return ((hostLength - frameLength) / 2 - edgeDimen).toFloat()
         }
     }
 }
diff --git a/src/com/android/customization/picker/clock/ui/view/ClockHostView.kt b/src/com/android/customization/picker/clock/ui/view/ClockHostView.kt
new file mode 100644
index 0000000..512fcd1
--- /dev/null
+++ b/src/com/android/customization/picker/clock/ui/view/ClockHostView.kt
@@ -0,0 +1,55 @@
+package com.android.customization.picker.clock.ui.view
+
+import android.content.Context
+import android.util.AttributeSet
+import android.view.View
+import android.view.View.MeasureSpec.EXACTLY
+import android.widget.FrameLayout
+import com.android.wallpaper.util.ScreenSizeCalculator
+
+/**
+ * The parent view for each clock view in picker carousel This view will give a container with the
+ * same size of lockscreen to layout clock and scale down it to the size in picker carousel
+ * according to ratio of preview to LS
+ */
+class ClockHostView(
+    context: Context,
+    attrs: AttributeSet?,
+) : FrameLayout(context, attrs) {
+    private var previewRatio: Float = 1F
+        set(value) {
+            if (field != value) {
+                field = value
+                scaleX = previewRatio
+                scaleY = previewRatio
+                invalidate()
+            }
+        }
+
+    override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec)
+        val screenSize = ScreenSizeCalculator.getInstance().getScreenSize(display)
+        previewRatio = measuredWidth / screenSize.x.toFloat()
+    }
+
+    /**
+     * In clock picker, we want to clock layout and render at lockscreen size and scale down so that
+     * the preview in clock carousel will be the same as lockscreen
+     */
+    override fun measureChildWithMargins(
+        child: View?,
+        parentWidthMeasureSpec: Int,
+        widthUsed: Int,
+        parentHeightMeasureSpec: Int,
+        heightUsed: Int
+    ) {
+        val screenSize = ScreenSizeCalculator.getInstance().getScreenSize(display)
+        super.measureChildWithMargins(
+            child,
+            MeasureSpec.makeMeasureSpec(screenSize.x, EXACTLY),
+            widthUsed,
+            MeasureSpec.makeMeasureSpec(screenSize.y, EXACTLY),
+            heightUsed
+        )
+    }
+}
diff --git a/src/com/android/customization/picker/clock/ui/view/ClockViewFactory.kt b/src/com/android/customization/picker/clock/ui/view/ClockViewFactory.kt
index 7f480de..3f6f423 100644
--- a/src/com/android/customization/picker/clock/ui/view/ClockViewFactory.kt
+++ b/src/com/android/customization/picker/clock/ui/view/ClockViewFactory.kt
@@ -15,61 +15,226 @@
  */
 package com.android.customization.picker.clock.ui.view
 
-import android.app.Activity
+import android.app.WallpaperColors
+import android.app.WallpaperManager
+import android.content.Context
+import android.content.res.Resources
+import android.graphics.Point
+import android.graphics.Rect
 import android.view.View
+import android.widget.FrameLayout
 import androidx.annotation.ColorInt
+import androidx.core.text.util.LocalePreferences
+import androidx.lifecycle.LifecycleOwner
 import com.android.systemui.plugins.ClockController
+import com.android.systemui.plugins.WeatherData
 import com.android.systemui.shared.clocks.ClockRegistry
 import com.android.wallpaper.R
-import com.android.wallpaper.util.ScreenSizeCalculator
 import com.android.wallpaper.util.TimeUtils.TimeTicker
+import java.util.concurrent.ConcurrentHashMap
 
+/**
+ * Provide reusable clock view and related util functions.
+ *
+ * @property screenSize The Activity or Fragment's window size.
+ */
 class ClockViewFactory(
-    private val activity: Activity,
+    private val appContext: Context,
+    val screenSize: Point,
+    private val wallpaperManager: WallpaperManager,
     private val registry: ClockRegistry,
 ) {
+    private val resources = appContext.resources
+    private val timeTickListeners: ConcurrentHashMap<Int, TimeTicker> = ConcurrentHashMap()
     private val clockControllers: HashMap<String, ClockController> = HashMap()
-    private var ticker: TimeTicker? = null
+    private val smallClockFrames: HashMap<String, FrameLayout> = HashMap()
 
-    fun getView(clockId: String): View {
-        return (clockControllers[clockId] ?: initClockController(clockId)).largeClock.view
+    fun getController(clockId: String): ClockController {
+        return clockControllers[clockId]
+            ?: initClockController(clockId).also { clockControllers[clockId] = it }
     }
 
+    /**
+     * Reset the large view to its initial state when getting the view. This is because some view
+     * configs, e.g. animation state, might change during the reuse of the clock view in the app.
+     */
+    fun getLargeView(clockId: String): View {
+        return getController(clockId).largeClock.let {
+            it.animations.onPickerCarouselSwiping(1F)
+            it.view
+        }
+    }
+
+    /**
+     * Reset the small view to its initial state when getting the view. This is because some view
+     * configs, e.g. translation X, might change during the reuse of the clock view in the app.
+     */
+    fun getSmallView(clockId: String): View {
+        val smallClockFrame =
+            smallClockFrames[clockId]
+                ?: createSmallClockFrame().also {
+                    it.addView(getController(clockId).smallClock.view)
+                    smallClockFrames[clockId] = it
+                }
+        smallClockFrame.translationX = 0F
+        smallClockFrame.translationY = 0F
+        return smallClockFrame
+    }
+
+    private fun createSmallClockFrame(): FrameLayout {
+        val smallClockFrame = FrameLayout(appContext)
+        val layoutParams =
+            FrameLayout.LayoutParams(
+                FrameLayout.LayoutParams.WRAP_CONTENT,
+                resources.getDimensionPixelSize(R.dimen.small_clock_height)
+            )
+        layoutParams.topMargin = getSmallClockTopMargin()
+        layoutParams.marginStart = getSmallClockStartPadding()
+        smallClockFrame.layoutParams = layoutParams
+        smallClockFrame.clipChildren = false
+        return smallClockFrame
+    }
+
+    private fun getSmallClockTopMargin() =
+        getStatusBarHeight(appContext.resources) +
+            appContext.resources.getDimensionPixelSize(R.dimen.small_clock_padding_top)
+
+    private fun getSmallClockStartPadding() =
+        appContext.resources.getDimensionPixelSize(R.dimen.clock_padding_start)
+
     fun updateColorForAllClocks(@ColorInt seedColor: Int?) {
         clockControllers.values.forEach { it.events.onSeedColorChanged(seedColor = seedColor) }
     }
 
     fun updateColor(clockId: String, @ColorInt seedColor: Int?) {
-        return (clockControllers[clockId] ?: initClockController(clockId))
+        clockControllers[clockId]?.events?.onSeedColorChanged(seedColor)
+    }
+
+    fun updateRegionDarkness() {
+        val isRegionDark = isLockscreenWallpaperDark()
+        clockControllers.values.forEach {
+            it.largeClock.events.onRegionDarknessChanged(isRegionDark)
+            it.smallClock.events.onRegionDarknessChanged(isRegionDark)
+        }
+    }
+
+    private fun isLockscreenWallpaperDark(): Boolean {
+        val colors = wallpaperManager.getWallpaperColors(WallpaperManager.FLAG_LOCK)
+        return (colors?.colorHints?.and(WallpaperColors.HINT_SUPPORTS_DARK_TEXT)) == 0
+    }
+
+    fun updateTimeFormat(clockId: String) {
+        getController(clockId)
             .events
-            .onSeedColorChanged(seedColor)
+            .onTimeFormatChanged(android.text.format.DateFormat.is24HourFormat(appContext))
     }
 
-    fun registerTimeTicker() {
-        ticker =
-            TimeTicker.registerNewReceiver(activity.applicationContext) {
-                clockControllers.values.forEach { it.largeClock.events.onTimeTick() }
-            }
+    fun registerTimeTicker(owner: LifecycleOwner) {
+        val hashCode = owner.hashCode()
+        if (timeTickListeners.keys.contains(hashCode)) {
+            return
+        }
+
+        timeTickListeners[hashCode] = TimeTicker.registerNewReceiver(appContext) { onTimeTick() }
     }
 
-    fun unregisterTimeTicker() {
-        activity.applicationContext.unregisterReceiver(ticker)
+    fun onDestroy() {
+        timeTickListeners.forEach { (_, timeTicker) -> appContext.unregisterReceiver(timeTicker) }
+        timeTickListeners.clear()
+        clockControllers.clear()
+        smallClockFrames.clear()
+    }
+
+    private fun onTimeTick() {
+        clockControllers.values.forEach {
+            it.largeClock.events.onTimeTick()
+            it.smallClock.events.onTimeTick()
+        }
+    }
+
+    fun unregisterTimeTicker(owner: LifecycleOwner) {
+        val hashCode = owner.hashCode()
+        timeTickListeners[hashCode]?.let {
+            appContext.unregisterReceiver(it)
+            timeTickListeners.remove(hashCode)
+        }
     }
 
     private fun initClockController(clockId: String): ClockController {
         val controller =
-            registry.createExampleClock(clockId).also { it?.initialize(activity.resources, 0f, 0f) }
+            registry.createExampleClock(clockId).also { it?.initialize(resources, 0f, 0f) }
         checkNotNull(controller)
-        val screenSizeCalculator = ScreenSizeCalculator.getInstance()
-        val screenSize = screenSizeCalculator.getScreenSize(activity.windowManager.defaultDisplay)
-        val ratio =
-            activity.resources.getDimensionPixelSize(R.dimen.screen_preview_height).toFloat() /
-                screenSize.y.toFloat()
+
+        val isWallpaperDark = isLockscreenWallpaperDark()
+        // Initialize large clock
+        controller.largeClock.events.onRegionDarknessChanged(isWallpaperDark)
         controller.largeClock.events.onFontSettingChanged(
-            activity.resources.getDimensionPixelSize(R.dimen.large_clock_text_size).toFloat() *
-                ratio
+            resources.getDimensionPixelSize(R.dimen.large_clock_text_size).toFloat()
         )
-        clockControllers[clockId] = controller
+        controller.largeClock.events.onTargetRegionChanged(getLargeClockRegion())
+
+        // Initialize small clock
+        controller.smallClock.events.onRegionDarknessChanged(isWallpaperDark)
+        controller.smallClock.events.onFontSettingChanged(
+            resources.getDimensionPixelSize(R.dimen.small_clock_text_size).toFloat()
+        )
+        controller.smallClock.events.onTargetRegionChanged(getSmallClockRegion())
+
+        // Use placeholder for weather clock preview in picker.
+        // Use locale default temp unit since assistant default is not available in this context.
+        val useCelsius =
+            LocalePreferences.getTemperatureUnit() == LocalePreferences.TemperatureUnit.CELSIUS
+        controller.events.onWeatherDataChanged(
+            WeatherData(
+                description = DESCRIPTION_PLACEHODLER,
+                state = WEATHERICON_PLACEHOLDER,
+                temperature =
+                    if (useCelsius) TEMPERATURE_CELSIUS_PLACEHOLDER
+                    else TEMPERATURE_FAHRENHEIT_PLACEHOLDER,
+                useCelsius = useCelsius,
+            )
+        )
         return controller
     }
+
+    /**
+     * Simulate the function of getLargeClockRegion in KeyguardClockSwitch so that we can get a
+     * proper region corresponding to lock screen in picker and for onTargetRegionChanged to scale
+     * and position the clock view
+     */
+    private fun getLargeClockRegion(): Rect {
+        val largeClockTopMargin =
+            resources.getDimensionPixelSize(R.dimen.keyguard_large_clock_top_margin)
+        val targetHeight = resources.getDimensionPixelSize(R.dimen.large_clock_text_size) * 2
+        val top = (screenSize.y / 2 - targetHeight / 2 + largeClockTopMargin / 2)
+        return Rect(0, top, screenSize.x, (top + targetHeight))
+    }
+
+    /**
+     * Simulate the function of getSmallClockRegion in KeyguardClockSwitch so that we can get a
+     * proper region corresponding to lock screen in picker and for onTargetRegionChanged to scale
+     * and position the clock view
+     */
+    private fun getSmallClockRegion(): Rect {
+        val topMargin = getSmallClockTopMargin()
+        val targetHeight = resources.getDimensionPixelSize(R.dimen.small_clock_height)
+        return Rect(getSmallClockStartPadding(), topMargin, screenSize.x, topMargin + targetHeight)
+    }
+
+    companion object {
+        const val DESCRIPTION_PLACEHODLER = ""
+        const val TEMPERATURE_FAHRENHEIT_PLACEHOLDER = 58
+        const val TEMPERATURE_CELSIUS_PLACEHOLDER = 21
+        val WEATHERICON_PLACEHOLDER = WeatherData.WeatherStateIcon.MOSTLY_SUNNY
+        const val USE_CELSIUS_PLACEHODLER = false
+
+        private fun getStatusBarHeight(resource: Resources): Int {
+            var result = 0
+            val resourceId: Int = resource.getIdentifier("status_bar_height", "dimen", "android")
+            if (resourceId > 0) {
+                result = resource.getDimensionPixelSize(resourceId)
+            }
+            return result
+        }
+    }
 }
diff --git a/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselItemViewModel.kt b/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselItemViewModel.kt
new file mode 100644
index 0000000..708fa2f
--- /dev/null
+++ b/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselItemViewModel.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2023 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.
+ */
+package com.android.customization.picker.clock.ui.viewmodel
+
+import android.content.res.Resources
+import com.android.customization.module.CustomizationInjector
+import com.android.wallpaper.R
+import com.android.wallpaper.module.InjectorProvider
+
+class ClockCarouselItemViewModel(val clockId: String) {
+
+    /** Description for accessibility purposes when a clock is selected. */
+    fun getContentDescription(resources: Resources): String {
+        val clockContent =
+            (InjectorProvider.getInjector() as? CustomizationInjector)
+                ?.getClockDescriptionUtils()
+                ?.getDescriptionResId(clockId)
+                ?.let { resources.getString(it) }
+                ?: ""
+        return resources.getString(R.string.select_clock_action_description, clockContent)
+    }
+}
diff --git a/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModel.kt b/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModel.kt
index 60a9e85..a4f9cc4 100644
--- a/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModel.kt
+++ b/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModel.kt
@@ -15,51 +15,60 @@
  */
 package com.android.customization.picker.clock.ui.viewmodel
 
+import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
+import androidx.lifecycle.viewModelScope
 import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor
+import com.android.customization.picker.clock.shared.ClockSize
+import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.Job
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.combine
+import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.flow.distinctUntilChanged
 import kotlinx.coroutines.flow.flatMapLatest
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.flow.mapLatest
 import kotlinx.coroutines.flow.mapNotNull
+import kotlinx.coroutines.flow.stateIn
+import kotlinx.coroutines.launch
 
 /**
  * Clock carousel view model that provides data for the carousel of clock previews. When there is
  * only one item, we should show a single clock preview instead of a carousel.
  */
-class ClockCarouselViewModel(
+class ClockCarouselViewModel
+constructor(
     private val interactor: ClockPickerInteractor,
-) {
+    private val backgroundDispatcher: CoroutineDispatcher,
+) : ViewModel() {
     @OptIn(ExperimentalCoroutinesApi::class)
-    val allClockIds: Flow<List<String>> =
-        interactor.allClocks.mapLatest { allClocks ->
-            // Delay to avoid the case that the full list of clocks is not initiated.
-            delay(CLOCKS_EVENT_UPDATE_DELAY_MILLIS)
-            allClocks.map { it.clockId }
-        }
+    val allClocks: StateFlow<List<ClockCarouselItemViewModel>> =
+        interactor.allClocks
+            .mapLatest { allClocks ->
+                // Delay to avoid the case that the full list of clocks is not initiated.
+                delay(CLOCKS_EVENT_UPDATE_DELAY_MILLIS)
+                allClocks.map { ClockCarouselItemViewModel(it.clockId) }
+            }
+            .stateIn(viewModelScope, SharingStarted.Eagerly, emptyList())
+
+    val selectedClockSize: Flow<ClockSize> = interactor.selectedClockSize
 
     val seedColor: Flow<Int?> = interactor.seedColor
 
-    private val shouldShowCarousel = MutableStateFlow(false)
-    val isCarouselVisible: Flow<Boolean> =
-        combine(allClockIds.map { it.size > 1 }.distinctUntilChanged(), shouldShowCarousel) {
-                hasMoreThanOneClock,
-                shouldShowCarousel ->
-                hasMoreThanOneClock && shouldShowCarousel
-            }
-            .distinctUntilChanged()
+    val isCarouselVisible: Flow<Boolean> = allClocks.map { it.size > 1 }.distinctUntilChanged()
 
     @OptIn(ExperimentalCoroutinesApi::class)
     val selectedIndex: Flow<Int> =
-        allClockIds
+        allClocks
             .flatMapLatest { allClockIds ->
                 interactor.selectedClockId.map { selectedClockId ->
-                    val index = allClockIds.indexOf(selectedClockId)
-                    if (index >= 0) {
+                    val index = allClockIds.indexOfFirst { it.clockId == selectedClockId }
+                    /** Making sure there is no active [setSelectedClockJob] */
+                    val isSetClockIdJobActive = setSelectedClockJob?.isActive == true
+                    if (index >= 0 && !isSetClockIdJobActive) {
                         index
                     } else {
                         null
@@ -69,27 +78,33 @@
             .mapNotNull { it }
 
     // Handle the case when there is only one clock in the carousel
-    private val shouldShowSingleClock = MutableStateFlow(false)
     val isSingleClockViewVisible: Flow<Boolean> =
-        combine(allClockIds.map { it.size == 1 }.distinctUntilChanged(), shouldShowSingleClock) {
-                hasOneClock,
-                shouldShowSingleClock ->
-                hasOneClock && shouldShowSingleClock
-            }
-            .distinctUntilChanged()
+        allClocks.map { it.size == 1 }.distinctUntilChanged()
 
     val clockId: Flow<String> =
-        allClockIds
-            .map { allClockIds -> if (allClockIds.size == 1) allClockIds[0] else null }
+        allClocks
+            .map { allClockIds -> if (allClockIds.size == 1) allClockIds[0].clockId else null }
             .mapNotNull { it }
 
+    private var setSelectedClockJob: Job? = null
     fun setSelectedClock(clockId: String) {
-        interactor.setSelectedClock(clockId)
+        setSelectedClockJob?.cancel()
+        setSelectedClockJob =
+            viewModelScope.launch(backgroundDispatcher) { interactor.setSelectedClock(clockId) }
     }
 
-    fun showClockCarousel(shouldShow: Boolean) {
-        shouldShowCarousel.value = shouldShow
-        shouldShowSingleClock.value = shouldShow
+    class Factory(
+        private val interactor: ClockPickerInteractor,
+        private val backgroundDispatcher: CoroutineDispatcher,
+    ) : ViewModelProvider.Factory {
+        override fun <T : ViewModel> create(modelClass: Class<T>): T {
+            @Suppress("UNCHECKED_CAST")
+            return ClockCarouselViewModel(
+                interactor = interactor,
+                backgroundDispatcher = backgroundDispatcher,
+            )
+                as T
+        }
     }
 
     companion object {
diff --git a/src/com/android/customization/picker/clock/ui/viewmodel/ClockColorViewModel.kt b/src/com/android/customization/picker/clock/ui/viewmodel/ClockColorViewModel.kt
index ea60ae3..9d622da 100644
--- a/src/com/android/customization/picker/clock/ui/viewmodel/ClockColorViewModel.kt
+++ b/src/com/android/customization/picker/clock/ui/viewmodel/ClockColorViewModel.kt
@@ -35,8 +35,8 @@
     }
 
     companion object {
-        const val DEFAULT_COLOR_TONE_MIN = 0
-        const val DEFAULT_COLOR_TONE_MAX = 100
+        private const val DEFAULT_COLOR_TONE_MIN = 0
+        private const val DEFAULT_COLOR_TONE_MAX = 100
 
         fun getPresetColorMap(resources: Resources): Map<String, ClockColorViewModel> {
             val ids = resources.getStringArray(R.array.clock_color_ids)
diff --git a/src/com/android/customization/picker/clock/ui/viewmodel/ClockSectionViewModel.kt b/src/com/android/customization/picker/clock/ui/viewmodel/ClockSectionViewModel.kt
index 008a125..8a65522 100644
--- a/src/com/android/customization/picker/clock/ui/viewmodel/ClockSectionViewModel.kt
+++ b/src/com/android/customization/picker/clock/ui/viewmodel/ClockSectionViewModel.kt
@@ -35,7 +35,7 @@
             (selectedColorId, selectedClockSize) ->
             val colorText =
                 clockColorMap[selectedColorId]?.colorName
-                    ?: context.getString(R.string.default_theme_title)
+                    ?: appContext.getString(R.string.default_theme_title)
             val sizeText =
                 when (selectedClockSize) {
                     ClockSize.SMALL -> appContext.getString(R.string.clock_size_small)
diff --git a/src/com/android/customization/picker/clock/ui/viewmodel/ClockSettingsViewModel.kt b/src/com/android/customization/picker/clock/ui/viewmodel/ClockSettingsViewModel.kt
index c3cd217..a498c71 100644
--- a/src/com/android/customization/picker/clock/ui/viewmodel/ClockSettingsViewModel.kt
+++ b/src/com/android/customization/picker/clock/ui/viewmodel/ClockSettingsViewModel.kt
@@ -20,15 +20,17 @@
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.ViewModelProvider
 import androidx.lifecycle.viewModelScope
-import com.android.customization.model.color.ColorBundle
-import com.android.customization.model.color.ColorSeedOption
+import com.android.customization.model.color.ColorOptionImpl
 import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor
 import com.android.customization.picker.clock.shared.ClockSize
 import com.android.customization.picker.clock.shared.model.ClockMetadataModel
 import com.android.customization.picker.color.domain.interactor.ColorPickerInteractor
+import com.android.customization.picker.color.shared.model.ColorOptionModel
 import com.android.customization.picker.color.shared.model.ColorType
-import com.android.customization.picker.color.ui.viewmodel.ColorOptionViewModel
+import com.android.customization.picker.color.ui.viewmodel.ColorOptionIconViewModel
 import com.android.wallpaper.R
+import com.android.wallpaper.picker.common.text.ui.viewmodel.Text
+import com.android.wallpaper.picker.option.ui.viewmodel.OptionItemViewModel
 import kotlinx.coroutines.ExperimentalCoroutinesApi
 import kotlinx.coroutines.delay
 import kotlinx.coroutines.flow.Flow
@@ -38,8 +40,8 @@
 import kotlinx.coroutines.flow.asStateFlow
 import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.distinctUntilChanged
+import kotlinx.coroutines.flow.flatMapLatest
 import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.mapLatest
 import kotlinx.coroutines.flow.merge
 import kotlinx.coroutines.flow.stateIn
 import kotlinx.coroutines.launch
@@ -50,6 +52,7 @@
     context: Context,
     private val clockPickerInteractor: ClockPickerInteractor,
     private val colorPickerInteractor: ColorPickerInteractor,
+    private val getIsReactiveToTone: (clockId: String?) -> Boolean,
 ) : ViewModel() {
 
     enum class Tab {
@@ -57,20 +60,27 @@
         SIZE,
     }
 
-    val colorMap = ClockColorViewModel.getPresetColorMap(context.resources)
+    private val colorMap = ClockColorViewModel.getPresetColorMap(context.resources)
 
     val selectedClockId: StateFlow<String?> =
         clockPickerInteractor.selectedClockId
             .distinctUntilChanged()
             .stateIn(viewModelScope, SharingStarted.Eagerly, null)
 
-    val selectedColorId: StateFlow<String?> =
+    private val selectedColorId: StateFlow<String?> =
         clockPickerInteractor.selectedColorId.stateIn(viewModelScope, SharingStarted.Eagerly, null)
 
     private val sliderColorToneProgress =
         MutableStateFlow(ClockMetadataModel.DEFAULT_COLOR_TONE_PROGRESS)
     val isSliderEnabled: Flow<Boolean> =
-        clockPickerInteractor.selectedColorId.map { it != null }.distinctUntilChanged()
+        combine(selectedClockId, clockPickerInteractor.selectedColorId) { clockId, colorId ->
+                if (colorId == null) {
+                    false
+                } else {
+                    getIsReactiveToTone(clockId)
+                }
+            }
+            .distinctUntilChanged()
     val sliderProgress: Flow<Int> =
         merge(clockPickerInteractor.colorToneProgress, sliderColorToneProgress)
 
@@ -93,7 +103,7 @@
             )
     }
 
-    fun onSliderProgressStop(progress: Int) {
+    suspend fun onSliderProgressStop(progress: Int) {
         val selectedColorId = selectedColorId.value ?: return
         val clockColorViewModel = colorMap[selectedColorId] ?: return
         clockPickerInteractor.setClockColor(
@@ -108,135 +118,134 @@
     }
 
     @OptIn(ExperimentalCoroutinesApi::class)
-    val colorOptions: StateFlow<List<ColorOptionViewModel>> =
-        combine(colorPickerInteractor.colorOptions, clockPickerInteractor.selectedColorId, ::Pair)
-            .mapLatest { (colorOptions, selectedColorId) ->
-                // Use mapLatest and delay(100) here to prevent too many selectedClockColor update
-                // events from ClockRegistry upstream, caused by sliding the saturation level bar.
-                delay(COLOR_OPTIONS_EVENT_UPDATE_DELAY_MILLIS)
-                buildList {
-                    val defaultThemeColorOptionViewModel =
-                        (colorOptions[ColorType.WALLPAPER_COLOR]
-                                ?.find { it.isSelected }
-                                ?.colorOption as? ColorSeedOption)
-                            ?.toColorOptionViewModel(
-                                context,
-                                selectedColorId,
-                            )
-                            ?: (colorOptions[ColorType.PRESET_COLOR]
-                                    ?.find { it.isSelected }
-                                    ?.colorOption as? ColorBundle)
-                                ?.toColorOptionViewModel(
-                                    context,
-                                    selectedColorId,
-                                )
-                    if (defaultThemeColorOptionViewModel != null) {
-                        add(defaultThemeColorOptionViewModel)
-                    }
+    val colorOptions: Flow<List<OptionItemViewModel<ColorOptionIconViewModel>>> =
+        colorPickerInteractor.colorOptions.map { colorOptions ->
+            // Use mapLatest and delay(100) here to prevent too many selectedClockColor update
+            // events from ClockRegistry upstream, caused by sliding the saturation level bar.
+            delay(COLOR_OPTIONS_EVENT_UPDATE_DELAY_MILLIS)
+            buildList {
+                val defaultThemeColorOptionViewModel =
+                    (colorOptions[ColorType.WALLPAPER_COLOR]?.find { it.isSelected })
+                        ?.toOptionItemViewModel(context)
+                        ?: (colorOptions[ColorType.PRESET_COLOR]?.find { it.isSelected })
+                            ?.toOptionItemViewModel(context)
+                if (defaultThemeColorOptionViewModel != null) {
+                    add(defaultThemeColorOptionViewModel)
+                }
 
-                    val selectedColorPosition = colorMap.keys.indexOf(selectedColorId)
-
-                    colorMap.values.forEachIndexed { index, colorModel ->
-                        val isSelected = selectedColorPosition == index
-                        val colorToneProgress = ClockMetadataModel.DEFAULT_COLOR_TONE_PROGRESS
-                        add(
-                            ColorOptionViewModel(
-                                color0 = colorModel.color,
-                                color1 = colorModel.color,
-                                color2 = colorModel.color,
-                                color3 = colorModel.color,
-                                contentDescription =
+                colorMap.values.forEachIndexed { index, colorModel ->
+                    val isSelectedFlow =
+                        selectedColorId
+                            .map { colorMap.keys.indexOf(it) == index }
+                            .stateIn(viewModelScope)
+                    val colorToneProgress = ClockMetadataModel.DEFAULT_COLOR_TONE_PROGRESS
+                    add(
+                        OptionItemViewModel<ColorOptionIconViewModel>(
+                            key = MutableStateFlow(colorModel.colorId) as StateFlow<String>,
+                            payload =
+                                ColorOptionIconViewModel(
+                                    lightThemeColor0 = colorModel.color,
+                                    lightThemeColor1 = colorModel.color,
+                                    lightThemeColor2 = colorModel.color,
+                                    lightThemeColor3 = colorModel.color,
+                                    darkThemeColor0 = colorModel.color,
+                                    darkThemeColor1 = colorModel.color,
+                                    darkThemeColor2 = colorModel.color,
+                                    darkThemeColor3 = colorModel.color,
+                                ),
+                            text =
+                                Text.Loaded(
                                     context.getString(
                                         R.string.content_description_color_option,
                                         index,
-                                    ),
-                                isSelected = isSelected,
-                                onClick =
+                                    )
+                                ),
+                            isTextUserVisible = false,
+                            isSelected = isSelectedFlow,
+                            onClicked =
+                                isSelectedFlow.map { isSelected ->
                                     if (isSelected) {
                                         null
                                     } else {
                                         {
-                                            clockPickerInteractor.setClockColor(
-                                                selectedColorId = colorModel.colorId,
-                                                colorToneProgress = colorToneProgress,
-                                                seedColor =
-                                                    blendColorWithTone(
-                                                        color = colorModel.color,
-                                                        colorTone =
-                                                            colorModel.getColorTone(
-                                                                colorToneProgress,
-                                                            ),
-                                                    ),
-                                            )
+                                            viewModelScope.launch {
+                                                clockPickerInteractor.setClockColor(
+                                                    selectedColorId = colorModel.colorId,
+                                                    colorToneProgress = colorToneProgress,
+                                                    seedColor =
+                                                        blendColorWithTone(
+                                                            color = colorModel.color,
+                                                            colorTone =
+                                                                colorModel.getColorTone(
+                                                                    colorToneProgress,
+                                                                ),
+                                                        ),
+                                                )
+                                            }
                                         }
-                                    },
-                            )
+                                    }
+                                },
                         )
-                    }
+                    )
                 }
             }
-            .stateIn(
-                scope = viewModelScope,
-                started = SharingStarted.WhileSubscribed(),
-                initialValue = emptyList(),
-            )
+        }
 
     @OptIn(ExperimentalCoroutinesApi::class)
     val selectedColorOptionPosition: Flow<Int> =
-        colorOptions.mapLatest { it.indexOfFirst { colorOption -> colorOption.isSelected } }
+        colorOptions.flatMapLatest { colorOptions ->
+            combine(colorOptions.map { colorOption -> colorOption.isSelected }) { selectedFlags ->
+                selectedFlags.indexOfFirst { it }
+            }
+        }
 
-    private fun ColorSeedOption.toColorOptionViewModel(
-        context: Context,
-        selectedColorId: String?,
-    ): ColorOptionViewModel {
-        val colors = previewInfo.resolveColors(context.resources)
-        return ColorOptionViewModel(
-            color0 = colors[0],
-            color1 = colors[1],
-            color2 = colors[2],
-            color3 = colors[3],
-            contentDescription = getContentDescription(context).toString(),
-            title = context.getString(R.string.default_theme_title),
-            isSelected = selectedColorId == null,
-            onClick =
-                if (selectedColorId == null) {
-                    null
-                } else {
-                    {
-                        clockPickerInteractor.setClockColor(
-                            selectedColorId = null,
-                            colorToneProgress = ClockMetadataModel.DEFAULT_COLOR_TONE_PROGRESS,
-                            seedColor = null,
-                        )
-                    }
-                },
-        )
-    }
-
-    private fun ColorBundle.toColorOptionViewModel(
-        context: Context,
-        selectedColorId: String?
-    ): ColorOptionViewModel {
-        val primaryColor = previewInfo.resolvePrimaryColor(context.resources)
-        val secondaryColor = previewInfo.resolveSecondaryColor(context.resources)
-        return ColorOptionViewModel(
-            color0 = primaryColor,
-            color1 = secondaryColor,
-            color2 = primaryColor,
-            color3 = secondaryColor,
-            contentDescription = getContentDescription(context).toString(),
-            title = context.getString(R.string.default_theme_title),
-            isSelected = selectedColorId == null,
-            onClick =
-                if (selectedColorId == null) {
-                    null
-                } else {
-                    {
-                        clockPickerInteractor.setClockColor(
-                            selectedColorId = null,
-                            colorToneProgress = ClockMetadataModel.DEFAULT_COLOR_TONE_PROGRESS,
-                            seedColor = null,
-                        )
+    private suspend fun ColorOptionModel.toOptionItemViewModel(
+        context: Context
+    ): OptionItemViewModel<ColorOptionIconViewModel> {
+        val lightThemeColors =
+            (colorOption as ColorOptionImpl)
+                .previewInfo
+                .resolveColors(
+                    /** darkTheme= */
+                    false
+                )
+        val darkThemeColors =
+            colorOption.previewInfo.resolveColors(
+                /** darkTheme= */
+                true
+            )
+        val isSelectedFlow = selectedColorId.map { it == null }.stateIn(viewModelScope)
+        return OptionItemViewModel<ColorOptionIconViewModel>(
+            key = MutableStateFlow(key) as StateFlow<String>,
+            payload =
+                ColorOptionIconViewModel(
+                    lightThemeColor0 = lightThemeColors[0],
+                    lightThemeColor1 = lightThemeColors[1],
+                    lightThemeColor2 = lightThemeColors[2],
+                    lightThemeColor3 = lightThemeColors[3],
+                    darkThemeColor0 = darkThemeColors[0],
+                    darkThemeColor1 = darkThemeColors[1],
+                    darkThemeColor2 = darkThemeColors[2],
+                    darkThemeColor3 = darkThemeColors[3],
+                ),
+            text = Text.Loaded(context.getString(R.string.default_theme_title)),
+            isTextUserVisible = true,
+            isSelected = isSelectedFlow,
+            onClicked =
+                isSelectedFlow.map { isSelected ->
+                    if (isSelected) {
+                        null
+                    } else {
+                        {
+                            viewModelScope.launch {
+                                clockPickerInteractor.setClockColor(
+                                    selectedColorId = null,
+                                    colorToneProgress =
+                                        ClockMetadataModel.DEFAULT_COLOR_TONE_PROGRESS,
+                                    seedColor = null,
+                                )
+                            }
+                        }
                     }
                 },
         )
@@ -295,6 +304,7 @@
         private val context: Context,
         private val clockPickerInteractor: ClockPickerInteractor,
         private val colorPickerInteractor: ColorPickerInteractor,
+        private val getIsReactiveToTone: (clockId: String?) -> Boolean,
     ) : ViewModelProvider.Factory {
         override fun <T : ViewModel> create(modelClass: Class<T>): T {
             @Suppress("UNCHECKED_CAST")
@@ -302,6 +312,7 @@
                 context = context,
                 clockPickerInteractor = clockPickerInteractor,
                 colorPickerInteractor = colorPickerInteractor,
+                getIsReactiveToTone = getIsReactiveToTone,
             )
                 as T
         }
diff --git a/src/com/android/customization/picker/clock/utils/ClockDescriptionUtils.kt b/src/com/android/customization/picker/clock/utils/ClockDescriptionUtils.kt
new file mode 100644
index 0000000..9a0b66f
--- /dev/null
+++ b/src/com/android/customization/picker/clock/utils/ClockDescriptionUtils.kt
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2023 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.
+ */
+package com.android.customization.picker.clock.utils
+
+import androidx.annotation.StringRes
+
+/** Provides clock description for accessibility purposes. */
+interface ClockDescriptionUtils {
+
+    /**
+     * TODO (b/287507746) : Migrate description res ID to system UI or a shared library, instead of
+     * preserving the clock description at the Wallpaper Picker side.
+     */
+    @StringRes fun getDescriptionResId(clockId: String): Int
+}
diff --git a/src/com/android/customization/picker/clock/utils/ThemePickerClockDescriptionUtils.kt b/src/com/android/customization/picker/clock/utils/ThemePickerClockDescriptionUtils.kt
new file mode 100644
index 0000000..43f19b3
--- /dev/null
+++ b/src/com/android/customization/picker/clock/utils/ThemePickerClockDescriptionUtils.kt
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2023 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.
+ */
+package com.android.customization.picker.clock.utils
+
+import androidx.annotation.StringRes
+import com.android.wallpaper.R
+
+class ThemePickerClockDescriptionUtils : ClockDescriptionUtils {
+    @StringRes
+    override fun getDescriptionResId(clockId: String): Int {
+        return R.string.clock_title
+    }
+}
diff --git a/src/com/android/customization/picker/color/ColorPickerFragment.kt b/src/com/android/customization/picker/color/ColorPickerFragment.kt
deleted file mode 100644
index c8ecb7f..0000000
--- a/src/com/android/customization/picker/color/ColorPickerFragment.kt
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2023 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.
- */
-package com.android.customization.picker.color
-
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import com.android.wallpaper.R
-import com.android.wallpaper.picker.AppbarFragment
-
-// TODO (b/262924623): Color Picker Fragment
-class ColorPickerFragment : AppbarFragment() {
-    override fun onCreateView(
-        inflater: LayoutInflater,
-        container: ViewGroup?,
-        savedInstanceState: Bundle?
-    ): View {
-        val view =
-            inflater.inflate(
-                R.layout.fragment_color_picker,
-                container,
-                false,
-            )
-        setUpToolbar(view)
-        return view
-    }
-}
diff --git a/src/com/android/customization/picker/color/data/repository/ColorPickerRepositoryImpl.kt b/src/com/android/customization/picker/color/data/repository/ColorPickerRepositoryImpl.kt
index 512a500..41ef3a5 100644
--- a/src/com/android/customization/picker/color/data/repository/ColorPickerRepositoryImpl.kt
+++ b/src/com/android/customization/picker/color/data/repository/ColorPickerRepositoryImpl.kt
@@ -16,16 +16,15 @@
  */
 package com.android.customization.picker.color.data.repository
 
-import android.app.WallpaperColors
 import android.util.Log
 import com.android.customization.model.CustomizationManager
-import com.android.customization.model.color.ColorBundle
 import com.android.customization.model.color.ColorCustomizationManager
 import com.android.customization.model.color.ColorOption
-import com.android.customization.model.color.ColorSeedOption
+import com.android.customization.model.color.ColorOptionImpl
 import com.android.customization.picker.color.shared.model.ColorOptionModel
 import com.android.customization.picker.color.shared.model.ColorType
 import com.android.systemui.monet.Style
+import com.android.wallpaper.model.WallpaperColorsModel
 import com.android.wallpaper.model.WallpaperColorsViewModel
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.StateFlow
@@ -40,9 +39,9 @@
     private val colorManager: ColorCustomizationManager,
 ) : ColorPickerRepository {
 
-    private val homeWallpaperColors: StateFlow<WallpaperColors?> =
+    private val homeWallpaperColors: StateFlow<WallpaperColorsModel?> =
         wallpaperColorsViewModel.homeWallpaperColors
-    private val lockWallpaperColors: StateFlow<WallpaperColors?> =
+    private val lockWallpaperColors: StateFlow<WallpaperColorsModel?> =
         wallpaperColorsViewModel.lockWallpaperColors
 
     override val colorOptions: Flow<Map<ColorType, List<ColorOptionModel>>> =
@@ -51,8 +50,27 @@
             }
             .map { (homeColors, lockColors) ->
                 suspendCancellableCoroutine { continuation ->
-                    colorManager.setWallpaperColors(homeColors, lockColors)
-                    colorManager.fetchOptions(
+                    if (
+                        homeColors is WallpaperColorsModel.Loading ||
+                            lockColors is WallpaperColorsModel.Loading
+                    ) {
+                        continuation.resumeWith(
+                            Result.success(
+                                mapOf(
+                                    ColorType.WALLPAPER_COLOR to listOf(),
+                                    ColorType.PRESET_COLOR to listOf()
+                                )
+                            )
+                        )
+                        return@suspendCancellableCoroutine
+                    }
+                    val homeColorsLoaded = homeColors as WallpaperColorsModel.Loaded
+                    val lockColorsLoaded = lockColors as WallpaperColorsModel.Loaded
+                    colorManager.setWallpaperColors(
+                        homeColorsLoaded.colors,
+                        lockColorsLoaded.colors
+                    )
+                    colorManager.fetchRevampedUIOptions(
                         object : CustomizationManager.OptionsFetchedListener<ColorOption?> {
                             override fun onOptionsLoaded(options: MutableList<ColorOption?>?) {
                                 val wallpaperColorOptions: MutableList<ColorOptionModel> =
@@ -60,10 +78,11 @@
                                 val presetColorOptions: MutableList<ColorOptionModel> =
                                     mutableListOf()
                                 options?.forEach { option ->
-                                    when (option) {
-                                        is ColorSeedOption ->
+                                    when ((option as ColorOptionImpl).type) {
+                                        ColorType.WALLPAPER_COLOR ->
                                             wallpaperColorOptions.add(option.toModel())
-                                        is ColorBundle -> presetColorOptions.add(option.toModel())
+                                        ColorType.PRESET_COLOR ->
+                                            presetColorOptions.add(option.toModel())
                                     }
                                 }
                                 continuation.resumeWith(
@@ -113,16 +132,16 @@
         val overlays = colorManager.currentOverlays
         val styleOrNull = colorManager.currentStyle
         val style = styleOrNull?.let { Style.valueOf(it) } ?: Style.TONAL_SPOT
-        val colorOptionBuilder =
-            // Does not matter whether ColorSeedOption or ColorBundle builder is used here
-            // because to apply the color, one just needs a generic ColorOption
-            ColorSeedOption.Builder().setSource(colorManager.currentColorSource).setStyle(style)
+        val source = colorManager.currentColorSource
+        val colorOptionBuilder = ColorOptionImpl.Builder()
+        colorOptionBuilder.source = source
+        colorOptionBuilder.style = style
         for (overlay in overlays) {
             colorOptionBuilder.addOverlayPackage(overlay.key, overlay.value)
         }
         val colorOption = colorOptionBuilder.build()
         return ColorOptionModel(
-            key = "${colorOption.style}::${colorOption.serializedPackages}",
+            key = "",
             colorOption = colorOption,
             isSelected = false,
         )
@@ -132,9 +151,9 @@
         return colorManager.currentColorSource
     }
 
-    private fun ColorOption.toModel(): ColorOptionModel {
+    private fun ColorOptionImpl.toModel(): ColorOptionModel {
         return ColorOptionModel(
-            key = "${this.style}::${this.serializedPackages}",
+            key = "${this.type}::${this.style}::${this.serializedPackages}",
             colorOption = this,
             isSelected = isActive(colorManager),
         )
diff --git a/src/com/android/customization/picker/color/data/repository/FakeColorPickerRepository.kt b/src/com/android/customization/picker/color/data/repository/FakeColorPickerRepository.kt
index edbf6dc..714129d 100644
--- a/src/com/android/customization/picker/color/data/repository/FakeColorPickerRepository.kt
+++ b/src/com/android/customization/picker/color/data/repository/FakeColorPickerRepository.kt
@@ -19,9 +19,8 @@
 import android.content.Context
 import android.graphics.Color
 import android.text.TextUtils
-import com.android.customization.model.color.ColorBundle
+import com.android.customization.model.color.ColorOptionImpl
 import com.android.customization.model.color.ColorOptionsProvider
-import com.android.customization.model.color.ColorSeedOption
 import com.android.customization.picker.color.shared.model.ColorOptionModel
 import com.android.customization.picker.color.shared.model.ColorType
 import kotlinx.coroutines.flow.MutableStateFlow
@@ -82,9 +81,7 @@
                                 ColorOptionModel(
                                     key = "${ColorType.PRESET_COLOR}::$index",
                                     colorOption = buildPresetOption(index),
-                                    isSelected =
-                                        selectedColorOptionType == ColorType.PRESET_COLOR &&
-                                            selectedColorOptionIndex == index,
+                                    isSelected = isSelected,
                                 )
                             if (isSelected) {
                                 selectedColorOption = colorOption
@@ -95,36 +92,36 @@
             )
     }
 
-    private fun buildPresetOption(index: Int): ColorBundle {
-        return ColorBundle.Builder()
+    private fun buildPresetOption(index: Int): ColorOptionImpl {
+        val builder = ColorOptionImpl.Builder()
+        builder.lightColors =
+            intArrayOf(Color.TRANSPARENT, Color.TRANSPARENT, Color.TRANSPARENT, Color.TRANSPARENT)
+        builder.darkColors =
+            intArrayOf(Color.TRANSPARENT, Color.TRANSPARENT, Color.TRANSPARENT, Color.TRANSPARENT)
+        builder.index = index
+        builder.type = ColorType.PRESET_COLOR
+        builder.source = ColorOptionsProvider.COLOR_SOURCE_PRESET
+        builder.title = "Preset"
+        builder
             .addOverlayPackage("TEST_PACKAGE_TYPE", "preset_color")
             .addOverlayPackage("TEST_PACKAGE_INDEX", "$index")
-            .setIndex(index)
-            .build(context)
+        return builder.build()
     }
 
-    private fun buildWallpaperOption(index: Int): ColorSeedOption {
-        return ColorSeedOption.Builder()
-            .setLightColors(
-                intArrayOf(
-                    Color.TRANSPARENT,
-                    Color.TRANSPARENT,
-                    Color.TRANSPARENT,
-                    Color.TRANSPARENT
-                )
-            )
-            .setDarkColors(
-                intArrayOf(
-                    Color.TRANSPARENT,
-                    Color.TRANSPARENT,
-                    Color.TRANSPARENT,
-                    Color.TRANSPARENT
-                )
-            )
+    private fun buildWallpaperOption(index: Int): ColorOptionImpl {
+        val builder = ColorOptionImpl.Builder()
+        builder.lightColors =
+            intArrayOf(Color.TRANSPARENT, Color.TRANSPARENT, Color.TRANSPARENT, Color.TRANSPARENT)
+        builder.darkColors =
+            intArrayOf(Color.TRANSPARENT, Color.TRANSPARENT, Color.TRANSPARENT, Color.TRANSPARENT)
+        builder.index = index
+        builder.type = ColorType.WALLPAPER_COLOR
+        builder.source = ColorOptionsProvider.COLOR_SOURCE_HOME
+        builder.title = "Dynamic"
+        builder
             .addOverlayPackage("TEST_PACKAGE_TYPE", "wallpaper_color")
             .addOverlayPackage("TEST_PACKAGE_INDEX", "$index")
-            .setIndex(index)
-            .build()
+        return builder.build()
     }
 
     override suspend fun select(colorOptionModel: ColorOptionModel) {
@@ -163,9 +160,9 @@
     override fun getCurrentColorOption(): ColorOptionModel = selectedColorOption
 
     override fun getCurrentColorSource(): String? =
-        when (selectedColorOption.colorOption) {
-            is ColorSeedOption -> ColorOptionsProvider.COLOR_SOURCE_HOME
-            is ColorBundle -> ColorOptionsProvider.COLOR_SOURCE_PRESET
+        when ((selectedColorOption.colorOption as ColorOptionImpl).type) {
+            ColorType.WALLPAPER_COLOR -> ColorOptionsProvider.COLOR_SOURCE_HOME
+            ColorType.PRESET_COLOR -> ColorOptionsProvider.COLOR_SOURCE_PRESET
             else -> null
         }
 
diff --git a/src/com/android/customization/picker/color/ui/adapter/ColorOptionAdapter.kt b/src/com/android/customization/picker/color/ui/adapter/ColorOptionAdapter.kt
deleted file mode 100644
index 7aa390d..0000000
--- a/src/com/android/customization/picker/color/ui/adapter/ColorOptionAdapter.kt
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2023 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.
- *
- */
-
-package com.android.customization.picker.color.ui.adapter
-
-import android.graphics.BlendMode
-import android.graphics.BlendModeColorFilter
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import android.widget.ImageView
-import android.widget.TextView
-import androidx.core.view.isVisible
-import androidx.recyclerview.widget.RecyclerView
-import com.android.customization.picker.color.ui.viewmodel.ColorOptionViewModel
-import com.android.wallpaper.R
-
-/**
- * Adapts between color option items and views.
- *
- * TODO (b/272109171): Remove after clock settings is refactored to use OptionItemAdapter
- */
-class ColorOptionAdapter : RecyclerView.Adapter<ColorOptionAdapter.ViewHolder>() {
-
-    private val items = mutableListOf<ColorOptionViewModel>()
-    private var isTitleVisible = false
-
-    fun setItems(items: List<ColorOptionViewModel>) {
-        this.items.clear()
-        this.items.addAll(items)
-        isTitleVisible = items.any { item -> item.title != null }
-        notifyDataSetChanged()
-    }
-
-    class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
-        val borderView: View = itemView.requireViewById(R.id.selection_border)
-        val backgroundView: View = itemView.requireViewById(R.id.background)
-        val color0View: ImageView = itemView.requireViewById(R.id.color_preview_0)
-        val color1View: ImageView = itemView.requireViewById(R.id.color_preview_1)
-        val color2View: ImageView = itemView.requireViewById(R.id.color_preview_2)
-        val color3View: ImageView = itemView.requireViewById(R.id.color_preview_3)
-        val optionTitleView: TextView = itemView.requireViewById(R.id.option_title)
-    }
-
-    override fun getItemCount(): Int {
-        return items.size
-    }
-
-    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
-        return ViewHolder(
-            LayoutInflater.from(parent.context)
-                .inflate(
-                    R.layout.color_option_with_background,
-                    parent,
-                    false,
-                )
-        )
-    }
-
-    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
-        val item = items[position]
-
-        holder.itemView.setOnClickListener(
-            if (item.onClick != null) {
-                View.OnClickListener { item.onClick.invoke() }
-            } else {
-                null
-            }
-        )
-        if (item.isSelected) {
-            holder.borderView.alpha = 1f
-            holder.borderView.scaleX = 1f
-            holder.borderView.scaleY = 1f
-            holder.backgroundView.scaleX = 0.86f
-            holder.backgroundView.scaleY = 0.86f
-        } else {
-            holder.borderView.alpha = 0f
-            holder.backgroundView.scaleX = 1f
-            holder.backgroundView.scaleY = 1f
-        }
-        holder.color0View.drawable.colorFilter = BlendModeColorFilter(item.color0, BlendMode.SRC)
-        holder.color1View.drawable.colorFilter = BlendModeColorFilter(item.color1, BlendMode.SRC)
-        holder.color2View.drawable.colorFilter = BlendModeColorFilter(item.color2, BlendMode.SRC)
-        holder.color3View.drawable.colorFilter = BlendModeColorFilter(item.color3, BlendMode.SRC)
-        holder.itemView.contentDescription = item.contentDescription
-        holder.optionTitleView.isVisible = isTitleVisible
-        holder.optionTitleView.text = item.title
-    }
-}
diff --git a/src/com/android/customization/picker/color/ui/adapter/ColorTypeTabAdapter.kt b/src/com/android/customization/picker/color/ui/adapter/ColorTypeTabAdapter.kt
index bb9f082..553f586 100644
--- a/src/com/android/customization/picker/color/ui/adapter/ColorTypeTabAdapter.kt
+++ b/src/com/android/customization/picker/color/ui/adapter/ColorTypeTabAdapter.kt
@@ -55,7 +55,7 @@
         val item = items[position]
         holder.itemView.isSelected = item.isSelected
         holder.textView.text = item.name
-        holder.textView.setOnClickListener(
+        holder.itemView.setOnClickListener(
             if (item.onClick != null) {
                 View.OnClickListener { item.onClick.invoke() }
             } else {
diff --git a/src/com/android/customization/picker/color/ui/binder/ColorOptionIconBinder.kt b/src/com/android/customization/picker/color/ui/binder/ColorOptionIconBinder.kt
index 1478cc4..31d3dc8 100644
--- a/src/com/android/customization/picker/color/ui/binder/ColorOptionIconBinder.kt
+++ b/src/com/android/customization/picker/color/ui/binder/ColorOptionIconBinder.kt
@@ -17,25 +17,29 @@
 
 package com.android.customization.picker.color.ui.binder
 
-import android.graphics.BlendMode
-import android.graphics.BlendModeColorFilter
-import android.view.ViewGroup
-import android.widget.ImageView
+import com.android.customization.picker.color.ui.view.ColorOptionIconView
 import com.android.customization.picker.color.ui.viewmodel.ColorOptionIconViewModel
-import com.android.wallpaper.R
 
 object ColorOptionIconBinder {
     fun bind(
-        view: ViewGroup,
+        view: ColorOptionIconView,
         viewModel: ColorOptionIconViewModel,
+        darkTheme: Boolean,
     ) {
-        val color0View: ImageView = view.requireViewById(R.id.color_preview_0)
-        val color1View: ImageView = view.requireViewById(R.id.color_preview_1)
-        val color2View: ImageView = view.requireViewById(R.id.color_preview_2)
-        val color3View: ImageView = view.requireViewById(R.id.color_preview_3)
-        color0View.drawable.colorFilter = BlendModeColorFilter(viewModel.color0, BlendMode.SRC)
-        color1View.drawable.colorFilter = BlendModeColorFilter(viewModel.color1, BlendMode.SRC)
-        color2View.drawable.colorFilter = BlendModeColorFilter(viewModel.color2, BlendMode.SRC)
-        color3View.drawable.colorFilter = BlendModeColorFilter(viewModel.color3, BlendMode.SRC)
+        if (darkTheme) {
+            view.bindColor(
+                viewModel.darkThemeColor0,
+                viewModel.darkThemeColor1,
+                viewModel.darkThemeColor2,
+                viewModel.darkThemeColor3,
+            )
+        } else {
+            view.bindColor(
+                viewModel.lightThemeColor0,
+                viewModel.lightThemeColor1,
+                viewModel.lightThemeColor2,
+                viewModel.lightThemeColor3,
+            )
+        }
     }
 }
diff --git a/src/com/android/customization/picker/color/ui/binder/ColorPickerBinder.kt b/src/com/android/customization/picker/color/ui/binder/ColorPickerBinder.kt
index 7623048..cd9dd54 100644
--- a/src/com/android/customization/picker/color/ui/binder/ColorPickerBinder.kt
+++ b/src/com/android/customization/picker/color/ui/binder/ColorPickerBinder.kt
@@ -17,8 +17,10 @@
 
 package com.android.customization.picker.color.ui.binder
 
+import android.content.res.Configuration
+import android.os.Bundle
+import android.os.Parcelable
 import android.view.View
-import android.view.ViewGroup
 import android.widget.TextView
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.LifecycleOwner
@@ -27,12 +29,12 @@
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import com.android.customization.picker.color.ui.adapter.ColorTypeTabAdapter
+import com.android.customization.picker.color.ui.view.ColorOptionIconView
 import com.android.customization.picker.color.ui.viewmodel.ColorOptionIconViewModel
 import com.android.customization.picker.color.ui.viewmodel.ColorPickerViewModel
 import com.android.customization.picker.common.ui.view.ItemSpacing
 import com.android.wallpaper.R
 import com.android.wallpaper.picker.option.ui.adapter.OptionItemAdapter
-import kotlinx.coroutines.flow.collect
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.launch
 
@@ -48,7 +50,7 @@
         view: View,
         viewModel: ColorPickerViewModel,
         lifecycleOwner: LifecycleOwner,
-    ) {
+    ): Binding {
         val colorTypeTabView: RecyclerView = view.requireViewById(R.id.color_type_tabs)
         val colorTypeTabSubheaderView: TextView = view.requireViewById(R.id.color_type_tab_subhead)
         val colorOptionContainerView: RecyclerView = view.requireViewById(R.id.color_options)
@@ -63,8 +65,11 @@
                 layoutResourceId = R.layout.color_option_2,
                 lifecycleOwner = lifecycleOwner,
                 bindIcon = { foregroundView: View, colorIcon: ColorOptionIconViewModel ->
-                    val viewGroup = foregroundView as? ViewGroup
-                    viewGroup?.let { ColorOptionIconBinder.bind(viewGroup, colorIcon) }
+                    val colorOptionIconView = foregroundView as? ColorOptionIconView
+                    val night =
+                        (view.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK ==
+                            Configuration.UI_MODE_NIGHT_YES)
+                    colorOptionIconView?.let { ColorOptionIconBinder.bind(it, colorIcon, night) }
                 }
             )
         colorOptionContainerView.adapter = colorOptionAdapter
@@ -89,9 +94,52 @@
                 launch {
                     viewModel.colorOptions.collect { colorOptions ->
                         colorOptionAdapter.setItems(colorOptions)
+                        // the same recycler view is used for different color types tabs
+                        // the scroll state of each tab should be independent of others
+                        if (layoutManagerSavedState != null) {
+                            colorOptionContainerView.post {
+                                (colorOptionContainerView.layoutManager as LinearLayoutManager)
+                                    .onRestoreInstanceState(layoutManagerSavedState)
+                                layoutManagerSavedState = null
+                            }
+                        } else {
+                            var indexToFocus = colorOptions.indexOfFirst { it.isSelected.value }
+                            indexToFocus = if (indexToFocus < 0) 0 else indexToFocus
+                            val linearLayoutManager =
+                                object : LinearLayoutManager(view.context, HORIZONTAL, false) {
+                                    override fun onLayoutCompleted(state: RecyclerView.State?) {
+                                        super.onLayoutCompleted(state)
+                                        // scrollToPosition seems to be inconsistently moving
+                                        // selected
+                                        // color to different positions
+                                        scrollToPositionWithOffset(indexToFocus, 0)
+                                    }
+                                }
+                            colorOptionContainerView.layoutManager = linearLayoutManager
+                        }
                     }
                 }
             }
         }
+        return object : Binding {
+            override fun saveInstanceState(savedState: Bundle) {
+                savedState.putParcelable(
+                    LAYOUT_MANAGER_SAVED_STATE,
+                    colorOptionContainerView.layoutManager?.onSaveInstanceState()
+                )
+            }
+
+            override fun restoreInstanceState(savedState: Bundle) {
+                layoutManagerSavedState = savedState.getParcelable(LAYOUT_MANAGER_SAVED_STATE)
+            }
+        }
     }
+
+    interface Binding {
+        fun saveInstanceState(savedState: Bundle)
+        fun restoreInstanceState(savedState: Bundle)
+    }
+
+    private val LAYOUT_MANAGER_SAVED_STATE: String = "layout_manager_state"
+    private var layoutManagerSavedState: Parcelable? = null
 }
diff --git a/src/com/android/customization/picker/color/ui/binder/ColorSectionViewBinder.kt b/src/com/android/customization/picker/color/ui/binder/ColorSectionViewBinder.kt
index 9e232d7..2daefe4 100644
--- a/src/com/android/customization/picker/color/ui/binder/ColorSectionViewBinder.kt
+++ b/src/com/android/customization/picker/color/ui/binder/ColorSectionViewBinder.kt
@@ -17,9 +17,9 @@
 
 package com.android.customization.picker.color.ui.binder
 
+import android.content.res.Configuration
 import android.view.LayoutInflater
 import android.view.View
-import android.view.ViewGroup
 import android.widget.ImageView
 import android.widget.LinearLayout
 import androidx.core.view.isVisible
@@ -30,6 +30,7 @@
 import com.android.customization.picker.color.ui.viewmodel.ColorOptionIconViewModel
 import com.android.customization.picker.color.ui.viewmodel.ColorPickerViewModel
 import com.android.wallpaper.R
+import com.android.wallpaper.picker.common.icon.ui.viewbinder.ContentDescriptionViewBinder
 import com.android.wallpaper.picker.option.ui.viewmodel.OptionItemViewModel
 import kotlinx.coroutines.launch
 
@@ -91,10 +92,23 @@
                 })
                 .let { if (it < 0) 0 else it }
         options.subList(0, colorOptionSlotSize).forEach { item ->
+            val night =
+                (view.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK ==
+                    Configuration.UI_MODE_NIGHT_YES)
             val itemView =
                 LayoutInflater.from(view.context)
                     .inflate(R.layout.color_option_no_background, view, false)
-            item.payload?.let { ColorOptionIconBinder.bind(itemView as ViewGroup, item.payload) }
+            item.payload?.let {
+                ColorOptionIconBinder.bind(
+                    itemView.requireViewById(R.id.option_tile),
+                    item.payload,
+                    night
+                )
+                ContentDescriptionViewBinder.bind(
+                    view = itemView.requireViewById(R.id.option_tile),
+                    viewModel = item.text,
+                )
+            }
             val optionSelectedView = itemView.requireViewById<ImageView>(R.id.option_selected)
 
             lifecycleOwner.lifecycleScope.launch {
diff --git a/src/com/android/customization/picker/color/ui/fragment/ColorPickerFragment.kt b/src/com/android/customization/picker/color/ui/fragment/ColorPickerFragment.kt
index c6b2023..78bfa43 100644
--- a/src/com/android/customization/picker/color/ui/fragment/ColorPickerFragment.kt
+++ b/src/com/android/customization/picker/color/ui/fragment/ColorPickerFragment.kt
@@ -15,6 +15,7 @@
  */
 package com.android.customization.picker.color.ui.fragment
 
+import android.app.WallpaperManager
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
@@ -23,21 +24,30 @@
 import androidx.cardview.widget.CardView
 import androidx.lifecycle.ViewModelProvider
 import androidx.lifecycle.get
+import androidx.lifecycle.lifecycleScope
 import com.android.customization.model.mode.DarkModeSectionController
 import com.android.customization.module.ThemePickerInjector
 import com.android.customization.picker.color.ui.binder.ColorPickerBinder
 import com.android.wallpaper.R
+import com.android.wallpaper.model.WallpaperColorsModel
+import com.android.wallpaper.model.WallpaperColorsViewModel
+import com.android.wallpaper.module.CustomizationSections
 import com.android.wallpaper.module.InjectorProvider
 import com.android.wallpaper.picker.AppbarFragment
 import com.android.wallpaper.picker.customization.ui.binder.ScreenPreviewBinder
 import com.android.wallpaper.picker.customization.ui.viewmodel.ScreenPreviewViewModel
 import com.android.wallpaper.util.DisplayUtils
 import com.android.wallpaper.util.PreviewUtils
+import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.launch
 import kotlinx.coroutines.suspendCancellableCoroutine
+import kotlinx.coroutines.withContext
 
 @OptIn(ExperimentalCoroutinesApi::class)
 class ColorPickerFragment : AppbarFragment() {
+    private var binding: ColorPickerBinder.Binding? = null
+
     companion object {
         @JvmStatic
         fun newInstance(): ColorPickerFragment {
@@ -63,19 +73,25 @@
         val wallpaperInfoFactory = injector.getCurrentWallpaperInfoFactory(requireContext())
         val displayUtils: DisplayUtils = injector.getDisplayUtils(requireContext())
         val wcViewModel = injector.getWallpaperColorsViewModel()
-        ColorPickerBinder.bind(
-            view = view,
-            viewModel =
-                ViewModelProvider(
-                        requireActivity(),
-                        injector.getColorPickerViewModelFactory(
-                            context = requireContext(),
-                            wallpaperColorsViewModel = wcViewModel,
-                        ),
-                    )
-                    .get(),
-            lifecycleOwner = this,
-        )
+        val wallpaperManager = WallpaperManager.getInstance(requireContext())
+
+        binding =
+            ColorPickerBinder.bind(
+                view = view,
+                viewModel =
+                    ViewModelProvider(
+                            requireActivity(),
+                            injector.getColorPickerViewModelFactory(
+                                context = requireContext(),
+                                wallpaperColorsViewModel = wcViewModel,
+                            ),
+                        )
+                        .get(),
+                lifecycleOwner = this,
+            )
+
+        savedInstanceState?.let { binding?.restoreInstanceState(it) }
+
         ScreenPreviewBinder.bind(
             activity = requireActivity(),
             previewView = lockScreenView,
@@ -90,23 +106,38 @@
                                         R.string.lock_screen_preview_provider_authority,
                                     ),
                         ),
-                    wallpaperInfoProvider = {
+                    wallpaperInfoProvider = { forceReload ->
                         suspendCancellableCoroutine { continuation ->
                             wallpaperInfoFactory.createCurrentWallpaperInfos(
                                 { homeWallpaper, lockWallpaper, _ ->
+                                    lifecycleScope.launch {
+                                        if (
+                                            wcViewModel.lockWallpaperColors.value
+                                                is WallpaperColorsModel.Loading
+                                        ) {
+                                            loadInitialColors(
+                                                wallpaperManager,
+                                                wcViewModel,
+                                                CustomizationSections.Screen.LOCK_SCREEN
+                                            )
+                                        }
+                                    }
                                     continuation.resume(lockWallpaper ?: homeWallpaper, null)
                                 },
-                                /* forceRefresh= */ true,
+                                forceReload,
                             )
                         }
                     },
                     onWallpaperColorChanged = { colors ->
                         wcViewModel.setLockWallpaperColors(colors)
                     },
+                    wallpaperInteractor = injector.getWallpaperInteractor(requireContext()),
+                    screen = CustomizationSections.Screen.LOCK_SCREEN,
                 ),
             lifecycleOwner = this,
             offsetToStart =
                 displayUtils.isSingleDisplayOrUnfoldedHorizontalHinge(requireActivity()),
+            onWallpaperPreviewDirty = { activity?.recreate() },
         )
         ScreenPreviewBinder.bind(
             activity = requireActivity(),
@@ -122,23 +153,38 @@
                                         R.string.grid_control_metadata_name,
                                     ),
                         ),
-                    wallpaperInfoProvider = {
+                    wallpaperInfoProvider = { forceReload ->
                         suspendCancellableCoroutine { continuation ->
                             wallpaperInfoFactory.createCurrentWallpaperInfos(
                                 { homeWallpaper, lockWallpaper, _ ->
+                                    lifecycleScope.launch {
+                                        if (
+                                            wcViewModel.homeWallpaperColors.value
+                                                is WallpaperColorsModel.Loading
+                                        ) {
+                                            loadInitialColors(
+                                                wallpaperManager,
+                                                wcViewModel,
+                                                CustomizationSections.Screen.HOME_SCREEN
+                                            )
+                                        }
+                                    }
                                     continuation.resume(homeWallpaper ?: lockWallpaper, null)
                                 },
-                                /* forceRefresh= */ true,
+                                forceReload,
                             )
                         }
                     },
                     onWallpaperColorChanged = { colors ->
-                        wcViewModel.setLockWallpaperColors(colors)
+                        wcViewModel.setHomeWallpaperColors(colors)
                     },
+                    wallpaperInteractor = injector.getWallpaperInteractor(requireContext()),
+                    screen = CustomizationSections.Screen.HOME_SCREEN,
                 ),
             lifecycleOwner = this,
             offsetToStart =
                 displayUtils.isSingleDisplayOrUnfoldedHorizontalHinge(requireActivity()),
+            onWallpaperPreviewDirty = { activity?.recreate() },
         )
         val darkModeToggleContainerView: FrameLayout =
             view.requireViewById(R.id.dark_mode_toggle_container)
@@ -154,6 +200,35 @@
         return view
     }
 
+    private suspend fun loadInitialColors(
+        wallpaperManager: WallpaperManager,
+        colorViewModel: WallpaperColorsViewModel,
+        screen: CustomizationSections.Screen,
+    ) {
+        withContext(Dispatchers.IO) {
+            val colors =
+                wallpaperManager.getWallpaperColors(
+                    if (screen == CustomizationSections.Screen.LOCK_SCREEN) {
+                        WallpaperManager.FLAG_LOCK
+                    } else {
+                        WallpaperManager.FLAG_SYSTEM
+                    }
+                )
+            withContext(Dispatchers.Main) {
+                if (screen == CustomizationSections.Screen.LOCK_SCREEN) {
+                    colorViewModel.setLockWallpaperColors(colors)
+                } else {
+                    colorViewModel.setHomeWallpaperColors(colors)
+                }
+            }
+        }
+    }
+
+    override fun onSaveInstanceState(savedInstanceState: Bundle) {
+        super.onSaveInstanceState(savedInstanceState)
+        binding?.saveInstanceState(savedInstanceState)
+    }
+
     override fun getDefaultTitle(): CharSequence {
         return requireContext().getString(R.string.color_picker_title)
     }
diff --git a/src/com/android/customization/picker/color/ui/view/ColorOptionIconView.kt b/src/com/android/customization/picker/color/ui/view/ColorOptionIconView.kt
new file mode 100644
index 0000000..257bffb
--- /dev/null
+++ b/src/com/android/customization/picker/color/ui/view/ColorOptionIconView.kt
@@ -0,0 +1,125 @@
+/*
+ * Copyright (C) 2023 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.
+ */
+package com.android.customization.picker.color.ui.view
+
+import android.annotation.ColorInt
+import android.content.Context
+import android.graphics.Canvas
+import android.graphics.Color
+import android.graphics.Paint
+import android.graphics.RectF
+import android.util.AttributeSet
+import android.view.View
+
+/**
+ * Draw a color option icon, which is a quadrant circle that can show at most 4 different colors.
+ */
+class ColorOptionIconView(
+    context: Context,
+    attrs: AttributeSet,
+) : View(context, attrs) {
+
+    private val paint = Paint().apply { style = Paint.Style.FILL }
+
+    private val oval = RectF()
+
+    private var color0 = DEFAULT_PLACEHOLDER_COLOR
+    private var color1 = DEFAULT_PLACEHOLDER_COLOR
+    private var color2 = DEFAULT_PLACEHOLDER_COLOR
+    private var color3 = DEFAULT_PLACEHOLDER_COLOR
+
+    private var w = 0
+    private var h = 0
+
+    /**
+     * @param color0 the color in the top left quadrant
+     * @param color1 the color in the top right quadrant
+     * @param color2 the color in the bottom left quadrant
+     * @param color3 the color in the bottom right quadrant
+     */
+    fun bindColor(
+        @ColorInt color0: Int,
+        @ColorInt color1: Int,
+        @ColorInt color2: Int,
+        @ColorInt color3: Int,
+    ) {
+        this.color0 = color0
+        this.color1 = color1
+        this.color2 = color2
+        this.color3 = color3
+        invalidate()
+    }
+
+    override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
+        this.w = w
+        this.h = h
+        super.onSizeChanged(w, h, oldw, oldh)
+    }
+
+    override fun onDraw(canvas: Canvas) {
+        super.onDraw(canvas)
+        // The w and h need to be an even number to avoid tiny pixel-level gaps between the pies
+        w = w.roundDownToEven()
+        h = h.roundDownToEven()
+
+        val width = w.toFloat()
+        val height = h.toFloat()
+
+        oval.set(0f, 0f, width, height)
+        canvas.apply {
+            paint.color = color3
+            drawArc(
+                oval,
+                0f,
+                90f,
+                true,
+                paint,
+            )
+            paint.color = color2
+            drawArc(
+                oval,
+                90f,
+                90f,
+                true,
+                paint,
+            )
+            paint.color = color0
+            drawArc(
+                oval,
+                180f,
+                90f,
+                true,
+                paint,
+            )
+            paint.color = color1
+            drawArc(
+                oval,
+                270f,
+                90f,
+                true,
+                paint,
+            )
+        }
+    }
+
+    companion object {
+        const val DEFAULT_PLACEHOLDER_COLOR = Color.BLACK
+
+        fun Int.roundDownToEven(): Int {
+            return if (this % 2 == 0) this else this - 1
+        }
+    }
+}
diff --git a/src/com/android/customization/picker/color/ui/viewmodel/ColorOptionIconViewModel.kt b/src/com/android/customization/picker/color/ui/viewmodel/ColorOptionIconViewModel.kt
index d32538d..8723c8c 100644
--- a/src/com/android/customization/picker/color/ui/viewmodel/ColorOptionIconViewModel.kt
+++ b/src/com/android/customization/picker/color/ui/viewmodel/ColorOptionIconViewModel.kt
@@ -20,8 +20,12 @@
 import android.annotation.ColorInt
 
 data class ColorOptionIconViewModel(
-    @ColorInt val color0: Int,
-    @ColorInt val color1: Int,
-    @ColorInt val color2: Int,
-    @ColorInt val color3: Int,
+    @ColorInt val lightThemeColor0: Int,
+    @ColorInt val lightThemeColor1: Int,
+    @ColorInt val lightThemeColor2: Int,
+    @ColorInt val lightThemeColor3: Int,
+    @ColorInt val darkThemeColor0: Int,
+    @ColorInt val darkThemeColor1: Int,
+    @ColorInt val darkThemeColor2: Int,
+    @ColorInt val darkThemeColor3: Int,
 )
diff --git a/src/com/android/customization/picker/color/ui/viewmodel/ColorPickerViewModel.kt b/src/com/android/customization/picker/color/ui/viewmodel/ColorPickerViewModel.kt
index 81a5810..67c6838 100644
--- a/src/com/android/customization/picker/color/ui/viewmodel/ColorPickerViewModel.kt
+++ b/src/com/android/customization/picker/color/ui/viewmodel/ColorPickerViewModel.kt
@@ -20,8 +20,7 @@
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.ViewModelProvider
 import androidx.lifecycle.viewModelScope
-import com.android.customization.model.color.ColorBundle
-import com.android.customization.model.color.ColorSeedOption
+import com.android.customization.model.color.ColorOptionImpl
 import com.android.customization.picker.color.domain.interactor.ColorPickerInteractor
 import com.android.customization.picker.color.shared.model.ColorType
 import com.android.wallpaper.R
@@ -31,9 +30,11 @@
 import kotlin.math.min
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.SharingStarted
 import kotlinx.coroutines.flow.StateFlow
 import kotlinx.coroutines.flow.combine
 import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.shareIn
 import kotlinx.coroutines.flow.stateIn
 import kotlinx.coroutines.launch
 
@@ -92,146 +93,114 @@
     /** The list of all color options mapped by their color type */
     private val allColorOptions:
         Flow<Map<ColorType, List<OptionItemViewModel<ColorOptionIconViewModel>>>> =
-        interactor.colorOptions.map { colorOptions ->
-            colorOptions
-                .map { colorOptionEntry ->
-                    colorOptionEntry.key to
-                        when (colorOptionEntry.key) {
-                            ColorType.WALLPAPER_COLOR -> {
-                                colorOptionEntry.value.map { colorOptionModel ->
-                                    val colorSeedOption: ColorSeedOption =
-                                        colorOptionModel.colorOption as ColorSeedOption
-                                    val colors =
-                                        colorSeedOption.previewInfo.resolveColors(context.resources)
-                                    val isSelectedFlow: StateFlow<Boolean> =
-                                        interactor.activeColorOption
-                                            .map {
-                                                it?.colorOption?.isEquivalent(
-                                                    colorOptionModel.colorOption
-                                                )
-                                                    ?: colorOptionModel.isSelected
-                                            }
-                                            .stateIn(viewModelScope)
-                                    OptionItemViewModel<ColorOptionIconViewModel>(
-                                        key =
-                                            MutableStateFlow(colorOptionModel.key)
-                                                as StateFlow<String>,
-                                        payload =
-                                            ColorOptionIconViewModel(
-                                                colors[0],
-                                                colors[1],
-                                                colors[2],
-                                                colors[3]
-                                            ),
-                                        text =
-                                            Text.Loaded(
-                                                colorSeedOption
-                                                    .getContentDescription(context)
-                                                    .toString()
-                                            ),
-                                        isSelected = isSelectedFlow,
-                                        onClicked =
-                                            isSelectedFlow.map { isSelected ->
-                                                if (isSelected) {
-                                                    null
-                                                } else {
-                                                    {
-                                                        viewModelScope.launch {
-                                                            interactor.select(colorOptionModel)
-                                                        }
+        interactor.colorOptions
+            .map { colorOptions ->
+                colorOptions
+                    .map { colorOptionEntry ->
+                        colorOptionEntry.key to
+                            colorOptionEntry.value.map { colorOptionModel ->
+                                val colorOption: ColorOptionImpl =
+                                    colorOptionModel.colorOption as ColorOptionImpl
+                                val lightThemeColors =
+                                    colorOption.previewInfo.resolveColors(/* darkTheme= */ false)
+                                val darkThemeColors =
+                                    colorOption.previewInfo.resolveColors(/* darkTheme= */ true)
+                                val isSelectedFlow: StateFlow<Boolean> =
+                                    interactor.activeColorOption
+                                        .map {
+                                            it?.colorOption?.isEquivalent(
+                                                colorOptionModel.colorOption
+                                            )
+                                                ?: colorOptionModel.isSelected
+                                        }
+                                        .stateIn(viewModelScope)
+                                OptionItemViewModel<ColorOptionIconViewModel>(
+                                    key =
+                                        MutableStateFlow(colorOptionModel.key) as StateFlow<String>,
+                                    payload =
+                                        ColorOptionIconViewModel(
+                                            lightThemeColor0 = lightThemeColors[0],
+                                            lightThemeColor1 = lightThemeColors[1],
+                                            lightThemeColor2 = lightThemeColors[2],
+                                            lightThemeColor3 = lightThemeColors[3],
+                                            darkThemeColor0 = darkThemeColors[0],
+                                            darkThemeColor1 = darkThemeColors[1],
+                                            darkThemeColor2 = darkThemeColors[2],
+                                            darkThemeColor3 = darkThemeColors[3],
+                                        ),
+                                    text =
+                                        Text.Loaded(
+                                            colorOption.getContentDescription(context).toString()
+                                        ),
+                                    isTextUserVisible = false,
+                                    isSelected = isSelectedFlow,
+                                    onClicked =
+                                        isSelectedFlow.map { isSelected ->
+                                            if (isSelected) {
+                                                null
+                                            } else {
+                                                {
+                                                    viewModelScope.launch {
+                                                        interactor.select(colorOptionModel)
                                                     }
                                                 }
-                                            },
-                                    )
-                                }
-                            }
-                            ColorType.PRESET_COLOR -> {
-                                colorOptionEntry.value.map { colorOptionModel ->
-                                    val colorBundle: ColorBundle =
-                                        colorOptionModel.colorOption as ColorBundle
-                                    val primaryColor =
-                                        colorBundle.previewInfo.resolvePrimaryColor(
-                                            context.resources
-                                        )
-                                    val secondaryColor =
-                                        colorBundle.previewInfo.resolveSecondaryColor(
-                                            context.resources
-                                        )
-                                    val isSelectedFlow: StateFlow<Boolean> =
-                                        interactor.activeColorOption
-                                            .map {
-                                                it?.colorOption?.isEquivalent(
-                                                    colorOptionModel.colorOption
-                                                )
-                                                    ?: colorOptionModel.isSelected
                                             }
-                                            .stateIn(viewModelScope)
-                                    OptionItemViewModel<ColorOptionIconViewModel>(
-                                        key =
-                                            MutableStateFlow(colorOptionModel.key)
-                                                as StateFlow<String>,
-                                        payload =
-                                            ColorOptionIconViewModel(
-                                                primaryColor,
-                                                secondaryColor,
-                                                primaryColor,
-                                                secondaryColor
-                                            ),
-                                        text =
-                                            Text.Loaded(
-                                                colorBundle
-                                                    .getContentDescription(context)
-                                                    .toString()
-                                            ),
-                                        isSelected = isSelectedFlow,
-                                        onClicked =
-                                            isSelectedFlow.map { isSelected ->
-                                                if (isSelected) {
-                                                    null
-                                                } else {
-                                                    {
-                                                        viewModelScope.launch {
-                                                            interactor.select(colorOptionModel)
-                                                        }
-                                                    }
-                                                }
-                                            },
-                                    )
-                                }
+                                        },
+                                )
                             }
-                        }
-                }
-                .toMap()
-        }
+                    }
+                    .toMap()
+            }
+            .shareIn(
+                scope = viewModelScope,
+                started = SharingStarted.WhileSubscribed(),
+                replay = 1,
+            )
 
     /** The list of all available color options for the selected Color Type. */
     val colorOptions: Flow<List<OptionItemViewModel<ColorOptionIconViewModel>>> =
         combine(allColorOptions, selectedColorTypeTabId) {
-            allColorOptions: Map<ColorType, List<OptionItemViewModel<ColorOptionIconViewModel>>>,
-            selectedColorTypeIdOrNull ->
-            val selectedColorTypeId = selectedColorTypeIdOrNull ?: ColorType.WALLPAPER_COLOR
-            allColorOptions[selectedColorTypeId]!!
-        }
+                allColorOptions:
+                    Map<ColorType, List<OptionItemViewModel<ColorOptionIconViewModel>>>,
+                selectedColorTypeIdOrNull ->
+                val selectedColorTypeId = selectedColorTypeIdOrNull ?: ColorType.WALLPAPER_COLOR
+                allColorOptions[selectedColorTypeId]!!
+            }
+            .shareIn(
+                scope = viewModelScope,
+                started = SharingStarted.Eagerly,
+                replay = 1,
+            )
 
     /** The list of color options for the color section */
     val colorSectionOptions: Flow<List<OptionItemViewModel<ColorOptionIconViewModel>>> =
-        allColorOptions.map { allColorOptions ->
-            val wallpaperOptions = allColorOptions[ColorType.WALLPAPER_COLOR]
-            val presetOptions = allColorOptions[ColorType.PRESET_COLOR]
-            val subOptions =
-                wallpaperOptions!!.subList(0, min(COLOR_SECTION_OPTION_SIZE, wallpaperOptions.size))
-            // Add additional options based on preset colors if size of wallpaper color options is
-            // less than COLOR_SECTION_OPTION_SIZE
-            val additionalSubOptions =
-                presetOptions!!.subList(
-                    0,
-                    min(
-                        max(0, COLOR_SECTION_OPTION_SIZE - wallpaperOptions.size),
-                        presetOptions.size,
+        allColorOptions
+            .map { allColorOptions ->
+                val wallpaperOptions = allColorOptions[ColorType.WALLPAPER_COLOR]
+                val presetOptions = allColorOptions[ColorType.PRESET_COLOR]
+                val subOptions =
+                    wallpaperOptions!!.subList(
+                        0,
+                        min(COLOR_SECTION_OPTION_SIZE, wallpaperOptions.size)
                     )
-                )
-            subOptions + additionalSubOptions
-        }
+                // Add additional options based on preset colors if size of wallpaper color options
+                // is
+                // less than COLOR_SECTION_OPTION_SIZE
+                val additionalSubOptions =
+                    presetOptions!!.subList(
+                        0,
+                        min(
+                            max(0, COLOR_SECTION_OPTION_SIZE - wallpaperOptions.size),
+                            presetOptions.size,
+                        )
+                    )
+                subOptions + additionalSubOptions
+            }
+            .shareIn(
+                scope = viewModelScope,
+                started = SharingStarted.WhileSubscribed(),
+                replay = 1,
+            )
 
     class Factory(
         private val context: Context,
diff --git a/src/com/android/customization/picker/notifications/ui/binder/NotificationSectionBinder.kt b/src/com/android/customization/picker/notifications/ui/binder/NotificationSectionBinder.kt
index 54f9bf6..1868a4e 100644
--- a/src/com/android/customization/picker/notifications/ui/binder/NotificationSectionBinder.kt
+++ b/src/com/android/customization/picker/notifications/ui/binder/NotificationSectionBinder.kt
@@ -20,7 +20,6 @@
 import android.annotation.SuppressLint
 import android.view.View
 import android.widget.Switch
-import android.widget.TextView
 import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.LifecycleOwner
 import androidx.lifecycle.lifecycleScope
@@ -39,19 +38,12 @@
         viewModel: NotificationSectionViewModel,
         lifecycleOwner: LifecycleOwner,
     ) {
-        val subtitle: TextView = view.requireViewById(R.id.subtitle)
         val switch: Switch = view.requireViewById(R.id.switcher)
 
         view.setOnClickListener { viewModel.onClicked() }
 
         lifecycleOwner.lifecycleScope.launch {
             lifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
-                launch {
-                    viewModel.subtitleStringResourceId.collect {
-                        subtitle.text = view.context.getString(it)
-                    }
-                }
-
                 launch { viewModel.isSwitchOn.collect { switch.isChecked = it } }
             }
         }
diff --git a/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModel.kt b/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModel.kt
index 97b0448..954efa2 100644
--- a/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModel.kt
+++ b/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModel.kt
@@ -17,13 +17,11 @@
 
 package com.android.customization.picker.notifications.ui.viewmodel
 
-import androidx.annotation.StringRes
 import androidx.annotation.VisibleForTesting
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.ViewModelProvider
 import androidx.lifecycle.viewModelScope
 import com.android.customization.picker.notifications.domain.interactor.NotificationsInteractor
-import com.android.wallpaper.R
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.map
 import kotlinx.coroutines.launch
@@ -35,16 +33,6 @@
     private val interactor: NotificationsInteractor,
 ) : ViewModel() {
 
-    /** A string resource ID for the subtitle. */
-    @StringRes
-    val subtitleStringResourceId: Flow<Int> =
-        interactor.settings.map { model ->
-            when (model.isShowNotificationsOnLockScreenEnabled) {
-                true -> R.string.show_notifications_on_lock_screen
-                false -> R.string.hide_notifications_on_lock_screen
-            }
-        }
-
     /** Whether the switch should be on. */
     val isSwitchOn: Flow<Boolean> =
         interactor.settings.map { model -> model.isShowNotificationsOnLockScreenEnabled }
diff --git a/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt b/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt
index a2afc81..a828f83 100644
--- a/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt
+++ b/src/com/android/customization/picker/preview/ui/section/PreviewWithClockCarouselSectionController.kt
@@ -17,87 +17,178 @@
 
 package com.android.customization.picker.preview.ui.section
 
-import android.app.Activity
+import android.app.WallpaperManager
 import android.content.Context
+import android.graphics.Rect
+import android.view.TouchDelegate
+import android.view.View
+import android.view.View.OnAttachStateChangeListener
 import android.view.ViewGroup
 import android.view.ViewStub
+import androidx.activity.ComponentActivity
+import androidx.constraintlayout.helper.widget.Carousel
+import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.constraintlayout.widget.Guideline
 import androidx.lifecycle.LifecycleOwner
+import androidx.lifecycle.ViewModelProvider
+import androidx.lifecycle.get
 import androidx.lifecycle.lifecycleScope
+import com.android.customization.model.themedicon.domain.interactor.ThemedIconInteractor
 import com.android.customization.picker.clock.ui.binder.ClockCarouselViewBinder
+import com.android.customization.picker.clock.ui.fragment.ClockSettingsFragment
 import com.android.customization.picker.clock.ui.view.ClockCarouselView
 import com.android.customization.picker.clock.ui.view.ClockViewFactory
 import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewModel
 import com.android.wallpaper.R
-import com.android.wallpaper.model.CustomizationSectionController
+import com.android.wallpaper.model.CustomizationSectionController.CustomizationSectionNavigationController
 import com.android.wallpaper.model.WallpaperColorsViewModel
+import com.android.wallpaper.model.WallpaperPreviewNavigator
 import com.android.wallpaper.module.CurrentWallpaperInfoFactory
 import com.android.wallpaper.module.CustomizationSections
 import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor
+import com.android.wallpaper.picker.customization.ui.section.ScreenPreviewClickView
 import com.android.wallpaper.picker.customization.ui.section.ScreenPreviewSectionController
 import com.android.wallpaper.picker.customization.ui.section.ScreenPreviewView
 import com.android.wallpaper.util.DisplayUtils
+import kotlinx.coroutines.Job
 import kotlinx.coroutines.launch
 
-/** Controls the screen preview section. */
+/**
+ * A ThemePicker version of the [ScreenPreviewSectionController] that adjusts the preview for the
+ * clock carousel, and also updates the preview on theme changes.
+ */
 class PreviewWithClockCarouselSectionController(
-    activity: Activity,
+    activity: ComponentActivity,
     private val lifecycleOwner: LifecycleOwner,
-    private val initialScreen: CustomizationSections.Screen,
+    private val screen: CustomizationSections.Screen,
     wallpaperInfoFactory: CurrentWallpaperInfoFactory,
     colorViewModel: WallpaperColorsViewModel,
     displayUtils: DisplayUtils,
-    private val clockCarouselViewModel: ClockCarouselViewModel,
+    clockCarouselViewModelFactory: ClockCarouselViewModel.Factory,
     private val clockViewFactory: ClockViewFactory,
-    navigator: CustomizationSectionController.CustomizationSectionNavigationController,
+    wallpaperPreviewNavigator: WallpaperPreviewNavigator,
+    private val navigationController: CustomizationSectionNavigationController,
     wallpaperInteractor: WallpaperInteractor,
+    themedIconInteractor: ThemedIconInteractor,
+    wallpaperManager: WallpaperManager,
+    private val isTwoPaneAndSmallWidth: Boolean,
 ) :
-    ScreenPreviewSectionController(
+    PreviewWithThemeSectionController(
         activity,
         lifecycleOwner,
-        initialScreen,
+        screen,
         wallpaperInfoFactory,
         colorViewModel,
         displayUtils,
-        navigator,
+        wallpaperPreviewNavigator,
         wallpaperInteractor,
+        themedIconInteractor,
+        wallpaperManager,
+        isTwoPaneAndSmallWidth,
     ) {
 
-    private var clockCarouselBinding: ClockCarouselViewBinder.Binding? = null
+    private val viewModel =
+        ViewModelProvider(
+                activity,
+                clockCarouselViewModelFactory,
+            )
+            .get() as ClockCarouselViewModel
+
+    private var clockColorAndSizeButton: View? = null
 
     override val hideLockScreenClockPreview = true
 
     override fun createView(context: Context): ScreenPreviewView {
         val view = super.createView(context)
-        val carouselViewStub: ViewStub = view.requireViewById(R.id.clock_carousel_view_stub)
-        carouselViewStub.layoutResource = R.layout.clock_carousel_view
-        val carouselView = carouselViewStub.inflate() as ClockCarouselView
+        if (screen == CustomizationSections.Screen.LOCK_SCREEN) {
+            val screenPreviewClickView: ScreenPreviewClickView =
+                view.requireViewById(R.id.screen_preview_click_view)
+            val clockColorAndSizeButtonStub: ViewStub =
+                view.requireViewById(R.id.clock_color_and_size_button)
+            clockColorAndSizeButtonStub.layoutResource = R.layout.clock_color_and_size_button
+            clockColorAndSizeButton = clockColorAndSizeButtonStub.inflate() as View
+            clockColorAndSizeButton?.setOnClickListener {
+                navigationController.navigateTo(ClockSettingsFragment())
+            }
+            // clockColorAndSizeButton's touch target has to be increased programmatically
+            // rather than with padding because this button only appears in the lock screen tab.
+            view.post {
+                val rect = Rect()
+                clockColorAndSizeButton?.getHitRect(rect)
+                val padding =
+                    context
+                        .getResources()
+                        .getDimensionPixelSize(R.dimen.screen_preview_section_vertical_space)
+                rect.top -= padding
+                rect.bottom += padding
+                val touchDelegate = TouchDelegate(rect, clockColorAndSizeButton)
+                view.setTouchDelegate(touchDelegate)
+            }
 
-        // TODO (b/270716937) We should handle the single clock case in the clock carousel itself
-        val singleClockViewStub: ViewStub = view.requireViewById(R.id.single_clock_view_stub)
-        singleClockViewStub.layoutResource = R.layout.single_clock_view
-        val singleClockView = singleClockViewStub.inflate() as ViewGroup
-        lifecycleOwner.lifecycleScope.launch {
-            clockCarouselBinding =
-                ClockCarouselViewBinder.bind(
-                    carouselView = carouselView,
-                    singleClockView = singleClockView,
-                    viewModel = clockCarouselViewModel,
-                    clockViewFactory = clockViewFactory,
-                    lifecycleOwner = lifecycleOwner,
-                )
-            onScreenSwitched(
-                isOnLockScreen = initialScreen == CustomizationSections.Screen.LOCK_SCREEN
-            )
+            val carouselViewStub: ViewStub = view.requireViewById(R.id.clock_carousel_view_stub)
+            carouselViewStub.layoutResource = R.layout.clock_carousel_view
+            val carouselView = carouselViewStub.inflate() as ClockCarouselView
+
+            if (isTwoPaneAndSmallWidth) {
+                val guidelineMargin =
+                    context.resources.getDimensionPixelSize(
+                        R.dimen.clock_carousel_guideline_margin_for_2_pane_small_width
+                    )
+
+                val guidelineStart = carouselView.requireViewById<Guideline>(R.id.guideline_start)
+                var layoutParams = guidelineStart.layoutParams as ConstraintLayout.LayoutParams
+                layoutParams.guideBegin = guidelineMargin
+                guidelineStart.layoutParams = layoutParams
+
+                val guidelineEnd = carouselView.requireViewById<Guideline>(R.id.guideline_end)
+                layoutParams = guidelineEnd.layoutParams as ConstraintLayout.LayoutParams
+                layoutParams.guideEnd = guidelineMargin
+                guidelineEnd.layoutParams = layoutParams
+            }
+
+            // TODO (b/270716937) We should handle the single clock case in the clock carousel
+            // itself
+            val singleClockViewStub: ViewStub = view.requireViewById(R.id.single_clock_view_stub)
+            singleClockViewStub.layoutResource = R.layout.single_clock_view
+            val singleClockView = singleClockViewStub.inflate() as ViewGroup
+
+            /**
+             * Only bind after [Carousel.onAttachedToWindow]. This is to avoid the race condition
+             * that the flow emits before attached to window where [Carousel.mMotionLayout] is still
+             * null.
+             */
+            var onAttachStateChangeListener: OnAttachStateChangeListener? = null
+            var bindJob: Job? = null
+            onAttachStateChangeListener =
+                object : OnAttachStateChangeListener {
+                    override fun onViewAttachedToWindow(view: View) {
+                        bindJob =
+                            lifecycleOwner.lifecycleScope.launch {
+                                ClockCarouselViewBinder.bind(
+                                    context = context,
+                                    carouselView = carouselView,
+                                    singleClockView = singleClockView,
+                                    screenPreviewClickView = screenPreviewClickView,
+                                    viewModel = viewModel,
+                                    clockViewFactory = clockViewFactory,
+                                    lifecycleOwner = lifecycleOwner,
+                                    isTwoPaneAndSmallWidth = isTwoPaneAndSmallWidth,
+                                )
+                                if (onAttachStateChangeListener != null) {
+                                    carouselView.carousel.removeOnAttachStateChangeListener(
+                                        onAttachStateChangeListener,
+                                    )
+                                }
+                            }
+                    }
+
+                    override fun onViewDetachedFromWindow(view: View) {
+                        bindJob?.cancel()
+                    }
+                }
+            carouselView.carousel.addOnAttachStateChangeListener(onAttachStateChangeListener)
         }
+
         return view
     }
-
-    override fun onScreenSwitched(isOnLockScreen: Boolean) {
-        super.onScreenSwitched(isOnLockScreen)
-        if (isOnLockScreen) {
-            clockCarouselBinding?.show()
-        } else {
-            clockCarouselBinding?.hide()
-        }
-    }
 }
diff --git a/src/com/android/customization/picker/preview/ui/section/PreviewWithThemeSectionController.kt b/src/com/android/customization/picker/preview/ui/section/PreviewWithThemeSectionController.kt
new file mode 100644
index 0000000..56c6c30
--- /dev/null
+++ b/src/com/android/customization/picker/preview/ui/section/PreviewWithThemeSectionController.kt
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2023 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.
+ *
+ */
+
+package com.android.customization.picker.preview.ui.section
+
+import android.app.Activity
+import android.app.WallpaperManager
+import android.content.Context
+import androidx.lifecycle.LifecycleOwner
+import com.android.customization.model.themedicon.domain.interactor.ThemedIconInteractor
+import com.android.customization.picker.preview.ui.viewmodel.PreviewWithThemeViewModel
+import com.android.wallpaper.R
+import com.android.wallpaper.model.WallpaperColorsViewModel
+import com.android.wallpaper.model.WallpaperPreviewNavigator
+import com.android.wallpaper.module.CurrentWallpaperInfoFactory
+import com.android.wallpaper.module.CustomizationSections
+import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor
+import com.android.wallpaper.picker.customization.ui.section.ScreenPreviewSectionController
+import com.android.wallpaper.picker.customization.ui.viewmodel.ScreenPreviewViewModel
+import com.android.wallpaper.util.DisplayUtils
+import com.android.wallpaper.util.PreviewUtils
+import kotlinx.coroutines.suspendCancellableCoroutine
+
+/**
+ * A ThemePicker version of the [ScreenPreviewSectionController] that binds the preview view with
+ * the [PreviewWithThemeViewModel] to allow preview updates on theme changes.
+ */
+open class PreviewWithThemeSectionController(
+    activity: Activity,
+    lifecycleOwner: LifecycleOwner,
+    private val screen: CustomizationSections.Screen,
+    private val wallpaperInfoFactory: CurrentWallpaperInfoFactory,
+    private val colorViewModel: WallpaperColorsViewModel,
+    displayUtils: DisplayUtils,
+    wallpaperPreviewNavigator: WallpaperPreviewNavigator,
+    private val wallpaperInteractor: WallpaperInteractor,
+    private val themedIconInteractor: ThemedIconInteractor,
+    wallpaperManager: WallpaperManager,
+    isTwoPaneAndSmallWidth: Boolean,
+) :
+    ScreenPreviewSectionController(
+        activity,
+        lifecycleOwner,
+        screen,
+        wallpaperInfoFactory,
+        colorViewModel,
+        displayUtils,
+        wallpaperPreviewNavigator,
+        wallpaperInteractor,
+        wallpaperManager,
+        isTwoPaneAndSmallWidth
+    ) {
+    override fun createScreenPreviewViewModel(context: Context): ScreenPreviewViewModel {
+        return PreviewWithThemeViewModel(
+            previewUtils =
+                if (isOnLockScreen) {
+                    PreviewUtils(
+                        context = context,
+                        authority =
+                            context.getString(
+                                R.string.lock_screen_preview_provider_authority,
+                            ),
+                    )
+                } else {
+                    PreviewUtils(
+                        context = context,
+                        authorityMetadataKey =
+                            context.getString(
+                                R.string.grid_control_metadata_name,
+                            ),
+                    )
+                },
+            wallpaperInfoProvider = { forceReload ->
+                suspendCancellableCoroutine { continuation ->
+                    wallpaperInfoFactory.createCurrentWallpaperInfos(
+                        { homeWallpaper, lockWallpaper, _ ->
+                            val wallpaper =
+                                if (isOnLockScreen) {
+                                    lockWallpaper ?: homeWallpaper
+                                } else {
+                                    homeWallpaper ?: lockWallpaper
+                                }
+                            loadInitialColors(
+                                context = context,
+                                screen = screen,
+                            )
+                            continuation.resume(wallpaper, null)
+                        },
+                        forceReload,
+                    )
+                }
+            },
+            onWallpaperColorChanged = { colors ->
+                if (isOnLockScreen) {
+                    colorViewModel.setLockWallpaperColors(colors)
+                } else {
+                    colorViewModel.setHomeWallpaperColors(colors)
+                }
+            },
+            initialExtrasProvider = { getInitialExtras(isOnLockScreen) },
+            wallpaperInteractor = wallpaperInteractor,
+            themedIconInteractor = themedIconInteractor,
+            screen = screen,
+        )
+    }
+}
diff --git a/src/com/android/customization/picker/preview/ui/viewmodel/PreviewWithThemeViewModel.kt b/src/com/android/customization/picker/preview/ui/viewmodel/PreviewWithThemeViewModel.kt
new file mode 100644
index 0000000..435878d
--- /dev/null
+++ b/src/com/android/customization/picker/preview/ui/viewmodel/PreviewWithThemeViewModel.kt
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2023 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.
+ *
+ */
+
+package com.android.customization.picker.preview.ui.viewmodel
+
+import android.app.WallpaperColors
+import android.os.Bundle
+import com.android.customization.model.themedicon.domain.interactor.ThemedIconInteractor
+import com.android.wallpaper.model.WallpaperInfo
+import com.android.wallpaper.module.CustomizationSections
+import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor
+import com.android.wallpaper.picker.customization.ui.viewmodel.ScreenPreviewViewModel
+import com.android.wallpaper.util.PreviewUtils
+import kotlinx.coroutines.flow.Flow
+
+/** A ThemePicker version of the [ScreenPreviewViewModel] */
+class PreviewWithThemeViewModel(
+    previewUtils: PreviewUtils,
+    initialExtrasProvider: () -> Bundle? = { null },
+    wallpaperInfoProvider: suspend (forceReload: Boolean) -> WallpaperInfo?,
+    onWallpaperColorChanged: (WallpaperColors?) -> Unit = {},
+    wallpaperInteractor: WallpaperInteractor,
+    private val themedIconInteractor: ThemedIconInteractor? = null,
+    screen: CustomizationSections.Screen,
+) :
+    ScreenPreviewViewModel(
+        previewUtils,
+        initialExtrasProvider,
+        wallpaperInfoProvider,
+        onWallpaperColorChanged,
+        wallpaperInteractor,
+        screen,
+    ) {
+    override fun workspaceUpdateEvents(): Flow<Boolean>? = themedIconInteractor?.isActivated
+}
diff --git a/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt b/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt
index c432bd9..b17af80 100644
--- a/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt
+++ b/src/com/android/customization/picker/quickaffordance/data/repository/KeyguardQuickAffordancePickerRepository.kt
@@ -80,9 +80,9 @@
             name = name,
             iconResourceId = iconResourceId,
             isEnabled = isEnabled,
-            enablementInstructions = enablementInstructions ?: emptyList(),
+            enablementExplanation = enablementExplanation ?: "",
             enablementActionText = enablementActionText,
-            enablementActionComponentName = enablementActionComponentName,
+            enablementActionIntent = enablementActionIntent,
             configureIntent = configureIntent,
         )
     }
diff --git a/src/com/android/customization/picker/quickaffordance/shared/model/KeyguardQuickAffordancePickerAffordanceModel.kt b/src/com/android/customization/picker/quickaffordance/shared/model/KeyguardQuickAffordancePickerAffordanceModel.kt
index 7b04ff1..e53f790 100644
--- a/src/com/android/customization/picker/quickaffordance/shared/model/KeyguardQuickAffordancePickerAffordanceModel.kt
+++ b/src/com/android/customization/picker/quickaffordance/shared/model/KeyguardQuickAffordancePickerAffordanceModel.kt
@@ -31,18 +31,18 @@
     @DrawableRes val iconResourceId: Int,
     /** Whether this quick affordance is enabled. */
     val isEnabled: Boolean,
-    /** If not enabled, the list of user-visible steps to re-enable it. */
-    val enablementInstructions: List<String>,
+    /** If not enabled, the user-visible message explaining why. */
+    val enablementExplanation: String,
     /**
      * If not enabled, an optional label for a button that takes the user to a destination where
      * they can re-enable it.
      */
     val enablementActionText: String?,
     /**
-     * If not enabled, an optional component name (package and action) for a button that takes the
-     * user to a destination where they can re-enable it.
+     * If not enabled, an optional [Intent] for a button that takes the user to a destination where
+     * they can re-enable it.
      */
-    val enablementActionComponentName: String?,
+    val enablementActionIntent: Intent?,
     /** Optional [Intent] to use to start an activity to configure this affordance. */
     val configureIntent: Intent?,
 )
diff --git a/src/com/android/customization/picker/quickaffordance/ui/adapter/SlotTabAdapter.kt b/src/com/android/customization/picker/quickaffordance/ui/adapter/SlotTabAdapter.kt
index 5203ed3..6879ffc 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/adapter/SlotTabAdapter.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/adapter/SlotTabAdapter.kt
@@ -55,7 +55,7 @@
         val item = items[position]
         holder.itemView.isSelected = item.isSelected
         holder.textView.text = item.name
-        holder.textView.setOnClickListener(
+        holder.itemView.setOnClickListener(
             if (item.onClicked != null) {
                 View.OnClickListener { item.onClicked.invoke() }
             } else {
diff --git a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePickerBinder.kt b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePickerBinder.kt
index 4395f5e..68367c8 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePickerBinder.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePickerBinder.kt
@@ -126,6 +126,15 @@
                             }
                     }
                 }
+
+                launch {
+                    viewModel.activityStartRequests.collect { intent ->
+                        if (intent != null) {
+                            view.context.startActivity(intent)
+                            viewModel.onActivityStarted()
+                        }
+                    }
+                }
             }
         }
     }
diff --git a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt
index 58a082d..5b6d353 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/binder/KeyguardQuickAffordancePreviewBinder.kt
@@ -25,7 +25,7 @@
 import androidx.lifecycle.flowWithLifecycle
 import androidx.lifecycle.lifecycleScope
 import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel
-import com.android.systemui.shared.quickaffordance.shared.model.KeyguardQuickAffordancePreviewConstants
+import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants
 import com.android.wallpaper.R
 import com.android.wallpaper.picker.customization.ui.binder.ScreenPreviewBinder
 import kotlinx.coroutines.launch
@@ -49,6 +49,7 @@
                 lifecycleOwner = lifecycleOwner,
                 offsetToStart = offsetToStart,
                 dimWallpaper = true,
+                onWallpaperPreviewDirty = { activity.recreate() },
             )
 
         previewView.contentDescription =
@@ -61,10 +62,8 @@
                 .flowWithLifecycle(lifecycleOwner.lifecycle, Lifecycle.State.STARTED)
                 .collect { slotId ->
                     binding.sendMessage(
-                        KeyguardQuickAffordancePreviewConstants.MESSAGE_ID_SLOT_SELECTED,
-                        Bundle().apply {
-                            putString(KeyguardQuickAffordancePreviewConstants.KEY_SLOT_ID, slotId)
-                        },
+                        KeyguardPreviewConstants.MESSAGE_ID_SLOT_SELECTED,
+                        Bundle().apply { putString(KeyguardPreviewConstants.KEY_SLOT_ID, slotId) },
                     )
                 }
         }
diff --git a/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt b/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
index 14b6acc..f832cde 100644
--- a/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
+++ b/src/com/android/customization/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModel.kt
@@ -27,16 +27,17 @@
 import androidx.lifecycle.ViewModelProvider
 import androidx.lifecycle.viewModelScope
 import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor
-import com.android.systemui.shared.customization.data.content.CustomizationProviderContract
 import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots
-import com.android.systemui.shared.quickaffordance.shared.model.KeyguardQuickAffordancePreviewConstants
+import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants
 import com.android.wallpaper.R
 import com.android.wallpaper.module.CurrentWallpaperInfoFactory
+import com.android.wallpaper.module.CustomizationSections
 import com.android.wallpaper.picker.common.button.ui.viewmodel.ButtonStyle
 import com.android.wallpaper.picker.common.button.ui.viewmodel.ButtonViewModel
 import com.android.wallpaper.picker.common.dialog.ui.viewmodel.DialogViewModel
 import com.android.wallpaper.picker.common.icon.ui.viewmodel.Icon
 import com.android.wallpaper.picker.common.text.ui.viewmodel.Text
+import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor
 import com.android.wallpaper.picker.customization.ui.viewmodel.ScreenPreviewViewModel
 import com.android.wallpaper.picker.option.ui.viewmodel.OptionItemViewModel
 import com.android.wallpaper.util.PreviewUtils
@@ -60,8 +61,8 @@
 private constructor(
     context: Context,
     private val quickAffordanceInteractor: KeyguardQuickAffordancePickerInteractor,
+    private val wallpaperInteractor: WallpaperInteractor,
     private val wallpaperInfoFactory: CurrentWallpaperInfoFactory,
-    activityStarter: (Intent) -> Unit,
 ) : ViewModel() {
 
     @SuppressLint("StaticFieldLeak") private val applicationContext = context.applicationContext
@@ -79,25 +80,27 @@
             initialExtrasProvider = {
                 Bundle().apply {
                     putString(
-                        KeyguardQuickAffordancePreviewConstants.KEY_INITIALLY_SELECTED_SLOT_ID,
+                        KeyguardPreviewConstants.KEY_INITIALLY_SELECTED_SLOT_ID,
                         selectedSlotId.value,
                     )
                     putBoolean(
-                        KeyguardQuickAffordancePreviewConstants.KEY_HIGHLIGHT_QUICK_AFFORDANCES,
+                        KeyguardPreviewConstants.KEY_HIGHLIGHT_QUICK_AFFORDANCES,
                         true,
                     )
                 }
             },
-            wallpaperInfoProvider = {
+            wallpaperInfoProvider = { forceReload ->
                 suspendCancellableCoroutine { continuation ->
                     wallpaperInfoFactory.createCurrentWallpaperInfos(
                         { homeWallpaper, lockWallpaper, _ ->
                             continuation.resume(lockWallpaper ?: homeWallpaper, null)
                         },
-                        /* forceRefresh= */ true,
+                        forceReload,
                     )
                 }
             },
+            wallpaperInteractor = wallpaperInteractor,
+            screen = CustomizationSections.Screen.LOCK_SCREEN,
         )
 
     /** A locally-selected slot, if the user ever switched from the original one. */
@@ -258,16 +261,15 @@
                                     showEnablementDialog(
                                         icon = affordanceIcon,
                                         name = affordance.name,
-                                        instructions = affordance.enablementInstructions,
+                                        explanation = affordance.enablementExplanation,
                                         actionText = affordance.enablementActionText,
-                                        actionComponentName =
-                                            affordance.enablementActionComponentName,
+                                        actionIntent = affordance.enablementActionIntent,
                                     )
                                 }
                             },
                         onLongClicked =
                             if (affordance.configureIntent != null) {
-                                { activityStarter(affordance.configureIntent) }
+                                { requestActivityStart(affordance.configureIntent) }
                             } else {
                                 null
                             },
@@ -313,17 +315,40 @@
      */
     val dialog: Flow<DialogViewModel?> = _dialog.asStateFlow()
 
+    private val _activityStartRequests = MutableStateFlow<Intent?>(null)
+    /**
+     * Requests to start an activity with the given [Intent].
+     *
+     * Important: once the activity is started, the [Intent] should be consumed by calling
+     * [onActivityStarted].
+     */
+    val activityStartRequests: StateFlow<Intent?> = _activityStartRequests.asStateFlow()
+
     /** Notifies that the dialog has been dismissed in the UI. */
     fun onDialogDismissed() {
         _dialog.value = null
     }
 
+    /**
+     * Notifies that an activity request from [activityStartRequests] has been fulfilled (e.g. the
+     * activity was started and the view-model can forget needing to start this activity).
+     */
+    fun onActivityStarted() {
+        _activityStartRequests.value = null
+    }
+
+    private fun requestActivityStart(
+        intent: Intent,
+    ) {
+        _activityStartRequests.value = intent
+    }
+
     private fun showEnablementDialog(
         icon: Drawable,
         name: String,
-        instructions: List<String>,
+        explanation: String,
         actionText: String?,
-        actionComponentName: String?,
+        actionIntent: Intent?,
     ) {
         _dialog.value =
             DialogViewModel(
@@ -332,35 +357,39 @@
                         drawable = icon,
                         contentDescription = null,
                     ),
-                title = Text.Loaded(name),
-                message =
-                    Text.Loaded(
-                        buildString {
-                            instructions.forEachIndexed { index, instruction ->
-                                if (index > 0) {
-                                    append('\n')
-                                }
-
-                                append(instruction)
-                            }
-                        }
-                    ),
+                headline = Text.Resource(R.string.keyguard_affordance_enablement_dialog_headline),
+                message = Text.Loaded(explanation),
                 buttons =
-                    listOf(
-                        ButtonViewModel(
-                            text = actionText?.let { Text.Loaded(actionText) }
-                                    ?: Text.Resource(
-                                        R.string
-                                            .keyguard_affordance_enablement_dialog_dismiss_button,
+                    buildList {
+                        add(
+                            ButtonViewModel(
+                                text =
+                                    Text.Resource(
+                                        if (actionText != null) {
+                                            // This is not the only button on the dialog.
+                                            R.string.cancel
+                                        } else {
+                                            // This is the only button on the dialog.
+                                            R.string
+                                                .keyguard_affordance_enablement_dialog_dismiss_button
+                                        }
                                     ),
-                            style = ButtonStyle.Primary,
-                            onClicked = {
-                                actionComponentName.toIntent()?.let { intent ->
-                                    applicationContext.startActivity(intent)
-                                }
-                            }
-                        ),
-                    ),
+                                style = ButtonStyle.Secondary,
+                            ),
+                        )
+
+                        if (actionText != null) {
+                            add(
+                                ButtonViewModel(
+                                    text = Text.Loaded(actionText),
+                                    style = ButtonStyle.Primary,
+                                    onClicked = {
+                                        actionIntent?.let { intent -> requestActivityStart(intent) }
+                                    }
+                                ),
+                            )
+                        }
+                    },
             )
     }
 
@@ -398,29 +427,6 @@
         return quickAffordanceInteractor.getAffordanceIcon(iconResourceId)
     }
 
-    private fun String?.toIntent(): Intent? {
-        if (isNullOrEmpty()) {
-            return null
-        }
-
-        val splitUp =
-            split(
-                CustomizationProviderContract.LockScreenQuickAffordances.AffordanceTable
-                    .COMPONENT_NAME_SEPARATOR
-            )
-        check(splitUp.size == 1 || splitUp.size == 2) {
-            "Illegal component name \"$this\". Must be either just an action or a package and an" +
-                " action separated by a" +
-                " \"${CustomizationProviderContract.LockScreenQuickAffordances.AffordanceTable.COMPONENT_NAME_SEPARATOR}\"!"
-        }
-
-        return Intent(splitUp.last()).apply {
-            if (splitUp.size > 1) {
-                setPackage(splitUp[0])
-            }
-        }
-    }
-
     private fun toDescriptionText(
         context: Context,
         slots: Map<String, KeyguardQuickAffordanceSlotViewModel>,
@@ -455,16 +461,16 @@
     class Factory(
         private val context: Context,
         private val quickAffordanceInteractor: KeyguardQuickAffordancePickerInteractor,
+        private val wallpaperInteractor: WallpaperInteractor,
         private val wallpaperInfoFactory: CurrentWallpaperInfoFactory,
-        private val activityStarter: (Intent) -> Unit,
     ) : ViewModelProvider.Factory {
         override fun <T : ViewModel> create(modelClass: Class<T>): T {
             @Suppress("UNCHECKED_CAST")
             return KeyguardQuickAffordancePickerViewModel(
                 context = context,
                 quickAffordanceInteractor = quickAffordanceInteractor,
+                wallpaperInteractor = wallpaperInteractor,
                 wallpaperInfoFactory = wallpaperInfoFactory,
-                activityStarter = activityStarter,
             )
                 as T
         }
diff --git a/tests/robotests/src/com/android/customization/model/clock/BaseClockManagerTest.java b/tests/robotests/src/com/android/customization/model/clock/BaseClockManagerTest.java
deleted file mode 100644
index 2b80bde..0000000
--- a/tests/robotests/src/com/android/customization/model/clock/BaseClockManagerTest.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2019 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.
- */
-package com.android.customization.model.clock;
-
-import static junit.framework.TestCase.assertTrue;
-import static junit.framework.TestCase.fail;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.anyBoolean;
-import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import androidx.annotation.Nullable;
-
-import com.android.customization.model.CustomizationManager.Callback;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-
-@RunWith(RobolectricTestRunner.class)
-public class BaseClockManagerTest {
-
-    private static final String CURRENT_CLOCK = "current_clock";
-
-    @Mock ClockProvider mProvider;
-    private TestClockManager mManager;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mManager = new TestClockManager(mProvider);
-    }
-
-    @Test
-    public void testIsAvailable() {
-        // GIVEN that the ClockProvider is available
-        when(mProvider.isAvailable()).thenReturn(true);
-        // THEN the BaseClockManager is true
-        assertTrue(mManager.isAvailable());
-    }
-
-    @Test
-    public void testApply() {
-        final String id = "id";
-        Clockface clock = new Clockface.Builder().setId(id).build();
-
-        mManager.apply(clock, new Callback() {
-            @Override
-            public void onSuccess() {
-                //Nothing to do here, the test passed
-            }
-            @Override
-            public void onError(@Nullable Throwable throwable) {
-                fail("onError was called when grid had been applied successfully");
-            }
-        });
-
-        assertEquals(id, mManager.getClockId());
-    }
-
-    @Test
-    public void testFetch() {
-        mManager.fetchOptions(null, false);
-        verify(mProvider).fetch(eq(null), anyBoolean());
-    }
-
-    /**
-     * Testable BaseClockManager that provides basic implementations of abstract methods.
-     */
-    private static final class TestClockManager extends BaseClockManager {
-
-        private String mClockId;
-
-        TestClockManager(ClockProvider provider) {
-            super(provider);
-        }
-
-        String getClockId() {
-            return mClockId;
-        }
-
-        @Override
-        protected void handleApply(Clockface option, Callback callback) {
-            mClockId = option.getId();
-            callback.onSuccess();
-        }
-
-        @Override
-        protected String lookUpCurrentClock() {
-            return CURRENT_CLOCK;
-        }
-    }
-}
diff --git a/tests/robotests/src/com/android/customization/model/clock/ClockManagerTest.java b/tests/robotests/src/com/android/customization/model/clock/ClockManagerTest.java
deleted file mode 100644
index 574548a..0000000
--- a/tests/robotests/src/com/android/customization/model/clock/ClockManagerTest.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright (C) 2019 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.
- */
-package com.android.customization.model.clock;
-
-import static junit.framework.TestCase.fail;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.doAnswer;
-import static org.mockito.Mockito.verify;
-
-import android.content.ContentResolver;
-import android.provider.Settings.Secure;
-
-import androidx.annotation.Nullable;
-
-import com.android.customization.model.CustomizationManager.Callback;
-import com.android.customization.module.ThemesUserEventLogger;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-@RunWith(RobolectricTestRunner.class)
-public class ClockManagerTest {
-
-    private static final String CLOCK_ID = "id";
-    private static final String CLOCK_FIELD = "clock";
-    private static final String CLOCK_FACE_SETTING = "fake_clock_face_setting";
-
-    @Mock ClockProvider mProvider;
-    @Mock ThemesUserEventLogger mLogger;
-    private ContentResolver mContentResolver;
-    private ClockManager mManager;
-    @Mock private Clockface mMockClockface;
-    @Mock private Callback mMockCallback;
-
-    @Before
-    public void setUp() {
-        MockitoAnnotations.initMocks(this);
-        mContentResolver = RuntimeEnvironment.application.getContentResolver();
-        mManager = new ClockManager(mContentResolver, mProvider, mLogger);
-    }
-
-    @Test
-    public void testApply() throws JSONException {
-        Clockface clock = new Clockface.Builder().setId(CLOCK_ID).build();
-
-        mManager.apply(clock, new Callback() {
-            @Override
-            public void onSuccess() {
-                //Nothing to do here, the test passed
-            }
-
-            @Override
-            public void onError(@Nullable Throwable throwable) {
-                fail("onError was called when grid had been applied successfully");
-            }
-        });
-
-        // THEN the clock id is written to secure settings.
-        JSONObject json =
-                new JSONObject(Secure.getString(mContentResolver, ClockManager.CLOCK_FACE_SETTING));
-        assertEquals(CLOCK_ID, json.getString(CLOCK_FIELD));
-        // AND the event is logged
-        verify(mLogger).logClockApplied(clock);
-    }
-
-    @Test
-    public void testApply_whenJSONExceptionOccurs_callsOnError() {
-        doAnswer((invocation) -> {
-            throw new JSONException("Fake Test Excepton");
-        }).when(mMockClockface).getId();
-
-        mManager.apply(mMockClockface, mMockCallback);
-
-        verify(mMockCallback).onError(null);
-    }
-
-    @Test
-    public void testGetCurrentClock_returnsClockId() throws JSONException {
-        // Secure settings contains a clock id
-        JSONObject json = new JSONObject().put(CLOCK_FIELD, CLOCK_ID);
-        Secure.putString(mContentResolver, ClockManager.CLOCK_FACE_SETTING, json.toString());
-
-        // The current clock is that id
-        assertEquals(CLOCK_ID, mManager.getCurrentClock());
-    }
-
-    @Test
-    public void testGetCurrentClock_whenJSONExceptionOccurs_returnsClockFaceSetting() {
-        // Secure settings contains a clock face setting with invalid format to cause JSONException.
-        Secure.putString(mContentResolver, ClockManager.CLOCK_FACE_SETTING, CLOCK_FACE_SETTING);
-
-        // The current clock is the clock face setting which is saved in secure settings.
-        assertEquals(CLOCK_FACE_SETTING, mManager.getCurrentClock());
-    }
-
-    @Test
-    public void testGetCurrentClock_withNullIdInSecureSettings_returnsNullId() {
-        // Secure settings contains a null clock id
-        Secure.putString(mContentResolver, ClockManager.CLOCK_FACE_SETTING, /* value= */ null);
-
-        // The current clock is null
-        assertEquals(null, mManager.getCurrentClock());
-    }
-
-    @Test
-    public void testGetCurrentClock_withEmptyIdInSecureSettings_returnsEmptyId() {
-        // Secure settings contains an empty clock id
-        Secure.putString(mContentResolver, ClockManager.CLOCK_FACE_SETTING, /* value= */ "");
-
-        // The current clock is empty
-        assertEquals("", mManager.getCurrentClock());
-    }
-}
diff --git a/tests/src/com/android/customization/model/picker/color/ui/viewmodel/ColorPickerViewModelTest.kt b/tests/src/com/android/customization/model/picker/color/ui/viewmodel/ColorPickerViewModelTest.kt
index 1d9457a..a29d559 100644
--- a/tests/src/com/android/customization/model/picker/color/ui/viewmodel/ColorPickerViewModelTest.kt
+++ b/tests/src/com/android/customization/model/picker/color/ui/viewmodel/ColorPickerViewModelTest.kt
@@ -61,8 +61,8 @@
     fun setUp() {
         context = InstrumentationRegistry.getInstrumentation().targetContext
         val testDispatcher = StandardTestDispatcher()
-        testScope = TestScope(testDispatcher)
         Dispatchers.setMain(testDispatcher)
+        testScope = TestScope(testDispatcher)
         repository = FakeColorPickerRepository(context = context)
         store = FakeSnapshotStore()
 
diff --git a/tests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt b/tests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
index 103ae84..3f10674 100644
--- a/tests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
+++ b/tests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
@@ -34,10 +34,14 @@
 import com.android.wallpaper.module.InjectorProvider
 import com.android.wallpaper.picker.common.icon.ui.viewmodel.Icon
 import com.android.wallpaper.picker.common.text.ui.viewmodel.Text
+import com.android.wallpaper.picker.customization.data.repository.WallpaperRepository
+import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor
 import com.android.wallpaper.picker.option.ui.viewmodel.OptionItemViewModel
 import com.android.wallpaper.testing.FakeSnapshotStore
+import com.android.wallpaper.testing.FakeWallpaperClient
 import com.android.wallpaper.testing.TestCurrentWallpaperInfoFactory
 import com.android.wallpaper.testing.TestInjector
+import com.android.wallpaper.testing.TestWallpaperPreferences
 import com.android.wallpaper.testing.collectLastValue
 import com.google.common.truth.Truth.assertThat
 import com.google.common.truth.Truth.assertWithMessage
@@ -66,8 +70,7 @@
     private lateinit var testScope: TestScope
     private lateinit var client: FakeCustomizationProviderClient
     private lateinit var quickAffordanceInteractor: KeyguardQuickAffordancePickerInteractor
-
-    private var latestStartedActivityIntent: Intent? = null
+    private lateinit var wallpaperInteractor: WallpaperInteractor
 
     @Before
     fun setUp() {
@@ -94,12 +97,22 @@
                         .apply { runBlocking { setUpSnapshotRestorer(FakeSnapshotStore()) } }
                 },
             )
+        wallpaperInteractor =
+            WallpaperInteractor(
+                repository =
+                    WallpaperRepository(
+                        scope = testScope.backgroundScope,
+                        client = FakeWallpaperClient(),
+                        wallpaperPreferences = TestWallpaperPreferences(),
+                        backgroundDispatcher = testDispatcher,
+                    ),
+            )
         underTest =
             KeyguardQuickAffordancePickerViewModel.Factory(
                     context = context,
                     quickAffordanceInteractor = quickAffordanceInteractor,
+                    wallpaperInteractor = wallpaperInteractor,
                     wallpaperInfoFactory = TestCurrentWallpaperInfoFactory(context),
-                    activityStarter = { intent -> latestStartedActivityIntent = intent },
                 )
                 .create(KeyguardQuickAffordancePickerViewModel::class.java)
     }
@@ -233,12 +246,13 @@
             val slots = collectLastValue(underTest.slots)
             val quickAffordances = collectLastValue(underTest.quickAffordances)
             val dialog = collectLastValue(underTest.dialog)
+            val activityStartRequest = collectLastValue(underTest.activityStartRequests)
 
-            val enablementInstructions = listOf("instruction1", "instruction2")
+            val enablementExplanation = "enablementExplanation"
             val enablementActionText = "enablementActionText"
             val packageName = "packageName"
             val action = "action"
-            val enablementActionComponentName = "$packageName/$action"
+            val enablementActionIntent = Intent(action).apply { `package` = packageName }
             // Lets add a disabled affordance to the picker:
             val affordanceIndex =
                 client.addAffordance(
@@ -247,9 +261,9 @@
                         name = "disabled",
                         iconResourceId = 1,
                         isEnabled = false,
-                        enablementInstructions = enablementInstructions,
+                        enablementExplanation = enablementExplanation,
                         enablementActionText = enablementActionText,
-                        enablementActionComponentName = enablementActionComponentName,
+                        enablementActionIntent = enablementActionIntent,
                     )
                 )
 
@@ -259,16 +273,26 @@
             // We expect there to be a dialog that should be shown:
             assertThat(dialog()?.icon)
                 .isEqualTo(Icon.Loaded(FakeCustomizationProviderClient.ICON_1, null))
-            assertThat(dialog()?.title).isEqualTo(Text.Loaded("disabled"))
-            assertThat(dialog()?.message)
-                .isEqualTo(Text.Loaded(enablementInstructions.joinToString("\n")))
-            assertThat(dialog()?.buttons?.size).isEqualTo(1)
-            assertThat(dialog()?.buttons?.first()?.text)
-                .isEqualTo(Text.Loaded(enablementActionText))
+            assertThat(dialog()?.headline)
+                .isEqualTo(Text.Resource(R.string.keyguard_affordance_enablement_dialog_headline))
+            assertThat(dialog()?.message).isEqualTo(Text.Loaded(enablementExplanation))
+            assertThat(dialog()?.buttons?.size).isEqualTo(2)
+            assertThat(dialog()?.buttons?.first()?.text).isEqualTo(Text.Resource(R.string.cancel))
+            assertThat(dialog()?.buttons?.get(1)?.text).isEqualTo(Text.Loaded(enablementActionText))
+
+            // When the button is clicked, we expect an intent of the given enablement action
+            // component name to be emitted.
+            dialog()?.buttons?.get(1)?.onClicked?.invoke()
+            assertThat(activityStartRequest()?.`package`).isEqualTo(packageName)
+            assertThat(activityStartRequest()?.action).isEqualTo(action)
+
+            // Once we report that the activity was started, the activity start request should be
+            // nullified.
+            underTest.onActivityStarted()
+            assertThat(activityStartRequest()).isNull()
 
             // Once we report that the dialog has been dismissed by the user, we expect there to be
-            // no
-            // dialog to be shown:
+            // no dialog to be shown:
             underTest.onDialogDismissed()
             assertThat(dialog()).isNull()
         }
@@ -277,6 +301,7 @@
     fun `Start settings activity when long-pressing an affordance`() =
         testScope.runTest {
             val quickAffordances = collectLastValue(underTest.quickAffordances)
+            val activityStartRequest = collectLastValue(underTest.activityStartRequests)
 
             // Lets add a configurable affordance to the picker:
             val configureIntent = Intent("some.action")
@@ -294,7 +319,11 @@
             // Lets try to long-click the affordance:
             quickAffordances()?.get(affordanceIndex + 1)?.onLongClicked?.invoke()
 
-            assertThat(latestStartedActivityIntent).isEqualTo(configureIntent)
+            assertThat(activityStartRequest()).isEqualTo(configureIntent)
+            // Once we report that the activity was started, the activity start request should be
+            // nullified.
+            underTest.onActivityStarted()
+            assertThat(activityStartRequest()).isNull()
         }
 
     @Test
diff --git a/tests/src/com/android/customization/picker/clock/data/repository/FakeClockPickerRepository.kt b/tests/src/com/android/customization/picker/clock/data/repository/FakeClockPickerRepository.kt
index 2ef4e97..bf2766d 100644
--- a/tests/src/com/android/customization/picker/clock/data/repository/FakeClockPickerRepository.kt
+++ b/tests/src/com/android/customization/picker/clock/data/repository/FakeClockPickerRepository.kt
@@ -56,11 +56,11 @@
     private val _selectedClockSize = MutableStateFlow(ClockSize.SMALL)
     override val selectedClockSize: Flow<ClockSize> = _selectedClockSize.asStateFlow()
 
-    override fun setSelectedClock(clockId: String) {
+    override suspend fun setSelectedClock(clockId: String) {
         selectedClockId.value = clockId
     }
 
-    override fun setClockColor(
+    override suspend fun setClockColor(
         selectedColorId: String?,
         @IntRange(from = 0, to = 100) colorToneProgress: Int,
         @ColorInt seedColor: Int?,
@@ -75,12 +75,16 @@
     }
 
     companion object {
+        const val CLOCK_ID_0 = "clock0"
+        const val CLOCK_ID_1 = "clock1"
+        const val CLOCK_ID_2 = "clock2"
+        const val CLOCK_ID_3 = "clock3"
         val fakeClocks =
             listOf(
-                ClockMetadataModel("clock0", "clock0", null, 50, null),
-                ClockMetadataModel("clock1", "clock1", null, 50, null),
-                ClockMetadataModel("clock2", "clock2", null, 50, null),
-                ClockMetadataModel("clock3", "clock3", null, 50, null),
+                ClockMetadataModel(CLOCK_ID_0, "clock0", null, 50, null),
+                ClockMetadataModel(CLOCK_ID_1, "clock1", null, 50, null),
+                ClockMetadataModel(CLOCK_ID_2, "clock2", null, 50, null),
+                ClockMetadataModel(CLOCK_ID_3, "clock3", null, 50, null),
             )
         const val CLOCK_COLOR_ID = "RED"
         const val CLOCK_COLOR_TONE_PROGRESS = 87
diff --git a/tests/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractorTest.kt b/tests/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractorTest.kt
index cd41d7d..1a7ebb5 100644
--- a/tests/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractorTest.kt
+++ b/tests/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractorTest.kt
@@ -3,10 +3,12 @@
 import androidx.test.filters.SmallTest
 import com.android.customization.picker.clock.data.repository.FakeClockPickerRepository
 import com.android.customization.picker.clock.shared.ClockSize
+import com.android.wallpaper.testing.FakeSnapshotStore
 import com.android.wallpaper.testing.collectLastValue
 import com.google.common.truth.Truth
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.test.StandardTestDispatcher
 import kotlinx.coroutines.test.resetMain
 import kotlinx.coroutines.test.runTest
@@ -28,7 +30,15 @@
     fun setUp() {
         val testDispatcher = StandardTestDispatcher()
         Dispatchers.setMain(testDispatcher)
-        underTest = ClockPickerInteractor(FakeClockPickerRepository())
+        underTest =
+            ClockPickerInteractor(
+                repository = FakeClockPickerRepository(),
+                snapshotRestorer = {
+                    ClockPickerSnapshotRestorer(interactor = underTest).apply {
+                        runBlocking { setUpSnapshotRestorer(store = FakeSnapshotStore()) }
+                    }
+                },
+            )
     }
 
     @After
diff --git a/tests/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModelTest.kt b/tests/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModelTest.kt
index 63f77bd..c5eb796 100644
--- a/tests/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModelTest.kt
+++ b/tests/src/com/android/customization/picker/clock/ui/viewmodel/ClockCarouselViewModelTest.kt
@@ -16,13 +16,18 @@
 package com.android.customization.picker.clock.ui.viewmodel
 
 import androidx.test.filters.SmallTest
+import com.android.customization.picker.clock.data.repository.ClockPickerRepository
 import com.android.customization.picker.clock.data.repository.FakeClockPickerRepository
 import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor
+import com.android.customization.picker.clock.domain.interactor.ClockPickerSnapshotRestorer
 import com.android.customization.picker.clock.shared.model.ClockMetadataModel
+import com.android.wallpaper.testing.FakeSnapshotStore
 import com.android.wallpaper.testing.collectLastValue
 import com.google.common.truth.Truth.assertThat
+import kotlinx.coroutines.CoroutineDispatcher
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.test.StandardTestDispatcher
 import kotlinx.coroutines.test.advanceTimeBy
 import kotlinx.coroutines.test.resetMain
@@ -52,11 +57,13 @@
             )
         )
     }
+    private lateinit var testDispatcher: CoroutineDispatcher
     private lateinit var underTest: ClockCarouselViewModel
+    private lateinit var interactor: ClockPickerInteractor
 
     @Before
     fun setUp() {
-        val testDispatcher = StandardTestDispatcher()
+        testDispatcher = StandardTestDispatcher()
         Dispatchers.setMain(testDispatcher)
     }
 
@@ -67,54 +74,60 @@
 
     @Test
     fun setSelectedClock() = runTest {
-        underTest = ClockCarouselViewModel(ClockPickerInteractor(repositoryWithMultipleClocks))
+        underTest =
+            ClockCarouselViewModel(
+                getClockPickerInteractor(repositoryWithMultipleClocks),
+                testDispatcher
+            )
         val observedSelectedIndex = collectLastValue(underTest.selectedIndex)
         advanceTimeBy(ClockCarouselViewModel.CLOCKS_EVENT_UPDATE_DELAY_MILLIS)
+
         underTest.setSelectedClock(FakeClockPickerRepository.fakeClocks[2].clockId)
+
         assertThat(observedSelectedIndex()).isEqualTo(2)
     }
 
     @Test
-    fun setShouldShowCarousel() = runTest {
-        underTest = ClockCarouselViewModel(ClockPickerInteractor(repositoryWithMultipleClocks))
+    fun multipleClockCase() = runTest {
+        underTest =
+            ClockCarouselViewModel(
+                getClockPickerInteractor(repositoryWithMultipleClocks),
+                testDispatcher
+            )
         val observedIsCarouselVisible = collectLastValue(underTest.isCarouselVisible)
-        advanceTimeBy(ClockCarouselViewModel.CLOCKS_EVENT_UPDATE_DELAY_MILLIS)
-        underTest.showClockCarousel(false)
-        assertThat(observedIsCarouselVisible()).isFalse()
-        underTest.showClockCarousel(true)
-        assertThat(observedIsCarouselVisible()).isTrue()
-    }
-
-    @Test
-    fun shouldNotShowCarouselWhenSingleClock() = runTest {
-        underTest = ClockCarouselViewModel(ClockPickerInteractor(repositoryWithSingleClock))
-        val observedIsCarouselVisible = collectLastValue(underTest.isCarouselVisible)
-        advanceTimeBy(ClockCarouselViewModel.CLOCKS_EVENT_UPDATE_DELAY_MILLIS)
-        underTest.showClockCarousel(false)
-        assertThat(observedIsCarouselVisible()).isFalse()
-        underTest.showClockCarousel(true)
-        assertThat(observedIsCarouselVisible()).isFalse()
-    }
-
-    @Test
-    fun setShouldShowSingleClock() = runTest {
-        underTest = ClockCarouselViewModel(ClockPickerInteractor(repositoryWithSingleClock))
         val observedIsSingleClockViewVisible = collectLastValue(underTest.isSingleClockViewVisible)
+
         advanceTimeBy(ClockCarouselViewModel.CLOCKS_EVENT_UPDATE_DELAY_MILLIS)
-        underTest.showClockCarousel(false)
+
+        assertThat(observedIsCarouselVisible()).isTrue()
         assertThat(observedIsSingleClockViewVisible()).isFalse()
-        underTest.showClockCarousel(true)
+    }
+
+    @Test
+    fun singleClockCase() = runTest {
+        underTest =
+            ClockCarouselViewModel(
+                getClockPickerInteractor(repositoryWithSingleClock),
+                testDispatcher
+            )
+        val observedIsCarouselVisible = collectLastValue(underTest.isCarouselVisible)
+        val observedIsSingleClockViewVisible = collectLastValue(underTest.isSingleClockViewVisible)
+
+        advanceTimeBy(ClockCarouselViewModel.CLOCKS_EVENT_UPDATE_DELAY_MILLIS)
+
+        assertThat(observedIsCarouselVisible()).isFalse()
         assertThat(observedIsSingleClockViewVisible()).isTrue()
     }
 
-    @Test
-    fun shouldNotShowSingleClockWhenMultipleClocks() = runTest {
-        underTest = ClockCarouselViewModel(ClockPickerInteractor(repositoryWithMultipleClocks))
-        val observedIsSingleClockViewVisible = collectLastValue(underTest.isSingleClockViewVisible)
-        advanceTimeBy(ClockCarouselViewModel.CLOCKS_EVENT_UPDATE_DELAY_MILLIS)
-        underTest.showClockCarousel(false)
-        assertThat(observedIsSingleClockViewVisible()).isFalse()
-        underTest.showClockCarousel(true)
-        assertThat(observedIsSingleClockViewVisible()).isFalse()
+    private fun getClockPickerInteractor(repository: ClockPickerRepository): ClockPickerInteractor {
+        return ClockPickerInteractor(
+                repository = repository,
+                snapshotRestorer = {
+                    ClockPickerSnapshotRestorer(interactor = interactor).apply {
+                        runBlocking { setUpSnapshotRestorer(store = FakeSnapshotStore()) }
+                    }
+                }
+            )
+            .also { interactor = it }
     }
 }
diff --git a/tests/src/com/android/customization/picker/clock/ui/viewmodel/ClockSectionViewModelTest.kt b/tests/src/com/android/customization/picker/clock/ui/viewmodel/ClockSectionViewModelTest.kt
index 61976ad..293e393 100644
--- a/tests/src/com/android/customization/picker/clock/ui/viewmodel/ClockSectionViewModelTest.kt
+++ b/tests/src/com/android/customization/picker/clock/ui/viewmodel/ClockSectionViewModelTest.kt
@@ -19,12 +19,15 @@
 import androidx.test.platform.app.InstrumentationRegistry
 import com.android.customization.picker.clock.data.repository.FakeClockPickerRepository
 import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor
+import com.android.customization.picker.clock.domain.interactor.ClockPickerSnapshotRestorer
 import com.android.customization.picker.clock.shared.ClockSize
 import com.android.customization.picker.clock.shared.model.ClockMetadataModel
+import com.android.wallpaper.testing.FakeSnapshotStore
 import com.android.wallpaper.testing.collectLastValue
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.test.StandardTestDispatcher
 import kotlinx.coroutines.test.resetMain
 import kotlinx.coroutines.test.runTest
@@ -50,7 +53,15 @@
         Dispatchers.setMain(testDispatcher)
         val context = InstrumentationRegistry.getInstrumentation().targetContext
         clockColorMap = ClockColorViewModel.getPresetColorMap(context.resources)
-        interactor = ClockPickerInteractor(FakeClockPickerRepository())
+        interactor =
+            ClockPickerInteractor(
+                repository = FakeClockPickerRepository(),
+                snapshotRestorer = {
+                    ClockPickerSnapshotRestorer(interactor = interactor).apply {
+                        runBlocking { setUpSnapshotRestorer(store = FakeSnapshotStore()) }
+                    }
+                },
+            )
         underTest =
             ClockSectionViewModel(
                 context,
@@ -65,18 +76,20 @@
 
     @Test
     fun setSelectedClock() = runTest {
-        val colorRed = clockColorMap.values.first()
+        val colorGrey = clockColorMap.values.first()
         val observedSelectedClockColorAndSizeText =
             collectLastValue(underTest.selectedClockColorAndSizeText)
+
         interactor.setClockColor(
-            colorRed.colorId,
+            colorGrey.colorId,
             ClockMetadataModel.DEFAULT_COLOR_TONE_PROGRESS,
             ClockSettingsViewModel.blendColorWithTone(
-                colorRed.color,
-                colorRed.getColorTone(ClockMetadataModel.DEFAULT_COLOR_TONE_PROGRESS),
+                colorGrey.color,
+                colorGrey.getColorTone(ClockMetadataModel.DEFAULT_COLOR_TONE_PROGRESS),
             )
         )
         interactor.setClockSize(ClockSize.DYNAMIC)
-        assertThat(observedSelectedClockColorAndSizeText()).isEqualTo("Red, dynamic")
+
+        assertThat(observedSelectedClockColorAndSizeText()).isEqualTo("Grey, dynamic")
     }
 }
diff --git a/tests/src/com/android/customization/picker/clock/ui/viewmodel/ClockSettingsViewModelTest.kt b/tests/src/com/android/customization/picker/clock/ui/viewmodel/ClockSettingsViewModelTest.kt
index d53288d..f58baf8 100644
--- a/tests/src/com/android/customization/picker/clock/ui/viewmodel/ClockSettingsViewModelTest.kt
+++ b/tests/src/com/android/customization/picker/clock/ui/viewmodel/ClockSettingsViewModelTest.kt
@@ -5,6 +5,7 @@
 import androidx.test.platform.app.InstrumentationRegistry
 import com.android.customization.picker.clock.data.repository.FakeClockPickerRepository
 import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor
+import com.android.customization.picker.clock.domain.interactor.ClockPickerSnapshotRestorer
 import com.android.customization.picker.clock.shared.ClockSize
 import com.android.customization.picker.clock.shared.model.ClockMetadataModel
 import com.android.customization.picker.color.data.repository.FakeColorPickerRepository
@@ -15,8 +16,10 @@
 import com.google.common.truth.Truth.assertThat
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.ExperimentalCoroutinesApi
+import kotlinx.coroutines.launch
 import kotlinx.coroutines.runBlocking
 import kotlinx.coroutines.test.StandardTestDispatcher
+import kotlinx.coroutines.test.TestScope
 import kotlinx.coroutines.test.advanceTimeBy
 import kotlinx.coroutines.test.resetMain
 import kotlinx.coroutines.test.runTest
@@ -33,15 +36,37 @@
 class ClockSettingsViewModelTest {
 
     private lateinit var context: Context
+    private lateinit var testScope: TestScope
     private lateinit var colorPickerInteractor: ColorPickerInteractor
+    private lateinit var clockPickerInteractor: ClockPickerInteractor
     private lateinit var underTest: ClockSettingsViewModel
     private lateinit var colorMap: Map<String, ClockColorViewModel>
+    // We make the condition that CLOCK_ID_3 is not reactive to tone
+    private val getIsReactiveToTone: (clockId: String?) -> Boolean = { clockId ->
+        when (clockId) {
+            FakeClockPickerRepository.CLOCK_ID_0 -> true
+            FakeClockPickerRepository.CLOCK_ID_1 -> true
+            FakeClockPickerRepository.CLOCK_ID_2 -> true
+            FakeClockPickerRepository.CLOCK_ID_3 -> false
+            else -> false
+        }
+    }
 
     @Before
     fun setUp() {
         val testDispatcher = StandardTestDispatcher()
         Dispatchers.setMain(testDispatcher)
         context = InstrumentationRegistry.getInstrumentation().targetContext
+        testScope = TestScope(testDispatcher)
+        clockPickerInteractor =
+            ClockPickerInteractor(
+                repository = FakeClockPickerRepository(),
+                snapshotRestorer = {
+                    ClockPickerSnapshotRestorer(interactor = clockPickerInteractor).apply {
+                        runBlocking { setUpSnapshotRestorer(store = FakeSnapshotStore()) }
+                    }
+                },
+            )
         colorPickerInteractor =
             ColorPickerInteractor(
                 repository = FakeColorPickerRepository(context = context),
@@ -54,11 +79,16 @@
         underTest =
             ClockSettingsViewModel.Factory(
                     context = context,
-                    clockPickerInteractor = ClockPickerInteractor(FakeClockPickerRepository()),
+                    clockPickerInteractor = clockPickerInteractor,
                     colorPickerInteractor = colorPickerInteractor,
+                    getIsReactiveToTone = getIsReactiveToTone,
                 )
                 .create(ClockSettingsViewModel::class.java)
         colorMap = ClockColorViewModel.getPresetColorMap(context.resources)
+
+        testScope.launch {
+            clockPickerInteractor.setSelectedClock(FakeClockPickerRepository.CLOCK_ID_0)
+        }
     }
 
     @After
@@ -88,15 +118,20 @@
         val observedSeedColor = collectLastValue(underTest.seedColor)
         // Advance COLOR_OPTIONS_EVENT_UPDATE_DELAY_MILLIS since there is a delay from colorOptions
         advanceTimeBy(ClockSettingsViewModel.COLOR_OPTIONS_EVENT_UPDATE_DELAY_MILLIS)
-        assertThat(observedClockColorOptions()!![0].isSelected).isTrue()
-        assertThat(observedClockColorOptions()!![0].onClick).isNull()
+        val option0IsSelected = collectLastValue(observedClockColorOptions()!![0].isSelected)
+        val option0OnClicked = collectLastValue(observedClockColorOptions()!![0].onClicked)
+        assertThat(option0IsSelected()).isTrue()
+        assertThat(option0OnClicked()).isNull()
         assertThat(observedSelectedColorOptionPosition()).isEqualTo(0)
 
-        observedClockColorOptions()!![1].onClick?.invoke()
+        val option1OnClickedBefore = collectLastValue(observedClockColorOptions()!![1].onClicked)
+        option1OnClickedBefore()?.invoke()
         // Advance COLOR_OPTIONS_EVENT_UPDATE_DELAY_MILLIS since there is a delay from colorOptions
         advanceTimeBy(ClockSettingsViewModel.COLOR_OPTIONS_EVENT_UPDATE_DELAY_MILLIS)
-        assertThat(observedClockColorOptions()!![1].isSelected).isTrue()
-        assertThat(observedClockColorOptions()!![1].onClick).isNull()
+        val option1IsSelected = collectLastValue(observedClockColorOptions()!![1].isSelected)
+        val option1OnClickedAfter = collectLastValue(observedClockColorOptions()!![1].onClicked)
+        assertThat(option1IsSelected()).isTrue()
+        assertThat(option1OnClickedAfter()).isNull()
         assertThat(observedSelectedColorOptionPosition()).isEqualTo(1)
         assertThat(observedSliderProgress())
             .isEqualTo(ClockMetadataModel.DEFAULT_COLOR_TONE_PROGRESS)
@@ -120,10 +155,12 @@
         val observedSeedColor = collectLastValue(underTest.seedColor)
         // Advance COLOR_OPTIONS_EVENT_UPDATE_DELAY_MILLIS since there is a delay from colorOptions
         advanceTimeBy(ClockSettingsViewModel.COLOR_OPTIONS_EVENT_UPDATE_DELAY_MILLIS)
-        assertThat(observedClockColorOptions()!![0].isSelected).isTrue()
+        val option0IsSelected = collectLastValue(observedClockColorOptions()!![0].isSelected)
+        assertThat(option0IsSelected()).isTrue()
         assertThat(observedIsSliderEnabled()).isFalse()
 
-        observedClockColorOptions()!![1].onClick?.invoke()
+        val option1OnClicked = collectLastValue(observedClockColorOptions()!![1].onClicked)
+        option1OnClicked()?.invoke()
 
         // Advance COLOR_OPTIONS_EVENT_UPDATE_DELAY_MILLIS since there is a delay from colorOptions
         advanceTimeBy(ClockSettingsViewModel.COLOR_OPTIONS_EVENT_UPDATE_DELAY_MILLIS)
@@ -132,7 +169,7 @@
         underTest.onSliderProgressChanged(targetProgress1)
         assertThat(observedSliderProgress()).isEqualTo(targetProgress1)
         val targetProgress2 = 55
-        underTest.onSliderProgressStop(targetProgress2)
+        testScope.launch { underTest.onSliderProgressStop(targetProgress2) }
         assertThat(observedSliderProgress()).isEqualTo(targetProgress2)
         val expectedSelectedColorModel = colorMap.values.first() // RED
         assertThat(observedSeedColor())
@@ -153,4 +190,21 @@
         underTest.setClockSize(ClockSize.SMALL)
         assertThat(observedClockSize()).isEqualTo(ClockSize.SMALL)
     }
+
+    @Test
+    fun getIsReactiveToTone() = runTest {
+        val observedClockColorOptions = collectLastValue(underTest.colorOptions)
+        val isSliderEnabled = collectLastValue(underTest.isSliderEnabled)
+        // Advance COLOR_OPTIONS_EVENT_UPDATE_DELAY_MILLIS since there is a delay from colorOptions
+        advanceTimeBy(ClockSettingsViewModel.COLOR_OPTIONS_EVENT_UPDATE_DELAY_MILLIS)
+        val option1OnClicked = collectLastValue(observedClockColorOptions()!![1].onClicked)
+        option1OnClicked()?.invoke()
+
+        clockPickerInteractor.setSelectedClock(FakeClockPickerRepository.CLOCK_ID_0)
+        assertThat(isSliderEnabled()).isTrue()
+
+        // We make the condition that CLOCK_ID_0 is not reactive to tone
+        clockPickerInteractor.setSelectedClock(FakeClockPickerRepository.CLOCK_ID_3)
+        assertThat(isSliderEnabled()).isFalse()
+    }
 }
diff --git a/tests/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModelTest.kt b/tests/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModelTest.kt
index 6442609..63334f2 100644
--- a/tests/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModelTest.kt
+++ b/tests/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModelTest.kt
@@ -84,18 +84,14 @@
     @Test
     fun `toggles back and forth`() =
         testScope.runTest {
-            val subtitleStringResId = collectLastValue(underTest.subtitleStringResourceId)
             val isSwitchOn = collectLastValue(underTest.isSwitchOn)
 
-            val initialSubtitleStringRes = subtitleStringResId()
             val initialIsSwitchOn = isSwitchOn()
 
             underTest.onClicked()
-            assertThat(subtitleStringResId()).isNotEqualTo(initialSubtitleStringRes)
             assertThat(isSwitchOn()).isNotEqualTo(initialIsSwitchOn)
 
             underTest.onClicked()
-            assertThat(subtitleStringResId()).isEqualTo(initialSubtitleStringRes)
             assertThat(isSwitchOn()).isEqualTo(initialIsSwitchOn)
         }
 }
diff --git a/tests/src/com/android/customization/testing/TestCustomizationInjector.kt b/tests/src/com/android/customization/testing/TestCustomizationInjector.kt
deleted file mode 100644
index b49e654..0000000
--- a/tests/src/com/android/customization/testing/TestCustomizationInjector.kt
+++ /dev/null
@@ -1,289 +0,0 @@
-package com.android.customization.testing
-
-import android.app.Activity
-import android.content.Context
-import android.text.TextUtils
-import androidx.fragment.app.FragmentActivity
-import com.android.customization.model.color.ColorCustomizationManager
-import com.android.customization.model.color.ColorOptionsProvider
-import com.android.customization.model.theme.OverlayManagerCompat
-import com.android.customization.model.theme.ThemeBundleProvider
-import com.android.customization.model.theme.ThemeManager
-import com.android.customization.module.CustomizationInjector
-import com.android.customization.module.CustomizationPreferences
-import com.android.customization.module.ThemesUserEventLogger
-import com.android.customization.picker.clock.data.repository.ClockRegistryProvider
-import com.android.customization.picker.clock.data.repository.FakeClockPickerRepository
-import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor
-import com.android.customization.picker.clock.ui.view.ClockViewFactory
-import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewModel
-import com.android.customization.picker.clock.ui.viewmodel.ClockSectionViewModel
-import com.android.customization.picker.clock.ui.viewmodel.ClockSettingsViewModel
-import com.android.customization.picker.color.data.repository.ColorPickerRepository
-import com.android.customization.picker.color.data.repository.ColorPickerRepositoryImpl
-import com.android.customization.picker.color.domain.interactor.ColorPickerInteractor
-import com.android.customization.picker.color.domain.interactor.ColorPickerSnapshotRestorer
-import com.android.customization.picker.color.ui.viewmodel.ColorPickerViewModel
-import com.android.customization.picker.quickaffordance.data.repository.KeyguardQuickAffordancePickerRepository
-import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor
-import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordanceSnapshotRestorer
-import com.android.systemui.shared.clocks.ClockRegistry
-import com.android.systemui.shared.customization.data.content.CustomizationProviderClient
-import com.android.systemui.shared.customization.data.content.CustomizationProviderClientImpl
-import com.android.wallpaper.config.BaseFlags
-import com.android.wallpaper.model.WallpaperColorsViewModel
-import com.android.wallpaper.module.DrawableLayerResolver
-import com.android.wallpaper.module.PackageStatusNotifier
-import com.android.wallpaper.module.UserEventLogger
-import com.android.wallpaper.picker.customization.data.content.WallpaperClientImpl
-import com.android.wallpaper.picker.customization.data.repository.WallpaperRepository
-import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor
-import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer
-import com.android.wallpaper.testing.TestInjector
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.GlobalScope
-
-/** Test implementation of the dependency injector. */
-class TestCustomizationInjector : TestInjector(), CustomizationInjector {
-    private var customizationPreferences: CustomizationPreferences? = null
-    private var themeManager: ThemeManager? = null
-    private var packageStatusNotifier: PackageStatusNotifier? = null
-    private var drawableLayerResolver: DrawableLayerResolver? = null
-    private var userEventLogger: UserEventLogger? = null
-    private var wallpaperInteractor: WallpaperInteractor? = null
-    private var keyguardQuickAffordancePickerInteractor: KeyguardQuickAffordancePickerInteractor? =
-        null
-    private var flags: BaseFlags? = null
-    private var customizationProviderClient: CustomizationProviderClient? = null
-    private var keyguardQuickAffordanceSnapshotRestorer: KeyguardQuickAffordanceSnapshotRestorer? =
-        null
-    private var clockRegistry: ClockRegistry? = null
-    private var clockPickerInteractor: ClockPickerInteractor? = null
-    private var clockSectionViewModel: ClockSectionViewModel? = null
-    private var clockViewFactory: ClockViewFactory? = null
-    private var colorPickerRepository: ColorPickerRepository? = null
-    private var colorPickerInteractor: ColorPickerInteractor? = null
-    private var colorPickerViewModelFactory: ColorPickerViewModel.Factory? = null
-    private var colorPickerSnapshotRestorer: ColorPickerSnapshotRestorer? = null
-    private var colorCustomizationManager: ColorCustomizationManager? = null
-    private var clockCarouselViewModel: ClockCarouselViewModel? = null
-    private var clockSettingsViewModelFactory: ClockSettingsViewModel.Factory? = null
-
-    override fun getCustomizationPreferences(context: Context): CustomizationPreferences {
-        return customizationPreferences
-            ?: TestDefaultCustomizationPreferences(context).also { customizationPreferences = it }
-    }
-
-    override fun getThemeManager(
-        provider: ThemeBundleProvider,
-        activity: FragmentActivity,
-        overlayManagerCompat: OverlayManagerCompat,
-        logger: ThemesUserEventLogger
-    ): ThemeManager {
-        return themeManager
-            ?: TestThemeManager(provider, activity, overlayManagerCompat, logger).also {
-                themeManager = it
-            }
-    }
-
-    override fun getPackageStatusNotifier(context: Context): PackageStatusNotifier {
-        return packageStatusNotifier
-            ?: TestPackageStatusNotifier().also {
-                packageStatusNotifier = TestPackageStatusNotifier()
-            }
-    }
-
-    override fun getDrawableLayerResolver(): DrawableLayerResolver {
-        return drawableLayerResolver
-            ?: TestDrawableLayerResolver().also { drawableLayerResolver = it }
-    }
-
-    override fun getUserEventLogger(context: Context): UserEventLogger {
-        return userEventLogger ?: TestThemesUserEventLogger().also { userEventLogger = it }
-    }
-
-    override fun getWallpaperInteractor(context: Context): WallpaperInteractor {
-        return wallpaperInteractor
-            ?: WallpaperInteractor(
-                    repository =
-                        WallpaperRepository(
-                            scope = GlobalScope,
-                            client = WallpaperClientImpl(context = context),
-                            backgroundDispatcher = Dispatchers.IO,
-                        ),
-                    shouldHandleReload = {
-                        TextUtils.equals(
-                            getColorCustomizationManager(context).currentColorSource,
-                            ColorOptionsProvider.COLOR_SOURCE_PRESET
-                        )
-                    }
-                )
-                .also { wallpaperInteractor = it }
-    }
-
-    override fun getKeyguardQuickAffordancePickerInteractor(
-        context: Context
-    ): KeyguardQuickAffordancePickerInteractor {
-        return keyguardQuickAffordancePickerInteractor
-            ?: createCustomizationProviderClient(context).also {
-                keyguardQuickAffordancePickerInteractor = it
-            }
-    }
-
-    private fun createCustomizationProviderClient(
-        context: Context
-    ): KeyguardQuickAffordancePickerInteractor {
-        val client: CustomizationProviderClient =
-            CustomizationProviderClientImpl(context, Dispatchers.IO)
-        return KeyguardQuickAffordancePickerInteractor(
-            KeyguardQuickAffordancePickerRepository(client, Dispatchers.IO),
-            client
-        ) {
-            getKeyguardQuickAffordanceSnapshotRestorer(context)
-        }
-    }
-
-    override fun getFlags(): BaseFlags {
-        return flags ?: object : BaseFlags() {}.also { flags = it }
-    }
-
-    override fun getSnapshotRestorers(context: Context): Map<Int, SnapshotRestorer> {
-        val restorers: MutableMap<Int, SnapshotRestorer> = HashMap()
-        restorers[KEY_QUICK_AFFORDANCE_SNAPSHOT_RESTORER] =
-            getKeyguardQuickAffordanceSnapshotRestorer(context)
-        restorers[KEY_COLOR_PICKER_SNAPSHOT_RESTORER] =
-            getColorPickerSnapshotRestorer(context, getWallpaperColorsViewModel())
-        return restorers
-    }
-
-    /** Returns the [CustomizationProviderClient]. */
-    private fun getKeyguardQuickAffordancePickerProviderClient(
-        context: Context
-    ): CustomizationProviderClient {
-        return customizationProviderClient
-            ?: CustomizationProviderClientImpl(context, Dispatchers.IO).also {
-                customizationProviderClient = it
-            }
-    }
-
-    private fun getKeyguardQuickAffordanceSnapshotRestorer(
-        context: Context
-    ): KeyguardQuickAffordanceSnapshotRestorer {
-        return keyguardQuickAffordanceSnapshotRestorer
-            ?: KeyguardQuickAffordanceSnapshotRestorer(
-                    getKeyguardQuickAffordancePickerInteractor(context),
-                    getKeyguardQuickAffordancePickerProviderClient(context)
-                )
-                .also { keyguardQuickAffordanceSnapshotRestorer = it }
-    }
-
-    override fun getClockRegistry(context: Context): ClockRegistry {
-        return clockRegistry
-            ?: ClockRegistryProvider(context, GlobalScope, Dispatchers.Main, Dispatchers.IO)
-                .get()
-                .also { clockRegistry = it }
-    }
-
-    override fun getClockPickerInteractor(context: Context): ClockPickerInteractor {
-        return clockPickerInteractor
-            ?: ClockPickerInteractor(FakeClockPickerRepository()).also {
-                clockPickerInteractor = it
-            }
-    }
-
-    override fun getClockSectionViewModel(context: Context): ClockSectionViewModel {
-        return clockSectionViewModel
-            ?: ClockSectionViewModel(context, getClockPickerInteractor(context)).also {
-                clockSectionViewModel = it
-            }
-    }
-
-    private fun getColorPickerRepository(
-        context: Context,
-        wallpaperColorsViewModel: WallpaperColorsViewModel,
-    ): ColorPickerRepository {
-        return colorPickerRepository
-            ?: ColorPickerRepositoryImpl(
-                wallpaperColorsViewModel,
-                getColorCustomizationManager(context)
-            )
-    }
-
-    override fun getColorPickerInteractor(
-        context: Context,
-        wallpaperColorsViewModel: WallpaperColorsViewModel,
-    ): ColorPickerInteractor {
-        return colorPickerInteractor
-            ?: ColorPickerInteractor(
-                    repository = getColorPickerRepository(context, wallpaperColorsViewModel),
-                    snapshotRestorer = {
-                        getColorPickerSnapshotRestorer(context, wallpaperColorsViewModel)
-                    },
-                )
-                .also { colorPickerInteractor = it }
-    }
-
-    override fun getColorPickerViewModelFactory(
-        context: Context,
-        wallpaperColorsViewModel: WallpaperColorsViewModel,
-    ): ColorPickerViewModel.Factory {
-        return colorPickerViewModelFactory
-            ?: ColorPickerViewModel.Factory(
-                    context,
-                    getColorPickerInteractor(context, wallpaperColorsViewModel),
-                )
-                .also { colorPickerViewModelFactory = it }
-    }
-
-    private fun getColorPickerSnapshotRestorer(
-        context: Context,
-        wallpaperColorsViewModel: WallpaperColorsViewModel
-    ): ColorPickerSnapshotRestorer {
-        return colorPickerSnapshotRestorer
-            ?: ColorPickerSnapshotRestorer(
-                    getColorPickerInteractor(context, wallpaperColorsViewModel)
-                )
-                .also { colorPickerSnapshotRestorer = it }
-    }
-
-    private fun getColorCustomizationManager(context: Context): ColorCustomizationManager {
-        return colorCustomizationManager
-            ?: ColorCustomizationManager.getInstance(context, OverlayManagerCompat(context)).also {
-                colorCustomizationManager = it
-            }
-    }
-
-    override fun getClockCarouselViewModel(context: Context): ClockCarouselViewModel {
-        return clockCarouselViewModel
-            ?: ClockCarouselViewModel(getClockPickerInteractor(context)).also {
-                clockCarouselViewModel = it
-            }
-    }
-
-    override fun getClockViewFactory(activity: Activity): ClockViewFactory {
-        return clockViewFactory
-            ?: ClockViewFactory(activity, getClockRegistry(activity)).also { clockViewFactory = it }
-    }
-
-    override fun getClockSettingsViewModelFactory(
-        context: Context,
-        wallpaperColorsViewModel: WallpaperColorsViewModel,
-    ): ClockSettingsViewModel.Factory {
-        return clockSettingsViewModelFactory
-            ?: ClockSettingsViewModel.Factory(
-                    context,
-                    getClockPickerInteractor(context),
-                    getColorPickerInteractor(
-                        context,
-                        wallpaperColorsViewModel,
-                    ),
-                )
-                .also { clockSettingsViewModelFactory = it }
-    }
-
-    companion object {
-        private const val KEY_QUICK_AFFORDANCE_SNAPSHOT_RESTORER = 1
-        private const val KEY_COLOR_PICKER_SNAPSHOT_RESTORER =
-            KEY_QUICK_AFFORDANCE_SNAPSHOT_RESTORER + 1
-    }
-}
diff --git a/tests/src/com/android/customization/testing/TestThemesUserEventLogger.java b/tests/src/com/android/customization/testing/TestThemesUserEventLogger.java
index 9250a86..2bb2082 100644
--- a/tests/src/com/android/customization/testing/TestThemesUserEventLogger.java
+++ b/tests/src/com/android/customization/testing/TestThemesUserEventLogger.java
@@ -1,6 +1,5 @@
 package com.android.customization.testing;
 
-import com.android.customization.model.clock.Clockface;
 import com.android.customization.model.color.ColorOption;
 import com.android.customization.model.grid.GridOption;
 import com.android.customization.model.theme.ThemeBundle;
@@ -28,16 +27,6 @@
     }
 
     @Override
-    public void logClockSelected(Clockface clock) {
-        // Do nothing.
-    }
-
-    @Override
-    public void logClockApplied(Clockface clock) {
-        // Do nothing.
-    }
-
-    @Override
     public void logGridSelected(GridOption grid) {
         // Do nothing.
     }
diff --git a/themes/res/values-en-rCA/strings.xml b/themes/res/values-en-rCA/strings.xml
index ae4e8c5..780a3c9 100644
--- a/themes/res/values-en-rCA/strings.xml
+++ b/themes/res/values-en-rCA/strings.xml
@@ -24,5 +24,6 @@
     <string name="rainbow_color_name_blue" msgid="3473176664458856892">"Blue"</string>
     <string name="rainbow_color_name_purple" msgid="2704722524588084868">"Purple"</string>
     <string name="rainbow_color_name_magenta" msgid="7248703626077785569">"Magenta"</string>
-    <string name="monochromatic_name" msgid="2554823570460886176">"Monochromatic"</string>
+    <!-- no translation found for monochromatic_name (2554823570460886176) -->
+    <skip />
 </resources>
