chromium/ios/chrome/browser/home_customization/utils/home_customization_helper.h

// Copyright 2024 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_HOME_CUSTOMIZATION_UTILS_HOME_CUSTOMIZATION_HELPER_H_
#define IOS_CHROME_BROWSER_HOME_CUSTOMIZATION_UTILS_HOME_CUSTOMIZATION_HELPER_H_

#import <UIKit/UIKit.h>

#import "ios/chrome/browser/home_customization/utils/home_customization_constants.h"

// Helper for Home customization elements.
@interface HomeCustomizationHelper : NSObject

// Returns the title text for a given toggle type.
+ (NSString*)titleForToggleType:(CustomizationToggleType)type;

// Returns the subtitle text for a given toggle type.
+ (NSString*)subtitleForToggleType:(CustomizationToggleType)type;

// Returns the icon image for a given toggle type.
+ (UIImage*)iconForToggleType:(CustomizationToggleType)type;

// Returns the accessibility identifier for a given toggle type.
+ (NSString*)accessibilityIdentifierForToggleType:(CustomizationToggleType)type;

// Returns the accessibility identifier for the navigable portion of a given
// toggle type.
+ (NSString*)navigableAccessibilityIdentifierForToggleType:
    (CustomizationToggleType)type;

// Returns the menu page identifier for a given toggle type.
+ (CustomizationMenuPage)menuPageForToggleType:(CustomizationToggleType)type;

// Returns the title text for a given link type.
+ (NSString*)titleForLinkType:(CustomizationLinkType)type;

// Returns the subtitle text for a given link type.
+ (NSString*)subtitleForLinkType:(CustomizationLinkType)type;

// Returns the accessibility identifier for a given link type.
+ (NSString*)accessibilityIdentifierForLinkType:(CustomizationLinkType)type;

// Returns the text of the header for a given menu page.
+ (NSString*)headerTextForPage:(CustomizationMenuPage)page;

// Returns the navigation bar's title for a given menu page.
+ (NSString*)navigationBarTitleForPage:(CustomizationMenuPage)page;

// Returns the accessibility identifier for the collection view of a menu page.
+ (NSString*)accessibilityIdentifierForPageCollection:
    (CustomizationMenuPage)page;

// Returns `YES` if the given type supports navigation to a submenu.
+ (BOOL)doesTypeHaveSubmenu:(CustomizationToggleType)type;

@end

#endif  // IOS_CHROME_BROWSER_HOME_CUSTOMIZATION_UTILS_HOME_CUSTOMIZATION_HELPER_H_