{"version":3,"file":"ngx-com-components-badge.mjs","sources":["../../../projects/com/components/badge/badge.variants.ts","../../../projects/com/components/badge/badge.directive.ts","../../../projects/com/components/badge/index.ts","../../../projects/com/components/badge/ngx-com-components-badge.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\n/**\n * Variant type for badge appearance.\n */\nexport type BadgeVariant = 'primary' | 'accent' | 'warn' | 'success' | 'muted' | 'outline';\n\n/**\n * Size type for badge.\n */\nexport type BadgeSize = 'sm' | 'default' | 'lg';\n\n/**\n * CVA variants for the badge directive.\n *\n * @tokens `--color-primary`, `--color-primary-foreground`, `--color-primary-hover`,\n *         `--color-accent`, `--color-accent-foreground`, `--color-accent-hover`,\n *         `--color-warn`, `--color-warn-foreground`, `--color-warn-hover`,\n *         `--color-success`, `--color-success-foreground`, `--color-success-hover`,\n *         `--color-muted`, `--color-muted-foreground`, `--color-muted-hover`,\n *         `--color-border`, `--color-foreground`, `--radius-badge`, `--radius-badge-sm`, `--radius-pill`\n */\nexport const badgeVariants: (props?: {\n  variant?: BadgeVariant;\n  size?: BadgeSize;\n  pill?: boolean;\n}) => string = cva(\n  [\n    'com-badge',\n    'inline-flex w-fit shrink-0 items-center justify-center gap-1',\n    'overflow-hidden whitespace-nowrap',\n    'text-xs font-medium',\n    'border transition-colors',\n    '[&>svg]:pointer-events-none [&>svg]:size-3',\n  ],\n  {\n    variants: {\n      variant: {\n        primary:\n          'border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary-hover',\n        accent:\n          'border-transparent bg-accent text-accent-foreground [a&]:hover:bg-accent-hover',\n        warn:\n          'border-transparent bg-warn text-warn-foreground [a&]:hover:bg-warn-hover',\n        success:\n          'border-transparent bg-success text-success-foreground [a&]:hover:bg-success-hover',\n        muted:\n          'border-transparent bg-muted text-muted-foreground [a&]:hover:bg-muted-hover',\n        outline:\n          'border-border bg-transparent text-foreground [a&]:hover:bg-muted',\n      },\n      size: {\n        sm: 'px-1.5 py-px text-[10px] rounded-badge-sm gap-0.5 [&>svg]:size-2.5',\n        default: 'px-2 py-0.5 text-xs rounded-badge gap-1 [&>svg]:size-3',\n        lg: 'px-2.5 py-1 text-sm rounded-badge gap-1.5 [&>svg]:size-3.5',\n      },\n      pill: {\n        true: 'rounded-pill',\n        false: '',\n      },\n    },\n    defaultVariants: {\n      variant: 'primary',\n      size: 'default',\n      pill: false,\n    },\n  }\n);\n\nexport type BadgeVariants = VariantProps<typeof badgeVariants>;\n","import {\n  booleanAttribute,\n  computed,\n  Directive,\n  input,\n} from '@angular/core';\nimport type { InputSignal, InputSignalWithTransform, Signal } from '@angular/core';\nimport { mergeClasses } from './badge.utils';\nimport { badgeVariants } from './badge.variants';\nimport type { BadgeVariant, BadgeSize } from './badge.variants';\n\n/**\n * Badge directive — applies styled badge classes to any host element.\n *\n * Works on `<span>`, `<a>`, `<button>`, or any other element.\n * Hover styles are automatically applied only on `<a>` elements via `[a&]:hover:`.\n *\n * @tokens `--color-primary`, `--color-primary-foreground`, `--color-primary-hover`,\n *         `--color-accent`, `--color-accent-foreground`, `--color-accent-hover`,\n *         `--color-warn`, `--color-warn-foreground`, `--color-warn-hover`,\n *         `--color-success`, `--color-success-foreground`, `--color-success-hover`,\n *         `--color-muted`, `--color-muted-foreground`, `--color-muted-hover`,\n *         `--color-border`, `--color-foreground`, `--radius-badge`, `--radius-badge-sm`, `--radius-pill`\n *\n * @example Basic usage\n * ```html\n * <span comBadge>Primary</span>\n * <span comBadge variant=\"accent\">Accent</span>\n * <span comBadge variant=\"warn\">Warning</span>\n * ```\n *\n * @example Pill shape\n * ```html\n * <span comBadge pill>New</span>\n * <span comBadge variant=\"success\" pill>Online</span>\n * ```\n *\n * @example Sizes\n * ```html\n * <span comBadge size=\"sm\">SM</span>\n * <span comBadge>Default</span>\n * <span comBadge size=\"lg\">Large</span>\n * ```\n *\n * @example As a link (hover activates automatically)\n * ```html\n * <a href=\"/alerts\" comBadge variant=\"warn\">3 alerts</a>\n * ```\n *\n * @example With an icon (SVG auto-sized)\n * ```html\n * <span comBadge variant=\"success\">\n *   <svg><!-- check icon --></svg>\n *   Online\n * </span>\n * ```\n *\n * @example Dynamic variant\n * ```html\n * <span comBadge [variant]=\"statusVariant()\">{{ statusLabel() }}</span>\n * ```\n */\n@Directive({\n  selector: '[comBadge]',\n  exportAs: 'comBadge',\n  host: {\n    '[class]': 'computedClass()',\n  },\n})\nexport class ComBadge {\n  /** Visual variant — maps to semantic token pairings */\n  readonly variant: InputSignal<BadgeVariant> = input<BadgeVariant>('primary');\n\n  /** Badge size */\n  readonly size: InputSignal<BadgeSize> = input<BadgeSize>('default');\n\n  /** Fully rounded pill shape */\n  readonly pill: InputSignalWithTransform<boolean, unknown> = input(false, { transform: booleanAttribute });\n\n  /** Consumer CSS classes — merged with variant classes via mergeClasses() */\n  readonly userClass: InputSignal<string> = input<string>('', { alias: 'class' });\n\n  /** @internal Computed host class from CVA + consumer overrides */\n  protected readonly computedClass: Signal<string> = computed(() =>\n    mergeClasses(\n      badgeVariants({\n        variant: this.variant(),\n        size: this.size(),\n        pill: this.pill(),\n      }),\n      this.userClass()\n    )\n  );\n}\n","// Public API for the badge directive\n\n// Main directive\nexport { ComBadge } from './badge.directive';\n\n// Variants (for advanced customization)\nexport { badgeVariants } from './badge.variants';\n\nexport type {\n  BadgeVariant,\n  BadgeSize,\n  BadgeVariants,\n} from './badge.variants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}