Blade components before they were components

@include passes variables and shares the parent scope, which means a partial silently depends on whatever happened to be defined where it was included. @component takes a slot and an explicit data array.

@component('alert', ['variant' => 'warning'])
    @slot('title')
        Stock is low
    @endslot

    Fewer than five units remain.
@endcomponent

The distinction that matters is scope: a component sees only what was passed, so moving one somewhere else cannot break it by removing an incidental variable. Named slots handle the case an include cannot — content that has to land in two different places in the wrapper. This is not the class-based component system that arrives later; it is a template construct with no PHP class behind it.