thelia/flexy

thelia design system

Maintainers

Package info

github.com/thelia-templates/flexy

Homepage

Language:Twig

Type:thelia-frontoffice-template

pkg:composer/thelia/flexy

Transparency log

Statistics

Installs: 2 902

Dependents: 2

Suggesters: 0

Stars: 3

Open Issues: 2

1.0.0-beta7 2026-08-14 09:53 UTC

README

Front-office template for Thelia 3, built on Twig, Symfony UX and Tailwind CSS v4.

Requirements

  • Thelia 3.0.0 or later
  • PHP 8.3+

Assets are served through Symfony AssetMapper — there is no Node build step, no bundler and no dist/ directory. Tailwind is compiled by symfonycasts/tailwind-bundle, which downloads a standalone binary on first use.

Installation

composer require thelia/flexy

thelia/installer places the template under templates/frontOffice/flexy. Activate it from the back office, or set it in .env:

ACTIVE_FRONT_TEMPLATE=flexy

Layout

Path Contents
*.html.twig Pages, at the root. config/views.yaml lists the ones a controller renders, which are not reachable by name
components/ Twig components, grouped by responsibility: Atoms, Molecules, Organisms, Layouts, Forms, Fields
src/ PHP: controllers, services, DTOs, Twig extensions, form types (FlexyBundle\ namespace)
assets/ Styles, icons, images, Stimulus controllers
form/ Form theme — applied explicitly per template, never registered globally
translations/ messages.en_US.yaml, messages.fr_FR.yaml
docs/ Notes on the parts whose behaviour the code alone does not explain

A component owns its template, its styles and its behaviour in a single directory. Base.php holds the data, Base.html.twig the markup, Base.css the styles, base_controller.js the interactions.

Extending it

The template declares theme_hook() extension points across its pages — layout.head.top, product.bottom, cart.top and others. A module answers one by implementing Thelia\Core\Hook\Theme\ThemeHookInterface; the tag priority drives the rendering order.

The SEOne module already answers layout.head.top and layout.head.bottom, which is where the title, description, canonical, hreflang and structured data come from.

Development

ddev composer cs-diff          # coding standards, dry run
ddev composer cs               # and fix them
ddev composer phpstan-flexy    # static analysis
ddev composer test:http-flexy  # HTTP smoke tests

Run test suites through the composer test:* scripts only. Calling vendor/bin/phpunit directly resolves to the development database instead of the test one.

Licence

GPL-3.0-or-later. See LICENSE.