One interface for every post type
The same grid and page support any WordPress post type: post, page, and custom post types (e.g. product, portfolio).
How post type is chosen
URL: post_type query parameter (e.g. #/posts?post_type=page). The page reads it and uses it for title, API calls, and column config.
Menu: Menu items can point to #/posts or #/posts?post_type=<type> so switching the menu switches the type.
Column config per type
column-configs (or equivalent) define default and available columns per post type. For example: pages may have Template and Parent; products may have price/sku; posts have category and tags. The Column Manager and useColumnConfig merge these with user overrides (order, visibility, custom names) and optional custom columns from the page.
Stats and metadata per type
Stats (counts per status) and metadata (authors, taxonomies, labels) are fetched for the current post type. So filter options and status counts match the content you're viewing.
Benefit: One interface and one set of habits for all content types; only the columns and options that make sense for each type are shown.
Custom fields and schema
FleekDash can work with your site's schema and custom fields so the grid and edit form stay relevant.
Schema source
The post edit form (e.g. PostEditForm) uses useFormSchema(postType) to load a schema for that type. Schema can come from the REST API (OPTIONS or a schema endpoint), from custom post type definitions, or from meta/ACF. It describes which fields exist and how they should be edited.
The grid does not show every schema field by default; it shows a default set of columns (id, thumb, title, author, date, category, status, labels, actions, etc.). Custom or schema-driven columns can be added via column config or customColumns prop so that specific meta or custom fields appear as columns.
Edit form
When you open a post for editing (e.g. in a sheet or modal), the form can be generated from the same schema: fields, types, and validation. So the form reflects your CPT and meta structure.
PostEditForm loads full post data from GET /wp-json/fleekdash/v1/posts/:id and uses the schema to render fields. On submit, it sends updates to the same API so custom fields and taxonomies are saved.
Benefit: The list and edit experience align with your content model (custom fields, ACF, etc.) without hard-coding every field in the UI.