PHPackages                             tentaplane/theme-tailwind - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. tentaplane/theme-tailwind

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

tentaplane/theme-tailwind
=========================

v0.4.3(4mo ago)052MITBladePHP ^8.2

Since Feb 1Pushed 3mo agoCompare

[ Source](https://github.com/tentaplane/theme-tailwind)[ Packagist](https://packagist.org/packages/tentaplane/theme-tailwind)[ RSS](/packages/tentaplane-theme-tailwind/feed)WikiDiscussions main Synced today

READMEChangelog (10)Dependencies (2)Versions (17)Used By (0)

Tailwind Theme
==============

[](#tailwind-theme)

A Tailwind CSS v4 theme for TentaPress.

Theme Details
-------------

[](#theme-details)

FieldValueID`tentapress/tailwind`Version0.4.3CSS FrameworkTailwind CSS v4Layouts
-------

[](#layouts)

KeyLabelDescriptiondefaultDefaultStandard page layoutlandingLandingFull-width landing pagepostPostBlog post layoutMenu Locations
--------------

[](#menu-locations)

KeyLabelprimaryPrimary NavigationfooterFooter NavigationAssets
------

[](#assets)

This theme uses Tailwind CSS v4 with CSS-first configuration.

### Build

[](#build)

```
# Install dependencies
bun install --cwd themes/tentapress/tailwind

# Run dev server (HMR)
bun run --cwd themes/tentapress/tailwind dev

# Watch build (no HMR)
bun run --cwd themes/tentapress/tailwind watch

# Build assets
bun run --cwd themes/tentapress/tailwind build
```

### Entrypoints

[](#entrypoints)

- `resources/css/theme.css` - Tailwind import + custom styles
- `resources/js/theme.js` - Custom scripts

Structure
---------

[](#structure)

```
tailwind/
├── composer.json       # Composer metadata
├── package.json        # NPM dependencies
├── vite.config.js      # Vite configuration
├── tentapress.json     # Theme manifest
├── screenshot.webp     # Theme preview
├── src/
│   └── TailwindThemeServiceProvider.php
├── views/
│   ├── layouts/
│   │   ├── default.blade.php
│   │   ├── landing.blade.php
│   │   └── post.blade.php
│   └── blocks/
│       └── (block overrides)
└── resources/
    ├── css/theme.css
    └── js/theme.js

```

Tailwind Configuration
----------------------

[](#tailwind-configuration)

Tailwind v4 uses CSS-first configuration with `@theme`:

```
@import "tailwindcss";

@theme {
	/* Custom theme variables */
}
```

Customization
-------------

[](#customization)

Override block views by creating `views/blocks/{block-key}.blade.php`.

Theme block image templates resolve media through the media reference resolver when available, enabling variant-aware `srcset`/`sizes` output with URL fallback. Where variant metadata exists, image tags also emit `width`/`height` to reduce layout shift. Hero media uses eager loading with high fetch priority to improve above-the-fold rendering. Block templates now use layout-aware `sizes` values (including gallery, hero, logo cloud, split content, and before/after) so `srcset` selection is tuned per block/column width.

Builder Preview Contract
------------------------

[](#builder-preview-contract)

`tentapress/builder` uses this theme's normal layout views for preview rendering. No preview-specific layout directory is required. Embed/video blocks render as static thumbnails or placeholders inside builder preview so admin CSP and iframe sandboxing do not break the canvas.

Cloning This Theme (Agent Checklist)
------------------------------------

[](#cloning-this-theme-agent-checklist)

This section is a concrete checklist for duplicating the theme under a new vendor/name.

### 1) Copy the folder

[](#1-copy-the-folder)

```
cp -R themes/tentapress/tailwind themes//
```

Example:

```
cp -R themes/tentapress/tailwind themes/antigravity/neon-vibe
```

### 2) Update the theme manifest

[](#2-update-the-theme-manifest)

Edit `themes///tentapress.json`:

- `id`: `/`
- `name`: human-friendly name
- `provider`: new PHP namespace + class
- `provider_path`: new provider PHP file (if renamed)
- `description`, `version`, `layouts`, `menu_locations`: adjust as needed

### 3) Update PHP namespaces + provider class

[](#3-update-php-namespaces--provider-class)

Update `themes///src/*`:

- Rename namespace to match the new vendor/theme.
- Rename `TailwindThemeServiceProvider` to match the theme.
- Update class name in `tentapress.json` `provider`.

### 4) Update Composer autoload metadata

[](#4-update-composer-autoload-metadata)

Edit `themes///composer.json`:

- `name`: e.g. `vendor/theme-`
- `autoload.psr-4`: match the new namespace
- `extra.laravel.providers`: new provider class

### 5) Update Vite config + asset paths

[](#5-update-vite-config--asset-paths)

Edit `themes///vite.config.js`:

- `buildDirectory`: `themes///build`
- `outDir`: `public/themes///build`
- `hotFile`: `public/themes///hot`

### 6) Update Blade layout asset paths

[](#6-update-blade-layout-asset-paths)

Edit theme layouts to point at the new build directory:

`@vite(['resources/css/theme.css', 'resources/js/theme.js'], 'themes///build')`

Update in:

- `themes///views/layouts/default.blade.php`
- `themes///views/layouts/landing.blade.php`
- `themes///views/layouts/post.blade.php`
- `themes///views/posts/index.blade.php`

### 7) Sync and activate

[](#7-sync-and-activate)

```
php artisan tp:themes sync
php artisan tp:themes activate /
```

### 8) Install/build theme assets

[](#8-installbuild-theme-assets)

```
bun install --cwd themes//
bun run --cwd themes// dev
```

Block Data Shape (What Layouts Receive)
---------------------------------------

[](#block-data-shape-what-layouts-receive)

Rendered layouts receive pre-rendered block HTML (via `$blocksHtml`) and blocks originate from a normalized JSON structure. The normalized block shape is:

```
{
  "type": "blocks/hero",
  "version": 3,
  "props": {
    "headline": "Your headline"
  },
  "variant": "default"
}
```

Rules:

- `type` (string): Required. Registry key like `blocks/hero`.
- `version` (int): Resolved from block definition if missing.
- `props` (object): Field payload for the block. Defaults are shallow-merged.
- `variant` (string, optional): Only if the block defines variants.

UI-only editor keys exist during editing but are stripped on save:

- `_key` (string): Editor-only unique ID.
- `_collapsed` (bool): Editor-only UI state.

Block fields are defined per block in `plugins/tentapress/blocks/resources/definitions/*.json` and should be treated as the source of truth for `props`.

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance79

Regular maintenance activity

Popularity9

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

16

Last Release

125d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/576413?v=4)[Chris Southam](/maintainers/csoutham)[@csoutham](https://github.com/csoutham)

---

Top Contributors

[![csoutham](https://avatars.githubusercontent.com/u/576413?v=4)](https://github.com/csoutham "csoutham (49 commits)")

### Embed Badge

![Health badge](/badges/tentaplane-theme-tailwind/health.svg)

```
[![Health](https://phpackages.com/badges/tentaplane-theme-tailwind/health.svg)](https://phpackages.com/packages/tentaplane-theme-tailwind)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
