blob: 71a2da1454b4fdf938400867e408ddbce726c573 [file] [log] [blame] [edit]
// Copyright 2016-present the Material Components for iOS authors. All Rights Reserved.
//
// 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.
#import <UIKit/UIKit.h>
API_DEPRECATED_BEGIN("🤖👀 Use go/material-ios-branding APIs instead. "
"See go/material-ios-tokens guidance for more details. "
"This has go/material-ios-migrations#scriptable-potential 🤖👀",
ios(12, 12))
/** Tint color name. */
typedef NSString *MDCPaletteTint NS_EXTENSIBLE_STRING_ENUM;
/** The name of the tint 50 color when creating a custom palette. */
CG_EXTERN const MDCPaletteTint _Nonnull MDCPaletteTint50Name;
/** The name of the tint 100 color when creating a custom palette. */
CG_EXTERN const MDCPaletteTint _Nonnull MDCPaletteTint100Name;
/** The name of the tint 200 color when creating a custom palette. */
CG_EXTERN const MDCPaletteTint _Nonnull MDCPaletteTint200Name;
/** The name of the tint 300 color when creating a custom palette. */
CG_EXTERN const MDCPaletteTint _Nonnull MDCPaletteTint300Name;
/** The name of the tint 400 color when creating a custom palette. */
CG_EXTERN const MDCPaletteTint _Nonnull MDCPaletteTint400Name;
/** The name of the tint 500 color when creating a custom palette. */
CG_EXTERN const MDCPaletteTint _Nonnull MDCPaletteTint500Name;
/** The name of the tint 600 color when creating a custom palette. */
CG_EXTERN const MDCPaletteTint _Nonnull MDCPaletteTint600Name;
/** The name of the tint 700 color when creating a custom palette. */
CG_EXTERN const MDCPaletteTint _Nonnull MDCPaletteTint700Name;
/** The name of the tint 800 color when creating a custom palette. */
CG_EXTERN const MDCPaletteTint _Nonnull MDCPaletteTint800Name;
/** The name of the tint 900 color when creating a custom palette. */
CG_EXTERN const MDCPaletteTint _Nonnull MDCPaletteTint900Name;
/** Accent color name. */
typedef NSString *MDCPaletteAccent NS_EXTENSIBLE_STRING_ENUM;
/** The name of the accent 100 color when creating a custom palette. */
CG_EXTERN const MDCPaletteAccent _Nonnull MDCPaletteAccent100Name;
/** The name of the accent 200 color when creating a custom palette. */
CG_EXTERN const MDCPaletteAccent _Nonnull MDCPaletteAccent200Name;
/** The name of the accent 400 color when creating a custom palette. */
CG_EXTERN const MDCPaletteAccent _Nonnull MDCPaletteAccent400Name;
/** The name of the accent 700 color when creating a custom palette. */
CG_EXTERN const MDCPaletteAccent _Nonnull MDCPaletteAccent700Name;
/**
A palette of Material colors.
Material palettes have a set of named tint colors and an optional set of named accent colors. This
class provides access to the pre-defined set of Material palettes. MDCPalette objects are
immutable; it is safe to use them from multiple threads in your app.
@see https://material.io/go/design-color-theming#color-color-palette
*/
@interface MDCPalette : NSObject
/** The red palette. */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *redPalette;
/** The pink palette. */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *pinkPalette;
/** The purple palette. */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *purplePalette;
/** The deep purple palette. */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *deepPurplePalette;
/** The indigo palette. */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *indigoPalette;
/** The blue palette. */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *bluePalette;
/** The light blue palette. */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *lightBluePalette;
/** The cyan palette. */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *cyanPalette;
/** The teal palette. */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *tealPalette;
/** The green palette. */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *greenPalette;
/** The light green palette. */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *lightGreenPalette;
/** The lime palette. */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *limePalette;
/** The yellow palette. */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *yellowPalette;
/** The amber palette. */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *amberPalette;
/** The orange palette. */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *orangePalette;
/** The deep orange palette. */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *deepOrangePalette;
/** The brown palette (no accents). */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *brownPalette;
/** The grey palette (no accents). */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *greyPalette;
/** The blue grey palette (no accents). */
@property(class, nonatomic, readonly, strong, nonnull) MDCPalette *blueGreyPalette;
/**
Returns a palette generated from a single target 500 tint color.
TODO(ajsecord): Document the algorithm used to generate the palette.
@param target500Color The target "500" color in the palette.
@return A palette generated with a 500 color matching the target color.
*/
+ (nonnull instancetype)paletteGeneratedFromColor:(nonnull UIColor *)target500Color;
/**
Returns a palette with a custom set of tints and accents.
The tints dictionary must have values for each key matching MDCPaletteTint.*Name. The accents
dictionary, if specified, may have entries for each key matching MDCPaletteAccent.*Name. Missing
accent values will cause an assert in debug mode and will return +[UIColor clearColor] in release
mode when the corresponding property is acccessed.
@param tints A dictionary mapping MDCPaletteTint.*Name keys to UIColors.
@param accents An optional dictionary mapping MDCPaletteAccent.*Name keys to UIColors.
@return An palette containing the custom colors.
*/
+ (nonnull instancetype)paletteWithTints:(nonnull NSDictionary<MDCPaletteTint, UIColor *> *)tints
accents:
(nullable NSDictionary<MDCPaletteAccent, UIColor *> *)accents;
/**
Returns an initialized palette object with a custom set of tints and accents.
The tints dictionary must have values for each key matching MDCPaletteTint.*Name. The accents
dictionary, if specified, may have entries for each key matching MDCPaletteAccent.*Name. Missing
accent values will cause an assert in debug mode and will return +[UIColor clearColor] in release
mode when the corresponding property is acccessed.
@param tints A dictionary mapping MDCPaletteTint.*Name keys to UIColors.
@param accents An optional dictionary mapping MDCPaletteAccent.*Name keys to UIColors.
@return An initialized MDCPalette object containing the custom colors.
*/
- (nonnull instancetype)initWithTints:(nonnull NSDictionary<MDCPaletteTint, UIColor *> *)tints
accents:(nullable NSDictionary<MDCPaletteAccent, UIColor *> *)accents;
/** The 50 tint color, the lightest tint of the palette. */
@property(nonatomic, nonnull, readonly) UIColor *tint50;
/** The 100 tint color. */
@property(nonatomic, nonnull, readonly) UIColor *tint100;
/** The 200 tint color. */
@property(nonatomic, nonnull, readonly) UIColor *tint200;
/** The 300 tint color. */
@property(nonatomic, nonnull, readonly) UIColor *tint300;
/** The 400 tint color. */
@property(nonatomic, nonnull, readonly) UIColor *tint400;
/** The 500 tint color, the representative tint of the palette. */
@property(nonatomic, nonnull, readonly) UIColor *tint500;
/** The 600 tint color. */
@property(nonatomic, nonnull, readonly) UIColor *tint600;
/** The 700 tint color. */
@property(nonatomic, nonnull, readonly) UIColor *tint700;
/** The 800 tint color. */
@property(nonatomic, nonnull, readonly) UIColor *tint800;
/** The 900 tint color, the darkest tint of the palette. */
@property(nonatomic, nonnull, readonly) UIColor *tint900;
/** The A100 accent color, the lightest accent color. */
@property(nonatomic, nullable, readonly) UIColor *accent100;
/** The A200 accent color. */
@property(nonatomic, nullable, readonly) UIColor *accent200;
/** The A400 accent color. */
@property(nonatomic, nullable, readonly) UIColor *accent400;
/** The A700 accent color, the darkest accent color. */
@property(nonatomic, nullable, readonly) UIColor *accent700;
@end
API_DEPRECATED_END