# [Usage](../../../usage.md) > [Components and standard attributes](../basics.md) > ::make()

---

The `::make()` method will initialize a new instance of the component class. Very important to reset attributes. But can also be used to set the `name` attribute of the component:

```php
Component::make('component_name')
```

It also handles a string:
```php
::make('string')
```

- In `Form` components, the string will became the component/field `name`
- In `Visual` components, the string will became the component `label`


| Types    | Default |
|----------|---------|
| `string` | `null`  |

Factory for every component: creates a fresh instance, assigns a new `uuid`, and optionally sets `name` (Form fields) or label text (Visuals). Always start chains with `::make()` to avoid leaking prior attributes. When omitted (`null`) a uuid-based name fallback applies.
Prefer `::make('name')` shorthand over separate `setName`.

### Example
Blade:
```php
{!! \KFramework\Components\Forms\Input::make('email')->setLabel('E-mail') !!}
```
Controller:
```php
Input::make('email')->setLabel('E-mail');
Button::make('Save')->setAction(fn() => save());
```

### Interaction / tips
- Shorthand sets `name` (../shared_attributes/name.md); override later with `setName` if needed.
- Each `make()` regenerates `uuid` (../shared_attributes/uuid.md); cloning preserves the uuid-fallback rule.
- Configure via `setAttribute` (../shared_attributes/set_attribute.md) or typed setters.

See also: [name](name.md), [uuid](uuid.md), [setAttribute](set_attribute.md), [label](label.md), [basics](../basics.md), [Form](../forms/form.md).