# Content Types Configuration
#
# Defines different content types and their characteristics.
# Uses Nickel schemas for type safety, validation, and shared defaults.

let { make_blog_type, make_grid_type, make_tutorial_type, .. }
  = import "content/defaults.ncl" in
let contracts = import "content/contracts.ncl" in

{
  content_kinds = [
    # Blog content type
    # Articles, posts, tutorials with featured content support
    make_blog_type "blog" "blog" "BlogCTAView",

    # Recipes content type
    # Grid layout for visual content with emoji support
    make_grid_type "recipes" "recipes" "RecipesCTAView"
      & {
        features.use_emojis = true,
      },

    # Projects content type
    # Grid layout for project showcase with featured support
    make_grid_type "projects" "projects" "ProjectsCTAView"
      & {
        features.use_feature = true,
        features.use_tags    = true,
      },

    # Activities content type
    # Grid layout for talks, workshops, and Slidev presentations
    make_grid_type "activities" "activities" "ActivitiesCTAView"
      & {
        features.use_feature = true,
        features.use_tags    = true,
      },

    # Tutorials content type (specialized, in development) - DISABLED
    # Uncomment when specialized content system is ready
    # make_tutorial_type "tutorials" "tutorials" "TutorialsCTAView"
    #   & {
    #     enabled = false,
    #   },
  ]
} | contracts.ContentKindsFile
