ufvjm/blade-components

Componentes Laraval Blade reusáveis para as suas aplicações. Os compomentes são baseados [Design System do Governo Federal Brasileiro](https://www.gov.br/ds/home). Os componentes foram desenvolvidos utilizando o framework Laravel e o Bootstrap CSS.

0.0.27 2025-06-12 17:29 UTC

README

Pipeline Coverage Latest Stable Version Total Downloads License

Blade Components

Componentes Laraval Blade reusáveis para as suas aplicações. Os compomentes são baseados Design System do Governo Federal Brasileiro. Os componentes foram desenvolvidos utilizando o framework Laravel e o Bootstrap CSS.

Sumário

Instalação

Adicione o pacote ao seu projeto:

# adicionando a dependência no projeto
composer require ufvjm/blade-components

Uso

Componentes

Lista de componentes disponíveis.

AvatarDropdown

<x-dsi.avatar-dropdown fullName="Fulano de Tal" />

AvatarIcon

<x-dsi.avatar-icon title="Usuário" icon="fas fa-user" size="small" />

AvatarLetter

<x-dsi.avatar-letter title="Usuário" letter="U" size="medium"
    bgColor="{{ \Dsi\LaravelBladeComponents\Enum\BgColors::GREEN->value }}"
/>

AvatarPhoto

<x-dsi.avatar-photo title="Usuário" photoUrl="https://picsum.photos/id/1005/400" size="large" />

Breadcrumb

Povoando a variável:

$crumbs = [
  '/menu-anterior' => 'Menu Anterior',
  '#' => 'Atual',
];

Adicionando o componente:

<x-dsi.breadcrumb :crumbs="$crumbs" homeUrl="/inicio"></x-dsi.breadcrumb>

Button

<x-dsi.button>Salvar</x-dsi.button>

ButtonSecondary

<x-dsi.button-secondary>Salvar</x-dsi.button-secondary>

ButtonTertiary

<x-dsi.button-tertiary>Salvar</x-dsi.button-tertiary>

ButtonCircle

<x-dsi.button-circle iconClass="fas fa-city" title="Cadastro de cidades" />

ButtonCircleSecondary

<x-dsi.button-circle-secondary iconClass="fas fa-city" title="Cadastro de cidades" />

ButtonCircleTertiary

<x-dsi.button-circle-tertiary iconClass="fas fa-city" title="Cadastro de cidades" />

ButtonLink

<x-dsi.button-link href="/home" title="Início">Voltar</x-dsi-link.button>

Card

<x-dsi.card title="Título">Conteúdo</x-dsi.card>

CardImage

<x-dsi.card-image src="https://example.com/image.jpg" alt="Example Image"/>

Divider

<x-dsi.divider />

Form - Loading

<x-dsi.form.loading />

Input

<x-dsi.input name="nome" id="identificador" label="Nome" value="John Doe" />

InputFile

@php
$label = 'Envio de arquivo';
$message = 'Os arquivos devem ser no formato PNG ou JPG e ter no máximo 100MB.';
@endphp

<x-dsi.input-file name="arquivo" id="arquivo" :label="$label" :message="$message" />

InputPassword

<x-dsi.input-password name="senha" id="senha" label="Senha" />

Div - Row

<x-dsi.div.row>Conteúdo</x-dsi.div.row>

Div - Col

<x-dsi.div.col>Conteúdo</x-dsi.div.col>

Div - ColAuto

<x-dsi.div.col-auto>Conteúdo</x-dsi.div.col-auto>

Loading - Percentage

<x-dsi.loading.percentage label="Carregando" percentage="75" />

Loading - Spinner

<x-dsi.loading.spinner label="Carregando" :medium="true" />

Message - Danger

<x-dsi.message.danger title="Perigo" message="Mensagem de perigo" />

Message - Info

<x-dsi.message.info title="Informação" message="Mensagem de informação" />


Message - Success

x-dsi.message.success title="Sucesso" message="Mensagem de sucesso" />

Message - Warning

<x-dsi.message.warning title="Alerta" message="Mensagem de alerta" />

Message - Danger

<x-dsi.message.context.danger message="Mensagem de Perigo" />

Message - Context - Info

<x-dsi.message.context.info message="Mensagem de Informação" />

Message - Context - Success

<x-dsi.message.context.success message="Mensagem de Sucesso" />

Message - Context - Warning

<x-dsi.message.context.warning message="Mensagem de Alerta" />

Radio Vertical

<x-dsi.radio-vertical id="fruta" name="fruta" label="Fruta" helpText="Selecione uma fruta.">
    <x-dsi.radio.radio-item id="fruta-maca" name="fruta" label="Maçã" value="maca" checked />
    <x-dsi.radio.radio-item id="fruta-banana" name="fruta" label="Banana" value="banana" disabled />
    <x-dsi.radio.radio-item id="fruta-laranja" name="fruta" label="Laranja" value="laranja" />
</x-dsi.radio-vertical>

Select

@php
    $options = [
        'AC' => 'Acre',
        'AL' => 'Alagoas',
        'AP' => 'Amapá',
        'AM' => 'Amazonas',
    ];
@endphp

<x-dsi.select
    id="estado"
    name="estado"
    label="Estado"
    selectMessage="Selecione um estado"
    errorMessage="Preenchimento obritagório"
    :options=$options
/>

SelectGov

<x-dsi.select-gov id="estado" name="estado" label="Estado" placeholder="Selecione um estado" errorMessage="Preenchimento obritagório">
    <x-dsi.select-gov.select-item id="rb0" name="estados-simples" value="Acre"/>
    <x-dsi.select-gov.select-item id="rb1" name="estados-simples" value="Alagoas"/>
    <x-dsi.select-gov.select-item id="rb2" name="estados-simples" value="Amapá"/>
</x-dsi.select>

Switcher

<x-dsi.switcher id="habilitado" name="habilitado" label="Habilitado" :checked=true />

Tab

@php
    $items = [
        ['title' => 'ITEM', 'content' => 'Painel Item'],
        ['title' => 'TODOS', 'content' => 'Painel Todos'],
        ['title' => 'CATEGORIAS', 'content' => 'Painel Categorias'],
    ];
@endphp
<x-dsi.tab :items="$items" />

Table

@php
    $canCollapse = false;
    $canSelect = false;    
    $canSearch = false;
    $canPaginate = false;
    $id = '9999';
    $title = 'Produtos';
@endphp

<x-dsi.table :id=$id :title=$title 
    :canCollapse=$canCollapse 
    :canSelect=$canSelect 
    :canSearch=$canSearch 
    :canPaginate=$canPaginate
>
    
    <x-slot name="header">
        <x-dsi.table.header-col title="Título coluna 1">
            Título coluna 1
        </x-dsi.table.header-col>
        <x-dsi.table.header-col title="Título coluna 2">
            Título coluna 2
        </x-dsi.table.header-col>
        <x-dsi.table.header-col title="Título coluna 3">
            Título coluna 3
        </x-dsi.table.header-col>
    </x-slot>
    
    <x-slot name="body">
        <!-- Linha 1 -->
        <x-dsi.table.body-row :canCollapse=$canCollapse :canSelect=$canSelect :id=$id :rowNumber="1">
            <x-dsi.table.body-col-data title="Título coluna 1">
                Linha 1 coluna 1
            </x-dsi.table.body-col-data>
            <x-dsi.table.body-col-data title="Título coluna 2">
                Linha 1 coluna 2
            </x-dsi.table.body-col-data>
            <x-dsi.table.body-col-data title="Título coluna 3">
                Linha 1 coluna 3
            </x-dsi.table.body-col-data>
        </x-dsi.table.body-row>        
    </x-slot>    
    
</x-dsi.table>

Tag - Count

<x-dsi.tag.count title="100 mensagens não lidas" message="100" />

Tag - Icon

<x-dsi.tag.icon bgColor="bg-success" iconTitle="Ícone de carro">
    <i class="fas fa-car" aria-hidden="true"></i>
</x-dsi.tag.icon>

Tag - Status

<x-dsi.tag.status bgColor="bg-warning" title="Disponibilidade" message="Estoque baixo" />

Tag - Text

<x-dsi.tag.icon bgColor="bg-success" iconTitle="Ícone de carro">
    <i class="fas fa-car" aria-hidden="true"></i>
</x-dsi.tag.icon>

TextArea

<x-dsi.text-area
    id="descricao"
    name="descricao"
    label="Rótulo"
    value="Longo Texto"
    placeholder="Exemplo de texto longo ..."
    helpText="Texto de ajuda para o campo de texto longo."
/>

Log de Alterações

Acesse o Log de Alterações do projeto.

Guia de Contribuição

Acesse o Guia de Contribuição para instruções sobre como adicionar um novo componente.

Licença

Acesse a Licença de uso do pacote.

Referências

Exemplos de implementação de componentes blade