# Theme Awards

## Package docs status

This page is generated from package source documentation in `the Capell packages repository` and the checked-in manifest. Source documentation is not distribution status. Before running a Composer command, verify that the exact package and compatible 1.x release are available through public Packagist or the authenticated marketplace account.

| Field | Value |
| --- | --- |
| Composer package | `capell-app/theme-awards` |
| Package slug | `theme-awards` |
| Product group | Capell Themes |
| Tier | premium |
| Bundle | `themes` |
| Runtime contexts | `frontend` |
| Capell version | `^1.0` |
| Source repository | `capell-app/packages` |
| Source path | `packages/theme-awards` |
| Docs source | `packages/theme-awards/docs` |
| Manifest | [`capell.json`](https://github.com/capell-app/packages/edit/main/packages/theme-awards/capell.json) |

<!-- prettier-ignore-start -->

## What This Plugin Adds

Theme Awards is an **Available**, **No schema impact** Capell theme in the **Capell Themes** product group. It ships as `capell-app/theme-awards` and extends these surfaces: frontend.

Theme Awards provides a Blade scoreboard presentation with numeric scores, judging criteria, nominees, winners, creator credits, archives, and voting states.

Admins select Awards through theme management, preview it, and adjust shared theme settings. Public pages use its judging and winner-focused presets and widgets.

Evidence: [`src/AwardsThemeServiceProvider.php`](src/AwardsThemeServiceProvider.php), [`src/Support/Demo/AwardsDemoContent.php`](src/Support/Demo/AwardsDemoContent.php), [`tests/Feature/SignatureWidgetsRenderTest.php`](tests/Feature/SignatureWidgetsRenderTest.php), [`capell.json`](capell.json), [`src/Manifest/ThemeManagementPageContribution.php`](src/Manifest/ThemeManagementPageContribution.php), [`tests/Unit/AwardsThemeDefinitionTest.php`](tests/Unit/AwardsThemeDefinitionTest.php), [`docs/overview.admin.md`](overview.admin.md).

Status details:

- Status: Available
- Tier: premium
- Bundle: themes
- Composer package: `capell-app/theme-awards`
- Namespace: `Capell\ThemeAwards`
- Theme key: `awards`

## Why It Matters

**For developers:** The provider extends the Foundation default theme and registers Awards definitions, assets, and layout-widget renderables, with an optional live-poll integration resolver.

**For teams:** Awards teams can publish scores, nominees, and winner archives in a consistent public format without changing the editing model.

Evidence: [`src/AwardsThemeServiceProvider.php`](src/AwardsThemeServiceProvider.php), [`src/Actions/ResolveLivePollIntegrationAction.php`](src/Actions/ResolveLivePollIntegrationAction.php), [`tests/Unit/AwardsThemeDefinitionTest.php`](tests/Unit/AwardsThemeDefinitionTest.php), [`tests/Unit/PublicOutputSafetyTest.php`](tests/Unit/PublicOutputSafetyTest.php), [`docs/overview.admin.md`](overview.admin.md), [`src/Support/Demo/AwardsDemoContent.php`](src/Support/Demo/AwardsDemoContent.php), [`tests/Feature/SignatureWidgetsRenderTest.php`](tests/Feature/SignatureWidgetsRenderTest.php).

## Screens And Workflow

Screenshot contract: `docs/screenshots.json`.

<span class="theme-aware-image">
  <img class="theme-aware-image__light" src="screenshots/awards-homepage.png" alt="Awards Homepage" loading="lazy" />
  <img class="theme-aware-image__dark" src="screenshots/awards-homepage-dark.png" alt="Awards Homepage" loading="lazy" />
</span>

<span class="theme-aware-image">
  <img class="theme-aware-image__light" src="screenshots/awards-landing.png" alt="Awards Landing page" loading="lazy" />
  <img class="theme-aware-image__dark" src="screenshots/awards-landing-dark.png" alt="Awards Landing page" loading="lazy" />
</span>

Desktop, tablet, and mobile variants remain defined in the screenshot contract; this list groups them by workflow.

- Awards Homepage (frontend, required).
- Awards Landing page (frontend, required).
- Awards Awards archive (frontend, required).
- Awards Search results (frontend, required).
- Awards Contact form (frontend, optional).
- Awards Page Not Found (frontend, optional).
- Awards Call To Action (frontend, optional).

## Technical Shape

- Service providers: `Capell\ThemeAwards\AwardsThemeServiceProvider`.
- Actions: `InstallAwardsThemeDemoAction`, `ResolveLivePollIntegrationAction`.
- Data objects: `LivePollIntegrationData`.
- Command signatures: `capell:theme-awards-demo`.
- Console command classes: `DemoCommand`.
- Manifest contributions: `admin-page: Capell\ThemeAwards\Manifest\ThemeManagementPageContribution`.
- Health checks: `Capell\ThemeAwards\Health\ThemeAwardsHealthCheck`.
- Blade views: `packages/theme-awards/resources/views/page.blade.php`, `packages/theme-awards/resources/views/partials/countdown-script.blade.php`, `packages/theme-awards/resources/views/partials/live-poll-script.blade.php`, `packages/theme-awards/resources/views/sections/award-countdown-ticker--compact.blade.php`, `packages/theme-awards/resources/views/sections/award-countdown-ticker.blade.php`, `packages/theme-awards/resources/views/sections/content-listing.blade.php`, `packages/theme-awards/resources/views/sections/creator-credits.blade.php`, `packages/theme-awards/resources/views/sections/cta.blade.php`, `packages/theme-awards/resources/views/sections/footer.blade.php`, `packages/theme-awards/resources/views/sections/hero.blade.php`, `packages/theme-awards/resources/views/sections/navigation.blade.php`, `packages/theme-awards/resources/views/sections/newest-nominees--carousel.blade.php`, `and 15 more`.
- Cache tags: `theme-awards`.

## Data Model

This theme has no schema impact. It relies on core Capell site, page, locale, and theme records instead of declaring package-owned tables.

## Install Impact

- Required packages: `capell-app/core`, `capell-app/theme-foundation`, `capell-app/frontend`.
- Admin navigation: declares `admin-page: ThemeManagementPageContribution`; each Filament page or resource controls its own navigation visibility.
- Admin/editor extensions: none declared.
- Permissions: none declared in `capell.json`.
- Public routes: none declared.
- Database changes: no package migrations declared.
- Config: no package config files.
- Settings: no package settings declared.
- Queues or schedules: none declared.
- Cache tags: `theme-awards`.
- Commands: `capell:theme-awards-demo`.

## Common Pitfalls

- Keep required Capell packages on compatible v4 releases: `capell-app/core`, `capell-app/theme-foundation`, `capell-app/frontend`.
- Keep public Blade and cached HTML free of authoring markers, model IDs, permissions, signed editor URLs, and lazy database queries.
- Custom write integrations must preserve invalidation for `theme-awards` cache tags.

## Troubleshooting

| Symptom | Likely cause | Check | Fix |
| --- | --- | --- | --- |
| Package surface is missing after install | Provider or manifest is not loaded | Confirm `capell.json`, package `composer.json`, and provider registration | Reinstall the package, refresh Composer autoload, and clear host caches |
| Public output leaks unexpected state | Render data, cache variation, or authoring boundary has regressed | Check public Blade, cache tags, and public-output safety tests | Move data loading out of Blade and rerun the package public-output tests |

## Quick Start

1. Install the package: `composer require capell-app/theme-awards`.
2. No package-specific setup command or migrations are declared.
3. Open the Awards Homepage and confirm the public output renders without admin state.

## Next Steps

- [Package docs](README.md)
- [Overview](overview.md)
- [Troubleshooting](#troubleshooting)
- [Screenshot contract](screenshots.json)
- [Marketplace assets](assets/marketplace/)
- [Capell content language plan](../../docs/CONTENT_LANGUAGE_PLAN.md)
- [Capell documentation design system](../../docs/DESIGN_SYSTEM.md)
- [Capell and package ERD notes](../../docs/erd/capell-and-package-erds.md)
- Related packages: [Theme Foundation](../theme-foundation/README.md), [Newsletter](../newsletter/README.md), [Widget Live Poll](../widget-live-poll/README.md).
- Focused tests: `vendor/bin/pest packages/theme-awards/tests --configuration=phpunit.xml`.

<!-- prettier-ignore-end -->