UNPKG

@dishamahajan36/ui-components

Version:

A collection of reusable Angular UI components built with Spartan UI and Tailwind CSS.

135 lines (127 loc) 6.93 kB
import * as i0 from '@angular/core'; import { InjectionToken, inject, signal, input, computed, Directive, NgModule, output, Component } from '@angular/core'; import { hlm } from '@spartan-ng/brain/core'; import { cva } from 'class-variance-authority'; const defaultConfig = { variant: 'default', size: 'default', }; const BrnButtonConfigToken = new InjectionToken('BrnButtonConfig'); function provideBrnButtonConfig(config) { return { provide: BrnButtonConfigToken, useValue: { ...defaultConfig, ...config } }; } function injectBrnButtonConfig() { return inject(BrnButtonConfigToken, { optional: true }) ?? defaultConfig; } const buttonVariants = cva('inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background', { variants: { variant: { default: 'bg-primary text-primary-foreground hover:bg-primary/90', destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90', outline: 'border border-input hover:bg-accent hover:text-accent-foreground', secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80', ghost: 'hover:bg-accent hover:text-accent-foreground', link: 'underline-offset-4 hover:underline text-primary', }, size: { default: 'h-10 py-2 px-4', sm: 'h-9 px-3 rounded-md', lg: 'h-11 px-8 rounded-md', icon: 'h-10 w-10', }, }, defaultVariants: { variant: 'default', size: 'default', }, }); class HlmButtonDirective { _config = injectBrnButtonConfig(); _additionalClasses = signal(''); userClass = input('', { alias: 'class' }); _computedClass = computed(() => hlm(buttonVariants({ variant: this.variant(), size: this.size() }), this.userClass(), this._additionalClasses())); variant = input(this._config.variant); size = input(this._config.size); setClass(classes) { this._additionalClasses.set(classes); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HlmButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.13", type: HlmButtonDirective, isStandalone: true, selector: "[hlmBtn]", inputs: { userClass: { classPropertyName: "userClass", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "_computedClass()" } }, exportAs: ["hlmBtn"], ngImport: i0 }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HlmButtonDirective, decorators: [{ type: Directive, args: [{ selector: '[hlmBtn]', standalone: true, exportAs: 'hlmBtn', host: { '[class]': '_computedClass()', }, }] }] }); class HlmButtonModule { static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HlmButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.13", ngImport: i0, type: HlmButtonModule, imports: [HlmButtonDirective], exports: [HlmButtonDirective] }); static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HlmButtonModule }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: HlmButtonModule, decorators: [{ type: NgModule, args: [{ imports: [HlmButtonDirective], exports: [HlmButtonDirective], }] }] }); class ButtonComponent { // Input properties variant = input('default'); size = input('default'); disabled = input(false); type = input('button'); customClass = input(''); // Output events clicked = output(); handleClick(event) { if (!this.disabled()) { this.clicked.emit(event); } } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.13", type: ButtonComponent, isStandalone: true, selector: "ui-button", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, customClass: { classPropertyName: "customClass", publicName: "customClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { clicked: "clicked" }, ngImport: i0, template: ` <button hlmBtn [variant]="variant()" [size]="size()" [disabled]="disabled()" [class]="customClass()" (click)="handleClick($event)" [type]="type()" > <ng-content></ng-content> </button> `, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: HlmButtonDirective, selector: "[hlmBtn]", inputs: ["class", "variant", "size"], exportAs: ["hlmBtn"] }] }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: ButtonComponent, decorators: [{ type: Component, args: [{ selector: 'ui-button', standalone: true, imports: [HlmButtonDirective], template: ` <button hlmBtn [variant]="variant()" [size]="size()" [disabled]="disabled()" [class]="customClass()" (click)="handleClick($event)" [type]="type()" > <ng-content></ng-content> </button> ` }] }] }); /* * Public API Surface of ui-components */ // Export from index files /** * Generated bundle index. Do not edit. */ export { ButtonComponent, HlmButtonDirective, HlmButtonModule, buttonVariants, injectBrnButtonConfig, provideBrnButtonConfig }; //# sourceMappingURL=dishamahajan36-ui-components.mjs.map