ducrot/twigcn-bundle
TwigcnBundle brings shadcn/ui-inspired, accessible UI components to Symfony & Twig. Install the PHP bundle plus the @ducrot/twigcn-ui NPM package and compile Tailwind CSS to use ready-made, themeable components in your templates.
TwigComponent system, making it a natural fit for Symfony-based applications. The architecture follows Symfony’s component-based UI pattern, aligning with modern Symfony UX practices.<twig:Twigcn:Button>) and can be adopted incrementally.FieldForm, Input, and Checkbox, reducing boilerplate for form rendering.--primary, --radius) allow thematic customization, but heavy overrides may require deep Tailwind knowledge.btn-primary classes). Risk: High for non-Tailwind teams.Dialog, Drawer) require Stimulus 2.x+ and Symfony UX. Projects using Stimulus 1.x or custom setups will need migration effort. Risk: Medium.Design System Compatibility:
Asset Pipeline Readiness:
npx tailwindcss --watch)?Stimulus Adoption:
Form System Impact:
FieldForm, Input) interact with existing Symfony forms (e.g., {{ form_widget() }})?Performance:
Long-Term Maintenance:
Testing:
Assessment Phase:
Pilot Integration:
FieldForm and Input components.Full Adoption:
Rollback Plan:
| Feature | Compatibility Notes |
|---|---|
| Symfony Forms | Works with FieldForm, Input, Checkbox, etc., but may require form theme updates. |
| Symfony UX | Full support for Stimulus controllers (Symfony UX TwigComponent). |
| Webpack Encore | Supported but requires manual Stimulus registration. |
| Vite | Recommended for modern setups (via pentatrion/vite-bundle). |
| AssetMapper | Native support; minimal configuration needed. |
| Dark Mode | Built-in via ThemeSwitcher or manual dark class toggling. |
| Custom Theming | Possible via CSS variables, but heavy customization may require forking. |
Prerequisites:
Core Setup:
composer require ducrot/twigcn-bundle).@ducrot/twigcn-ui to node_modules and configure importmap or Vite.Styling:
tailwind.css with @source directives for bundle/templates.npx tailwindcss --watch).Stimulus:
controllers.json (Symfony UX) or bootstrap.js (manual).Component Adoption:
Optimization:
ducrot/twigcn), requiring coordination with the upstream project.@source paths).:root) must be documented for future developers.controllers.json or bootstrap.js.@source paths in tailwind.css.How can I help you explore Laravel packages today?