Thanks to visit codestin.com
Credit goes to docs.wirekit.app

Skip to main content
WireKit
Copy for LLM

Dependencies

WireKit is transparent about every dependency it uses. All bundled dependencies are MIT-licensed.

PHP Dependencies (via Composer)

Runtime Requirements

  • PHP ^8.4
  • Laravel ^12.0 || ^13.0

Required Packages

Package Version License Purpose
illuminate/contracts ^12.0 || ^13.0 MIT Laravel contracts
illuminate/support ^12.0 || ^13.0 MIT Laravel support utilities
illuminate/view ^12.0 || ^13.0 MIT Blade rendering
livewire/livewire ^4.0 MIT Livewire component runtime — required for interactive components. Livewire v4 also bundles Alpine.js, so a separate Alpine install is NOT needed

Front-end Toolchain (you must install these in your app)

WireKit's components emit Tailwind utility classes and Alpine.js directives. Your application is responsible for the JS / CSS toolchain that processes them:

Package Install Why
tailwindcss (v4) npm install tailwindcss @tailwindcss/vite Required — components use Tailwind utility classes. The @tailwindcss/vite plugin must be registered in vite.config.js
alpinejs Already bundled by Livewire v4 (no install) Required — components use x-data / x-bind / x-on. If you're on Livewire v3 or no Livewire, install via npm install alpinejs and add import Alpine from 'alpinejs'; window.Alpine = Alpine; Alpine.start(); to resources/js/app.js

Optional (via suggest)

Package License Purpose
blade-ui-kit/blade-icons MIT Icon rendering engine (required for icon system)
blade-ui-kit/blade-heroicons MIT Icon preset: Heroicons — one glyph catalog shipped four times over, as mini, outline, solid and micro, so its file count is four times its glyph count
mallardduck/blade-lucide-icons MIT Icon preset: Lucide — one file per glyph, plus a separate lab glyph catalog beside it
codeat3/blade-phosphor-icons MIT Icon preset: Phosphor — one glyph catalog in six weights, so its file count is six times its glyph count
secondnetwork/blade-tabler-icons MIT Icon preset: Tabler — one file per glyph, outline and filled in the one catalog

The rows say how each package is packaged rather than how large it is. A file is a glyph in some of these catalogs and one style of a glyph in others, so the two numbers are not comparable — and every catalog grows on its own upstream release schedule, which this library does not pin. For a current size, read the preset you are considering at its source.

JavaScript Dependencies (Bundled)

These are compiled into dist/wirekit.js and the bundles built from the same sources (wirekit.esm.js, wirekit-alpine.js, wirekit-alpine.csp.js) — no npm install needed by the user. They are pre-compiled and included in the package distribution.

Package License Purpose
@floating-ui/dom MIT Dropdown / Popover / Tooltip / Menubar positioning
@floating-ui/core MIT Positioning core (transitive)
@floating-ui/utils MIT Positioning helpers (transitive)
focus-trap MIT Modal / Drawer / Command-palette focus management
tabbable MIT Focusable element detection (transitive)
@alpinejs/collapse MIT The height animation used by Collapsible, Sidebar groups and Tree View nodes

The two self-contained bundles additionally carry the Alpine they start: wirekit-alpine.js bundles alpinejs, and wirekit-alpine.csp.js bundles @alpinejs/csp (both MIT).

No version column, deliberately: a range written here says what was permitted when the table was last edited, and it drifted away from what npm installs. Every bundle's own license header names each package at the exact version it was compiled at, and that header is generated from the packages themselves — so it cannot say something the file does not contain.

dist/wirekit.core.js contains no external dependencies — it carries the chart and image-compare Alpine components and one directive the zero-JS form primitives need. Use the core bundle if you don't need overlay components (Dropdown, Tooltip, Modal, Drawer).

Stylesheet

WireKit ships one stylesheet in two forms. @wirekitStyles links the minified one; the readable one is published beside it so you can read what a token means and where it is used.

