{"version":3,"file":"ngx-core-components-buttons.mjs","sources":["../../../projects/ngx-core-components/buttons/button/button.component.ts","../../../projects/ngx-core-components/buttons/button-group/button-group.component.ts","../../../projects/ngx-core-components/buttons/chip/chip.component.ts","../../../projects/ngx-core-components/buttons/split-button/split-button.component.ts","../../../projects/ngx-core-components/buttons/dropdown-button/dropdown-button.component.ts","../../../projects/ngx-core-components/buttons/speed-dial/speed-dial.component.ts","../../../projects/ngx-core-components/buttons/public-api.ts","../../../projects/ngx-core-components/buttons/ngx-core-components-buttons.ts"],"sourcesContent":["import { Component, input, output, signal } from '@angular/core';\n\nexport type ButtonVariant = 'primary' | 'secondary' | 'danger' | 'ghost' | 'link' | 'success' | 'warning' | 'info';\nexport type ButtonSize = 'sm' | 'md' | 'lg';\nexport type ButtonShape = 'rectangle' | 'rounded' | 'pill' | 'square';\n\n@Component({\n  selector: 'ngx-button',\n  standalone: true,\n  template: `\n    <button\n      class=\"ngx-btn\"\n      [class]=\"btnClass()\"\n      [class.btn-loading]=\"loading()\"\n      [class.btn-block]=\"fullWidth()\"\n      [class.btn-selected]=\"selected()\"\n      [type]=\"type()\"\n      [disabled]=\"disabled() || loading()\"\n      [attr.aria-label]=\"ariaLabel() || null\"\n      [attr.aria-busy]=\"loading() ? 'true' : null\"\n      [attr.aria-disabled]=\"disabled() || loading() ? 'true' : null\"\n      (click)=\"onButtonClick($event)\"\n    >\n      @if (ripple()) {\n        <span class=\"btn-ripple-container\" aria-hidden=\"true\">\n          @for (r of ripples(); track r.id) {\n            <span class=\"btn-ripple\" [style.left.px]=\"r.x\" [style.top.px]=\"r.y\"></span>\n          }\n        </span>\n      }\n\n      @if (loading()) {\n        <span class=\"btn-spinner-container\" aria-hidden=\"true\">\n          <span class=\"btn-spinner\"></span>\n        </span>\n      } @else {\n        <ng-content select=\"[prefix]\" />\n        @if (prefixIcon()) {\n          @if (isClassIcon(prefixIcon())) {\n            <span class=\"btn-icon\" [class]=\"prefixIcon()\" aria-hidden=\"true\"></span>\n          } @else {\n            <span class=\"btn-icon\" aria-hidden=\"true\">{{ prefixIcon() }}</span>\n          }\n        }\n      }\n      <span class=\"btn-text\"><ng-content /></span>\n      @if (suffixIcon()) {\n        @if (isClassIcon(suffixIcon())) {\n          <span class=\"btn-icon btn-icon-suffix\" [class]=\"suffixIcon()\" aria-hidden=\"true\"></span>\n        } @else {\n          <span class=\"btn-icon btn-icon-suffix\" aria-hidden=\"true\">{{ suffixIcon() }}</span>\n        }\n      }\n      <ng-content select=\"[suffix]\" />\n\n      @if (badge()) {\n        <span class=\"btn-badge btn-badge-{{ badgeVariant() }} btn-badge-{{ badgePosition() }}\">\n          {{ badge() }}\n        </span>\n      }\n    </button>\n  `,\n  styles: [`\n    :host {\n      display: inline-block;\n      --ngx-btn-focus-ring-bg: #ffffff;\n      position: relative;\n    }\n    \n    :host-context(body.dark),\n    :host-context(.dark),\n    :host-context(.dark-theme) {\n      --ngx-btn-focus-ring-bg: #0f172a;\n    }\n\n    .ngx-btn {\n      display: inline-flex; align-items: center; justify-content: center; gap: 6px;\n      font-family: inherit; font-weight: 550; cursor: pointer;\n      background: var(--ngx-btn-bg);\n      color: var(--ngx-btn-color);\n      border: 1px solid var(--ngx-btn-border);\n      box-shadow: var(--ngx-btn-shadow);\n      transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); outline: none; text-decoration: none; white-space: nowrap;\n      position: relative; overflow: visible;\n      user-select: none;\n    }\n    \n    .ngx-btn:hover:not(:disabled) {\n      background: var(--ngx-btn-hover-bg);\n      box-shadow: var(--ngx-btn-hover-shadow);\n      transform: translateY(-2px);\n    }\n    \n    .ngx-btn:active:not(:disabled) {\n      background: var(--ngx-btn-active-bg);\n      box-shadow: var(--ngx-btn-active-shadow);\n      transform: translateY(1px) scale(0.97);\n    }\n    \n    .ngx-btn:focus-visible {\n      outline: none;\n      box-shadow: 0 0 0 2px var(--ngx-btn-focus-ring-bg), 0 0 0 4px var(--ngx-btn-focus-ring-color);\n    }\n    \n    .ngx-btn:disabled {\n      opacity: 0.6;\n      cursor: not-allowed;\n      transform: none !important;\n      box-shadow: none !important;\n    }\n\n    .ngx-btn.btn-block {\n      width: 100%;\n      display: flex;\n    }\n\n    .ngx-btn.btn-selected {\n      background: var(--ngx-btn-active-bg) !important;\n      box-shadow: var(--ngx-btn-active-shadow) !important;\n      border-color: currentColor !important;\n    }\n\n    /* Sizes */\n    .ngx-btn-sm { font-size: 12px; padding: 5px 12px; border-radius: var(--ngx-btn-radius, 6px); }\n    .ngx-btn-md { font-size: 14px; padding: 8px 18px; border-radius: var(--ngx-btn-radius, 8px); }\n    .ngx-btn-lg { font-size: 16px; padding: 10px 22px; border-radius: var(--ngx-btn-radius, 12px); }\n\n    /* Shapes */\n    .ngx-btn-pill { border-radius: 999px !important; }\n    .ngx-btn-square {\n      padding-left: 0 !important;\n      padding-right: 0 !important;\n      aspect-ratio: 1;\n      justify-content: center;\n    }\n    .ngx-btn-rounded { border-radius: 8px !important; }\n\n    /* Variants */\n    \n    /* Primary */\n    .ngx-btn-primary {\n      --ngx-btn-bg: linear-gradient(135deg, #4f46e5 0%, #6366f1 100%);\n      --ngx-btn-hover-bg: linear-gradient(135deg, #4338ca 0%, #4f46e5 100%);\n      --ngx-btn-active-bg: linear-gradient(135deg, #3730a3 0%, #4338ca 100%);\n      --ngx-btn-color: #ffffff;\n      --ngx-btn-border: transparent;\n      --ngx-btn-shadow: 0 4px 10px rgba(79, 70, 229, 0.2);\n      --ngx-btn-hover-shadow: 0 6px 16px rgba(79, 70, 229, 0.3);\n      --ngx-btn-active-shadow: 0 2px 6px rgba(79, 70, 229, 0.15);\n      --ngx-btn-focus-ring-color: #4f46e5;\n    }\n    \n    /* Secondary */\n    .ngx-btn-secondary {\n      --ngx-btn-bg: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);\n      --ngx-btn-hover-bg: linear-gradient(135deg, #e2e8f0 0%, #cbd5e1 100%);\n      --ngx-btn-active-bg: linear-gradient(135deg, #cbd5e1 0%, #94a3b8 100%);\n      --ngx-btn-color: #0f172a;\n      --ngx-btn-border: #cbd5e1;\n      --ngx-btn-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n      --ngx-btn-hover-shadow: 0 4px 8px rgba(0, 0, 0, 0.08);\n      --ngx-btn-active-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);\n      --ngx-btn-focus-ring-color: #64748b;\n    }\n    :host-context(body.dark) .ngx-btn-secondary,\n    :host-context(.dark) .ngx-btn-secondary,\n    :host-context(.dark-theme) .ngx-btn-secondary {\n      --ngx-btn-bg: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);\n      --ngx-btn-hover-bg: linear-gradient(135deg, #334155 0%, #1e293b 100%);\n      --ngx-btn-active-bg: linear-gradient(135deg, #475569 0%, #334155 100%);\n      --ngx-btn-color: #f8fafc;\n      --ngx-btn-border: #334155;\n      --ngx-btn-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n      --ngx-btn-hover-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);\n      --ngx-btn-active-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n      --ngx-btn-focus-ring-color: #94a3b8;\n    }\n\n    /* Danger */\n    .ngx-btn-danger {\n      --ngx-btn-bg: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);\n      --ngx-btn-hover-bg: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%);\n      --ngx-btn-active-bg: linear-gradient(135deg, #b91c1c 0%, #991b1b 100%);\n      --ngx-btn-color: #ffffff;\n      --ngx-btn-border: transparent;\n      --ngx-btn-shadow: 0 4px 10px rgba(239, 68, 68, 0.2);\n      --ngx-btn-hover-shadow: 0 6px 16px rgba(239, 68, 68, 0.3);\n      --ngx-btn-active-shadow: 0 2px 6px rgba(239, 68, 68, 0.15);\n      --ngx-btn-focus-ring-color: #ef4444;\n    }\n\n    /* Success */\n    .ngx-btn-success {\n      --ngx-btn-bg: linear-gradient(135deg, #10b981 0%, #059669 100%);\n      --ngx-btn-hover-bg: linear-gradient(135deg, #059669 0%, #047857 100%);\n      --ngx-btn-active-bg: linear-gradient(135deg, #047857 0%, #065f46 100%);\n      --ngx-btn-color: #ffffff;\n      --ngx-btn-border: transparent;\n      --ngx-btn-shadow: 0 4px 10px rgba(16, 185, 129, 0.2);\n      --ngx-btn-hover-shadow: 0 6px 16px rgba(16, 185, 129, 0.3);\n      --ngx-btn-active-shadow: 0 2px 6px rgba(16, 185, 129, 0.15);\n      --ngx-btn-focus-ring-color: #10b981;\n    }\n\n    /* Warning */\n    .ngx-btn-warning {\n      --ngx-btn-bg: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n      --ngx-btn-hover-bg: linear-gradient(135deg, #d97706 0%, #b45309 100%);\n      --ngx-btn-active-bg: linear-gradient(135deg, #b45309 0%, #92400e 100%);\n      --ngx-btn-color: #ffffff;\n      --ngx-btn-border: transparent;\n      --ngx-btn-shadow: 0 4px 10px rgba(245, 158, 11, 0.2);\n      --ngx-btn-hover-shadow: 0 6px 16px rgba(245, 158, 11, 0.3);\n      --ngx-btn-active-shadow: 0 2px 6px rgba(245, 158, 11, 0.15);\n      --ngx-btn-focus-ring-color: #f59e0b;\n    }\n\n    /* Info */\n    .ngx-btn-info {\n      --ngx-btn-bg: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);\n      --ngx-btn-hover-bg: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%);\n      --ngx-btn-active-bg: linear-gradient(135deg, #1d4ed8 0%, #1e40af 100%);\n      --ngx-btn-color: #ffffff;\n      --ngx-btn-border: transparent;\n      --ngx-btn-shadow: 0 4px 10px rgba(59, 130, 246, 0.2);\n      --ngx-btn-hover-shadow: 0 6px 16px rgba(59, 130, 246, 0.3);\n      --ngx-btn-active-shadow: 0 2px 6px rgba(59, 130, 246, 0.15);\n      --ngx-btn-focus-ring-color: #3b82f6;\n    }\n\n    /* Ghost */\n    .ngx-btn-ghost {\n      --ngx-btn-bg: transparent;\n      --ngx-btn-hover-bg: rgba(79, 70, 229, 0.08);\n      --ngx-btn-active-bg: rgba(79, 70, 229, 0.15);\n      --ngx-btn-color: var(--ngx-btn-ghost-color, #4f46e5);\n      --ngx-btn-border: var(--ngx-btn-ghost-border, #4f46e5);\n      --ngx-btn-shadow: none;\n      --ngx-btn-hover-shadow: none;\n      --ngx-btn-active-shadow: none;\n      --ngx-btn-focus-ring-color: #4f46e5;\n    }\n    :host-context(body.dark) .ngx-btn-ghost,\n    :host-context(.dark) .ngx-btn-ghost,\n    :host-context(.dark-theme) .ngx-btn-ghost {\n      --ngx-btn-hover-bg: rgba(129, 140, 248, 0.1);\n      --ngx-btn-active-bg: rgba(129, 140, 248, 0.2);\n      --ngx-btn-color: #818cf8;\n      --ngx-btn-border: #818cf8;\n      --ngx-btn-focus-ring-color: #818cf8;\n    }\n\n    /* Link */\n    .ngx-btn-link {\n      --ngx-btn-bg: transparent;\n      --ngx-btn-hover-bg: transparent;\n      --ngx-btn-active-bg: transparent;\n      --ngx-btn-color: var(--ngx-btn-link-color, #4f46e5);\n      --ngx-btn-border: transparent;\n      --ngx-btn-shadow: none;\n      --ngx-btn-hover-shadow: none;\n      --ngx-btn-active-shadow: none;\n      --ngx-btn-focus-ring-color: #4f46e5;\n    }\n    .ngx-btn-link:hover:not(:disabled) {\n      color: var(--ngx-btn-link-hover, #4338ca);\n      text-decoration: underline;\n      transform: none !important;\n    }\n    .ngx-btn-link:active:not(:disabled) {\n      transform: scale(0.97) !important;\n    }\n    :host-context(body.dark) .ngx-btn-link,\n    :host-context(.dark) .ngx-btn-link,\n    :host-context(.dark-theme) .ngx-btn-link {\n      --ngx-btn-color: #818cf8;\n      --ngx-btn-focus-ring-color: #818cf8;\n    }\n\n    /* Ripple Effect style */\n    .btn-ripple-container {\n      position: absolute;\n      top: 0; left: 0; right: 0; bottom: 0;\n      overflow: hidden;\n      pointer-events: none;\n      border-radius: inherit;\n    }\n    .btn-ripple {\n      position: absolute;\n      border-radius: 50%;\n      transform: translate(-50%, -50%) scale(0);\n      width: 80px;\n      height: 80px;\n      background: currentColor;\n      opacity: 0.15;\n      pointer-events: none;\n      animation: ripple-effect 0.6s cubic-bezier(0.1, 0.8, 0.3, 1);\n    }\n    @keyframes ripple-effect {\n      to {\n        transform: translate(-50%, -50%) scale(4);\n        opacity: 0;\n      }\n    }\n\n    /* Badge styles */\n    .btn-badge {\n      display: inline-flex; align-items: center; justify-content: center;\n      font-size: 10px; font-weight: 700; line-height: 1;\n      border-radius: 999px;\n      padding: 3px 6px;\n      min-width: 16px; height: 16px;\n      box-sizing: border-box;\n      pointer-events: none;\n    }\n    .btn-badge-danger { background: #ef4444; color: #ffffff; }\n    .btn-badge-warning { background: #f59e0b; color: #ffffff; }\n    .btn-badge-success { background: #10b981; color: #ffffff; }\n    .btn-badge-info { background: #3b82f6; color: #ffffff; }\n    \n    .btn-badge-inline {\n      margin-left: 6px;\n      flex-shrink: 0;\n    }\n    .btn-badge-top-right {\n      position: absolute;\n      top: -4px;\n      right: -4px;\n      transform: translate(25%, -25%);\n      border: 1.5px solid var(--ngx-btn-focus-ring-bg, #ffffff);\n      box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15);\n      z-index: 10;\n    }\n\n    /* Loading spinner & animations */\n    .btn-spinner-container {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      overflow: hidden;\n      width: 14px;\n      height: 14px;\n      animation: spinner-enter 0.25s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n      flex-shrink: 0;\n    }\n    .btn-spinner {\n      width: 14px; height: 14px; border: 2px solid currentColor; border-top-color: transparent;\n      border-radius: 50%; animation: btn-spin 0.6s linear infinite;\n      flex-shrink: 0;\n    }\n    @keyframes spinner-enter {\n      from { width: 0; opacity: 0; transform: scale(0.5); }\n      to { width: 14px; opacity: 1; transform: scale(1); }\n    }\n    @keyframes btn-spin { to { transform: rotate(360deg); } }\n    .btn-icon { font-size: 0.9em; }\n  `]\n})\nexport class ButtonComponent {\n  variant = input<ButtonVariant>('primary');\n  size = input<ButtonSize>('md');\n  shape = input<ButtonShape>('rectangle');\n  type = input<'button' | 'submit' | 'reset'>('button');\n  disabled = input(false);\n  loading = input(false);\n  prefixIcon = input<string>('');\n  suffixIcon = input<string>('');\n  ariaLabel = input<string>('');\n  \n  // Enterprise features\n  ripple = input(true);\n  fullWidth = input(false);\n  selected = input(false);\n  badge = input<string | number>('');\n  badgePosition = input<'top-right' | 'inline'>('top-right');\n  badgeVariant = input<'danger' | 'warning' | 'info' | 'success'>('danger');\n\n  clicked = output<MouseEvent>();\n\n  ripples = signal<{ x: number, y: number, id: number }[]>([]);\n  private rippleId = 0;\n\n  btnClass(): string {\n    const parts = [\n      `ngx-btn-${this.size()}`,\n      `ngx-btn-${this.variant()}`,\n    ];\n    if (this.shape() !== 'rectangle') parts.push(`ngx-btn-${this.shape()}`);\n    return parts.join(' ');\n  }\n\n  isClassIcon(icon: string): boolean {\n    if (!icon) return false;\n    const classRegex = /^[a-zA-Z0-9\\s-_:]+$/;\n    return icon.length > 2 && classRegex.test(icon);\n  }\n\n  onButtonClick(event: MouseEvent): void {\n    if (this.disabled() || this.loading()) return;\n    this.clicked.emit(event);\n    if (!this.ripple()) return;\n\n    const button = event.currentTarget as HTMLButtonElement;\n    const rect = button.getBoundingClientRect();\n    const x = event.clientX - rect.left;\n    const y = event.clientY - rect.top;\n    const id = this.rippleId++;\n\n    this.ripples.update(r => [...r, { x, y, id }]);\n\n    setTimeout(() => {\n      this.ripples.update(r => r.filter(item => item.id !== id));\n    }, 600);\n  }\n}\n","import { Component, input, output, contentChildren } from '@angular/core';\nimport { ButtonComponent } from '../button/button.component';\nimport { CommonModule } from '@angular/common';\n\nexport type ButtonGroupSelectionMode = 'none' | 'single' | 'multiple';\n\n@Component({\n  selector: 'ngx-button-group',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div class=\"ngx-btn-group\" [class.btn-group-vertical]=\"vertical()\" role=\"group\" [attr.aria-label]=\"ariaLabel()\">\n      <ng-content />\n    </div>\n  `,\n  styles: [`\n    :host { display: inline-block; }\n    .ngx-btn-group { display: inline-flex; }\n    .ngx-btn-group :host-context(ngx-button) + :host-context(ngx-button) { margin-left: -1px; }\n    .ngx-btn-group :global(ngx-button:not(:first-child) .ngx-btn) { border-left: none; border-radius: 0 !important; }\n    .ngx-btn-group :global(ngx-button:first-child .ngx-btn) { border-radius: var(--ngx-btn-radius, 4px) 0 0 var(--ngx-btn-radius, 4px) !important; }\n    .ngx-btn-group :global(ngx-button:last-child .ngx-btn) { border-radius: 0 var(--ngx-btn-radius, 4px) var(--ngx-btn-radius, 4px) 0 !important; }\n    .ngx-btn-group :global(ngx-button:only-child .ngx-btn) { border-radius: var(--ngx-btn-radius, 4px) !important; }\n\n    .btn-group-vertical { flex-direction: column; }\n    .btn-group-vertical :global(ngx-button:not(:first-child) .ngx-btn) { border-top: none; border-radius: 0 !important; margin-left: 0; margin-top: -1px; }\n    .btn-group-vertical :global(ngx-button:first-child .ngx-btn) { border-radius: var(--ngx-btn-radius, 4px) var(--ngx-btn-radius, 4px) 0 0 !important; }\n    .btn-group-vertical :global(ngx-button:last-child .ngx-btn) { border-radius: 0 0 var(--ngx-btn-radius, 4px) var(--ngx-btn-radius, 4px) !important; }\n  `]\n})\nexport class ButtonGroupComponent {\n  vertical = input(false);\n  ariaLabel = input('Button group');\n}\n","import { Component, input, output } from '@angular/core';\n\nexport type ChipVariant = 'default' | 'info' | 'success' | 'warning' | 'error' | 'danger' | 'outlined';\n\n@Component({\n  selector: 'ngx-chip',\n  standalone: true,\n  template: `\n    <span\n      class=\"ngx-chip\"\n      [class]=\"'ngx-chip-' + variant()\"\n      [class.removable]=\"removable()\"\n      [class.selected]=\"selected()\"\n      [class.disabled]=\"disabled()\"\n      [class.selectable]=\"selectable()\"\n      [attr.role]=\"selectable() ? 'checkbox' : null\"\n      [attr.aria-checked]=\"selectable() ? selected() : null\"\n      [attr.tabindex]=\"selectable() && !disabled() ? 0 : null\"\n      (click)=\"onChipClick()\"\n      (keydown.enter)=\"onChipClick()\"\n      (keydown.space)=\"onChipClick()\"\n    >\n      @if (icon()) {\n        <span class=\"chip-icon\" aria-hidden=\"true\">{{ icon() }}</span>\n      }\n      <span class=\"chip-label\">@if (label()) { {{ label() }} } @else { <ng-content /> }</span>\n      @if (removable() && !disabled()) {\n        <button class=\"chip-remove\" (click)=\"$event.stopPropagation(); removed.emit()\" aria-label=\"Remove\">✕</button>\n      }\n    </span>\n  `,\n  styles: [`\n    :host { display: inline-block; }\n    .ngx-chip {\n      display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px;\n      font-size: 12px; font-weight: 500; border-radius: 999px;\n      background: var(--ngx-chip-bg, #e9ecef); color: var(--ngx-chip-color, #495057);\n      border: 1px solid var(--ngx-chip-border, #dee2e6); font-family: inherit; transition: all 0.12s;\n    }\n    .ngx-chip.selected { background: var(--ngx-chip-selected-bg, #dbeafe); color: var(--ngx-chip-selected-color, #1a73e8); border-color: #93c5fd; }\n    .ngx-chip.disabled { opacity: 0.5; cursor: not-allowed; }\n    .ngx-chip-info { background: #dbeafe; color: #1a73e8; border-color: #93c5fd; }\n    .ngx-chip-success { background: #d1fae5; color: #065f46; border-color: #6ee7b7; }\n    .ngx-chip-warning { background: #fef3c7; color: #92400e; border-color: #fcd34d; }\n    .ngx-chip-error { background: #fee2e2; color: #991b1b; border-color: #fca5a5; }\n      .ngx-chip-danger { background: #fee2e2; color: #991b1b; border-color: #fca5a5; }\n      .ngx-chip-outlined { background: transparent; color: var(--ngx-btn-primary, #0f0f23); border-color: var(--ngx-btn-primary, #0f0f23); }\n    .chip-icon { font-size: 11px; }\n    .chip-remove { background: none; border: none; cursor: pointer; font-size: 10px; line-height: 1; padding: 0 0 0 2px; color: inherit; opacity: 0.7; }\n    .chip-remove:hover { opacity: 1; }\n    .ngx-chip.selectable { cursor: pointer; }\n    .ngx-chip.selectable:hover:not(.disabled) { filter: brightness(0.95); }\n  `]\n})\nexport class ChipComponent {\n  variant = input<ChipVariant>('default');\n  icon = input<string>('');\n  selected = input(false);\n  removable = input(false);\n  disabled = input(false);\n  selectable = input(false);\n  label = input<string>('');\n\n  removed = output<void>();\n  selectedChange = output<boolean>();\n\n  onChipClick(): void {\n    if (!this.selectable() || this.disabled()) return;\n    this.selectedChange.emit(!this.selected());\n  }\n}\n\n@Component({\n  selector: 'ngx-chip-list',\n  standalone: true,\n  template: `\n    <div class=\"ngx-chip-list\" [class.chip-list-wrap]=\"wrap()\">\n      <ng-content />\n    </div>\n  `,\n  styles: [`\n    :host { display: block; }\n    .ngx-chip-list { display: flex; gap: 6px; align-items: center; }\n    .chip-list-wrap { flex-wrap: wrap; }\n  `]\n})\nexport class ChipListComponent {\n  wrap = input(true);\n}\n","import { Component, HostListener, ElementRef, inject, input, output, signal } from '@angular/core';\nimport { ButtonComponent, ButtonVariant, ButtonSize } from '../button/button.component';\n\nexport interface SplitButtonItem { label?: string; text?: string; icon?: string; disabled?: boolean; separator?: boolean; }\n\n@Component({\n  selector: 'ngx-split-button',\n  standalone: true,\n  imports: [ButtonComponent],\n  template: `\n    <div class=\"ngx-split-btn\" [class.open]=\"open()\">\n      <ngx-button [variant]=\"variant()\" [size]=\"size()\" [disabled]=\"disabled()\" [loading]=\"loading()\" (clicked)=\"mainClicked.emit($event)\">\n        <ng-content />\n      </ngx-button>\n      <button \n        class=\"split-arrow\" \n        [class]=\"'ngx-btn ngx-btn-' + size() + ' ngx-btn-' + variant()\" \n        [disabled]=\"disabled()\" \n        (click)=\"toggle()\" \n        aria-haspopup=\"true\" \n        [attr.aria-expanded]=\"open()\"\n        [id]=\"uid + '-arrow'\"\n      >\n        <span class=\"arrow-icon\">▾</span>\n      </button>\n      @if (open()) {\n        <ul class=\"split-menu\" role=\"menu\" [attr.aria-labelledby]=\"uid + '-arrow'\">\n          @for (item of items(); track (item.text || item.label || $index); let i = $index) {\n            @if (item.separator) {\n              <li class=\"split-menu-separator\" role=\"separator\"></li>\n            } @else {\n              <li \n                class=\"split-menu-item\" \n                [class.disabled]=\"item.disabled\" \n                [class.focused]=\"focusedIndex() === i\"\n                role=\"menuitem\"\n                [attr.aria-disabled]=\"item.disabled\"\n                (click)=\"onItemClick(item)\"\n                (mouseenter)=\"focusedIndex.set(i)\"\n              >\n                @if (item.icon) { <span class=\"item-icon\">{{ item.icon }}</span> }\n                <span>{{ item.text || item.label }}</span>\n              </li>\n            }\n          }\n        </ul>\n      }\n    </div>\n  `,\n  styles: [`\n    :host { display: inline-block; position: relative; }\n    .ngx-split-btn { display: inline-flex; position: relative; }\n    .ngx-split-btn ngx-button :global(.ngx-btn) { border-radius: var(--ngx-btn-radius, 4px) 0 0 var(--ngx-btn-radius, 4px) !important; border-right: none; }\n    .split-arrow { border-radius: 0 var(--ngx-btn-radius, 4px) var(--ngx-btn-radius, 4px) 0 !important; padding: 0 10px; cursor: pointer; font-family: inherit; border-left: 1px solid rgba(255,255,255,0.3); outline: none; }\n    .split-arrow:disabled { opacity: 0.55; cursor: not-allowed; }\n    .split-arrow:focus-visible {\n      outline: 2px solid var(--primary-color, #4f46e5);\n      outline-offset: -2px;\n      z-index: 2;\n    }\n    .split-menu { position: absolute; top: 100%; left: 0; min-width: 100%; margin-top: 2px; background: var(--ngx-menu-bg, #fff); border: 1px solid var(--ngx-menu-border, #dee2e6); border-radius: 6px; box-shadow: 0 4px 16px rgba(0,0,0,0.12); list-style: none; padding: 4px 0; z-index: 1000; }\n    .split-menu-item { display: flex; align-items: center; gap: 8px; padding: 8px 14px; font-size: 13px; cursor: pointer; color: #212529; }\n    .split-menu-item:hover:not(.disabled), .split-menu-item.focused { background: #f1f3f5; }\n    .split-menu-item.disabled { color: #adb5bd; cursor: not-allowed; }\n    .split-menu-item.disabled:hover { background: none; }\n    .split-menu-separator { margin: 4px 0; height: 1px; background: var(--ngx-menu-separator, #dee2e6); list-style: none; }\n    .item-icon { font-size: 14px; }\n  `]\n})\nexport class SplitButtonComponent {\n  private el = inject(ElementRef);\n  uid = 'ngx-sb-' + Math.random().toString(36).substring(2, 9);\n\n  variant = input<ButtonVariant>('primary');\n  size = input<ButtonSize>('md');\n  disabled = input(false);\n  loading = input(false);\n  items = input<SplitButtonItem[]>([]);\n  open = signal(false);\n  focusedIndex = signal(-1);\n\n  mainClicked = output<MouseEvent>();\n  itemClicked = output<SplitButtonItem>();\n\n  toggle(): void {\n    if (this.disabled() || this.loading()) return;\n    this.open.update(v => !v);\n    if (this.open()) {\n      const items = this.items();\n      const firstValid = items.findIndex(item => !item.separator && !item.disabled);\n      this.focusedIndex.set(firstValid);\n    } else {\n      this.focusedIndex.set(-1);\n    }\n  }\n\n  onItemClick(item: SplitButtonItem): void {\n    if (item.disabled) return;\n    this.itemClicked.emit(item);\n    this.open.set(false);\n    this.focusedIndex.set(-1);\n    \n    // Return focus to arrow trigger\n    setTimeout(() => {\n      const arrowBtn = this.el.nativeElement.querySelector('.split-arrow');\n      arrowBtn?.focus();\n    }, 0);\n  }\n\n  @HostListener('keydown', ['$event'])\n  handleKeydown(e: KeyboardEvent): void {\n    if (!this.open()) return;\n\n    if (e.key === 'Escape') {\n      e.preventDefault();\n      this.open.set(false);\n      this.focusedIndex.set(-1);\n      // Return focus to arrow trigger\n      const arrowBtn = this.el.nativeElement.querySelector('.split-arrow');\n      arrowBtn?.focus();\n      return;\n    }\n\n    if (e.key === 'ArrowDown') {\n      e.preventDefault();\n      this.moveFocus(1);\n    } else if (e.key === 'ArrowUp') {\n      e.preventDefault();\n      this.moveFocus(-1);\n    } else if (e.key === 'Enter' || e.key === ' ') {\n      e.preventDefault();\n      const idx = this.focusedIndex();\n      const items = this.items();\n      if (idx >= 0 && idx < items.length) {\n        const item = items[idx];\n        if (!item.disabled && !item.separator) {\n          this.onItemClick(item);\n        }\n      }\n    }\n  }\n\n  private moveFocus(delta: number): void {\n    const items = this.items();\n    const n = items.length;\n    if (n <= 0) return;\n\n    let idx = this.focusedIndex();\n    const start = idx;\n\n    do {\n      idx += delta;\n      if (idx < 0) idx = n - 1;\n      if (idx >= n) idx = 0;\n      if (idx === start) break;\n    } while (items[idx].separator || items[idx].disabled);\n\n    if (!items[idx].separator && !items[idx].disabled) {\n      this.focusedIndex.set(idx);\n    }\n  }\n\n  @HostListener('document:click', ['$event'])\n  onDocClick(event: MouseEvent): void {\n    if (!this.el.nativeElement.contains(event.target)) {\n      if (this.open()) {\n        this.open.set(false);\n        this.focusedIndex.set(-1);\n      }\n    }\n  }\n}\n","import { Component, input, output, signal } from '@angular/core';\nimport { ButtonComponent, ButtonVariant, ButtonSize } from '../button/button.component';\n\nexport interface DropDownButtonItem { label?: string; text?: string; icon?: string; disabled?: boolean; separator?: boolean; variant?: string; }\n\n@Component({\n  selector: 'ngx-dropdown-button',\n  standalone: true,\n  imports: [ButtonComponent],\n  template: `\n    <div class=\"ngx-dd-btn\" [class.open]=\"open()\">\n      <ngx-button [variant]=\"variant()\" [size]=\"size()\" [disabled]=\"disabled()\" [suffixIcon]=\"'▾'\" (clicked)=\"toggle()\">\n        <ng-content />\n      </ngx-button>\n      @if (open()) {\n        <ul class=\"dd-menu\" role=\"menu\">\n          @for (item of items(); track item.text) {\n            <li class=\"dd-menu-item\" [class.disabled]=\"item.disabled\" role=\"menuitem\"\n              (click)=\"!item.disabled && itemClicked.emit(item); open.set(false)\">\n              @if (item.icon) { <span class=\"item-icon\">{{ item.icon }}</span> }\n              <span>{{ item.text }}</span>\n            </li>\n          }\n        </ul>\n      }\n    </div>\n  `,\n  styles: [`\n    :host { display: inline-block; position: relative; }\n    .ngx-dd-btn { display: inline-flex; position: relative; }\n    .dd-menu { position: absolute; top: 100%; left: 0; min-width: 160px; margin-top: 2px; background: var(--ngx-menu-bg, #fff); border: 1px solid var(--ngx-menu-border, #dee2e6); border-radius: 6px; box-shadow: 0 4px 16px rgba(0,0,0,0.12); list-style: none; padding: 4px 0; z-index: 1000; }\n    .dd-menu-item { display: flex; align-items: center; gap: 8px; padding: 8px 14px; font-size: 13px; cursor: pointer; color: #212529; }\n    .dd-menu-item:hover:not(.disabled) { background: #f1f3f5; }\n    .dd-menu-item.disabled { color: #adb5bd; cursor: not-allowed; }\n    .item-icon { font-size: 14px; }\n  `]\n})\nexport class DropDownButtonComponent {\n  variant = input<ButtonVariant>('secondary');\n  size = input<ButtonSize>('md');\n  disabled = input(false);\n  items = input<DropDownButtonItem[]>([]);\n  open = signal(false);\n  itemClicked = output<DropDownButtonItem>();\n  toggle(): void { this.open.update(v => !v); }\n}\n","import { Component, input, signal, output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nexport interface SpeedDialItem {\n  icon: string;\n  label: string;\n  id: string; // Emitted when clicked\n  disabled?: boolean;\n}\n\n@Component({\n  selector: 'ngx-speed-dial',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div\n      class=\"ngx-speed-dial-container\"\n      [class]=\"'direction-' + direction()\"\n      (mouseleave)=\"collapseOnLeave()\"\n    >\n      <!-- Sub-actions Flyout list -->\n      <div\n        class=\"ngx-speed-dial-actions\"\n        [class.open]=\"isOpen()\"\n      >\n        @for (item of items(); track item.id; let idx = $index) {\n          <div\n            class=\"speed-dial-item-wrapper\"\n            [style.transition-delay.ms]=\"idx * 40\"\n          >\n            <!-- Hover Label hint -->\n            @if (item.label && showLabels()) {\n              <span class=\"speed-dial-label\">{{ item.label }}</span>\n            }\n\n            <!-- Sub action button -->\n            <button\n              class=\"sub-action-btn\"\n              [disabled]=\"item.disabled\"\n              (click)=\"onItemClick(item)\"\n              [title]=\"item.label || ''\"\n            >\n              <span class=\"sub-btn-icon\">{{ item.icon }}</span>\n            </button>\n          </div>\n        }\n      </div>\n\n      <!-- Primary Action Trigger button (FAB) -->\n      <button\n        class=\"speed-dial-trigger-btn\"\n        [class]=\"'theme-' + theme()\"\n        [class.active]=\"isOpen()\"\n        (click)=\"toggleOpen()\"\n        [title]=\"isOpen() ? 'Close Menu' : 'Open Menu'\"\n      >\n        <span class=\"trigger-icon\">\n          {{ isOpen() ? activeIcon() : icon() }}\n        </span>\n      </button>\n    </div>\n  `,\n  styles: [`\n    :host {\n      display: inline-block;\n      position: relative;\n    }\n\n    .ngx-speed-dial-container {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      position: relative;\n    }\n\n    /* Container direction layouts */\n    .ngx-speed-dial-container.direction-top {\n      flex-direction: column-reverse;\n    }\n    .ngx-speed-dial-container.direction-bottom {\n      flex-direction: column;\n    }\n    .ngx-speed-dial-container.direction-left {\n      flex-direction: row-reverse;\n    }\n    .ngx-speed-dial-container.direction-right {\n      flex-direction: row;\n    }\n\n    /* Main Trigger FAB style */\n    .speed-dial-trigger-btn {\n      width: 52px;\n      height: 52px;\n      border-radius: 50%;\n      border: none;\n      color: #ffffff;\n      font-size: 20px;\n      cursor: pointer;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      box-shadow: 0 4px 14px rgba(79, 70, 229, 0.4);\n      transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);\n      z-index: 5;\n    }\n    .speed-dial-trigger-btn:hover {\n      transform: scale(1.08);\n    }\n    .speed-dial-trigger-btn.active {\n      transform: rotate(90deg) scale(0.95);\n      box-shadow: 0 2px 8px rgba(0,0,0,0.15);\n      background: var(--bg-primary, #f8fafc) !important;\n      color: var(--text-primary, #0f172a) !important;\n      border: 1px solid var(--border-color, #e2e8f0);\n    }\n\n    /* Trigger Color themes */\n    .theme-primary {\n      background: var(--primary-gradient, linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%));\n    }\n    .theme-secondary {\n      background: var(--text-secondary, #475569);\n    }\n    .theme-accent {\n      background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n      box-shadow: 0 4px 14px rgba(245, 158, 11, 0.4);\n    }\n    .theme-dark {\n      background: #0f172a;\n      box-shadow: 0 4px 14px rgba(15, 23, 42, 0.4);\n    }\n\n    .trigger-icon {\n      line-height: 1;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n\n    /* Sub Actions list settings */\n    .ngx-speed-dial-actions {\n      display: flex;\n      gap: 10px;\n      pointer-events: none;\n      z-index: 4;\n      opacity: 0;\n      transition: opacity 0.25s ease;\n    }\n    .direction-top .ngx-speed-dial-actions {\n      flex-direction: column-reverse;\n      margin-bottom: 12px;\n    }\n    .direction-bottom .ngx-speed-dial-actions {\n      flex-direction: column;\n      margin-top: 12px;\n    }\n    .direction-left .ngx-speed-dial-actions {\n      flex-direction: row-reverse;\n      margin-right: 12px;\n    }\n    .direction-right .ngx-speed-dial-actions {\n      flex-direction: row;\n      margin-left: 12px;\n    }\n\n    /* Open Actions display settings */\n    .ngx-speed-dial-actions.open {\n      opacity: 1;\n      pointer-events: auto;\n    }\n\n    /* Action wrapper item flyout calculations */\n    .speed-dial-item-wrapper {\n      display: flex;\n      align-items: center;\n      gap: 8px;\n      position: relative;\n      transform: scale(0.4);\n      opacity: 0;\n      transition: transform 0.25s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.2s ease;\n    }\n    .direction-left .speed-dial-item-wrapper {\n      flex-direction: row;\n    }\n\n    .ngx-speed-dial-actions.open .speed-dial-item-wrapper {\n      transform: scale(1);\n      opacity: 1;\n    }\n\n    /* Action Labels styling */\n    .speed-dial-label {\n      position: absolute;\n      right: 50px;\n      background: rgba(15, 23, 42, 0.88);\n      border: 1px solid rgba(255, 255, 255, 0.12);\n      color: #ffffff;\n      padding: 4px 8px;\n      border-radius: 4px;\n      font-size: 11px;\n      font-weight: 600;\n      white-space: nowrap;\n      pointer-events: none;\n      box-shadow: 0 2px 6px rgba(0,0,0,0.15);\n      backdrop-filter: blur(4px);\n    }\n    .direction-left .speed-dial-label,\n    .direction-right .speed-dial-label,\n    .direction-bottom .speed-dial-label {\n      display: none; /* Hide textual labels in horizontal layout */\n    }\n\n    /* Sub Button item styling */\n    .sub-action-btn {\n      width: 40px;\n      height: 40px;\n      border-radius: 50%;\n      border: 1px solid var(--border-color, #e2e8f0);\n      background: var(--bg-secondary, #ffffff);\n      color: var(--text-primary, #0f172a);\n      font-size: 15px;\n      cursor: pointer;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      box-shadow: var(--shadow-sm);\n      transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\n    }\n    .sub-action-btn:hover {\n      background: var(--primary-glow, rgba(79, 70, 229, 0.1));\n      color: var(--primary-color, #4f46e5);\n      border-color: var(--primary-color, #4f46e5);\n      transform: scale(1.08);\n    }\n    .sub-action-btn:disabled {\n      opacity: 0.5;\n      cursor: not-allowed;\n    }\n    .sub-btn-icon {\n      line-height: 1;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n    }\n  `]\n})\nexport class SpeedDialComponent {\n  // Inputs configuration\n  items = input.required<SpeedDialItem[]>();\n  icon = input<string>('+'); // Default collapsed icon\n  activeIcon = input<string>('✕'); // Default expanded icon\n  direction = input<'top' | 'bottom' | 'left' | 'right'>('top');\n  theme = input<'primary' | 'secondary' | 'accent' | 'dark'>('primary');\n  showLabels = input<boolean>(true);\n  closeOnSelect = input<boolean>(true);\n  collapseOnLeaveMouse = input<boolean>(true);\n\n  // Output emissions\n  itemClick = output<SpeedDialItem>();\n\n  // Open status signal\n  isOpen = signal<boolean>(false);\n\n  toggleOpen(): void {\n    this.isOpen.update(val => !val);\n  }\n\n  collapseOnLeave(): void {\n    if (this.collapseOnLeaveMouse()) {\n      this.isOpen.set(false);\n    }\n  }\n\n  onItemClick(item: SpeedDialItem): void {\n    if (item.disabled) return;\n    this.itemClick.emit(item);\n    if (this.closeOnSelect()) {\n      this.isOpen.set(false);\n    }\n  }\n}\n","/*\n * Public API Surface — secondary entry point: ngx-core-components/buttons\n */\n\nexport { ButtonComponent } from './button/button.component';\nexport type { ButtonVariant, ButtonSize, ButtonShape } from './button/button.component';\n\nexport { ButtonGroupComponent } from './button-group/button-group.component';\n\nexport { ChipComponent, ChipListComponent } from './chip/chip.component';\nexport type { ChipVariant } from './chip/chip.component';\n\nexport { SplitButtonComponent } from './split-button/split-button.component';\nexport type { SplitButtonItem } from './split-button/split-button.component';\n\nexport { DropDownButtonComponent } from './dropdown-button/dropdown-button.component';\nexport type { DropDownButtonItem } from './dropdown-button/dropdown-button.component';\n\nexport { SpeedDialComponent } from './speed-dial/speed-dial.component';\nexport type { SpeedDialItem } from './speed-dial/speed-dial.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}