Sigta UI · Kit

Installation

How to install Sigta UI in a production Laravel app. The package is proprietary and not published to Packagist, so composer require sigta/ui alone will fail — you must point Composer at a private VCS repository first. This page covers that path end to end. For the local-dev quickstart, see /docs.

Requirements

PHP ^8.2
Laravel ^12.0 | ^13.0
Livewire ^4.0
Tailwind CSS v4  (your app's build, via @tailwindcss/vite)

01 · Private VCS repository

Add a repositories entry pointing at the private Git remote. Without this, Composer has no way to find the package and composer require exits with “could not be found in any version”.

SSH (recommended for dev machines)

{
    "repositories": [{
        "type": "vcs",
        "url": "git@github.com:sigta-hq/ui.git"
    }]
}

HTTPS (CI / deploy runners)

{
    "repositories": [{
        "type": "vcs",
        "url": "https://github.com/sigta-hq/ui.git"
    }]
}

In context — sits alongside require

{
    "require": {
        "sigta/ui": "dev-main"
    },
    "repositories": [{
        "type": "vcs",
        "url": "git@github.com:sigta-hq/ui.git"
    }]
}

02 · Composer authentication

Composer must authenticate to read the private repository. Use a GitHub personal access token (with repo scope) for both HTTPS and CI; SSH keys work on machines that already have them.

Via the CLI

# HTTPS + token (CI-friendly, no SSH key needed):
composer config --global github-oauth.github.com ghp_xxxxxxxxxxxxxxxxxxxx

# …or, per-project (writes auth.json next to composer.json — keep it out of git):
composer config github-oauth.github.com ghp_xxxxxxxxxxxxxxxxxxxx

Or commit-free auth.json (gitignored)

{
    "github-oauth": {
        "github.com": "ghp_xxxxxxxxxxxxxxxxxxxx"
    }
}
CI & deploy runners. Never commit the token. Inject it via the COMPOSER_AUTH environment variable — Composer reads it at install time.
# CI / deploy runner — provide the same auth without committing auth.json.
# Composer reads this JSON at install time. URL-encode the JSON value.
export COMPOSER_AUTH='{"github-oauth":{"github.com":"ghp_xxx"}}'

03 · Require & install

Pin to dev-main — the repository has no tagged releases yet, so a version constraint like ^1.0 resolves to nothing. Once the package is tagged, switch to a stable constraint.

Install

composer require sigta/ui:dev-main
Only if minimum-stability blocks dev-main. dev-main requires a permissive stability setting. Run this only if the install above errors on stability.
# Only if your app's minimum-stability is not already "dev" or lower.
composer config minimum-stability dev
composer config prefer-stable true

The service provider (SigtaServiceProvider) is auto-discovered via extra.laravel.providers — no manual registration in bootstrap/providers.php.

04 · CSS entry

Import the Sigta stylesheet into your app's CSS entry, and add @source so Tailwind v4 scans the package's views for class names to keep.

Drop-in Sigta brand

/* resources/css/app.css */
@import "tailwindcss";
@import "../../vendor/sigta/ui/resources/css/sigta.css";   /* core + Sigta brand */
@source "../../vendor/sigta/ui/resources/views";

Or: core + your own theme

/* Re-brand: import core.css (structure) + your own theme values. */
@import "tailwindcss";
@import "../../vendor/sigta/ui/resources/css/core.css";
@import "./brand.css";        /* your :root{--sigta-*} + @font-face */
@source "../../vendor/sigta/ui/resources/views";

Re-branding guidance and the full token contract live at /docs#theming and the theme-switch kit page.

05 · Layout wiring

Add in <head> (after Livewire styles). It emits a <script> tag pointing at the route-served bundle — no publish step. Add too, only if you use <sigta:editor>.

Your app layout

{{-- resources/views/components/layouts/app.blade.php --}}
<head>
    …
    @vite(['resources/css/app.css', 'resources/js/app.js'])
    @livewireStyles
    @sigtaScripts   {{-- + @sigtaEditorScripts if you use <x-sigta::editor> --}}
</head>
<body>
    …
    @livewireScripts
</body>

Components are then available as <sigta:button> or <x-sigta::button> — both compile identically.

06 · Publish fonts

@font-face URLs must resolve under public/, so fonts are published rather than route-served. Run this once per deploy.

Publish

php artisan sigta:install --only=fonts

07 · Build assets

Vite compiles your app's CSS (Tailwind scans the package views via @source). The package's own JavaScript ships pre-built in dist/ and is served by route — it needs no build step on your side.

Build

npm run build
No JS publish step. dist/sigta.js and dist/sigta-editor.js are committed to the repository, so the route-served bundle works out of the box. Make sure dist/ is present after composer install — it is, because the files ship in the package.

08 · Production deploy sequence

A typical release runbook. The private VCS repo + auth must be reachable from wherever this runs.

Release commands

composer install --no-dev --prefer-dist --optimize-autoloader
php artisan sigta:install
php artisan route:cache
php artisan view:cache
npm ci && npm run build
Cache the routes. calls route() to emit the asset URL. php artisan route:cache is recommended in production — and the Sigta asset routes are registered by the service provider, so they're included.

For the API surface, every component variant, and the re-branding workflow, continue to /docs or browse the component kit.

09 · LLM agent context

If this app will be built or edited by an LLM coding agent (ZCode, Claude Code, Cursor, etc.), publish the Sigta context files so the agent reads the rules instead of guessing. The same command handles fonts too — run it once and re-run it to update.

One command, fully idempotent. sigta:install mirrors fonts, writes sigta-ui.md + sigta-components.md to the project root, and adds a reference line to AGENTS.md (creating it if absent, appending if present). Re-running is always safe — it overwrites the package-owned files and detects the existing AGENTS.md reference without duplicating it.

Publish & sync

php artisan sigta:install

The agent then reads AGENTS.md → follows the pointer to sigta-ui.md (the rules) → scans sigta-components.md (the full API) → writes <sigta:button> instead of <button class="bg-blue-600">.

Auto-sync on every composer update

Because sigta:install is idempotent, you can wire it into your composer.json so every composer install / update re-syncs the context. Then no one has to remember to run it by hand.

{
    "scripts": {
        "post-autoload-dump": [
            "@php artisan package:discover --ansi",
            "@php artisan sigta:install --ansi"
        ]
    }
}