icon = $icon; } /** * Invalid icon. * * @return Icon */ public static function invalid() { return new self( self::INVALID ); } /** * Removed icon. * * @return Icon */ public static function removed() { return new self( self::REMOVED ); } /** * Link icon * * @return Icon */ public static function link() { return new self( self::LINK ); } /** * Valid icon * * @return Icon */ public static function valid() { return new self( self::VALID ); } /** * Warning icon * * @return Icon */ public static function warning() { return new self( self::WARNING ); } /** * Logo icon * * @return Icon */ public static function logo() { return new self( self::LOGO ); } /** * Render icon as HTML. * * @param array $attributes List of attributes to add to HTML output. * @return string Rendered HTML. */ public function to_html( $attributes = [] ) { $icon_class = 'amp-icon ' . $this->icon; $attributes['class'] = ! empty( $attributes['class'] ) ? $attributes['class'] . ' ' . $icon_class : $icon_class; $attributes_string = implode( ' ', array_map( static function ( $key, $value ) { return sprintf( '%s="%s"', esc_attr( sanitize_key( $key ) ), esc_attr( $value ) ); }, array_keys( $attributes ), $attributes ) ); return wp_kses_post( sprintf( '', $attributes_string ) ); } }