{"version":3,"file":"shival99-z-ui-components-z-breadcrumb.mjs","sources":["../../../../libs/core-ui/components/z-breadcrumb/z-breadcrumb.variants.ts","../../../../libs/core-ui/components/z-breadcrumb/z-breadcrumb.component.ts","../../../../libs/core-ui/components/z-breadcrumb/z-breadcrumb.component.html","../../../../libs/core-ui/components/z-breadcrumb/shival99-z-ui-components-z-breadcrumb.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zBreadcrumbVariants = cva(\n  ['text-muted-foreground flex min-w-0 flex-wrap items-center gap-1.5 break-words'],\n  {\n    variants: {\n      zSize: {\n        sm: 'text-xs',\n        default: 'text-sm',\n        lg: 'text-base',\n      },\n    },\n    defaultVariants: {\n      zSize: 'default',\n    },\n  }\n);\n\nexport const zBreadcrumbItemVariants = cva(['inline-flex min-w-0 items-center gap-2 transition-colors duration-150'], {\n  variants: {\n    zSize: {\n      sm: 'gap-1',\n      default: 'gap-2',\n      lg: 'gap-2',\n    },\n    isActive: {\n      true: 'text-foreground font-normal',\n      false: 'text-muted-foreground hover:text-foreground cursor-pointer',\n    },\n    isDisabled: {\n      true: 'text-muted-foreground/50 cursor-not-allowed pointer-events-none',\n      false: '',\n    },\n  },\n  compoundVariants: [\n    {\n      isActive: true,\n      isDisabled: true,\n      class: 'text-muted-foreground/50',\n    },\n  ],\n  defaultVariants: {\n    zSize: 'default',\n    isActive: false,\n    isDisabled: false,\n  },\n});\n\nexport const zBreadcrumbHomeVariants = cva(\n  ['text-muted-foreground hover:text-foreground inline-flex items-center gap-2 transition-colors duration-150'],\n  {\n    variants: {\n      zSize: {\n        sm: 'gap-1',\n        default: 'gap-2',\n        lg: 'gap-2',\n      },\n    },\n    defaultVariants: {\n      zSize: 'default',\n    },\n  }\n);\n\nexport const zBreadcrumbSeparatorVariants = cva(['text-muted-foreground/60 flex shrink-0 items-center'], {\n  variants: {\n    zSize: {\n      sm: '[&_z-icon]:size-3',\n      default: '[&_z-icon]:size-3.5',\n      lg: '[&_z-icon]:size-4',\n    },\n  },\n  defaultVariants: {\n    zSize: 'default',\n  },\n});\n\nexport type ZBreadcrumbVariants = VariantProps<typeof zBreadcrumbVariants>;\nexport type ZBreadcrumbItemVariants = VariantProps<typeof zBreadcrumbItemVariants>;\n","import { ChangeDetectionStrategy, Component, computed, input, output, ViewEncapsulation } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZIconComponent } from '@shival99/z-ui/components/z-icon';\nimport type { ZIconVariants, ZIcon } from '@shival99/z-ui/components/z-icon';\nimport { zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport type { ZBreadcrumbItem, ZBreadcrumbSeparator } from './z-breadcrumb.types';\nimport {\n  zBreadcrumbHomeVariants,\n  zBreadcrumbItemVariants,\n  zBreadcrumbSeparatorVariants,\n  zBreadcrumbVariants,\n  type ZBreadcrumbVariants,\n} from './z-breadcrumb.variants';\n\n@Component({\n  selector: 'z-breadcrumb',\n  imports: [ZIconComponent, RouterLink, TranslatePipe],\n  standalone: true,\n  templateUrl: './z-breadcrumb.component.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'block min-w-0',\n  },\n})\nexport class ZBreadcrumbComponent {\n  public readonly zItemClick = output<ZBreadcrumbItem>();\n\n  public readonly class = input<ClassValue>('');\n  public readonly zItems = input<ZBreadcrumbItem[]>([]);\n  public readonly zSize = input<ZBreadcrumbVariants['zSize']>('default');\n  public readonly zSeparator = input<ZBreadcrumbSeparator>('lucideChevronRight');\n  public readonly zSeparatorSize = input<ZIconVariants['zSize']>('14');\n  public readonly zHomeIcon = input<ZIcon | undefined>(undefined);\n  public readonly zShowHome = input(false, { transform: zTransform });\n\n  protected readonly listClasses = computed(() =>\n    zMergeClasses(zBreadcrumbVariants({ zSize: this.zSize() }), this.class())\n  );\n\n  protected readonly homeClasses = computed(() => zBreadcrumbHomeVariants({ zSize: this.zSize() }));\n  protected readonly separatorClasses = computed(() => zBreadcrumbSeparatorVariants({ zSize: this.zSize() }));\n  protected readonly separatorIsIcon = computed(() => {\n    const separator = this.zSeparator();\n    return separator.startsWith('lucide') || separator.startsWith('sax');\n  });\n\n  protected readonly displayItems = computed(() =>\n    this.zItems().map((item, index, items) => {\n      const isLast = index === items.length - 1;\n\n      return {\n        ...item,\n        isLast,\n        className: zBreadcrumbItemVariants({\n          zSize: this.zSize(),\n          isActive: isLast,\n          isDisabled: item.disabled ?? false,\n        }),\n      };\n    })\n  );\n\n  protected onItemClick(item: ZBreadcrumbItem, isLast: boolean): void {\n    if (isLast || item.disabled) {\n      return;\n    }\n\n    this.zItemClick.emit(item);\n  }\n}\n","<nav aria-label=\"Breadcrumb\">\n  <ol data-slot=\"breadcrumb-list\" [class]=\"listClasses()\">\n    @if (zShowHome() && zHomeIcon()) {\n      <li data-slot=\"breadcrumb-item\" class=\"inline-flex items-center gap-1.5\">\n        <span\n          data-slot=\"breadcrumb-link\"\n          [class]=\"homeClasses()\"\n          (click)=\"onItemClick({ label: 'Home', path: '/' }, false)\">\n          <z-icon [zType]=\"zHomeIcon()!\" [zSize]=\"zSeparatorSize()\" />\n        </span>\n      </li>\n\n      @if (zItems().length > 0) {\n        <li data-slot=\"breadcrumb-separator\" role=\"presentation\" aria-hidden=\"true\" [class]=\"separatorClasses()\">\n          @if (separatorIsIcon()) {\n            <z-icon [zType]=\"$any(zSeparator())\" [zSize]=\"zSeparatorSize()\" />\n          } @else {\n            <span>{{ zSeparator() }}</span>\n          }\n        </li>\n      }\n    }\n\n    @for (item of displayItems(); track item.label) {\n      <li data-slot=\"breadcrumb-item\" class=\"inline-flex items-center gap-1.5\">\n        @if (item.path && !item.isLast && !item.disabled) {\n          <a\n            data-slot=\"breadcrumb-link\"\n            [routerLink]=\"item.path\"\n            [class]=\"item.className\"\n            (click)=\"onItemClick(item, item.isLast)\">\n            @if (item.icon) {\n              <z-icon [zType]=\"item.icon\" [zSize]=\"zSeparatorSize()\" />\n            }\n            <span class=\"truncate\">{{ item.label | translate }}</span>\n          </a>\n        } @else {\n          <span\n            [attr.data-slot]=\"item.isLast ? 'breadcrumb-page' : 'breadcrumb-link'\"\n            [attr.aria-current]=\"item.isLast ? 'page' : null\"\n            [attr.aria-disabled]=\"item.disabled ? 'true' : null\"\n            [class]=\"item.className\"\n            (click)=\"onItemClick(item, item.isLast)\">\n            @if (item.icon) {\n              <z-icon [zType]=\"item.icon\" [zSize]=\"zSeparatorSize()\" />\n            }\n            <span class=\"truncate\">{{ item.label | translate }}</span>\n          </span>\n        }\n      </li>\n\n      @if (!item.isLast) {\n        <li data-slot=\"breadcrumb-separator\" role=\"presentation\" aria-hidden=\"true\" [class]=\"separatorClasses()\">\n          @if (separatorIsIcon()) {\n            <z-icon [zType]=\"$any(zSeparator())\" [zSize]=\"zSeparatorSize()\" />\n          } @else {\n            <span>{{ zSeparator() }}</span>\n          }\n        </li>\n      }\n    }\n  </ol>\n</nav>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}