viget / craft-classnames
Classnames plugin for Craft CMS
Installs: 14 843
Dependents: 1
Suggesters: 0
Security: 0
Stars: 11
Watchers: 16
Forks: 1
Open Issues: 1
Type:craft-plugin
Requires
- php: ^8.2
- craftcms/cms: ^5.0.0
- newridetech/php-classnames: ^1.2
Requires (Dev)
- craftcms/phpstan: dev-main
- craftcms/rector: dev-main
README
Classnames plugin for Craft CMS 5.x
Classnames is a simple Twig function for conditionally joining css class names together in Twig templates, in a way that makes them much more readable. It's like Jed Watson's Classnames but for Twig in Craft.
This plugin is especially useful with Tailwind CSS projects.
Requirements
This plugin requires Craft CMS 5.0.0 or later.
For Craft 4 users, view the v2 branch.
Installation
To install the plugin, follow these instructions.
-
Open your terminal and go to your Craft project:
cd /path/to/project
-
Then tell Composer to load the plugin:
composer require viget/craft-classnames
-
Install the plugin either via the CLI with
./craft plugin/install classnames
, or in the Control Panel by going to Settings → Plugins and clicking the “Install” button for Classnames.
Using Classnames
A real world example:
<button class="{{ classNames({ 'group relative z-0 hover:z-1': true, 'px-24 py-12': true, 'font-bold text-14 text-dark-gray': true, 'inline-flex items-center justify-between': props.arrow, 'inline-block': not props.arrow, 'w-full text-center': props.full }) }}" > {{ props.text }} </button>
Other examples:
{{ classNames('foo', 'bar') }} {# 'foo bar' #} {{ classNames('foo', { 'bar': true }) }} {# 'foo bar' #} {{ classNames({ 'foo-bar': true }) }} {# 'foo-bar' #} {{ classNames({ 'foo-bar': false }) }} {# '' #} {{ classNames({ 'foo': true }, { 'bar': true }) }} {# 'foo bar' #} {{ classNames({ 'foo': true, 'bar': true }) }} {# 'foo bar' #}
There is even a shorthand cx
version available:
{{ cx('foo', { 'bar': true }) }} {# 'foo bar' #}
Visit code.viget.com to see more projects from Viget.