misaf / vendra-support
Shared support classes for Vendra modules
v1.12.3
2026-08-22 21:14 UTC
Requires
- php: ^8.4
- filament/filament: ^5.6.8
- illuminate/console: ^13.0
- illuminate/database: ^13.0
- illuminate/support: ^13.0
- laravel/prompts: ^0.3.21
- symfony/intl: ^7.4 || ^8.0
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Shared support infrastructure used by every Vendra module.
Features
- Provider-neutral tenant resolution and tenant-awareness helpers
- Tenant-aware Eloquent traits, scopes, and migration helpers
- Optional tag, attribute, and currency integration contracts
- Provider-neutral subscription charging with idempotent operation results
- Request and queued-job context propagation primitives
- Shared tenant seeders and console commands
- Shared Filament clusters, navigation taxonomy, and concerns
IsActiveToggleform field andIsActiveToggleColumntable column for boolean active/inactive columnsIsActiveEntryinfolist entry,IsActiveConstraintquery-builder constraint, andIsActiveFilterternary filter (Active / Inactive) for reading and filtering the same columnsIsDefaultToggleform field,IsDefaultEntryinfolist entry,IsDefaultIconColumntable column,IsDefaultFilterternary filter, andIsDefaultConstraintquery-builder constraint for booleanis_defaultcolumnsIsPrimaryToggleform field andIsPrimaryIconColumntable column for booleanis_primarycolumnsObservers\Concerns\MaintainsSingleActiveDefaultobserver trait that keeps exactly one active row flaggedis_default, promotes the first active row (byordered, else by key) when the default goes away, and clears the flag on a soft-deleted defaultCreatedAtColumn,UpdatedAtColumn,DeletedAtColumn, andRowIndexColumntable columns for timestamps (Jalali under thefalocale) and the#row indexCreatedAtEntry,UpdatedAtEntry, andDateTimeEntryinfolist entries with the same timestamp formatting,IsActiveIconColumn, andPositionConstraint,NameConstraint, andSlugConstraintquery-builder constraintsSluggableNameInput,SlugInput, andDescriptionTextareaform fields,NameEntry,SlugEntry, andDescriptionEntryinfolist entries, andSlugColumnfor the common translated name/slug/description attributesNameColumnandDescriptionColumntable columns and theDescriptionRichEditorJSON rich-text field- Composable policy authorization, sandbox helpers, and shared events
The package binds null capability resolvers by default. Concrete providers can replace those bindings without coupling domain packages to their implementations.
Requirements
- PHP 8.4+
- Laravel 13
- Filament 5
misaf/filament-jalali
Installation
composer require misaf/vendra-support
The service provider is auto-registered.
Optionally publish the shared panel configuration:
php artisan vendor:publish --tag=vendra-support-config
Demo seeders use bundled JSON fixtures in production and when their declared factory classes are unavailable. Local monorepo development continues to use factories when they are autoloadable.
Testing
Run the package checks from the project root:
php artisan test --compact --testsuite=vendra-support
composer stan
License
MIT. See LICENSE.