{"version":3,"file":"edsis-component-input-group.mjs","sources":["../../../library/component/input-group/input-group.component.ts","../../../library/component/input-group/edsis-component-input-group.ts"],"sourcesContent":["import { Component, ElementRef, computed, inject, input } from '@angular/core';\nimport { cn } from '@edsis/component/class';\nimport { buttonVariants, type ButtonSize, type ButtonVariant } from '@edsis/component/button';\n\nexport type InputGroupAddonAlign = 'inline-start' | 'inline-end' | 'block-start' | 'block-end';\nexport type InputGroupButtonSize = Extract<ButtonSize, 'xs' | 'icon-xs' | 'sm' | 'icon-sm'>;\n\nconst GROUP_BASE = [\n  'relative flex min-w-0 flex-wrap overflow-hidden rounded-lg border border-input bg-transparent text-sm shadow-sm',\n  'transition-[border-color,box-shadow] focus-within:border-ring focus-within:ring-1 focus-within:ring-ring',\n  '[&>[data-slot=input-group-control]]:min-w-0',\n  '[&>[data-slot=input-group-control]]:flex-1',\n  '[&>[data-slot=input-group-control]]:rounded-none',\n  '[&>[data-slot=input-group-control]]:border-0',\n  '[&>[data-slot=input-group-control]]:bg-transparent',\n  '[&>[data-slot=input-group-control]]:shadow-none',\n  '[&>[data-slot=input-group-control]]:outline-none',\n  '[&>[data-slot=input-group-control]]:focus-visible:ring-0',\n  '[&>[data-slot=input-group-control]]:focus-visible:outline-none',\n].join(' ');\n\nconst addonAlignClasses: Record<InputGroupAddonAlign, string> = {\n  'inline-start': [\n    'order-10',\n    '[border-inline-end-width:1px]',\n    '[border-inline-end-color:hsl(var(--border))]',\n  ].join(' '),\n  'inline-end': [\n    'order-30',\n    '[border-inline-start-width:1px]',\n    '[border-inline-start-color:hsl(var(--border))]',\n  ].join(' '),\n  'block-start': [\n    'order-0 basis-full py-2',\n    '[border-block-end-width:1px]',\n    '[border-block-end-color:hsl(var(--border))]',\n  ].join(' '),\n  'block-end': [\n    'order-40 basis-full py-2',\n    '[border-block-start-width:1px]',\n    '[border-block-start-color:hsl(var(--border))]',\n  ].join(' '),\n};\n\nconst ADDON_BASE = [\n  'flex min-h-9 shrink-0 items-center gap-1.5 bg-[hsl(var(--muted)/var(--opacity-30))] px-3 text-sm text-muted-foreground',\n  '[&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n].join(' ');\n\nconst CONTROL_BASE = [\n  'order-20 min-w-0 flex-1 bg-transparent text-sm text-foreground',\n  'placeholder:text-muted-foreground',\n  'disabled:cursor-not-allowed disabled:opacity-50',\n  'focus-visible:outline-none',\n  'aria-[invalid=true]:text-destructive',\n].join(' ');\n\n@Component({\n  selector: 'InputGroup',\n  host: { '[class]': 'classes()' },\n  template: `<ng-content />`,\n})\nexport class InputGroupComponent {\n  readonly class = input<string>('');\n\n  protected readonly classes = computed(() => cn(GROUP_BASE, this.class()));\n}\n\n@Component({\n  selector: 'InputGroupAddon',\n  host: {\n    '[class]': 'classes()',\n    '[attr.data-align]': 'align()',\n  },\n  template: `<ng-content />`,\n})\nexport class InputGroupAddonComponent {\n  readonly align = input<InputGroupAddonAlign>('inline-start');\n  readonly class = input<string>('');\n\n  protected readonly classes = computed(() =>\n    cn(ADDON_BASE, addonAlignClasses[this.align()], this.class()),\n  );\n}\n\n@Component({\n  selector: 'InputGroupText',\n  host: { '[class]': 'classes()' },\n  template: `<ng-content />`,\n})\nexport class InputGroupTextComponent {\n  readonly class = input<string>('');\n\n  protected readonly classes = computed(() =>\n    cn(\n      'inline-flex items-center gap-1.5 whitespace-nowrap text-sm leading-none text-current',\n      this.class(),\n    ),\n  );\n}\n\n@Component({\n  selector: 'button[InputGroupButton], a[InputGroupButton]',\n  host: {\n    '[class]': 'classes()',\n    '[attr.data-size]': 'size()',\n    '[attr.data-variant]': 'variant()',\n  },\n  template: `<ng-content />`,\n})\nexport class InputGroupButtonComponent {\n  readonly variant = input<ButtonVariant>('ghost');\n  readonly size = input<InputGroupButtonSize>('xs');\n  readonly class = input<string>('');\n\n  protected readonly classes = computed(() =>\n    cn(\n      buttonVariants({ variant: this.variant(), size: this.size() }),\n      'shrink-0 shadow-none',\n      this.class(),\n    ),\n  );\n}\n\n@Component({\n  selector: 'input[InputGroupInput]',\n  host: {\n    '[class]': 'classes()',\n    'data-slot': 'input-group-control',\n  },\n  template: '',\n})\nexport class InputGroupInputComponent {\n  private readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n  readonly class = input<string>('');\n\n  protected readonly classes = computed(() => cn(CONTROL_BASE, 'h-9 px-3 py-2', this.class()));\n\n  focus(): void {\n    this.el.nativeElement.focus();\n  }\n}\n\n@Component({\n  selector: 'textarea[InputGroupTextarea]',\n  host: {\n    '[class]': 'classes()',\n    'data-slot': 'input-group-control',\n  },\n  template: '',\n})\nexport class InputGroupTextareaComponent {\n  private readonly el = inject<ElementRef<HTMLTextAreaElement>>(ElementRef);\n\n  readonly class = input<string>('');\n\n  protected readonly classes = computed(() =>\n    cn(CONTROL_BASE, 'min-h-[120px] w-full resize-none px-3 py-2.5', this.class()),\n  );\n\n  focus(): void {\n    this.el.nativeElement.focus();\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}