{"version":3,"file":"fibo-ui-components.mjs","sources":["../../../../projects/fibo-ui/components/src/lib/loading-spin/loading-spin.ts","../../../../projects/fibo-ui/components/src/lib/dialog/modal-state.ts","../../../../projects/fibo-ui/components/src/lib/dialog/dialog-service.ts","../../../../projects/fibo-ui/components/src/lib/dialog/dialog-trigger.ts","../../../../projects/fibo-ui/components/src/lib/dialog/dialog.ts","../../../../projects/fibo-ui/components/src/lib/dialog/dialog.html","../../../../projects/fibo-ui/components/src/lib/form/form-field/form-field.ts","../../../../projects/fibo-ui/components/src/lib/form/form-field/form-field.html","../../../../projects/fibo-ui/components/src/lib/select/select.ts","../../../../projects/fibo-ui/components/src/lib/select/select.html","../../../../projects/fibo-ui/components/src/lib/checkbox/checkbox.ts","../../../../projects/fibo-ui/components/src/lib/checkbox/checkbox.html","../../../../projects/fibo-ui/components/src/lib/data-list/listbox/listbox.ts","../../../../projects/fibo-ui/components/src/lib/data-list/listbox/listbox.html","../../../../projects/fibo-ui/components/src/lib/select/multiple-select.ts","../../../../projects/fibo-ui/components/src/lib/select/multiple-select.html","../../../../projects/fibo-ui/components/src/lib/select/multiple-select-input.ts","../../../../projects/fibo-ui/components/src/lib/tooltip/tooltip-service.ts","../../../../projects/fibo-ui/components/src/lib/tooltip/tooltip-container.ts","../../../../projects/fibo-ui/components/src/lib/tooltip/tooltip-container.html","../../../../projects/fibo-ui/components/src/lib/tooltip/tooltip.ts","../../../../projects/fibo-ui/components/src/lib/menu/menu-panel.ts","../../../../projects/fibo-ui/components/src/lib/menu/popover-submenu-trigger.ts","../../../../projects/fibo-ui/components/src/lib/menu/popover-menu.ts","../../../../projects/fibo-ui/components/src/lib/menu/popover-menu.html","../../../../projects/fibo-ui/components/src/lib/menu/menu-item.ts","../../../../projects/fibo-ui/components/src/lib/menu/collapse-submenu-item.ts","../../../../projects/fibo-ui/components/src/lib/menu/side-menu-chain.ts","../../../../projects/fibo-ui/components/src/lib/menu/side-menu.ts","../../../../projects/fibo-ui/components/src/lib/menu/side-menu.html","../../../../projects/fibo-ui/components/src/lib/confirmation/confirmation-service.ts","../../../../projects/fibo-ui/components/src/lib/confirmation/confirmation.ts","../../../../projects/fibo-ui/components/src/lib/confirmation/confirmation.html","../../../../projects/fibo-ui/components/src/lib/confirmation/confirmation-trigger.ts","../../../../projects/fibo-ui/components/src/lib/notification/notifier.ts","../../../../projects/fibo-ui/components/src/lib/notification/notification.ts","../../../../projects/fibo-ui/components/src/lib/notification/notification.html","../../../../projects/fibo-ui/components/src/lib/datepicker/calendar/active-date.state.ts","../../../../projects/fibo-ui/components/src/lib/datepicker/calendar/calendar.ts","../../../../projects/fibo-ui/components/src/lib/datepicker/calendar/calendar-date-selection-model.ts","../../../../projects/fibo-ui/components/src/lib/datepicker/calendar/calendar-date-range-selection-model.ts","../../../../projects/fibo-ui/components/src/lib/datepicker/datepicker.ts","../../../../projects/fibo-ui/components/src/lib/datepicker/datepicker.html","../../../../projects/fibo-ui/components/src/lib/form/reset-control.ts","../../../../projects/fibo-ui/components/src/lib/form/reset-control.html","../../../../projects/fibo-ui/components/src/lib/datepicker/date-range-picker.ts","../../../../projects/fibo-ui/components/src/lib/datepicker/date-range-picker.html","../../../../projects/fibo-ui/components/src/lib/input/input.ts","../../../../projects/fibo-ui/components/src/lib/input/input.html","../../../../projects/fibo-ui/components/src/lib/switch/switch.ts","../../../../projects/fibo-ui/components/src/lib/switch/switch.html","../../../../projects/fibo-ui/components/src/lib/table/column.ts","../../../../projects/fibo-ui/components/src/lib/table/table.ts","../../../../projects/fibo-ui/components/src/lib/table/column-header.ts","../../../../projects/fibo-ui/components/src/lib/table/table-row.ts","../../../../projects/fibo-ui/components/src/public-api.ts","../../../../projects/fibo-ui/components/src/fibo-ui-components.ts"],"sourcesContent":["import {Component, input} from '@angular/core';\nimport {CommonModule} from '@angular/common';\n\n@Component({\n  selector: 'fibo-loading-spin',\n  standalone: true,\n  imports: [CommonModule],\n  host: {\n    class: 'min-w-4 min-h-4',\n  },\n  styles: `\n\n    .spinner {\n      animation: rotate 2s linear infinite;\n\n      & .path {\n        stroke-linecap: round;\n        animation: dash 1.5s ease-in-out infinite;\n      }\n\n    }\n\n    @keyframes rotate {\n      100% {\n        transform: rotate(360deg);\n      }\n    }\n\n    @keyframes dash {\n      0% {\n        stroke-dasharray: 1, 150;\n        stroke-dashoffset: 0;\n      }\n      50% {\n        stroke-dasharray: 90, 150;\n        stroke-dashoffset: -35;\n      }\n      100% {\n        stroke-dasharray: 90, 150;\n        stroke-dashoffset: -124;\n      }\n    }\n\n  `,\n  template: `\n    <svg class=\"spinner\"  viewBox=\"0 0 50 50\">\n      <circle class=\"path\" cx=\"25\" cy=\"25\" r=\"20\" stroke=\"currentColor\"  fill=\"none\"  [attr.stroke-width]=\"strokeWidth()\"></circle>\n    </svg>\n  `\n})\nexport class LoadingSpin  {\n  strokeWidth = input(4)\n}\n","import {computed, linkedSignal, signal, TemplateRef} from '@angular/core';\n\nexport type DialogConfig = {\n  mode?: 'dialog'|'drawer'\n}\n\nexport default class ModalState {\n\n  content = signal<TemplateRef<unknown>|null>(null);\n\n  isOpen = computed(()=> !!this.content());\n  isVisible = linkedSignal({\n    source: this.isOpen,\n    computation: (isOpen) => isOpen\n  })\n\n  config = signal< DialogConfig | null >(null);\n\n  open(content: TemplateRef<unknown>, config: DialogConfig|null = null) {\n    this.content.set(content);\n    if(config) {\n        this.config.set(config);\n    }\n  }\n\n  close () {\n    this.isVisible.set(false);\n    setTimeout(\n      () => {\n        this.content.set(null);\n        this.config.set(null);\n      },300)\n  };\n\n}\n","import {Injectable, TemplateRef} from '@angular/core';\nimport ModalState from './modal-state';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DialogService extends ModalState {\n\n\n}\n","import {Directive, ElementRef, inject, input, model, signal, TemplateRef} from '@angular/core';\nimport {DialogService} from './dialog-service';\nimport {DialogConfig} from './modal-state';\n\n\n@Directive({\n  selector: '[fiboDialogTrigger]',\n  exportAs: 'FiboDialogTrigger',\n  standalone: true,\n  host: {\n    '(click)': 'open()'\n  }\n})\nexport class DialogTrigger {\n  dialog = inject(DialogService);\n  content = input.required<TemplateRef<unknown>>({alias: 'fiboDialogTrigger'});\n  config = input<DialogConfig|null>(null,{alias:'fiboDialogConfig'});\n\n  open() {\n    this.dialog.open(this.content(),this.config())\n  }\n\n}\n","import {\n  Component, computed,\n  effect,\n  inject,\n  input,\n  model,\n  OnDestroy,\n  output,\n  signal,\n  TemplateRef,\n  ViewContainerRef\n} from '@angular/core';\nimport {NgClass, NgTemplateOutlet} from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport {DialogService} from './dialog-service';\n@Component({\n  selector: 'fibo-dialog',\n  standalone: true,\n  imports: [NgTemplateOutlet, CommonModule],\n  templateUrl: './dialog.html',\n\n})\nexport class FiboDialog {\n  state = inject(DialogService)\n\n  isDrawerMode = computed(()=> !!this.state.config() && this.state.config()?.mode === 'drawer' );\n\n}\n","@if (state.isOpen()) {\n  <div  class=\"fibo-dialog-backdrop fixed inset-0 size-auto max-h-none max-w-none overflow-y-auto bg-transparent backdrop:bg-transparent\">\n    @if (state.isVisible()) {\n      <div (click)=\"state.close()\" class=\"fixed inset-0 bg-black/30 dark:bg-black/50\"></div>\n    }\n\n    @if (isDrawerMode()) {\n          <div class=\"pointer-events-none fixed inset-y-0 right-0 flex max-w-full pl-10\">\n            @if (state.isVisible()) {\n              <div class=\"pointer-events-auto w-screen max-w-md shadow-xl\">\n                <div class=\"flex h-full  flex-col overflow-y-scroll bg-background dark:outline dark:-outline-offset-1 dark:outline-white/8\">\n                    <ng-container *ngTemplateOutlet=\"state.content()\"></ng-container>\n                </div>\n              </div>\n            }\n          </div>\n\n    } @else {\n      <div tabindex=\"0\" class=\"flex min-h-full  items-end justify-center text-center focus:outline-none sm:items-center sm:p-0 py-4\">\n\n          @if (state.isVisible()) {\n            <div (click)=\"$event.stopPropagation()\" class=\"relative overflow-y-auto rounded-lg bg-background text-left shadow-xl sm:p-2 dark:outline\n             dark:-outline-offset-1 dark:outline-white/8 my-4\">\n              <ng-container *ngTemplateOutlet=\"state.content()\"></ng-container>\n            </div>\n          }\n\n      </div>\n    }\n  </div>\n}\n\n","import {Component, computed, contentChildren, inject, input, ViewEncapsulation} from '@angular/core';\nimport {IsEmptyPipe} from '@fibo-ui/cdk';\nimport {PopoverTrigger} from '@fibo-ui/cdk';\nimport {NgTemplateOutlet} from '@angular/common';\nimport {FormFieldControl, FirstFormErrorPipe} from '@fibo-ui/cdk';\nimport {FormFieldContent} from '@fibo-ui/cdk';\nimport {LucideAngularModule} from 'lucide-angular';\n\n\n@Component({\n  selector: 'fibo-form-field',\n  imports: [\n    IsEmptyPipe,\n    NgTemplateOutlet,\n    LucideAngularModule,\n  ],\n  templateUrl: './form-field.html',\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    '(click)': 'handleClick()',\n    '(focusout)': 'onFocusOut($event)',\n    '[attr.aria-disabled]': 'cva()?.disabled()',\n    '[attr.aria-required]': 'cva()?.isRequired() || null',\n    '[attr.data-appearance]': 'control().appearance()',\n    '[attr.data-error]': 'cva()?.hasError() || null',\n    '[style.pointer-events]': \"cva()?.disabled() ? 'none' : 'auto'\",\n    '[tabindex]': \"control().cva.disabled()?'-1':'0'\",\n    '[class]': \"'content-center   fibo-form-field' + (control().controlClass() ? ' ' + control().controlClass() : '')\",\n    '[class.min-h-14]': \"!!control().label()\",\n  },\n})\n\nexport class FormField<T> {\n  control = input.required<FormFieldControl<T>>()\n  prependIcon = input<string>()\n  appendIcon = input<string>()\n  cva = computed(() => this.control()?.cva)\n  inputs = contentChildren<FormFieldContent>(FormFieldContent)\n  popover = inject(PopoverTrigger, {optional: true, self: true})\n  showErrors = true;\n\n  handleClick() {\n    if (this.control().cva.disabled()) return;\n    setTimeout(() => {\n      if (this.inputs().length) {\n        this.inputs()[0].element.nativeElement.focus();\n      } else if (this.control()?.inputs().length) {\n        // @ts-ignore\n        this.control()?.inputs()[0].element.nativeElement.focus();\n      }\n    }, 0);\n  }\n\n  onFocusOut(event: FocusEvent) {\n    const relatedTarget = event.relatedTarget as Node;\n    const controlElement = this.control().element.nativeElement;\n    \n    if (!relatedTarget) {\n      this.control()?.cva.onTouched();\n      return;\n    }\n\n    // Check if focus is moving to the popover container (rendered in portal outlet)\n    const popoverElement = this.popover?.popover()?.element.nativeElement;\n    const isMovingToPopover = popoverElement?.contains(relatedTarget);\n    \n    // Don't close if focus is moving within the control element or to the popover\n    if (controlElement.contains(relatedTarget) || isMovingToPopover) {\n      return;\n    }\n\n    this.popover?.close();\n    this.control()?.cva.onTouched();\n  }\n\n}\n","@let formFieldControl = control();\n@let empty = formFieldControl.cva.value() | isEmpty;\n@let disabled = formFieldControl.cva.disabled();\n@let label = formFieldControl.label();\n@let hasInnerContent = !!inputs().length || !!formFieldControl.inputs().length;\n@let hasFixedLabel = !!control()?.fixedLabel();\n\n  @if (cva()?.hasError()) {\n    <div class=\"backdrop absolute inset-0 pointer-events-none  rounded-md\n   bg-gradient-to-r from-red-700/4  from-0% via-red-700/6 via-30%  to-red-700/2 to-100%\n    \"></div>\n  }\n\n  <div\n       class=\" flex items-center space-x-2 text-left px-3 py-1  \"\n  >\n    @if (formFieldControl.prependTemplate(); as prep) {\n      <ng-container [ngTemplateOutlet]=\"prep.template\"></ng-container>\n    }\n\n    <div class=\"min-w-0 grow relative\">\n\n      @if (label) {\n        <div class=\"fibo-form-field-label\"\n               [class.text-xs]=\"!empty || hasFixedLabel\"\n               [class.group-focus-within:text-xs]=\"hasInnerContent\"\n               [class.group-aria-expanded:text-xs]=\"hasInnerContent\"\n        >\n          {{ label }}@if (formFieldControl.cva.isRequired()) {\n          <span>*</span>\n        }\n        </div>\n      }\n      @if (formFieldControl.placeholder() && empty && !hasInnerContent) {\n\n        @if (label && !hasFixedLabel) {\n\n        } @else {\n          <div class=\"from-field-placeholder text-sm\">{{ formFieldControl.placeholder() }}</div>\n        }\n\n      }\n      <div [class.block]=\"(hasInnerContent && label)\"\n           [class.group-aria-expanded:block]=\"hasInnerContent\"\n           [class.group-focus-within:block]=\"empty || hasInnerContent\"\n           [class.hidden]=\"(empty && !hasInnerContent && !hasFixedLabel) || (empty && label && !hasFixedLabel)\"\n           class=\"text-sm\"\n      >\n        <ng-content></ng-content>\n      </div>\n\n\n    </div>\n    @let displayReset = empty || disabled;\n    @let resetCallback = formFieldControl.resetCallback();\n    @let hasResetAction = formFieldControl.cva.ngControl || resetCallback;\n    @if (!displayReset && hasResetAction) {\n      <div>\n        <button\n          (click)=\"$event.preventDefault(); $event.stopPropagation(); resetCallback ? resetCallback() : formFieldControl.cva.ngControl?.reset()\"\n          type=\"button\"\n          class=\"flex-none\n            hidden cursor-pointer\n            group-hover:block\n            group-focus-within:block\n            rounded-full  text-foreground-tertiary hover:text-foreground\"\n        >\n          <lucide-icon name=\"X\" size=\"16\" class=\"\"></lucide-icon>\n        </button>\n        <div class=\"group-hover:hidden group-focus-within:hidden\">\n          <ng-container [ngTemplateOutlet]=\"formFieldControl.appendTemplate()?.template || defaultAppendBlock\"></ng-container>\n        </div>\n      </div>\n\n    } @else {\n      <ng-container [ngTemplateOutlet]=\"formFieldControl.appendTemplate()?.template || defaultAppendBlock\"></ng-container>\n    }\n\n    <ng-template #defaultAppendBlock>\n          @if (appendIcon(); as appendIcon) {\n            <lucide-icon [name]=\"appendIcon\" size=\"16\"\n                         class=\"self-center   justify-self-end fibo-form-field-icon text-foreground-tertiary\"></lucide-icon>\n          }\n    </ng-template>\n  </div>\n\n\n","import {Component, computed, inject, input, TemplateRef, viewChild, ViewEncapsulation} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from \"@angular/forms\";\nimport {DataList, ListItem, PopoverTriggerClick, Popover, SingleSelectionModel, PortalTemplateDirective,} from '@fibo-ui/cdk';\n\nimport {FormField} from '../form/form-field/form-field';\nimport {FormFieldControl, FormFieldErrors} from '@fibo-ui/cdk';\nimport {safeProp} from '@fibo-ui/cdk';\nimport {LucideAngularModule} from 'lucide-angular';\n\n@Component({\n  selector: 'fibo-select',\n  standalone: true,\n  imports: [\n    CommonModule,\n    FormsModule,\n    Popover,\n    SingleSelectionModel,\n    FormField,\n    PopoverTriggerClick,\n    DataList,\n    ListItem,\n    FormFieldErrors,\n    LucideAngularModule,\n    PortalTemplateDirective,\n  ],\n  templateUrl: './select.html',\n  encapsulation: ViewEncapsulation.None,\n  hostDirectives: [\n    {\n      directive: FormFieldControl,\n      inputs: ['label', 'placeholder','fixedLabel', 'appearance', 'controlClass', 'resetCallback'],\n    }\n  ],\n})\nexport class Select<T = any>  {\n  formFieldControl = inject<FormFieldControl<string|number|null>>(FormFieldControl)\n  value =  this.formFieldControl.cva.value;\n  disabled =  this.formFieldControl.cva.disabled\n  items = input<T[]>([]);\n  itemTemplate = input<TemplateRef<any> | undefined>(undefined);\n\n  popoverFullWidth = input<boolean>(true);\n  popoverClass = input<string>('');\n\n  valueProp = input<keyof T>('value' as keyof T);\n  labelProp = input<keyof T>('label' as keyof T);\n\n  currentSelectedItem = computed(() => {\n    const currentValue = this.value();\n    return this.items().find(item => this.getValue(item) === currentValue);\n  });\n\n  getValue(item: T): string | number {\n    return safeProp(item, this.valueProp());\n  }\n\n  getLabel(item: T): string {\n    return String(safeProp(item, this.labelProp()));\n  }\n}\n","<fibo-form-field\n  [control]=\"formFieldControl\"\n  appendIcon=\"chevron-down\"\n  fiboPopoverTriggerClick #trigger=\"PopoverTrigger\">\n\n    @if(currentSelectedItem()) {\n      @if (itemTemplate(); as template) {\n        <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: currentSelectedItem() }\"></ng-container>\n      } @else {\n        <span class=\" truncate\">\n         {{ getLabel(currentSelectedItem()!) }}\n        </span>\n      }\n    }\n\n</fibo-form-field>\n\n<fibo-form-field-errors [control]=\"formFieldControl\" ></fibo-form-field-errors>\n\n<ng-template fiboPortalTemplate [isOpen]=\"trigger.isOpen\">\n  <div fiboPopover\n       fiboDataList\n       class=\"fibo-popover py-1 px-1 rounded-md\"\n       [class]=\"popoverClass()\"\n       [popoverTrigger]=\"trigger\"\n       [popoverFullWidth]=\"popoverFullWidth()\"\n       [(SingleSelectionModel)]=\"value\"\n       (optionTriggered)=\"trigger.close()\"\n  >\n<!--    <div class=\"flex px-2 space-x-2\">-->\n<!--      <lucide-icon name=\"search\" size=\"16\" class=\"text-foreground-secondary self-center\"></lucide-icon>-->\n<!--      <input-->\n<!--        class=\"w-full py-1 outline-hidden text-sm fibo-input\"-->\n<!--        placeholder=\"Search...\"-->\n<!--        type=\"text\"-->\n<!--      />-->\n<!--    </div>-->\n<!--    <div class=\"h-px  bg-border-primary my-1 mx-1\"></div>-->\n    <div class=\"max-h-70 overflow-y-auto fibo-scrollbar\">\n      @for (item of items(); track getValue(item)) {\n        <a [fiboListItemValue]=\"getValue(item)\"\n           class=\"datalist-item py-1 px-2 rounded-md relative group text-sm\">\n          @if (itemTemplate(); as template) {\n            <ng-container [ngTemplateOutlet]=\"template\"\n                          [ngTemplateOutletContext]=\"{ $implicit: item, isSelected: currentSelectedItem() && getValue(currentSelectedItem()!) === getValue(item) }\"></ng-container>\n          } @else {\n            <span class=\"block truncate font-normal\">{{ getLabel(item) }}</span>\n          }\n        </a>\n      }\n    </div>\n\n  </div>\n</ng-template>\n","import {ChangeDetectionStrategy, Component, inject, input, ViewEncapsulation} from '@angular/core';\nimport {PrimitiveValueAccessor} from '@fibo-ui/cdk';\n\n@Component({\n  selector: 'fibo-checkbox',\n  templateUrl: './checkbox.html',\n  encapsulation: ViewEncapsulation.None,\n  hostDirectives: [\n    {\n      directive: PrimitiveValueAccessor,\n      inputs: ['value: checked', 'disabled'],\n      outputs: ['valueChange: checkedChange'],\n    }\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    '[attr.aria-selected]': 'checked()',\n    'class': 'group flex items-center'\n  }\n})\nexport class Checkbox {\n\n  indeterminate = input(false);\n  readonly = input(false);\n\n  protected cva = inject<PrimitiveValueAccessor<boolean>>(PrimitiveValueAccessor);\n\n  checked = this.cva.value;\n\n  onInputChange(event: Event) {\n    if (this.cva.disabled()) return;\n    const inputEl = event.target as HTMLInputElement;\n    this.checked.set(!!inputEl.checked);\n  }\n\n}\n","<label class=\"inline-flex items-center gap-2 cursor-pointer select-none\"\n       [attr.aria-disabled]=\"cva.disabled()\">\n  @if (!readonly()) {\n    <input\n      type=\"checkbox\"\n      class=\"peer sr-only\"\n      [checked]=\"checked() ?? false\"\n      [disabled]=\"cva.disabled()\"\n      [indeterminate]=\"indeterminate()\"\n      (change)=\"onInputChange($event)\"\n      (blur)=\"cva.onTouched()\"\n    />\n  }\n  <span class=\"relative inline-flex items-center justify-center h-4 w-4 rounded border\n              transition-colors duration-200 ease-in-out flex-shrink-0\n              peer-focus-visible:outline-1 peer-focus-visible:outline-blue-500 dark:peer-focus-visible:outline-blue-400 peer-focus-visible:outline-offset-2\n              peer-disabled:opacity-50 peer-disabled:cursor-not-allowed\"\n        [class.border-gray-300]=\"!checked()\"\n        [class.dark:border-neutral-600]=\"!checked()\"\n        [class.bg-white]=\"!checked()\"\n        [class.dark:bg-transparent]=\"!checked()\"\n        [class.bg-blue-500]=\"checked()\"\n        [class.border-transparent]=\"checked()\">\n    @if (indeterminate()) {\n      <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"white\" class=\"size-4\">\n        <path d=\"M3.75 7.25a.75.75 0 0 0 0 1.5h8.5a.75.75 0 0 0 0-1.5h-8.5Z\" />\n      </svg>\n    }\n    @else if (checked()) {\n      <svg class=\"absolute size-3.5\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"white\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n        <polyline points=\"20 6 9 17 4 12\" />\n      </svg>\n    }\n  </span>\n  <span class=\"text-sm dark:text-neutral-200\">\n    <ng-content></ng-content>\n  </span>\n</label>\n","import {Component, inject, input, TemplateRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DataList, MultipleSelectionModel, ListItem, SELECTION_MODEL, SelectionModel, safeProp} from '@fibo-ui/cdk';\nimport {Checkbox} from '../../checkbox/checkbox';\n\n@Component({\n  selector: 'fibo-listbox',\n  imports: [\n    CommonModule,\n    Checkbox,\n    ListItem\n  ],\n  hostDirectives: [{\n    directive: DataList,\n    inputs: ['disabled','popoverTrigger'],\n    outputs: ['optionTriggered'],\n  }],\n  templateUrl: './listbox.html',\n  host: {\n    'class': 'max-h-70 overflow-y-auto py-1 px-1',\n    'role': 'listbox',\n    'tabindex': '-1'\n  },\n})\nexport class Listbox<T = any> {\n  selectionModel = inject(SELECTION_MODEL) as SelectionModel<T>;\n  disabled = input(false);\n  items = input<T[]>([]);\n  itemTemplate = input<TemplateRef<any> | undefined>(undefined);\n\n  valueProp = input<keyof T>('value' as keyof T);\n  labelProp = input<keyof T>('label' as keyof T);\n\n  get isMultiple() {\n    return this.selectionModel instanceof MultipleSelectionModel;\n  }\n\n  getValue(item: T): string | number {\n    return safeProp(item, this.valueProp());\n  }\n\n  getLabel(item: T): string {\n    return String(safeProp(item, this.labelProp()));\n  }\n\n  isSelected(item: T): boolean {\n    return this.selectionModel.isSelected(item as any);\n  }\n}\n","  @if (items().length === 0) {\n    <div class=\"w-full text-gray-400 text-sm px-3 py-2\">No items found</div>\n  }\n  @for (item of items(); track getValue(item)) {\n    <a [fiboListItemValue]=\"getValue(item)\" #option=\"ListItem\"\n       class=\"datalist-item py-1 px-2 rounded-md relative group text-sm items-center\">\n      @if (isMultiple) {\n        <fibo-checkbox\n          [checked]=\"option.isSelected()\">\n        </fibo-checkbox>\n      }\n      @if (itemTemplate(); as template) {\n        <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item, isSelected: option.isSelected() }\"></ng-container>\n      } @else {\n        <span class=\"block truncate font-normal\">{{ getLabel(item) }}</span>\n      }\n    </a>\n  }\n","import {Component, inject, input, TemplateRef, viewChild,} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {FormsModule} from \"@angular/forms\";\nimport {IsEmptyPipe, MultipleSelectionModel, Popover,PopoverTriggerClick, PortalTemplateDirective} from '@fibo-ui/cdk';\nimport {FormFieldPopoverTrigger} from '@fibo-ui/cdk';\nimport {Listbox} from '../data-list/listbox/listbox';\nimport {FormField} from '../form/form-field/form-field';\nimport {FormFieldControl} from '@fibo-ui/cdk';\nimport {safeProp} from '@fibo-ui/cdk';\nimport {LucideAngularModule} from 'lucide-angular';\nimport {FormFieldErrors} from '@fibo-ui/cdk';\n\n@Component({\n  selector: 'fibo-multiple-select',\n  standalone: true,\n  imports: [\n    CommonModule,\n    FormsModule,\n    IsEmptyPipe,\n    Listbox,\n    FormField,\n    PopoverTriggerClick,\n    LucideAngularModule,\n    FormFieldErrors,\n    Popover,\n    MultipleSelectionModel,\n    PortalTemplateDirective,\n  ],\n  templateUrl: './multiple-select.html',\n  hostDirectives: [\n    {\n      directive: FormFieldControl,\n      inputs: ['label', 'placeholder','fixedLabel', 'appearance', 'controlClass', 'resetCallback'],\n    }\n  ],\n})\nexport class MultipleSelect<T> {\n  formFieldControl = inject<FormFieldControl<(string|number)[]|null>>(FormFieldControl)\n  value = this.formFieldControl.cva.value;\n  disabled = this.formFieldControl.cva.disabled;\n  items = input<T[]>([]);\n  itemTemplate = input<TemplateRef<any> | undefined>(undefined);\n  selectedItemTemplate = input<TemplateRef<any> | undefined>(undefined);\n\n  popoverFullWidth = input<boolean>(true);\n  popoverClass = input<string>('');\n\n  valueProp = input<keyof T>('value' as keyof T);\n  labelProp = input<keyof T>('label' as keyof T);\n\n  removeValue(value: unknown) {\n    const currentValue = this.value();\n    if(! currentValue) return;\n    this.value.set( currentValue.filter((v: unknown) => v !== value));\n  }\n  trigger = viewChild<FormFieldPopoverTrigger>('trigger')\n\n  selectedItem(value: string | number): T | undefined {\n    return this.items().find(item => this.getValue(item) === value);\n  }\n\n  getValue(item: T): string | number {\n    return safeProp(item, this.valueProp());\n  }\n\n  getLabel(item: T): string {\n    return String(safeProp(item, this.labelProp()));\n  }\n}\n","@let values = value() || [];\n@let disabled = formFieldControl.cva.disabled();\n@let empty  = (values | isEmpty);\n\n<fibo-form-field\n  appendIcon=\"chevron-down\"\n  [control]=\"formFieldControl\"\n  fiboPopoverTriggerClick #trigger=\"PopoverTrigger\">\n  <span class=\"w-full flex flex-wrap gap-x-1  gap-y-1 \"\n        [class]=\"{\n         '-ml-1.5': !empty,\n         'mt-1': !empty && formFieldControl.label(),\n        }\"\n  >\n        @for (value of values; track value) {\n                <button class=\"break-words focus-visible:outline flex items-center gap-1 text-gray-700 dark:text-neutral-300\n    bg-gray-950/10 dark:bg-white/10   shadow-none inset-ring-0 rounded-md px-1.5 py-1 disabled:opacity-70 \" [disabled]=\"disabled\">\n                      <span class=\"truncate flex-1\">\n                        @let item = selectedItem(value);\n                        @if(item) {\n                          @if (selectedItemTemplate(); as template) {\n                            <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n                          } @else {\n                             <span class=\"text-xs font-medium flex items-center justify-center leading-none\">{{ getLabel(item) }}</span>\n                          }\n                        }\n                      </span>\n\n                      @if (!disabled) {\n                        <button class=\"rounded-full cursor-pointer flex-shrink-0 btn-text\"\n                                (click)=\"removeValue(value)\"\n                                (keydown)=\"$event.stopPropagation()\"\n                        >\n                           <lucide-icon name=\"x\" size=\"14\" class=\" \"></lucide-icon>\n                          </button>\n                      }\n                </button>\n        }\n    <ng-content></ng-content>\n  </span>\n</fibo-form-field>\n<fibo-form-field-errors [control]=\"formFieldControl\" ></fibo-form-field-errors>\n\n<ng-template fiboPortalTemplate [isOpen]=\"trigger.isOpen\">\n  @if (items().length) {\n    <fibo-listbox fiboPopover\n                 class=\"fibo-popover rounded-md max-h-70 overflow-y-auto\"\n                 [class]=\"popoverClass()\"\n                 [popoverTrigger]=\"trigger\"\n                [popoverFullWidth]=\"popoverFullWidth()\"\n                 [(MultipleSelectionModel)]=\"value\"\n                 [items]=\"items()\"\n                 [valueProp]=\"valueProp()\"\n                 [labelProp]=\"labelProp()\"\n                 [itemTemplate]=\"itemTemplate()\"\n    ></fibo-listbox>\n  }\n</ng-template>\n","import { Directive, ElementRef, effect, inject, input, output, signal } from '@angular/core';\nimport {FormFieldContent} from '@fibo-ui/cdk';\nimport {MultipleSelect} from './multiple-select';\n\n@Directive({\n  selector: 'input[fiboMultipleSelectInput]',\n  standalone: true,\n  hostDirectives: [FormFieldContent],\n  host: {\n     class: 'fibo-input flex-1 w-full min-w-30 outline-0  appearance-none text-sm',\n    '[placeholder]': 'placeholder()',\n    '(focusin)': 'select.trigger()?.open()',\n    '(keydown.backspace)': 'removeLastValue()',\n    '(input)': 'onInput($event)',\n    '[disabled]': 'select.disabled()'\n  }\n})\nexport class MultipleSelectInput {\n\n  select = inject(MultipleSelect);\n\n  private readonly elementRef = inject(ElementRef);\n\n  placeholder = input<string>('');\n\n  valueChange = output<string>();\n\n  constructor() {\n\n    // this.select.control.valueChanges.subscribe(() => {\n    //   const inputElement = this.elementRef.nativeElement as HTMLInputElement;\n    //   inputElement.value = '';\n    //   this.valueChange.emit('');\n    // });\n\n    // effect(() => {\n    //  const  dataList =  this.select.dataList()\n    //   if(dataList) {\n    //     dataList.optionTriggered.subscribe(() => this.elementRef.nativeElement.focus())\n    //   }\n    // });\n  }\n\n  onInput(event: Event) {\n    const inputElement = event.target as HTMLInputElement;\n    this.valueChange.emit(inputElement.value);\n  }\n\n  removeLastValue() {\n    const inputElement = this.elementRef.nativeElement as HTMLInputElement;\n    // Only remove last value if input is empty\n    if (!inputElement.value) {\n      const value = this.select.value();\n      if (Array.isArray(value) && value.length > 0) {\n        this.select.value.set(value.slice(0, -1));\n      }\n    }\n  }\n}\n","import {ElementRef, Injectable, signal, TemplateRef} from '@angular/core';\nimport {Subject, takeUntil, timer} from 'rxjs';\nimport {Placement} from '@floating-ui/dom';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class TooltipService {\n\n  tooltipRef = signal<{\n    content:string | TemplateRef<unknown>,\n    referenceElement:HTMLElement,\n    placement:Placement\n  }|null>(null)\n\n\n  openDelay = signal<number>(100);\n  closeDelay = signal<number>(100);\n\n  private _interactionRequest = new Subject<'open' | 'close'>();\n\n  open(content: string | TemplateRef<unknown>, referenceElement: HTMLElement, placement:Placement) {\n    this._interactionRequest.next('open');\n    timer(this.openDelay())\n      .pipe(takeUntil(this._interactionRequest))\n      .subscribe(() => {\n        this.tooltipRef.set({\n          content,\n          referenceElement,\n          placement\n        })\n      });\n  }\n\n  keepOpen() {\n    this._interactionRequest.next('open');\n  }\n\n  close() {\n    this._interactionRequest.next('close');\n    timer(this.closeDelay())\n      .pipe(takeUntil(this._interactionRequest))\n      .subscribe(() => {\n        this.tooltipRef.set(null);\n      });\n  }\n\n}\n","import { Component, computed, effect, ElementRef, inject, input, TemplateRef, viewChild } from '@angular/core';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {PopoverArrow, PopoverPosition} from '@fibo-ui/cdk';\nimport {TooltipService} from './tooltip-service';\nimport { CommonModule } from '@angular/common';\n@Component({\n  selector: 'fibo-tooltip-container',\n  standalone: true,\n  imports: [\n    NgTemplateOutlet,\n    PopoverPosition,\n    PopoverArrow,\n    CommonModule\n  ],\n  templateUrl: './tooltip-container.html',\n})\nexport class TooltipContainer {\n  tooltipService = inject(TooltipService);\n\n  content = computed(() =>\n    typeof this.tooltipService.tooltipRef()?.content === 'string'\n      ? (this.tooltipService.tooltipRef()?.content as string)\n      : null\n  );\n  templateRef = computed(() =>\n    this.tooltipService.tooltipRef()?.content instanceof TemplateRef\n      ? (this.tooltipService.tooltipRef()?.content as TemplateRef<any>)\n      : null\n  );\n\n}\n","@let tooltipRef = tooltipService.tooltipRef();\n@if (tooltipRef ) {\n  <div fiboPopoverPosition\n       [referenceElement]=\"tooltipRef.referenceElement\"\n       [placement]=\"tooltipRef.placement\"\n       (mouseleave)=\"tooltipService.close()\"\n       (mouseenter)=\"tooltipService.keepOpen()\"\n       class=\"fibo-tooltip-container absolute rounded-md bg-background-tertiary\n          shadow-sm  inset-ring inset-ring-gray-950/10 dark:inset-ring-white/5  px-2.5 py-1 text-sm text-foreground\"\n  >\n\n    <div PopoverArrow\n         class=\"absolute w-3 h-3 bg-background-tertiary border-gray-950/10 dark:border-white/5  rotate-45\n                data-[placement=top]:border-r    data-[placement=top]:border-b\n                data-[placement=bottom]:border-l data-[placement=bottom]:border-t\n                data-[placement=right]:border-l  data-[placement=right]:border-b\n                data-[placement=left]:border-r   data-[placement=left]:border-t\"\n    >\n    </div>\n    @if ( content() ) {\n      {{ tooltipRef.content }}\n    } @else if (templateRef()) {\n      <ng-container *ngTemplateOutlet=\"templateRef()\"></ng-container>\n    }\n\n  </div>\n\n}\n","import {Directive, ElementRef, inject, input, TemplateRef} from '@angular/core';\nimport {TooltipService} from './tooltip-service';\nimport {Placement} from '@floating-ui/dom';\n\n\n@Directive({\n  selector: '[fiboTooltip]',\n  standalone: true,\n  host: {\n    '(mouseenter)': 'open()',\n    '(mouseleave)': 'close()',\n  },\n})\nexport class Tooltip {\n\n  element = inject(ElementRef).nativeElement;\n\n  tooltipService = inject(TooltipService)\n\n  content = input.required<string | TemplateRef<any>>({ alias: 'fiboTooltip' });\n\n  placement = input<Placement>('top');\n\n  open() {\n   this.tooltipService.open(this.content(), this.element,this.placement())\n  }\n\n  close() {\n    this.tooltipService.close()\n  }\n}\n","import {Directive, inject, signal} from '@angular/core';\nimport {DataList} from '@fibo-ui/cdk';\nimport {PopoverSubmenuTrigger} from './popover-submenu-trigger';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\nimport {debounceTime, filter} from 'rxjs';\n\n@Directive({\n  selector: '[fiboMenuPanel]',\n  hostDirectives: [\n    {\n      directive: DataList,\n      inputs: ['popoverTrigger']\n    }\n  ]\n})\nexport class MenuPanel {\n  dataList = inject(DataList);\n  popoverSubmenuItems = signal<PopoverSubmenuTrigger[]>([]);\n\n  constructor() {\n    //  close popup submenus if active menu item changed\n    toObservable(this.dataList.activeOption)\n      .pipe(\n        filter(activeItem => !!activeItem),\n        takeUntilDestroyed()\n      ).subscribe((activeItem) => {\n      this.popoverSubmenuItems()\n        .filter(submenuItem => submenuItem.dataListItem !== activeItem)\n        .forEach(item => {\n          item.popoverTrigger.close()\n        });\n    })\n\n    // on activate option - open submenu if it is the same list-item\n    toObservable(this.dataList.activeOption)\n      .pipe(\n        filter(activeItem => !!activeItem),\n        debounceTime(300),\n        takeUntilDestroyed()\n      ).subscribe((activeItem) => {\n      this.popoverSubmenuItems()\n        .filter(submenuItem => submenuItem.dataListItem !== activeItem)\n        .forEach(item => {\n          item.popoverTrigger.close()\n        });\n      this.popoverSubmenuItems()\n        .find(submenuItem => submenuItem.dataListItem === activeItem)?.popoverTrigger.open()\n    })\n  }\n\n}\n","import {Directive, inject, OnDestroy, OnInit} from '@angular/core';\nimport {ListItem, PopoverTrigger} from '@fibo-ui/cdk';\nimport {MenuPanel} from './menu-panel';\n\n// @ts-ignore\n@Directive({\n  selector: '[fiboSubmenuTrigger]',\n  hostDirectives: [\n    {\n      directive: ListItem,\n      inputs: ['disabled']\n    },\n    PopoverTrigger,\n  ],\n  host: {\n    '(keydown.enter)': 'popoverTrigger.open()',\n    '(keydown.escape)': 'popoverTrigger.close()',\n\n    '(keydown.arrowright)': 'popoverTrigger.popover()?.dataList?.navigateNext($event)',\n    '(click)': 'popoverTrigger.open()'\n  }\n})\nexport class PopoverSubmenuTrigger implements OnInit, OnDestroy {\n\n  popoverTrigger = inject(PopoverTrigger);\n  dataListItem = inject(ListItem);\n  menuPanel = inject(MenuPanel);\n\n  ngOnDestroy(): void {\n    const currentItems = this.menuPanel.popoverSubmenuItems();\n    this.menuPanel.popoverSubmenuItems.set(currentItems.filter(item => item !== this));\n  }\n\n  ngOnInit(): void {\n    const currentItems = this.menuPanel.popoverSubmenuItems();\n    if (!currentItems.includes(this)) {\n      this.menuPanel.popoverSubmenuItems.set([...currentItems, this]);\n    }\n  }\n\n}\n","import {Component, computed, inject, input, output, TemplateRef, viewChildren} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {Popover, DataList, ListItem} from '@fibo-ui/cdk';\nimport {RouterLink} from '@angular/router';\nimport {PopoverSubmenuTrigger} from './popover-submenu-trigger';\nimport {MenuPanel} from './menu-panel';\nimport {MenuItemType} from './menu-item.type';\nimport {LucideAngularModule} from 'lucide-angular';\n\n\n@Component({\n  selector: 'fibo-menu',\n  standalone: true,\n  hostDirectives: [\n    MenuPanel,\n    {\n      directive: Popover,\n      inputs: ['popoverTrigger']\n    }\n  ],\n  host: {\n    'class': 'p-1 min-w-[180px]  group rounded-md fibo-popover',\n    '(keydown.arrowleft)': 'focusToTrigger($event)'\n  },\n  imports: [CommonModule, ListItem, PopoverSubmenuTrigger, RouterLink, LucideAngularModule],\n  templateUrl: './popover-menu.html',\n})\nexport class PopoverMenu {\n  items = input<MenuItemType[]>();\n  menuContent = input<TemplateRef<any>>()\n  dataList = inject(DataList);\n  popover = inject(Popover);\n\n  itemsHaveIcons = computed(() => this.items()?.some((item) => !!item.icon));\n\n  submenuItems = viewChildren(PopoverSubmenuTrigger);\n\n  closeParent = output()\n\n  closeMenuWithParent() {\n    this.popover.close();\n    this.closeParent.emit()\n  }\n\n\n  focusToTrigger(event: Event) {\n    if (this.popover.popoverTrigger().isListItem) {\n      this.popover.popoverTrigger().element.focus();\n      this.dataList.resetActiveOption();\n      event.stopPropagation();\n      this.submenuItems()\n        .forEach(item => {\n          item.popoverTrigger.close()\n        });\n\n    }\n  }\n}\n","@for (item of items();  track idx ; let idx = $index) {\n    @if (item.children || item.content) {\n      <button fiboSubmenuTrigger [disabled]=\"!!item.disabled\" #menuItemTrigger=\"PopoverTrigger\"\n              class=\"datalist-item py-1 px-2 w-full rounded-md  items-center  group text-sm\"\n      >\n        @if (item?.icon) {\n          <lucide-icon [name]=\"item.icon\"  class=\"absolute self-center text-foreground-secondary  mt-2 size-4\"></lucide-icon>\n        }\n        <div\n          class=\"min-w-0 grow text-left\"\n          [class.ml-6]=\"itemsHaveIcons()\"\n\n        >{{ item.label }}</div>\n\n        <lucide-icon\n          name=\"chevron-right\"\n          class=\"flex-none text-foreground-secondary  group-data-active:text-foreground size-4 shrink-0\"\n        ></lucide-icon>\n      </button>\n      @if (menuItemTrigger.isOpen()) {\n        <fibo-menu (closeParent)=\"closeMenuWithParent()\"\n                  [popoverTrigger]=\"menuItemTrigger\"\n                  [offset]=\"1\" placement=\"right-start\"\n                  [menuContent]=\"item.content\"\n                  [items]=\"item.children\" />\n      }\n    } @else {\n      @if(item.url) {\n        <a fiboListItem [disabled]=\"!!item.disabled\"  (itemTrigger)=\"closeMenuWithParent()\" [routerLink]=\"item.url\"\n           class=\"datalist-item py-1 px-2 rounded-md relative group text-sm\">\n           <span [class.ml-6]=\"itemsHaveIcons()\">{{ item.label }}</span>\n        </a>\n      } @else if(item.callback) {\n        <a class=\"datalist-item py-1 px-2 rounded-md relative group text-sm\"\n           fiboListItem [disabled]=\"!!item.disabled\"\n           (itemTrigger)=\"item.callback(); closeMenuWithParent()\" >\n          <span [class.ml-6]=\"itemsHaveIcons()\">{{ item.label }}</span>\n        </a>\n      }\n    }\n}\n<ng-content></ng-content>\n@if(menuContent()) {\n  <ng-container [ngTemplateOutlet]=\"menuContent()\"></ng-container>\n}\n","import {Directive, inject, input} from '@angular/core';\nimport {PopoverMenu} from './popover-menu';\nimport {ListItem} from '@fibo-ui/cdk';\n\n\n@Directive({\n  selector: '[fiboMenuItem]',\n  standalone: true,\n  hostDirectives: [{\n    directive: ListItem,\n    inputs: ['disabled'],\n    outputs: ['itemTrigger']\n  }],\n  host: {\n    'class': 'menu-item',\n    '(itemTrigger)': 'menu.closeMenuWithParent()'\n  }\n})\nexport class MenuItem {\n  menu = inject(PopoverMenu)\n}\n","import {DestroyRef, Directive, inject, input, model, OnInit} from '@angular/core';\nimport {NavigationEnd, Router} from '@angular/router';\nimport {ListItem} from '@fibo-ui/cdk';\nimport {MenuItemType} from './menu-item.type';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\n\n@Directive({\n  selector: '[fiboCollapseSubmenuItem]',\n  exportAs: 'fiboCollapseSubmenuItem',\n  hostDirectives: [\n    {\n      directive: ListItem,\n      inputs: ['disabled'],\n    },\n  ],\n  host: {\n    '[attr.aria-expanded]': 'expanded() || null',\n  }\n})\nexport class CollapseSubmenuItem implements OnInit {\n  router = inject(Router);\n  items = input<MenuItemType[]>([]);\n  expanded = model(false);\n  toggle = () => this.expanded.set(!this.expanded());\n  destroyRef = inject(DestroyRef)\n\n\n  ngOnInit(): void {\n    this.router.events\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(event => {\n        if (event instanceof NavigationEnd) {\n          this.updateActiveStates()\n        }\n      });\n    this.updateActiveStates()\n  }\n\n\n  private updateActiveStates() {\n    if (this.items().some(item => this.hasActiveUrl(item))) {\n      this.expanded.set(true);\n    }\n  }\n\n  private hasActiveUrl(item: MenuItemType): boolean {\n    if (item.url && this.router.isActive(item.url, {\n      paths: 'exact', // Use 'subset' for partial matches\n      queryParams: 'ignored',\n      fragment: 'ignored',\n      matrixParams: 'ignored'\n    })) {\n      return true;\n    }\n    if (item.children) {\n      return item.children.some(child => this.hasActiveUrl(child));\n    }\n    return false;\n  };\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n  selector: 'fibo-side-menu-chain',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div  class=\"absolute top-0  left-0 flex w-6 justify-center h-full\">\n      <div class=\"w-px bg-gray-300 dark:bg-neutral-700 \"></div>\n    </div>\n    <div class=\"relative flex size-6 flex-none items-center justify-center\">\n      @let showCollapseButton = collapsable() && isGroup();\n      @if (showCollapseButton) {\n        <div class=\"absolute top-50% left-50% text-xs text-neutral-500 \"\n             [class.cursor-pointer]=\"collapsable()\">\n          @if (collapsed()) {\n            <span>&ndash;</span>\n          } @else {\n            <span>+</span>\n          }\n        </div>\n      }\n\n      <div [class]=\"{\n           'cursor-pointer': collapsable(),\n           'size-1.5':!showCollapseButton,\n           'size-2':showCollapseButton,\n           }\"\n           class=\"rounded-full  bg-background-secondary\n               ring ring-border-primary\n            group-aria-selected:ring-blue-500\n              group-aria-selected:bg-blue-300\n               dark:group-aria-selected:bg-blue-500\n            \"\n      >\n      </div>\n    </div>\n  `,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SideMenuChain {\n\n  index = input<number>(0);\n  isGroup = input<boolean>(false);\n\n  isActive = input<boolean>(false);\n\n  collapsable = input<boolean>(false);\n  collapsed = input<boolean>(false);\n  totalItems = input<number>(0);\n}\n","import {ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input, OnInit, TemplateRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {NavigationEnd, Router, RouterLink} from '@angular/router';\nimport {MenuItemType} from './menu-item.type';\nimport {ListItem, SELECTION_MODEL, SelectionModel} from '@fibo-ui/cdk';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {LucideAngularModule} from 'lucide-angular';\nimport {CollapseSubmenuItem} from './collapse-submenu-item';\nimport {SideMenuChain} from './side-menu-chain';\n\n@Component({\n  selector: 'fibo-side-menu',\n  standalone: true,\n  host: {\n    'class': 'flex flex-col',\n  },\n  imports: [CommonModule, RouterLink, ListItem, LucideAngularModule, CollapseSubmenuItem, SideMenuChain],\n  templateUrl: './side-menu.html',\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SideMenu implements OnInit {\n  router = inject(Router);\n  destroyRef = inject(DestroyRef)\n  items = input<MenuItemType[]>([]);\n  menuContent = input<TemplateRef<any>>()\n  level = input<number>(0);\n  collapsable =  input<boolean>(true);\n  removeChainFromLevel = input<number|null>(null);\n  selectionModel = inject<SelectionModel<MenuItemType>>(SELECTION_MODEL, {optional: true})\n\n  ngOnInit(): void {\n    this.router.events\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(event => {\n        if (event instanceof NavigationEnd) {\n          this.updateActiveStates()\n        }\n      });\n    this.updateActiveStates()\n  }\n\n\n  private updateActiveStates() {\n    this.items().forEach(item => {\n      const activeUrlItem = this.findActiveUrlItem(item);\n      if (activeUrlItem && this.selectionModel) {\n        console.log(activeUrlItem)\n        this.selectionModel.select(activeUrlItem);\n      }\n    });\n  }\n\n  private findActiveUrlItem(item: MenuItemType): MenuItemType | undefined {\n    if (item.url && this.router.isActive(item.url, {\n      paths: 'exact', // Use 'subset' for partial matches\n      queryParams: 'ignored',\n      fragment: 'ignored',\n      matrixParams: 'ignored'\n    })) {\n      return item;\n    }\n    if (item.children) {\n      // @ts-ignore\n      item.children.forEach(item => {\n        const activeUrlItem = this.findActiveUrlItem(item);\n        if (activeUrlItem) {\n          return activeUrlItem;\n        }\n      });\n    }\n    return undefined;\n  };\n\n}\n","<ul role=\"list\" class=\"space-y-0\">\n  @let showChain= removeChainFromLevel() === null || removeChainFromLevel() !== level();\n  @let totalItems= items().length;\n  @let canCollapse = collapsable();\n  @for (item of items(); track idx; let idx = $index) {\n\n    @if(item.disabled) {\n      <li class=\"relative flex gap-x-2\">\n\n        @if (showChain) {\n          <fibo-side-menu-chain\n            [index]=\"$index\"\n            [isGroup]=\"true\"\n            [totalItems]=\"totalItems\"/>\n        }\n        <div class=\"flex flex-col flex-auto py-0.5 text-sm/5 text-neutral-500 dark:text-neutral-600 \" [class.pl-2]=\"!showChain\">\n          <span> {{ item.label }}</span>\n        </div>\n      </li>\n    } @else if (item.children) {\n\n      @if(canCollapse) {\n        <li class=\"relative flex gap-x-2\"\n            fiboCollapseSubmenuItem [items]=\"item.children\"\n            #collapseSubmenuItem=\"fiboCollapseSubmenuItem\"\n            #dataListItem=\"ListItem\"\n        >\n          @if (showChain) {\n          <fibo-side-menu-chain\n            (click)=\"collapseSubmenuItem.toggle()\"\n            [index]=\"$index\"\n            [isGroup]=\"true\"\n            [isActive]=\"dataListItem.isActive()\"\n            [collapsable]=\"true\"\n            [collapsed]=\"collapseSubmenuItem.expanded()\"\n            [totalItems]=\"totalItems\"/>\n          }\n\n          <div class=\"flex flex-col flex-auto py-0.5 \" [class.pl-2]=\"!showChain\">\n            <button  class=\"text-sm cursor-pointer text-left text-neutral-500 hover:text-neutral-600 dark:hover:text-neutral-400 \"\n               (click)=\"collapseSubmenuItem.toggle()\">\n              {{ item.label }}\n            </button>\n            @if(collapseSubmenuItem.expanded()) {\n              <div class=\"-ml-2 mt-1\">\n                <fibo-side-menu\n                  [removeChainFromLevel]=\"removeChainFromLevel()\"\n                  [level]=\"level()+1\"\n                  [collapsable]=\"canCollapse\"\n                  [menuContent]=\"item.content\"\n                  [items]=\"item.children\"/>\n              </div>\n            }\n          </div>\n        </li>\n\n      } @else {\n        <!--  not clickable group   -->\n        <li class=\"relative flex gap-x-2\">\n        @if (showChain) {\n          <fibo-side-menu-chain\n            [index]=\"$index\"\n            [isGroup]=\"true\"\n            [collapsable]=\"canCollapse\"\n            [totalItems]=\"totalItems\"/>\n        }\n          <div class=\"flex flex-col flex-auto py-0.5 text-sm  text-foreground-tertiary\" [class.pl-2]=\"!showChain\">\n            <span> {{ item.label }} </span>\n            <div class=\"-ml-2 mt-1\">\n              <fibo-side-menu\n                [removeChainFromLevel]=\"removeChainFromLevel()\"\n                [level]=\"level()+1\"\n                [collapsable]=\"false\"\n                [menuContent]=\"item.content\"\n                [items]=\"item.children\"/>\n            </div>\n          </div>\n        </li>\n\n      }\n\n    } @else {\n      @if (item.url) {\n        <li>\n          <a class=\"relative flex gap-x-2 group cursor-pointer\n             aria-selected:rounded-md\n           aria-selected:text-white\"\n             [fiboListItemValue]=\"item\"\n             [routerLink]=\"item.url\"\n             #dataListItem=\"ListItem\"\n          >\n            @if (showChain) {\n            <fibo-side-menu-chain\n              [index]=\"$index\"\n              [totalItems]=\"totalItems\"\n              [isActive]=\"dataListItem.isActive()\"\n            ></fibo-side-menu-chain>\n            }\n            <div class=\"flex-auto py-0.5 text-sm\n            text-foreground-secondary\n          group-data-[active=true]:text-foreground\n          group-aria-selected:text-foreground\n          group-aria-selected:font-semibold\" [class.pl-2]=\"!showChain\">\n              {{ item.label }}\n            </div>\n          </a>\n        </li>\n\n      } @else if (item.callback) {\n        <li>\n          <button class=\"relative flex gap-x-2 group cursor-pointer text-left\n             aria-selected:rounded-md\n           aria-selected:text-white\"\n             [fiboListItemValue]=\"item\"\n             (click)=\"item.callback!()\"\n             #dataListItem=\"ListItem\"\n          >\n            @if (showChain) {\n            <fibo-side-menu-chain\n              [index]=\"$index\"\n              [totalItems]=\"totalItems\"\n              [isActive]=\"dataListItem.isActive()\"\n            ></fibo-side-menu-chain>\n            }\n            <div class=\"flex-auto py-0.5 text-sm\n            text-foreground-secondary\n          group-data-[active=true]:text-foreground\n          group-aria-selected:text-foreground\n          group-aria-selected:font-semibold\" [class.pl-2]=\"!showChain\">\n              {{ item.label }}\n            </div>\n          </button>\n        </li>\n\n      } @else if (item.value !== undefined) {\n        <li>\n          <button class=\"relative flex gap-x-2 group cursor-pointer text-left\n             aria-selected:rounded-md\n           aria-selected:text-white\"\n             [fiboListItemValue]=\"item.value\"\n             #dataListItem=\"ListItem\"\n          >\n            @if (showChain) {\n            <fibo-side-menu-chain\n              [index]=\"$index\"\n              [totalItems]=\"totalItems\"\n              [isActive]=\"dataListItem.isActive()\"\n            ></fibo-side-menu-chain>\n            }\n            <div class=\"flex-auto py-0.5 text-sm\n            text-foreground-secondary\n          group-data-[active=true]:text-foreground\n          group-aria-selected:text-foreground\n          group-aria-selected:font-semibold\" [class.pl-2]=\"!showChain\">\n              {{ item.label }}\n            </div>\n          </button>\n        </li>\n      }\n    }\n  }\n</ul>\n<ng-content></ng-content>\n@if (menuContent()) {\n  <ng-container [ngTemplateOutlet]=\"menuContent()\"></ng-container>\n}\n\n","import {computed, Injectable, linkedSignal, signal, TemplateRef} from '@angular/core';\n\n\nexport type ConfirmationContent = {\n  title: string;\n  message: string;\n  confirmLabel?: string;\n  cancelLabel?: string;\n} | TemplateRef<unknown>\n\nexport interface ConfirmationConfig {\n  content?: ConfirmationContent | null;\n  onConfirm: () => void;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ConfirmationService {\n\n  config = signal<ConfirmationConfig | null>(null);\n  isOpen = computed(() => !!this.config());\n\n  isVisible = linkedSignal({\n    source: this.isOpen,\n    computation: (isOpen) => isOpen\n  })\n\n  open(config: ConfirmationConfig | null = null) {\n    this.config.set(config);\n    if(config) {\n      this.config.set(config);\n    }\n  }\n\n  confirm() {\n    this.config()?.onConfirm();\n    this.close();\n  }\n\n  cancel() {\n    this.close();\n  }\n\n  close() {\n    this.isVisible.set(false);\n    setTimeout(\n      () => {\n        this.config.set(null);\n      }, 300);\n  }\n}\n","import {Component, computed, inject, TemplateRef, viewChild} from '@angular/core';\nimport {CommonModule, NgTemplateOutlet} from '@angular/common';\nimport {ConfirmationService} from './confirmation-service';\nimport {LucideAngularModule} from 'lucide-angular';\n\n\nconst DEFAULT_CONFIG = {\n  title: 'Confirmation',\n  message: 'Do you really want to perform action?',\n  cancelLabel: 'Cancel',\n  confirmLabel: 'Confirm'\n} as const;\n\n@Component({\n  selector: 'fibo-confirmation',\n  standalone: true,\n  imports: [NgTemplateOutlet, CommonModule, LucideAngularModule],\n  templateUrl: './confirmation.html',\n})\nexport class FiboConfirmation {\n  confirmation = inject(ConfirmationService);\n  defaultContent = viewChild.required<TemplateRef<unknown>>('defaultContent');\n\n  content = computed(() => {\n    const config = this.confirmation.config();\n    if (!config) return DEFAULT_CONFIG;\n\n    return config.content instanceof TemplateRef\n      ? DEFAULT_CONFIG\n      : {...DEFAULT_CONFIG, ...config};\n  });\n\n  template = computed(() => {\n    const config = this.confirmation.config();\n    return config?.content instanceof TemplateRef\n      ? config.content\n      : this.defaultContent();\n  });\n}\n\n","@if (confirmation.isOpen()) {\n  <div class=\"relative fibo-confirmation-backdrop\" aria-labelledby=\"modal-title\" role=\"dialog\" aria-modal=\"true\">\n    @if (confirmation.isVisible()) {\n      <div (click)=\"confirmation.close()\" class=\"fixed inset-0 bg-black/30 dark:bg-black/50\"></div>\n    }\n\n    <div class=\"fixed inset-0  w-screen overflow-y-auto\">\n      <div class=\"flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0\">\n        @if (confirmation.isVisible()) {\n        <div (click)=\"$event.stopPropagation()\" class=\"relative overflow-hidden rounded-lg bg-background px-4 pt-5 pb-4 text-left shadow-xl sm:my-8 sm:w-full sm:max-w-lg sm:p-6 dark:outline dark:-outline-offset-1 dark:outline-white/8\">\n          <ng-container *ngTemplateOutlet=\"template()\"></ng-container>\n        </div>\n        }\n      </div>\n    </div>\n  </div>\n}\n\n<ng-template #defaultContent>\n  @let data =  content();\n  <div class=\"absolute top-0 right-0 hidden pt-4 pr-4 sm:block\">\n    <button (click)=\"confirmation.cancel()\" type=\"button\" class=\"flex-none cursor-pointer rounded-full text-foreground-tertiary hover:text-foreground\">\n      <span class=\"sr-only\">Close</span>\n      <lucide-icon name=\"X\" size=\"16\"></lucide-icon>\n    </button>\n  </div>\n  <div class=\"sm:flex sm:items-start\">\n    <div class=\"mx-auto flex size-12 shrink-0 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30 sm:mx-0 sm:size-10\">\n      <svg class=\"size-6 text-red-600 dark:text-red-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" aria-hidden=\"true\" data-slot=\"icon\">\n        <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z\" />\n      </svg>\n    </div>\n    <div class=\"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left\">\n      <h3 class=\"text-base font-semibold text-gray-900 dark:text-white\" id=\"modal-title\">{{  data.title }}</h3>\n      <div class=\"mt-2\">\n        <p class=\"text-sm text-gray-500 dark:text-neutral-400\">{{ data.message }}</p>\n      </div>\n    </div>\n  </div>\n  <div class=\"mt-5 sm:mt-4 sm:flex sm:flex-row-reverse\">\n    <button  (click)=\"confirmation.confirm()\" type=\"button\" class=\"btn btn-danger w-full sm:ml-3 sm:w-auto\">{{  data.confirmLabel }}</button>\n    <button  (click)=\"confirmation.cancel()\"  type=\"button\" class=\"btn mt-3 sm:mt-0 w-full sm:w-auto\">{{  data.cancelLabel }}</button>\n  </div>\n</ng-template>\n","import {Directive, ElementRef, inject, input, model, output, signal, TemplateRef} from '@angular/core';\nimport {ConfirmationConfig, ConfirmationContent, ConfirmationService} from './confirmation-service';\nimport {DialogConfig} from '../dialog/modal-state';\n\n@Directive({\n  selector: '[confirm]',\n  exportAs: 'FiboConfirmationTrigger',\n  standalone: true,\n  host: {\n    '(click)': 'open()'\n  }\n})\nexport class ConfirmationTrigger {\n  confirmation = inject(ConfirmationService);\n  content = input<ConfirmationContent|null>(null,{alias: 'fiboConfirmationContent'});\n  confirm = output()\n\n  open() {\n    this.confirmation.open({\n      content: this.content(),\n      onConfirm: ()=> {this.confirm.emit()}\n    });\n  }\n}\n","import {Injectable, signal, TemplateRef} from '@angular/core';\n\nexport  type NotificationType = 'info' | 'success' | 'warning' | 'danger';\nexport interface NotificationConfig {\n  type?: NotificationType;\n  message?: string;\n  title?: string;\n  template?: TemplateRef<unknown>;\n  duration?: number; // Duration in seconds\n  id?: symbol; // Internal ID for tracking timers\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class Notifier {\n  private readonly DEFAULT_DURATION = 5; // 5 seconds\n  notifications = signal<NotificationConfig[]>([]);\n  private readonly timers = new Map<symbol, ReturnType<typeof setTimeout>>();\n\n  push(config: NotificationConfig) {\n    const id = Symbol('notification-id');\n    const duration = config.duration ?? this.DEFAULT_DURATION;\n    const notification: NotificationConfig = {\n      ...config,\n      duration,\n      id\n    };\n\n    this.notifications.update(value => [...value, notification]);\n\n    if (duration > 0) {\n      const timerId = setTimeout(() => {\n        this.removeNotification(notification);\n      }, duration * 1000); // Convert seconds to milliseconds\n      \n      this.timers.set(id, timerId);\n    }\n  }\n\n  removeNotification(notification: NotificationConfig) {\n    // Clear timer if exists to prevent memory leaks\n    if (notification.id && this.timers.has(notification.id)) {\n      clearTimeout(this.timers.get(notification.id)!);\n      this.timers.delete(notification.id);\n    }\n\n    this.notifications.update(notifications =>\n      notifications.filter(n => n !== notification)\n    );\n  }\n\n  success(message: string, duration?: number) {\n    this.push({\n      type: 'success',\n      title: 'Success',\n      message,\n      duration: duration ?? this.DEFAULT_DURATION\n    });\n  }\n\n  error(message: string, duration?: number) {\n    this.push({\n      type: 'danger',\n      title: 'Error',\n      message,\n      duration\n    });\n  }\n\n  warning(message: string, duration?: number) {\n    this.push({\n      type: 'warning',\n      title: 'Warning',\n      message,\n      duration\n    });\n  }\n\n  info(message: string, duration?: number) {\n    this.push({\n      type: 'info',\n      title: 'Information',\n      message,\n      duration\n    });\n  }\n}\n","import {Component, inject, ChangeDetectionStrategy} from '@angular/core';\nimport {Notifier} from './notifier';\nimport {CommonModule, NgTemplateOutlet} from '@angular/common';\nimport {NotificationConfig} from './notifier';\nimport {LucideAngularModule} from 'lucide-angular';\n@Component({\n  selector: 'fibo-notification',\n  standalone: true,\n  imports: [CommonModule, NgTemplateOutlet, LucideAngularModule],\n  templateUrl: './notification.html',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'aria-live': 'assertive',\n    'class': 'pointer-events-none fixed inset-0 flex items-end sm:items-start '\n  }\n})\nexport class Notification {\n\n  notifications =  inject(Notifier).notifications;\n\n  removeNotification(notification: NotificationConfig) {\n    this.notifications.update(notifications =>\n      notifications.filter(n => n !== notification)\n    );\n  }\n\n}\n","<div class=\"flex w-full flex-col items-center space-y-3 sm:items-end\">\n\n    @for (notification of notifications(); track notification) {\n      <div  class=\"fibo-notification-container relative pointer-events-auto w-full max-w-sm overflow-hidden rounded-lg bg-background-tertiary shadow-lg outline-1 -outline-offset-1\n    outline-black/13 dark:outline-white/4\">\n        @if (notification.template) {\n          <ng-container *ngTemplateOutlet=\"notification.template\"></ng-container>\n        } @else {\n          <div class=\"p-4\">\n            <div class=\"flex items-start\">\n              <div class=\"shrink-0\">\n                @switch (notification.type) {\n                  @case ('success') {\n                    <svg class=\"size-6 text-green-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" aria-hidden=\"true\" data-slot=\"icon\">\n                      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z\" />\n                    </svg>\n                  }\n                  @case ('warning') {\n                    <svg class=\"size-6 text-yellow-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" aria-hidden=\"true\" data-slot=\"icon\">\n                      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z\" />\n                    </svg>\n                  }\n                  @case ('danger') {\n                    <svg class=\"size-6 text-red-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" aria-hidden=\"true\" data-slot=\"icon\">\n                      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z\" />\n                    </svg>\n                  }\n                  @default {\n                    <svg class=\"size-6 text-blue-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" aria-hidden=\"true\" data-slot=\"icon\">\n                      <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z\" />\n                    </svg>\n                  }\n                }\n              </div>\n              <div class=\"ml-3 w-0 flex-1 pt-0.5\">\n                @if (notification.title) {\n                  <p class=\"text-sm font-medium text-foreground\">{{ notification.title }}</p>\n                }\n                @if (notification.message) {\n                  <p class=\"mt-1 text-sm text-foreground-secondary\">{{ notification.message }}</p>\n                }\n              </div>\n              <div class=\"ml-4 flex shrink-0\">\n                <button type=\"button\"\n                        (click)=\"$event.preventDefault(); $event.stopPropagation(); removeNotification(notification)\"\n                        class=\"flex-none cursor-pointer rounded-full text-foreground-tertiary hover:text-foreground\">\n                  <span class=\"sr-only\">Close</span>\n                  <lucide-icon name=\"X\" size=\"16\" class=\"\"></lucide-icon>\n                </button>\n              </div>\n            </div>\n          </div>\n        }\n      </div>\n    }\n</div>\n","import { computed, Signal, signal, WritableSignal, effect, linkedSignal } from \"@angular/core\";\nimport { parse, isValid, isEqual, format, addMonths, subMonths, addYears, subYears, getYear, getMonth, startOfMonth, endOfMonth, startOfWeek, addDays } from \"date-fns\";\n\nexport class ActiveMonth {\n    private readonly dateFormat = 'yyyy-MM-dd';\n\n    constructor(private _changes: Signal<string|null>) {}\n\n    year = linkedSignal(() => {\n        const changes = this._changes();\n        if (!changes) return getYear(new Date());\n\n        const parsedDate = parse(changes, this.dateFormat, new Date());\n        return isValid(parsedDate) ? getYear(parsedDate) : getYear(new Date());\n    });\n\n    month = linkedSignal(() => {\n        const changes = this._changes();\n        if (!changes) return getMonth(new Date()) + 1;\n\n        const parsedDate = parse(changes, this.dateFormat, new Date());\n        return isValid(parsedDate) ? getMonth(parsedDate) + 1 : getMonth(new Date()) + 1;\n    });\n\n    monthName = computed(() => {\n        const monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n        const monthIndex = this.month() - 1;\n        return monthNames[monthIndex];\n    });\n\n    weeks: Signal<string[][]> = computed(() => {\n        const year = this.year();\n        const month = this.month();\n        const firstDayOfMonth = new Date(year, month - 1, 1);\n        const lastDayOfMonth = endOfMonth(firstDayOfMonth);\n\n        const weeks: string[][] = [];\n        let currentWeek: string[] = [];\n\n        const currentDate = startOfWeek(firstDayOfMonth);\n\n        while (currentDate <= lastDayOfMonth || currentDate.getDay() !== 0) {\n            if (currentWeek.length === 7) {\n                weeks.push(currentWeek);\n                currentWeek = [];\n            }\n\n            currentWeek.push(format(currentDate, this.dateFormat));\n            currentDate.setDate(currentDate.getDate() + 1);\n        }\n\n        if (currentWeek.length > 0) {\n            weeks.push(currentWeek);\n        }\n\n        return weeks;\n    });\n\n    setFromDate(date: string): void {\n        if (typeof date === 'string' && isValid(parse(date, this.dateFormat, new Date()))) {\n            const parsedDate = parse(date, this.dateFormat, new Date());\n            this.year.set(getYear(parsedDate));\n            this.month.set(getMonth(parsedDate) + 1);\n        }\n    }\n\n    setMonth(month: number): void {\n        this.month.set(month);\n    }\n\n    setNextMonth(): void {\n        const currentMonth = this.month();\n        const currentYear = this.year();\n        const newDate = addMonths(new Date(currentYear, currentMonth - 1, 1), 1);\n        this.year.set(getYear(newDate));\n        this.month.set(getMonth(newDate) + 1);\n    }\n\n    setPreviousMonth(): void {\n        const currentMonth = this.month();\n        const currentYear = this.year();\n        const newDate = subMonths(new Date(currentYear, currentMonth - 1, 1), 1);\n        this.year.set(getYear(newDate));\n        this.month.set(getMonth(newDate) + 1);\n    }\n\n    setYear(fullYear: number): void {\n        this.year.set(fullYear);\n    }\n\n    setNextYear(): void {\n        const currentMonth = this.month();\n        const currentYear = this.year();\n        const newDate = addYears(new Date(currentYear, currentMonth - 1, 1), 1);\n        this.year.set(getYear(newDate));\n        this.month.set(getMonth(newDate) + 1);\n    }\n\n    setPreviousYear(): void {\n        const currentMonth = this.month();\n        const currentYear = this.year();\n        const newDate = subYears(new Date(currentYear, currentMonth - 1, 1), 1);\n        this.year.set(getYear(newDate));\n        this.month.set(getMonth(newDate) + 1);\n    }\n\n    hasTheSameMonthAs(date: string): boolean {\n        const compareDate = parse(date, this.dateFormat, new Date());\n        return this.month() === getMonth(compareDate) + 1 && this.year() === getYear(compareDate);\n    }\n}\n\n","import { Component, computed, inject, input, model, output, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {DataList, ListItem, SELECTION_MODEL} from '@fibo-ui/cdk';\nimport {ActiveMonth} from './active-date.state';\nimport {parse} from 'date-fns';\nimport { LucideAngularModule } from 'lucide-angular';\n\n@Component({\n  selector: 'fibo-calendar',\n  standalone: true,\n  imports: [CommonModule, ListItem, LucideAngularModule],\n  hostDirectives: [\n    {\n      directive: DataList,\n      outputs: ['optionTriggered']\n    }\n  ],\n  styles: `\n    button[aria-selected=\"true\"] {\n      border-top-left-radius: 0.375rem;\n      border-bottom-left-radius: 0.375rem;\n    }\n    button[aria-selected=\"true\"] ~ button[aria-selected=\"true\"] {\n      border-top-left-radius: 0;\n      border-bottom-left-radius: 0;\n    }\n\n    button[aria-selected=\"true\"]:not(:has(~ button[aria-selected=\"true\"])) {\n      border-top-right-radius: 0.375rem;\n      border-bottom-right-radius: 0.375rem;\n    }\n\n  `,\n  template: `\n    <div class=\" w-70 flex-none\">\n      <div class=\"border-b border-border-primary \">\n        <div class=\"flex items-center text-center text-foreground-secondary space-x-2 p-1\">\n          <button type=\"button\" (click)=\"state.setPreviousYear()\"\n                  class=\" flex flex-none items-center justify-center btn btn-text   py-1 px-2  rounded-md\">\n            <span class=\"sr-only\">Previous year</span>\n            <lucide-icon name=\"chevrons-left\" class=\"size-4\"></lucide-icon>\n          </button>\n          <button type=\"button\" (click)=\"state.setPreviousMonth()\"\n                  class=\" flex flex-none items-center justify-center btn btn-text   py-1 px-2  rounded-md\">\n            <span class=\"sr-only\">Previous month</span>\n            <lucide-icon name=\"chevron-left\" class=\"size-4\"></lucide-icon>\n          </button>\n\n          <div class=\"flex-auto text-sm font-semibold py-1  whitespace-nowrap \">\n            {{ state.monthName() }} {{ state.year() }}\n          </div>\n\n          <button type=\"button\" (click)=\"state.setNextMonth()\"\n                  class=\" flex flex-none items-center justify-center btn btn-text py-1 px-2 rounded-md\">\n            <span class=\"sr-only\">Next month</span>\n            <lucide-icon name=\"chevron-right\" class=\"size-4\"></lucide-icon>\n          </button>\n          <button type=\"button\" (click)=\"state.setNextYear()\"\n                  class=\" flex flex-none items-center justify-center btn btn-text py-1 px-2 rounded-md\">\n            <span class=\"sr-only\">Next year</span>\n            <lucide-icon name=\"chevrons-right\" class=\"size-4\"></lucide-icon>\n          </button>\n        </div>\n        <div class=\" grid grid-cols-7 text-center text-xs text-foreground-tertiary leading-6 px-1 \">\n          <div>S</div>\n          <div>M</div>\n          <div>T</div>\n          <div>W</div>\n          <div>T</div>\n          <div>F</div>\n          <div>S</div>\n        </div>\n      </div>\n\n      <div class=\"mt-2 grid grid-cols-7 space-y-1 space-x-0 text-sm p-1 \">\n        @for (week of state.weeks(); track $index) {\n          @for (date of week; track date + $index) {\n            <button [fiboListItemValue]=\"date\" #option=\"ListItem\"\n                    class=\"datalist-item p-1 justify-center items-center\"\n                    [class.text-foreground-tertiary]=\"!state.hasTheSameMonthAs(date)\"\n            >\n              {{ dayLabel(date) }}\n            </button>\n          }\n        }\n      </div>\n    </div>\n  `\n})\nexport class Calendar {\n  private readonly dateFormat = 'yyyy-MM-dd'\n  minDate = input<string|null>(null)\n  maxDate = input<string|null>(null)\n\n  selectionModel = inject(SELECTION_MODEL,{self:true});\n\n  state = new ActiveMonth(this.selectionModel.lastSelection);\n\n  dayLabel(date: string) {\n    return parse(date, this.dateFormat, new Date()).getDate();\n  }\n}\n","import {\n  Directive,\n  Signal,\n  signal,\n  WritableSignal,\n  InjectionToken,\n  effect, model, linkedSignal\n} from '@angular/core';\nimport {parse, isValid, isEqual} from \"date-fns\";\nimport {SELECTION_MODEL, SelectionModel} from '@fibo-ui/cdk';\n\n@Directive({\n  selector: '[fiboCalendarDateSelectionModel]',\n  standalone: true,\n  providers: [\n    {provide: SELECTION_MODEL, useExisting: CalendarDateSelectionModel}\n  ]\n})\nexport class CalendarDateSelectionModel implements SelectionModel<string> {\n  private readonly dateFormat = 'yyyy-MM-dd';\n  readonly valueSignal = model<string | null>(null, {alias: 'fiboCalendarDateSelectionModel'});\n\n  get value(): Signal<string | null> {\n    return this.valueSignal.asReadonly();\n  }\n\n  select(value: string) {\n    this.valueSignal.set(value);\n    this.lastSelection.set(value);\n  }\n\n  isSelected(value: string): boolean {\n    const current = this.valueSignal();\n    if (!current) return false;\n\n    const date = parse(value, this.dateFormat, new Date());\n    const selectedDate = parse(current, this.dateFormat, new Date());\n\n    return isEqual(date, selectedDate);\n  }\n\n  lastSelection = linkedSignal(() => this.value())\n}\n","import {\n  Directive,\n  Signal,\n  signal,\n  WritableSignal,\n  InjectionToken,\n  effect, model, linkedSignal\n} from '@angular/core';\nimport {parse, isValid, isEqual, isAfter, isBefore, format} from \"date-fns\";\nimport {SELECTION_MODEL, SelectionModel} from '@fibo-ui/cdk';\n\nexport interface DateRange {\n  startDate: string | null;\n  endDate: string | null;\n}\n\n@Directive({\n  selector: '[fiboCalendarDateRangeSelectionModel]',\n  standalone: true,\n  providers: [\n    {provide: SELECTION_MODEL, useExisting: CalendarDateRangeSelectionModel}\n  ]\n})\nexport class CalendarDateRangeSelectionModel implements SelectionModel<string> {\n  private readonly dateFormat = 'yyyy-MM-dd';\n  readonly valueSignal = model<DateRange>({\n    startDate: null,\n    endDate: null\n  }, {alias: 'fiboCalendarDateRangeSelectionModel'});\n\n  get value(): Signal<DateRange> {\n    return this.valueSignal.asReadonly();\n  }\n\n  select(value: string) {\n    const currentValue = this.valueSignal();\n    const startDate = currentValue.startDate;\n    const endDate = currentValue.endDate;\n\n    if (startDate && (endDate === null || endDate === undefined) && this.firstIsMoreOrEqualThenSecond(value, startDate)) {\n      this.valueSignal.set({startDate, endDate: value});\n    } else if (startDate && (endDate === null || endDate === undefined) && this.firstIsMoreOrEqualThenSecond(startDate, value)) {\n      this.valueSignal.set({startDate: value, endDate});\n    } else {\n      this.valueSignal.set({startDate: value, endDate: null});\n    }\n  }\n\n  isSelected(value: string): boolean {\n    const current = this.valueSignal();\n    if (!current.startDate) return false;\n\n    const date = parse(value, this.dateFormat, new Date());\n    const startDate = parse(current.startDate, this.dateFormat, new Date());\n\n    if (isEqual(date, startDate)) return true;\n\n    if (current.endDate) {\n      const endDate = parse(current.endDate, this.dateFormat, new Date());\n      return isEqual(date, endDate) || (isAfter(date, startDate) && isBefore(date, endDate));\n    }\n\n    return false;\n  }\n\n  lastSelection = linkedSignal(() => {\n    const selectionState = this.value();\n    return selectionState.endDate || selectionState.startDate || format(new Date(), this.dateFormat);\n  })\n\n  private firstIsMoreOrEqualThenSecond(first: string, second: string): boolean {\n    const firstDate = parse(first, this.dateFormat, new Date());\n    const secondDate = parse(second, this.dateFormat, new Date());\n    return isAfter(firstDate, secondDate) || isEqual(firstDate, secondDate);\n  }\n}\n","import {Component, computed, ElementRef, inject, Input, input, model, output, signal, viewChild} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {FormControl, FormsModule, NG_VALUE_ACCESSOR, NgControl, ReactiveFormsModule} from '@angular/forms';\nimport { Calendar } from './calendar/calendar';\nimport {DataList, PopoverTriggerClick, Popover, PortalTemplateDirective} from '@fibo-ui/cdk';\nimport {PrimitiveValueAccessor} from '@fibo-ui/cdk';\nimport {CalendarDateSelectionModel} from './calendar/calendar-date-selection-model';\nimport {FormField} from '../form/form-field/form-field';\nimport {FormFieldControl} from '@fibo-ui/cdk';\nimport {FormFieldContent} from '@fibo-ui/cdk';\n\n@Component({\n  selector: 'fibo-datepicker',\n  standalone: true,\n  imports: [\n    CommonModule,\n    FormsModule,\n    Popover,\n    Calendar,\n    CalendarDateSelectionModel,\n    ReactiveFormsModule,\n    FormField,\n    PopoverTriggerClick,\n    FormFieldContent,\n    PortalTemplateDirective\n  ],\n  hostDirectives: [\n    {\n      directive: FormFieldControl,\n      inputs: ['label', ' placeholder','fixedLabel', 'appearance', 'controlClass', 'resetCallback' ],\n    }\n  ],\n  templateUrl: './datepicker.html',\n})\nexport class Datepicker  {\n  formFieldControl = inject(FormFieldControl)\n  value = this.formFieldControl.cva.value;\n  minDate = input<string|null>(null);\n  maxDate = input<string|null>(null);\n  dateChange = output();\n  placeholder = computed(() => this.formFieldControl.placeholder()?? 'YYYY-MM-DD');\n\n}\n","<fibo-form-field\n  [control]=\"formFieldControl\"\n  appendIcon=\"calendar-days\"\n  fiboPopoverTriggerClick #trigger=\"PopoverTrigger\">\n  <input\n    fiboFormFieldContent\n    type=\"text\"\n    [(ngModel)]=\"value\"\n    class=\"w-full appearance-none outline-none text-base fibo-input focus:outline-0 sm:text-sm/6\"\n    (focus)=\"trigger.open()\"\n    [placeholder]=\"placeholder()\"\n  />\n</fibo-form-field>\n\n<ng-template fiboPortalTemplate [isOpen]=\"trigger.isOpen\">\n  <fibo-calendar\n    fiboPopover [popoverTrigger]=\"trigger\"\n    class=\"fibo-popover rounded-md\"\n    #dataList=\"DataList\"\n    [(fiboCalendarDateSelectionModel)]=\"value\"\n    [minDate]=\"minDate()\"\n    [maxDate]=\"maxDate()\"\n    (optionTriggered)=\"dateChange.emit();trigger.close()\"\n  />\n</ng-template>\n","import {Component, Input, output} from '@angular/core';\nimport {AbstractControl, FormControl, NgControl} from '@angular/forms';\nimport {IsEmptyPipe} from '@fibo-ui/cdk';\nimport {AsyncPipe, NgTemplateOutlet} from '@angular/common';\n\n@Component({\n  selector: 'fibo-reset-control',\n  imports: [\n    IsEmptyPipe,\n    AsyncPipe,\n    NgTemplateOutlet\n  ],\n  templateUrl: './reset-control.html',\n  host: {\n    class: ''\n  }\n})\nexport class ResetControl {\n  @Input({ required: true }) control!: NgControl|null;\n\n  reset = output()\n\n  onReset() {\n    this.control?.reset();\n     this.reset.emit();\n    this.control?.control?.markAsTouched();\n  }\n}\n","@let value  = control?.value;\n@let status = control?.statusChanges | async;\n@if ((value | isEmpty) || status === 'DISABLED' ) {\n    <ng-container [ngTemplateOutlet]=\"controlIcon\"></ng-container>\n} @else {\n  <button\n    (click)=\"onReset()\"\n    type=\"button\"\n    class=\"rounded-full text-gray-400 hover:bg-gray-200 hidden group-hover:block\"\n  >\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 20 20\"\n      fill=\"currentColor\"\n      class=\"w-5 h-5\"\n    >\n      <path\n        d=\"M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z\"\n      />\n    </svg>\n  </button>\n  <span class=\"group-hover:hidden\">\n    <ng-container [ngTemplateOutlet]=\"controlIcon\"></ng-container>\n  </span>\n}\n\n<ng-template #controlIcon>\n  <ng-content></ng-content>\n</ng-template>\n","import {\n  Component,\n  computed,\n  ElementRef,\n  effect,\n  inject,\n  Input,\n  input,\n  model,\n  OnInit,\n  output,\n  signal,\n  viewChild\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {\n  AbstractControl,\n  FormBuilder,\n  FormControl,\n  FormGroup,\n  FormsModule,\n  NG_VALUE_ACCESSOR, NgControl,\n  ReactiveFormsModule,\n  ValidationErrors,\n  Validators\n} from '@angular/forms';\nimport { Calendar } from './calendar/calendar';\n\nimport {\n  Popover, PopoverTriggerClick\n} from '@fibo-ui/cdk';\nimport {FormFieldPopoverTrigger} from '@fibo-ui/cdk';\nimport {ResetControl} from '../form/reset-control';\nimport {FormField} from '../form/form-field/form-field';\nimport {FormFieldControl} from '@fibo-ui/cdk';\nimport {FormFieldContent} from '@fibo-ui/cdk';\nimport {CalendarDateRangeSelectionModel, DateRange} from './calendar/calendar-date-range-selection-model';\n\n@Component({\n  selector: 'fibo-date-range-picker',\n  standalone: true,\n  imports: [\n    CommonModule,\n    FormsModule,\n    Popover,\n    Calendar,\n    CalendarDateRangeSelectionModel,\n    FormFieldPopoverTrigger,\n    ReactiveFormsModule,\n    ResetControl,\n    FormField,\n    PopoverTriggerClick,\n    FormFieldContent\n  ],\n  hostDirectives: [\n    {\n      directive: FormFieldControl,\n      inputs: ['label', 'placeholder','fixedLabel', 'controlClass', 'resetCallback'],\n    }\n  ],\n  templateUrl: './date-range-picker.html',\n})\nexport class DateRangePicker {\n  formFieldControl = inject(FormFieldControl)\n  value = model<DateRange>({startDate: null, endDate: null});\n  minDate = input<string|null>(null);\n  maxDate = input<string|null>(null);\n}\n","<fibo-form-field\n  [control]=\"formFieldControl\"\n  appendIcon=\"calendar-range\"\n  fiboPopoverTriggerClick #trigger=\"PopoverTrigger\">\n  <div class=\"flex items-start justify-start\" >\n    <input\n      fiboFormFieldContent\n      [value]=\"value()?.startDate\"\n      type=\"text\"\n      class=\"w-19 appearance-none outline-none fibo-input placeholder:text-xs focus:outline-0 sm:text-sm/6\"\n      placeholder=\"YYYY-MM-DD\"\n    />\n    <span class=\" flex  items-center  mx-1   text-gray-400 text-center \">-</span>\n    <input\n      [value]=\"value()?.endDate\"\n      type=\"text\"\n      class=\"w-full pl-1 appearance-none outline-none text-base fibo-input placeholder:text-xs  focus:outline-0 sm:text-sm/6\"\n      placeholder=\"YYYY-MM-DD\"\n    />\n  </div>\n</fibo-form-field>\n\n@if (trigger.isOpen()) {\n    <fibo-calendar\n      fiboPopover [popoverTrigger]=\"trigger\"\n      class=\"fibo-popover rounded-md\"\n      #dataList=\"DataList\"\n      [(fiboCalendarDateRangeSelectionModel)]=\"value\"\n      [minDate]=\"minDate()\"\n      [maxDate]=\"maxDate()\"\n    />\n}\n","import {Component, inject} from '@angular/core';\nimport {FormFieldControl} from '@fibo-ui/cdk';\nimport {FormFieldContent} from '@fibo-ui/cdk';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {FormField} from '../form/form-field/form-field';\n\n@Component({\n  selector: 'fibo-input',\n  imports: [\n    FormField,\n    FormFieldContent,\n    ReactiveFormsModule\n  ],\n  templateUrl: './input.html',\n  styles: `\n  `,\n  hostDirectives: [\n    {\n      directive: FormFieldControl,\n      inputs: ['label', 'placeholder','fixedLabel', 'appearance', 'controlClass', 'resetCallback'],\n    }\n  ],\n})\nexport class Input {\n  formFieldControl = inject<FormFieldControl<string|number|null>>(FormFieldControl)\n  value =  this.formFieldControl.cva.value;\n\n  onInput(event: Event): void {\n    const inputValue = (event.target as HTMLInputElement).value;\n    this.value.set(inputValue);\n    this.formFieldControl.cva.onChange(inputValue);\n  }\n}\n","<fibo-form-field\n  [control]=\"formFieldControl\">\n  <input\n    fiboFormFieldContent\n    type=\"text\"\n    [value]=\"value()\"\n    (input)=\"onInput($event)\"\n    (blur)=\"formFieldControl.cva.onTouched()\"\n    [disabled]=\"formFieldControl.cva.disabled()\"\n    class=\"w-full appearance-none outline-none text-sm   focus:outline-0 \"\n    [placeholder]=\"formFieldControl.placeholder()\"\n  />\n</fibo-form-field>\n","import {ChangeDetectionStrategy, Component, computed, inject, input, ViewEncapsulation} from '@angular/core';\nimport {PrimitiveValueAccessor} from '@fibo-ui/cdk';\nimport {LoadingSpin} from '../loading-spin/loading-spin';\n\n@Component({\n  selector: 'fibo-switch',\n  imports: [LoadingSpin],\n  templateUrl: './switch.html',\n  encapsulation: ViewEncapsulation.None,\n  hostDirectives: [\n    {\n      directive: PrimitiveValueAccessor,\n      inputs: ['value: checked', 'disabled'],\n      outputs: ['valueChange: checkedChange'],\n    }\n  ],\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class Switch {\n\n  isLoading = input(false);\n  size = input<'xs' | 'sm' | 'md' | 'lg' | 'xl'>('md');\n\n  protected cva = inject<PrimitiveValueAccessor<boolean>>(PrimitiveValueAccessor);\n\n  checked = this.cva.value;\n\n  trackSize = computed(() => {\n    return {\n      xs: 'h-4 w-7',\n      sm: 'h-5 w-9',\n      md: 'h-6 w-11',\n      lg: 'h-7 w-14',\n      xl: 'h-8 w-16'\n    }[this.size()];\n  });\n\n  thumbSize = computed(() => {\n    return {\n      xs: 'h-3 w-3',\n      sm: 'h-4 w-4',\n      md: 'h-5 w-5',\n      lg: 'h-6 w-6',\n      xl: 'h-7 w-7'\n    }[this.size()];\n  });\n\n  checkedTranslate = computed(() => {\n    return {\n      xs: 'translate-x-3',\n      sm: 'translate-x-4',\n      md: 'translate-x-5',\n      lg: 'translate-x-7',\n      xl: 'translate-x-8'\n    }[this.size()];\n  });\n\n  onInputChange(event: Event) {\n    if (this.cva.disabled()) return;\n    const inputEl = event.target as HTMLInputElement;\n    this.checked.set(!!inputEl.checked);\n  }\n\n}\n","<label class=\"inline-flex items-center gap-2 cursor-pointer select-none\"\n       [attr.aria-disabled]=\"cva.disabled()\">\n  <input type=\"checkbox\"\n         class=\"peer sr-only\"\n         [checked]=\"checked() ?? false\"\n         [disabled]=\"cva.disabled()\"\n         (change)=\"onInputChange($event)\"\n         (blur)=\"cva.onTouched()\" />\n\n  <span class=\"relative inline-flex flex-shrink-0 rounded-full border-2 border-transparent transition-colors duration-200 ease-in-out\n                bg-gray-200 dark:bg-neutral-700 peer-checked:bg-blue-500 dark:peer-checked:bg-blue-600\n                focus:outline-none peer-focus-visible:ring-1 peer-focus-visible:ring-primary-600 peer-focus-visible:ring-offset-1  peer-disabled:opacity-50 peer-disabled:cursor-not-allowed\"\n        [class]=\"trackSize()\">\n    <span class=\"pointer-events-none relative inline-block rounded-full bg-white dark:bg-neutral-300 shadow-md ring-0 transition duration-200 ease-in-out\"\n          [class]=\"thumbSize() + ' ' + (checked() ? checkedTranslate() : 'translate-x-0')\"\n          [class.dark:bg-white]=\"checked()\"  >\n      @if (isLoading()) {\n        <fibo-loading-spin\n                           [class.text-gray-300]=\"!checked()\"\n                           [class.dark:text-neutral-500]=\"!checked()\"\n                           [class.text-blue-500]=\"checked()\"\n                           [class]=\"thumbSize()\"></fibo-loading-spin>\n      }\n    </span>\n  </span>\n  <span class=\"sr-only\">Toggle</span>\n</label>\n\n","import {Directive, inject, input, TemplateRef} from '@angular/core';\nimport {Table} from './table';\n\nexport type FiboColumnContext<T, K extends keyof T> = {\n  $implicit: T;\n  value: T[K];\n  key: K;\n};\n\n@Directive({\n  selector: 'ng-template[fiboColumn]',\n})\nexport class FiboColumn<T , K extends keyof T = keyof T> {\n  // Column key to associate this cell template with\n  fiboColumn = input.required<K>();\n  // Optional human-readable column header\n  fiboColumnHeader = input<string>('');\n  fiboColumnThClass = input<string>('');\n  fiboColumnTdClass = input<string>('');\n  fiboColumnIsSortable = input<boolean>(false);\n\n  // Optional data source to help type inference for the template context\n  fiboColumnSource = input<readonly T[] | T[]>([]);\n  templateRef = inject<TemplateRef<FiboColumnContext<T, K>>>(TemplateRef)\n\n  static ngTemplateContextGuard<T , K extends keyof T>(\n    dir: FiboColumn<T, K>,\n    ctx: unknown\n  ): ctx is FiboColumnContext<T, K> {\n    return true;\n  }\n}\n\n\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  contentChild,\n  contentChildren,\n  inject,\n  input,\n  model\n} from '@angular/core';\nimport {CommonModule, NgTemplateOutlet} from '@angular/common';\nimport {FiboColumn} from './column';\nimport {FiboColumnHeader} from './column-header';\nimport {FiboTableRow} from './table-row';\nimport {ListItem, MultipleSelectionModel, SELECTION_MODEL, SelectionModel} from '@fibo-ui/cdk';\nimport {Checkbox} from '../checkbox/checkbox';\n\n// TODO:: need implement checkbox multiselect outside table component\n@Component({\n  selector: 'fibo-table',\n  imports: [CommonModule, NgTemplateOutlet, Checkbox, ListItem],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    'class': 'fibo-table block w-full overflow-x-auto',\n  },\n  template: `\n    <table class=\"min-w-full divide-y divide-gray-300 dark:divide-white/15\">\n      <thead>\n      <tr>\n        @if (hasMultipleSelectionModel) {\n          <th scope=\"col\" class=\"w-10 px-1 items-center text-sm font-semibold text-foreground\" >\n            <fibo-checkbox\n              [checked]=\"allSelected()\"\n              [indeterminate]=\"isIndeterminate()\"\n              (checkedChange)=\"toggleAll($event)\"\n            ></fibo-checkbox>\n          </th>\n        }\n\n\n        @for (col of columns(); track col) {\n          <th scope=\"col\" class=\" text-left text-sm font-semibold text-foreground\"\n              [class]=\"col.fiboColumnThClass()\">\n            @if (col.fiboColumnIsSortable()) {\n              <a class=\"inline-flex items-center gap-1 cursor-pointer select-none text-foreground\"\n                 (click)=\"onHeaderClick(col.fiboColumn())\">\n                <span>\n                  {{ col.fiboColumnHeader() || col.fiboColumn() }}\n                </span>\n                @if (isSortedBy(col.fiboColumn())) {\n                  @if (getSortOrderFor(col.fiboColumn()) === 'asc') {\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n                         stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"size-3.5\"\n                         aria-hidden=\"true\">\n                      <path d=\"M12 19V5\"/>\n                      <polyline points=\"5 12 12 5 19 12\"/>\n                    </svg>\n                  } @else {\n                    <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\"\n                         stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"size-3.5\"\n                         aria-hidden=\"true\">\n                      <path d=\"M12 5v14\"/>\n                      <polyline points=\"19 12 12 19 5 12\"/>\n                    </svg>\n                  }\n                }\n              </a>\n            } @else {\n              <span>\n                {{ col.fiboColumnHeader() || col.fiboColumn() }}\n              </span>\n            }\n          </th>\n        }\n\n      </tr>\n      </thead>\n      <tbody class=\"divide-y divide-gray-200 dark:divide-white/10\">\n        @for (row of rows(); track $index) {\n          <tr>\n            @if (hasMultipleSelectionModel) {\n              <td class=\"px-1 text-sm whitespace-nowrap text-foreground-secondary\">\n                <a [fiboListItemValue]=\"row\"\n                   #item=\"ListItem\">\n                  <fibo-checkbox\n                    [readonly]=\"true\"\n                    [checked]=\"item.isSelected()\"\n                  ></fibo-checkbox>\n                </a>\n\n              </td>\n            }\n            @for (col of columns(); track col) {\n              <td class=\" text-sm whitespace-nowrap text-foreground-secondary\"\n                  [class]=\"col.fiboColumnTdClass()\">\n                <ng-container\n                  [ngTemplateOutlet]=\"col.templateRef\"\n                  [ngTemplateOutletContext]=\"{$implicit: row, value: getCellValue(row, col.fiboColumn()), key: col.fiboColumn()}\"\n                ></ng-container>\n              </td>\n            }\n          </tr>\n        }\n      </tbody>\n    </table>\n  `,\n})\nexport class Table<T> {\n\n  selectionModel = inject(SELECTION_MODEL, { optional: true }) as SelectionModel<T> | null;\n\n  dataSource = input<T[]>([]);\n\n  sort = model<{ sortBy: string; sortOrder: string } | null>(null, { alias: 'sort' });\n\n  columns = contentChildren(FiboColumn as any, { descendants: true }) as unknown as () => readonly FiboColumn<T, keyof T>[];\n\n  rows = computed<ReadonlyArray<T>>(() => this.dataSource());\n\n  get hasMultipleSelectionModel() {\n    return this.selectionModel instanceof MultipleSelectionModel;\n  }\n\n  // Number of selected items among the current rows\n  private selectedInViewCount = computed<number>(() => {\n    if (!(this.selectionModel instanceof MultipleSelectionModel)) return 0;\n    const currentRows = this.rows();\n    const selected = this.selectionModel.value();\n    if (!Array.isArray(selected) || currentRows.length === 0) return 0;\n    const selectedSet = new Set(selected as ReadonlyArray<T>);\n    let count = 0;\n    for (const row of currentRows) {\n      if (selectedSet.has(row)) count++;\n    }\n    return count;\n  });\n\n  // Header checkbox states\n  allSelected = computed<boolean>(() => {\n    const total = this.rows().length;\n    const selected = this.selectedInViewCount();\n    return total > 0 && selected === total;\n  });\n\n  isIndeterminate = computed<boolean>(() => {\n    const total = this.rows().length;\n    const selected = this.selectedInViewCount();\n    return selected > 0 && selected < total;\n  });\n\n  // Toggle all visible rows based on header checkbox\n  toggleAll(next: boolean | null) {\n    if (!(this.selectionModel instanceof MultipleSelectionModel)) return;\n    const checked = !!next;\n    const currentRows = this.rows();\n    if (currentRows.length === 0) return;\n    this.selectionModel.value.set(checked ? [...currentRows] : []);\n  }\n\n  // Sorting helpers\n  isSortedBy(key: unknown): boolean {\n    const s = this.sort();\n    const k = String(key as any);\n    return !!s && s.sortBy === k;\n  }\n\n  getSortOrderFor(key: unknown): 'asc' | 'desc' | null {\n    const s = this.sort();\n    const k = String(key as any);\n    if (!s || s.sortBy !== k) return null;\n    return (s.sortOrder === 'asc' ? 'asc' : 'desc');\n  }\n\n  onHeaderClick(key: unknown) {\n    const s = this.sort();\n    const k = String(key as any);\n    if (!s || s.sortBy !== k) {\n      // First click on a column or switching columns -> ascending\n      this.sort.set({ sortBy: k, sortOrder: 'asc' });\n      return;\n    }\n    if (s.sortOrder === 'asc') {\n      // Second click on same column -> descending\n      this.sort.set({ sortBy: k, sortOrder: 'desc' });\n      return;\n    }\n    // Third click on same column while descending -> remove sorting\n    this.sort.set(null);\n  }\n\n  getCellValue<Row extends T, K extends keyof Row>(row: Row, key: K) {\n    return row[key];\n  }\n}\n\n\n","import {Directive, input, TemplateRef, inject} from '@angular/core';\n\n@Directive({\n  selector: 'ng-template[fiboColumnHeader]',\n})\nexport class FiboColumnHeader {\n  // Column key to associate this header with\n  fiboColumnHeader = input.required<string>();\n  templateRef = inject<TemplateRef<unknown>>(TemplateRef)\n}\n\n\n","import {contentChildren, Directive, inject, TemplateRef} from '@angular/core';\nimport {FiboColumn} from './column';\n\n@Directive({\n  selector: '[fiboTableRow]'\n})\nexport class FiboTableRow<T> {\n  templateRef = inject<TemplateRef<unknown>>(TemplateRef)\n  columns = contentChildren(FiboColumn as any, { descendants: true }) as unknown as () => readonly FiboColumn<T, keyof T>[];\n\n}\n\n\n","/*\n * Public API Surface of components\n */\n\n// Loading Spin component\nexport * from './lib/loading-spin/loading-spin';\n\n// Popover components\nexport * from './lib/dialog/dialog-trigger';\nexport * from './lib/dialog/dialog-service';\nexport * from './lib/dialog/dialog';\n\n\n\nexport * from './lib/select/select';\nexport * from './lib/select/multiple-select';\nexport * from './lib/select/multiple-select-input';\n\nexport * from './lib/tooltip/tooltip-container';\nexport * from './lib/tooltip/tooltip-service';\nexport * from './lib/tooltip/tooltip';\n\nexport * from './lib/menu/popover-menu';\nexport * from './lib/menu/menu-item';\nexport * from './lib/menu/side-menu';\nexport * from './lib/menu/side-menu-chain';\nexport * from './lib/menu/menu-panel';\n\n\nexport * from './lib/confirmation/confirmation';\nexport * from './lib/confirmation/confirmation-service';\nexport * from './lib/confirmation/confirmation-trigger';\n\nexport * from './lib/notification/notification';\nexport * from './lib/notification/notifier';\n\n\nexport * from './lib/datepicker/calendar/calendar';\nexport * from './lib/datepicker/calendar/calendar-date-selection-model';\nexport * from './lib/datepicker/calendar/calendar-date-range-selection-model';\nexport * from './lib/datepicker/datepicker';\nexport * from './lib/datepicker/date-range-picker';\n\n// Form components and interfaces\nexport * from './lib/form/reset-control';\nexport * from './lib/form/form-field/form-field';\n\n\nexport * from './lib/input/input';\nexport * from './lib/menu/menu-item.type';\nexport * from './lib/switch/switch';\nexport * from './lib/checkbox/checkbox';\n\n// Data List components\nexport * from './lib/data-list/listbox/listbox';\nexport * from './lib/table/table';\nexport * from './lib/table/column-header';\nexport * from './lib/table/column';\nexport * from './lib/table/table-row';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3","i1.MenuPanel","i2","i4","Input"],"mappings":"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"}