1 /* 2 * Copyright 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package androidx.compose.material3.common 18 19 import androidx.compose.material3.common.tokens.PaletteTokens 20 import androidx.compose.runtime.Stable 21 import androidx.compose.ui.graphics.Color 22 23 /** 24 * Tonal Palette structure in Material. 25 * 26 * A tonal palette is comprised of 5 tonal ranges. Each tonal range includes the 13 stops, or tonal 27 * swatches. 28 * 29 * Tonal range names are: 30 * - Neutral (N) 31 * - Neutral variant (NV) 32 * - Primary (P) 33 * - Secondary (S) 34 * - Tertiary (T) 35 */ 36 class TonalPalette( 37 // The neutral tonal range from the generated dynamic color palette. 38 // Ordered from the lightest shade [neutral100] to the darkest shade [neutral0]. 39 val neutral100: Color, 40 val neutral99: Color, 41 val neutral98: Color, 42 val neutral96: Color, 43 val neutral95: Color, 44 val neutral94: Color, 45 val neutral92: Color, 46 val neutral90: Color, 47 val neutral87: Color, 48 val neutral80: Color, 49 val neutral70: Color, 50 val neutral60: Color, 51 val neutral50: Color, 52 val neutral40: Color, 53 val neutral30: Color, 54 val neutral24: Color, 55 val neutral22: Color, 56 val neutral20: Color, 57 val neutral17: Color, 58 val neutral12: Color, 59 val neutral10: Color, 60 val neutral6: Color, 61 val neutral4: Color, 62 val neutral0: Color, 63 64 // The neutral variant tonal range, sometimes called "neutral 2", from the 65 // generated dynamic color palette. 66 // Ordered from the lightest shade [neutralVariant100] to the darkest shade [neutralVariant0]. 67 val neutralVariant100: Color, 68 val neutralVariant99: Color, 69 val neutralVariant98: Color, 70 val neutralVariant96: Color, 71 val neutralVariant95: Color, 72 val neutralVariant94: Color, 73 val neutralVariant92: Color, 74 val neutralVariant90: Color, 75 val neutralVariant87: Color, 76 val neutralVariant80: Color, 77 val neutralVariant70: Color, 78 val neutralVariant60: Color, 79 val neutralVariant50: Color, 80 val neutralVariant40: Color, 81 val neutralVariant30: Color, 82 val neutralVariant24: Color, 83 val neutralVariant22: Color, 84 val neutralVariant20: Color, 85 val neutralVariant17: Color, 86 val neutralVariant12: Color, 87 val neutralVariant10: Color, 88 val neutralVariant6: Color, 89 val neutralVariant4: Color, 90 val neutralVariant0: Color, 91 92 // The primary tonal range from the generated dynamic color palette. 93 // Ordered from the lightest shade [primary100] to the darkest shade [primary0]. 94 val primary100: Color, 95 val primary99: Color, 96 val primary95: Color, 97 val primary90: Color, 98 val primary80: Color, 99 val primary70: Color, 100 val primary60: Color, 101 val primary50: Color, 102 val primary40: Color, 103 val primary30: Color, 104 val primary20: Color, 105 val primary10: Color, 106 val primary0: Color, 107 108 // The secondary tonal range from the generated dynamic color palette. 109 // Ordered from the lightest shade [secondary100] to the darkest shade [secondary0]. 110 val secondary100: Color, 111 val secondary99: Color, 112 val secondary95: Color, 113 val secondary90: Color, 114 val secondary80: Color, 115 val secondary70: Color, 116 val secondary60: Color, 117 val secondary50: Color, 118 val secondary40: Color, 119 val secondary30: Color, 120 val secondary20: Color, 121 val secondary10: Color, 122 val secondary0: Color, 123 124 // The tertiary tonal range from the generated dynamic color palette. 125 // Ordered from the lightest shade [tertiary100] to the darkest shade [tertiary0]. 126 val tertiary100: Color, 127 val tertiary99: Color, 128 val tertiary95: Color, 129 val tertiary90: Color, 130 val tertiary80: Color, 131 val tertiary70: Color, 132 val tertiary60: Color, 133 val tertiary50: Color, 134 val tertiary40: Color, 135 val tertiary30: Color, 136 val tertiary20: Color, 137 val tertiary10: Color, 138 val tertiary0: Color 139 ) 140 141 object TonalPaletteDefaults { 142 /** Baseline colors in Material. */ 143 @Stable 144 val BaselineTonalPalette = 145 TonalPalette( 146 neutral100 = PaletteTokens.Neutral100, 147 neutral99 = PaletteTokens.Neutral99, 148 neutral98 = PaletteTokens.Neutral98, 149 neutral96 = PaletteTokens.Neutral96, 150 neutral95 = PaletteTokens.Neutral95, 151 neutral94 = PaletteTokens.Neutral94, 152 neutral92 = PaletteTokens.Neutral92, 153 neutral90 = PaletteTokens.Neutral90, 154 neutral87 = PaletteTokens.Neutral87, 155 neutral80 = PaletteTokens.Neutral80, 156 neutral70 = PaletteTokens.Neutral70, 157 neutral60 = PaletteTokens.Neutral60, 158 neutral50 = PaletteTokens.Neutral50, 159 neutral40 = PaletteTokens.Neutral40, 160 neutral30 = PaletteTokens.Neutral30, 161 neutral24 = PaletteTokens.Neutral24, 162 neutral22 = PaletteTokens.Neutral22, 163 neutral20 = PaletteTokens.Neutral20, 164 neutral17 = PaletteTokens.Neutral17, 165 neutral12 = PaletteTokens.Neutral12, 166 neutral10 = PaletteTokens.Neutral10, 167 neutral6 = PaletteTokens.Neutral6, 168 neutral4 = PaletteTokens.Neutral4, 169 neutral0 = PaletteTokens.Neutral0, 170 neutralVariant100 = PaletteTokens.NeutralVariant100, 171 neutralVariant99 = PaletteTokens.NeutralVariant99, 172 neutralVariant95 = PaletteTokens.NeutralVariant95, 173 neutralVariant90 = PaletteTokens.NeutralVariant90, 174 neutralVariant80 = PaletteTokens.NeutralVariant80, 175 neutralVariant70 = PaletteTokens.NeutralVariant70, 176 neutralVariant60 = PaletteTokens.NeutralVariant60, 177 neutralVariant50 = PaletteTokens.NeutralVariant50, 178 neutralVariant40 = PaletteTokens.NeutralVariant40, 179 neutralVariant30 = PaletteTokens.NeutralVariant30, 180 neutralVariant20 = PaletteTokens.NeutralVariant20, 181 neutralVariant10 = PaletteTokens.NeutralVariant10, 182 neutralVariant0 = PaletteTokens.NeutralVariant0, 183 primary100 = PaletteTokens.Primary100, 184 primary99 = PaletteTokens.Primary99, 185 primary95 = PaletteTokens.Primary95, 186 primary90 = PaletteTokens.Primary90, 187 primary80 = PaletteTokens.Primary80, 188 primary70 = PaletteTokens.Primary70, 189 primary60 = PaletteTokens.Primary60, 190 primary50 = PaletteTokens.Primary50, 191 primary40 = PaletteTokens.Primary40, 192 primary30 = PaletteTokens.Primary30, 193 primary20 = PaletteTokens.Primary20, 194 primary10 = PaletteTokens.Primary10, 195 primary0 = PaletteTokens.Primary0, 196 secondary100 = PaletteTokens.Secondary100, 197 secondary99 = PaletteTokens.Secondary99, 198 secondary95 = PaletteTokens.Secondary95, 199 secondary90 = PaletteTokens.Secondary90, 200 secondary80 = PaletteTokens.Secondary80, 201 secondary70 = PaletteTokens.Secondary70, 202 secondary60 = PaletteTokens.Secondary60, 203 secondary50 = PaletteTokens.Secondary50, 204 secondary40 = PaletteTokens.Secondary40, 205 secondary30 = PaletteTokens.Secondary30, 206 secondary20 = PaletteTokens.Secondary20, 207 secondary10 = PaletteTokens.Secondary10, 208 secondary0 = PaletteTokens.Secondary0, 209 tertiary100 = PaletteTokens.Tertiary100, 210 tertiary99 = PaletteTokens.Tertiary99, 211 tertiary95 = PaletteTokens.Tertiary95, 212 tertiary90 = PaletteTokens.Tertiary90, 213 tertiary80 = PaletteTokens.Tertiary80, 214 tertiary70 = PaletteTokens.Tertiary70, 215 tertiary60 = PaletteTokens.Tertiary60, 216 tertiary50 = PaletteTokens.Tertiary50, 217 tertiary40 = PaletteTokens.Tertiary40, 218 tertiary30 = PaletteTokens.Tertiary30, 219 tertiary20 = PaletteTokens.Tertiary20, 220 tertiary10 = PaletteTokens.Tertiary10, 221 tertiary0 = PaletteTokens.Tertiary0, 222 223 // Currently unused baseline palette values 224 neutralVariant98 = Color.Unspecified, 225 neutralVariant96 = Color.Unspecified, 226 neutralVariant94 = Color.Unspecified, 227 neutralVariant92 = Color.Unspecified, 228 neutralVariant87 = Color.Unspecified, 229 neutralVariant24 = Color.Unspecified, 230 neutralVariant22 = Color.Unspecified, 231 neutralVariant17 = Color.Unspecified, 232 neutralVariant12 = Color.Unspecified, 233 neutralVariant6 = Color.Unspecified, 234 neutralVariant4 = Color.Unspecified 235 ) 236 } 237