Bundle File Contains Size
Stylesheet dist/wirekit.min.css Every design token, component class and keyframe — the file @wirekitStyles links ~16 KB gzip (98 KB raw)
Stylesheet (readable) dist/wirekit.css The same rules, fully commented. Published for reading, never linked — the comments are two thirds of the file, so it is several times the minified one and grows whenever a rule gains an explanation. not size-tracked — see dist/README.md for the current figure

The comments are the design system's documentation The readable file explains why each token has the value it has, and the minified one is generated from it, so the two always agree. Only the minified one is on the critical path, and it is render-blocking, so what the reader waits for is the minified file rather than the readable one — a large multiple smaller on every uncached page-view.

JavaScript Bundles

WireKit ships several pre-built JavaScript bundles:

Bundle File Contains Size
Full dist/wirekit.js All Alpine components + Floating UI (incl. size middleware) + focus-trap + animation helper + reading-spine + reading-minimap (stripes + rendered modes + hover-preview/bookmark/heading-anchor/idle-fade extensions) + chart wireStream/annotations ~87 KB gzip (311 KB raw)
Core dist/wirekit.core.js Chart and image-compare Alpine components, plus the directive the zero-JS form primitives need — no third-party dependencies. Installs the empty overlay ROOT even so: a missing teleport target throws and takes the page down, where an unregistered component is merely inert ~7 KB gzip (22 KB raw)
ESM dist/wirekit.esm.js Every component as an ES module, each exported by name so your bundler can drop the ones you never render. The size on the right is all of them; one component is about 10 KB gzip — see Importing only the components you use ~90 KB gzip (318 KB raw)
ApexCharts adapter dist/wirekit-apex.js Optional opt-in: wirekitApexChart Alpine factory only — does NOT bundle ApexCharts itself; you install apexcharts via npm (see User-Installed Dependencies below). ApexCharts is non-MIT — see Chart docs for terms. ~8 KB gzip (25 KB raw)
Tiptap editor adapter dist/wirekit-tiptap.js Optional opt-in: wirekitEditor Alpine factory only — pairs with the Core bundle so you can add the rich-text <x-wirekit::editor> without loading the Full overlay bundle. Does NOT bundle Tiptap itself; you install @tiptap/core + @tiptap/starter-kit via npm and expose a window.tiptapEditor(config) factory (see Editor docs). The editor is ALSO in the Full bundle — load this ONLY alongside Core. ~3 KB gzip (8 KB raw)
Optimistic UI dist/wirekit-optimistic.js Optional opt-in: the wirekitOptimistic Alpine factory only — shows the result of an action before the server has confirmed it, then confirms or rolls back. Deliberately absent from the Full bundle: loading it is how you accept its announcement behavior, so applications that do not use it pay nothing. Load it alongside whichever bundle you already use. ~3 KB gzip (8 KB raw)
Theme script dist/wirekit-theme.js The script @wirekitThemeScript renders: it applies the reader's stored theme before the first paint. Written into the page by default, and loaded as this file when wirekit.theme.script is external, for a Content Security Policy that allows no inline script. Nothing to load by hand. ~1 KB gzip (1 KB raw)

The ESM bundle is for manual import in your own build pipeline (e.g. Vite). It is not selectable via the config — use import in your JavaScript instead.

Importing only the components you use

Importing the default export registers every component, which is the right trade when you render most of them:

// 1. The whole library — every component available, one line of setup.
import WireKit from '../../vendor/pushery/wirekit/dist/wirekit.esm.js';

Alpine.plugin(WireKit);

If your application only renders a handful, import those by name and hand them to register() instead. Your bundler drops everything you did not name:

// 1. `register` installs the shared runtime; the rest are the components you want.
//    The names are the same ones the Blade components emit into `x-data`.
import {
    register,
    wirekitDropdown,
    wirekitModal,
    wirekitTooltip,
} from '../../vendor/pushery/wirekit/dist/wirekit.esm.js';

// 2. Register just those three. Anything not passed here is never referenced,
//    so your bundler removes it from the output entirely.
Alpine.plugin((Alpine) => register(Alpine, { wirekitDropdown, wirekitModal, wirekitTooltip }));

