{"version":3,"file":"shival99-z-ui-components-z-button-group.mjs","sources":["../../../../libs/core-ui/components/z-button-group/z-button-group.types.ts","../../../../libs/core-ui/components/z-button-group/z-button-group-item.directive.ts","../../../../libs/core-ui/components/z-button-group/z-button-group.variants.ts","../../../../libs/core-ui/components/z-button-group/z-button-group-separator.component.ts","../../../../libs/core-ui/components/z-button-group/z-button-group.component.ts","../../../../libs/core-ui/components/z-button-group/shival99-z-ui-components-z-button-group.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport type ZButtonGroupValue = string | number;\n\nexport interface ZButtonGroupHost {\n  _selectItem(value: ZButtonGroupValue, index: number): void;\n  _isItemActive(value: ZButtonGroupValue): boolean;\n}\n\nexport const Z_BUTTON_GROUP = new InjectionToken<ZButtonGroupHost>('Z_BUTTON_GROUP');\n","import { computed, Directive, inject, input, signal } from '@angular/core';\nimport { Z_BUTTON_GROUP, type ZButtonGroupValue } from './z-button-group.types';\n\n@Directive({\n  selector: '[z-button-group-item]',\n  standalone: true,\n  host: {\n    '[class.z-button-group-item-active]': 'isActive()',\n    '(click)': 'onClick()',\n  },\n  exportAs: 'zButtonGroupItem',\n})\nexport class ZButtonGroupItemDirective {\n  private readonly _group = inject(Z_BUTTON_GROUP, { optional: true });\n  private readonly _index = signal<number>(-1);\n\n  /** Khóa ổn định tùy chọn, ưu tiên hơn index khi xác định active. */\n  public readonly zValue = input<ZButtonGroupValue>();\n\n  private readonly _value = computed<ZButtonGroupValue>(() => this.zValue() ?? this._index());\n\n  public readonly isActive = computed(() => {\n    if (!this._group) {\n      return false;\n    }\n    return this._group._isItemActive(this._value());\n  });\n\n  public readonly index = this._index.asReadonly();\n  public _setIndex(index: number): void {\n    this._index.set(index);\n  }\n\n  protected onClick(): void {\n    if (!this._group) {\n      return;\n    }\n    this._group._selectItem(this._value(), this._index());\n  }\n}\n","import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zButtonGroupVariants = cva('inline-flex items-center [--radius:var(--radius)]', {\n  variants: {\n    zOrientation: {\n      horizontal: [\n        'flex-row',\n        // First child - only left border radius\n        '[&>*:first-child]:rounded-r-none',\n        // Last child - only right border radius\n        '[&>*:last-child]:rounded-l-none',\n        // Middle children - no border radius\n        '[&>*:not(:first-child):not(:last-child)]:rounded-none',\n        // Remove double borders between buttons\n        '[&>*:not(:first-child)]:border-l-0',\n        // Handle single child\n        '[&>*:only-child]:rounded-[var(--radius)]',\n        '[&>*:only-child]:border-l',\n        // Active item styling - use primary color from theme\n        '[&>*.z-button-group-item-active]:bg-primary',\n        '[&>*.z-button-group-item-active]:text-primary-foreground',\n        '[&>*.z-button-group-item-active]:border-primary',\n        '[&>*.z-button-group-item-active]:z-[1]',\n      ],\n      vertical: [\n        'flex-col',\n        // First child - only top border radius\n        '[&>*:first-child]:rounded-b-none',\n        // Last child - only bottom border radius\n        '[&>*:last-child]:rounded-t-none',\n        // Middle children - no border radius\n        '[&>*:not(:first-child):not(:last-child)]:rounded-none',\n        // Remove double borders between buttons\n        '[&>*:not(:first-child)]:border-t-0',\n        // Handle single child\n        '[&>*:only-child]:rounded-[var(--radius)]',\n        '[&>*:only-child]:border-t',\n        // Active item styling - use primary color from theme\n        '[&>*.z-button-group-item-active]:bg-primary',\n        '[&>*.z-button-group-item-active]:text-primary-foreground',\n        '[&>*.z-button-group-item-active]:border-primary',\n        '[&>*.z-button-group-item-active]:z-[1]',\n      ],\n    },\n  },\n  defaultVariants: {\n    zOrientation: 'horizontal',\n  },\n});\n\nexport const zButtonGroupSeparatorVariants = cva('shrink-0 bg-border', {\n  variants: {\n    zOrientation: {\n      horizontal: 'h-full w-px',\n      vertical: 'w-full h-px',\n    },\n  },\n  defaultVariants: {\n    zOrientation: 'horizontal',\n  },\n});\n\nexport type ZButtonGroupVariants = VariantProps<typeof zButtonGroupVariants>;\nexport type ZButtonGroupSeparatorVariants = VariantProps<typeof zButtonGroupSeparatorVariants>;\n","import { ChangeDetectionStrategy, Component, computed, input, ViewEncapsulation } from '@angular/core';\nimport { zMergeClasses } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { zButtonGroupSeparatorVariants, type ZButtonGroupSeparatorVariants } from './z-button-group.variants';\n\n@Component({\n  selector: 'z-button-group-separator',\n  standalone: true,\n  template: ``,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    role: 'separator',\n    '[class]': 'zClasses()',\n  },\n  exportAs: 'zButtonGroupSeparator',\n})\nexport class ZButtonGroupSeparatorComponent {\n  public readonly zClass = input<ClassValue>('');\n  public readonly zOrientation = input<ZButtonGroupSeparatorVariants['zOrientation']>('horizontal');\n\n  protected readonly zClasses = computed(() =>\n    zMergeClasses(\n      zButtonGroupSeparatorVariants({\n        zOrientation: this.zOrientation(),\n      }),\n      this.zClass()\n    )\n  );\n}\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  contentChildren,\n  effect,\n  input,\n  model,\n  output,\n  ViewEncapsulation,\n} from '@angular/core';\nimport { zMergeClasses } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { ZButtonGroupItemDirective } from './z-button-group-item.directive';\nimport { type ZButtonGroupHost, type ZButtonGroupValue, Z_BUTTON_GROUP } from './z-button-group.types';\nimport { zButtonGroupVariants, type ZButtonGroupVariants } from './z-button-group.variants';\n\n@Component({\n  selector: 'z-button-group',\n  standalone: true,\n  template: `\n    <ng-content />\n  `,\n  providers: [\n    {\n      provide: Z_BUTTON_GROUP,\n      useExisting: ZButtonGroupComponent,\n    },\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    role: 'group',\n    '[class]': 'zClasses()',\n  },\n  exportAs: 'zButtonGroup',\n})\nexport class ZButtonGroupComponent implements ZButtonGroupHost {\n  public readonly zClass = input<ClassValue>('');\n  public readonly zOrientation = input<ZButtonGroupVariants['zOrientation']>('horizontal');\n\n  public readonly zActive = model<ZButtonGroupValue | null>(null);\n  public readonly zActiveIndexChange = output<number | null>();\n  public readonly zActiveValueChange = output<ZButtonGroupValue | null>();\n  private readonly _items = contentChildren(ZButtonGroupItemDirective);\n\n  protected readonly zClasses = computed(() =>\n    zMergeClasses(\n      zButtonGroupVariants({\n        zOrientation: this.zOrientation(),\n      }),\n      this.zClass()\n    )\n  );\n\n  constructor() {\n    effect(() => {\n      const items = this._items();\n      items.forEach((item, index) => {\n        item._setIndex(index);\n      });\n    });\n  }\n\n  public _selectItem(value: ZButtonGroupValue, index: number): void {\n    const newValue = this.zActive() === value ? null : value;\n    this.zActive.set(newValue);\n    this.zActiveIndexChange.emit(newValue === null ? null : index);\n    this.zActiveValueChange.emit(newValue);\n  }\n\n  public _isItemActive(value: ZButtonGroupValue): boolean {\n    return this.zActive() === value;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}