Pajak is an opinionated UI kit for dashboards, SaaS products and admin tools. Composable Blade components, accessible defaults, and a tight set of tokens you can trust. Drop it in via Composer and ship in an afternoon.
composer require pajak/ui
117 CSS custom properties - colors, type, spacing, radii, shadows - tuned for dense product UIs.
Buttons, cards, inputs, tables, accordions, steppers - all opinionated, all consistent, all yours to fork.
Focus rings, WCAG AA contrast, ARIA-ready markup. Built so you don't have to think about accessibility.
Pajak ships as a single Composer package. It registers a service provider, publishes its assets, and gives you the full kit on every Blade view.
Requires PHP 8.5+ and Laravel 13 or newer. The package is published on Packagist.
# Install the package composer require pajak/ui # Optional: lock to a major composer require pajak/ui:^1.0
Copies the stylesheet and Blade component templates into your app so you can customise anything you need.
php artisan vendor:publish --tag=pajak-ui-assets php artisan vendor:publish --tag=pajak-ui-views # optional
Drop both tags into your layout. The stylesheet provides all tokens and component styles; the script powers interactive components like selects, sliders, and file uploads.
<link rel="stylesheet" href="{{ asset('vendor/pajak/ui/assets/main.css') }}"> <script src="{{ asset('vendor/pajak/ui/assets/main.js') }}" defer type="module"></script>
Compose Blade components like Lego. Every component accepts standard props for variant, size, and any HTML attribute you'd expect.
<x-pajak::card> <x-slot:kicker>Q1 performance</x-slot:kicker> <x-slot:title>$24,820</x-slot:title> Monthly revenue <x-slot:footer> <x-pajak::badge :color="BadgeColor::Success">On track</x-pajak::badge> <x-pajak::button :variant="Variant::Primary">View report</x-pajak::button> </x-slot:footer> </x-pajak::card>
Every piece is a thin Blade wrapper around the tokens. Each one ships with one-click copy - paste straight into your view.
Every color, radius and space in Pajak comes from a single CSS custom property. Override them at the :root and the entire system re-themes.
:root { --color-primary-500: #10b981; /* swap brand */ --color-primary-700: #047857; --radius-md: 14px; /* softer corners */ --font-display: "Outfit", sans-serif; }
Stop reinventing buttons. Pull in Pajak, swap two tokens to match your brand, and focus on the things that actually matter - your data, your customers, your business logic.