{"version":3,"file":"dga-angular-lib.mjs","sources":["../../../projects/ui-library/src/lib/utils/cn.ts","../../../projects/ui-library/src/lib/components/button/button.component.ts","../../../projects/ui-library/src/lib/utils/focus-manager.directive.ts","../../../projects/ui-library/src/lib/ui-library.module.ts","../../../projects/ui-library/src/public-api.ts","../../../projects/ui-library/src/dga-angular-lib.ts"],"sourcesContent":["import { type ClassValue, clsx } from 'clsx';\r\n\r\n/**\r\n * Utility function to merge class names using clsx\r\n * Similar to dga/ui's cn utility\r\n */\r\nexport function cn(...inputs: ClassValue[]): string {\r\n  return clsx(inputs);\r\n}\r\n\r\n/**\r\n * Generate a unique ID for accessibility purposes\r\n */\r\nlet idCounter = 0;\r\nexport function generateId(prefix: string = 'dga'): string {\r\n  return `${prefix}-${++idCounter}`;\r\n}\r\n","import { \r\n  Component, \r\n  Input, \r\n  Output, \r\n  EventEmitter, \r\n  ChangeDetectionStrategy,\r\n  ViewEncapsulation,\r\n  ElementRef,\r\n  OnInit\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { cva, type VariantProps } from 'class-variance-authority';\r\nimport { cn } from '../../utils/cn';\r\n\r\nconst buttonVariants = cva(\r\n  'inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',\r\n  {\r\n    variants: {\r\n      variant: {\r\n        default: 'bg-primary text-primary-foreground hover:bg-primary/90',\r\n        destructive: 'bg-destructive text-destructive-foreground hover:bg-destructive/90',\r\n        outline: 'border border-input bg-background hover:bg-accent hover:text-accent-foreground',\r\n        secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80',\r\n        ghost: 'hover:bg-accent hover:text-accent-foreground',\r\n        link: 'text-primary underline-offset-4 hover:underline'\r\n      },\r\n      size: {\r\n        default: 'h-10 px-4 py-2',\r\n        sm: 'h-9 rounded-md px-3',\r\n        lg: 'h-11 rounded-md px-8',\r\n        icon: 'h-10 w-10'\r\n      }\r\n    },\r\n    defaultVariants: {\r\n      variant: 'default',\r\n      size: 'default'\r\n    }\r\n  }\r\n);\r\n\r\nexport interface ButtonProps extends VariantProps<typeof buttonVariants> {\r\n  disabled?: boolean;\r\n  type?: 'button' | 'submit' | 'reset';\r\n  additionalClasses?: string;\r\n}\r\n\r\n@Component({\r\n  selector: 'dga-button',\r\n  standalone: true,\r\n  imports: [CommonModule],\r\n  template: `\r\n    <button\r\n      [class]=\"computedClasses\"\r\n      [disabled]=\"disabled\"\r\n      [type]=\"type\"\r\n      (click)=\"handleClick($event)\"\r\n      [attr.aria-disabled]=\"disabled\"\r\n      #buttonElement\r\n    >\r\n      <ng-content></ng-content>\r\n    </button>\r\n  `,\r\n  styleUrls: ['./button.component.scss'],\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None\r\n})\r\nexport class ButtonComponent implements OnInit, ButtonProps {\r\n  @Input() variant: ButtonProps['variant'] = 'default';\r\n  @Input() size: ButtonProps['size'] = 'default';\r\n  @Input() disabled: boolean = false;\r\n  @Input() type: ButtonProps['type'] = 'button';\r\n  @Input() additionalClasses: string = '';\r\n  \r\n  @Output() clicked = new EventEmitter<MouseEvent>();\r\n  \r\n  constructor(private elementRef: ElementRef) {}\r\n  \r\n  ngOnInit(): void {\r\n    // Add any initialization logic here\r\n  }\r\n  \r\n  get computedClasses(): string {\r\n    return cn(\r\n      buttonVariants({ variant: this.variant, size: this.size }),\r\n      this.additionalClasses\r\n    );\r\n  }\r\n  \r\n  handleClick(event: MouseEvent): void {\r\n    if (!this.disabled) {\r\n      this.clicked.emit(event);\r\n    }\r\n  }\r\n  \r\n  focus(): void {\r\n    this.elementRef.nativeElement.querySelector('button')?.focus();\r\n  }\r\n}\r\n","import { Directive, ElementRef, Input, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\n\r\n/**\r\n * Focus management directive for accessibility\r\n * Helps manage focus within components\r\n */\r\n@Directive({\r\n  selector: '[dgaFocusManager]',\r\n  standalone: true\r\n})\r\nexport class FocusManagerDirective implements OnInit, OnDestroy {\r\n  @Input() focusOnInit: boolean = false;\r\n  @Input() trapFocus: boolean = false;\r\n  \r\n  private destroy$ = new Subject<void>();\r\n  private focusableElements: HTMLElement[] = [];\r\n  \r\n  constructor(private elementRef: ElementRef<HTMLElement>) {}\r\n  \r\n  ngOnInit(): void {\r\n    if (this.focusOnInit) {\r\n      setTimeout(() => this.focus());\r\n    }\r\n    \r\n    if (this.trapFocus) {\r\n      this.setupFocusTrap();\r\n    }\r\n  }\r\n  \r\n  ngOnDestroy(): void {\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n  \r\n  focus(): void {\r\n    this.elementRef.nativeElement.focus();\r\n  }\r\n  \r\n  private setupFocusTrap(): void {\r\n    const element = this.elementRef.nativeElement;\r\n    \r\n    // Find all focusable elements\r\n    this.updateFocusableElements();\r\n    \r\n    element.addEventListener('keydown', this.handleKeydown.bind(this));\r\n  }\r\n  \r\n  private updateFocusableElements(): void {\r\n    const element = this.elementRef.nativeElement;\r\n    const focusableSelectors = [\r\n      'button:not([disabled])',\r\n      'input:not([disabled])',\r\n      'select:not([disabled])',\r\n      'textarea:not([disabled])',\r\n      'a[href]',\r\n      '[tabindex]:not([tabindex=\"-1\"])'\r\n    ];\r\n    \r\n    this.focusableElements = Array.from(\r\n      element.querySelectorAll(focusableSelectors.join(','))\r\n    ) as HTMLElement[];\r\n  }\r\n  \r\n  private handleKeydown(event: KeyboardEvent): void {\r\n    if (event.key !== 'Tab') return;\r\n    \r\n    const firstElement = this.focusableElements[0];\r\n    const lastElement = this.focusableElements[this.focusableElements.length - 1];\r\n    \r\n    if (event.shiftKey && document.activeElement === firstElement) {\r\n      event.preventDefault();\r\n      lastElement?.focus();\r\n    } else if (!event.shiftKey && document.activeElement === lastElement) {\r\n      event.preventDefault();\r\n      firstElement?.focus();\r\n    }\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { ButtonComponent } from './components/button';\r\nimport { FocusManagerDirective } from './utils/focus-manager.directive';\r\n\r\n// Optional module for non-standalone usage\r\n@NgModule({\r\n  imports: [\r\n    ButtonComponent,\r\n    FocusManagerDirective\r\n  ],\r\n  exports: [\r\n    ButtonComponent,\r\n    FocusManagerDirective\r\n  ]\r\n})\r\nexport class UiLibraryModule { }\r\n","/*\r\n * Public API Surface of ui-library\r\n */\r\n\r\n// Components\r\nexport * from './lib/components/button';\r\n\r\n// Utils\r\nexport * from './lib/utils/cn';\r\nexport * from './lib/utils/focus-manager.directive';\r\n\r\n// Main library module (optional for standalone components)\r\nexport * from './lib/ui-library.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}