# Avo 3.0 documentation map

A map of every Avo 3.0 documentation page and its headings, designed for easy navigation by LLMs.

For the concise index, see [llms.txt](https://docs.avohq.io/3.0/llms.txt). For the full text of every page in one file (large — high token count), see [llms-full.txt](https://docs.avohq.io/3.0/llms-full.txt). For this map as raw markdown, see [docs-map.md](https://docs.avohq.io/3.0/docs-map.md).

> Auto-generated from the VitePress sidebar by `scripts/generate-docs-map.js`. Do not edit manually.

## Document structure

* **##** marks documentation groups (e.g. 'Resources')
* **###** marks individual documentation pages
* **Nested bullets** show the headings within each page
* Each page title links to the full documentation

## Avo 3

### [Intro](https://docs.avohq.io/3.0/index.html)

* 1. The CRUD UI
* 2. Dashboards
* 3. Custom content
* Seamless upgrades
* Next up
* Walkthrough videos
  * Build a blog admin panel
  * Build a booking app

### [Avo 3](https://docs.avohq.io/3.0/avo-3.html)

* Changes
* New features & big changes
* Features moved from one tier to another
  * Features moved from Pro to Advanced
  * Features moved from Pro to Community
* Repos and packages
* Feedback
* Documentation
* What next?

### [Upgrade guide](https://docs.avohq.io/3.0/upgrade.html)

* Upgrade to 3.22.0
  * Breaking Change
  * Action Required
  * Maintaining Previous Behavior
  * Breaking Change
  * Action Required
  * Steps to Update
* Upgrade to avo-kanban 0.1.18
  * TL;DR
  * Changes
* Upgrade to 3.18.0
  * Breaking Changes
  * Steps to Update
  * Breaking Change
  * Steps to Update
  * Steps to Update
  * Steps to Update
* Upgrade from 3.16.2 to 3.16.3
  * What changed?
    * Previous configuration (obsolete)
    * New configuration
* Upgrade from 3.16.1 to 3.16.2
* Upgrade from 3.15.3 to 3.15.4
  * Persistent Pagination Behavior
* Upgrade from 3.14.0 to 3.14.1
* Upgrade from 3.13.6 to 3.13.7
* Upgrade from 3.13.3 to 3.13.4
* Upgrade from 3.11.7 to 3.11.8
* Upgrade from 3.10.10 to 3.11.3
* Upgrade from 3.10.9 to 3.10.10
* Upgrade from 3.10.6 to 3.10.7
* Upgrade from 3.10 to 3.11
  * Actions no longer need to be registered inside actions method
* Upgrade from 3.9.2 to 3.10
* Upgrade from 3.9.1 to 3.9.2
* Upgrade from 3.7.4 to 3.9.1
  * Steps to update
* Skip versions 3.8.x and 3.9.0
* Upgrade from 3.6.1 to 3.6.2
* Upgrade from 3.5.4 to 3.5.5
* Upgrade from 3.4.2 to 3.4.3
* Upgrade from 3.4.1 to 3.4.2
  * What to do?
* Upgrade from 3.3.0 to 3.4.0
* Upgrade from 3.2.2 to 3.3.0
* Upgrade from 3.1.3 to 3.1.4
* Upgrade from 3.0.1.beta24 to 3.0.2
  * Use self.includes option
  * Use self.indexquery option
* Upgrade from 3.0.1.beta23 to 3.0.1.beta24
* Upgrade from 3.0.1.beta22 to 3.0.1.beta23
* Upgrade from 3.0.1.beta8 to 3.0.1.beta9
* Upgrade from 3.0.1.beta5 to 3.0.1.beta6

### [Avo 2 to Avo 3 upgrade](https://docs.avohq.io/3.0/avo-2-avo-3-upgrade.html)

* Upgrade from 2.x to 3.x
* Use the automatic upgrade tool
* Upgrade steps
  * Actions to take
  * Actions to take
  * Actions to take
  * Actions to take
  * Actions to take
  * Actions to take
  * Actions to take
  * Actions to take
  * Actions to take
  * Actions to take
  * Actions to take
  * Actions to take

### [Technical Support](https://docs.avohq.io/3.0/technical-support.html)

* (No headings found)

### [Best practices](https://docs.avohq.io/3.0/best-practices.html)

* Avoiding n+1 using self.includes
* Avoid using if/else statements in def fields
  * Example:
* Add an index on the createdat column

### [Code editors and LLM setup](https://docs.avohq.io/3.0/llm-support.html)

* (Page source not found)

## Configuration

### [Installation](https://docs.avohq.io/3.0/installation.html)

* Requirements
* Installing Avo
  * 1. One-command install
  * 2. Manual, step by step.
  * 3. In popular Rails starter kits
    * Bullet Train
    * Jumpstart Pro
* Install from GitHub
* Mount Avo to a subdomain
* Next steps

### [Gem server authentication](https://docs.avohq.io/3.0/gem-server-authentication.html)

* On the server and CI systems
* On your local development environment
* Add Avo to your Gemfile
    * 1. Add BUNDLEPACKAGERDEV to your repository's secrets
    * 2. Expose BUNDLEPACKAGERDEV as an environment variable
* Bundle without paid gems
* FAQ

### [License troubleshooting](https://docs.avohq.io/3.0/license-troubleshooting.html)

* Check the license status page
* Frequent issues

### [Authentication](https://docs.avohq.io/3.0/authentication.html)

* Customize the currentuser method
* Customize the sign-out link
  * Customize the current user resource name
  * Customize the entire sign-out path
* Filter out requests
* authenticatewith method
* User roles
    * Check if a user is an admin
    * When does Avo check if the user is an admin (isadmin?)
  * Check if a user is an developer
  * When does Avo check if the use is an developer (isdeveloper?)
  * Customize the methods that check for roles
* Authorization

### [Authorization](https://docs.avohq.io/3.0/authorization.html)

* Ensure Avo knows who your current user is
* Policies
* Associations
  * Example scenario
* Removing duplication
* Attachments
* Scopes
* Using different policy methods
* Use Resource's Policy to authorize custom actions
* Raise errors when policies are missing
* Logs
* Custom policies
* Custom authorization clients
  * Change the authorization client
  * Client methods
* Explicit authorization
  * Possible values
  * Default
  * Configuration:
  * Examples:
  * Migration Recommendations:
* Rolify integration

## CRUD UI

### [Resources](https://docs.avohq.io/3.0/resources.html)

* Overview
* Resources from model generation
* Manually defining resources
* Generating resources for all models
  * What it does
* Fields
* Routing
* Use multiple resources for the same model
* Namespaced resources
* Views
* Extending Avo::ResourcesController
  * --parent-controller option on the generators
  * resourceparentcontroller configuration option
  * Attach concerns to Avo::BaseController
* Manually registering resources
* Extending Avo::BaseResource
  * How to Customize Avo::BaseResource
  * Your resource files
* Resource Options
  * Using a computed title
  * title as a block
  * Set the description as a string
  * Set the description as a block
  * Related
  * Related
  * Unscoped queries on Index
    * Default
    * Possible values
    * Default
    * Possible values
    * Possible values
  * type
    * Possible values
    * Default
  * size
    * Possible values
    * Default
  * Examples
    * Default
    * Countless
    * Countless and "pageless"
  * Usage
* Cards

### [Array Resources](https://docs.avohq.io/3.0/array-resources.html)

* Overview
    * Sorting
    * Performance Considerations
* Creating an Array Resource
* Defining the records Method
  * Example
* Defining Fields

### [Fields](https://docs.avohq.io/3.0/fields.html)

* Declaring fields
  * Specific methods for each view
* Field conventions
  * A more complex example
* Field Types

### [Field options](https://docs.avohq.io/3.0/field-options.html)

  * Common field option example
  * Custom field option example
* Change field name
* Showing / Hiding fields on different views
* Field Visibility
* Computed Fields
* Fields Formatter
  * Common formatting options
* Formatting with Rails helpers
* Parse value before update
* Sortable fields
* Custom sortable block
* Placeholder
* Required
* Disabled
  * Disabled as a block
* Readonly
* Default Value
* Help text
* Nullable
* Link to record
* Align text on Index view
* Stacked layout
    * inline layout (default)
    * stacked layout
* Global stacked layout
* Field options
  * Ejecting the field components
    * Ejecting All Components for a Field
  * Customizing field components using components option
  * Attach HTML attributes
  * How It Works

### [Field discovery](https://docs.avohq.io/3.0/field-discovery.html)

* Options
    * Possible values
    * Possible values
    * Possible values
    * Possible values
* Examples
  * Basic Discovery
  * Custom Field Options
  * Combining Manual and Discovered Fields
* Automatic Type Mapping
* Association Discovery

### [Controller configuration](https://docs.avohq.io/3.0/controllers.html)

* Request-Response lifecycle
* Create methods
* Update methods
* Destroy methods

### [Record previews](https://docs.avohq.io/3.0/record-previews.html)

* (No headings found)

### [Scopes](https://docs.avohq.io/3.0/scopes.html)

* Generating scopes
* Registering scopes
* Options
  * Execution Context
* Full example

### [Records reordering](https://docs.avohq.io/3.0/records-reordering.html)

* Configuration
* Always show the order buttons
* Display the buttons in the Index view or association view
* Display the button on a hasmany association
  * Possible values
* Change the scope on the Index view
* Reorder using drag and drop
  * Custom position attribute
* Authorization

### [Discreet information](https://docs.avohq.io/3.0/discreet-information.html)

* Display the id
* Display the createdat and updatedat timestamps
* Options
* Full configuration

### [Customizable controls](https://docs.avohq.io/3.0/customizable-controls.html)

* Default controls
* Customize the controls
* Controls
    * Supported options
    * Supported options
    * Supported options
    * Supported options
    * exclude option
    * Example
    * include option
    * Example
    * Supported options
    * Example
    * Supported options
    * Supported options
    * Supported options
    * Example
* Control Options
    * Possible values
    * Possible values
    * Possible values
    * Possible values
    * Possible values
    * Possible values
* Default values
* Conditionally hiding/showing actions

### [Cover and Profile Photos](https://docs.avohq.io/3.0/cover-and-profile-photos.html)

* Profile photo
    * Possible values
    * Possible values
* Cover photo
    * Possible values
    * Possible values
    * Possible values

## Field types

### [Array](https://docs.avohq.io/3.0/fields/array.html)

  * Example 1: Array field with a block
  * Example 2: Array field fetching data from the model's method
  * Example 3: Fallback to the records method
* Summary of Data Fetching Hierarchy

### [Badge](https://docs.avohq.io/3.0/fields/badge.html)

* Description
* Options
    * Default value
* Examples

### [Boolean](https://docs.avohq.io/3.0/fields/boolean.html)

* Options
    * Default value
    * Default value
    * Default value
    * Default value

### [Boolean group](https://docs.avohq.io/3.0/fields/boolean_group.html)

  * DB payload example
  * Field declaration example
    * Default value
    * Computed options
* Updates

### [Code](https://docs.avohq.io/3.0/fields/code.html)

* Options
    * Default value
    * Possible values
    * Default value
    * Possible values
    * Default value
    * Possible values
    * Default value
    * Possible values
    * Default value
    * Possible values
    * Default value
    * Possible values
    * Default value
    * Possible values

### [Country](https://docs.avohq.io/3.0/fields/country.html)

* Options
  * Default value
  * Possible values

### [Date](https://docs.avohq.io/3.0/fields/date.html)

* Options

### [Date time](https://docs.avohq.io/3.0/fields/date_time.html)

* Options

### [Easy MDE](https://docs.avohq.io/3.0/fields/easy_mde.html)

* Options
    * Default
    * Possible values

### [External image](https://docs.avohq.io/3.0/fields/external_image.html)

* Options
    * Default value
    * Possible values
    * Example with proc
    * Default value
    * Possible values
    * Example with proc
    * Default value
    * Possible values
    * Example with proc
* Conditional sizing based on view
* Use computed values
* Use in the Grid cover position

### [File](https://docs.avohq.io/3.0/fields/file.html)

* Variants
  * Example:
* Options

### [Files](https://docs.avohq.io/3.0/fields/files.html)

* Options
    * Default
    * Possible values
    * Default
    * Possible values

### [Gravatar](https://docs.avohq.io/3.0/fields/gravatar.html)

* Options
    * Default
    * Possible values
    * Default
    * Possible values
* Using computed values

### [Heading](https://docs.avohq.io/3.0/fields/heading.html)

* Options

### [Hidden](https://docs.avohq.io/3.0/fields/hidden.html)

  * Example usage:

### [Id](https://docs.avohq.io/3.0/fields/id.html)

* Options

### [Key value](https://docs.avohq.io/3.0/fields/key_value.html)

* Options
    * Default
    * Possible values
    * Default
    * Possible values
    * Default
    * Possible values
    * Default
    * Possible values
    * Default
    * Possible values
* Customizing the labels
* Enforce restrictions

### [Location](https://docs.avohq.io/3.0/fields/location.html)

* Description
* Options
    * Default value
    * Possible values
    * Default
    * Possible values
    * Default
    * Possible values

### [Markdown](https://docs.avohq.io/3.0/fields/markdown.html)

* Supported features
* Customize the renderer
    * Possible values
    * Code example
    * Possible values
    * Code example
    * Possible values
    * Code example

### [Money](https://docs.avohq.io/3.0/fields/money.html)

* Money Field Example
  * Example on new
  * Example on show with currencies USD
  * Example on show with currencies RON
  * Example on index
* Installation
* Options
    * Default
    * Possible values

### [Number](https://docs.avohq.io/3.0/fields/number.html)

* Options
    * Default
    * Possible values
    * Default
    * Possible values
    * Default
    * Possible values
* Examples

### [Password](https://docs.avohq.io/3.0/fields/password.html)

    * Revealable

### [Preview](https://docs.avohq.io/3.0/fields/preview.html)

* Define the fields
* Authorization

### [Progress bar](https://docs.avohq.io/3.0/fields/progress_bar.html)

* Options
    * Default
    * Possible values
    * Default
    * Possible values
    * Default
    * Possible values
* Examples

### [Radio](https://docs.avohq.io/3.0/fields/radio.html)

  * Field declaration example
    * Default value
    * Possible values

### [Record link](https://docs.avohq.io/3.0/fields/record_link.html)

* Options
    * Default value
    * Possible values
    * Example
    * Default value
    * Possible values
    * Example
    * Default value
    * Possible values
    * Example
* Using computed values
    * Example

### [Rhino](https://docs.avohq.io/3.0/fields/rhino.html)

* Options
* Contributing

### [Select](https://docs.avohq.io/3.0/fields/select.html)

    * Default
    * Possible values
  * Computed options
    * Default
    * Possible values
  * Computed grouped options
    * Default
    * Possible values
    * Default
    * Possible values
    * Default
    * Possible values

### [Stars](https://docs.avohq.io/3.0/fields/stars.html)

* Options
    * Default
    * Possible values
* Examples

### [Status](https://docs.avohq.io/3.0/fields/status.html)

* Options
    * Default value
    * Possible values
    * Default value
    * Possible values
    * Default value
    * Possible values
    * Default value
    * Possible values

### [Tags](https://docs.avohq.io/3.0/fields/tags.html)

* Options
    * Default
    * Possible values
    * Default
    * Possible values
    * Default
    * Possible values
    * Default
    * Possible values
    * Default
    * Possible values
    * Default
    * Possible values
    * Default
    * Possible values
    * Default
    * Possible values
    * Default
    * Possible values
* PostgreSQL array fields
* Acts as taggable on
* Array fields

### [Text](https://docs.avohq.io/3.0/fields/text.html)

* Options
    * Default
    * Possible values
* Customization

### [Textarea](https://docs.avohq.io/3.0/fields/textarea.html)

* Options
    * Default
    * Possible values

### [Time](https://docs.avohq.io/3.0/fields/time.html)

* Options

### [Tip Tap](https://docs.avohq.io/3.0/fields/tip_tap.html)

* (No headings found)

### [Trix](https://docs.avohq.io/3.0/fields/trix.html)

* Options
    * Default
    * Possible values
* File attachments
* Disable attachments
* Remove attachment attributes
* Active Storage
* Action Text
* Demo app
* Javascript Alert Messages

## Associations

### [Customization](https://docs.avohq.io/3.0/associations.html)

* Single Table Inheritance (STI)
* Link to child resource when using STI
* Add custom labels to the associations' pages

### [Belongs to](https://docs.avohq.io/3.0/associations/belongs_to.html)

* Options
    * Default
    * Possible values
    * Example
    * Default
    * Possible values
    * Example
    * Default
    * Possible values
    * Default
    * Possible values
* Overview
* Polymorphic belongsto
* Polymorphic help
* Searchable belongsto
* Belongs to attach scope
* Allow detaching via the association

### [Has one](https://docs.avohq.io/3.0/associations/has_one.html)

* Options

### [Has many](https://docs.avohq.io/3.0/associations/has_many.html)

* Options
* Has Many Through

### [Has and belongs to many](https://docs.avohq.io/3.0/associations/has_and_belongs_to_many.html)

* Options
  * Searchable hasandbelongstomany

## Layout

### [Panels](https://docs.avohq.io/3.0/resource-panels.html)

* What is the Main Panel?
* How does Avo compute panels?
* Computed panels vs Manual customization
* Index view fields

### [Clusters](https://docs.avohq.io/3.0/resource-clusters.html)

    * Possible values

### [Sidebars](https://docs.avohq.io/3.0/resource-sidebar.html)

* Adding fields to the sidebar

### [Tabs](https://docs.avohq.io/3.0/tabs.html)

* Tabs on Show view
* Tabs on Edit view
* Durable and "Bookmarkable"
* Display counter indicator on tabs switcher
* Visibility control
    * Example

## Views

### [Overview](https://docs.avohq.io/3.0/views.html)

* Preview
* Checking the current view
* Multiple ways to check

### [Table view](https://docs.avohq.io/3.0/table-view.html)

* Row controls configuration
* Global configuration
* Resource configuration
    * Possible values
    * Possible values
    * Possible values

### [Grid view](https://docs.avohq.io/3.0/grid-view.html)

* Enable grid view
* Make default view
* Custom style
* Grid Item Badge

### [Map view](https://docs.avohq.io/3.0/map-view.html)

* Enable map view
* Make it the default view

## Customize Avo

### [Customization options](https://docs.avohq.io/3.0/customization.html)

* Change the app name
* Timezone and Currency
* Resource Index view
  * Resources per page
  * Per page steps
  * Resources via per page
  * Default view type
* ID links to resource
* Resource controls on the left or both sides
* Container width
  * Display the Index view full-width
  * Display all views full-width
* Cache resources on the Index view
* Context
* Eject
* Breadcrumbs
  * Breadcrumbs for custom pages
* Page titles
* Home path
  * Use a lambda function for the homepath
* Mount Avo under a nested path
* Custom viewcomponent path
* Custom query scopes
  * Custom scope for Index page
  * Custom find method for Show and Edit pages
    * Custom toparam method
    * Using the friendly gem
    * Using prefixedids gem
* Disable features
* Customize profile name, photo, and title
  * Customize the name of the user
  * Customize the profile photo
  * Customize the title of the user
  * Customize the sign-out link
* Skip show view
* Logger
* Associations lookup list limit
  * Persistent UI State Configuration
    * Overview
    * Configuration
    * Behavior
    * How It Works
    * Recommended Session Store
  * Default value
  * Example
  * Default value
  * Possible values
  * Example
  * Default value
  * Possible values
  * Example
  * Common use case

### [Eject views](https://docs.avohq.io/3.0/eject-views.html)

* Prepared templates
  * Logo
  * Header
  * Scripts
* Eject any template

### [Custom view types](https://docs.avohq.io/3.0/custom-view-types.html)

* (No headings found)

### [Menu editor](https://docs.avohq.io/3.0/menu-editor.html)

* Menu item types
    * linkto options
    * path
    * Arguments:
    * Example:
    * Arguments:
    * Example:
  * all helpers
* Item visibility
* Add data attributes to items
* Using authorization rules
* Icons
  * Icons on resource, dashboard, and linkto items
* Collapsable sections and groups
  * Default collapsed state
* Authorization
* Profile menu
* Forms in profile menu
* Custom content in the profile menu

### [Search](https://docs.avohq.io/3.0/search.html)

* Enable search for a resource
  * Custom search provider
* Authorize search
* Configure the search result
* Resource search
* Global search
  * Hide the global search
  * Scope out global or resource searches
* Searching within associations
* Results count

### [Localization (I18n)](https://docs.avohq.io/3.0/i18n.html)

* Localizing resources
* Localizing fields
* Localizing buttons label
* Setting the locale
* Customize the locale
* FAQ
  * The I18n.t method defaults to the name of that field/resource
  * Using a Route Scope for Localization

### [Branding](https://docs.avohq.io/3.0/branding.html)

* Configure brand color
* Customize the chart colors
* Customize the logo
* Customize the missing image placeholder
* Customize the favicon

### [Routing](https://docs.avohq.io/3.0/routing.html)

  * Default Mounting Behavior
* Mount Avo under a scope
* Add your own routes

### [Multitenancy](https://docs.avohq.io/3.0/multitenancy.html)

* Breakdown
* Route-based tenancy
    * 1. Set the proper routing pattern
    * 2. Set the tenant for each request
* Session-based tenancy
    * 1. Set the tenant for each request
    * 2. Add an account switcher

## Actions

### [Overview](https://docs.avohq.io/3.0/actions/overview.html)

* What Are Actions?
* Key Benefits
  * 1. Streamlined Workflows
  * 2. Flexibility
  * 3. Batch Operations
  * 4. User Input Forms
* Common Use Cases

### [Generate](https://docs.avohq.io/3.0/actions/generate.html)

* Basic Generator Usage
* Generator Options
  * --standalone
* Best Practices
* Examples

### [Registration](https://docs.avohq.io/3.0/actions/registration.html)

* action
* divider

### [Execution & Feedback](https://docs.avohq.io/3.0/actions/execution.html)

* Fields
* The handle method
* Feedback notifications
* Response types

### [Customization](https://docs.avohq.io/3.0/actions/customization.html)

* Visual customization
* Behavioral customization

### [Guides & Tutorials](https://docs.avohq.io/3.0/actions/guides-and-tutorials.html)

* Helpers
  * linkarguments
    * Generate an Action Link Without a Resource Instance
    * Scenario
    * Solution
* Guides
  * StimulusJS
  * Passing Params to the Action Show Page

## Dashboards and cards

### [Dashboards](https://docs.avohq.io/3.0/dashboards.html)

* Generate a dashboard
* Settings
* Cards
  * Override card arguments from the dashboard
    * Control the base settings from the parent
* Dashboards visibility
* Dashboards authorization

### [Cards](https://docs.avohq.io/3.0/cards.html)

* Base settings
* Ranges
    * Control the aggregation using ranges
* Keep the data fresh
* Hide the header
* Format
* Metric card
    * Calculate results
  * Decorate the data using prefix and suffix
* Chartkick card
  * Chart types
  * Customize chart
* Partial card
* Cards visibility
* Dividers

## Kanban board

### [Overview](https://docs.avohq.io/3.0/kanban-boards.html)

* Overview
* Requirements
* Installation
* DB schema
* Create a kanban board
* Create columns
* Configure the board
* Adding items to the board
* How does it work?
  * Board and Columns
  * Resources and Items
  * Add items to the board
  * Move items between columns
  * Items without that property
* Customize the card
* Authorization
  * Authorization Methods
* Customizing kanban models for your business logic

## Collaboration

### [Overview](https://docs.avohq.io/3.0/collaborate/overview.html)

* Installation
  * author
  * watchers
    * I18n Example
* Customizing collaboration models for your business logic

### [Authorization](https://docs.avohq.io/3.0/collaborate/authorization.html)

* Authorization Methods

## Audit Logging

### [Overview](https://docs.avohq.io/3.0/audit-logging/)

* Requirements
* Installation
  * 1. Install the gem
  * 2. Run the installer
  * 3. Migrate
* Enable and configure audit logging
  * Global enable
  * Configure author models
  * Enable specific resources and actions
* Display logged activities
  * Resource-Specific Activities
  * Configuring the Sidebar for Activity Tracking
  * Viewing and Navigating Activity Logs
  * Enabling Change Logs and Reverting Changes
  * Troubleshooting: Missing changeset Field
  * Display author logged activities
  * Overview of all activities
* Disable specific actions logging
* Conclusion

## Filters

### [Overview](https://docs.avohq.io/3.0/filters.html)

* Differences
  * 1. Basic filters
  * 2. Dynamic filters

### [Basic Filters](https://docs.avohq.io/3.0/basic-filters.html)

* Filter options
* Register filters
* Filter types
  * Filter values
  * Default value
  * Default value
  * Dynamic options
  * Type
  * Mode
  * pickeroptions
* Dynamic filter options
* React to filters
* Empty message text
* Keep filters panel open
* Filter arguments
* Manually create encoded URLs
  * Rails helpers
    * Usage
    * Usage
  * Standalone helpers
    * Usage
    * Usage

### [Dynamic Filters](https://docs.avohq.io/3.0/dynamic-filters.html)

* Filter types
    * Conditions
    * Query
  * Conditions
  * Conditions
  * Conditions
  * Conditions
  * Conditions
  * Conditions
* Options
* Field to filter matching
* Caveats
* Custom Dynamic Filters
  * Defining custom dynamic filters
    * Possible values
    * Possible values
    * Possible values
    * Possible values
    * Possible values
    * Possible values
    * Possible values
    * Possible values
    * Possible values
    * Possible values
    * Possible values
    * Possible values
    * Possible values
* Guides & Tutorials
    * belongsto example
  * hasmany example
  * The Problem: Repetitive Filter Code
  * Method 1: Helper Method with Field Configuration
  * Method 2: Separate Fields and Filters with Helper
  * Method 3: Programmatic Filter Generation
  * Method 4: Custom DSL with Method Override
  * Choosing the Right Approach

## Custom content

### [Custom views](https://docs.avohq.io/3.0/custom-tools.html)

* Generate tools
  * Controller
  * Route
  * Sidebar item
  * Customize the sidebar
* Add assets
* Using helpers from your app
  * Using path helpers
    * For Avo paths
    * For the main app paths

### [Custom fields](https://docs.avohq.io/3.0/custom-fields.html)

* Generate a new field
* Field options
* Field Visibility
* Customize the views
* Field assets
* Use pre-built Stimulus controllers
  * Hidden input controller
  * Non existing model field

### [Custom errors](https://docs.avohq.io/3.0/custom-errors.html)

* Adding Custom Errors
* In a Simple Record
* In a Join Table

### [Resource tools](https://docs.avohq.io/3.0/resource-tools.html)

* Generate a resource tool
* Partial context
* Tool visibility
  * Using path helpers
    * For Avo paths
    * For the main app paths
* Add custom fields on forms
* Where to add logic

### [Stimulus JS integration](https://docs.avohq.io/3.0/stimulus-integration.html)

* Assign Stimulus controllers to resource views
  * Field wrappers as targets
  * Field inputs as targets
  * All controllers receive the view value
* Assign Stimulus controllers to actions
* Attach HTML attributes
* Composing the attributes together
* Pre-made stimulus methods
  * resource-edit#toggle
  * resource-edit#disable
  * resource-edit#debugOnInput
* Custom Stimulus controllers
* Use Stimulus JS in a tool
  * Set up a controller
  * Register that controller with the current Stimulus app
  * Use the controller in the Avo tool

### [Custom asset pipeline](https://docs.avohq.io/3.0/custom-asset-pipeline.html)

* Avo's assets
* Exclude servings Avo assets from a CDN?
* Your custom assets
* Use TailwindCSS utility classes
* Add custom JS code and Stimulus controllers
* Use Importmap to add your assets
* Use js-bundling with esbuild
* Use js-bundling with rollup or webpack
* Manually add your CSS and JS assets
  * Sprockets and Propshaft
  * Webpacker

### [TailwindCSS integration](https://docs.avohq.io/3.0/tailwindcss-integration.html)

* (No headings found)

## Media Library

### [Overview](https://docs.avohq.io/3.0/media-library.html)

* How to enable it
* Hide menu item
* Add it to the menu editor
* Use it with the rich text editors

## Performance

### [Cache](https://docs.avohq.io/3.0/cache.html)

* Cache store selection
  * Production
  * Test
  * Development and other environments
  * Custom selection
* Caching caveats
  * Rows may not be automatically updated when certain associations change
    * Option 1: Use touch: true on association
    * Option 2: override cachehash method on resource to take associations in consideration
  * rootpath change won't break the cache keys
* Solid Cache

### [Views](https://docs.avohq.io/3.0/views-performance.html)

* Log ViewComponent loading times and allocations
    * 1. Enable ViewComponent Instrumentation
    * 2. Add Logging

## Native Avo components

### [<code>Avo::PanelComponent</code>](https://docs.avohq.io/3.0/native-components/avo-panel-component.html)

* Options
    * Type
    * Type
    * Type
    * Type
    * Type
    * Type
* Slots

### [Native field components](https://docs.avohq.io/3.0/native-field-components.html)

* Declaring fields
* The form option
* The value option
* Other field options
* Component options
* avofield helper

### [Field wrappers](https://docs.avohq.io/3.0/field-wrappers.html)

    * Default
    * Default
    * Default
* Field wrapper areas
  * Label
  * Value
  * Extra
* Options
    * Default
    * Default
    * Default

## Internals

### [Overview](https://docs.avohq.io/3.0/internals.html)

  * Public Methods and Internal Usage

### [Testing](https://docs.avohq.io/3.0/testing.html)

* Testing helpers
* Testing Actions

### [<code>Avo::Current</code>](https://docs.avohq.io/3.0/avo-current.html)

* (No headings found)

### [<code>Avo::ExecutionContext</code>](https://docs.avohq.io/3.0/execution-context.html)

* How does the ExecutionContext work?

### [<code>Avo::Services::EncryptionService</code>](https://docs.avohq.io/3.0/encryption-service.html)

* How does the Avo::Services::EncryptionService work?
  * Public methods
  * Mandatory arguments:
  * Optional arguments
* Usage example
  * Basic text:
  * Objects with custom serializer:
* Secret key base

### [Select All](https://docs.avohq.io/3.0/select-all.html)

* How does it work?
* Serializing the query
* Serialization known issues

### [Icons](https://docs.avohq.io/3.0/icons.html)

* Avo icons
    * Example:
* Using heroicons
    * Examples:

### [Reserved model names and routes](https://docs.avohq.io/3.0/internal-model-names.html)

* Model names to avoid
* Why these names are reserved
* Alternative approaches
  * Using Avo with existing models
* Route Conflicts with resources :resources
  * How to Fix It

## Extending

### [<code>Avo::ApplicationController</code>](https://docs.avohq.io/3.0/avo-application-controller.html)

* On extending the ApplicationController
* Responsibly extending the ApplicationController
* Override ApplicationController methods

### [<code>Avo.asset_manager</code>](https://docs.avohq.io/3.0/asset-manager.html)

* Add a stylesheet file
* Add a javascript file

### [Plugins](https://docs.avohq.io/3.0/plugins.html)

* Overview
  * Light layer
* Register the plugin
* Hook into Avo
* Hooks
* Avo AssetManager
* Using a middleware to surface asset files
* Create your own plugin