Measured with esbuild (--bundle --minify --format=esm), for an application that imports and uses the result:

What you import Raw Gzip
The default export (every component) 235 KB 66 KB
Five components via register() 54 KB 18 KB
One component via register() 26 KB 10 KB

The shared runtime — overlay positioning, the teleport root and the collapse plugin — is included in every figure above, which is why one component costs far more than the whole divided by the number of components.

Your bundler has to be doing the dropping These numbers require a bundler with tree-shaking enabled — the default in Vite, Rollup and esbuild production builds. Load dist/wirekit.esm.js directly in the browser with a plain <script type="module"> and nothing is dropped: you download all of it, silently, with no warning from anything. Use the Full bundle for that case instead.

Choose your bundle in config/wirekit.php:

'scripts' => [
    'bundle' => 'full', // 'full', 'core' or 'csp'
],

User-Installed Dependencies

These are not bundled — install them separately if you need them:

Package Install Purpose
Chart.js npm install chart.js Required for <x-wirekit-chart> when charts.library = chartjs (the default).
ApexCharts npm install apexcharts Required for <x-wirekit-chart> when charts.library = apexcharts. Non-MIT — see Chart docs for license tiers (Community free under $2M USD revenue, Commercial above). Expose globally via window.ApexCharts = ApexCharts; and load dist/wirekit-apex.js after dist/wirekit.js in your layout.
Tiptap npm install @tiptap/core @tiptap/starter-kit Required for <x-wirekit::editor> (the rich-text editor). MIT core; optional Pro extensions (@tiptap-pro/*) are commercial. Expose a window.wirekitEditor(config) factory (the legacy window.tiptapEditor name still works as a deprecated alias) — see Editor docs. The editor falls back to a <textarea> if the engine is absent.
Icon packages composer require blade-ui-kit/blade-icons blade-ui-kit/blade-heroicons Required for <x-wirekit::icon>
QR code generator composer require bacon/bacon-qr-code Required for <x-wirekit::qr-code>, which renders the SVG server-side. Without it the component renders a labeled placeholder in the code's place — the same size box, the same role="img" accessible name — instead of the code itself, so a page carrying one still renders. wirekit:doctor reports it as optional-and-absent.
Syntax highlighter (optional) npm install highlight.js (or Shiki / Prism) Optional for <x-wirekit::code-block>. WireKit emits data-language="…" as a HOOK attribute on the <code> tag — your highlighter targets that selector. WireKit ships no highlighter to keep the bundle lean (most apps already have one or use Markdown-rendering libraries with built-in highlighting)

Wiring a syntax highlighter (optional)

<x-wirekit::code-block language="php"> emits <code data-language="php">. Three common highlighters work out of the box:

// resources/js/app.js — highlight.js example
import hljs from 'highlight.js/lib/core';
import php from 'highlight.js/lib/languages/php';
import 'highlight.js/styles/github-dark.css';
hljs.registerLanguage('php', php);
document.addEventListener('DOMContentLoaded', () => {
    document.querySelectorAll('code[data-language]').forEach((el) => hljs.highlightElement(el));
});

Same pattern for Prism.js (Prism.highlightAllUnder(document.body)) and Shiki (server-side highlighting via the Shiki API).

License Headers

All bundled JavaScript files open with a license header naming every third-party package compiled into that file, at the exact version it was compiled at, with its license. This ensures compliance even when the source files are not distributed.

The header is generated at build time and reads back what is actually installed, so it describes the file you are holding rather than the range that was permitted when it was built. It takes this shape:

/*! WireKit v<version> | MIT License | https://wirekit.app
 * Bundled:
 *   <package> <version> (<license>)
 *   … one line per package …
 */

The list differs per bundle — wirekit.core.js carries no third-party code at all and so carries no Bundled: block, while wirekit-alpine.js and wirekit-alpine.csp.js additionally name the Alpine distribution they bundle. Read the first lines of the file itself for the authoritative list:

head -12 vendor/pushery/wirekit/dist/wirekit.js

Was this page helpful?

Thank you for your feedback!

Voting requires cookies or local storage. What we store