chromium/ios/chrome/browser/ui/content_suggestions/set_up_list/set_up_list_item_icon.h

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_SET_UP_LIST_SET_UP_LIST_ITEM_ICON_H_
#define IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_SET_UP_LIST_SET_UP_LIST_ITEM_ICON_H_

#import <UIKit/UIKit.h>

enum class SetUpListItemType;
namespace base {
class TimeDelta;
}

// A view which contains an icon for a Set Up List item.
@interface SetUpListItemIcon : UIView

// Instantiates a `SetUpListItemItemIcon` for the given `type` with the
// given `complete` state, whether to configure with a `compactLayout`, and
// whether it should be placed `inSquare` container.
- (instancetype)initWithType:(SetUpListItemType)type
                    complete:(BOOL)complete
               compactLayout:(BOOL)compactLayout
                    inSquare:(BOOL)inSquare;

// Plays the "sparkle" animation with the given `duration`, after the given
// `delay`.
- (void)playSparkleWithDuration:(base::TimeDelta)duration
                          delay:(base::TimeDelta)delay;

// Marks this item as complete by hiding the type-specific icon and showing a
// checkmark. When called as part of an animation, the type-specific icon and
// the checkmark swap via a rotation and crossfade animation.
- (void)markComplete;

@end

#endif  // IOS_CHROME_BROWSER_UI_CONTENT_SUGGESTIONS_SET_UP_LIST_SET_UP_LIST_ITEM_ICON_H_