Admin dashboard categories configuration and validation for PhoenixKit.
This module provides a comprehensive system for configuring custom admin dashboard categories with subsections, including validation, type safety, and fallback to built-in categories.
Category Structure
Each category should have the following structure:
%{
title: "Category Title",
icon: "hero-icon-name", # Optional Heroicon name
subsections: [
%{
title: "Subsection Title",
url: "/admin/some-path",
icon: "hero-icon-name", # Optional Heroicon name
description: "Brief description" # Optional
}
]
}Field Validation
- title: Required string, max 100 characters
- icon: Optional string, validated to be a reasonable Heroicon name
- subsections: Required list, can be empty
- subsection.title: Required string, max 100 characters
- subsection.url: Required string, must start with "/"
- subsection.icon: Optional Heroicon name validation
- subsection.description: Optional string, max 200 characters
Usage
# Get all configured categories with validation
categories = PhoenixKit.Config.AdminDashboardCategories.get_categories()
# Returns validated list like:
[
%{
title: "User Management",
icon: "hero-users",
subsections: [
%{
title: "All Users",
url: "/admin/users",
icon: "hero-user-group",
description: "Manage user accounts"
}
]
}
]
Summary
Functions
Gets admin dashboard categories with comprehensive validation and defaults.
Validates admin dashboard categories structure and content.
Functions
@spec get_categories() :: list()
Gets admin dashboard categories with comprehensive validation and defaults.
This function provides a fully validated list of admin dashboard categories with proper structure validation and fallback to built-in categories.
Examples
iex> PhoenixKit.Config.AdminDashboardCategories.get_categories()
[
%{
title: "User Management",
icon: "hero-users",
subsections: [
%{
title: "Users",
url: "/admin/users",
icon: "hero-user-group",
description: "Manage user accounts"
}
]
}
]
Validates admin dashboard categories structure and content.
This function can be used to validate custom categories before setting them in the configuration.
Examples
iex> categories = [
...> %{
...> title: "My Category",
...> subsections: [
...> %{
...> title: "My Subsection",
...> url: "/admin/my-path"
...> }
...> ]
...> }
...> ]
iex> PhoenixKit.Config.AdminDashboardCategories.validate_categories(categories)
{:ok, validated_categories}