PHPackages                             blackcube/yii-bleet - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. blackcube/yii-bleet

ActiveLibrary[Framework](/categories/framework)

blackcube/yii-bleet
===================

Blackcube UIKit for Yii framework

1.0.0(1mo ago)012↓33.3%1BSD-3-ClausePHPPHP ^8.1

Since Apr 5Pushed 1mo agoCompare

[ Source](https://github.com/blackcubeio/yii-bleet)[ Packagist](https://packagist.org/packages/blackcube/yii-bleet)[ Docs](https://github.com/blackcubeio/yii-bleet)[ RSS](/packages/blackcube-yii-bleet/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (28)Versions (3)Used By (1)

Blackcube Bleet
===============

[](#blackcube-bleet)

UIKit for Yii — PHP widgets + Aurelia 2 components.

[![License](https://camo.githubusercontent.com/6cb285b57819f8de0acfb34923298f4f569f962544e8fe35331da2d163f4e485/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4253442d2d332d2d436c617573652d626c75652e737667)](LICENSE.md)[![Packagist Version](https://camo.githubusercontent.com/7d0c2bc72748bc7692365c323e96c6ff3c9a655754547c82ce2a79f30f2a4166/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f626c61636b637562652f7969692d626c6565742e737667)](https://packagist.org/packages/blackcube/yii-bleet)

Installation
------------

[](#installation)

```
composer require blackcube/yii-bleet
```

The Aurelia 2 companion package:

```
npm install @blackcube/aurelia2-bleet
```

Requirements
------------

[](#requirements)

- Yii (view, html, widget, router, form-model)
- Aurelia 2 (for interactive components: modal, drawer, ajaxify, toaster, upload, quill)

What it is
----------

[](#what-it-is)

A fluent PHP API that generates HTML. You never write raw HTML in views.

Aurelia 2 handles interactivity client-side: AJAX loading, drawers, modals, toasts, rich text, file uploads.

7 colors (`primary`, `secondary`, `success`, `danger`, `warning`, `info`, `accent`), 5 sizes (`xs`, `sm`, `md`, `lg`, `xl`).

Quick Start
-----------

[](#quick-start)

### Buttons

[](#buttons)

```
use Blackcube\Bleet\Bleet;

Bleet::button('Save')->primary()->render();
Bleet::button('Delete')->danger()->sm()->render();

Bleet::buttonsBar()
    ->addButton(Bleet::button()->icon('pencil')->info()->xs())
    ->addButton(Bleet::button()->icon('trash')->danger()->xs())
    ->render();
```

### Form fields

[](#form-fields)

```
Bleet::label('Name')->render();
Bleet::input()->active($model, 'name')->render();
Bleet::textarea()->active($model, 'description')->render();
Bleet::select()->active($model, 'status')->items($items)->render();
Bleet::checkbox()->active($model, 'active')->render();
Bleet::toggle()->active($model, 'published')->render();
```

### Upload

[](#upload)

```
Bleet::upload()
    ->active($model, 'document')
    ->accept(['jpg', 'jpeg', 'png', 'pdf'])
    ->maxFiles(5)
    ->multiple()
    ->render();
```

### Elastic fields (auto-render from JSON Schema)

[](#elastic-fields-auto-render-from-json-schema)

```
Bleet::elastic($elasticOptions)->active($model, $attribute)->render();
```

### Cards

[](#cards)

```
Bleet::cardHeader()->title('Contents')->icon('document-text')->primary()->render();
Bleet::card('Body content here')->render();
Bleet::statCard('Visitors', '12,458')->icon('users')->render();
```

### Layout

[](#layout)

```
Bleet::header('Admin')->render();
Bleet::sidebar()->addItem(Bleet::sidebarItem('Dashboard'))->render();
Bleet::breadcrumb()->render();
Bleet::footer()->render();
```

### Feedback

[](#feedback)

```
Bleet::alert()->title('Warning')->content('Check your input')->warning()->render();
Bleet::toast()->success()->title('Saved')->content('Changes applied')->render();
```

### Modal and Drawer (AJAX)

[](#modal-and-drawer-ajax)

```
// Trigger — loads content via AJAX
Bleet::button('Edit')->attributes(Bleet::modal('editUser')->trigger('/user/1'))->render();
Bleet::button('Details')->attributes(Bleet::drawer()->trigger('/user/1'))->render();

// Shell — once in layout
Bleet::modal('editUser')->render();
Bleet::drawer()->render();
```

### Ajaxify

[](#ajaxify)

```
// Trigger on element
Bleet::toggle()->attributes(Bleet::ajaxify()->event('change')->trigger())->render();

// Ajaxify zone
Bleet::ajaxify('myZone')->url('/api/content')->open();
// ... content ...
Bleet::ajaxify()->close();
```

Widgets
-------

[](#widgets)

### Layout

[](#layout-1)

WidgetFactoryDescriptionHeader`Bleet::header()`Sticky headerFooter`Bleet::footer()`Page footerSidebar`Bleet::sidebar()`Navigation sidebarSidebarItem`Bleet::sidebarItem()`Sidebar entryBreadcrumb`Bleet::breadcrumb()`Breadcrumb trail### Forms

[](#forms)

WidgetFactoryDescriptionInput`Bleet::input()`Text inputTextarea`Bleet::textarea()`Multiline inputSelect`Bleet::select()`Native select with custom displayDropdown`Bleet::dropdown()`Advanced dropdown (search, multiple, tags)Checkbox`Bleet::checkbox()`Single checkboxCheckboxList`Bleet::checkboxList()`Checkbox groupRadio`Bleet::radio()`Single radioRadioList`Bleet::radioList()`Radio groupToggle`Bleet::toggle()`Toggle switchUpload`Bleet::upload()`File upload (Resumable.js)Elastic`Bleet::elastic()`Auto-render from JSON SchemaLabel`Bleet::label()`Form label### Feedback

[](#feedback-1)

WidgetFactoryDescriptionAlert`Bleet::alert()`Alert message (dismissible)Toast`Bleet::toast()`Toast notificationToaster`Bleet::toaster()`Toast containerModal`Bleet::modal()`AJAX modal dialogDrawer`Bleet::drawer()`AJAX side panelAjaxify`Bleet::ajaxify()`AJAX zone and triggers### Content

[](#content)

WidgetFactoryDescriptionCard`Bleet::card()`Container cardCardHeader`Bleet::cardHeader()`Colored card header with iconBadge`Bleet::badge()`Inline badgeButton`Bleet::button()`Action buttonButtonsBar`Bleet::buttonsBar()`Grouped action buttonsStatCard`Bleet::statCard()`Dashboard stat card with trendShortcutCard`Bleet::shortcutCard()`Clickable shortcut cardActivityFeed`Bleet::activityFeed()`Activity timelineEmptyState`Bleet::emptyState()`Placeholder with CTAProgress`Bleet::progress()`Progress barStep`Bleet::step()`Stepper / progress stepsPager`Bleet::pagination()`PaginationProfile`Bleet::profile()`User profile widget### Typography

[](#typography)

WidgetFactoryDescriptionH1–H6`Bleet::h1()` … `Bleet::h6()`HeadingsHr`Bleet::hr('Section')`Separator with labelParagraph`Bleet::p()`ParagraphAnchor`Bleet::a()`LinkStrong`Bleet::strong()`BoldEm`Bleet::em()`ItalicCode`Bleet::code()`Inline codePre`Bleet::pre()`Code blockBlockquote`Bleet::blockquote()`BlockquoteMark`Bleet::mark()`HighlightSmall`Bleet::small()`Small textDel / Ins`Bleet::del()` / `Bleet::ins()`Deleted / inserted textAbbr`Bleet::abbr()`AbbreviationLists`Bleet::ul()` / `Bleet::ol()` / `Bleet::dl()`Unordered, ordered, description listsImg`Bleet::img()`ImageFigure`Bleet::figure()`Image with captionFile`Bleet::file()`File linkSvg`Bleet::svg()` / `Bleet::icon()`Heroicons / custom SVGAurelia 2 Components
--------------------

[](#aurelia-2-components)

Interactive components live in `@blackcube/aurelia2-bleet`. They are driven by the PHP widgets — you rarely instantiate them directly.

### Custom elements

[](#custom-elements)

ComponentElementDescriptionAjaxify``AJAX content zoneDrawer``Side panelModal``Centered dialogToaster``Toast containerToast``Toast notificationQuill``Rich text editor### Custom attributes

[](#custom-attributes)

AttributeDescription`bleet-ajaxify-trigger`Triggers AJAX load`bleet-drawer-trigger`Opens a drawer`bleet-modal-trigger`Opens a modal`bleet-toaster-trigger`Triggers a toast`bleet-alert`Alert behavior`bleet-badge`Badge behavior`bleet-burger`Burger menu toggle`bleet-dropdown`Advanced dropdown`bleet-select`Custom select`bleet-menu`Menu behavior`bleet-pager`Pagination behavior`bleet-password`Password visibility toggle`bleet-profile`Profile widget behavior`bleet-tabs`Tab switching`bleet-upload`File upload (Resumable.js)Let's be honest
---------------

[](#lets-be-honest)

**This is an admin UIKit, not a design system.**

Bleet is built for Blackcube's back-office. It generates consistent, functional HTML. It is not a general-purpose component library.

**Aurelia 2 is required for interactivity.**

Modals, drawers, toasts, uploads, rich text — all need the Aurelia 2 companion package. Static widgets (buttons, cards, typography) work without it.

**Tight coupling with Yii.**

Widgets use `FormModelInterface`, `UrlGeneratorInterface`, `Html` from Yii. This is not framework-agnostic.

License
-------

[](#license)

BSD-3-Clause. See [LICENSE.md](LICENSE.md).

Author
------

[](#author)

Philippe Gaultier

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance93

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

37d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/545714?v=4)[pgaultier](/maintainers/pgaultier)[@pgaultier](https://github.com/pgaultier)

---

Top Contributors

[![pgaultier](https://avatars.githubusercontent.com/u/545714?v=4)](https://github.com/pgaultier "pgaultier (2 commits)")

---

Tags

yiiwidgetsui-componentsuikitform-helpersaurelia2

###  Code Quality

TestsCodeception

### Embed Badge

![Health badge](/badges/blackcube-yii-bleet/health.svg)

```
[![Health](https://phpackages.com/badges/blackcube-yii-bleet/health.svg)](https://phpackages.com/packages/blackcube-yii-bleet)
```

###  Alternatives

[yiisoft/yii-dataview

Yii data displaying widgets

4252.6k1](/packages/yiisoft-yii-dataview)[yiisoft/yii-middleware

Yii Middleware

21151.3k1](/packages/yiisoft-yii-middleware)[yiisoft/yii-view-renderer

PSR-7 compatible view renderer

1762.8k9](/packages/yiisoft-yii-view-renderer)[yiisoft/app

Yii3 web application template

35512.3k](/packages/yiisoft-app)[yiisoft/view

Yii View Rendering Library

57382.5k19](/packages/yiisoft-view)[yiisoft/form

The package helps with implementing data entry forms.

4797.1k1](/packages/yiisoft-form)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
