// Helper type to get a union of an object's string literal values
type ValueOf<T> = T[keyof T]

export namespace DynamicContentEnum {
  export namespace Blocks {
    export const components = {
      current_benefits: "current_benefits",
      earn_and_burn: "earn_and_burn",
      expiring_points: "expiring_points",
      how_it_works: "how_it_works",
      jobylon_feed: "jobylon_feed",
      loyalty_levels: "loyalty_levels",
      membership_overview: "membership_overview",
      my_points: "my_points",
      next_benefits: "next_benefits",
      overview_table: "overview_table",
      points_overview: "points_overview",
      previous_stays: "previous_stays",
      sign_up_form: "sign_up_form",
      sign_up_verification: "sign_up_verification",
      soonest_stays: "soonest_stays",
      upcoming_stays: "upcoming_stays",
      sas_linked_account: "sas_linked_account",
      sas_transfer_points: "sas_transfer_points",
      sas_tier_comparison: "sas_tier_comparison",
    } as const

    /**
     * Represents one of the possible component string literal values from Blocks.components.
     * e.g., "current_benefits" | "earn_and_burn" | ...
     */
    type ComponentValue = ValueOf<typeof components>

    /**
     * Array of all component string literal values from Blocks.components.
     * Typed as a non-empty tuple `[ComponentValue, ...ComponentValue[]]`,
     * to ensure it meets Zod's z.enum() requirements.
     */
    export const enums = Object.values(components) as [
      ComponentValue,
      ...ComponentValue[],
    ]
  }

  export namespace Headers {
    export const components = {
      dtmc_employee_benefits_call_to_actions:
        "dtmc_employee_benefits_call_to_actions",
    } as const

    /**
     * Represents one of the possible component string literal values from Headers.components.
     * e.g., "dtmc_employee_benefits_call_to_actions"
     */
    type ComponentValue = ValueOf<typeof components>

    /**
     * Array of all component string literal values from Headers.components.
     * Typed as a non-empty tuple `[ComponentValue, ...ComponentValue[]]`,
     * to ensure it meets Zod's z.enum() requirements.
     */
    export const enums = Object.values(components) as [
      ComponentValue,
      ...ComponentValue[],
    ]
  }

  export namespace Sidebar {
    export const components = {
      my_pages_navigation: "my_pages_navigation",
      employee_benefits_auth_card: "employee_benefits_auth_card",
    } as const

    /**
     * Represents one of the possible component string literal values from Sidebar.components.
     * e.g., "my_pages_navigation" | "employee_benefits_auth_card"
     */
    type ComponentValue = ValueOf<typeof components>

    /**
     * Array of all component string literal values from Sidebar.components.
     * Typed as a non-empty tuple `[ComponentValue, ...ComponentValue[]]`,
     * to ensure it meets Zod's z.enum() requirements.
     */
    export const enums = Object.values(components) as [
      ComponentValue,
      ...ComponentValue[],
    ]
  }
}
