# Footer Configuration Defaults and Helpers
#
# Provides helper functions for creating footer items with minimal duplication.

let contracts = import "contracts.ncl" in

{
  # Helper function: Create a footer menu item
  #
  # Usage:
  #   make_footer_item {
  #     id = "privacy",
  #     routes = { en = "/privacy", es = "/privacidad" },
  #     labels = { en = "Privacy Policy", es = "Política de Privacidad" },
  #     icon = "fas fa-shield-alt",
  #   }
  #
  # Parameters:
  #   config: Record with id, routes, labels, and optional icon/priority
  #
  # Returns: FooterMenuItem record
  make_footer_item
    | Dyn -> Dyn
    = fun config =>
      {
        id = config.id,
        routes = config.routes,
        labels = config.labels,
        is_external = false,
        enabled = true,
        priority = -1,
      }
      & (if std.record.has_field "icon" config then { icon = config.icon } else {})
      & (if std.record.has_field "priority" config then { priority = config.priority } else {})
      & (if std.record.has_field "enabled" config then { enabled = config.enabled } else {}),

  # Helper function: Create a social link
  #
  # Usage:
  #   make_social_link "LinkedIn" "https://linkedin.com/in/user" "fab fa-linkedin"
  #
  # Parameters:
  #   social_name: Social network name
  #   profile_url: Full URL to profile
  #   icon: Icon class
  #
  # Returns: SocialLink record
  make_social_link
    | String -> String -> String -> Dyn
    = fun social_name profile_url icon =>
      {
        name = social_name,
        url = profile_url,
        icon_class = icon,
        enabled = true,
      },

  # Helper function: Create bilingual text
  #
  # Usage:
  #   bilingual "English text" "Texto español"
  #
  # Parameters:
  #   en_text: English text
  #   es_text: Spanish text
  #
  # Returns: BilingualText record
  bilingual
    | String -> String -> Dyn
    = fun en_text es_text =>
      {
        en = en_text,
        es = es_text,
      },

  # Common footer priorities
  priorities = {
    footer_only = -1,
    hidden = -999,
  },
}
