# HTML Style Guide
This style guide applies to all HTML. This also includes Blade templates and components, Vue components and Alpine.js components.
# Formatting
When an HTML element has multiple attributes, each successive attribute must be written on a new line. All must be placed in alphabetic order.
<x-dynamic-component @class([
'p-4',
'bg-red' => $hasError,
])
:component="$component"
@if($condition) disabled @endif
id="unique-id"
x-data="{}"
v-bind:class="{ isActive: shouldBeActive }"/>
If an element has both attribute(s) and text, the text should be written on a new line.
<td class="px-6 py-3">
Lorem ipsum
</td>
<span>{{ $foo->bar }}</span>
If an element has one or more child elements and/or text, the inner HTML must always be written on a new line.
<button>
<i class='fak fa-hihaho-check-icon'></i>
Save
</button>