# Structured Content Library

## Package docs status

This page is generated from public package documentation in `capell-4/packages` and the package manifest checked into the source repository.

| Field | Value |
| --- | --- |
| Composer package | `capell-app/structured-content-library` |
| Package slug | `structured-content-library` |
| Product group | Capell Foundation |
| Tier | free |
| Bundle | `foundation` |
| Runtime contexts | `admin`, `shared` |
| Capell version | `^4.0` |
| Source repository | `capell-app/packages` |
| Source path | `packages/structured-content-library` |
| Docs source | `packages/structured-content-library/docs` |
| Manifest | [`capell.json`](https://github.com/capell-app/packages/edit/4.x/packages/structured-content-library/capell.json) |

Structured Content Library owns reusable business-content records for Capell themes and packages.

The package stores portable content for:

- case studies
- testimonials
- team members
- services
- FAQs
- resources
- partners
- locations
- logos

It intentionally does not store designed layout markup, Tailwind classes, frontend authoring markers, or theme-specific structures. Themes should render the model data through their own Blade/components.

## Foundation

The first slice provides:

- `StructuredContentItem`, a package-owned Eloquent model backed by `structured_content_items`
- `StructuredContentType`, a backed enum for the supported content concepts
- `StructuredContentStatus`, a backed enum for draft/published/archive state
- `StructuredContentItemData` and `StructuredContentPayloadData` DTOs for structured writes and JSON payloads
- Actions for creating, updating, importing, listing, and building public-safe section payloads by type/site

Use `ListStructuredContentItemsAction::run($type, $siteId)` when a theme or package needs published reusable records.
Use `BuildStructuredContentSectionsAction::run($sections, $siteId)` when a theme or content-section package needs grouped section-ready payloads.