@tolle_/tolle-ui 0.0.29-beta → 0.0.31-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/accordion-item.component.mjs +60 -17
- package/esm2022/lib/accordion.component.mjs +17 -12
- package/esm2022/lib/alert.component.mjs +36 -24
- package/esm2022/lib/calendar.component.mjs +2 -5
- package/esm2022/lib/date-picker.component.mjs +1 -1
- package/esm2022/lib/segment.component.mjs +192 -0
- package/esm2022/lib/sidebar.component.mjs +433 -0
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/tolle-ui.mjs +727 -55
- package/fesm2022/tolle-ui.mjs.map +1 -1
- package/lib/accordion.component.d.ts +1 -0
- package/lib/alert.component.d.ts +2 -3
- package/lib/button.component.d.ts +2 -2
- package/lib/segment.component.d.ts +38 -0
- package/lib/sidebar.component.d.ts +37 -0
- package/package.json +1 -1
- package/public-api.d.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tolle-ui.mjs","sources":["../../../projects/tolle/src/lib/utils/cn.ts","../../../projects/tolle/src/lib/button.component.ts","../../../projects/tolle/src/lib/input.component.ts","../../../projects/tolle/src/lib/card.component.ts","../../../projects/tolle/src/lib/select.service.ts","../../../projects/tolle/src/lib/select-item.component.ts","../../../projects/tolle/src/lib/select.component.ts","../../../projects/tolle/src/lib/select-group.component.ts","../../../projects/tolle/src/lib/select-separator.component.ts","../../../projects/tolle/src/lib/switch.component.ts","../../../projects/tolle/src/lib/badge.component.ts","../../../projects/tolle/src/lib/skeleton.component.ts","../../../projects/tolle/src/lib/checkbox.component.ts","../../../projects/tolle/src/lib/tooltip.directive.ts","../../../projects/tolle/src/lib/toast.service.ts","../../../projects/tolle/src/lib/toaster.component.ts","../../../projects/tolle/src/lib/theme.service.ts","../../../projects/tolle/src/lib/tolle-config.ts","../../../projects/tolle/src/lib/multi-select.component.ts","../../../projects/tolle/src/lib/calendar.component.ts","../../../projects/tolle/src/lib/masked-input.component.ts","../../../projects/tolle/src/lib/date-picker.component.ts","../../../projects/tolle/src/lib/pagination.component.ts","../../../projects/tolle/src/lib/tolle-cell.directive.ts","../../../projects/tolle/src/lib/data-table.component.ts","../../../projects/tolle/src/lib/accordion-item.component.ts","../../../projects/tolle/src/lib/accordion.component.ts","../../../projects/tolle/src/lib/modal-ref.ts","../../../projects/tolle/src/lib/modal.component.ts","../../../projects/tolle/src/lib/modal-stack.service.ts","../../../projects/tolle/src/lib/modal.service.ts","../../../projects/tolle/src/lib/modal.ts","../../../projects/tolle/src/lib/button-group.component.ts","../../../projects/tolle/src/lib/range-calendar.component.ts","../../../projects/tolle/src/lib/date-range-picker.component.ts","../../../projects/tolle/src/lib/dropdown-item.component.ts","../../../projects/tolle/src/lib/dropdown-label.component.ts","../../../projects/tolle/src/lib/dropdown-menu.component.ts","../../../projects/tolle/src/lib/dropdown-separator.component.ts","../../../projects/tolle/src/lib/dropdown-trigger.directive.ts","../../../projects/tolle/src/lib/textarea.component.ts","../../../projects/tolle/src/lib/alert.component.ts","../../../projects/tolle/src/lib/avatar.component.ts","../../../projects/tolle/src/lib/avatar-fallback.component.ts","../../../projects/tolle/src/lib/breadcrumb.component.ts","../../../projects/tolle/src/lib/breadcrumb-link.component.ts","../../../projects/tolle/src/lib/breadcrumb-separator.component.ts","../../../projects/tolle/src/lib/breadcrumb-item.component.ts","../../../projects/tolle/src/lib/empty-state.component.ts","../../../projects/tolle/src/lib/otp.component.ts","../../../projects/tolle/src/lib/otp-slot.component.ts","../../../projects/tolle/src/lib/otp-group.component.ts","../../../projects/tolle/src/lib/popover.component.ts","../../../projects/tolle/src/lib/popover-content.component.ts","../../../projects/tolle/src/lib/radio-service.ts","../../../projects/tolle/src/lib/radio-group.component.ts","../../../projects/tolle/src/lib/radio-item.component.ts","../../../projects/tolle/src/public-api.ts","../../../projects/tolle/src/tolle-ui.ts"],"sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from './utils/cn';\n\nconst buttonVariants = cva(\n \"tolle-button-base inline-flex items-center justify-center rounded-md text-sm font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background active:scale-[0.98]\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline: \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n xs: \"h-8 px-2 py-1 text-xs\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n \"icon-xs\": \"h-8 w-8\",\n \"icon-sm\": \"h-9 w-9\",\n icon: \"h-10 w-10\",\n \"icon-lg\": \"h-11 w-11\",\n },\n busy: { true: \"tolle-button--busy relative !cursor-wait !pointer-events-none\" }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport type ButtonProps = VariantProps<typeof buttonVariants>;\n\n@Component({\n selector: 'tolle-button',\n standalone: true,\n imports: [CommonModule],\n template: `\n <button\n [class]=\"computedClass\"\n [disabled]=\"disabled || busy\"\n [attr.aria-busy]=\"busy\"\n >\n <div *ngIf=\"busy\" class=\"absolute inset-0 flex items-center justify-center\">\n <svg class=\"animate-spin h-5 w-5 text-current\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n </div>\n\n <span class=\"flex items-center justify-center w-full h-full pointer-events-none\" [class.invisible]=\"busy\">\n <ng-content></ng-content>\n </span>\n </button>\n `,\n host: {\n 'class': 'tolle-button-wrapper inline-block align-middle'\n }\n})\nexport class ButtonComponent {\n @Input() class: string = '';\n @Input() variant: ButtonProps['variant'] = 'default';\n @Input() size: ButtonProps['size'] = 'default';\n @Input() disabled: boolean = false;\n @Input() busy: boolean = false;\n\n get computedClass() {\n return cn(\n buttonVariants({\n variant: this.variant,\n size: this.size,\n busy: this.busy\n }),\n this.class\n );\n }\n}\n","import { Component, Input, forwardRef, ChangeDetectorRef, ElementRef, ViewChild, AfterViewInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-input',\n standalone: true,\n imports: [CommonModule, FormsModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true\n }\n ],\n template: `\n <div class=\"flex flex-col gap-1.5 w-full\">\n <label\n *ngIf=\"label\"\n [for]=\"id\"\n [class]=\"computedLabelClass\">\n {{ label }}\n </label>\n\n <div\n [class]=\"computedContainerClass\"\n (click)=\"focusInput()\"\n >\n <div class=\"flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200\">\n <ng-content select=\"[prefix]\"></ng-content>\n </div>\n\n <input\n #inputElement\n [id]=\"id\"\n [type]=\"type\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [(ngModel)]=\"value\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n (input)=\"onInputChange($event)\"\n [class]=\"computedInputClass\"\n [attr.aria-invalid]=\"error\"\n [attr.aria-describedby]=\"error && errorMessage ? id + '-error' : null\"\n />\n\n <div class=\"flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200\">\n <ng-content select=\"[suffix]\"></ng-content>\n </div>\n </div>\n\n <ng-container *ngIf=\"!disabled\">\n <p\n *ngIf=\"hint && !error\"\n class=\"text-xs text-muted-foreground px-1 transition-opacity duration-200\"\n [class.opacity-0]=\"isFocused && hideHintOnFocus\"\n >\n {{ hint }}\n </p>\n <p\n *ngIf=\"error && errorMessage\"\n [id]=\"id + '-error'\"\n class=\"text-xs text-destructive px-1\"\n >\n {{ errorMessage }}\n </p>\n </ng-container>\n </div>\n `,\n})\nexport class InputComponent implements ControlValueAccessor, AfterViewInit {\n @ViewChild('inputElement') inputElement!: ElementRef<HTMLInputElement>;\n\n @Input() id: string = `input-${Math.random().toString(36).substr(2, 9)}`;\n @Input() label: string = '';\n @Input() hint: string = '';\n @Input() errorMessage: string = '';\n @Input() type: string = 'text';\n @Input() placeholder: string = '';\n @Input() size: 'xs' | 'sm' | 'default' | 'lg' = 'default';\n @Input() containerClass: string = '';\n @Input() class: string = '';\n\n // New States\n @Input() disabled: boolean = false;\n @Input() readonly: boolean = false;\n @Input() error: boolean = false;\n\n // Focus behavior\n @Input() hideHintOnFocus: boolean = true;\n\n value: any = '';\n onChange: any = () => {};\n onTouched: any = () => {};\n isFocused: boolean = false;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngAfterViewInit() {\n if (this.inputElement?.nativeElement.hasAttribute('autofocus')) {\n setTimeout(() => this.inputElement.nativeElement.focus());\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onInputChange(event: Event): void {\n if (this.readonly || this.disabled) return;\n const val = (event.target as HTMLInputElement).value;\n this.value = val;\n this.onChange(val);\n }\n\n onFocus(): void {\n this.isFocused = true;\n }\n\n onBlur(): void {\n this.isFocused = false;\n this.onTouched();\n }\n\n focusInput(): void {\n if (!this.disabled && this.inputElement) {\n this.inputElement.nativeElement.focus();\n }\n }\n\n protected readonly cn = cn;\n\n get computedLabelClass() {\n return cn(\n \"text-sm font-medium text-foreground leading-none transition-opacity duration-200\",\n this.disabled && \"opacity-50\"\n );\n }\n\n get computedContainerClass() {\n return cn(\n // Base styles\n \"group relative flex items-center w-full rounded-md border transition-all duration-200\",\n \"bg-background\",\n\n // Border and shadow\n \"border-input shadow-sm\",\n\n // Sizing\n this.size === 'xs' && \"h-8 px-2 gap-1.5 text-xs\",\n this.size === 'sm' && \"h-9 px-3 gap-2 text-sm\",\n this.size === 'default' && \"h-10 px-3 gap-2 text-sm\",\n this.size === 'lg' && \"h-11 px-4 gap-3 text-base\",\n\n // Focus state - SIMPLE AND ELEGANT LIKE ZARDUI\n // The magic happens in CSS: border darkens automatically on focus\n !(this.readonly || this.disabled) && [\n \"focus-within:border-primary/80\",\n \"focus-within:ring-4\",\n \"focus-within:ring-ring/30\",\n \"focus-within:ring-offset-0\",\n \"focus-within:shadow-none\",\n ],\n\n // Error state\n this.error && [\n \"border-destructive\",\n !(this.readonly || this.disabled) && [\n \"focus-within:border-destructive/80\",\n \"focus-within:ring-destructive/30\"\n ]\n ],\n\n // Disabled state\n this.disabled && [\n \"cursor-not-allowed opacity-50\",\n \"border-opacity-50\"\n ],\n\n // Readonly state\n this.readonly && [\n \"cursor-default\",\n \"border-dashed\",\n !this.disabled && \"focus-within:ring-0 focus-within:border-opacity-100\"\n ],\n\n this.containerClass\n );\n }\n\n get computedInputClass() {\n return cn(\n // Base styles\n \"flex-1 bg-transparent border-none p-0\",\n \"placeholder:text-muted-foreground\",\n\n // Remove all default focus styles\n \"focus:outline-none focus:ring-0 focus:shadow-none\",\n\n // Text sizing\n this.size === 'xs' && \"text-xs\",\n this.size === 'sm' && \"text-sm\",\n this.size === 'default' && \"text-sm\",\n this.size === 'lg' && \"text-base\",\n\n // Cursor states\n this.disabled && \"cursor-not-allowed\",\n this.readonly && \"cursor-default\",\n\n // Text color\n \"text-foreground\",\n\n // Selection color\n \"selection:bg-primary/20 selection:text-foreground\",\n\n this.class\n );\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-card',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div [class]=\"cn('rounded-md border border-border text-card-foreground shadow', class)\">\n <ng-content></ng-content>\n </div>\n `,\n})\nexport class CardComponent { @Input() class = ''; protected cn = cn; }\n\n@Component({\n selector: 'tolle-card-header',\n standalone: true,\n template: `<div [class]=\"cn('flex flex-col space-y-1.5 p-6', class)\"><ng-content></ng-content></div>`,\n})\nexport class CardHeaderComponent { @Input() class = ''; protected cn = cn; }\n\n@Component({\n selector: 'tolle-card-title',\n standalone: true,\n template: `<h3 [class]=\"cn('font-semibold leading-none tracking-tight', class)\"><ng-content></ng-content></h3>`,\n})\nexport class CardTitleComponent { @Input() class = ''; protected cn = cn; }\n\n@Component({\n selector: 'tolle-card-content',\n standalone: true,\n template: `<div [class]=\"cn('p-6 pt-0', class)\"><ng-content></ng-content></div>`,\n})\nexport class CardContentComponent { @Input() class = ''; protected cn = cn; }\n\n@Component({\n selector: 'tolle-card-footer',\n standalone: true,\n template: `<div [class]=\"cn('flex items-center p-6 pt-0', class)\"><ng-content></ng-content></div>`,\n})\nexport class CardFooterComponent { @Input() class = ''; protected cn = cn; }\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class SelectService {\n // Emits the value of the clicked item\n private selectedValueSource = new Subject<any>();\n selectedValue$ = this.selectedValueSource.asObservable();\n\n // Emits the label/text of the clicked item\n private selectedLabelSource = new Subject<string>();\n selectedLabel$ = this.selectedLabelSource.asObservable();\n\n registerClick(value: any, label: string) {\n this.selectedValueSource.next(value);\n this.selectedLabelSource.next(label);\n }\n}\n","import {Component, Input, HostListener, ElementRef, Optional} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cn } from './utils/cn';\nimport {SelectService} from './select.service';\n\n@Component({\n selector: 'tolle-select-item',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n *ngIf=\"!hidden\"\n [class]=\"cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors',\n getItemClasses(),\n class\n )\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-selected]=\"selected\"\n role=\"option\"\n >\n <!-- Single Select: Checkmark -->\n <span *ngIf=\"!multiSelect && selected\" class=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <i class=\"ri-check-line text-primary\"></i>\n </span>\n\n <!-- Multi-Select: Checkbox -->\n <span *ngIf=\"multiSelect\" class=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <div [class]=\"cn(\n 'flex h-4 w-4 items-center justify-center rounded-sm border transition-all duration-200',\n selected ? 'border-primary bg-primary text-primary-foreground' : 'border-input'\n )\">\n <i [class]=\"cn(\n 'ri-check-line text-xs transition-all duration-200',\n selected ? 'opacity-100 scale-100' : 'opacity-0 scale-75'\n )\"></i>\n </div>\n </span>\n\n <!-- Content -->\n <span class=\"flex-1 truncate\">\n <ng-content></ng-content>\n </span>\n\n <!-- Disabled indicator -->\n <span *ngIf=\"disabled && !selected\" class=\"ml-2 text-xs text-muted-foreground/50\">\n <i class=\"ri-forbid-line\"></i>\n </span>\n </div>\n `,\n})\nexport class SelectItemComponent {\n @Input() value: any;\n @Input() class = '';\n @Input() selected = false;\n @Input() disabled = false;\n @Input() multiSelect = false; // Will be set by parent component\n\n hidden = false;\n\n constructor(\n @Optional() private selectService: SelectService,\n private el: ElementRef\n ) {}\n\n // Helper method for the parent to get the searchable text\n getLabel(): string {\n return this.el.nativeElement.textContent?.trim() || '';\n }\n\n getItemClasses(): string {\n return cn(\n // Base state\n 'focus:bg-accent focus:text-accent-foreground',\n\n // Hover states (only if not disabled)\n !this.disabled && [\n 'cursor-pointer',\n 'hover:bg-accent hover:text-accent-foreground'\n ],\n\n // Selected state\n this.selected && [\n this.multiSelect\n ? 'bg-primary/5 text-foreground'\n : 'bg-accent text-accent-foreground'\n ],\n\n // Disabled state\n this.disabled && [\n 'opacity-50',\n 'cursor-not-allowed',\n 'hover:bg-transparent hover:text-foreground'\n ]\n );\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n if (this.hidden || this.disabled) return;\n\n event.stopPropagation();\n if (this.selectService) {\n const label = this.getLabel();\n\n if (this.multiSelect) {\n // For multi-select, toggle selection\n this.selected = !this.selected;\n }\n // For both single and multi-select, notify parent\n this.selectService.registerClick(this.value, label);\n }\n }\n\n protected cn = cn;\n}\n","import {\n Component,\n Input,\n forwardRef,\n ElementRef,\n ViewChild,\n OnDestroy,\n HostListener,\n ContentChildren,\n QueryList,\n AfterContentInit\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\n// 1. Import 'size' middleware\nimport { computePosition, flip, shift, offset, autoUpdate, size } from '@floating-ui/dom';\nimport { cn } from './utils/cn';\nimport { SelectItemComponent } from './select-item.component';\nimport { Subscription } from 'rxjs';\nimport { SelectService } from './select.service';\nimport { InputComponent } from './input.component';\n\n@Component({\n selector: 'tolle-select',\n standalone: true,\n imports: [CommonModule, FormsModule, InputComponent],\n providers: [\n SelectService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true\n }\n ],\n template: `\n <div [class]=\"cn('relative w-full', 'size-' + size)\" #container>\n <button\n type=\"button\"\n #trigger\n (click)=\"toggle()\"\n [disabled]=\"disabled\"\n [class]=\"computedTriggerClass\"\n >\n <span class=\"truncate\" [class.text-muted-foreground]=\"!selectedLabel\">\n {{ selectedLabel || placeholder }}\n </span>\n <i [class]=\"iconClass\"></i>\n </button>\n\n <div\n #popover\n *ngIf=\"isOpen\"\n class=\"fixed bg-popover z-[999] overflow-auto flex flex-col rounded-md border border-border text-popover-foreground shadow-md\"\n style=\"visibility: hidden; top: 0; left: 0;\">\n <div *ngIf=\"searchable\" class=\"p-2 border-b border-border bg-popover h-auto\">\n <tolle-input\n size=\"xs\"\n placeholder=\"Search...\"\n [(ngModel)]=\"searchQuery\"\n (ngModelChange)=\"onSearchChange($event)\"\n class=\"w-full\">\n <i prefix class=\"ri-search-line\"></i>\n </tolle-input>\n </div>\n\n <div class=\"p-1 overflow-y-auto scrollbar-hidden grow h-full w-full\">\n <ng-content></ng-content>\n <div *ngIf=\"noResults\" class=\"py-6 text-center text-sm text-muted-foreground\">\n No results found.\n </div>\n </div>\n </div>\n </div>\n `,\n})\nexport class SelectComponent implements ControlValueAccessor, AfterContentInit, OnDestroy {\n @Input() placeholder = 'Select an option';\n @Input() class = '';\n @Input() disabled = false;\n @Input() searchable = false;\n @Input() size: 'xs' | 'sm' | 'default' | 'lg' = 'default';\n @Input() readonly = false;\n\n @ViewChild('trigger') trigger!: ElementRef;\n @ViewChild('popover') popover!: ElementRef;\n @ViewChild('container') container!: ElementRef;\n @ContentChildren(SelectItemComponent, { descendants: true }) items!: QueryList<SelectItemComponent>;\n\n private sub = new Subscription();\n searchQuery = '';\n noResults = false;\n isOpen = false;\n value: any = null;\n selectedLabel = '';\n cleanupAutoUpdate?: () => void;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n protected cn = cn;\n\n constructor(private selectService: SelectService) {\n this.sub.add(\n this.selectService.selectedValue$.subscribe(val => {\n this.value = val;\n this.onChange(val);\n this.updateItemSelection();\n })\n );\n\n this.sub.add(\n this.selectService.selectedLabel$.subscribe(label => {\n this.selectedLabel = label;\n this.close();\n })\n );\n }\n\n get computedTriggerClass() {\n return cn(\n 'flex w-full items-center justify-between rounded-md border transition-all duration-200',\n 'bg-background text-foreground',\n 'border-input shadow-sm',\n this.size === 'xs' && 'h-8 px-2 text-xs',\n this.size === 'sm' && 'h-9 px-3 text-sm',\n this.size === 'default' && 'h-10 px-3 text-sm',\n this.size === 'lg' && 'h-11 px-4 text-base',\n !(this.readonly || this.disabled) && [\n 'focus:outline-none',\n 'focus:ring-4',\n 'focus:ring-ring/30',\n 'focus:ring-offset-0',\n 'focus:shadow-none',\n 'focus:border-primary/80'\n ],\n !(this.readonly || this.disabled) && 'hover:border-accent',\n this.disabled && [\n 'cursor-not-allowed opacity-50',\n 'border-opacity-50'\n ],\n this.readonly && [\n 'cursor-default',\n 'border-dashed',\n !this.disabled && 'focus:ring-0 focus:border-opacity-100'\n ],\n this.class\n );\n }\n\n get iconClass() {\n return cn(\n 'ri-arrow-down-s-line text-muted-foreground ml-2 transition-transform duration-200',\n this.isOpen ? 'rotate-180' : '',\n (this.size === 'xs' || this.size === 'sm') ? 'text-[14px]' : 'text-[18px]',\n (this.disabled || this.readonly) && 'opacity-30'\n );\n }\n\n ngAfterContentInit() {\n this.updateItemSelection();\n this.items.changes.subscribe(() => this.updateItemSelection());\n }\n\n private updateItemSelection() {\n if (this.items) {\n this.items.forEach(item => {\n item.selected = item.value === this.value;\n });\n }\n }\n\n toggle() {\n if (this.disabled || this.readonly) return;\n this.isOpen ? this.close() : this.open();\n }\n\n open() {\n this.isOpen = true;\n this.trigger.nativeElement.focus();\n setTimeout(() => this.updatePosition());\n }\n\n close() {\n this.isOpen = false;\n this.searchQuery = '';\n this.onSearchChange('');\n if (this.cleanupAutoUpdate) this.cleanupAutoUpdate();\n }\n\n private updatePosition() {\n if (!this.trigger || !this.popover) return;\n\n this.cleanupAutoUpdate = autoUpdate(\n this.trigger.nativeElement,\n this.popover.nativeElement,\n () => {\n computePosition(this.trigger.nativeElement, this.popover.nativeElement, {\n strategy: 'fixed', // 3. Use fixed strategy\n placement: 'bottom-start',\n middleware: [\n offset(4),\n flip(),\n shift({ padding: 8 }),\n // 4. Use size middleware to sync width and handle constraints\n size({\n apply({ rects, elements, availableHeight }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n maxHeight: `${availableHeight}px`\n });\n },\n }),\n ],\n }).then(({ x, y, strategy }) => {\n Object.assign(this.popover.nativeElement.style, {\n position: strategy, // 5. Apply strategy to style\n left: `${x}px`,\n top: `${y}px`,\n visibility: 'visible',\n });\n });\n }\n );\n }\n\n onSearchChange(query: string) {\n const filter = (query || '').toLowerCase().trim();\n let visibleCount = 0;\n\n this.items.forEach(item => {\n const text = item.getLabel().toLowerCase();\n const isVisible = text.includes(filter);\n item.hidden = !isVisible;\n if (isVisible) visibleCount++;\n });\n\n this.noResults = visibleCount === 0 && filter !== '';\n }\n\n @HostListener('document:mousedown', ['$event'])\n onDocumentClick(event: MouseEvent) {\n if (this.isOpen && !this.trigger.nativeElement.contains(event.target) && !this.popover.nativeElement.contains(event.target)) {\n this.close();\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.updateItemSelection();\n if (this.items) {\n const found = this.items.find(i => i.value === value);\n if (found) this.selectedLabel = found.getLabel();\n }\n }\n\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled = isDisabled; }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n if (this.cleanupAutoUpdate) this.cleanupAutoUpdate();\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-select-group',\n standalone: true,\n template: `\n <div [class]=\"cn('px-2 py-1.5 text-sm font-semibold text-muted-foreground', class)\">\n <ng-content></ng-content>\n </div>\n `,\n})\nexport class SelectGroupComponent {\n @Input() class = '';\n protected cn = cn;\n}\n","import { Component, Input } from '@angular/core';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-select-separator',\n standalone: true,\n template: `\n <div [class]=\"cn('-mx-1 my-1 h-px bg-border', class)\"></div>\n `,\n})\nexport class SelectSeparatorComponent {\n @Input() class = '';\n protected cn = cn;\n}\n","import { Component, Input, forwardRef, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-switch',\n standalone: true,\n imports: [CommonModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent),\n multi: true\n }\n ],\n template: `\n <button\n type=\"button\"\n role=\"switch\"\n [attr.aria-checked]=\"checked\"\n [disabled]=\"disabled\"\n (click)=\"toggle()\"\n [class]=\"cn(\n 'peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50',\n sizeClasses.track,\n checked ? 'bg-primary' : 'bg-input',\n class\n )\"\n >\n <span\n [class]=\"cn(\n 'pointer-events-none block rounded-full bg-background shadow-lg ring-0 transition-transform',\n sizeClasses.thumb,\n checked ? sizeClasses.translate : 'translate-x-0'\n )\"\n ></span>\n </button>\n `\n})\nexport class SwitchComponent implements ControlValueAccessor {\n @Input() class = '';\n @Input() disabled = false;\n @Input() size: 'xs' | 'sm' | 'default' | 'lg' = 'default';\n\n checked = false;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n get sizeClasses() {\n const sizes = {\n xs: {\n track: 'h-4 w-7',\n thumb: 'h-3 w-3',\n translate: 'translate-x-3'\n },\n sm: {\n track: 'h-5 w-9',\n thumb: 'h-4 w-4',\n translate: 'translate-x-4'\n },\n default: {\n track: 'h-6 w-11',\n thumb: 'h-5 w-5',\n translate: 'translate-x-5'\n },\n lg: {\n track: 'h-7 w-[3.25rem]',\n thumb: 'h-6 w-6',\n translate: 'translate-x-6'\n }\n };\n return sizes[this.size];\n }\n\n protected cn = cn;\n\n toggle() {\n if (this.disabled) return;\n this.checked = !this.checked;\n this.onChange(this.checked);\n this.onTouched();\n }\n\n // --- ControlValueAccessor ---\n writeValue(value: boolean): void {\n this.checked = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled = isDisabled; }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-badge',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div [class]=\"computedClass\">\n <ng-content select=\"[prefix]\"></ng-content>\n\n <span class=\"truncate\">\n <ng-content></ng-content>\n </span>\n\n <button\n *ngIf=\"removable\"\n (click)=\"onRemove.emit($event)\"\n class=\"ml-1 -mr-1 rounded-md p-0.5 hover:bg-foreground/20 transition-colors outline-none focus:ring-1 focus:ring-ring\"\n >\n <i class=\"ri-close-line text-[1.1em]\"></i>\n </button>\n </div>\n `,\n})\nexport class BadgeComponent {\n @Input() variant: 'default' | 'secondary' | 'outline' | 'destructive' = 'default';\n @Input() size: 'xs' | 'sm' | 'default' = 'default';\n @Input() removable = false; // Toggle the \"Pill\" remove icon\n @Input() class = '';\n\n @Output() onRemove = new EventEmitter<MouseEvent>();\n\n protected readonly cn = cn;\n\n get computedClass() {\n return cn(\n // Base styles - Pills are always rounded-full\n 'inline-flex items-center justify-center rounded-md border px-2 py-0.5 font-medium transition-colors gap-1',\n\n // Variants (Google Dark Mode theme)\n this.variant === 'default' && 'border-transparent bg-primary text-primary-foreground',\n this.variant === 'secondary' && 'border-transparent bg-secondary text-secondary-foreground',\n this.variant === 'outline' && 'text-foreground border-border bg-transparent',\n this.variant === 'destructive' && 'border-transparent bg-destructive text-destructive-foreground',\n\n // Sizing\n this.size === 'xs' && 'px-1.5 py-0 text-[10px]',\n this.size === 'sm' && 'px-2 py-0 text-[11px]',\n this.size === 'default' && 'text-xs',\n\n this.class\n );\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-skeleton',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div [class]=\"computedClass\"></div>\n `,\n})\nexport class SkeletonComponent {\n @Input() variant: 'rect' | 'circle' | 'pill' = 'rect';\n @Input() class = '';\n\n protected readonly cn = cn;\n\n get computedClass() {\n return cn(\n // The background matches the Google Dark Mode \"Muted\" color\n 'animate-pulse bg-muted dark:bg-secondary rounded-md',\n\n this.variant === 'circle' && 'rounded-full',\n this.variant === 'pill' && 'rounded-full',\n\n this.class\n );\n }\n}\n","import { Component, Input, forwardRef, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-checkbox',\n standalone: true,\n imports: [CommonModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n ],\n template: `\n <div\n (click)=\"toggle()\"\n [class]=\"cn(\n 'group flex h-5 w-5 shrink-0 cursor-pointer items-center justify-center rounded-sm border border-primary ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n checked ? 'bg-primary text-primary-foreground' : 'bg-transparent',\n sizeClasses,\n class\n )\"\n >\n <i\n *ngIf=\"checked\"\n class=\"ri-check-line font-bold\"\n [class]=\"size === 'xs' ? 'text-[10px]' : 'text-[14px]'\"\n ></i>\n </div>\n `\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n @Input() class = '';\n @Input() disabled = false;\n @Input() size: 'xs' | 'sm' | 'default' | 'lg' = 'default';\n\n checked = false;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n protected cn = cn;\n\n get sizeClasses() {\n return cn(\n this.size === 'xs' && 'h-3.5 w-3.5',\n this.size === 'sm' && 'h-4 w-4',\n this.size === 'default' && 'h-5 w-5',\n this.size === 'lg' && 'h-6 w-6'\n );\n }\n\n toggle() {\n if (this.disabled) return;\n this.checked = !this.checked;\n this.onChange(this.checked);\n this.onTouched();\n }\n\n // --- ControlValueAccessor ---\n writeValue(value: boolean): void {\n this.checked = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled = isDisabled; }\n}\n","import {\n Directive, ElementRef, HostListener, Input,\n OnDestroy, ComponentRef, ViewContainerRef\n} from '@angular/core';\nimport { computePosition, flip, shift, offset, arrow, autoUpdate } from '@floating-ui/dom';\nimport { cn } from './utils/cn';\n\n@Directive({\n selector: '[tolleTooltip]',\n standalone: true\n})\nexport class TooltipDirective implements OnDestroy {\n @Input('tolleTooltip') content: string = '';\n @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'top';\n\n private tooltipEl: HTMLDivElement | null = null;\n private cleanup?: () => void;\n\n constructor(private el: ElementRef) {}\n\n @HostListener('mouseenter')\n show() {\n if (!this.content) return;\n\n // 1. Create Tooltip Element\n this.tooltipEl = document.createElement('div');\n this.tooltipEl.className = cn(\n 'absolute z-[100] px-2 py-1 text-xs font-medium text-white bg-black rounded shadow-md pointer-events-none'\n );\n this.tooltipEl.innerText = this.content;\n document.body.appendChild(this.tooltipEl);\n\n // 2. Position it using Floating UI\n this.cleanup = autoUpdate(this.el.nativeElement, this.tooltipEl, () => {\n computePosition(this.el.nativeElement, this.tooltipEl!, {\n placement: this.placement,\n middleware: [offset(8), flip(), shift({ padding: 5 })],\n }).then(({ x, y }) => {\n Object.assign(this.tooltipEl!.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n });\n });\n }\n\n @HostListener('mouseleave')\n @HostListener('focusout')\n hide() {\n if (this.tooltipEl) {\n this.tooltipEl.remove();\n this.tooltipEl = null;\n }\n if (this.cleanup) {\n this.cleanup();\n }\n }\n\n ngOnDestroy() {\n this.hide();\n }\n}\n","// projects/tolle/src/lib/toast.service.ts\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport interface Toast {\n id: number;\n title?: string;\n description: string;\n variant?: 'default' | 'destructive' | 'success';\n duration?: number; // Custom duration in ms\n remainingTime: number;\n isPaused: boolean;\n}\n\nexport type ToastPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center';\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n private toasts: Toast[] = [];\n private toastSubject = new Subject<Toast[]>();\n toasts$ = this.toastSubject.asObservable();\n\n constructor() {\n setInterval(() => this.tick(), 100);\n }\n show(toast: Omit<Toast, 'id' | 'remainingTime' | 'isPaused'>) {\n const duration = toast.duration || 3000;\n const newToast: Toast = {\n ...toast,\n id: Date.now(),\n duration,\n remainingTime: duration,\n isPaused: false\n };\n this.toasts.push(newToast);\n this.notify();\n }\n\n private tick() {\n let changed = false;\n this.toasts.forEach(t => {\n if (!t.isPaused) {\n t.remainingTime -= 100;\n changed = true;\n }\n });\n\n const initialCount = this.toasts.length;\n this.toasts = this.toasts.filter(t => t.remainingTime > 0);\n\n if (changed || this.toasts.length !== initialCount) {\n this.notify();\n }\n }\n\n setPaused(id: number, paused: boolean) {\n const toast = this.toasts.find(t => t.id === id);\n if (toast) {\n toast.isPaused = paused;\n this.notify();\n }\n }\n\n remove(id: number) {\n this.toasts = this.toasts.filter(t => t.id !== id);\n this.notify();\n }\n\n private notify() {\n this.toastSubject.next([...this.toasts]);\n }\n}\n","// projects/tolle/src/lib/toast-container.component.ts\nimport {Component, inject, Input} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {ToastService, Toast, ToastPosition} from './toast.service';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-toaster',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div [class]=\"cn('fixed z-[100] flex flex-col gap-2 w-full max-w-[380px] p-4', positionClasses)\">\n <div\n *ngFor=\"let toast of toasts$ | async\"\n (mouseenter)=\"toastService.setPaused(toast.id, true)\"\n (mouseleave)=\"toastService.setPaused(toast.id, false)\"\n [class]=\"cn(\n 'relative overflow-hidden p-4 rounded-md border border-border shadow-lg flex items-start justify-between gap-4 transition-all duration-300 bg-background text-foreground',\n toast.variant === 'destructive' && 'border-destructive/50 text-destructive'\n )\"\n >\n <div class=\"grid gap-1\">\n <div *ngIf=\"toast.title\" class=\"text-sm font-semibold\">{{ toast.title }}</div>\n <div class=\"text-xs opacity-90\">{{ toast.description }}</div>\n </div>\n\n <button (click)=\"toastService.remove(toast.id)\" class=\"opacity-50 hover:opacity-100\">\n <i class=\"ri-close-line\"></i>\n </button>\n\n <div\n class=\"absolute bottom-0 left-0 h-1 transition-all duration-100 ease-linear\"\n [style.width.%]=\"(toast.remainingTime / (toast.duration || 3000)) * 100\"\n [class.bg-destructive]=\"toast.variant === 'destructive'\"\n [class.bg-primary]=\"toast.variant !== 'destructive'\"\n ></div>\n </div>\n </div>\n `\n})\nexport class ToastContainerComponent {\n toastService = inject(ToastService);\n @Input() position: ToastPosition = 'bottom-right';\n toasts$ = this.toastService.toasts$;\n get positionClasses() {\n const pos = {\n 'top-right': 'top-0 right-0 flex-col-reverse',\n 'top-left': 'top-0 left-0 flex-col-reverse',\n 'bottom-right': 'bottom-0 right-0',\n 'bottom-left': 'bottom-0 left-0',\n 'top-center': 'top-0 left-1/2 -translate-x-1/2 flex-col-reverse',\n 'bottom-center': 'bottom-0 left-1/2 -translate-x-1/2'\n };\n return pos[this.position];\n }\n protected cn = cn;\n}\n","import { Injectable, Inject, PLATFORM_ID, Optional, Renderer2, RendererFactory2 } from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject } from 'rxjs';\nimport { TOLLE_CONFIG, TolleConfig } from './tolle-config';\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService {\n private renderer: Renderer2;\n private isDarkSubject = new BehaviorSubject<boolean>(false);\n isDark$ = this.isDarkSubject.asObservable();\n private styleId = 'tolle-dynamic-theme';\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: Object,\n @Optional() @Inject(TOLLE_CONFIG) private config: TolleConfig,\n rendererFactory: RendererFactory2\n ) {\n this.renderer = rendererFactory.createRenderer(null, null);\n this.initializeTheme();\n }\n\n private initializeTheme() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n // LOGIC: User Saved Preferences > Config Defaults > System Preference\n const savedTheme = localStorage.getItem('tolle-theme');\n const savedPrimary = localStorage.getItem('tolle-primary-color');\n const savedRadius = localStorage.getItem('tolle-radius');\n const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n\n console.log('Theme initialization:', {\n savedTheme,\n savedPrimary,\n savedRadius,\n config: this.config,\n systemPrefersDark\n });\n\n // 1. Determine Dark/Light Mode\n // Priority: Saved Theme > Config Default > System Preference\n let shouldBeDark = systemPrefersDark; // Start with system\n\n if (savedTheme) {\n // User has saved preference\n shouldBeDark = savedTheme === 'dark';\n } else if (this.config?.darkByDefault !== undefined) {\n // Use config default if no user preference\n shouldBeDark = this.config.darkByDefault;\n }\n\n // Apply theme mode\n if (shouldBeDark) {\n this.enableDarkMode(false); // Don't save, we'll save after checking all preferences\n } else {\n this.disableDarkMode(false);\n }\n\n // 2. Apply Primary Color\n // Priority: Saved Color > Config Color\n if (savedPrimary) {\n // User has saved color preference\n this.setPrimaryColor(savedPrimary, false); // Don't save again\n } else if (this.config?.primaryColor) {\n // Use config default if no user preference\n this.setPrimaryColor(this.config.primaryColor, false); // Save this as user preference\n }\n\n // 3. Apply Radius\n // Priority: Saved Radius > Config Radius\n if (savedRadius) {\n // User has saved radius preference\n this.setRadius(savedRadius, false);\n } else if (this.config?.radius) {\n // Use config default if no user preference\n this.setRadius(this.config.radius, false);\n }\n\n // Save theme mode preference if it came from config or system\n if (!savedTheme) {\n localStorage.setItem('tolle-theme', shouldBeDark ? 'dark' : 'light');\n }\n }\n /**\n * Sets the border radius for all components\n */\n setRadius(radius: string, persist = true) {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const root = this.document.documentElement;\n\n // Set the CSS variable\n this.renderer.setStyle(root, '--radius', radius);\n\n // Also update the dynamic styles to include radius calculations\n this.updateRadiusInDynamicStyles(radius);\n\n // Persist if needed\n if (persist) {\n localStorage.setItem('tolle-radius', radius);\n }\n }\n\n /**\n * Updates the radius calculations in dynamic styles\n */\n private updateRadiusInDynamicStyles(radius: string) {\n const existingStyle = this.document.getElementById(this.styleId);\n\n if (existingStyle) {\n let css = existingStyle.textContent || '';\n\n // Update or add radius calculations\n if (css.includes('--radius:')) {\n // Replace existing radius declarations\n css = css.replace(/--radius:[^;]+;/g, `--radius: ${radius};`);\n } else {\n // Add radius to the beginning of :root\n css = css.replace(/:root\\s*{/, `:root {\\n --radius: ${radius};`);\n }\n\n // Update the calculated radius values in the CSS\n const radiusCalcRegex = /calc\\(var\\(--radius[^)]+\\)/g;\n css = css.replace(radiusCalcRegex, (match) => {\n if (match.includes('- 2px')) {\n return `calc(${radius} - 2px)`;\n } else if (match.includes('- 4px')) {\n return `calc(${radius} - 4px)`;\n }\n return match;\n });\n\n existingStyle.textContent = css;\n }\n }\n\n /**\n * Generates full primary color palette (50-900) based on base color\n */\n private generatePrimaryShades(baseColor: string) {\n // Convert hex to RGB\n const rgb = this.hexToRgb(baseColor);\n const rgbString = rgb ? `${rgb.r} ${rgb.g} ${rgb.b}` : '37 99 235';\n\n // Create lighter ring colors in RGB\n const ringLight = this.lightenColor(baseColor, 40);\n const ringLightRgb = this.hexToRgb(ringLight);\n const ringLightRgbString = ringLightRgb ? `${ringLightRgb.r} ${ringLightRgb.g} ${ringLightRgb.b}` : '96 165 250';\n\n const ringDark = this.lightenColor(baseColor, 20);\n const ringDarkRgb = this.hexToRgb(ringDark);\n const ringDarkRgbString = ringDarkRgb ? `${ringDarkRgb.r} ${ringDarkRgb.g} ${ringDarkRgb.b}` : '147 197 253';\n\n // Get current radius or use default\n const root = this.document.documentElement;\n const currentRadius = getComputedStyle(root).getPropertyValue('--radius').trim() || '0.5rem';\n\n const css = `\n /* Override primary colors - this needs to come AFTER your main CSS */\n :root {\n /* Primary in RGB format for Tailwind opacity support */\n --primary: ${rgbString};\n --primary-foreground: ${this.getContrastColorRgb(baseColor)};\n\n /* Radius */\n --radius: ${currentRadius};\n\n /* Primary shades for light mode */\n --primary-50: ${this.hexToRgbString(this.lightenColor(baseColor, 90))};\n --primary-100: ${this.hexToRgbString(this.lightenColor(baseColor, 80))};\n --primary-200: ${this.hexToRgbString(this.lightenColor(baseColor, 60))};\n --primary-300: ${this.hexToRgbString(this.lightenColor(baseColor, 40))};\n --primary-400: ${this.hexToRgbString(this.lightenColor(baseColor, 20))};\n --primary-500: ${rgbString};\n --primary-600: ${this.hexToRgbString(this.darkenColor(baseColor, 20))};\n --primary-700: ${this.hexToRgbString(this.darkenColor(baseColor, 40))};\n --primary-800: ${this.hexToRgbString(this.darkenColor(baseColor, 60))};\n --primary-900: ${this.hexToRgbString(this.darkenColor(baseColor, 80))};\n\n /* Update ring color to be lighter */\n --ring: ${ringLightRgbString};\n }\n\n .dark {\n /* For dark mode, we keep the primary color but adjust shades */\n --primary: ${rgbString};\n --primary-foreground: ${this.getContrastColorRgb(baseColor)};\n\n /* Dark mode shades */\n --primary-50: ${this.hexToRgbString(this.darkenColor(baseColor, 85))};\n --primary-100: ${this.hexToRgbString(this.darkenColor(baseColor, 75))};\n --primary-200: ${this.hexToRgbString(this.darkenColor(baseColor, 65))};\n --primary-300: ${this.hexToRgbString(this.darkenColor(baseColor, 55))};\n --primary-400: ${this.hexToRgbString(this.darkenColor(baseColor, 45))};\n --primary-500: ${rgbString};\n --primary-600: ${this.hexToRgbString(this.lightenColor(baseColor, 20))};\n --primary-700: ${this.hexToRgbString(this.lightenColor(baseColor, 35))};\n --primary-800: ${this.hexToRgbString(this.lightenColor(baseColor, 50))};\n --primary-900: ${this.hexToRgbString(this.lightenColor(baseColor, 65))};\n\n /* Update ring color for dark mode - lighter variant */\n --ring: ${ringDarkRgbString};\n }\n `;\n\n this.injectDynamicStyles(css);\n }\n\n /**\n * Convert hex color to RGB object\n */\n private hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n // Remove # if present\n const cleanedHex = hex.replace('#', '');\n\n let r = 0, g = 0, b = 0;\n\n if (cleanedHex.length === 3) {\n r = parseInt(cleanedHex[0] + cleanedHex[0], 16);\n g = parseInt(cleanedHex[1] + cleanedHex[1], 16);\n b = parseInt(cleanedHex[2] + cleanedHex[2], 16);\n return { r, g, b };\n }\n\n if (cleanedHex.length === 6) {\n r = parseInt(cleanedHex.substring(0, 2), 16);\n g = parseInt(cleanedHex.substring(2, 4), 16);\n b = parseInt(cleanedHex.substring(4, 6), 16);\n return { r, g, b };\n }\n\n return null;\n }\n\n /**\n * Convert hex to RGB string format for CSS (space-separated)\n */\n private hexToRgbString(hexColor: string): string {\n const rgb = this.hexToRgb(hexColor);\n return rgb ? `${rgb.r} ${rgb.g} ${rgb.b}` : '37 99 235';\n }\n\n /**\n * Get contrast color in RGB format\n */\n private getContrastColorRgb(hexColor: string): string {\n const contrast = this.getContrastColor(hexColor);\n const rgb = this.hexToRgb(contrast);\n return rgb ? `${rgb.r} ${rgb.g} ${rgb.b}` : '255 255 255';\n }\n\n /**\n * Lighten a hex color by a percentage\n */\n private lightenColor(color: string, percent: number): string {\n const rgb = this.hexToRgb(color);\n if (!rgb) return color;\n\n // Lighten by percentage\n const r = Math.min(255, Math.floor(rgb.r + (255 - rgb.r) * (percent / 100)));\n const g = Math.min(255, Math.floor(rgb.g + (255 - rgb.g) * (percent / 100)));\n const b = Math.min(255, Math.floor(rgb.b + (255 - rgb.b) * (percent / 100)));\n\n // Convert back to hex\n return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;\n }\n\n /**\n * Darken a hex color by a percentage\n */\n private darkenColor(color: string, percent: number): string {\n const rgb = this.hexToRgb(color);\n if (!rgb) return color;\n\n const factor = 1 - (percent / 100);\n const r = Math.max(0, Math.floor(rgb.r * factor));\n const g = Math.max(0, Math.floor(rgb.g * factor));\n const b = Math.max(0, Math.floor(rgb.b * factor));\n\n return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;\n }\n\n /**\n * Calculate contrast color (black or white) based on background color\n */\n private getContrastColor(hexColor: string): string {\n const rgb = this.hexToRgb(hexColor);\n if (!rgb) return '#ffffff';\n\n // Calculate relative luminance\n const luminance = (0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b) / 255;\n\n // Return black for light colors, white for dark colors\n return luminance > 0.5 ? '#000000' : '#ffffff';\n }\n\n private injectDynamicStyles(css: string) {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const existingStyle = this.document.getElementById(this.styleId);\n if (existingStyle) {\n existingStyle.remove();\n }\n\n const styleElement = this.document.createElement('style');\n styleElement.id = this.styleId;\n styleElement.textContent = css;\n this.renderer.appendChild(this.document.head, styleElement);\n }\n\n toggleTheme() {\n const isCurrentlyDark = this.document.documentElement.classList.contains('dark');\n isCurrentlyDark ? this.disableDarkMode() : this.enableDarkMode();\n }\n\n private enableDarkMode(saveToStorage = true) {\n this.renderer.addClass(this.document.documentElement, 'dark');\n if (saveToStorage) {\n localStorage.setItem('tolle-theme', 'dark');\n }\n this.isDarkSubject.next(true);\n }\n\n private disableDarkMode(saveToStorage = true) {\n this.renderer.removeClass(this.document.documentElement, 'dark');\n if (saveToStorage) {\n localStorage.setItem('tolle-theme', 'light');\n }\n this.isDarkSubject.next(false);\n }\n setPrimaryColor(color: string, persist = true) {\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.generatePrimaryShades(color);\n\n // Also set inline for immediate update\n const rgb = this.hexToRgb(color);\n if (rgb) {\n this.renderer.setStyle(\n this.document.documentElement,\n '--primary',\n `${rgb.r} ${rgb.g} ${rgb.b}`\n );\n }\n\n if (persist) {\n localStorage.setItem('tolle-primary-color', color);\n }\n }\n\n get currentTheme(): 'dark' | 'light' {\n return this.isDarkSubject.value ? 'dark' : 'light';\n }\n\n get primaryColor(): string | null {\n if (!isPlatformBrowser(this.platformId)) return null;\n\n const root = this.document.documentElement;\n const cssValue = getComputedStyle(root).getPropertyValue('--primary').trim();\n\n if (cssValue && cssValue !== '') {\n // Convert RGB string back to hex for external use\n const rgbParts = cssValue.split(' ').map(Number);\n if (rgbParts.length === 3) {\n return `#${rgbParts[0].toString(16).padStart(2, '0')}${rgbParts[1].toString(16).padStart(2, '0')}${rgbParts[2].toString(16).padStart(2, '0')}`;\n }\n }\n\n return localStorage.getItem('tolle-primary-color');\n }\n\n /**\n * Reset to config defaults (clears user preferences)\n */\n resetToConfigDefaults() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n // Clear user preferences\n localStorage.removeItem('tolle-theme');\n localStorage.removeItem('tolle-primary-color');\n localStorage.removeItem('tolle-radius');\n\n // Re-initialize with config defaults\n this.initializeTheme();\n }\n\n /**\n * Get current user preferences\n */\n getUserPreferences() {\n if (!isPlatformBrowser(this.platformId)) return null;\n\n return {\n theme: localStorage.getItem('tolle-theme'),\n primaryColor: localStorage.getItem('tolle-primary-color'),\n radius: localStorage.getItem('tolle-radius')\n };\n }\n\n /**\n * Clear all user preferences\n */\n clearUserPreferences() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n localStorage.removeItem('tolle-theme');\n localStorage.removeItem('tolle-primary-color');\n localStorage.removeItem('tolle-radius');\n\n // Reset to system defaults (not config defaults)\n const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n if (systemPrefersDark) {\n this.enableDarkMode(false);\n } else {\n this.disableDarkMode(false);\n }\n\n // Remove CSS variables\n const root = this.document.documentElement;\n this.renderer.removeStyle(root, '--primary');\n this.renderer.removeStyle(root, '--radius');\n\n // Clear dynamic styles\n const existingStyle = this.document.getElementById(this.styleId);\n if (existingStyle) {\n existingStyle.remove();\n }\n }\n}\n","import { APP_INITIALIZER, InjectionToken, Provider } from '@angular/core';\nimport { ThemeService } from './theme.service';\n\nexport interface TolleConfig {\n primaryColor?: string;\n radius?: string;\n defaultToastDuration?: number;\n darkByDefault?: boolean;\n}\n\nexport const TOLLE_CONFIG = new InjectionToken<TolleConfig>('TolleConfig');\n\nexport function provideTolleConfig(config: TolleConfig): Provider[] {\n return [\n { provide: TOLLE_CONFIG, useValue: config },\n {\n provide: APP_INITIALIZER,\n useFactory: (_: ThemeService) => () => {\n // Theme is already initialized in constructor\n // This factory ensures themeService is instantiated during bootstrap\n },\n deps: [ThemeService],\n multi: true,\n },\n ];\n}\n","import { Component, Input, ContentChildren, QueryList, AfterContentInit, ElementRef, ViewChild, HostListener } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { computePosition, flip, shift, offset, autoUpdate, size } from '@floating-ui/dom';\nimport { SelectItemComponent } from './select-item.component';\nimport { SelectService } from './select.service';\nimport { cn } from './utils/cn';\nimport { InputComponent } from './input.component';\nimport { BadgeComponent } from './badge.component';\n\n@Component({\n selector: 'tolle-multi-select',\n standalone: true,\n imports: [CommonModule, FormsModule, BadgeComponent, InputComponent],\n providers: [\n SelectService,\n { provide: NG_VALUE_ACCESSOR, useExisting: MultiSelectComponent, multi: true }\n ],\n template: `\n <div [class]=\"cn('relative w-full', 'size-' + size)\" #container>\n <button\n #trigger\n type=\"button\"\n (click)=\"toggle()\"\n [disabled]=\"disabled\"\n [class]=\"computedTriggerClass\">\n\n <div class=\"flex flex-wrap gap-1 items-center max-w-[95%]\">\n <ng-container *ngIf=\"value?.length; else placeholderTpl\">\n <tolle-badge *ngFor=\"let item of displayItems\" size=\"xs\" variant=\"secondary\" [removable]=\"true\" (onRemove)=\"removeValue($event, item.value)\">\n {{ item.label }}\n </tolle-badge>\n <span *ngIf=\"exceedsDisplayLimit\" class=\"text-xs text-muted-foreground px-1\">\n +{{ value.length - maxDisplayItems }} more\n </span>\n <span *ngIf=\"maxSelections && value.length >= maxSelections\" class=\"text-xs text-muted-foreground px-1\">\n (Max reached)\n </span>\n </ng-container>\n <ng-template #placeholderTpl><span class=\"text-muted-foreground\">{{ placeholder }}</span></ng-template>\n </div>\n <i [class]=\"cn('ri-arrow-down-s-line text-muted-foreground ml-2 transition-transform duration-200', isOpen ? 'rotate-180' : '')\"></i>\n </button>\n\n <div #popover *ngIf=\"isOpen\"\n class=\"fixed bg-popover z-[999] rounded-md border border-border shadow-md overflow-hidden\"\n style=\"visibility: hidden; top: 0; left: 0;\">\n\n <div class=\"p-2 border-b border-border space-y-2 bg-popover\">\n <div class=\"flex items-center justify-between px-1 text-xs\">\n <span class=\"text-muted-foreground\">\n {{ value.length }} selected\n <span *ngIf=\"maxSelections\">/ {{ maxSelections }} max</span>\n </span>\n <span *ngIf=\"maxSelections && value.length >= maxSelections\" class=\"text-destructive text-xs font-medium\">\n Maximum reached\n </span>\n </div>\n\n <tolle-input *ngIf=\"searchable\" size=\"xs\" placeholder=\"Search...\" [(ngModel)]=\"searchQuery\" (ngModelChange)=\"onSearchChange($event)\">\n <i prefix class=\"ri-search-line\"></i>\n </tolle-input>\n\n <div class=\"flex items-center justify-between px-1\">\n <button type=\"button\"\n (click)=\"selectAll()\"\n [disabled]=\"maxSelections && selectableItems.length > maxSelections\"\n [class]=\"cn(\n 'text-[10px] font-bold uppercase transition-colors',\n maxSelections && selectableItems.length > maxSelections\n ? 'text-muted-foreground cursor-not-allowed'\n : 'text-primary hover:underline'\n )\">\n Select All\n </button>\n <button type=\"button\" (click)=\"clearAll()\" class=\"text-[10px] font-bold uppercase text-muted-foreground hover:underline\">\n Clear\n </button>\n </div>\n </div>\n\n <div class=\"p-1 max-h-60 overflow-y-auto\">\n <ng-content></ng-content>\n <div *ngIf=\"noResults\" class=\"py-4 text-center text-xs text-muted-foreground\">\n No results found for \"{{searchQuery}}\"\n </div>\n <div *ngIf=\"maxSelections && value.length >= maxSelections\"\n class=\"p-2 text-center border-t border-border bg-muted/20\">\n <span class=\"text-xs text-destructive\">\n <i class=\"ri-alert-line mr-1\"></i>\n Maximum selection limit reached ({{maxSelections}})\n </span>\n </div>\n </div>\n </div>\n </div>\n `\n})\nexport class MultiSelectComponent implements ControlValueAccessor, AfterContentInit {\n @Input() placeholder = 'Select options...';\n @Input() size: 'xs' | 'sm' | 'default' | 'lg' = 'default';\n @Input() searchable = false;\n @Input() disabled = false;\n @Input() class = '';\n @Input() maxSelections?: number;\n @Input() maxDisplayItems = 3;\n @Input() error = false; // Added to support error styling\n\n @ViewChild('trigger') trigger!: ElementRef;\n @ViewChild('popover') popover!: ElementRef;\n @ContentChildren(SelectItemComponent, { descendants: true }) items!: QueryList<SelectItemComponent>;\n\n value: any[] = [];\n selectedItems: {label: string, value: any}[] = [];\n isOpen = false;\n searchQuery = '';\n noResults = false;\n private cleanup?: () => void;\n\n constructor(private selectService: SelectService) {\n this.selectService.selectedValue$.subscribe(val => {\n if (val !== undefined && this.isOpen) this.toggleValue(val);\n });\n }\n\n // NEW: Matches InputComponent styles exactly\n get computedTriggerClass() {\n return cn(\n // Base styles\n 'flex min-h-10 w-full items-center justify-between rounded-md border transition-all duration-200 h-auto',\n 'bg-background text-sm',\n\n // Border and shadow\n 'border-input shadow-sm',\n\n // Padding based on size (aligned with InputComponent logic)\n this.size === 'xs' && 'px-2 py-1',\n this.size === 'sm' && 'px-3 py-1.5',\n this.size === 'default' && 'px-3 py-2',\n this.size === 'lg' && 'px-4 py-2',\n\n // Focus state - ZARDUI STYLE (Soft ring, no offset)\n !this.disabled && [\n 'focus:outline-none',\n 'focus:ring-4',\n 'focus:ring-ring/30',\n 'focus:ring-offset-0',\n 'focus:shadow-none',\n 'focus:border-primary/80' // Darkens border on focus\n ],\n\n // Hover state\n !this.disabled && 'hover:border-accent',\n\n // Error state\n this.error && [\n 'border-destructive',\n !this.disabled && [\n 'focus:border-destructive/80',\n 'focus:ring-destructive/30'\n ]\n ],\n\n // Disabled state\n this.disabled && [\n 'cursor-not-allowed opacity-50',\n 'border-opacity-50'\n ],\n\n this.class\n );\n }\n\n ngAfterContentInit() {\n this.syncItems();\n this.items.changes.subscribe(() => this.syncItems());\n }\n\n get displayItems(): {label: string, value: any}[] {\n return this.selectedItems.slice(0, this.maxDisplayItems);\n }\n\n get exceedsDisplayLimit(): boolean {\n return this.value.length > this.maxDisplayItems;\n }\n\n get selectableItems(): SelectItemComponent[] {\n return this.items ? this.items.filter(item => !item.disabled) : [];\n }\n\n get availableSelections(): number {\n if (!this.maxSelections) return Infinity;\n return Math.max(0, this.maxSelections - this.value.length);\n }\n\n toggle() {\n if (this.disabled) return;\n this.isOpen ? this.close() : this.open();\n }\n\n open() {\n this.isOpen = true;\n setTimeout(() => this.updatePosition());\n }\n\n close() {\n this.isOpen = false;\n this.searchQuery = '';\n this.onSearchChange('');\n if (this.cleanup) this.cleanup();\n }\n\n private updatePosition() {\n if (!this.trigger || !this.popover) return;\n\n this.cleanup = autoUpdate(this.trigger.nativeElement, this.popover.nativeElement, () => {\n computePosition(this.trigger.nativeElement, this.popover.nativeElement, {\n strategy: 'fixed',\n placement: 'bottom-start',\n middleware: [\n offset(4),\n flip(),\n shift({ padding: 8 }),\n size({\n apply({ rects, elements, availableHeight }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n maxHeight: `${availableHeight}px`\n });\n },\n }),\n ],\n }).then(({ x, y, strategy }) => {\n Object.assign(this.popover.nativeElement.style, {\n position: strategy,\n left: `${x}px`,\n top: `${y}px`,\n visibility: 'visible',\n });\n });\n });\n }\n\n toggleValue(val: any) {\n const index = this.value.indexOf(val);\n if (index > -1) {\n this.value.splice(index, 1);\n } else {\n if (this.maxSelections && this.value.length >= this.maxSelections) return;\n this.value.push(val);\n }\n this.syncItems();\n this.onChange([...this.value]);\n }\n\n selectAll() {\n if (!this.items) return;\n let itemsToSelect: any[] = [];\n if (this.maxSelections) {\n const availableItems = this.items\n .filter(item => !item.disabled && !this.value.includes(item.value))\n .slice(0, this.availableSelections)\n .map(item => item.value);\n itemsToSelect = [...this.value, ...availableItems];\n } else {\n itemsToSelect = this.items.filter(item => !item.disabled).map(item => item.value);\n }\n this.value = itemsToSelect;\n this.syncItems();\n this.onChange([...this.value]);\n }\n\n clearAll() {\n this.value = [];\n this.syncItems();\n this.onChange([]);\n }\n\n removeValue(event: MouseEvent, val: any) {\n event.stopPropagation();\n this.toggleValue(val);\n }\n\n private syncItems() {\n if (!this.items) return;\n this.selectedItems = [];\n this.items.forEach(item => {\n item.selected = this.value.includes(item.value);\n if (item.selected) {\n this.selectedItems.push({ label: item.getLabel(), value: item.value });\n }\n if (this.maxSelections && this.value.length >= this.maxSelections) {\n item.disabled = !this.value.includes(item.value);\n } else if (item.disabled) {\n item.disabled = false;\n }\n });\n }\n\n onSearchChange(q: string) {\n const filter = (q || '').toLowerCase();\n let visibleCount = 0;\n this.items.forEach(item => {\n const isVisible = item.getLabel().toLowerCase().includes(filter);\n item.hidden = !isVisible;\n if (isVisible) visibleCount++;\n });\n this.noResults = visibleCount === 0 && filter !== '';\n }\n\n @HostListener('document:mousedown', ['$event'])\n onClickOutside(event: MouseEvent) {\n if (this.isOpen && !this.trigger.nativeElement.contains(event.target) && !this.popover?.nativeElement.contains(event.target)) {\n this.close();\n }\n }\n\n // ControlValueAccessor\n onChange: any = () => {};\n onTouched: any = () => {};\n writeValue(v: any[]): void {\n this.value = Array.isArray(v) ? v : [];\n this.syncItems();\n }\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled = isDisabled; }\n\n protected cn = cn;\n}\n","import {\n Component, Input, OnInit, forwardRef, Output, EventEmitter\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport {\n addMonths, subMonths, startOfMonth, endOfMonth,\n startOfWeek, endOfWeek, eachDayOfInterval, isSameMonth,\n isSameDay, isToday, setMonth, setYear, addYears, subYears,\n isBefore, startOfDay, format, parseISO, isValid, isSameYear\n} from 'date-fns';\nimport { cn } from './utils/cn';\n\nexport type CalendarMode = 'date' | 'month' | 'year';\n\n@Component({\n selector: 'tolle-calendar',\n standalone: true,\n imports: [CommonModule, FormsModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CalendarComponent),\n multi: true\n }\n ],\n template: `\n <div [class]=\"cn('p-3 border rounded-md bg-background text-popover-foreground shadow-sm inline-block min-w-fit', class)\">\n <!-- Header with Navigation -->\n <div class=\"flex items-center justify-between pt-1 pb-4 gap-2\">\n <!-- View Selector -->\n <div class=\"flex items-center gap-1\">\n <button *ngIf=\"mode !== 'year'\"\n type=\"button\"\n (click)=\"setView('month')\"\n [class]=\"cn(\n 'text-sm font-semibold px-2 py-1 rounded transition-colors',\n currentView === 'month' ? 'bg-secondary text-secondary-foreground' : 'hover:bg-accent hover:text-accent-foreground'\n )\">\n {{ formatMonthYear(viewDate, 'month') }}\n </button>\n\n <button\n type=\"button\"\n (click)=\"setView('year')\"\n [class]=\"cn(\n 'text-sm font-semibold px-2 py-1 rounded transition-colors',\n currentView === 'year' ? 'bg-secondary text-secondary-foreground' : 'hover:bg-accent hover:text-accent-foreground'\n )\">\n {{ formatMonthYear(viewDate, 'year') }}\n </button>\n </div>\n\n <!-- Navigation Buttons -->\n <div class=\"flex items-center space-x-1\">\n <button type=\"button\" (click)=\"prev()\" [class]=\"navBtnClass\">\n <i class=\"ri-arrow-left-s-line text-lg\"></i>\n </button>\n <button type=\"button\" (click)=\"next()\" [class]=\"navBtnClass\">\n <i class=\"ri-arrow-right-s-line text-lg\"></i>\n </button>\n </div>\n </div>\n\n <!-- DATE MODE -->\n <div *ngIf=\"currentView === 'date' && mode === 'date'\" class=\"space-y-2 animate-in fade-in zoom-in-95 duration-200\">\n <div class=\"grid grid-cols-7 gap-1 w-full\">\n <span *ngFor=\"let day of weekDays\" class=\"text-[0.8rem] text-muted-foreground font-normal text-center w-9\">\n {{ day }}\n </span>\n </div>\n <div class=\"grid grid-cols-7 gap-1 w-full\">\n <button\n *ngFor=\"let date of daysInMonth\"\n type=\"button\"\n (click)=\"selectDate(date)\"\n [disabled]=\"isDateDisabled(date)\"\n [class]=\"getDayClass(date)\"\n >\n {{ formatDate(date, 'day') }}\n </button>\n </div>\n </div>\n\n <!-- MONTH SELECTOR (for date mode and month mode) -->\n <div *ngIf=\"(currentView === 'month')\"\n class=\"grid grid-cols-3 gap-2 w-64 animate-in fade-in zoom-in-95 duration-200\">\n <button\n *ngFor=\"let month of months; let i = index\"\n type=\"button\"\n (click)=\"selectMonth(i)\"\n [class]=\"getMonthClass(i)\"\n >\n {{ month }}\n </button>\n </div>\n\n <!-- YEAR SELECTOR (for date mode and year mode) -->\n <div *ngIf=\"(currentView === 'year') \"\n class=\"grid grid-cols-4 gap-2 w-64 animate-in fade-in zoom-in-95 duration-200\">\n <button\n *ngFor=\"let year of years\"\n type=\"button\"\n (click)=\"selectYear(year)\"\n [class]=\"getYearClass(year)\"\n >\n {{ year }}\n </button>\n </div>\n\n <!-- Quick Actions -->\n <div *ngIf=\"showQuickActions\" class=\"border-t pt-3 mt-3\">\n <div class=\"flex items-center justify-between gap-2\">\n <button\n type=\"button\"\n (click)=\"selectToday()\"\n [class]=\"quickActionBtnClass\"\n [disabled]=\"isTodayDisabled()\"\n >\n Today\n </button>\n <button\n type=\"button\"\n (click)=\"clear()\"\n [class]=\"quickActionBtnClass\"\n >\n Clear\n </button>\n </div>\n </div>\n </div>\n `\n})\nexport class CalendarComponent implements OnInit, ControlValueAccessor {\n @Input() class = '';\n @Input() mode: CalendarMode = 'date';\n @Input() disablePastDates = false;\n @Input() showQuickActions = true;\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n @Input() formatMonthFn?: (date: Date) => string;\n @Input() formatYearFn?: (date: Date) => string;\n @Input() formatDateFn?: (date: Date) => string;\n\n @Output() dateSelect = new EventEmitter<Date | null>();\n\n currentView: 'date' | 'month' | 'year' = 'date';\n viewDate: Date = new Date();\n selectedDate: Date | null = null;\n\n weekDays = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n daysInMonth: Date[] = [];\n months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n years: number[] = [];\n yearRangeStart: number;\n\n navBtnClass = cn('h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 border border-input rounded-md flex items-center justify-center hover:bg-accent hover:text-accent-foreground transition-all');\n quickActionBtnClass = cn('px-3 py-1.5 text-sm rounded hover:bg-accent text-muted-foreground hover:text-foreground transition-colors');\n\n onTouched: () => void = () => {};\n onChange: (value: any) => void = () => {};\n\n protected cn = cn;\n\n constructor() {\n this.yearRangeStart = new Date().getFullYear() - 6;\n }\n\n ngOnInit() {\n // Initialize based on mode\n if (this.mode === 'month') {\n this.currentView = 'month';\n } else if (this.mode === 'year') {\n this.currentView = 'year';\n }\n\n this.generateDays();\n this.generateYears();\n }\n\n // Format helpers\n formatMonthYear(date: Date, type: 'month' | 'year'): string {\n if (type === 'month' && this.formatMonthFn) {\n return this.formatMonthFn(date);\n }\n if (type === 'year' && this.formatYearFn) {\n return this.formatYearFn(date);\n }\n return type === 'month' ? format(date, 'MMMM') : format(date, 'yyyy');\n }\n\n formatDate(date: Date, type: 'day' | 'month' | 'year'): string {\n if (type === 'day' && this.formatDateFn) {\n return this.formatDateFn(date);\n }\n return format(date, type === 'day' ? 'd' : type === 'month' ? 'MMM' : 'yyyy');\n }\n\n generateDays() {\n if (this.mode !== 'date') return;\n\n const start = startOfWeek(startOfMonth(this.viewDate));\n const end = endOfWeek(endOfMonth(this.viewDate));\n this.daysInMonth = eachDayOfInterval({ start, end });\n }\n\n generateYears() {\n const currentYear = this.viewDate.getFullYear();\n\n if (this.mode === 'year') {\n // For year picker, show a 12-year grid\n this.years = Array.from({ length: 12 }, (_, i) => this.yearRangeStart + i);\n } else {\n // For date mode year selector, show 16 years centered on current\n this.years = Array.from({ length: 16 }, (_, i) => currentYear - 6 + i);\n }\n }\n\n setView(view: 'date' | 'month' | 'year') {\n this.currentView = view;\n if (view === 'year') {\n this.generateYears();\n }\n }\n\n prev() {\n if (this.mode === 'date') {\n if (this.currentView === 'date') {\n this.viewDate = subMonths(this.viewDate, 1);\n this.generateDays();\n } else if (this.currentView === 'year') {\n this.viewDate = subYears(this.viewDate, 16);\n this.generateYears();\n } else if (this.currentView === 'month') {\n this.viewDate = subYears(this.viewDate, 1);\n }\n } else if (this.mode === 'month') {\n this.viewDate = subYears(this.viewDate, 1);\n } else if (this.mode === 'year') {\n this.yearRangeStart -= 12;\n this.generateYears();\n } else if (this.mode === 'month-year') {\n if (this.currentView === 'month') {\n this.viewDate = subYears(this.viewDate, 1);\n } else {\n this.yearRangeStart -= 12;\n this.generateYears();\n }\n }\n }\n\n next() {\n if (this.mode === 'date') {\n if (this.currentView === 'date') {\n this.viewDate = addMonths(this.viewDate, 1);\n this.generateDays();\n } else if (this.currentView === 'year') {\n this.viewDate = addYears(this.viewDate, 16);\n this.generateYears();\n } else if (this.currentView === 'month') {\n this.viewDate = addYears(this.viewDate, 1);\n }\n } else if (this.mode === 'month') {\n this.viewDate = addYears(this.viewDate, 1);\n } else if (this.mode === 'year') {\n this.yearRangeStart += 12;\n this.generateYears();\n } else if (this.mode === 'month-year') {\n if (this.currentView === 'month') {\n this.viewDate = addYears(this.viewDate, 1);\n } else {\n this.yearRangeStart += 12;\n this.generateYears();\n }\n }\n }\n\n prevYears() {\n this.yearRangeStart -= 12;\n this.generateYears();\n }\n\n nextYears() {\n this.yearRangeStart += 12;\n this.generateYears();\n }\n\n selectDate(date: Date) {\n if (this.isDateDisabled(date)) return;\n\n this.selectedDate = date;\n this.onChange(date);\n this.onTouched();\n this.dateSelect.emit(date);\n }\n\n selectMonth(monthIndex: number) {\n if (this.mode === 'date') {\n this.viewDate = setMonth(this.viewDate, monthIndex);\n this.currentView = 'date';\n this.generateDays();\n } else if (this.mode === 'month') {\n this.viewDate = setMonth(this.viewDate, monthIndex);\n this.selectedDate = this.viewDate;\n this.onChange( this.viewDate);\n this.onTouched();\n this.dateSelect.emit( this.viewDate);\n }\n }\n\n selectYear(year: number) {\n if (this.mode === 'date') {\n this.viewDate = setYear(this.viewDate, year);\n this.currentView = 'date';\n this.generateDays();\n } else if (this.mode === 'year' || this.mode === 'month') {\n this.viewDate = setYear(this.viewDate, year);\n this.selectedDate = this.viewDate;\n this.onChange( this.viewDate);\n this.onTouched();\n this.dateSelect.emit( this.viewDate);\n }\n }\n\n getDayClass(date: Date) {\n const isSelected = this.selectedDate && isSameDay(date, this.selectedDate);\n const isTodayDate = isToday(date);\n const isOutside = !isSameMonth(date, this.viewDate);\n const isDisabled = this.isDateDisabled(date);\n\n return cn(\n 'h-9 w-9 p-0 font-normal text-sm rounded-md transition-all flex items-center justify-center',\n !isSelected && !isDisabled && 'hover:bg-accent hover:text-accent-foreground',\n isSelected && 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground',\n !isSelected && isTodayDate && 'bg-accent text-accent-foreground',\n (isOutside || isDisabled) && 'text-muted-foreground opacity-50',\n isDisabled && 'cursor-not-allowed'\n );\n }\n\n getMonthClass(monthIndex: number) {\n const isSelected = this.selectedDate &&\n this.selectedDate.getMonth() === monthIndex &&\n this.selectedDate.getFullYear() === this.viewDate.getFullYear();\n const isCurrent = new Date().getMonth() === monthIndex &&\n new Date().getFullYear() === this.viewDate.getFullYear();\n\n return cn(\n 'text-sm py-2.5 rounded-md transition-colors',\n isSelected ? 'bg-primary text-primary-foreground hover:bg-primary' :\n isCurrent ? 'border border-primary/30 text-primary' :\n 'hover:bg-accent hover:text-accent-foreground'\n );\n }\n\n getYearClass(year: number) {\n const isSelected = this.selectedDate &&\n this.selectedDate.getFullYear() === year;\n const isCurrent = new Date().getFullYear() === year;\n\n return cn(\n 'text-sm py-2 rounded-md transition-colors',\n isSelected ? 'bg-primary text-primary-foreground hover:bg-primary' :\n isCurrent ? 'border border-primary/30 text-primary' :\n 'hover:bg-accent hover:text-accent-foreground'\n );\n }\n\n isDateDisabled(date: Date): boolean {\n if (this.disablePastDates && isBefore(date, startOfDay(new Date()))) {\n return true;\n }\n if (this.minDate && isBefore(date, this.minDate)) {\n return true;\n }\n if (this.maxDate && isBefore(this.maxDate, date)) {\n return true;\n }\n return false;\n }\n\n isTodayDisabled(): boolean {\n return this.isDateDisabled(new Date());\n }\n\n selectToday() {\n if (!this.isTodayDisabled()) {\n this.selectDate(new Date());\n }\n }\n\n clear() {\n this.selectedDate = null;\n this.onChange(null);\n this.onTouched();\n this.dateSelect.emit(null);\n }\n\n // CVA Implementation\n writeValue(obj: any): void {\n if (obj) {\n const date = new Date(obj);\n if (!isNaN(date.getTime())) {\n this.selectedDate = date;\n this.viewDate = date;\n this.generateDays();\n this.generateYears();\n }\n }\n }\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n}\n","import {\n Component, Input, forwardRef, ElementRef, ViewChild,\n AfterContentChecked, ChangeDetectorRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-masked-input',\n standalone: true,\n imports: [CommonModule, FormsModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MaskedInputComponent),\n multi: true\n }\n ],\n template: `\n <div class=\"flex flex-col gap-1.5 w-full\">\n <label\n *ngIf=\"label\"\n [for]=\"id\"\n [class]=\"computedLabelClass\"\n >\n {{ label }}\n </label>\n\n <div\n [class]=\"computedContainerClass\"\n (click)=\"focusInput()\"\n >\n <!-- Prefix Icon -->\n <div class=\"flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200\">\n <ng-content select=\"[prefix]\"></ng-content>\n </div>\n\n <input\n #inputEl\n [id]=\"id\"\n [type]=\"type\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [value]=\"displayValue\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [class]=\"computedInputClass\"\n [attr.aria-invalid]=\"error\"\n [attr.aria-describedby]=\"error && errorMessage ? id + '-error' : null\"\n />\n\n <!-- Suffix Icon -->\n <div class=\"flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200\">\n <ng-content select=\"[suffix]\"></ng-content>\n </div>\n </div>\n\n <ng-container *ngIf=\"!disabled\">\n <p\n *ngIf=\"hint && !error\"\n class=\"text-xs text-muted-foreground px-1 transition-opacity duration-200\"\n [class.opacity-0]=\"isFocused && hideHintOnFocus\"\n >\n {{ hint }}\n </p>\n <p\n *ngIf=\"error && errorMessage\"\n [id]=\"id + '-error'\"\n class=\"text-xs text-destructive px-1\"\n >\n {{ errorMessage }}\n </p>\n </ng-container>\n </div>\n `\n})\nexport class MaskedInputComponent implements ControlValueAccessor, AfterContentChecked {\n @Input() id: string = `masked-input-${Math.random().toString(36).substr(2, 9)}`;\n @Input() label: string = '';\n @Input() hint: string = '';\n @Input() errorMessage: string = '';\n @Input() mask: string = '';\n @Input() placeholder = '';\n @Input() type = 'text';\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() class = '';\n @Input() containerClass: string = '';\n @Input() error: boolean = false;\n @Input() size: 'xs' | 'sm' | 'default' | 'lg' = 'default';\n @Input() returnRaw = false;\n @Input() hideHintOnFocus: boolean = true;\n\n @ViewChild('inputEl', { static: true }) inputEl!: ElementRef<HTMLInputElement>;\n\n hasPrefix = false;\n hasSuffix = false;\n displayValue = '';\n isFocused: boolean = false;\n\n private tokens: { [key: string]: RegExp } = {\n '0': /\\d/, '9': /\\d/, 'a': /[a-z]/i, 'A': /[a-z]/i, '*': /[a-z0-9]/i\n };\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private el: ElementRef, private cdr: ChangeDetectorRef) {}\n\n ngAfterContentChecked() {\n const prefix = this.el.nativeElement.querySelector('[prefix]');\n const suffix = this.el.nativeElement.querySelector('[suffix]');\n\n if (this.hasPrefix !== !!prefix || this.hasSuffix !== !!suffix) {\n this.hasPrefix = !!prefix;\n this.hasSuffix = !!suffix;\n this.cdr.detectChanges();\n }\n }\n\n get computedLabelClass() {\n return cn(\n \"text-sm font-medium text-foreground leading-none transition-opacity duration-200\",\n this.disabled && \"opacity-50\"\n );\n }\n\n get computedContainerClass() {\n return cn(\n // Base styles\n \"group relative flex items-center w-full rounded-md border transition-all duration-200\",\n \"bg-background\",\n\n // Border and shadow\n \"border-input shadow-sm\",\n\n // Sizing\n this.size === 'xs' && \"h-8 px-2 gap-1.5 text-xs\",\n this.size === 'sm' && \"h-9 px-3 gap-2 text-sm\",\n this.size === 'default' && \"h-10 px-3 gap-2 text-sm\",\n this.size === 'lg' && \"h-11 px-4 gap-3 text-base\",\n\n // Focus state - SIMPLE LIKE ZARDUI\n !(this.readonly || this.disabled) && [\n \"focus-within:border-primary/80\",\n \"focus-within:ring-4\",\n \"focus-within:ring-ring/30\",\n \"focus-within:ring-offset-0\",\n \"focus-within:shadow-none\",\n ],\n\n // Error state\n this.error && [\n \"border-destructive\",\n !(this.readonly || this.disabled) && [\n \"focus-within:border-destructive/80\",\n \"focus-within:ring-destructive/30\"\n ]\n ],\n\n // Disabled state\n this.disabled && [\n \"cursor-not-allowed opacity-50\",\n \"border-opacity-50\"\n ],\n\n // Readonly state\n this.readonly && [\n \"cursor-default\",\n \"border-dashed\",\n !this.disabled && \"focus-within:ring-0 focus-within:border-opacity-100\"\n ],\n\n this.containerClass\n );\n }\n\n get computedInputClass() {\n return cn(\n // Base styles\n \"flex-1 bg-transparent border-none p-0\",\n \"placeholder:text-muted-foreground\",\n\n // Remove all default focus styles\n \"focus:outline-none focus:ring-0 focus:shadow-none\",\n\n // Text sizing\n this.size === 'xs' && \"text-xs\",\n this.size === 'sm' && \"text-sm\",\n this.size === 'default' && \"text-sm\",\n this.size === 'lg' && \"text-base\",\n\n // Cursor states\n this.disabled && \"cursor-not-allowed\",\n this.readonly && \"cursor-default\",\n\n // Text color\n \"text-foreground\",\n\n // Selection color\n \"selection:bg-primary/20 selection:text-foreground\",\n\n this.class\n );\n }\n\n focusInput(): void {\n if (!this.disabled && this.inputEl) {\n this.inputEl.nativeElement.focus();\n }\n }\n\n onFocus(): void {\n this.isFocused = true;\n }\n\n onBlur(): void {\n this.isFocused = false;\n this.onTouched();\n }\n\n // --- Masking Logic ---\n onInput(event: Event) {\n if (this.readonly || this.disabled) return;\n const input = event.target as HTMLInputElement;\n const raw = this.unmask(input.value);\n const masked = this.applyMask(raw);\n this.displayValue = masked;\n input.value = masked;\n this.returnRaw ? this.onChange(raw) : this.onChange(masked);\n }\n\n private applyMask(rawValue: string): string {\n let rawIndex = 0;\n let formatted = '';\n for (let i = 0; i < this.mask.length; i++) {\n if (rawIndex >= rawValue.length) break;\n const maskChar = this.mask[i];\n const rawChar = rawValue[rawIndex];\n if (this.tokens[maskChar]) {\n if (this.tokens[maskChar].test(rawChar)) {\n formatted += rawChar;\n rawIndex++;\n } else {\n rawIndex++;\n i--;\n }\n } else {\n formatted += maskChar;\n if (rawChar === maskChar) rawIndex++;\n }\n }\n return formatted;\n }\n\n private unmask(val: string): string {\n return val.replace(/[^a-zA-Z0-9]/g, '');\n }\n\n writeValue(value: any): void {\n this.displayValue = value ? this.applyMask(this.unmask(value.toString())) : '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n protected cn = cn;\n}\n","import {\n Component, Input, forwardRef, ElementRef, ViewChild, HostListener, ChangeDetectorRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { computePosition, flip, shift, offset, autoUpdate } from '@floating-ui/dom';\nimport { format, parse, isValid, startOfDay, parseISO } from 'date-fns';\nimport { cn } from './utils/cn';\nimport { MaskedInputComponent } from './masked-input.component';\nimport { CalendarComponent, CalendarMode } from './calendar.component';\n\n@Component({\n selector: 'tolle-date-picker',\n standalone: true,\n imports: [CommonModule, FormsModule, MaskedInputComponent, CalendarComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n }\n ],\n template: `\n <div class=\"relative w-full\" #triggerContainer>\n <tolle-masked-input\n #maskInput\n [mask]=\"getMask()\"\n [placeholder]=\"getPlaceholder()\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputValue\"\n (ngModelChange)=\"onInputChange($event)\"\n [class]=\"cn(class)\"\n >\n <div suffix class=\"flex items-center gap-1.5 cursor-pointer\">\n <i\n *ngIf=\"value && !disabled && showClear\"\n (click)=\"clear($event)\"\n class=\"ri-close-line cursor-pointer text-muted-foreground hover:text-foreground transition-colors\"\n ></i>\n\n <i\n (click)=\"togglePopover($event)\"\n [class]=\"cn(\n 'cursor-pointer text-muted-foreground transition-colors',\n 'ri-calendar-line'\n )\"\n ></i>\n </div>\n </tolle-masked-input>\n\n <div\n #popover\n *ngIf=\"isOpen\"\n class=\"fixed z-[50]\"\n style=\"visibility: hidden; top: 0; left: 0;\"\n >\n <tolle-calendar class=\"shadow-lg\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onCalendarChange($event)\"\n [mode]=\"mode\"\n [disablePastDates]=\"disablePastDates\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [showQuickActions]=\"showQuickActions\"\n [formatMonthFn]=\"formatMonthFn\"\n [formatYearFn]=\"formatYearFn\"\n ></tolle-calendar>\n </div>\n </div>\n `\n})\nexport class DatePickerComponent implements ControlValueAccessor {\n @Input() placeholder = 'MM/DD/YYYY';\n @Input() disabled = false;\n @Input() class = '';\n @Input() disablePastDates = false;\n @Input() showClear = true;\n @Input() showQuickActions = true;\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n @Input() mode: CalendarMode = 'date';\n @Input() formatMonthFn?: (date: Date) => string;\n @Input() formatYearFn?: (date: Date) => string;\n\n // Format functions for display\n @Input() displayFormat?: (date: Date, mode: CalendarMode) => string;\n\n @ViewChild('triggerContainer') triggerContainer!: ElementRef;\n @ViewChild('popover') popover!: ElementRef;\n\n value: Date | null = null;\n inputValue: string = '';\n isOpen = false;\n cleanupAutoUpdate?: () => void;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n getMask(): string {\n switch (this.mode) {\n case 'date': return '00/00/0000';\n case 'month': return '00/0000';\n case 'year': return '0000';\n default: return '00/00/0000';\n }\n }\n\n getPlaceholder(): string {\n switch (this.mode) {\n case 'date': return 'MM/DD/YYYY';\n case 'month': return 'MM/YYYY';\n case 'year': return 'YYYY';\n default: return 'MM/DD/YYYY';\n }\n }\n\n getFormatString(): string {\n switch (this.mode) {\n case 'date': return 'MM/dd/yyyy';\n case 'month': return 'MM/yyyy';\n case 'year': return 'yyyy';\n default: return 'MM/dd/yyyy';\n }\n }\n\n formatDate(date: Date): string {\n if (this.displayFormat) {\n return this.displayFormat(date, this.mode);\n }\n\n switch (this.mode) {\n case 'date': return format(date, 'MM/dd/yyyy');\n case 'month': return format(date, 'MM/yyyy');\n case 'year': return format(date, 'yyyy');\n default: return format(date, 'MM/dd/yyyy');\n }\n }\n\n parseDate(str: string): Date | null {\n try {\n const parsed = parse(str, this.getFormatString(), new Date());\n return isValid(parsed) ? startOfDay(parsed) : null;\n } catch {\n return null;\n }\n }\n\n onInputChange(str: string) {\n const expectedLength = this.getFormatString().replace(/[^0]/g, '').length;\n\n if (str?.length === expectedLength) {\n const parsed = this.parseDate(str);\n if (parsed) {\n this.value = parsed;\n this.onChange(this.value);\n }\n } else if (!str) {\n this.value = null;\n this.onChange(null);\n }\n }\n\n onCalendarChange(date: Date | null) {\n this.value = date;\n if (date) {\n this.inputValue = this.formatDate(date);\n } else {\n this.inputValue = '';\n }\n this.onChange(this.value);\n this.close();\n }\n\n togglePopover(event: MouseEvent) {\n event.stopPropagation();\n if (this.disabled) return;\n this.isOpen ? this.close() : this.open();\n }\n\n open() {\n this.isOpen = true;\n setTimeout(() => this.updatePosition());\n }\n\n close() {\n this.isOpen = false;\n if (this.cleanupAutoUpdate) this.cleanupAutoUpdate();\n }\n\n clear(event: MouseEvent) {\n event.stopPropagation();\n this.value = null;\n this.inputValue = '';\n this.onChange(null);\n this.cdr.markForCheck();\n }\n\n private updatePosition() {\n if (!this.triggerContainer || !this.popover) return;\n\n this.cleanupAutoUpdate = autoUpdate(\n this.triggerContainer.nativeElement,\n this.popover.nativeElement,\n () => {\n computePosition(this.triggerContainer.nativeElement, this.popover.nativeElement, {\n strategy: 'fixed', // ADDED: Fixed strategy\n placement: 'bottom-start', // Changed to bottom-start to align with input left edge\n middleware: [\n offset(4),\n flip(),\n shift({ padding: 8 })\n ],\n }).then(({ x, y, strategy }) => {\n Object.assign(this.popover.nativeElement.style, {\n position: strategy,\n left: `${x}px`,\n top: `${y}px`,\n visibility: 'visible',\n });\n });\n }\n );\n }\n\n @HostListener('document:mousedown', ['$event'])\n onClickOutside(event: MouseEvent) {\n if (this.isOpen &&\n !this.triggerContainer.nativeElement.contains(event.target) &&\n !this.popover.nativeElement.contains(event.target)) {\n this.close();\n }\n }\n\n // CVA Implementation\n onChange: any = () => {};\n onTouched: any = () => {};\n\n writeValue(val: any): void {\n if (val) {\n const date = new Date(val);\n if (isValid(date)) {\n this.value = startOfDay(date);\n this.inputValue = this.formatDate(this.value);\n }\n } else {\n this.value = null;\n this.inputValue = '';\n }\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled = isDisabled; }\n protected cn = cn;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cn } from './utils/cn';\nimport {FormsModule} from '@angular/forms';\nimport {SelectComponent} from './select.component';\nimport {SelectItemComponent} from './select-item.component';\n\n@Component({\n selector: 'tolle-pagination',\n standalone: true,\n imports: [CommonModule, FormsModule, SelectComponent, SelectItemComponent],\n template: `\n <div [class]=\"cn('flex items-center justify-between px-2 py-4', class)\">\n\n <div *ngIf=\"showCurrentPageInfo\" class=\"text-sm text-muted-foreground\">\n <ng-container *ngIf=\"currentPageInfoTemplate; else defaultReport\">\n {{ pageReport }}\n </ng-container>\n <ng-template #defaultReport>\n Showing {{ first }} to {{ last }} of {{ totalRecords }} entries\n </ng-template>\n </div>\n\n <div class=\"flex items-center space-x-6 lg:space-x-8\">\n\n <div *ngIf=\"showPageOptions\" class=\"flex items-center space-x-2\">\n <p class=\"text-sm font-medium\">Rows per page</p>\n <tolle-select\n class=\"w-[70px]\"\n size=\"sm\"\n [ngModel]=\"currentPageSize\"\n (ngModelChange)=\"sizeChange($event)\"\n >\n <tolle-select-item *ngFor=\"let opt of pageSizeOptions\" [value]=\"opt\">\n {{ opt }}\n </tolle-select-item>\n </tolle-select>\n </div>\n\n <div class=\"flex items-center space-x-2\">\n <div *ngIf=\"!showPageLinks\" class=\"flex w-[100px] items-center justify-center text-sm font-medium\">\n Page {{ currentPage }} of {{ totalPages }}\n </div>\n\n <div *ngIf=\"showPageLinks\" class=\"flex items-center space-x-1\">\n <button\n (click)=\"previousPage()\"\n [disabled]=\"currentPage === 1\"\n [class]=\"navBtnClass\"\n >\n <i class=\"ri-arrow-left-s-line\"></i>\n </button>\n\n <button\n *ngFor=\"let page of displayPageIndex\"\n (click)=\"selectPage(page)\"\n [class]=\"cn(\n 'h-8 w-8 text-sm rounded-md flex items-center justify-center transition-colors',\n currentPage === page\n ? 'bg-primary text-primary-foreground font-medium'\n : 'hover:bg-accent hover:text-accent-foreground'\n )\"\n >\n {{ page }}\n </button>\n\n <button\n (click)=\"nextPage()\"\n [disabled]=\"currentPage === totalPages || totalPages === 0\"\n [class]=\"navBtnClass\"\n >\n <i class=\"ri-arrow-right-s-line\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PaginationComponent implements OnInit, OnChanges {\n @Input() class = '';\n @Input() showPageLinks = true;\n @Input() showPageOptions = true;\n @Input() showCurrentPageInfo = true;\n @Input() currentPageInfoTemplate?: string;\n\n @Input() totalRecords = 0;\n @Input() currentPageSize = 10;\n @Input() currentPage = 1;\n @Input() pageSizeOptions: number[] = [10, 20, 30, 50];\n\n @Output() onPageNumberChange = new EventEmitter<number>();\n @Output() onPageSizeChange = new EventEmitter<number>();\n\n totalPages = 0;\n first = 0;\n last = 0;\n displayPageIndex: number[] = [];\n pageReport = '';\n\n private initialized = false;\n private cd = inject(ChangeDetectorRef);\n protected cn = cn;\n\n navBtnClass = 'h-8 w-8 p-0 flex items-center justify-center rounded-md border border-input bg-background hover:bg-accent hover:text-accent-foreground disabled:opacity-50 disabled:cursor-not-allowed';\n\n ngOnInit(): void {\n this.initializePagination();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // Only re-init if meaningful data changes\n if (changes['totalRecords'] || changes['currentPage'] || changes['currentPageSize']) {\n this.initializePagination();\n }\n }\n\n private initializePagination(): void {\n this.calcPagination();\n if (!this.initialized) {\n this.initialized = true;\n }\n this.cd.detectChanges();\n }\n\n nextPage() {\n if (this.totalPages > this.currentPage) {\n this.currentPage++;\n this.emitChange();\n }\n }\n\n previousPage() {\n if (this.currentPage > 1) {\n this.currentPage--;\n this.emitChange();\n }\n }\n\n selectPage(page: number) {\n if (this.currentPage === page) return;\n this.currentPage = page;\n this.emitChange();\n }\n\n sizeChange(size: number) {\n this.currentPageSize = size;\n this.currentPage = 1; // Reset to page 1 on size change\n this.emitChange();\n }\n\n private emitChange(): void {\n this.calcPagination();\n this.onPageNumberChange.emit(this.currentPage);\n this.onPageSizeChange.emit(this.currentPageSize);\n this.cd.detectChanges();\n }\n\n private calcPagination(): void {\n this.totalPages = Math.ceil(this.totalRecords / this.currentPageSize) || 0;\n\n // Bounds check\n if (this.currentPage > this.totalPages && this.totalPages > 0) {\n this.currentPage = this.totalPages;\n }\n\n this.first = this.totalRecords === 0 ? 0 : (this.currentPage - 1) * this.currentPageSize + 1;\n this.last = Math.min(this.totalRecords, this.currentPage * this.currentPageSize);\n\n // Calculate Sliding Window for Page Numbers (Max 5 visible)\n const pages: number[] = Array.from({ length: this.totalPages }, (_, i) => i + 1);\n\n if (this.totalPages <= 5) {\n this.displayPageIndex = pages;\n } else {\n let start = Math.max(0, this.currentPage - 3);\n let end = start + 5;\n\n if (end > this.totalPages) {\n end = this.totalPages;\n start = end - 5;\n }\n this.displayPageIndex = pages.slice(start, end);\n }\n\n // Template Parsing\n if (this.currentPageInfoTemplate) {\n this.pageReport = this.currentPageInfoTemplate.replace(\n /{first}|{last}|{totalRecords}|{currentPage}|{currentPageSize}|{totalPages}/g,\n (match) => {\n switch (match) {\n case '{first}': return `${this.first}`;\n case '{last}': return `${this.last}`;\n case '{totalRecords}': return `${this.totalRecords}`;\n case '{totalPages}': return `${this.totalPages}`;\n case '{currentPage}': return `${this.currentPage}`;\n case '{currentPageSize}': return `${this.currentPageSize}`;\n default: return match;\n }\n }\n );\n }\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tolleCell]',\n standalone: true\n})\nexport class TolleCellDirective {\n @Input('tolleCell') name!: string; // The column key this template belongs to\n constructor(public template: TemplateRef<any>) {}\n}\n","import {\n Component, Input, OnInit, OnChanges, SimpleChanges,\n TemplateRef, ContentChildren, QueryList\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { cn } from './utils/cn';\nimport {PaginationComponent} from './pagination.component';\nimport {TolleCellDirective} from './tolle-cell.directive';\nimport {InputComponent} from './input.component';\nexport interface TableColumn {\n key: string;\n label: string;\n sortable?: boolean;\n class?: string;\n}\n\n@Component({\n selector: 'tolle-data-table',\n standalone: true,\n imports: [CommonModule, FormsModule, PaginationComponent, InputComponent],\n template: `\n <div class=\"space-y-4\">\n <div *ngIf=\"searchable\" class=\"flex items-center py-2\">\n <tolle-input\n [size]=\"size === 'lg' ? 'default' : 'sm'\"\n class=\"max-w-sm\"\n placeholder=\"Filter records...\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"onSearch()\">\n <i prefix class=\"ri-search-line\"></i>\n </tolle-input>\n </div>\n\n <div class=\"rounded-md border border-border overflow-hidden shadow-sm\">\n <table class=\"w-full text-sm\">\n <thead class=\"border-b bg-muted/30\">\n <tr>\n <th *ngIf=\"expandable\" [class]=\"cn('px-4', size === 'xs' ? 'w-[32px]' : 'w-[48px]')\"></th>\n <th *ngFor=\"let col of columns\"\n [class]=\"cn(\n 'font-medium text-muted-foreground transition-all',\n headerPaddingClass,\n fontSizeClass,\n col.class\n )\">\n <div *ngIf=\"col.sortable; else simpleHeader\" (click)=\"toggleSort(col.key)\" class=\"flex items-center gap-1 cursor-pointer hover:text-foreground\">\n {{ col.label }}\n <i [class]=\"getSortIcon(col.key)\"></i>\n </div>\n <ng-template #simpleHeader>{{ col.label }}</ng-template>\n </th>\n </tr>\n </thead>\n <tbody class=\"divide-y divide-border\">\n <ng-container *ngFor=\"let row of pagedData; let i = index\">\n <tr class=\"hover:bg-muted/50 transition-colors\">\n <td *ngIf=\"expandable\" class=\"px-4\">\n <button (click)=\"toggleRow(i)\"\n [class]=\"cn(\n 'flex items-center justify-center rounded-md hover:bg-accent text-muted-foreground hover:text-foreground',\n size === 'xs' ? 'h-6 w-6' : 'h-8 w-8'\n )\">\n <i [class]=\"expandedRows.has(i) ? 'ri-arrow-down-s-line' : 'ri-arrow-right-s-line'\"></i>\n </button>\n </td>\n\n <td *ngFor=\"let col of columns\"\n [class]=\"cn(\n 'align-middle transition-all',\n cellPaddingClass,\n fontSizeClass,\n col.class\n )\">\n <ng-container *ngIf=\"getTemplate(col.key) as cell; else defaultValue\">\n <ng-container *ngTemplateOutlet=\"cell.template; context: { $implicit: row[col.key], row: row }\"></ng-container>\n </ng-container>\n <ng-template #defaultValue>\n <span class=\"text-foreground\">{{ row[col.key] }}</span>\n </ng-template>\n </td>\n </tr>\n\n <tr *ngIf=\"expandedRows.has(i)\" class=\"bg-muted/10\">\n <td [attr.colspan]=\"columns.length + (expandable ? 1 : 0)\" class=\"p-0\">\n <div class=\"p-6 border-b border-dashed border-border\">\n <ng-container *ngIf=\"expandedTemplate; else defaultExpanded\">\n <ng-container *ngTemplateOutlet=\"expandedTemplate; context: { row: row }\"></ng-container>\n </ng-container>\n <ng-template #defaultExpanded>\n <div class=\"text-xs text-muted-foreground italic\">No details available.</div>\n </ng-template>\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n\n <tolle-pagination\n *ngIf=\"paginate\"\n [totalRecords]=\"filteredData.length\"\n [currentPage]=\"currentPage\"\n [currentPageSize]=\"pageSize\"\n (onPageNumberChange)=\"updatePage()\"\n (onPageSizeChange)=\"updatePage()\"\n ></tolle-pagination>\n </div>\n `\n})\nexport class DataTableComponent implements OnInit, OnChanges {\n @Input() data: any[] = [];\n @Input() columns: TableColumn[] = [];\n @Input() searchable = true;\n @Input() paginate = true;\n @Input() pageSize = 10;\n @Input() expandable = false;\n @Input() size: 'xs' | 'sm' | 'default' | 'lg' = 'default';\n\n // --- NEW INPUTS FOR COLUMN HIDING ---\n @Input() allowColumnHiding = true;\n @Input() showSettings = true; // Set to false to hide the gear icon/menu entirely\n\n // Track visibility state: { 'columnKey': true/false }\n columnVisibility: Record<string, boolean> = {};\n showColumnMenu = false;\n\n // Filter columns based on visibility state\n get activeColumns() {\n return this.columns.filter(col => this.columnVisibility[col.key]);\n }\n\n // Track which rows are open\n expandedRows = new Set<number>();\n\n // Use ContentChildren to grab the tolleCell templates from the user's HTML\n @ContentChildren(TolleCellDirective) cellTemplates!: QueryList<TolleCellDirective>;\n\n // Keep this as an Input for the main expansion slot\n @Input() expandedTemplate?: TemplateRef<any>;\n\n filteredData: any[] = [];\n pagedData: any[] = [];\n searchTerm = '';\n currentPage = 1;\n sortKey = '';\n sortDir: 'asc' | 'desc' | null = null;\n\n // 2. Map Size to Padding for Cells\n get cellPaddingClass(): string {\n switch (this.size) {\n case 'xs': return 'p-1 px-4'; // Ultra-compact\n case 'sm': return 'p-2 px-4'; // Dense\n case 'lg': return 'p-6 px-4'; // Spacious\n default: return 'p-4'; // Standard (16px)\n }\n }\n\n // 3. Map Size to Padding for Header (usually slightly shorter than cells)\n get headerPaddingClass(): string {\n switch (this.size) {\n case 'xs': return 'h-7 px-4';\n case 'sm': return 'h-9 px-4';\n case 'lg': return 'h-14 px-4';\n default: return 'h-12 px-4';\n }\n }\n\n // 4. Map Size to Font Sizes\n get fontSizeClass(): string {\n switch (this.size) {\n case 'xs': return 'text-[11px]';\n case 'sm': return 'text-xs';\n case 'lg': return 'text-base';\n default: return 'text-sm';\n }\n }\n\n protected cn = cn;\n\n ngOnInit() { this.refreshTable(); }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['data']) { this.refreshTable(); }\n if (changes['columns']) { this.initializeVisibility(); }\n }\n\n private initializeVisibility() {\n // Default all columns to visible if not already set\n this.columns.forEach(col => {\n if (this.columnVisibility[col.key] === undefined) {\n this.columnVisibility[col.key] = true;\n }\n });\n }\n\n // --- Search & Sort & Page Logic ---\n // (Your existing implementation of applySearch, applySort, and updatePage goes here)\n refreshTable() { this.applySearch(); this.applySort(); this.updatePage(); }\n onSearch() { this.currentPage = 1; this.refreshTable(); }\n\n toggleColumn(key: string) {\n this.columnVisibility[key] = !this.columnVisibility[key];\n }\n\n private applySearch() {\n if (!this.searchTerm) { this.filteredData = [...this.data]; return; }\n const q = this.searchTerm.toLowerCase();\n this.filteredData = this.data.filter(row =>\n Object.values(row).some(val => String(val).toLowerCase().includes(q))\n );\n }\n\n private applySort() {\n if (!this.sortKey || !this.sortDir) return;\n this.filteredData.sort((a, b) => {\n const valA = a[this.sortKey]; const valB = b[this.sortKey];\n if (valA < valB) return this.sortDir === 'asc' ? -1 : 1;\n if (valA > valB) return this.sortDir === 'asc' ? 1 : -1;\n return 0;\n });\n }\n\n updatePage() {\n if (!this.paginate) { this.pagedData = this.filteredData; return; }\n const start = (this.currentPage - 1) * this.pageSize;\n const end = start + this.pageSize;\n this.pagedData = this.filteredData.slice(start, end);\n }\n\n // --- Helpers ---\n toggleSort(key: string) {\n if (this.sortKey === key) {\n this.sortDir = this.sortDir === 'asc' ? 'desc' : this.sortDir === 'desc' ? null : 'asc';\n } else { this.sortKey = key; this.sortDir = 'asc'; }\n this.refreshTable();\n }\n\n getSortIcon(key: string) {\n if (this.sortKey !== key || !this.sortDir) return 'ri-arrow-up-down-line opacity-30';\n return this.sortDir === 'asc' ? 'ri-arrow-up-line' : 'ri-arrow-down-line';\n }\n\n toggleRow(index: number) {\n if (this.expandedRows.has(index)) this.expandedRows.delete(index);\n else this.expandedRows.add(index);\n }\n\n // Helper to find the right cell template\n getTemplate(key: string): TolleCellDirective | undefined {\n return this.cellTemplates?.find(t => t.name === key);\n }\n}\n","import { Component, Input, ContentChild, TemplateRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-accordion-item',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div [class]=\"cn('flex flex-col border-b border-border', class)\">\n <button\n type=\"button\"\n (click)=\"toggle()\"\n class=\"flex flex-1 items-center justify-between py-4 font-medium transition-all [&[data-state=open]>i]:rotate-180\"\n [attr.data-state]=\"isOpen ? 'open' : 'closed'\"\n >\n <span class=\"text-left\">{{ title }}</span>\n <i class=\"ri-arrow-down-s-line text-muted-foreground transition-transform\"></i>\n </button>\n\n <div\n *ngIf=\"isOpen\"\n class=\"pb-4 text-sm text-muted-foreground overflow-hidden\"\n >\n <ng-content></ng-content>\n </div>\n </div>\n `\n})\nexport class AccordionItemComponent {\n @Input() title: string = '';\n @Input() class: string = '';\n @Input() id!: string | number;\n\n isOpen = false;\n\n // This will be set by the parent Accordion component\n onToggle?: (id: string | number) => void;\n\n toggle() {\n if (this.onToggle) {\n this.onToggle(this.id);\n } else {\n this.isOpen = !this.isOpen;\n }\n }\n\n protected readonly cn = cn;\n}\n","import { Component, Input, ContentChildren, QueryList, AfterContentInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AccordionItemComponent } from './accordion-item.component';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-accordion',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div [class]=\"cn('w-full border-t border-border', class)\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class AccordionComponent implements AfterContentInit {\n @Input() type: 'single' | 'multiple' = 'single';\n @Input() class: string = '';\n\n @ContentChildren(AccordionItemComponent) items!: QueryList<AccordionItemComponent>;\n\n ngAfterContentInit() {\n this.items.forEach((item, index) => {\n // Assign unique ID if none provided\n if (item.id === undefined) item.id = index;\n\n // Hook into the item's toggle event\n item.onToggle = (id) => this.handleToggle(id);\n });\n }\n\n private handleToggle(selectedId: string | number) {\n this.items.forEach(item => {\n if (item.id === selectedId) {\n item.isOpen = !item.isOpen;\n } else {\n // If type is 'single', close all other items\n if (this.type === 'single') {\n item.isOpen = false;\n }\n }\n });\n }\n\n protected readonly cn = cn;\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject } from 'rxjs';\nimport { Modal } from './modal';\nimport { ModalStackService } from './modal-stack.service';\n\nexport class ModalRef<R = any> {\n private readonly _afterClosed$ = new Subject<R | undefined | null>();\n afterClosed$ = this._afterClosed$.asObservable();\n\n constructor(\n private overlay: OverlayRef,\n public modal: Modal,\n private stack: ModalStackService\n ) {\n this.stack.register(this);\n\n // Handle Backdrop Click\n this.overlay.backdropClick().subscribe(() => {\n if (this.modal.backdropClose) {\n this.close();\n }\n });\n }\n\n /**\n * Closes the modal instantly.\n * @param result Data to pass back to the caller\n */\n close(result?: R): void {\n this._afterClosed$.next(result);\n this._afterClosed$.complete();\n this.overlay.dispose(); // Instant disposal (No animation timer)\n this.stack.unregister(this);\n }\n}\n","import { Component, OnInit, TemplateRef, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ModalRef } from './modal-ref';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-modal',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div [class]=\"modalClasses\" class=\"pointer-events-auto\" (mousedown)=\"$event.stopPropagation()\">\n\n <div *ngIf=\"ref.modal.showCloseButton || ref.modal.title\" class=\"flex items-center justify-between px-6 pt-6\">\n <h3 *ngIf=\"ref.modal.title\" class=\"text-lg font-semibold text-foreground tracking-tight\">\n {{ ref.modal.title }}\n </h3>\n <button *ngIf=\"ref.modal.showCloseButton\" (click)=\"ref.close()\" class=\"ml-auto p-1 text-muted-foreground hover:text-foreground hover:bg-accent rounded-md transition-colors\">\n <i class=\"ri-close-line text-2xl\"></i>\n </button>\n </div>\n\n <div class=\"px-6 pb-6 pt-4 overflow-y-auto max-h-[80vh] text-foreground\">\n <ng-container [ngSwitch]=\"contentType\">\n <div *ngSwitchCase=\"'string'\">{{ content }}</div>\n\n <ng-container *ngSwitchCase=\"'template'\">\n <ng-container *ngTemplateOutlet=\"asTemplate; context: ref.modal.context\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'component'\">\n <ng-container *ngComponentOutlet=\"asComponent\"></ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n `,\n styles: [`\n :host {\n display: contents; /* This makes the host \"disappear\" so the div targets the overlay pane directly */\n }\n `]\n})\nexport class ModalComponent implements OnInit {\n contentType: 'template' | 'string' | 'component' = 'string';\n content: any;\n modalClasses = '';\n\n constructor(public ref: ModalRef) {}\n\n ngOnInit() {\n this.content = this.ref.modal.content;\n this.modalClasses = this.getModalSizeCss();\n this.determineContentType();\n }\n\n private getModalSizeCss(): string {\n const { size } = this.ref.modal;\n\n return cn(\n // Base classes: Added 'w-full' and 'mx-auto'\n 'bg-background border border-border shadow-lg relative flex flex-col w-full mx-auto ',\n\n size === 'fullscreen' ? 'h-screen w-screen rounded-none' : 'rounded-md',\n\n // Sizing scale with explicit max-widths\n size === 'xs' && 'max-w-[320px]',\n size === 'sm' && 'max-w-[425px]',\n size === 'default' && 'max-w-[544px]',\n size === 'lg' && 'max-w-[1024px]'\n );\n }\n\n private determineContentType() {\n if (typeof this.content === 'string') this.contentType = 'string';\n else if (this.content instanceof TemplateRef) this.contentType = 'template';\n else this.contentType = 'component';\n }\n\n get asTemplate() { return this.content as TemplateRef<any>; }\n get asComponent() { return this.content as Type<any>; }\n protected cn = cn;\n}\n","import { Injectable } from '@angular/core';\nimport { ModalRef } from './modal-ref';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalStackService {\n private _stack = new Set<ModalRef>();\n\n register(ref: ModalRef): void {\n this._stack.add(ref);\n }\n\n unregister(ref: ModalRef): void {\n this._stack.delete(ref);\n }\n\n /** Instantly closes all open modals */\n closeAll(): void {\n this._stack.forEach(ref => ref.close());\n this._stack.clear();\n }\n\n get activeCount(): number {\n return this._stack.size;\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Modal } from './modal';\nimport { ModalRef } from './modal-ref';\nimport { ModalComponent } from './modal.component';\nimport { ModalStackService } from './modal-stack.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n constructor(\n private overlay: Overlay,\n private injector: Injector,\n private stack: ModalStackService\n ) {}\n\n open<R = any>(config: Modal): ModalRef<R> {\n // 1. Create the Overlay (DOM placeholder)\n const overlayRef = this.createOverlay();\n\n // 2. Create the Controller (Ref)\n const modalRef = new ModalRef<R>(overlayRef, config, this.stack);\n\n // 3. Create Injector to allow the Component to access the Ref\n const injector = Injector.create({\n parent: this.injector,\n providers: [{ provide: ModalRef, useValue: modalRef }]\n });\n\n // 4. Attach the UI Component to the Overlay\n const portal = new ComponentPortal(ModalComponent, null, injector);\n overlayRef.attach(portal);\n\n return modalRef;\n }\n\n /** Global helper to close everything */\n closeAll() {\n this.stack.closeAll();\n }\n\n // modal.service.ts\n private createOverlay(): OverlayRef {\n const config = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: ['cdk-overlay-backdrop', 'bg-black/80', 'backdrop-blur-sm'],\n panelClass: [\n 'w-full',\n 'h-full',\n 'flex',\n 'items-center',\n 'justify-center',\n 'pointer-events-none'\n ],\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay.position()\n .global()\n .centerHorizontally()\n .centerVertically()\n });\n\n return this.overlay.create(config);\n }\n\n\n}\n","import { TemplateRef, Type } from \"@angular/core\";\n\nexport class Modal<T = any> {\n /** The content to display (String, Component, or Template) */\n content!: string | Type<any> | TemplateRef<any>;\n\n /** Optional title for the standard header */\n title?: string;\n\n /** * Predefined size scale.\n * - xs: 320px (Mobile alerts)\n * - sm: 425px (Standard dialogs)\n * - default: 544px (Forms)\n * - lg: 90% / 1024px (Data tables)\n * - fullscreen: 100vw/100vh (Complex workflows)\n */\n size?: 'xs' | 'sm' | 'default' | 'lg' | 'fullscreen' = 'default';\n\n /** * If true (default), clicking the backdrop closes the modal.\n * Set to false for \"blocking\" modals (e.g., Terms of Service).\n */\n backdropClose?: boolean = true;\n\n /** * Data to pass to a Component content.\n * Accessed via @Input() in the child component.\n */\n data?: { [key: string]: any };\n\n /** * Context to pass to a TemplateRef content.\n * Accessed via `let-val` in the HTML.\n */\n context?: T;\n\n showCloseButton?: boolean = true;\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-button-group',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div [class]=\"cn('inline-flex items-center -space-x-px rounded-md shadow-sm', class)\">\n <ng-content></ng-content>\n </div>\n `,\n styles: [`\n :host {\n display: inline-block;\n }\n\n /* 1. First Button: Remove right rounding and keep border */\n :host ::ng-deep tolle-button:first-child button {\n @apply rounded-r-none;\n }\n\n /* 2. Middle Buttons: Remove all rounding and the left border to avoid double-thickness */\n :host ::ng-deep tolle-button:not(:first-child):not(:last-child) button {\n @apply rounded-none border-l-0;\n }\n\n /* 3. Last Button: Remove left rounding and left border */\n :host ::ng-deep tolle-button:last-child:not(:first-child) button {\n @apply rounded-l-none border-l-0;\n }\n\n /* 4. Hover/Focus State: Bring the active button to the front so the focus ring isn't cut off */\n :host ::ng-deep tolle-button button:hover,\n :host ::ng-deep tolle-button button:focus {\n @apply z-10 relative;\n }\n `]\n})\nexport class ButtonGroupComponent {\n @Input() class: string = '';\n protected cn = cn;\n}\n","import { Component, Input, OnInit, forwardRef, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n addMonths, subMonths, startOfMonth, endOfMonth,\n startOfWeek, endOfWeek, eachDayOfInterval, isSameMonth,\n isSameDay, isToday, setMonth, setYear, addYears, subYears,\n isBefore, startOfDay, isWithinInterval\n} from 'date-fns';\nimport { cn } from './utils/cn';\nimport {DateRange} from './types/date-range';\n\n@Component({\n selector: 'tolle-range-calendar',\n standalone: true,\n imports: [CommonModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RangeCalendarComponent),\n multi: true\n }\n ],\n template: `\n <div [class]=\"cn('p-3 border rounded-md bg-background text-popover-foreground shadow-sm inline-block min-w-fit', class)\">\n\n <div class=\"flex items-center justify-between pt-1 pb-4 gap-2\">\n <div class=\"flex items-center gap-1\">\n <button type=\"button\" (click)=\"setView('month')\"\n [class]=\"cn('text-sm font-semibold px-2 py-1 rounded transition-colors', currentView === 'month' ? 'bg-secondary text-secondary-foreground' : 'hover:bg-accent hover:text-accent-foreground')\">\n {{ viewDate | date: 'MMMM' }}\n </button>\n <button type=\"button\" (click)=\"setView('year')\"\n [class]=\"cn('text-sm font-semibold px-2 py-1 rounded transition-colors', currentView === 'year' ? 'bg-secondary text-secondary-foreground' : 'hover:bg-accent hover:text-accent-foreground')\">\n {{ viewDate | date: 'yyyy' }}\n </button>\n </div>\n <div class=\"flex items-center space-x-1\">\n <button type=\"button\" (click)=\"prev()\" [class]=\"navBtnClass\"><i class=\"ri-arrow-left-s-line text-lg\"></i></button>\n <button type=\"button\" (click)=\"next()\" [class]=\"navBtnClass\"><i class=\"ri-arrow-right-s-line text-lg\"></i></button>\n </div>\n </div>\n\n <div *ngIf=\"currentView === 'date'\" class=\"space-y-2 animate-in fade-in zoom-in-95 duration-200\">\n <div class=\"grid grid-cols-7 gap-y-1 w-full\">\n <span *ngFor=\"let day of weekDays\" class=\"text-[0.8rem] text-muted-foreground font-normal text-center w-9\">\n {{ day }}\n </span>\n </div>\n <div class=\"grid grid-cols-7 gap-y-1 w-full\">\n <button\n *ngFor=\"let date of daysInMonth\"\n type=\"button\"\n (click)=\"selectDate(date)\"\n [disabled]=\"isDateDisabled(date)\"\n [class]=\"getDayClass(date)\"\n >\n {{ date | date: 'd' }}\n </button>\n </div>\n </div>\n\n <div *ngIf=\"currentView === 'month'\" class=\"grid grid-cols-3 gap-2 w-64 animate-in fade-in zoom-in-95 duration-200\">\n <button *ngFor=\"let month of months; let i = index\" type=\"button\" (click)=\"selectMonth(i)\"\n [class]=\"cn('text-sm py-2.5 rounded-md hover:bg-accent hover:text-accent-foreground transition-colors', i === viewDate.getMonth() ? 'bg-primary text-primary-foreground' : '')\">\n {{ month }}\n </button>\n </div>\n\n <div *ngIf=\"currentView === 'year'\" class=\"grid grid-cols-4 gap-2 w-64 animate-in fade-in zoom-in-95 duration-200\">\n <button *ngFor=\"let year of years\" type=\"button\" (click)=\"selectYear(year)\"\n [class]=\"cn('text-sm py-2 rounded-md hover:bg-accent hover:text-accent-foreground transition-colors', year === viewDate.getFullYear() ? 'bg-primary text-primary-foreground' : '')\">\n {{ year }}\n </button>\n </div>\n </div>\n `\n})\nexport class RangeCalendarComponent implements OnInit, ControlValueAccessor {\n @Input() class = '';\n @Input() disablePastDates = false;\n @Output() rangeSelect = new EventEmitter<DateRange>(); // Emits whenever selection changes\n\n currentView: 'date' | 'month' | 'year' = 'date';\n viewDate: Date = new Date();\n\n // The Range Value\n value: DateRange = { start: null, end: null };\n\n weekDays = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n daysInMonth: Date[] = [];\n months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n years: number[] = [];\n\n navBtnClass = cn('h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 border border-input rounded-md flex items-center justify-center hover:bg-accent hover:text-accent-foreground transition-all');\n\n onTouched: () => void = () => {};\n onChange: (value: DateRange) => void = () => {};\n protected cn = cn;\n\n ngOnInit() {\n this.generateDays();\n this.generateYears();\n }\n\n // --- Date Generation Logic (Same as Calendar) ---\n generateDays() {\n const start = startOfWeek(startOfMonth(this.viewDate));\n const end = endOfWeek(endOfMonth(this.viewDate));\n this.daysInMonth = eachDayOfInterval({ start, end });\n }\n\n generateYears() {\n const currentYear = this.viewDate.getFullYear();\n this.years = Array.from({ length: 16 }, (_, i) => currentYear - 6 + i);\n }\n\n setView(view: 'date' | 'month' | 'year') {\n this.currentView = view;\n if (view === 'year') this.generateYears();\n }\n\n prev() {\n if (this.currentView === 'date') {\n this.viewDate = subMonths(this.viewDate, 1);\n this.generateDays();\n } else if (this.currentView === 'year') {\n this.viewDate = subYears(this.viewDate, 16);\n this.generateYears();\n } else if (this.currentView === 'month') {\n this.viewDate = subYears(this.viewDate, 1);\n }\n }\n\n next() {\n if (this.currentView === 'date') {\n this.viewDate = addMonths(this.viewDate, 1);\n this.generateDays();\n } else if (this.currentView === 'year') {\n this.viewDate = addYears(this.viewDate, 16);\n this.generateYears();\n } else if (this.currentView === 'month') {\n this.viewDate = addYears(this.viewDate, 1);\n }\n }\n\n // --- Range Selection Logic ---\n\n selectDate(date: Date) {\n if (this.isDateDisabled(date)) return;\n\n const { start, end } = this.value;\n\n // 1. If start exists but end doesn't\n if (start && !end) {\n if (isBefore(date, start)) {\n // User clicked earlier date -> Reset start\n this.value = { start: date, end: null };\n } else {\n // User clicked later date -> Complete range\n this.value = { start, end: date };\n }\n }\n // 2. If neither exist OR both exist (reset)\n else {\n this.value = { start: date, end: null };\n }\n\n if (!isSameMonth(date, this.viewDate)) {\n this.viewDate = date;\n this.generateDays();\n }\n\n this.onChange(this.value);\n this.rangeSelect.emit(this.value);\n this.onTouched();\n }\n\n selectMonth(monthIndex: number) {\n this.viewDate = setMonth(this.viewDate, monthIndex);\n this.currentView = 'date';\n this.generateDays();\n }\n\n selectYear(year: number) {\n this.viewDate = setYear(this.viewDate, year);\n this.currentView = 'date';\n this.generateDays();\n }\n\n // --- Visual Styling for Range ---\n\n getDayClass(date: Date) {\n const { start, end } = this.value;\n const isOutside = !isSameMonth(date, this.viewDate);\n const isDisabled = this.isDateDisabled(date);\n\n // Range Checks\n const isStart = start && isSameDay(date, start);\n const isEnd = end && isSameDay(date, end);\n const isInside = start && end && isWithinInterval(date, { start, end });\n const isTodayDate = isToday(date);\n\n return cn(\n // Base: h-9 w-9, but we remove margins/rounding for the 'strip' effect\n 'h-9 w-9 p-0 font-normal text-sm transition-all flex items-center justify-center relative z-10',\n\n // Default State (Not selected, Not disabled)\n !isInside && !isStart && !isEnd && !isDisabled && 'hover:bg-accent hover:text-accent-foreground rounded-md',\n\n // The \"Caps\": Start and End\n (isStart || isEnd) && 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground',\n\n // The \"Strip\": Dates between start and end\n isInside && !isStart && !isEnd && 'bg-accent text-accent-foreground rounded-none',\n\n // Connecting the Caps to the Strip (Rectangular inside edges)\n isStart && end && 'rounded-l-md rounded-r-none',\n isEnd && start && 'rounded-r-md rounded-l-none',\n // If no end date yet, Start should be fully rounded\n isStart && !end && 'rounded-md',\n\n // Muted/Disabled logic\n !isInside && isTodayDate && !isStart && !isEnd && 'bg-accent/50 text-accent-foreground rounded-md',\n (isOutside || isDisabled) && 'text-muted-foreground opacity-50',\n isDisabled && 'cursor-not-allowed'\n );\n }\n\n isDateDisabled(date: Date): boolean {\n return this.disablePastDates ? isBefore(date, startOfDay(new Date())) : false;\n }\n\n // --- CVA Implementation ---\n writeValue(val: DateRange | null): void {\n if (val) {\n this.value = val;\n if (val.start) this.viewDate = val.start;\n this.generateDays();\n this.generateYears();\n }\n }\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n}\n","import {\n Component, Input, forwardRef, ElementRef, ViewChild, HostListener, ChangeDetectorRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { computePosition, flip, shift, offset, autoUpdate, size } from '@floating-ui/dom';\nimport { cn } from './utils/cn';\nimport { RangeCalendarComponent } from './range-calendar.component';\nimport { format } from 'date-fns';\nimport { InputComponent } from './input.component';\nimport { DateRange } from './types/date-range';\n\n@Component({\n selector: 'tolle-date-range-picker',\n standalone: true,\n imports: [CommonModule, FormsModule, RangeCalendarComponent, InputComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangePickerComponent),\n multi: true\n }\n ],\n template: `\n <div class=\"relative w-full\" #triggerContainer>\n <tolle-input\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [ngModel]=\"displayValue\"\n [class]=\"class\"\n >\n <div suffix class=\"flex items-center gap-1.5 cursor-pointer\">\n <i\n *ngIf=\"(value.start || value.end) && !disabled\"\n (click)=\"clear($event)\"\n class=\"ri-close-line cursor-pointer text-muted-foreground hover:text-foreground transition-colors\"\n ></i>\n\n <i\n (click)=\"togglePopover($event)\"\n class=\"ri-calendar-line cursor-pointer text-muted-foreground hover:text-primary transition-colors\"\n ></i>\n </div>\n </tolle-input>\n\n <div\n #popover\n *ngIf=\"isOpen\"\n class=\"fixed z-50\"\n style=\"visibility: hidden;\"\n >\n <tolle-range-calendar class=\"shadow-lg\"\n [ngModel]=\"value\"\n (rangeSelect)=\"onCalendarSelect($event)\"\n [disablePastDates]=\"disablePastDates\"\n ></tolle-range-calendar>\n </div>\n </div>\n `\n})\nexport class DateRangePickerComponent implements ControlValueAccessor {\n @Input() disabled = false;\n @Input() placeholder = 'Pick a date range';\n @Input() class = '';\n @Input() disablePastDates = false;\n @Input() size: 'xs' | 'sm' | 'default' | 'lg' = 'default';\n\n @ViewChild('triggerContainer') triggerContainer!: ElementRef;\n @ViewChild('popover') popover!: ElementRef;\n\n value: DateRange = { start: null, end: null };\n isOpen = false;\n cleanupAutoUpdate?: () => void;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n get displayValue(): string {\n if (!this.value.start) return '';\n\n const startStr = format(this.value.start, 'MMM dd, yyyy');\n if (!this.value.end) return startStr;\n\n const endStr = format(this.value.end, 'MMM dd, yyyy');\n return `${startStr} - ${endStr}`;\n }\n\n onCalendarSelect(range: DateRange) {\n this.value = range;\n this.onChange(this.value);\n\n // Close only if range is complete\n if (range.start && range.end) {\n setTimeout(() => this.close(), 150);\n }\n }\n\n togglePopover(event: MouseEvent) {\n event.stopPropagation();\n if (this.disabled) return;\n this.isOpen ? this.close() : this.open();\n }\n\n open() {\n this.isOpen = true;\n setTimeout(() => this.updatePosition());\n }\n\n close() {\n this.isOpen = false;\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate();\n this.cleanupAutoUpdate = undefined;\n }\n }\n\n clear(event: MouseEvent) {\n event.stopPropagation();\n this.value = { start: null, end: null };\n this.onChange(this.value);\n this.cdr.markForCheck();\n }\n\n // --- Floating UI Positioning with Fixed Strategy ---\n private updatePosition() {\n if (!this.triggerContainer || !this.popover) return;\n\n this.cleanupAutoUpdate = autoUpdate(\n this.triggerContainer.nativeElement,\n this.popover.nativeElement,\n () => {\n computePosition(this.triggerContainer.nativeElement, this.popover.nativeElement, {\n placement: 'bottom-end',\n strategy: 'fixed', // Use fixed to escape column layout\n middleware: [\n offset(4),\n flip({\n fallbackAxisSideDirection: 'start',\n padding: 8\n }),\n shift({ padding: 8 }),\n size({\n apply({ rects, elements, availableHeight }) {\n // Constrain popover to available space\n Object.assign(elements.floating.style, {\n maxHeight: `${Math.min(400, availableHeight)}px`,\n minWidth: `${Math.max(rects.reference.width, 320)}px`, // Calendar minimum width\n });\n }\n })\n ],\n }).then(({ x, y, placement }) => {\n Object.assign(this.popover.nativeElement.style, {\n left: `${x}px`,\n top: `${y}px`,\n visibility: 'visible',\n });\n\n // Optional: Add placement class for styling\n this.popover.nativeElement.classList.remove('calendar-top', 'calendar-bottom');\n if (placement.includes('top')) {\n this.popover.nativeElement.classList.add('calendar-top');\n } else {\n this.popover.nativeElement.classList.add('calendar-bottom');\n }\n });\n }\n );\n }\n\n @HostListener('document:mousedown', ['$event'])\n onClickOutside(event: MouseEvent) {\n if (this.isOpen &&\n !this.triggerContainer.nativeElement.contains(event.target) &&\n !this.popover?.nativeElement.contains(event.target)) {\n this.close();\n }\n }\n\n @HostListener('window:resize')\n onWindowResize() {\n if (this.isOpen) {\n this.close(); // Close on resize for simplicity\n }\n }\n\n @HostListener('window:scroll')\n onWindowScroll() {\n // Floating-UI's autoUpdate handles scroll repositioning\n }\n\n // --- Control Value Accessor ---\n onChange: any = () => {};\n onTouched: any = () => {};\n\n writeValue(val: DateRange | null): void {\n if (val) {\n this.value = { ...val };\n } else {\n this.value = { start: null, end: null };\n }\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled = isDisabled; }\n\n protected cn = cn;\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'tolle-dropdown-item',\n standalone: true,\n imports: [],\n template: `\n <div [class]=\"cn('relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50', class)\">\n <ng-content></ng-content>\n </div>\n `,\n styles: ``\n})\nexport class DropdownItemComponent {\n @Input() class: string = '';\n protected readonly cn = (c1: string, c2: string) => `${c1} ${c2}`;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'tolle-dropdown-label',\n standalone: true,\n imports: [],\n template: `\n <div class=\"px-2 py-1.5 text-xs font-semibold text-muted-foreground uppercase tracking-wider\">\n <ng-content></ng-content>\n </div>\n `,\n styles: ``\n})\nexport class DropdownLabelComponent {\n\n}\n","import {Component, TemplateRef, ViewChild} from '@angular/core';\n\n@Component({\n selector: 'tolle-dropdown-menu',\n standalone: true,\n imports: [],\n template: `\n <ng-template #menuTemplate>\n <div class=\"z-[1000] min-w-[12rem] overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in zoom-in-95\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n `,\n styles: ``\n})\nexport class DropdownMenuComponent {\n @ViewChild('menuTemplate') templateRef!: TemplateRef<any>;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'tolle-dropdown-separator',\n standalone: true,\n imports: [],\n template: `<div class=\"-mx-1 my-1 h-px bg-border\"></div>`,\n styles: ``\n})\nexport class DropdownSeparatorComponent {\n\n}\n","import { Directive, Input, ElementRef, OnDestroy, HostListener, ViewContainerRef } from '@angular/core';\nimport { computePosition, flip, shift, offset, autoUpdate } from '@floating-ui/dom';\nimport { DropdownMenuComponent } from './dropdown-menu.component';\n\n@Directive({\n selector: '[tolleDropdownTrigger]',\n standalone: true\n})\nexport class DropdownTriggerDirective implements OnDestroy {\n @Input('tolleDropdownTrigger') menu!: DropdownMenuComponent;\n\n private cleanup?: () => void;\n private isOpen = false;\n private menuElement?: HTMLElement;\n\n constructor(\n private el: ElementRef,\n private vcr: ViewContainerRef\n ) {}\n\n @HostListener('click')\n toggle() {\n this.isOpen ? this.close() : this.open();\n }\n\n private open() {\n this.isOpen = true;\n\n // Create the menu view\n const view = this.vcr.createEmbeddedView(this.menu.templateRef);\n this.menuElement = view.rootNodes[0] as HTMLElement;\n document.body.appendChild(this.menuElement);\n\n // Floating UI positioning logic\n this.cleanup = autoUpdate(this.el.nativeElement, this.menuElement, () => {\n computePosition(this.el.nativeElement, this.menuElement!, {\n placement: 'bottom-end',\n middleware: [\n offset(4), // Space between trigger and menu\n flip(), // Flip to top if space is tight\n shift({ padding: 8 }) // Prevent menu from hitting screen edges\n ]\n }).then(({ x, y }) => {\n Object.assign(this.menuElement!.style, {\n left: `${x}px`,\n top: `${y}px`,\n position: 'absolute'\n });\n });\n });\n\n // Close on outside click\n setTimeout(() => {\n document.addEventListener('click', this.outsideClick);\n });\n }\n\n private close() {\n this.isOpen = false;\n this.cleanup?.();\n this.menuElement?.remove();\n document.removeEventListener('click', this.outsideClick);\n }\n\n private outsideClick = (event: MouseEvent) => {\n if (!this.el.nativeElement.contains(event.target) && !this.menuElement?.contains(event.target as Node)) {\n this.close();\n }\n };\n\n ngOnDestroy() {\n this.close();\n }\n}\n","import { Component, Input, forwardRef, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-textarea',\n standalone: true,\n imports: [CommonModule, FormsModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true\n }\n ],\n template: `\n <div class=\"flex flex-col gap-1.5 w-full\">\n <label\n *ngIf=\"label\"\n [for]=\"id\"\n [class]=\"computedLabelClass\"\n >\n {{ label }}\n </label>\n\n <div class=\"relative\">\n <textarea\n #textareaElement\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [rows]=\"rows\"\n [(ngModel)]=\"value\"\n (input)=\"handleInput($event)\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [class]=\"textareaClasses\"\n [style.resize]=\"(autoGrow || readonly || disabled) ? 'none' : 'vertical'\"\n [style.overflow]=\"autoGrow ? 'hidden' : 'auto'\"\n [attr.aria-invalid]=\"error\"\n [attr.aria-describedby]=\"error && errorMessage ? id + '-error' : null\"\n [attr.maxlength]=\"maxLength\"\n ></textarea>\n </div>\n\n <div *ngIf=\"(showCharacterCount || hint || errorMessage) && !disabled\" class=\"flex justify-between items-center px-1\">\n <p\n *ngIf=\"hint && !error\"\n class=\"text-xs text-muted-foreground transition-opacity duration-200\"\n [class.opacity-0]=\"isFocused && hideHintOnFocus\"\n >\n {{ hint }}\n </p>\n <p\n *ngIf=\"error && errorMessage\"\n [id]=\"id + '-error'\"\n class=\"text-xs text-destructive\"\n >\n {{ errorMessage }}\n </p>\n <p\n *ngIf=\"showCharacterCount\"\n class=\"text-[10px] uppercase tracking-wider text-muted-foreground ml-auto font-medium transition-opacity duration-200\"\n [class.opacity-0]=\"isFocused && hideCharacterCountOnFocus\"\n >\n {{ value.length || 0 }}{{ maxLength ? ' / ' + maxLength : '' }}\n </p>\n </div>\n </div>\n `\n})\nexport class TextareaComponent implements ControlValueAccessor, AfterViewInit {\n @ViewChild('textareaElement') textareaElement!: ElementRef<HTMLTextAreaElement>;\n\n @Input() id = `textarea-${Math.random().toString(36).substr(2, 9)}`;\n @Input() label = '';\n @Input() placeholder = '';\n @Input() hint = '';\n @Input() errorMessage = '';\n @Input() rows = 3;\n @Input() maxLength?: number;\n @Input() showCharacterCount = false;\n @Input() autoGrow = false;\n @Input() error = false;\n @Input() className = '';\n\n // Focus behavior\n @Input() hideHintOnFocus = true;\n @Input() hideCharacterCountOnFocus = false;\n\n // New States\n @Input() disabled = false;\n @Input() readonly = false;\n\n value: string = '';\n isFocused: boolean = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n ngAfterViewInit() {\n if (this.autoGrow) this.resize();\n }\n\n get computedLabelClass() {\n return cn(\n \"text-sm font-medium text-foreground leading-none transition-opacity duration-200\",\n this.disabled && \"opacity-50\"\n );\n }\n\n get textareaClasses() {\n return cn(\n // Base styles\n 'flex w-full rounded-md border bg-background px-3 py-2 text-sm',\n 'ring-offset-background transition-all duration-200',\n 'placeholder:text-muted-foreground',\n\n // Border and shadow\n 'border-input shadow-sm',\n\n // Minimum height\n 'min-h-[80px]',\n\n // Focus state - SIMPLE LIKE ZARDUI\n !(this.readonly || this.disabled) && [\n 'focus:outline-none',\n 'focus:ring-4',\n 'focus:ring-ring/30',\n 'focus:ring-offset-0',\n 'focus:shadow-none',\n // Border darkens on focus automatically\n 'focus:border-primary/80'\n ],\n\n // Error state\n this.error && [\n 'border-destructive',\n !(this.readonly || this.disabled) && [\n 'focus:border-destructive/80',\n 'focus:ring-destructive/30'\n ]\n ],\n\n // Disabled state\n this.disabled && [\n 'cursor-not-allowed opacity-50',\n 'border-opacity-50'\n ],\n\n // Readonly state\n this.readonly && [\n 'cursor-default',\n 'border-dashed',\n !this.disabled && 'focus:ring-0 focus:border-opacity-100'\n ],\n\n // Scrollbar styling\n 'scrollbar-thin scrollbar-thumb-muted scrollbar-track-transparent',\n\n this.className\n );\n }\n\n handleInput(event: any) {\n if (this.readonly || this.disabled) return;\n const val = event.target.value;\n this.value = val;\n this.onChange(val);\n if (this.autoGrow) this.resize();\n }\n\n onFocus(): void {\n this.isFocused = true;\n }\n\n onBlur(): void {\n this.isFocused = false;\n this.onTouched();\n }\n\n private resize() {\n const textarea = this.textareaElement.nativeElement;\n textarea.style.height = 'auto';\n textarea.style.height = `${textarea.scrollHeight}px`;\n }\n\n writeValue(value: any): void {\n this.value = value;\n if (this.autoGrow) setTimeout(() => this.resize());\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from './utils/cn';\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 transition-all duration-300 [&>i~div]:pl-7 [&>i]:absolute [&>i]:left-4 [&>i]:top-4 [&>i]:text-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive: \"border-destructive/50 text-destructive dark:border-destructive [&>i]:text-destructive\",\n success: \"border-emerald-500/50 text-emerald-700 dark:text-emerald-400 [&>i]:text-emerald-600\",\n warning: \"border-amber-500/50 text-amber-700 dark:text-amber-400 [&>i]:text-amber-600\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\ntype AlertVariants = VariantProps<typeof alertVariants>;\n\n@Component({\n selector: 'tolle-alert',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n *ngIf=\"!dismissed\"\n [class]=\"cn(alertVariants({ variant }), class)\"\n [class.opacity-0]=\"isDismissing\"\n [class.scale-95]=\"isDismissing\"\n role=\"alert\"\n >\n <ng-content select=\"[icon]\"></ng-content>\n\n <button\n *ngIf=\"dismissible\"\n (click)=\"dismiss()\"\n class=\"absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 group-hover:opacity-100\"\n [class.opacity-100]=\"dismissible\"\n >\n <i class=\"ri-close-line text-lg\"></i>\n </button>\n\n <div>\n <h5 *ngIf=\"title\" class=\"mb-1 font-medium leading-none tracking-tight\">\n {{ title }}\n </h5>\n <div class=\"text-sm [&_p]:leading-relaxed\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n `,\n})\nexport class AlertComponent {\n @Input() variant: AlertVariants['variant'] = 'default';\n @Input() title?: string;\n @Input() class: string = '';\n @Input() dismissible: boolean = false;\n\n @Output() onClose = new EventEmitter<void>();\n\n dismissed = false;\n isDismissing = false;\n\n protected alertVariants = alertVariants;\n protected cn = cn;\n\n dismiss() {\n this.isDismissing = true;\n // Wait for animation to finish before removing from DOM\n setTimeout(() => {\n this.dismissed = true;\n this.onClose.emit();\n }, 300);\n }\n}\n","import { ChangeDetectorRef, Component, Input, HostBinding } from '@angular/core';\nimport { cn } from './utils/cn';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'tolle-avatar',\n standalone: true,\n imports: [NgIf],\n template: `\n <!-- Image Layer -->\n <img *ngIf=\"src && !hasError\"\n [src]=\"src\"\n [alt]=\"alt\"\n (load)=\"onLoad()\"\n (error)=\"onError()\"\n [class.opacity-0]=\"isLoading\"\n class=\"h-full w-full object-cover transition-opacity duration-300\" />\n\n <!-- Fallback Layer -->\n <div *ngIf=\"hasError || !src || isLoading\" class=\"flex h-full w-full items-center justify-center bg-muted\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class AvatarComponent {\n @Input() src?: string;\n @Input() alt: string = '';\n @Input() size: 'sm' | 'default' | 'lg' | 'xl' = 'default';\n @Input() shape: 'circle' | 'square' = 'circle';\n\n // We remove @Input() class because standard class=\"\" attributes\n // on the tag will now work automatically with the host bindings.\n\n isLoading = true;\n hasError = false;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n onLoad() {\n this.isLoading = false;\n this.cdr.detectChanges();\n }\n\n onError() {\n this.isLoading = false;\n this.hasError = true;\n this.cdr.detectChanges();\n }\n\n // Apply styles directly to the <tolle-avatar> tag\n @HostBinding('class')\n get hostClasses() {\n return cn(\n // Layout & Shape\n \"relative flex shrink-0 overflow-hidden bg-muted\",\n this.shape === 'circle' ? 'rounded-full' : 'rounded-md',\n\n // Sizes\n this.size === 'sm' && \"h-8 w-8 text-xs\",\n this.size === 'default' && \"h-10 w-10\",\n this.size === 'lg' && \"h-16 w-16 text-lg\",\n this.size === 'xl' && \"h-24 w-24 text-xl\"\n );\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'tolle-avatar-fallback',\n standalone: true,\n imports: [],\n template: `\n <div class=\"flex h-full w-full items-center justify-center bg-muted text-muted-foreground font-medium uppercase\">\n <ng-content></ng-content>\n </div>\n `,\n styles: ``\n})\nexport class AvatarFallbackComponent {\n\n}\n","import {Component, Input} from '@angular/core';\nimport { cn } from \"./utils/cn\";\n\n@Component({\n selector: 'tolle-breadcrumb',\n standalone: true,\n imports: [],\n template: `\n <nav aria-label=\"breadcrumb\" [class]=\"cn('flex flex-wrap items-center break-words text-sm text-muted-foreground', class)\">\n <ol class=\"flex flex-wrap items-center gap-1.5 break-words\">\n <ng-content></ng-content>\n </ol>\n </nav>\n `,\n styles: ``\n})\nexport class BreadcrumbComponent {\n @Input() class: string = '';\n protected cn = cn;\n}\n","import {Component, Input} from '@angular/core';\nimport {NgIf, NgTemplateOutlet} from '@angular/common';\n\n@Component({\n selector: 'tolle-breadcrumb-link',\n standalone: true,\n imports: [\n NgIf,\n NgTemplateOutlet\n ],\n template: `\n <ng-template #content>\n <ng-content></ng-content>\n </ng-template>\n\n <ng-container *ngIf=\"active; else linkTemplate\">\n <span\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n class=\"font-normal text-foreground\"\n >\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </span>\n </ng-container>\n\n <ng-template #linkTemplate>\n <div class=\"transition-colors hover:text-foreground cursor-pointer\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n </ng-template>\n `,\n styles: ``\n})\nexport class BreadcrumbLinkComponent {\n @Input() active: boolean = false;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'tolle-breadcrumb-separator',\n standalone: true,\n imports: [],\n template: `\n <li role=\"presentation\" aria-hidden=\"true\" class=\"[&>i]:size-3.5\">\n <ng-content>\n <i class=\"ri-arrow-right-s-line\"></i>\n </ng-content>\n </li>\n `,\n styles: ``\n})\nexport class BreadcrumbSeparatorComponent {\n\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'tolle-breadcrumb-item',\n standalone: true,\n imports: [],\n template: `\n <li class=\"inline-flex items-center gap-1.5\">\n <ng-content></ng-content>\n </li>\n `,\n styles: ``\n})\nexport class BreadcrumbItemComponent {\n\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from './utils/cn';\n\nconst emptyStateVariants = cva(\n \"flex flex-col items-center justify-center text-center animate-in fade-in duration-500\",\n {\n variants: {\n variant: {\n default: \"min-h-[400px] rounded-md border border-dashed border-border p-8 bg-background/50\",\n minimal: \"p-4 min-h-[200px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\ntype EmptyStateVariants = VariantProps<typeof emptyStateVariants>;\n\n@Component({\n selector: 'tolle-empty-state',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div [class]=\"cn(emptyStateVariants({ variant }), class)\">\n\n <div [class]=\"cn(\n 'flex items-center justify-center rounded-full bg-muted',\n variant === 'minimal' ? 'h-12 w-12' : 'h-20 w-20'\n )\">\n <ng-content select=\"[icon]\">\n <i [class]=\"cn(\n 'ri-inbox-line text-muted-foreground/60',\n variant === 'minimal' ? 'text-xl' : 'text-3xl'\n )\"></i>\n </ng-content>\n </div>\n\n <h3 [class]=\"cn(\n 'font-semibold text-foreground',\n variant === 'minimal' ? 'mt-2 text-sm' : 'mt-4 text-lg'\n )\">\n {{ title }}\n </h3>\n\n <p *ngIf=\"description\" [class]=\"cn(\n 'text-muted-foreground',\n variant === 'minimal' ? 'mt-1 text-xs' : 'mb-6 mt-2 max-w-sm text-sm'\n )\">\n {{ description }}\n </p>\n\n <div *ngIf=\"variant !== 'minimal'\" class=\"flex items-center justify-center gap-3\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n </div>\n `\n})\nexport class EmptyStateComponent {\n @Input() variant: EmptyStateVariants['variant'] = 'default';\n @Input() title: string = 'No items found';\n @Input() description?: string;\n @Input() class: string = '';\n\n protected emptyStateVariants = emptyStateVariants;\n protected cn = cn;\n}\n","import { Component, Input, forwardRef, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-otp',\n standalone: true,\n imports: [CommonModule, FormsModule],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OtpComponent),\n multi: true\n }],\n template: `\n <div class=\"relative flex items-center gap-2\">\n <input\n #hiddenInput\n type=\"text\"\n inputmode=\"numeric\"\n autocomplete=\"one-time-code\"\n [maxLength]=\"length\"\n class=\"absolute inset-0 opacity-0 cursor-default z-20\"\n [(ngModel)]=\"value\"\n (input)=\"onInputChange($event)\"\n (focus)=\"isFocused = true\"\n (blur)=\"isFocused = false\"\n [disabled]=\"disabled\"\n />\n\n <div *ngIf=\"auto\" class=\"flex items-center gap-2 pointer-events-none\">\n <div class=\"flex items-center\">\n <div *ngFor=\"let _ of [].constructor(length); let i = index\"\n [class]=\"getSlotClass(i)\"\n >\n {{ value[i] || '' }}\n <div *ngIf=\"isFocused && value.length === i\" class=\"absolute inset-0 flex items-center justify-center\">\n <div class=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\"></div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"!auto\" class=\"flex items-center gap-2 pointer-events-none\">\n <ng-content></ng-content>\n </div>\n </div>\n `\n})\nexport class OtpComponent implements ControlValueAccessor {\n @Input() length = 6;\n @Input() disabled = false;\n @Input() auto = false; // The toggle for automatic slot generation\n\n value: string = '';\n isFocused = false;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n onInputChange(event: any) {\n const val = event.target.value.replace(/\\D/g, '');\n this.value = val;\n this.onChange(val);\n this.cdr.markForCheck();\n }\n\n // Visual logic for the automated slots\n getSlotClass(index: number) {\n const isActive = this.isFocused && this.value.length === index;\n\n return cn(\n 'relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-all bg-background',\n index === 0 && 'rounded-l-md border-l',\n index === this.length - 1 && 'rounded-r-md',\n isActive && 'z-30 ring-2 ring-ring ring-offset-background'\n );\n }\n\n writeValue(value: any): void { this.value = value || ''; this.cdr.markForCheck(); }\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n}\n","import { Component, Input } from '@angular/core';\nimport { cn } from \"./utils/cn\";\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'tolle-otp-slot',\n standalone: true,\n imports: [NgIf],\n template: `\n <div [class]=\"computedClass\">\n <span class=\"text-lg font-medium\">{{ char || '' }}</span>\n <div *ngIf=\"isActive && !char\" class=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div class=\"h-6 w-0.5 animate-caret-blink bg-foreground\"></div>\n </div>\n </div>\n `\n})\nexport class OtpSlotComponent {\n @Input() char: string | undefined = '';\n @Input() isActive: boolean = false;\n @Input() isFirst: boolean = false;\n @Input() isLast: boolean = false;\n @Input() class: string = '';\n protected cn = cn;\n\n get computedClass() {\n return cn(\n // Base styles (matching input container)\n 'relative flex h-10 w-10 items-center justify-center',\n 'transition-all duration-200',\n 'text-center font-medium select-none',\n\n // Border styling - exactly like input\n 'border border-input shadow-sm bg-background',\n\n // FOCUS STYLING - EXACTLY LIKE INPUT COMPONENT\n this.isActive && [\n // Darker border on focus\n 'border-primary/80',\n // Remove shadow on focus\n 'shadow-none',\n // Focus ring with same styling as input\n 'ring-4',\n 'ring-ring/30',\n 'ring-offset-0',\n // Ensure it's above other slots\n 'z-10'\n ],\n\n // Filled state\n this.char && !this.isActive && 'border-primary/60',\n\n // Border radius\n this.isFirst && 'rounded-l-md',\n this.isLast && 'rounded-r-md',\n\n // Remove left border for all but first slot\n !this.isFirst && '-ml-px',\n\n this.class\n );\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'tolle-otp-group',\n standalone: true,\n imports: [],\n template: `\n <div class=\"flex items-center\"><ng-content></ng-content></div>\n `,\n styles: ``\n})\nexport class OtpGroupComponent {\n\n}\n","\nimport { CommonModule } from '@angular/common';\nimport { computePosition, flip, shift, offset, autoUpdate } from '@floating-ui/dom';\nimport {Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, Output, ViewChild} from '@angular/core';\n\n@Component({\n selector: 'tolle-popover',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div class=\"inline-block\" #trigger (click)=\"toggle()\">\n <ng-content select=\"[trigger]\"></ng-content>\n </div>\n\n <div\n *ngIf=\"isOpen\"\n #popover\n class=\"absolute top-0 left-0 w-max z-[9999]\"\n >\n <ng-content></ng-content>\n </div>\n `,\n})\nexport class PopoverComponent implements OnDestroy {\n @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n @Output() onOpen = new EventEmitter<void>();\n @Output() onClose = new EventEmitter<void>();\n\n @ViewChild('trigger') triggerEl!: ElementRef;\n @ViewChild('popover') popoverEl!: ElementRef;\n\n isOpen = false;\n private cleanup?: () => void;\n\n toggle() {\n this.isOpen ? this.close() : this.open();\n }\n\n open() {\n this.isOpen = true;\n this.onOpen.emit();\n setTimeout(() => this.updatePosition());\n }\n\n close() {\n this.isOpen = false;\n this.onClose.emit();\n if (this.cleanup) this.cleanup();\n }\n\n private updatePosition() {\n if (!this.triggerEl || !this.popoverEl) return;\n\n this.cleanup = autoUpdate(\n this.triggerEl.nativeElement,\n this.popoverEl.nativeElement,\n () => {\n computePosition(this.triggerEl.nativeElement, this.popoverEl.nativeElement, {\n placement: this.placement,\n middleware: [offset(8), flip(), shift({ padding: 8 })],\n }).then(({ x, y }) => {\n Object.assign(this.popoverEl.nativeElement.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n });\n }\n );\n }\n\n @HostListener('document:mousedown', ['$event'])\n onClickOutside(event: MouseEvent) {\n if (\n this.isOpen &&\n !this.triggerEl.nativeElement.contains(event.target) &&\n !this.popoverEl?.nativeElement.contains(event.target)\n ) {\n this.close();\n }\n }\n\n ngOnDestroy() {\n if (this.cleanup) this.cleanup();\n }\n}\n","import {\n Component,\n Input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-popover-content',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n [class]=\"cn(\n 'z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none',\n 'animate-in fade-in zoom-in-95 duration-200',\n class\n )\"\n role=\"dialog\"\n >\n <ng-content></ng-content>\n </div>\n `\n})\nexport class PopoverContentComponent {\n @Input() class = '';\n protected cn = cn;\n}\n","import { Injectable } from '@angular/core';\nimport {BehaviorSubject, Subject} from 'rxjs';\n\n@Injectable()\nexport class RadioService {\n private selectedValueSource = new BehaviorSubject<any>(null);\n selectedValue$ = this.selectedValueSource.asObservable();\n\n private disabledSource = new BehaviorSubject<boolean>(false);\n disabled$ = this.disabledSource.asObservable();\n\n select(value: any) {\n if (!this.disabledSource.value) {\n this.selectedValueSource.next(value);\n }\n }\n\n setDisabled(isDisabled: boolean) {\n this.disabledSource.next(isDisabled);\n }\n}\n","import {Component, Input, forwardRef, AfterContentInit, OnChanges} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { cn } from './utils/cn';\nimport {RadioService} from './radio-service';\n\n@Component({\n selector: 'tolle-radio-group',\n standalone: true,\n imports: [CommonModule],\n providers: [\n RadioService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroupComponent),\n multi: true\n }\n ],\n template: `\n <div [class]=\"cn('grid gap-2', class)\" role=\"radiogroup\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class RadioGroupComponent implements ControlValueAccessor, OnChanges {\n @Input() class = '';\n @Input() disabled = false;\n @Input() name = `radio-group-${Math.random().toString(36).substring(2, 9)}`;\n\n value: any;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private radioService: RadioService) {\n this.radioService.selectedValue$.subscribe(val => {\n this.value = val;\n this.onChange(val);\n });\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.radioService.setDisabled(isDisabled);\n }\n\n ngOnChanges() {\n this.radioService.setDisabled(this.disabled);\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.radioService.select(value);\n }\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n\n protected readonly cn = cn;\n}\n","import { Component, Input, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cn } from './utils/cn';\nimport { RadioService } from './radio-service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'tolle-radio-item',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n (click)=\"!isEffectiveDisabled && select()\"\n [class]=\"cn(\n 'flex items-center space-x-2 group py-1',\n isEffectiveDisabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'\n )\"\n >\n <div [class]=\"cn(\n 'aspect-square h-4 w-4 rounded-full border border-primary text-primary transition-all flex items-center justify-center',\n 'ring-offset-background focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n !isEffectiveDisabled && 'group-hover:border-primary/70',\n isSelected ? 'bg-background' : 'bg-transparent',\n class\n )\">\n <div\n *ngIf=\"isSelected\"\n class=\"h-2.5 w-2.5 rounded-full bg-primary animate-in zoom-in-50 duration-200\"\n ></div>\n </div>\n\n <label class=\"text-sm font-medium leading-none select-none\" [class.cursor-pointer]=\"!isEffectiveDisabled\">\n <ng-content></ng-content>\n </label>\n </div>\n `\n})\nexport class RadioItemComponent implements OnInit, OnDestroy {\n @Input() value: any;\n @Input() disabled = false;\n @Input() class = '';\n\n isSelected = false;\n groupDisabled = false;\n\n private sub = new Subscription();\n\n get isEffectiveDisabled(): boolean {\n return this.disabled || this.groupDisabled;\n }\n\n // Inject ChangeDetectorRef to ensure UI updates when service emits\n constructor(\n private radioService: RadioService,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n // Listen for selection changes\n this.sub.add(\n this.radioService.selectedValue$.subscribe(val => {\n this.isSelected = (val === this.value);\n this.cdr.markForCheck(); // Trigger UI refresh\n })\n );\n\n // Listen for group-level disabled state\n this.sub.add(\n this.radioService.disabled$.subscribe(dis => {\n this.groupDisabled = dis;\n this.cdr.markForCheck(); // Trigger UI refresh\n })\n );\n }\n\n select() {\n this.radioService.select(this.value);\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe(); // Clean up subscriptions\n }\n\n protected cn = cn;\n}\n","/*\n * Public API Surface of tolle\n */\n\nexport * from './lib/utils/cn';\nexport * from './lib/button.component';\nexport * from './lib/input.component';\nexport * from './lib/card.component';\nexport * from './lib/select.component';\nexport * from './lib/select-item.component';\nexport * from './lib/select-group.component';\nexport * from './lib/select-separator.component';\nexport * from './lib/switch.component';\nexport * from './lib/badge.component';\nexport * from './lib/skeleton.component';\nexport * from './lib/checkbox.component';\nexport * from './lib/tooltip.directive';\nexport * from './lib/toast.service'\nexport * from './lib/toaster.component';\nexport * from './lib/tolle-config';\nexport * from './lib/multi-select.component'\nexport * from './lib/calendar.component'\nexport * from './lib/masked-input.component'\nexport * from './lib/date-picker.component'\nexport * from './lib/pagination.component'\nexport * from './lib/data-table.component'\nexport * from './lib/tolle-cell.directive'\nexport * from './lib/accordion-item.component'\nexport * from './lib/accordion.component'\nexport * from './lib/modal.component'\nexport * from './lib/modal-ref'\nexport * from './lib/modal.service'\nexport * from './lib/modal-stack.service'\nexport * from './lib/modal'\nexport * from './lib/button-group.component'\nexport * from './lib/date-range-picker.component'\nexport * from './lib/range-calendar.component'\nexport * from './lib/theme.service'\nexport * from './lib/dropdown-item.component';\nexport * from './lib/dropdown-label.component'\nexport * from './lib/dropdown-menu.component'\nexport * from './lib/dropdown-separator.component';\nexport * from './lib/dropdown-trigger.directive';\nexport * from './lib/textarea.component';\nexport * from './lib/alert.component';\nexport * from './lib/avatar.component';\nexport * from './lib/avatar-fallback.component';\nexport * from './lib/breadcrumb.component';\nexport * from './lib/breadcrumb-link.component';\nexport * from './lib/breadcrumb-separator.component';\nexport * from './lib/breadcrumb-item.component';\nexport * from './lib/empty-state.component';\nexport * from './lib/otp.component';\nexport * from './lib/otp-slot.component';\nexport * from './lib/otp-group.component';\nexport * from './lib/popover.component';\nexport * from './lib/popover-content.component';\nexport * from './lib/radio-group.component';\nexport * from './lib/radio-item.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SelectService","i2","i3","i1.ModalRef","i1","i2.ModalStackService","i1.RadioService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tolle-ui.mjs","sources":["../../../projects/tolle/src/lib/utils/cn.ts","../../../projects/tolle/src/lib/button.component.ts","../../../projects/tolle/src/lib/input.component.ts","../../../projects/tolle/src/lib/card.component.ts","../../../projects/tolle/src/lib/select.service.ts","../../../projects/tolle/src/lib/select-item.component.ts","../../../projects/tolle/src/lib/select.component.ts","../../../projects/tolle/src/lib/select-group.component.ts","../../../projects/tolle/src/lib/select-separator.component.ts","../../../projects/tolle/src/lib/switch.component.ts","../../../projects/tolle/src/lib/badge.component.ts","../../../projects/tolle/src/lib/skeleton.component.ts","../../../projects/tolle/src/lib/checkbox.component.ts","../../../projects/tolle/src/lib/tooltip.directive.ts","../../../projects/tolle/src/lib/toast.service.ts","../../../projects/tolle/src/lib/toaster.component.ts","../../../projects/tolle/src/lib/theme.service.ts","../../../projects/tolle/src/lib/tolle-config.ts","../../../projects/tolle/src/lib/multi-select.component.ts","../../../projects/tolle/src/lib/calendar.component.ts","../../../projects/tolle/src/lib/masked-input.component.ts","../../../projects/tolle/src/lib/date-picker.component.ts","../../../projects/tolle/src/lib/pagination.component.ts","../../../projects/tolle/src/lib/tolle-cell.directive.ts","../../../projects/tolle/src/lib/data-table.component.ts","../../../projects/tolle/src/lib/accordion-item.component.ts","../../../projects/tolle/src/lib/accordion.component.ts","../../../projects/tolle/src/lib/modal-ref.ts","../../../projects/tolle/src/lib/modal.component.ts","../../../projects/tolle/src/lib/modal-stack.service.ts","../../../projects/tolle/src/lib/modal.service.ts","../../../projects/tolle/src/lib/modal.ts","../../../projects/tolle/src/lib/button-group.component.ts","../../../projects/tolle/src/lib/range-calendar.component.ts","../../../projects/tolle/src/lib/date-range-picker.component.ts","../../../projects/tolle/src/lib/dropdown-item.component.ts","../../../projects/tolle/src/lib/dropdown-label.component.ts","../../../projects/tolle/src/lib/dropdown-menu.component.ts","../../../projects/tolle/src/lib/dropdown-separator.component.ts","../../../projects/tolle/src/lib/dropdown-trigger.directive.ts","../../../projects/tolle/src/lib/textarea.component.ts","../../../projects/tolle/src/lib/alert.component.ts","../../../projects/tolle/src/lib/avatar.component.ts","../../../projects/tolle/src/lib/avatar-fallback.component.ts","../../../projects/tolle/src/lib/breadcrumb.component.ts","../../../projects/tolle/src/lib/breadcrumb-link.component.ts","../../../projects/tolle/src/lib/breadcrumb-separator.component.ts","../../../projects/tolle/src/lib/breadcrumb-item.component.ts","../../../projects/tolle/src/lib/empty-state.component.ts","../../../projects/tolle/src/lib/otp.component.ts","../../../projects/tolle/src/lib/otp-slot.component.ts","../../../projects/tolle/src/lib/otp-group.component.ts","../../../projects/tolle/src/lib/popover.component.ts","../../../projects/tolle/src/lib/popover-content.component.ts","../../../projects/tolle/src/lib/radio-service.ts","../../../projects/tolle/src/lib/radio-group.component.ts","../../../projects/tolle/src/lib/radio-item.component.ts","../../../projects/tolle/src/lib/segment.component.ts","../../../projects/tolle/src/lib/sidebar.component.ts","../../../projects/tolle/src/public-api.ts","../../../projects/tolle/src/tolle-ui.ts"],"sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from './utils/cn';\n\nconst buttonVariants = cva(\n \"tolle-button-base inline-flex items-center justify-center rounded-md text-sm font-medium transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background active:scale-[0.98]\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive: \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline: \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n xs: \"h-8 px-2 py-1 text-xs\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n \"icon-xs\": \"h-8 w-8\",\n \"icon-sm\": \"h-9 w-9\",\n icon: \"h-10 w-10\",\n \"icon-lg\": \"h-11 w-11\",\n },\n busy: { true: \"tolle-button--busy relative !cursor-wait !pointer-events-none\" }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport type ButtonProps = VariantProps<typeof buttonVariants>;\n\n@Component({\n selector: 'tolle-button',\n standalone: true,\n imports: [CommonModule],\n template: `\n <button\n [class]=\"computedClass\"\n [disabled]=\"disabled || busy\"\n [attr.aria-busy]=\"busy\"\n >\n <div *ngIf=\"busy\" class=\"absolute inset-0 flex items-center justify-center\">\n <svg class=\"animate-spin h-5 w-5 text-current\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n </div>\n\n <span class=\"flex items-center justify-center w-full h-full pointer-events-none\" [class.invisible]=\"busy\">\n <ng-content></ng-content>\n </span>\n </button>\n `,\n host: {\n 'class': 'tolle-button-wrapper inline-block align-middle'\n }\n})\nexport class ButtonComponent {\n @Input() class: string = '';\n @Input() variant: ButtonProps['variant'] = 'default';\n @Input() size: ButtonProps['size'] = 'default';\n @Input() disabled: boolean = false;\n @Input() busy: boolean = false;\n\n get computedClass() {\n return cn(\n buttonVariants({\n variant: this.variant,\n size: this.size,\n busy: this.busy\n }),\n this.class\n );\n }\n}\n","import { Component, Input, forwardRef, ChangeDetectorRef, ElementRef, ViewChild, AfterViewInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-input',\n standalone: true,\n imports: [CommonModule, FormsModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => InputComponent),\n multi: true\n }\n ],\n template: `\n <div class=\"flex flex-col gap-1.5 w-full\">\n <label\n *ngIf=\"label\"\n [for]=\"id\"\n [class]=\"computedLabelClass\">\n {{ label }}\n </label>\n\n <div\n [class]=\"computedContainerClass\"\n (click)=\"focusInput()\"\n >\n <div class=\"flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200\">\n <ng-content select=\"[prefix]\"></ng-content>\n </div>\n\n <input\n #inputElement\n [id]=\"id\"\n [type]=\"type\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [(ngModel)]=\"value\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n (input)=\"onInputChange($event)\"\n [class]=\"computedInputClass\"\n [attr.aria-invalid]=\"error\"\n [attr.aria-describedby]=\"error && errorMessage ? id + '-error' : null\"\n />\n\n <div class=\"flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200\">\n <ng-content select=\"[suffix]\"></ng-content>\n </div>\n </div>\n\n <ng-container *ngIf=\"!disabled\">\n <p\n *ngIf=\"hint && !error\"\n class=\"text-xs text-muted-foreground px-1 transition-opacity duration-200\"\n [class.opacity-0]=\"isFocused && hideHintOnFocus\"\n >\n {{ hint }}\n </p>\n <p\n *ngIf=\"error && errorMessage\"\n [id]=\"id + '-error'\"\n class=\"text-xs text-destructive px-1\"\n >\n {{ errorMessage }}\n </p>\n </ng-container>\n </div>\n `,\n})\nexport class InputComponent implements ControlValueAccessor, AfterViewInit {\n @ViewChild('inputElement') inputElement!: ElementRef<HTMLInputElement>;\n\n @Input() id: string = `input-${Math.random().toString(36).substr(2, 9)}`;\n @Input() label: string = '';\n @Input() hint: string = '';\n @Input() errorMessage: string = '';\n @Input() type: string = 'text';\n @Input() placeholder: string = '';\n @Input() size: 'xs' | 'sm' | 'default' | 'lg' = 'default';\n @Input() containerClass: string = '';\n @Input() class: string = '';\n\n // New States\n @Input() disabled: boolean = false;\n @Input() readonly: boolean = false;\n @Input() error: boolean = false;\n\n // Focus behavior\n @Input() hideHintOnFocus: boolean = true;\n\n value: any = '';\n onChange: any = () => {};\n onTouched: any = () => {};\n isFocused: boolean = false;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngAfterViewInit() {\n if (this.inputElement?.nativeElement.hasAttribute('autofocus')) {\n setTimeout(() => this.inputElement.nativeElement.focus());\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n onInputChange(event: Event): void {\n if (this.readonly || this.disabled) return;\n const val = (event.target as HTMLInputElement).value;\n this.value = val;\n this.onChange(val);\n }\n\n onFocus(): void {\n this.isFocused = true;\n }\n\n onBlur(): void {\n this.isFocused = false;\n this.onTouched();\n }\n\n focusInput(): void {\n if (!this.disabled && this.inputElement) {\n this.inputElement.nativeElement.focus();\n }\n }\n\n protected readonly cn = cn;\n\n get computedLabelClass() {\n return cn(\n \"text-sm font-medium text-foreground leading-none transition-opacity duration-200\",\n this.disabled && \"opacity-50\"\n );\n }\n\n get computedContainerClass() {\n return cn(\n // Base styles\n \"group relative flex items-center w-full rounded-md border transition-all duration-200\",\n \"bg-background\",\n\n // Border and shadow\n \"border-input shadow-sm\",\n\n // Sizing\n this.size === 'xs' && \"h-8 px-2 gap-1.5 text-xs\",\n this.size === 'sm' && \"h-9 px-3 gap-2 text-sm\",\n this.size === 'default' && \"h-10 px-3 gap-2 text-sm\",\n this.size === 'lg' && \"h-11 px-4 gap-3 text-base\",\n\n // Focus state - SIMPLE AND ELEGANT LIKE ZARDUI\n // The magic happens in CSS: border darkens automatically on focus\n !(this.readonly || this.disabled) && [\n \"focus-within:border-primary/80\",\n \"focus-within:ring-4\",\n \"focus-within:ring-ring/30\",\n \"focus-within:ring-offset-0\",\n \"focus-within:shadow-none\",\n ],\n\n // Error state\n this.error && [\n \"border-destructive\",\n !(this.readonly || this.disabled) && [\n \"focus-within:border-destructive/80\",\n \"focus-within:ring-destructive/30\"\n ]\n ],\n\n // Disabled state\n this.disabled && [\n \"cursor-not-allowed opacity-50\",\n \"border-opacity-50\"\n ],\n\n // Readonly state\n this.readonly && [\n \"cursor-default\",\n \"border-dashed\",\n !this.disabled && \"focus-within:ring-0 focus-within:border-opacity-100\"\n ],\n\n this.containerClass\n );\n }\n\n get computedInputClass() {\n return cn(\n // Base styles\n \"flex-1 bg-transparent border-none p-0\",\n \"placeholder:text-muted-foreground\",\n\n // Remove all default focus styles\n \"focus:outline-none focus:ring-0 focus:shadow-none\",\n\n // Text sizing\n this.size === 'xs' && \"text-xs\",\n this.size === 'sm' && \"text-sm\",\n this.size === 'default' && \"text-sm\",\n this.size === 'lg' && \"text-base\",\n\n // Cursor states\n this.disabled && \"cursor-not-allowed\",\n this.readonly && \"cursor-default\",\n\n // Text color\n \"text-foreground\",\n\n // Selection color\n \"selection:bg-primary/20 selection:text-foreground\",\n\n this.class\n );\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-card',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div [class]=\"cn('rounded-md border border-border text-card-foreground shadow', class)\">\n <ng-content></ng-content>\n </div>\n `,\n})\nexport class CardComponent { @Input() class = ''; protected cn = cn; }\n\n@Component({\n selector: 'tolle-card-header',\n standalone: true,\n template: `<div [class]=\"cn('flex flex-col space-y-1.5 p-6', class)\"><ng-content></ng-content></div>`,\n})\nexport class CardHeaderComponent { @Input() class = ''; protected cn = cn; }\n\n@Component({\n selector: 'tolle-card-title',\n standalone: true,\n template: `<h3 [class]=\"cn('font-semibold leading-none tracking-tight', class)\"><ng-content></ng-content></h3>`,\n})\nexport class CardTitleComponent { @Input() class = ''; protected cn = cn; }\n\n@Component({\n selector: 'tolle-card-content',\n standalone: true,\n template: `<div [class]=\"cn('p-6 pt-0', class)\"><ng-content></ng-content></div>`,\n})\nexport class CardContentComponent { @Input() class = ''; protected cn = cn; }\n\n@Component({\n selector: 'tolle-card-footer',\n standalone: true,\n template: `<div [class]=\"cn('flex items-center p-6 pt-0', class)\"><ng-content></ng-content></div>`,\n})\nexport class CardFooterComponent { @Input() class = ''; protected cn = cn; }\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class SelectService {\n // Emits the value of the clicked item\n private selectedValueSource = new Subject<any>();\n selectedValue$ = this.selectedValueSource.asObservable();\n\n // Emits the label/text of the clicked item\n private selectedLabelSource = new Subject<string>();\n selectedLabel$ = this.selectedLabelSource.asObservable();\n\n registerClick(value: any, label: string) {\n this.selectedValueSource.next(value);\n this.selectedLabelSource.next(label);\n }\n}\n","import {Component, Input, HostListener, ElementRef, Optional} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cn } from './utils/cn';\nimport {SelectService} from './select.service';\n\n@Component({\n selector: 'tolle-select-item',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n *ngIf=\"!hidden\"\n [class]=\"cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors',\n getItemClasses(),\n class\n )\"\n [attr.aria-disabled]=\"disabled\"\n [attr.aria-selected]=\"selected\"\n role=\"option\"\n >\n <!-- Single Select: Checkmark -->\n <span *ngIf=\"!multiSelect && selected\" class=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <i class=\"ri-check-line text-primary\"></i>\n </span>\n\n <!-- Multi-Select: Checkbox -->\n <span *ngIf=\"multiSelect\" class=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <div [class]=\"cn(\n 'flex h-4 w-4 items-center justify-center rounded-sm border transition-all duration-200',\n selected ? 'border-primary bg-primary text-primary-foreground' : 'border-input'\n )\">\n <i [class]=\"cn(\n 'ri-check-line text-xs transition-all duration-200',\n selected ? 'opacity-100 scale-100' : 'opacity-0 scale-75'\n )\"></i>\n </div>\n </span>\n\n <!-- Content -->\n <span class=\"flex-1 truncate\">\n <ng-content></ng-content>\n </span>\n\n <!-- Disabled indicator -->\n <span *ngIf=\"disabled && !selected\" class=\"ml-2 text-xs text-muted-foreground/50\">\n <i class=\"ri-forbid-line\"></i>\n </span>\n </div>\n `,\n})\nexport class SelectItemComponent {\n @Input() value: any;\n @Input() class = '';\n @Input() selected = false;\n @Input() disabled = false;\n @Input() multiSelect = false; // Will be set by parent component\n\n hidden = false;\n\n constructor(\n @Optional() private selectService: SelectService,\n private el: ElementRef\n ) {}\n\n // Helper method for the parent to get the searchable text\n getLabel(): string {\n return this.el.nativeElement.textContent?.trim() || '';\n }\n\n getItemClasses(): string {\n return cn(\n // Base state\n 'focus:bg-accent focus:text-accent-foreground',\n\n // Hover states (only if not disabled)\n !this.disabled && [\n 'cursor-pointer',\n 'hover:bg-accent hover:text-accent-foreground'\n ],\n\n // Selected state\n this.selected && [\n this.multiSelect\n ? 'bg-primary/5 text-foreground'\n : 'bg-accent text-accent-foreground'\n ],\n\n // Disabled state\n this.disabled && [\n 'opacity-50',\n 'cursor-not-allowed',\n 'hover:bg-transparent hover:text-foreground'\n ]\n );\n }\n\n @HostListener('click', ['$event'])\n onClick(event: MouseEvent) {\n if (this.hidden || this.disabled) return;\n\n event.stopPropagation();\n if (this.selectService) {\n const label = this.getLabel();\n\n if (this.multiSelect) {\n // For multi-select, toggle selection\n this.selected = !this.selected;\n }\n // For both single and multi-select, notify parent\n this.selectService.registerClick(this.value, label);\n }\n }\n\n protected cn = cn;\n}\n","import {\n Component,\n Input,\n forwardRef,\n ElementRef,\n ViewChild,\n OnDestroy,\n HostListener,\n ContentChildren,\n QueryList,\n AfterContentInit\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\n// 1. Import 'size' middleware\nimport { computePosition, flip, shift, offset, autoUpdate, size } from '@floating-ui/dom';\nimport { cn } from './utils/cn';\nimport { SelectItemComponent } from './select-item.component';\nimport { Subscription } from 'rxjs';\nimport { SelectService } from './select.service';\nimport { InputComponent } from './input.component';\n\n@Component({\n selector: 'tolle-select',\n standalone: true,\n imports: [CommonModule, FormsModule, InputComponent],\n providers: [\n SelectService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SelectComponent),\n multi: true\n }\n ],\n template: `\n <div [class]=\"cn('relative w-full', 'size-' + size)\" #container>\n <button\n type=\"button\"\n #trigger\n (click)=\"toggle()\"\n [disabled]=\"disabled\"\n [class]=\"computedTriggerClass\"\n >\n <span class=\"truncate\" [class.text-muted-foreground]=\"!selectedLabel\">\n {{ selectedLabel || placeholder }}\n </span>\n <i [class]=\"iconClass\"></i>\n </button>\n\n <div\n #popover\n *ngIf=\"isOpen\"\n class=\"fixed bg-popover z-[999] overflow-auto flex flex-col rounded-md border border-border text-popover-foreground shadow-md\"\n style=\"visibility: hidden; top: 0; left: 0;\">\n <div *ngIf=\"searchable\" class=\"p-2 border-b border-border bg-popover h-auto\">\n <tolle-input\n size=\"xs\"\n placeholder=\"Search...\"\n [(ngModel)]=\"searchQuery\"\n (ngModelChange)=\"onSearchChange($event)\"\n class=\"w-full\">\n <i prefix class=\"ri-search-line\"></i>\n </tolle-input>\n </div>\n\n <div class=\"p-1 overflow-y-auto scrollbar-hidden grow h-full w-full\">\n <ng-content></ng-content>\n <div *ngIf=\"noResults\" class=\"py-6 text-center text-sm text-muted-foreground\">\n No results found.\n </div>\n </div>\n </div>\n </div>\n `,\n})\nexport class SelectComponent implements ControlValueAccessor, AfterContentInit, OnDestroy {\n @Input() placeholder = 'Select an option';\n @Input() class = '';\n @Input() disabled = false;\n @Input() searchable = false;\n @Input() size: 'xs' | 'sm' | 'default' | 'lg' = 'default';\n @Input() readonly = false;\n\n @ViewChild('trigger') trigger!: ElementRef;\n @ViewChild('popover') popover!: ElementRef;\n @ViewChild('container') container!: ElementRef;\n @ContentChildren(SelectItemComponent, { descendants: true }) items!: QueryList<SelectItemComponent>;\n\n private sub = new Subscription();\n searchQuery = '';\n noResults = false;\n isOpen = false;\n value: any = null;\n selectedLabel = '';\n cleanupAutoUpdate?: () => void;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n protected cn = cn;\n\n constructor(private selectService: SelectService) {\n this.sub.add(\n this.selectService.selectedValue$.subscribe(val => {\n this.value = val;\n this.onChange(val);\n this.updateItemSelection();\n })\n );\n\n this.sub.add(\n this.selectService.selectedLabel$.subscribe(label => {\n this.selectedLabel = label;\n this.close();\n })\n );\n }\n\n get computedTriggerClass() {\n return cn(\n 'flex w-full items-center justify-between rounded-md border transition-all duration-200',\n 'bg-background text-foreground',\n 'border-input shadow-sm',\n this.size === 'xs' && 'h-8 px-2 text-xs',\n this.size === 'sm' && 'h-9 px-3 text-sm',\n this.size === 'default' && 'h-10 px-3 text-sm',\n this.size === 'lg' && 'h-11 px-4 text-base',\n !(this.readonly || this.disabled) && [\n 'focus:outline-none',\n 'focus:ring-4',\n 'focus:ring-ring/30',\n 'focus:ring-offset-0',\n 'focus:shadow-none',\n 'focus:border-primary/80'\n ],\n !(this.readonly || this.disabled) && 'hover:border-accent',\n this.disabled && [\n 'cursor-not-allowed opacity-50',\n 'border-opacity-50'\n ],\n this.readonly && [\n 'cursor-default',\n 'border-dashed',\n !this.disabled && 'focus:ring-0 focus:border-opacity-100'\n ],\n this.class\n );\n }\n\n get iconClass() {\n return cn(\n 'ri-arrow-down-s-line text-muted-foreground ml-2 transition-transform duration-200',\n this.isOpen ? 'rotate-180' : '',\n (this.size === 'xs' || this.size === 'sm') ? 'text-[14px]' : 'text-[18px]',\n (this.disabled || this.readonly) && 'opacity-30'\n );\n }\n\n ngAfterContentInit() {\n this.updateItemSelection();\n this.items.changes.subscribe(() => this.updateItemSelection());\n }\n\n private updateItemSelection() {\n if (this.items) {\n this.items.forEach(item => {\n item.selected = item.value === this.value;\n });\n }\n }\n\n toggle() {\n if (this.disabled || this.readonly) return;\n this.isOpen ? this.close() : this.open();\n }\n\n open() {\n this.isOpen = true;\n this.trigger.nativeElement.focus();\n setTimeout(() => this.updatePosition());\n }\n\n close() {\n this.isOpen = false;\n this.searchQuery = '';\n this.onSearchChange('');\n if (this.cleanupAutoUpdate) this.cleanupAutoUpdate();\n }\n\n private updatePosition() {\n if (!this.trigger || !this.popover) return;\n\n this.cleanupAutoUpdate = autoUpdate(\n this.trigger.nativeElement,\n this.popover.nativeElement,\n () => {\n computePosition(this.trigger.nativeElement, this.popover.nativeElement, {\n strategy: 'fixed', // 3. Use fixed strategy\n placement: 'bottom-start',\n middleware: [\n offset(4),\n flip(),\n shift({ padding: 8 }),\n // 4. Use size middleware to sync width and handle constraints\n size({\n apply({ rects, elements, availableHeight }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n maxHeight: `${availableHeight}px`\n });\n },\n }),\n ],\n }).then(({ x, y, strategy }) => {\n Object.assign(this.popover.nativeElement.style, {\n position: strategy, // 5. Apply strategy to style\n left: `${x}px`,\n top: `${y}px`,\n visibility: 'visible',\n });\n });\n }\n );\n }\n\n onSearchChange(query: string) {\n const filter = (query || '').toLowerCase().trim();\n let visibleCount = 0;\n\n this.items.forEach(item => {\n const text = item.getLabel().toLowerCase();\n const isVisible = text.includes(filter);\n item.hidden = !isVisible;\n if (isVisible) visibleCount++;\n });\n\n this.noResults = visibleCount === 0 && filter !== '';\n }\n\n @HostListener('document:mousedown', ['$event'])\n onDocumentClick(event: MouseEvent) {\n if (this.isOpen && !this.trigger.nativeElement.contains(event.target) && !this.popover.nativeElement.contains(event.target)) {\n this.close();\n }\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.updateItemSelection();\n if (this.items) {\n const found = this.items.find(i => i.value === value);\n if (found) this.selectedLabel = found.getLabel();\n }\n }\n\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled = isDisabled; }\n\n ngOnDestroy() {\n this.sub.unsubscribe();\n if (this.cleanupAutoUpdate) this.cleanupAutoUpdate();\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-select-group',\n standalone: true,\n template: `\n <div [class]=\"cn('px-2 py-1.5 text-sm font-semibold text-muted-foreground', class)\">\n <ng-content></ng-content>\n </div>\n `,\n})\nexport class SelectGroupComponent {\n @Input() class = '';\n protected cn = cn;\n}\n","import { Component, Input } from '@angular/core';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-select-separator',\n standalone: true,\n template: `\n <div [class]=\"cn('-mx-1 my-1 h-px bg-border', class)\"></div>\n `,\n})\nexport class SelectSeparatorComponent {\n @Input() class = '';\n protected cn = cn;\n}\n","import { Component, Input, forwardRef, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-switch',\n standalone: true,\n imports: [CommonModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SwitchComponent),\n multi: true\n }\n ],\n template: `\n <button\n type=\"button\"\n role=\"switch\"\n [attr.aria-checked]=\"checked\"\n [disabled]=\"disabled\"\n (click)=\"toggle()\"\n [class]=\"cn(\n 'peer inline-flex shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50',\n sizeClasses.track,\n checked ? 'bg-primary' : 'bg-input',\n class\n )\"\n >\n <span\n [class]=\"cn(\n 'pointer-events-none block rounded-full bg-background shadow-lg ring-0 transition-transform',\n sizeClasses.thumb,\n checked ? sizeClasses.translate : 'translate-x-0'\n )\"\n ></span>\n </button>\n `\n})\nexport class SwitchComponent implements ControlValueAccessor {\n @Input() class = '';\n @Input() disabled = false;\n @Input() size: 'xs' | 'sm' | 'default' | 'lg' = 'default';\n\n checked = false;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n get sizeClasses() {\n const sizes = {\n xs: {\n track: 'h-4 w-7',\n thumb: 'h-3 w-3',\n translate: 'translate-x-3'\n },\n sm: {\n track: 'h-5 w-9',\n thumb: 'h-4 w-4',\n translate: 'translate-x-4'\n },\n default: {\n track: 'h-6 w-11',\n thumb: 'h-5 w-5',\n translate: 'translate-x-5'\n },\n lg: {\n track: 'h-7 w-[3.25rem]',\n thumb: 'h-6 w-6',\n translate: 'translate-x-6'\n }\n };\n return sizes[this.size];\n }\n\n protected cn = cn;\n\n toggle() {\n if (this.disabled) return;\n this.checked = !this.checked;\n this.onChange(this.checked);\n this.onTouched();\n }\n\n // --- ControlValueAccessor ---\n writeValue(value: boolean): void {\n this.checked = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled = isDisabled; }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-badge',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div [class]=\"computedClass\">\n <ng-content select=\"[prefix]\"></ng-content>\n\n <span class=\"truncate\">\n <ng-content></ng-content>\n </span>\n\n <button\n *ngIf=\"removable\"\n (click)=\"onRemove.emit($event)\"\n class=\"ml-1 -mr-1 rounded-md p-0.5 hover:bg-foreground/20 transition-colors outline-none focus:ring-1 focus:ring-ring\"\n >\n <i class=\"ri-close-line text-[1.1em]\"></i>\n </button>\n </div>\n `,\n})\nexport class BadgeComponent {\n @Input() variant: 'default' | 'secondary' | 'outline' | 'destructive' = 'default';\n @Input() size: 'xs' | 'sm' | 'default' = 'default';\n @Input() removable = false; // Toggle the \"Pill\" remove icon\n @Input() class = '';\n\n @Output() onRemove = new EventEmitter<MouseEvent>();\n\n protected readonly cn = cn;\n\n get computedClass() {\n return cn(\n // Base styles - Pills are always rounded-full\n 'inline-flex items-center justify-center rounded-md border px-2 py-0.5 font-medium transition-colors gap-1',\n\n // Variants (Google Dark Mode theme)\n this.variant === 'default' && 'border-transparent bg-primary text-primary-foreground',\n this.variant === 'secondary' && 'border-transparent bg-secondary text-secondary-foreground',\n this.variant === 'outline' && 'text-foreground border-border bg-transparent',\n this.variant === 'destructive' && 'border-transparent bg-destructive text-destructive-foreground',\n\n // Sizing\n this.size === 'xs' && 'px-1.5 py-0 text-[10px]',\n this.size === 'sm' && 'px-2 py-0 text-[11px]',\n this.size === 'default' && 'text-xs',\n\n this.class\n );\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-skeleton',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div [class]=\"computedClass\"></div>\n `,\n})\nexport class SkeletonComponent {\n @Input() variant: 'rect' | 'circle' | 'pill' = 'rect';\n @Input() class = '';\n\n protected readonly cn = cn;\n\n get computedClass() {\n return cn(\n // The background matches the Google Dark Mode \"Muted\" color\n 'animate-pulse bg-muted dark:bg-secondary rounded-md',\n\n this.variant === 'circle' && 'rounded-full',\n this.variant === 'pill' && 'rounded-full',\n\n this.class\n );\n }\n}\n","import { Component, Input, forwardRef, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-checkbox',\n standalone: true,\n imports: [CommonModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CheckboxComponent),\n multi: true\n }\n ],\n template: `\n <div\n (click)=\"toggle()\"\n [class]=\"cn(\n 'group flex h-5 w-5 shrink-0 cursor-pointer items-center justify-center rounded-sm border border-primary ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n checked ? 'bg-primary text-primary-foreground' : 'bg-transparent',\n sizeClasses,\n class\n )\"\n >\n <i\n *ngIf=\"checked\"\n class=\"ri-check-line font-bold\"\n [class]=\"size === 'xs' ? 'text-[10px]' : 'text-[14px]'\"\n ></i>\n </div>\n `\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n @Input() class = '';\n @Input() disabled = false;\n @Input() size: 'xs' | 'sm' | 'default' | 'lg' = 'default';\n\n checked = false;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n protected cn = cn;\n\n get sizeClasses() {\n return cn(\n this.size === 'xs' && 'h-3.5 w-3.5',\n this.size === 'sm' && 'h-4 w-4',\n this.size === 'default' && 'h-5 w-5',\n this.size === 'lg' && 'h-6 w-6'\n );\n }\n\n toggle() {\n if (this.disabled) return;\n this.checked = !this.checked;\n this.onChange(this.checked);\n this.onTouched();\n }\n\n // --- ControlValueAccessor ---\n writeValue(value: boolean): void {\n this.checked = value;\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled = isDisabled; }\n}\n","import {\n Directive, ElementRef, HostListener, Input,\n OnDestroy, ComponentRef, ViewContainerRef\n} from '@angular/core';\nimport { computePosition, flip, shift, offset, arrow, autoUpdate } from '@floating-ui/dom';\nimport { cn } from './utils/cn';\n\n@Directive({\n selector: '[tolleTooltip]',\n standalone: true\n})\nexport class TooltipDirective implements OnDestroy {\n @Input('tolleTooltip') content: string = '';\n @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'top';\n\n private tooltipEl: HTMLDivElement | null = null;\n private cleanup?: () => void;\n\n constructor(private el: ElementRef) {}\n\n @HostListener('mouseenter')\n show() {\n if (!this.content) return;\n\n // 1. Create Tooltip Element\n this.tooltipEl = document.createElement('div');\n this.tooltipEl.className = cn(\n 'absolute z-[100] px-2 py-1 text-xs font-medium text-white bg-black rounded shadow-md pointer-events-none'\n );\n this.tooltipEl.innerText = this.content;\n document.body.appendChild(this.tooltipEl);\n\n // 2. Position it using Floating UI\n this.cleanup = autoUpdate(this.el.nativeElement, this.tooltipEl, () => {\n computePosition(this.el.nativeElement, this.tooltipEl!, {\n placement: this.placement,\n middleware: [offset(8), flip(), shift({ padding: 5 })],\n }).then(({ x, y }) => {\n Object.assign(this.tooltipEl!.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n });\n });\n }\n\n @HostListener('mouseleave')\n @HostListener('focusout')\n hide() {\n if (this.tooltipEl) {\n this.tooltipEl.remove();\n this.tooltipEl = null;\n }\n if (this.cleanup) {\n this.cleanup();\n }\n }\n\n ngOnDestroy() {\n this.hide();\n }\n}\n","// projects/tolle/src/lib/toast.service.ts\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport interface Toast {\n id: number;\n title?: string;\n description: string;\n variant?: 'default' | 'destructive' | 'success';\n duration?: number; // Custom duration in ms\n remainingTime: number;\n isPaused: boolean;\n}\n\nexport type ToastPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center';\n@Injectable({ providedIn: 'root' })\nexport class ToastService {\n private toasts: Toast[] = [];\n private toastSubject = new Subject<Toast[]>();\n toasts$ = this.toastSubject.asObservable();\n\n constructor() {\n setInterval(() => this.tick(), 100);\n }\n show(toast: Omit<Toast, 'id' | 'remainingTime' | 'isPaused'>) {\n const duration = toast.duration || 3000;\n const newToast: Toast = {\n ...toast,\n id: Date.now(),\n duration,\n remainingTime: duration,\n isPaused: false\n };\n this.toasts.push(newToast);\n this.notify();\n }\n\n private tick() {\n let changed = false;\n this.toasts.forEach(t => {\n if (!t.isPaused) {\n t.remainingTime -= 100;\n changed = true;\n }\n });\n\n const initialCount = this.toasts.length;\n this.toasts = this.toasts.filter(t => t.remainingTime > 0);\n\n if (changed || this.toasts.length !== initialCount) {\n this.notify();\n }\n }\n\n setPaused(id: number, paused: boolean) {\n const toast = this.toasts.find(t => t.id === id);\n if (toast) {\n toast.isPaused = paused;\n this.notify();\n }\n }\n\n remove(id: number) {\n this.toasts = this.toasts.filter(t => t.id !== id);\n this.notify();\n }\n\n private notify() {\n this.toastSubject.next([...this.toasts]);\n }\n}\n","// projects/tolle/src/lib/toast-container.component.ts\nimport {Component, inject, Input} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport {ToastService, Toast, ToastPosition} from './toast.service';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-toaster',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div [class]=\"cn('fixed z-[100] flex flex-col gap-2 w-full max-w-[380px] p-4', positionClasses)\">\n <div\n *ngFor=\"let toast of toasts$ | async\"\n (mouseenter)=\"toastService.setPaused(toast.id, true)\"\n (mouseleave)=\"toastService.setPaused(toast.id, false)\"\n [class]=\"cn(\n 'relative overflow-hidden p-4 rounded-md border border-border shadow-lg flex items-start justify-between gap-4 transition-all duration-300 bg-background text-foreground',\n toast.variant === 'destructive' && 'border-destructive/50 text-destructive'\n )\"\n >\n <div class=\"grid gap-1\">\n <div *ngIf=\"toast.title\" class=\"text-sm font-semibold\">{{ toast.title }}</div>\n <div class=\"text-xs opacity-90\">{{ toast.description }}</div>\n </div>\n\n <button (click)=\"toastService.remove(toast.id)\" class=\"opacity-50 hover:opacity-100\">\n <i class=\"ri-close-line\"></i>\n </button>\n\n <div\n class=\"absolute bottom-0 left-0 h-1 transition-all duration-100 ease-linear\"\n [style.width.%]=\"(toast.remainingTime / (toast.duration || 3000)) * 100\"\n [class.bg-destructive]=\"toast.variant === 'destructive'\"\n [class.bg-primary]=\"toast.variant !== 'destructive'\"\n ></div>\n </div>\n </div>\n `\n})\nexport class ToastContainerComponent {\n toastService = inject(ToastService);\n @Input() position: ToastPosition = 'bottom-right';\n toasts$ = this.toastService.toasts$;\n get positionClasses() {\n const pos = {\n 'top-right': 'top-0 right-0 flex-col-reverse',\n 'top-left': 'top-0 left-0 flex-col-reverse',\n 'bottom-right': 'bottom-0 right-0',\n 'bottom-left': 'bottom-0 left-0',\n 'top-center': 'top-0 left-1/2 -translate-x-1/2 flex-col-reverse',\n 'bottom-center': 'bottom-0 left-1/2 -translate-x-1/2'\n };\n return pos[this.position];\n }\n protected cn = cn;\n}\n","import { Injectable, Inject, PLATFORM_ID, Optional, Renderer2, RendererFactory2 } from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { BehaviorSubject } from 'rxjs';\nimport { TOLLE_CONFIG, TolleConfig } from './tolle-config';\n\n@Injectable({ providedIn: 'root' })\nexport class ThemeService {\n private renderer: Renderer2;\n private isDarkSubject = new BehaviorSubject<boolean>(false);\n isDark$ = this.isDarkSubject.asObservable();\n private styleId = 'tolle-dynamic-theme';\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_ID) private platformId: Object,\n @Optional() @Inject(TOLLE_CONFIG) private config: TolleConfig,\n rendererFactory: RendererFactory2\n ) {\n this.renderer = rendererFactory.createRenderer(null, null);\n this.initializeTheme();\n }\n\n private initializeTheme() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n // LOGIC: User Saved Preferences > Config Defaults > System Preference\n const savedTheme = localStorage.getItem('tolle-theme');\n const savedPrimary = localStorage.getItem('tolle-primary-color');\n const savedRadius = localStorage.getItem('tolle-radius');\n const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n\n console.log('Theme initialization:', {\n savedTheme,\n savedPrimary,\n savedRadius,\n config: this.config,\n systemPrefersDark\n });\n\n // 1. Determine Dark/Light Mode\n // Priority: Saved Theme > Config Default > System Preference\n let shouldBeDark = systemPrefersDark; // Start with system\n\n if (savedTheme) {\n // User has saved preference\n shouldBeDark = savedTheme === 'dark';\n } else if (this.config?.darkByDefault !== undefined) {\n // Use config default if no user preference\n shouldBeDark = this.config.darkByDefault;\n }\n\n // Apply theme mode\n if (shouldBeDark) {\n this.enableDarkMode(false); // Don't save, we'll save after checking all preferences\n } else {\n this.disableDarkMode(false);\n }\n\n // 2. Apply Primary Color\n // Priority: Saved Color > Config Color\n if (savedPrimary) {\n // User has saved color preference\n this.setPrimaryColor(savedPrimary, false); // Don't save again\n } else if (this.config?.primaryColor) {\n // Use config default if no user preference\n this.setPrimaryColor(this.config.primaryColor, false); // Save this as user preference\n }\n\n // 3. Apply Radius\n // Priority: Saved Radius > Config Radius\n if (savedRadius) {\n // User has saved radius preference\n this.setRadius(savedRadius, false);\n } else if (this.config?.radius) {\n // Use config default if no user preference\n this.setRadius(this.config.radius, false);\n }\n\n // Save theme mode preference if it came from config or system\n if (!savedTheme) {\n localStorage.setItem('tolle-theme', shouldBeDark ? 'dark' : 'light');\n }\n }\n /**\n * Sets the border radius for all components\n */\n setRadius(radius: string, persist = true) {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const root = this.document.documentElement;\n\n // Set the CSS variable\n this.renderer.setStyle(root, '--radius', radius);\n\n // Also update the dynamic styles to include radius calculations\n this.updateRadiusInDynamicStyles(radius);\n\n // Persist if needed\n if (persist) {\n localStorage.setItem('tolle-radius', radius);\n }\n }\n\n /**\n * Updates the radius calculations in dynamic styles\n */\n private updateRadiusInDynamicStyles(radius: string) {\n const existingStyle = this.document.getElementById(this.styleId);\n\n if (existingStyle) {\n let css = existingStyle.textContent || '';\n\n // Update or add radius calculations\n if (css.includes('--radius:')) {\n // Replace existing radius declarations\n css = css.replace(/--radius:[^;]+;/g, `--radius: ${radius};`);\n } else {\n // Add radius to the beginning of :root\n css = css.replace(/:root\\s*{/, `:root {\\n --radius: ${radius};`);\n }\n\n // Update the calculated radius values in the CSS\n const radiusCalcRegex = /calc\\(var\\(--radius[^)]+\\)/g;\n css = css.replace(radiusCalcRegex, (match) => {\n if (match.includes('- 2px')) {\n return `calc(${radius} - 2px)`;\n } else if (match.includes('- 4px')) {\n return `calc(${radius} - 4px)`;\n }\n return match;\n });\n\n existingStyle.textContent = css;\n }\n }\n\n /**\n * Generates full primary color palette (50-900) based on base color\n */\n private generatePrimaryShades(baseColor: string) {\n // Convert hex to RGB\n const rgb = this.hexToRgb(baseColor);\n const rgbString = rgb ? `${rgb.r} ${rgb.g} ${rgb.b}` : '37 99 235';\n\n // Create lighter ring colors in RGB\n const ringLight = this.lightenColor(baseColor, 40);\n const ringLightRgb = this.hexToRgb(ringLight);\n const ringLightRgbString = ringLightRgb ? `${ringLightRgb.r} ${ringLightRgb.g} ${ringLightRgb.b}` : '96 165 250';\n\n const ringDark = this.lightenColor(baseColor, 20);\n const ringDarkRgb = this.hexToRgb(ringDark);\n const ringDarkRgbString = ringDarkRgb ? `${ringDarkRgb.r} ${ringDarkRgb.g} ${ringDarkRgb.b}` : '147 197 253';\n\n // Get current radius or use default\n const root = this.document.documentElement;\n const currentRadius = getComputedStyle(root).getPropertyValue('--radius').trim() || '0.5rem';\n\n const css = `\n /* Override primary colors - this needs to come AFTER your main CSS */\n :root {\n /* Primary in RGB format for Tailwind opacity support */\n --primary: ${rgbString};\n --primary-foreground: ${this.getContrastColorRgb(baseColor)};\n\n /* Radius */\n --radius: ${currentRadius};\n\n /* Primary shades for light mode */\n --primary-50: ${this.hexToRgbString(this.lightenColor(baseColor, 90))};\n --primary-100: ${this.hexToRgbString(this.lightenColor(baseColor, 80))};\n --primary-200: ${this.hexToRgbString(this.lightenColor(baseColor, 60))};\n --primary-300: ${this.hexToRgbString(this.lightenColor(baseColor, 40))};\n --primary-400: ${this.hexToRgbString(this.lightenColor(baseColor, 20))};\n --primary-500: ${rgbString};\n --primary-600: ${this.hexToRgbString(this.darkenColor(baseColor, 20))};\n --primary-700: ${this.hexToRgbString(this.darkenColor(baseColor, 40))};\n --primary-800: ${this.hexToRgbString(this.darkenColor(baseColor, 60))};\n --primary-900: ${this.hexToRgbString(this.darkenColor(baseColor, 80))};\n\n /* Update ring color to be lighter */\n --ring: ${ringLightRgbString};\n }\n\n .dark {\n /* For dark mode, we keep the primary color but adjust shades */\n --primary: ${rgbString};\n --primary-foreground: ${this.getContrastColorRgb(baseColor)};\n\n /* Dark mode shades */\n --primary-50: ${this.hexToRgbString(this.darkenColor(baseColor, 85))};\n --primary-100: ${this.hexToRgbString(this.darkenColor(baseColor, 75))};\n --primary-200: ${this.hexToRgbString(this.darkenColor(baseColor, 65))};\n --primary-300: ${this.hexToRgbString(this.darkenColor(baseColor, 55))};\n --primary-400: ${this.hexToRgbString(this.darkenColor(baseColor, 45))};\n --primary-500: ${rgbString};\n --primary-600: ${this.hexToRgbString(this.lightenColor(baseColor, 20))};\n --primary-700: ${this.hexToRgbString(this.lightenColor(baseColor, 35))};\n --primary-800: ${this.hexToRgbString(this.lightenColor(baseColor, 50))};\n --primary-900: ${this.hexToRgbString(this.lightenColor(baseColor, 65))};\n\n /* Update ring color for dark mode - lighter variant */\n --ring: ${ringDarkRgbString};\n }\n `;\n\n this.injectDynamicStyles(css);\n }\n\n /**\n * Convert hex color to RGB object\n */\n private hexToRgb(hex: string): { r: number, g: number, b: number } | null {\n // Remove # if present\n const cleanedHex = hex.replace('#', '');\n\n let r = 0, g = 0, b = 0;\n\n if (cleanedHex.length === 3) {\n r = parseInt(cleanedHex[0] + cleanedHex[0], 16);\n g = parseInt(cleanedHex[1] + cleanedHex[1], 16);\n b = parseInt(cleanedHex[2] + cleanedHex[2], 16);\n return { r, g, b };\n }\n\n if (cleanedHex.length === 6) {\n r = parseInt(cleanedHex.substring(0, 2), 16);\n g = parseInt(cleanedHex.substring(2, 4), 16);\n b = parseInt(cleanedHex.substring(4, 6), 16);\n return { r, g, b };\n }\n\n return null;\n }\n\n /**\n * Convert hex to RGB string format for CSS (space-separated)\n */\n private hexToRgbString(hexColor: string): string {\n const rgb = this.hexToRgb(hexColor);\n return rgb ? `${rgb.r} ${rgb.g} ${rgb.b}` : '37 99 235';\n }\n\n /**\n * Get contrast color in RGB format\n */\n private getContrastColorRgb(hexColor: string): string {\n const contrast = this.getContrastColor(hexColor);\n const rgb = this.hexToRgb(contrast);\n return rgb ? `${rgb.r} ${rgb.g} ${rgb.b}` : '255 255 255';\n }\n\n /**\n * Lighten a hex color by a percentage\n */\n private lightenColor(color: string, percent: number): string {\n const rgb = this.hexToRgb(color);\n if (!rgb) return color;\n\n // Lighten by percentage\n const r = Math.min(255, Math.floor(rgb.r + (255 - rgb.r) * (percent / 100)));\n const g = Math.min(255, Math.floor(rgb.g + (255 - rgb.g) * (percent / 100)));\n const b = Math.min(255, Math.floor(rgb.b + (255 - rgb.b) * (percent / 100)));\n\n // Convert back to hex\n return `#${((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)}`;\n }\n\n /**\n * Darken a hex color by a percentage\n */\n private darkenColor(color: string, percent: number): string {\n const rgb = this.hexToRgb(color);\n if (!rgb) return color;\n\n const factor = 1 - (percent / 100);\n const r = Math.max(0, Math.floor(rgb.r * factor));\n const g = Math.max(0, Math.floor(rgb.g * factor));\n const b = Math.max(0, Math.floor(rgb.b * factor));\n\n return `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;\n }\n\n /**\n * Calculate contrast color (black or white) based on background color\n */\n private getContrastColor(hexColor: string): string {\n const rgb = this.hexToRgb(hexColor);\n if (!rgb) return '#ffffff';\n\n // Calculate relative luminance\n const luminance = (0.299 * rgb.r + 0.587 * rgb.g + 0.114 * rgb.b) / 255;\n\n // Return black for light colors, white for dark colors\n return luminance > 0.5 ? '#000000' : '#ffffff';\n }\n\n private injectDynamicStyles(css: string) {\n if (!isPlatformBrowser(this.platformId)) return;\n\n const existingStyle = this.document.getElementById(this.styleId);\n if (existingStyle) {\n existingStyle.remove();\n }\n\n const styleElement = this.document.createElement('style');\n styleElement.id = this.styleId;\n styleElement.textContent = css;\n this.renderer.appendChild(this.document.head, styleElement);\n }\n\n toggleTheme() {\n const isCurrentlyDark = this.document.documentElement.classList.contains('dark');\n isCurrentlyDark ? this.disableDarkMode() : this.enableDarkMode();\n }\n\n private enableDarkMode(saveToStorage = true) {\n this.renderer.addClass(this.document.documentElement, 'dark');\n if (saveToStorage) {\n localStorage.setItem('tolle-theme', 'dark');\n }\n this.isDarkSubject.next(true);\n }\n\n private disableDarkMode(saveToStorage = true) {\n this.renderer.removeClass(this.document.documentElement, 'dark');\n if (saveToStorage) {\n localStorage.setItem('tolle-theme', 'light');\n }\n this.isDarkSubject.next(false);\n }\n setPrimaryColor(color: string, persist = true) {\n if (!isPlatformBrowser(this.platformId)) return;\n\n this.generatePrimaryShades(color);\n\n // Also set inline for immediate update\n const rgb = this.hexToRgb(color);\n if (rgb) {\n this.renderer.setStyle(\n this.document.documentElement,\n '--primary',\n `${rgb.r} ${rgb.g} ${rgb.b}`\n );\n }\n\n if (persist) {\n localStorage.setItem('tolle-primary-color', color);\n }\n }\n\n get currentTheme(): 'dark' | 'light' {\n return this.isDarkSubject.value ? 'dark' : 'light';\n }\n\n get primaryColor(): string | null {\n if (!isPlatformBrowser(this.platformId)) return null;\n\n const root = this.document.documentElement;\n const cssValue = getComputedStyle(root).getPropertyValue('--primary').trim();\n\n if (cssValue && cssValue !== '') {\n // Convert RGB string back to hex for external use\n const rgbParts = cssValue.split(' ').map(Number);\n if (rgbParts.length === 3) {\n return `#${rgbParts[0].toString(16).padStart(2, '0')}${rgbParts[1].toString(16).padStart(2, '0')}${rgbParts[2].toString(16).padStart(2, '0')}`;\n }\n }\n\n return localStorage.getItem('tolle-primary-color');\n }\n\n /**\n * Reset to config defaults (clears user preferences)\n */\n resetToConfigDefaults() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n // Clear user preferences\n localStorage.removeItem('tolle-theme');\n localStorage.removeItem('tolle-primary-color');\n localStorage.removeItem('tolle-radius');\n\n // Re-initialize with config defaults\n this.initializeTheme();\n }\n\n /**\n * Get current user preferences\n */\n getUserPreferences() {\n if (!isPlatformBrowser(this.platformId)) return null;\n\n return {\n theme: localStorage.getItem('tolle-theme'),\n primaryColor: localStorage.getItem('tolle-primary-color'),\n radius: localStorage.getItem('tolle-radius')\n };\n }\n\n /**\n * Clear all user preferences\n */\n clearUserPreferences() {\n if (!isPlatformBrowser(this.platformId)) return;\n\n localStorage.removeItem('tolle-theme');\n localStorage.removeItem('tolle-primary-color');\n localStorage.removeItem('tolle-radius');\n\n // Reset to system defaults (not config defaults)\n const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n if (systemPrefersDark) {\n this.enableDarkMode(false);\n } else {\n this.disableDarkMode(false);\n }\n\n // Remove CSS variables\n const root = this.document.documentElement;\n this.renderer.removeStyle(root, '--primary');\n this.renderer.removeStyle(root, '--radius');\n\n // Clear dynamic styles\n const existingStyle = this.document.getElementById(this.styleId);\n if (existingStyle) {\n existingStyle.remove();\n }\n }\n}\n","import { APP_INITIALIZER, InjectionToken, Provider } from '@angular/core';\nimport { ThemeService } from './theme.service';\n\nexport interface TolleConfig {\n primaryColor?: string;\n radius?: string;\n defaultToastDuration?: number;\n darkByDefault?: boolean;\n}\n\nexport const TOLLE_CONFIG = new InjectionToken<TolleConfig>('TolleConfig');\n\nexport function provideTolleConfig(config: TolleConfig): Provider[] {\n return [\n { provide: TOLLE_CONFIG, useValue: config },\n {\n provide: APP_INITIALIZER,\n useFactory: (_: ThemeService) => () => {\n // Theme is already initialized in constructor\n // This factory ensures themeService is instantiated during bootstrap\n },\n deps: [ThemeService],\n multi: true,\n },\n ];\n}\n","import { Component, Input, ContentChildren, QueryList, AfterContentInit, ElementRef, ViewChild, HostListener } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { computePosition, flip, shift, offset, autoUpdate, size } from '@floating-ui/dom';\nimport { SelectItemComponent } from './select-item.component';\nimport { SelectService } from './select.service';\nimport { cn } from './utils/cn';\nimport { InputComponent } from './input.component';\nimport { BadgeComponent } from './badge.component';\n\n@Component({\n selector: 'tolle-multi-select',\n standalone: true,\n imports: [CommonModule, FormsModule, BadgeComponent, InputComponent],\n providers: [\n SelectService,\n { provide: NG_VALUE_ACCESSOR, useExisting: MultiSelectComponent, multi: true }\n ],\n template: `\n <div [class]=\"cn('relative w-full', 'size-' + size)\" #container>\n <button\n #trigger\n type=\"button\"\n (click)=\"toggle()\"\n [disabled]=\"disabled\"\n [class]=\"computedTriggerClass\">\n\n <div class=\"flex flex-wrap gap-1 items-center max-w-[95%]\">\n <ng-container *ngIf=\"value?.length; else placeholderTpl\">\n <tolle-badge *ngFor=\"let item of displayItems\" size=\"xs\" variant=\"secondary\" [removable]=\"true\" (onRemove)=\"removeValue($event, item.value)\">\n {{ item.label }}\n </tolle-badge>\n <span *ngIf=\"exceedsDisplayLimit\" class=\"text-xs text-muted-foreground px-1\">\n +{{ value.length - maxDisplayItems }} more\n </span>\n <span *ngIf=\"maxSelections && value.length >= maxSelections\" class=\"text-xs text-muted-foreground px-1\">\n (Max reached)\n </span>\n </ng-container>\n <ng-template #placeholderTpl><span class=\"text-muted-foreground\">{{ placeholder }}</span></ng-template>\n </div>\n <i [class]=\"cn('ri-arrow-down-s-line text-muted-foreground ml-2 transition-transform duration-200', isOpen ? 'rotate-180' : '')\"></i>\n </button>\n\n <div #popover *ngIf=\"isOpen\"\n class=\"fixed bg-popover z-[999] rounded-md border border-border shadow-md overflow-hidden\"\n style=\"visibility: hidden; top: 0; left: 0;\">\n\n <div class=\"p-2 border-b border-border space-y-2 bg-popover\">\n <div class=\"flex items-center justify-between px-1 text-xs\">\n <span class=\"text-muted-foreground\">\n {{ value.length }} selected\n <span *ngIf=\"maxSelections\">/ {{ maxSelections }} max</span>\n </span>\n <span *ngIf=\"maxSelections && value.length >= maxSelections\" class=\"text-destructive text-xs font-medium\">\n Maximum reached\n </span>\n </div>\n\n <tolle-input *ngIf=\"searchable\" size=\"xs\" placeholder=\"Search...\" [(ngModel)]=\"searchQuery\" (ngModelChange)=\"onSearchChange($event)\">\n <i prefix class=\"ri-search-line\"></i>\n </tolle-input>\n\n <div class=\"flex items-center justify-between px-1\">\n <button type=\"button\"\n (click)=\"selectAll()\"\n [disabled]=\"maxSelections && selectableItems.length > maxSelections\"\n [class]=\"cn(\n 'text-[10px] font-bold uppercase transition-colors',\n maxSelections && selectableItems.length > maxSelections\n ? 'text-muted-foreground cursor-not-allowed'\n : 'text-primary hover:underline'\n )\">\n Select All\n </button>\n <button type=\"button\" (click)=\"clearAll()\" class=\"text-[10px] font-bold uppercase text-muted-foreground hover:underline\">\n Clear\n </button>\n </div>\n </div>\n\n <div class=\"p-1 max-h-60 overflow-y-auto\">\n <ng-content></ng-content>\n <div *ngIf=\"noResults\" class=\"py-4 text-center text-xs text-muted-foreground\">\n No results found for \"{{searchQuery}}\"\n </div>\n <div *ngIf=\"maxSelections && value.length >= maxSelections\"\n class=\"p-2 text-center border-t border-border bg-muted/20\">\n <span class=\"text-xs text-destructive\">\n <i class=\"ri-alert-line mr-1\"></i>\n Maximum selection limit reached ({{maxSelections}})\n </span>\n </div>\n </div>\n </div>\n </div>\n `\n})\nexport class MultiSelectComponent implements ControlValueAccessor, AfterContentInit {\n @Input() placeholder = 'Select options...';\n @Input() size: 'xs' | 'sm' | 'default' | 'lg' = 'default';\n @Input() searchable = false;\n @Input() disabled = false;\n @Input() class = '';\n @Input() maxSelections?: number;\n @Input() maxDisplayItems = 3;\n @Input() error = false; // Added to support error styling\n\n @ViewChild('trigger') trigger!: ElementRef;\n @ViewChild('popover') popover!: ElementRef;\n @ContentChildren(SelectItemComponent, { descendants: true }) items!: QueryList<SelectItemComponent>;\n\n value: any[] = [];\n selectedItems: {label: string, value: any}[] = [];\n isOpen = false;\n searchQuery = '';\n noResults = false;\n private cleanup?: () => void;\n\n constructor(private selectService: SelectService) {\n this.selectService.selectedValue$.subscribe(val => {\n if (val !== undefined && this.isOpen) this.toggleValue(val);\n });\n }\n\n // NEW: Matches InputComponent styles exactly\n get computedTriggerClass() {\n return cn(\n // Base styles\n 'flex min-h-10 w-full items-center justify-between rounded-md border transition-all duration-200 h-auto',\n 'bg-background text-sm',\n\n // Border and shadow\n 'border-input shadow-sm',\n\n // Padding based on size (aligned with InputComponent logic)\n this.size === 'xs' && 'px-2 py-1',\n this.size === 'sm' && 'px-3 py-1.5',\n this.size === 'default' && 'px-3 py-2',\n this.size === 'lg' && 'px-4 py-2',\n\n // Focus state - ZARDUI STYLE (Soft ring, no offset)\n !this.disabled && [\n 'focus:outline-none',\n 'focus:ring-4',\n 'focus:ring-ring/30',\n 'focus:ring-offset-0',\n 'focus:shadow-none',\n 'focus:border-primary/80' // Darkens border on focus\n ],\n\n // Hover state\n !this.disabled && 'hover:border-accent',\n\n // Error state\n this.error && [\n 'border-destructive',\n !this.disabled && [\n 'focus:border-destructive/80',\n 'focus:ring-destructive/30'\n ]\n ],\n\n // Disabled state\n this.disabled && [\n 'cursor-not-allowed opacity-50',\n 'border-opacity-50'\n ],\n\n this.class\n );\n }\n\n ngAfterContentInit() {\n this.syncItems();\n this.items.changes.subscribe(() => this.syncItems());\n }\n\n get displayItems(): {label: string, value: any}[] {\n return this.selectedItems.slice(0, this.maxDisplayItems);\n }\n\n get exceedsDisplayLimit(): boolean {\n return this.value.length > this.maxDisplayItems;\n }\n\n get selectableItems(): SelectItemComponent[] {\n return this.items ? this.items.filter(item => !item.disabled) : [];\n }\n\n get availableSelections(): number {\n if (!this.maxSelections) return Infinity;\n return Math.max(0, this.maxSelections - this.value.length);\n }\n\n toggle() {\n if (this.disabled) return;\n this.isOpen ? this.close() : this.open();\n }\n\n open() {\n this.isOpen = true;\n setTimeout(() => this.updatePosition());\n }\n\n close() {\n this.isOpen = false;\n this.searchQuery = '';\n this.onSearchChange('');\n if (this.cleanup) this.cleanup();\n }\n\n private updatePosition() {\n if (!this.trigger || !this.popover) return;\n\n this.cleanup = autoUpdate(this.trigger.nativeElement, this.popover.nativeElement, () => {\n computePosition(this.trigger.nativeElement, this.popover.nativeElement, {\n strategy: 'fixed',\n placement: 'bottom-start',\n middleware: [\n offset(4),\n flip(),\n shift({ padding: 8 }),\n size({\n apply({ rects, elements, availableHeight }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n maxHeight: `${availableHeight}px`\n });\n },\n }),\n ],\n }).then(({ x, y, strategy }) => {\n Object.assign(this.popover.nativeElement.style, {\n position: strategy,\n left: `${x}px`,\n top: `${y}px`,\n visibility: 'visible',\n });\n });\n });\n }\n\n toggleValue(val: any) {\n const index = this.value.indexOf(val);\n if (index > -1) {\n this.value.splice(index, 1);\n } else {\n if (this.maxSelections && this.value.length >= this.maxSelections) return;\n this.value.push(val);\n }\n this.syncItems();\n this.onChange([...this.value]);\n }\n\n selectAll() {\n if (!this.items) return;\n let itemsToSelect: any[] = [];\n if (this.maxSelections) {\n const availableItems = this.items\n .filter(item => !item.disabled && !this.value.includes(item.value))\n .slice(0, this.availableSelections)\n .map(item => item.value);\n itemsToSelect = [...this.value, ...availableItems];\n } else {\n itemsToSelect = this.items.filter(item => !item.disabled).map(item => item.value);\n }\n this.value = itemsToSelect;\n this.syncItems();\n this.onChange([...this.value]);\n }\n\n clearAll() {\n this.value = [];\n this.syncItems();\n this.onChange([]);\n }\n\n removeValue(event: MouseEvent, val: any) {\n event.stopPropagation();\n this.toggleValue(val);\n }\n\n private syncItems() {\n if (!this.items) return;\n this.selectedItems = [];\n this.items.forEach(item => {\n item.selected = this.value.includes(item.value);\n if (item.selected) {\n this.selectedItems.push({ label: item.getLabel(), value: item.value });\n }\n if (this.maxSelections && this.value.length >= this.maxSelections) {\n item.disabled = !this.value.includes(item.value);\n } else if (item.disabled) {\n item.disabled = false;\n }\n });\n }\n\n onSearchChange(q: string) {\n const filter = (q || '').toLowerCase();\n let visibleCount = 0;\n this.items.forEach(item => {\n const isVisible = item.getLabel().toLowerCase().includes(filter);\n item.hidden = !isVisible;\n if (isVisible) visibleCount++;\n });\n this.noResults = visibleCount === 0 && filter !== '';\n }\n\n @HostListener('document:mousedown', ['$event'])\n onClickOutside(event: MouseEvent) {\n if (this.isOpen && !this.trigger.nativeElement.contains(event.target) && !this.popover?.nativeElement.contains(event.target)) {\n this.close();\n }\n }\n\n // ControlValueAccessor\n onChange: any = () => {};\n onTouched: any = () => {};\n writeValue(v: any[]): void {\n this.value = Array.isArray(v) ? v : [];\n this.syncItems();\n }\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled = isDisabled; }\n\n protected cn = cn;\n}\n","import {\n Component, Input, OnInit, forwardRef, Output, EventEmitter\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport {\n addMonths, subMonths, startOfMonth, endOfMonth,\n startOfWeek, endOfWeek, eachDayOfInterval, isSameMonth,\n isSameDay, isToday, setMonth, setYear, addYears, subYears,\n isBefore, startOfDay, format\n} from 'date-fns';\nimport { cn } from './utils/cn';\n\nexport type CalendarMode = 'date' | 'month' | 'year';\n\n@Component({\n selector: 'tolle-calendar',\n standalone: true,\n imports: [CommonModule, FormsModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => CalendarComponent),\n multi: true\n }\n ],\n template: `\n <div [class]=\"cn('p-3 border rounded-md bg-background text-popover-foreground shadow-sm inline-block min-w-fit', class)\">\n <!-- Header with Navigation -->\n <div class=\"flex items-center justify-between pt-1 pb-4 gap-2\">\n <!-- View Selector -->\n <div class=\"flex items-center gap-1\">\n <button *ngIf=\"mode !== 'year'\"\n type=\"button\"\n (click)=\"setView('month')\"\n [class]=\"cn(\n 'text-sm font-semibold px-2 py-1 rounded transition-colors',\n currentView === 'month' ? 'bg-secondary text-secondary-foreground' : 'hover:bg-accent hover:text-accent-foreground'\n )\">\n {{ formatMonthYear(viewDate, 'month') }}\n </button>\n\n <button\n type=\"button\"\n (click)=\"setView('year')\"\n [class]=\"cn(\n 'text-sm font-semibold px-2 py-1 rounded transition-colors',\n currentView === 'year' ? 'bg-secondary text-secondary-foreground' : 'hover:bg-accent hover:text-accent-foreground'\n )\">\n {{ formatMonthYear(viewDate, 'year') }}\n </button>\n </div>\n\n <!-- Navigation Buttons -->\n <div class=\"flex items-center space-x-1\">\n <button type=\"button\" (click)=\"prev()\" [class]=\"navBtnClass\">\n <i class=\"ri-arrow-left-s-line text-lg\"></i>\n </button>\n <button type=\"button\" (click)=\"next()\" [class]=\"navBtnClass\">\n <i class=\"ri-arrow-right-s-line text-lg\"></i>\n </button>\n </div>\n </div>\n\n <!-- DATE MODE -->\n <div *ngIf=\"currentView === 'date' && mode === 'date'\" class=\"space-y-2 animate-in fade-in zoom-in-95 duration-200\">\n <div class=\"grid grid-cols-7 gap-1 w-full\">\n <span *ngFor=\"let day of weekDays\" class=\"text-[0.8rem] text-muted-foreground font-normal text-center w-9\">\n {{ day }}\n </span>\n </div>\n <div class=\"grid grid-cols-7 gap-1 w-full\">\n <button\n *ngFor=\"let date of daysInMonth\"\n type=\"button\"\n (click)=\"selectDate(date)\"\n [disabled]=\"isDateDisabled(date)\"\n [class]=\"getDayClass(date)\"\n >\n {{ formatDate(date, 'day') }}\n </button>\n </div>\n </div>\n\n <!-- MONTH SELECTOR (for date mode and month mode) -->\n <div *ngIf=\"(currentView === 'month')\"\n class=\"grid grid-cols-3 gap-2 w-64 animate-in fade-in zoom-in-95 duration-200\">\n <button\n *ngFor=\"let month of months; let i = index\"\n type=\"button\"\n (click)=\"selectMonth(i)\"\n [class]=\"getMonthClass(i)\"\n >\n {{ month }}\n </button>\n </div>\n\n <!-- YEAR SELECTOR (for date mode and year mode) -->\n <div *ngIf=\"(currentView === 'year') \"\n class=\"grid grid-cols-4 gap-2 w-64 animate-in fade-in zoom-in-95 duration-200\">\n <button\n *ngFor=\"let year of years\"\n type=\"button\"\n (click)=\"selectYear(year)\"\n [class]=\"getYearClass(year)\"\n >\n {{ year }}\n </button>\n </div>\n\n <!-- Quick Actions -->\n <div *ngIf=\"showQuickActions\" class=\"border-t pt-3 mt-3\">\n <div class=\"flex items-center justify-between gap-2\">\n <button\n type=\"button\"\n (click)=\"selectToday()\"\n [class]=\"quickActionBtnClass\"\n [disabled]=\"isTodayDisabled()\"\n >\n Today\n </button>\n <button\n type=\"button\"\n (click)=\"clear()\"\n [class]=\"quickActionBtnClass\"\n >\n Clear\n </button>\n </div>\n </div>\n </div>\n `\n})\nexport class CalendarComponent implements OnInit, ControlValueAccessor {\n @Input() class = '';\n @Input() mode: CalendarMode = 'date';\n @Input() disablePastDates = false;\n @Input() showQuickActions = true;\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n @Input() formatMonthFn?: (date: Date) => string;\n @Input() formatYearFn?: (date: Date) => string;\n @Input() formatDateFn?: (date: Date) => string;\n\n @Output() dateSelect = new EventEmitter<Date | null>();\n\n currentView: 'date' | 'month' | 'year' = 'date';\n viewDate: Date = new Date();\n selectedDate: Date | null = null;\n\n weekDays = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n daysInMonth: Date[] = [];\n months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n years: number[] = [];\n yearRangeStart: number;\n\n navBtnClass = cn('h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 border border-input rounded-md flex items-center justify-center hover:bg-accent hover:text-accent-foreground transition-all');\n quickActionBtnClass = cn('px-3 py-1.5 text-sm rounded hover:bg-accent text-muted-foreground hover:text-foreground transition-colors');\n\n onTouched: () => void = () => {};\n onChange: (value: any) => void = () => {};\n\n protected cn = cn;\n\n constructor() {\n this.yearRangeStart = new Date().getFullYear() - 6;\n }\n\n ngOnInit() {\n // Initialize based on mode\n if (this.mode === 'month') {\n this.currentView = 'month';\n } else if (this.mode === 'year') {\n this.currentView = 'year';\n }\n\n this.generateDays();\n this.generateYears();\n }\n\n // Format helpers\n formatMonthYear(date: Date, type: 'month' | 'year'): string {\n if (type === 'month' && this.formatMonthFn) {\n return this.formatMonthFn(date);\n }\n if (type === 'year' && this.formatYearFn) {\n return this.formatYearFn(date);\n }\n return type === 'month' ? format(date, 'MMMM') : format(date, 'yyyy');\n }\n\n formatDate(date: Date, type: 'day' | 'month' | 'year'): string {\n if (type === 'day' && this.formatDateFn) {\n return this.formatDateFn(date);\n }\n return format(date, type === 'day' ? 'd' : type === 'month' ? 'MMM' : 'yyyy');\n }\n\n generateDays() {\n if (this.mode !== 'date') return;\n\n const start = startOfWeek(startOfMonth(this.viewDate));\n const end = endOfWeek(endOfMonth(this.viewDate));\n this.daysInMonth = eachDayOfInterval({ start, end });\n }\n\n generateYears() {\n const currentYear = this.viewDate.getFullYear();\n\n if (this.mode === 'year') {\n // For year picker, show a 12-year grid\n this.years = Array.from({ length: 12 }, (_, i) => this.yearRangeStart + i);\n } else {\n // For date mode year selector, show 16 years centered on current\n this.years = Array.from({ length: 16 }, (_, i) => currentYear - 6 + i);\n }\n }\n\n setView(view: 'date' | 'month' | 'year') {\n this.currentView = view;\n if (view === 'year') {\n this.generateYears();\n }\n }\n\n prev() {\n if (this.mode === 'date') {\n if (this.currentView === 'date') {\n this.viewDate = subMonths(this.viewDate, 1);\n this.generateDays();\n } else if (this.currentView === 'year') {\n this.viewDate = subYears(this.viewDate, 16);\n this.generateYears();\n } else if (this.currentView === 'month') {\n this.viewDate = subYears(this.viewDate, 1);\n }\n } else if (this.mode === 'month') {\n this.viewDate = subYears(this.viewDate, 1);\n } else if (this.mode === 'year') {\n this.yearRangeStart -= 12;\n this.generateYears();\n } else if (this.mode === 'month-year') {\n if (this.currentView === 'month') {\n this.viewDate = subYears(this.viewDate, 1);\n } else {\n this.yearRangeStart -= 12;\n this.generateYears();\n }\n }\n }\n\n next() {\n if (this.mode === 'date') {\n if (this.currentView === 'date') {\n this.viewDate = addMonths(this.viewDate, 1);\n this.generateDays();\n } else if (this.currentView === 'year') {\n this.viewDate = addYears(this.viewDate, 16);\n this.generateYears();\n } else if (this.currentView === 'month') {\n this.viewDate = addYears(this.viewDate, 1);\n }\n } else if (this.mode === 'month') {\n this.viewDate = addYears(this.viewDate, 1);\n } else if (this.mode === 'year') {\n this.yearRangeStart += 12;\n this.generateYears();\n } else if (this.mode === 'month-year') {\n if (this.currentView === 'month') {\n this.viewDate = addYears(this.viewDate, 1);\n } else {\n this.yearRangeStart += 12;\n this.generateYears();\n }\n }\n }\n\n prevYears() {\n this.yearRangeStart -= 12;\n this.generateYears();\n }\n\n nextYears() {\n this.yearRangeStart += 12;\n this.generateYears();\n }\n\n selectDate(date: Date) {\n if (this.isDateDisabled(date)) return;\n\n this.selectedDate = date;\n this.onChange(date);\n this.onTouched();\n this.dateSelect.emit(date);\n }\n\n selectMonth(monthIndex: number) {\n if (this.mode === 'date') {\n this.viewDate = setMonth(this.viewDate, monthIndex);\n this.currentView = 'date';\n this.generateDays();\n } else if (this.mode === 'month') {\n this.viewDate = setMonth(this.viewDate, monthIndex);\n this.selectedDate = this.viewDate;\n this.onChange( this.viewDate);\n this.onTouched();\n this.dateSelect.emit( this.viewDate);\n }\n }\n\n selectYear(year: number) {\n if (this.mode === 'date') {\n this.viewDate = setYear(this.viewDate, year);\n this.currentView = 'date';\n this.generateDays();\n } else if (this.mode === 'year' || this.mode === 'month') {\n this.viewDate = setYear(this.viewDate, year);\n this.selectedDate = this.viewDate;\n this.onChange( this.viewDate);\n this.onTouched();\n this.dateSelect.emit( this.viewDate);\n }\n }\n\n getDayClass(date: Date) {\n const isSelected = this.selectedDate && isSameDay(date, this.selectedDate);\n const isTodayDate = isToday(date);\n const isOutside = !isSameMonth(date, this.viewDate);\n const isDisabled = this.isDateDisabled(date);\n\n return cn(\n 'h-9 w-9 p-0 font-normal text-sm rounded-md transition-all flex items-center justify-center',\n !isSelected && !isDisabled && 'hover:bg-accent hover:text-accent-foreground',\n isSelected && 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground',\n !isSelected && isTodayDate && 'bg-accent text-accent-foreground',\n (isOutside || isDisabled) && 'text-muted-foreground opacity-50',\n isDisabled && 'cursor-not-allowed'\n );\n }\n\n getMonthClass(monthIndex: number) {\n const isSelected = this.selectedDate &&\n this.selectedDate.getMonth() === monthIndex &&\n this.selectedDate.getFullYear() === this.viewDate.getFullYear();\n const isCurrent = new Date().getMonth() === monthIndex &&\n new Date().getFullYear() === this.viewDate.getFullYear();\n\n return cn(\n 'text-sm py-2.5 rounded-md transition-colors',\n isSelected ? 'bg-primary text-primary-foreground hover:bg-primary' :\n isCurrent ? 'border border-primary/30 text-primary' :\n 'hover:bg-accent hover:text-accent-foreground'\n );\n }\n\n getYearClass(year: number) {\n const isSelected = this.selectedDate &&\n this.selectedDate.getFullYear() === year;\n const isCurrent = new Date().getFullYear() === year;\n\n return cn(\n 'text-sm py-2 rounded-md transition-colors',\n isSelected ? 'bg-primary text-primary-foreground hover:bg-primary' :\n isCurrent ? 'border border-primary/30 text-primary' :\n 'hover:bg-accent hover:text-accent-foreground'\n );\n }\n\n isDateDisabled(date: Date): boolean {\n if (this.disablePastDates && isBefore(date, startOfDay(new Date()))) {\n return true;\n }\n if (this.minDate && isBefore(date, this.minDate)) {\n return true;\n }\n return !!(this.maxDate && isBefore(this.maxDate, date));\n\n }\n\n isTodayDisabled(): boolean {\n return this.isDateDisabled(new Date());\n }\n\n selectToday() {\n if (!this.isTodayDisabled()) {\n this.selectDate(new Date());\n }\n }\n\n clear() {\n this.selectedDate = null;\n this.onChange(null);\n this.onTouched();\n this.dateSelect.emit(null);\n }\n\n // CVA Implementation\n writeValue(obj: any): void {\n if (obj) {\n const date = new Date(obj);\n if (!isNaN(date.getTime())) {\n this.selectedDate = date;\n this.viewDate = date;\n this.generateDays();\n this.generateYears();\n }\n }\n }\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n}\n","import {\n Component, Input, forwardRef, ElementRef, ViewChild,\n AfterContentChecked, ChangeDetectorRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-masked-input',\n standalone: true,\n imports: [CommonModule, FormsModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MaskedInputComponent),\n multi: true\n }\n ],\n template: `\n <div class=\"flex flex-col gap-1.5 w-full\">\n <label\n *ngIf=\"label\"\n [for]=\"id\"\n [class]=\"computedLabelClass\"\n >\n {{ label }}\n </label>\n\n <div\n [class]=\"computedContainerClass\"\n (click)=\"focusInput()\"\n >\n <!-- Prefix Icon -->\n <div class=\"flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200\">\n <ng-content select=\"[prefix]\"></ng-content>\n </div>\n\n <input\n #inputEl\n [id]=\"id\"\n [type]=\"type\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [value]=\"displayValue\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [class]=\"computedInputClass\"\n [attr.aria-invalid]=\"error\"\n [attr.aria-describedby]=\"error && errorMessage ? id + '-error' : null\"\n />\n\n <!-- Suffix Icon -->\n <div class=\"flex items-center text-muted-foreground group-focus-within:text-primary transition-colors duration-200\">\n <ng-content select=\"[suffix]\"></ng-content>\n </div>\n </div>\n\n <ng-container *ngIf=\"!disabled\">\n <p\n *ngIf=\"hint && !error\"\n class=\"text-xs text-muted-foreground px-1 transition-opacity duration-200\"\n [class.opacity-0]=\"isFocused && hideHintOnFocus\"\n >\n {{ hint }}\n </p>\n <p\n *ngIf=\"error && errorMessage\"\n [id]=\"id + '-error'\"\n class=\"text-xs text-destructive px-1\"\n >\n {{ errorMessage }}\n </p>\n </ng-container>\n </div>\n `\n})\nexport class MaskedInputComponent implements ControlValueAccessor, AfterContentChecked {\n @Input() id: string = `masked-input-${Math.random().toString(36).substr(2, 9)}`;\n @Input() label: string = '';\n @Input() hint: string = '';\n @Input() errorMessage: string = '';\n @Input() mask: string = '';\n @Input() placeholder = '';\n @Input() type = 'text';\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() class = '';\n @Input() containerClass: string = '';\n @Input() error: boolean = false;\n @Input() size: 'xs' | 'sm' | 'default' | 'lg' = 'default';\n @Input() returnRaw = false;\n @Input() hideHintOnFocus: boolean = true;\n\n @ViewChild('inputEl', { static: true }) inputEl!: ElementRef<HTMLInputElement>;\n\n hasPrefix = false;\n hasSuffix = false;\n displayValue = '';\n isFocused: boolean = false;\n\n private tokens: { [key: string]: RegExp } = {\n '0': /\\d/, '9': /\\d/, 'a': /[a-z]/i, 'A': /[a-z]/i, '*': /[a-z0-9]/i\n };\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private el: ElementRef, private cdr: ChangeDetectorRef) {}\n\n ngAfterContentChecked() {\n const prefix = this.el.nativeElement.querySelector('[prefix]');\n const suffix = this.el.nativeElement.querySelector('[suffix]');\n\n if (this.hasPrefix !== !!prefix || this.hasSuffix !== !!suffix) {\n this.hasPrefix = !!prefix;\n this.hasSuffix = !!suffix;\n this.cdr.detectChanges();\n }\n }\n\n get computedLabelClass() {\n return cn(\n \"text-sm font-medium text-foreground leading-none transition-opacity duration-200\",\n this.disabled && \"opacity-50\"\n );\n }\n\n get computedContainerClass() {\n return cn(\n // Base styles\n \"group relative flex items-center w-full rounded-md border transition-all duration-200\",\n \"bg-background\",\n\n // Border and shadow\n \"border-input shadow-sm\",\n\n // Sizing\n this.size === 'xs' && \"h-8 px-2 gap-1.5 text-xs\",\n this.size === 'sm' && \"h-9 px-3 gap-2 text-sm\",\n this.size === 'default' && \"h-10 px-3 gap-2 text-sm\",\n this.size === 'lg' && \"h-11 px-4 gap-3 text-base\",\n\n // Focus state - SIMPLE LIKE ZARDUI\n !(this.readonly || this.disabled) && [\n \"focus-within:border-primary/80\",\n \"focus-within:ring-4\",\n \"focus-within:ring-ring/30\",\n \"focus-within:ring-offset-0\",\n \"focus-within:shadow-none\",\n ],\n\n // Error state\n this.error && [\n \"border-destructive\",\n !(this.readonly || this.disabled) && [\n \"focus-within:border-destructive/80\",\n \"focus-within:ring-destructive/30\"\n ]\n ],\n\n // Disabled state\n this.disabled && [\n \"cursor-not-allowed opacity-50\",\n \"border-opacity-50\"\n ],\n\n // Readonly state\n this.readonly && [\n \"cursor-default\",\n \"border-dashed\",\n !this.disabled && \"focus-within:ring-0 focus-within:border-opacity-100\"\n ],\n\n this.containerClass\n );\n }\n\n get computedInputClass() {\n return cn(\n // Base styles\n \"flex-1 bg-transparent border-none p-0\",\n \"placeholder:text-muted-foreground\",\n\n // Remove all default focus styles\n \"focus:outline-none focus:ring-0 focus:shadow-none\",\n\n // Text sizing\n this.size === 'xs' && \"text-xs\",\n this.size === 'sm' && \"text-sm\",\n this.size === 'default' && \"text-sm\",\n this.size === 'lg' && \"text-base\",\n\n // Cursor states\n this.disabled && \"cursor-not-allowed\",\n this.readonly && \"cursor-default\",\n\n // Text color\n \"text-foreground\",\n\n // Selection color\n \"selection:bg-primary/20 selection:text-foreground\",\n\n this.class\n );\n }\n\n focusInput(): void {\n if (!this.disabled && this.inputEl) {\n this.inputEl.nativeElement.focus();\n }\n }\n\n onFocus(): void {\n this.isFocused = true;\n }\n\n onBlur(): void {\n this.isFocused = false;\n this.onTouched();\n }\n\n // --- Masking Logic ---\n onInput(event: Event) {\n if (this.readonly || this.disabled) return;\n const input = event.target as HTMLInputElement;\n const raw = this.unmask(input.value);\n const masked = this.applyMask(raw);\n this.displayValue = masked;\n input.value = masked;\n this.returnRaw ? this.onChange(raw) : this.onChange(masked);\n }\n\n private applyMask(rawValue: string): string {\n let rawIndex = 0;\n let formatted = '';\n for (let i = 0; i < this.mask.length; i++) {\n if (rawIndex >= rawValue.length) break;\n const maskChar = this.mask[i];\n const rawChar = rawValue[rawIndex];\n if (this.tokens[maskChar]) {\n if (this.tokens[maskChar].test(rawChar)) {\n formatted += rawChar;\n rawIndex++;\n } else {\n rawIndex++;\n i--;\n }\n } else {\n formatted += maskChar;\n if (rawChar === maskChar) rawIndex++;\n }\n }\n return formatted;\n }\n\n private unmask(val: string): string {\n return val.replace(/[^a-zA-Z0-9]/g, '');\n }\n\n writeValue(value: any): void {\n this.displayValue = value ? this.applyMask(this.unmask(value.toString())) : '';\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n protected cn = cn;\n}\n","import {\n Component, Input, forwardRef, ElementRef, ViewChild, HostListener, ChangeDetectorRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { computePosition, flip, shift, offset, autoUpdate } from '@floating-ui/dom';\nimport { format, parse, isValid, startOfDay } from 'date-fns';\nimport { cn } from './utils/cn';\nimport { MaskedInputComponent } from './masked-input.component';\nimport { CalendarComponent, CalendarMode } from './calendar.component';\n\n@Component({\n selector: 'tolle-date-picker',\n standalone: true,\n imports: [CommonModule, FormsModule, MaskedInputComponent, CalendarComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DatePickerComponent),\n multi: true\n }\n ],\n template: `\n <div class=\"relative w-full\" #triggerContainer>\n <tolle-masked-input\n #maskInput\n [mask]=\"getMask()\"\n [placeholder]=\"getPlaceholder()\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"inputValue\"\n (ngModelChange)=\"onInputChange($event)\"\n [class]=\"cn(class)\"\n >\n <div suffix class=\"flex items-center gap-1.5 cursor-pointer\">\n <i\n *ngIf=\"value && !disabled && showClear\"\n (click)=\"clear($event)\"\n class=\"ri-close-line cursor-pointer text-muted-foreground hover:text-foreground transition-colors\"\n ></i>\n\n <i\n (click)=\"togglePopover($event)\"\n [class]=\"cn(\n 'cursor-pointer text-muted-foreground transition-colors',\n 'ri-calendar-line'\n )\"\n ></i>\n </div>\n </tolle-masked-input>\n\n <div\n #popover\n *ngIf=\"isOpen\"\n class=\"fixed z-[50]\"\n style=\"visibility: hidden; top: 0; left: 0;\"\n >\n <tolle-calendar class=\"shadow-lg\"\n [(ngModel)]=\"value\"\n (ngModelChange)=\"onCalendarChange($event)\"\n [mode]=\"mode\"\n [disablePastDates]=\"disablePastDates\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [showQuickActions]=\"showQuickActions\"\n [formatMonthFn]=\"formatMonthFn\"\n [formatYearFn]=\"formatYearFn\"\n ></tolle-calendar>\n </div>\n </div>\n `\n})\nexport class DatePickerComponent implements ControlValueAccessor {\n @Input() placeholder = 'MM/DD/YYYY';\n @Input() disabled = false;\n @Input() class = '';\n @Input() disablePastDates = false;\n @Input() showClear = true;\n @Input() showQuickActions = true;\n @Input() minDate?: Date;\n @Input() maxDate?: Date;\n @Input() mode: CalendarMode = 'date';\n @Input() formatMonthFn?: (date: Date) => string;\n @Input() formatYearFn?: (date: Date) => string;\n\n // Format functions for display\n @Input() displayFormat?: (date: Date, mode: CalendarMode) => string;\n\n @ViewChild('triggerContainer') triggerContainer!: ElementRef;\n @ViewChild('popover') popover!: ElementRef;\n\n value: Date | null = null;\n inputValue: string = '';\n isOpen = false;\n cleanupAutoUpdate?: () => void;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n getMask(): string {\n switch (this.mode) {\n case 'date': return '00/00/0000';\n case 'month': return '00/0000';\n case 'year': return '0000';\n default: return '00/00/0000';\n }\n }\n\n getPlaceholder(): string {\n switch (this.mode) {\n case 'date': return 'MM/DD/YYYY';\n case 'month': return 'MM/YYYY';\n case 'year': return 'YYYY';\n default: return 'MM/DD/YYYY';\n }\n }\n\n getFormatString(): string {\n switch (this.mode) {\n case 'date': return 'MM/dd/yyyy';\n case 'month': return 'MM/yyyy';\n case 'year': return 'yyyy';\n default: return 'MM/dd/yyyy';\n }\n }\n\n formatDate(date: Date): string {\n if (this.displayFormat) {\n return this.displayFormat(date, this.mode);\n }\n\n switch (this.mode) {\n case 'date': return format(date, 'MM/dd/yyyy');\n case 'month': return format(date, 'MM/yyyy');\n case 'year': return format(date, 'yyyy');\n default: return format(date, 'MM/dd/yyyy');\n }\n }\n\n parseDate(str: string): Date | null {\n try {\n const parsed = parse(str, this.getFormatString(), new Date());\n return isValid(parsed) ? startOfDay(parsed) : null;\n } catch {\n return null;\n }\n }\n\n onInputChange(str: string) {\n const expectedLength = this.getFormatString().replace(/[^0]/g, '').length;\n\n if (str?.length === expectedLength) {\n const parsed = this.parseDate(str);\n if (parsed) {\n this.value = parsed;\n this.onChange(this.value);\n }\n } else if (!str) {\n this.value = null;\n this.onChange(null);\n }\n }\n\n onCalendarChange(date: Date | null) {\n this.value = date;\n if (date) {\n this.inputValue = this.formatDate(date);\n } else {\n this.inputValue = '';\n }\n this.onChange(this.value);\n this.close();\n }\n\n togglePopover(event: MouseEvent) {\n event.stopPropagation();\n if (this.disabled) return;\n this.isOpen ? this.close() : this.open();\n }\n\n open() {\n this.isOpen = true;\n setTimeout(() => this.updatePosition());\n }\n\n close() {\n this.isOpen = false;\n if (this.cleanupAutoUpdate) this.cleanupAutoUpdate();\n }\n\n clear(event: MouseEvent) {\n event.stopPropagation();\n this.value = null;\n this.inputValue = '';\n this.onChange(null);\n this.cdr.markForCheck();\n }\n\n private updatePosition() {\n if (!this.triggerContainer || !this.popover) return;\n\n this.cleanupAutoUpdate = autoUpdate(\n this.triggerContainer.nativeElement,\n this.popover.nativeElement,\n () => {\n computePosition(this.triggerContainer.nativeElement, this.popover.nativeElement, {\n strategy: 'fixed', // ADDED: Fixed strategy\n placement: 'bottom-start', // Changed to bottom-start to align with input left edge\n middleware: [\n offset(4),\n flip(),\n shift({ padding: 8 })\n ],\n }).then(({ x, y, strategy }) => {\n Object.assign(this.popover.nativeElement.style, {\n position: strategy,\n left: `${x}px`,\n top: `${y}px`,\n visibility: 'visible',\n });\n });\n }\n );\n }\n\n @HostListener('document:mousedown', ['$event'])\n onClickOutside(event: MouseEvent) {\n if (this.isOpen &&\n !this.triggerContainer.nativeElement.contains(event.target) &&\n !this.popover.nativeElement.contains(event.target)) {\n this.close();\n }\n }\n\n // CVA Implementation\n onChange: any = () => {};\n onTouched: any = () => {};\n\n writeValue(val: any): void {\n if (val) {\n const date = new Date(val);\n if (isValid(date)) {\n this.value = startOfDay(date);\n this.inputValue = this.formatDate(this.value);\n }\n } else {\n this.value = null;\n this.inputValue = '';\n }\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled = isDisabled; }\n protected cn = cn;\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cn } from './utils/cn';\nimport {FormsModule} from '@angular/forms';\nimport {SelectComponent} from './select.component';\nimport {SelectItemComponent} from './select-item.component';\n\n@Component({\n selector: 'tolle-pagination',\n standalone: true,\n imports: [CommonModule, FormsModule, SelectComponent, SelectItemComponent],\n template: `\n <div [class]=\"cn('flex items-center justify-between px-2 py-4', class)\">\n\n <div *ngIf=\"showCurrentPageInfo\" class=\"text-sm text-muted-foreground\">\n <ng-container *ngIf=\"currentPageInfoTemplate; else defaultReport\">\n {{ pageReport }}\n </ng-container>\n <ng-template #defaultReport>\n Showing {{ first }} to {{ last }} of {{ totalRecords }} entries\n </ng-template>\n </div>\n\n <div class=\"flex items-center space-x-6 lg:space-x-8\">\n\n <div *ngIf=\"showPageOptions\" class=\"flex items-center space-x-2\">\n <p class=\"text-sm font-medium\">Rows per page</p>\n <tolle-select\n class=\"w-[70px]\"\n size=\"sm\"\n [ngModel]=\"currentPageSize\"\n (ngModelChange)=\"sizeChange($event)\"\n >\n <tolle-select-item *ngFor=\"let opt of pageSizeOptions\" [value]=\"opt\">\n {{ opt }}\n </tolle-select-item>\n </tolle-select>\n </div>\n\n <div class=\"flex items-center space-x-2\">\n <div *ngIf=\"!showPageLinks\" class=\"flex w-[100px] items-center justify-center text-sm font-medium\">\n Page {{ currentPage }} of {{ totalPages }}\n </div>\n\n <div *ngIf=\"showPageLinks\" class=\"flex items-center space-x-1\">\n <button\n (click)=\"previousPage()\"\n [disabled]=\"currentPage === 1\"\n [class]=\"navBtnClass\"\n >\n <i class=\"ri-arrow-left-s-line\"></i>\n </button>\n\n <button\n *ngFor=\"let page of displayPageIndex\"\n (click)=\"selectPage(page)\"\n [class]=\"cn(\n 'h-8 w-8 text-sm rounded-md flex items-center justify-center transition-colors',\n currentPage === page\n ? 'bg-primary text-primary-foreground font-medium'\n : 'hover:bg-accent hover:text-accent-foreground'\n )\"\n >\n {{ page }}\n </button>\n\n <button\n (click)=\"nextPage()\"\n [disabled]=\"currentPage === totalPages || totalPages === 0\"\n [class]=\"navBtnClass\"\n >\n <i class=\"ri-arrow-right-s-line\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PaginationComponent implements OnInit, OnChanges {\n @Input() class = '';\n @Input() showPageLinks = true;\n @Input() showPageOptions = true;\n @Input() showCurrentPageInfo = true;\n @Input() currentPageInfoTemplate?: string;\n\n @Input() totalRecords = 0;\n @Input() currentPageSize = 10;\n @Input() currentPage = 1;\n @Input() pageSizeOptions: number[] = [10, 20, 30, 50];\n\n @Output() onPageNumberChange = new EventEmitter<number>();\n @Output() onPageSizeChange = new EventEmitter<number>();\n\n totalPages = 0;\n first = 0;\n last = 0;\n displayPageIndex: number[] = [];\n pageReport = '';\n\n private initialized = false;\n private cd = inject(ChangeDetectorRef);\n protected cn = cn;\n\n navBtnClass = 'h-8 w-8 p-0 flex items-center justify-center rounded-md border border-input bg-background hover:bg-accent hover:text-accent-foreground disabled:opacity-50 disabled:cursor-not-allowed';\n\n ngOnInit(): void {\n this.initializePagination();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // Only re-init if meaningful data changes\n if (changes['totalRecords'] || changes['currentPage'] || changes['currentPageSize']) {\n this.initializePagination();\n }\n }\n\n private initializePagination(): void {\n this.calcPagination();\n if (!this.initialized) {\n this.initialized = true;\n }\n this.cd.detectChanges();\n }\n\n nextPage() {\n if (this.totalPages > this.currentPage) {\n this.currentPage++;\n this.emitChange();\n }\n }\n\n previousPage() {\n if (this.currentPage > 1) {\n this.currentPage--;\n this.emitChange();\n }\n }\n\n selectPage(page: number) {\n if (this.currentPage === page) return;\n this.currentPage = page;\n this.emitChange();\n }\n\n sizeChange(size: number) {\n this.currentPageSize = size;\n this.currentPage = 1; // Reset to page 1 on size change\n this.emitChange();\n }\n\n private emitChange(): void {\n this.calcPagination();\n this.onPageNumberChange.emit(this.currentPage);\n this.onPageSizeChange.emit(this.currentPageSize);\n this.cd.detectChanges();\n }\n\n private calcPagination(): void {\n this.totalPages = Math.ceil(this.totalRecords / this.currentPageSize) || 0;\n\n // Bounds check\n if (this.currentPage > this.totalPages && this.totalPages > 0) {\n this.currentPage = this.totalPages;\n }\n\n this.first = this.totalRecords === 0 ? 0 : (this.currentPage - 1) * this.currentPageSize + 1;\n this.last = Math.min(this.totalRecords, this.currentPage * this.currentPageSize);\n\n // Calculate Sliding Window for Page Numbers (Max 5 visible)\n const pages: number[] = Array.from({ length: this.totalPages }, (_, i) => i + 1);\n\n if (this.totalPages <= 5) {\n this.displayPageIndex = pages;\n } else {\n let start = Math.max(0, this.currentPage - 3);\n let end = start + 5;\n\n if (end > this.totalPages) {\n end = this.totalPages;\n start = end - 5;\n }\n this.displayPageIndex = pages.slice(start, end);\n }\n\n // Template Parsing\n if (this.currentPageInfoTemplate) {\n this.pageReport = this.currentPageInfoTemplate.replace(\n /{first}|{last}|{totalRecords}|{currentPage}|{currentPageSize}|{totalPages}/g,\n (match) => {\n switch (match) {\n case '{first}': return `${this.first}`;\n case '{last}': return `${this.last}`;\n case '{totalRecords}': return `${this.totalRecords}`;\n case '{totalPages}': return `${this.totalPages}`;\n case '{currentPage}': return `${this.currentPage}`;\n case '{currentPageSize}': return `${this.currentPageSize}`;\n default: return match;\n }\n }\n );\n }\n }\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[tolleCell]',\n standalone: true\n})\nexport class TolleCellDirective {\n @Input('tolleCell') name!: string; // The column key this template belongs to\n constructor(public template: TemplateRef<any>) {}\n}\n","import {\n Component, Input, OnInit, OnChanges, SimpleChanges,\n TemplateRef, ContentChildren, QueryList\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { cn } from './utils/cn';\nimport {PaginationComponent} from './pagination.component';\nimport {TolleCellDirective} from './tolle-cell.directive';\nimport {InputComponent} from './input.component';\nexport interface TableColumn {\n key: string;\n label: string;\n sortable?: boolean;\n class?: string;\n}\n\n@Component({\n selector: 'tolle-data-table',\n standalone: true,\n imports: [CommonModule, FormsModule, PaginationComponent, InputComponent],\n template: `\n <div class=\"space-y-4\">\n <div *ngIf=\"searchable\" class=\"flex items-center py-2\">\n <tolle-input\n [size]=\"size === 'lg' ? 'default' : 'sm'\"\n class=\"max-w-sm\"\n placeholder=\"Filter records...\"\n [(ngModel)]=\"searchTerm\"\n (ngModelChange)=\"onSearch()\">\n <i prefix class=\"ri-search-line\"></i>\n </tolle-input>\n </div>\n\n <div class=\"rounded-md border border-border overflow-hidden shadow-sm\">\n <table class=\"w-full text-sm\">\n <thead class=\"border-b bg-muted/30\">\n <tr>\n <th *ngIf=\"expandable\" [class]=\"cn('px-4', size === 'xs' ? 'w-[32px]' : 'w-[48px]')\"></th>\n <th *ngFor=\"let col of columns\"\n [class]=\"cn(\n 'font-medium text-muted-foreground transition-all',\n headerPaddingClass,\n fontSizeClass,\n col.class\n )\">\n <div *ngIf=\"col.sortable; else simpleHeader\" (click)=\"toggleSort(col.key)\" class=\"flex items-center gap-1 cursor-pointer hover:text-foreground\">\n {{ col.label }}\n <i [class]=\"getSortIcon(col.key)\"></i>\n </div>\n <ng-template #simpleHeader>{{ col.label }}</ng-template>\n </th>\n </tr>\n </thead>\n <tbody class=\"divide-y divide-border\">\n <ng-container *ngFor=\"let row of pagedData; let i = index\">\n <tr class=\"hover:bg-muted/50 transition-colors\">\n <td *ngIf=\"expandable\" class=\"px-4\">\n <button (click)=\"toggleRow(i)\"\n [class]=\"cn(\n 'flex items-center justify-center rounded-md hover:bg-accent text-muted-foreground hover:text-foreground',\n size === 'xs' ? 'h-6 w-6' : 'h-8 w-8'\n )\">\n <i [class]=\"expandedRows.has(i) ? 'ri-arrow-down-s-line' : 'ri-arrow-right-s-line'\"></i>\n </button>\n </td>\n\n <td *ngFor=\"let col of columns\"\n [class]=\"cn(\n 'align-middle transition-all',\n cellPaddingClass,\n fontSizeClass,\n col.class\n )\">\n <ng-container *ngIf=\"getTemplate(col.key) as cell; else defaultValue\">\n <ng-container *ngTemplateOutlet=\"cell.template; context: { $implicit: row[col.key], row: row }\"></ng-container>\n </ng-container>\n <ng-template #defaultValue>\n <span class=\"text-foreground\">{{ row[col.key] }}</span>\n </ng-template>\n </td>\n </tr>\n\n <tr *ngIf=\"expandedRows.has(i)\" class=\"bg-muted/10\">\n <td [attr.colspan]=\"columns.length + (expandable ? 1 : 0)\" class=\"p-0\">\n <div class=\"p-6 border-b border-dashed border-border\">\n <ng-container *ngIf=\"expandedTemplate; else defaultExpanded\">\n <ng-container *ngTemplateOutlet=\"expandedTemplate; context: { row: row }\"></ng-container>\n </ng-container>\n <ng-template #defaultExpanded>\n <div class=\"text-xs text-muted-foreground italic\">No details available.</div>\n </ng-template>\n </div>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n\n <tolle-pagination\n *ngIf=\"paginate\"\n [totalRecords]=\"filteredData.length\"\n [currentPage]=\"currentPage\"\n [currentPageSize]=\"pageSize\"\n (onPageNumberChange)=\"updatePage()\"\n (onPageSizeChange)=\"updatePage()\"\n ></tolle-pagination>\n </div>\n `\n})\nexport class DataTableComponent implements OnInit, OnChanges {\n @Input() data: any[] = [];\n @Input() columns: TableColumn[] = [];\n @Input() searchable = true;\n @Input() paginate = true;\n @Input() pageSize = 10;\n @Input() expandable = false;\n @Input() size: 'xs' | 'sm' | 'default' | 'lg' = 'default';\n\n // --- NEW INPUTS FOR COLUMN HIDING ---\n @Input() allowColumnHiding = true;\n @Input() showSettings = true; // Set to false to hide the gear icon/menu entirely\n\n // Track visibility state: { 'columnKey': true/false }\n columnVisibility: Record<string, boolean> = {};\n showColumnMenu = false;\n\n // Filter columns based on visibility state\n get activeColumns() {\n return this.columns.filter(col => this.columnVisibility[col.key]);\n }\n\n // Track which rows are open\n expandedRows = new Set<number>();\n\n // Use ContentChildren to grab the tolleCell templates from the user's HTML\n @ContentChildren(TolleCellDirective) cellTemplates!: QueryList<TolleCellDirective>;\n\n // Keep this as an Input for the main expansion slot\n @Input() expandedTemplate?: TemplateRef<any>;\n\n filteredData: any[] = [];\n pagedData: any[] = [];\n searchTerm = '';\n currentPage = 1;\n sortKey = '';\n sortDir: 'asc' | 'desc' | null = null;\n\n // 2. Map Size to Padding for Cells\n get cellPaddingClass(): string {\n switch (this.size) {\n case 'xs': return 'p-1 px-4'; // Ultra-compact\n case 'sm': return 'p-2 px-4'; // Dense\n case 'lg': return 'p-6 px-4'; // Spacious\n default: return 'p-4'; // Standard (16px)\n }\n }\n\n // 3. Map Size to Padding for Header (usually slightly shorter than cells)\n get headerPaddingClass(): string {\n switch (this.size) {\n case 'xs': return 'h-7 px-4';\n case 'sm': return 'h-9 px-4';\n case 'lg': return 'h-14 px-4';\n default: return 'h-12 px-4';\n }\n }\n\n // 4. Map Size to Font Sizes\n get fontSizeClass(): string {\n switch (this.size) {\n case 'xs': return 'text-[11px]';\n case 'sm': return 'text-xs';\n case 'lg': return 'text-base';\n default: return 'text-sm';\n }\n }\n\n protected cn = cn;\n\n ngOnInit() { this.refreshTable(); }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['data']) { this.refreshTable(); }\n if (changes['columns']) { this.initializeVisibility(); }\n }\n\n private initializeVisibility() {\n // Default all columns to visible if not already set\n this.columns.forEach(col => {\n if (this.columnVisibility[col.key] === undefined) {\n this.columnVisibility[col.key] = true;\n }\n });\n }\n\n // --- Search & Sort & Page Logic ---\n // (Your existing implementation of applySearch, applySort, and updatePage goes here)\n refreshTable() { this.applySearch(); this.applySort(); this.updatePage(); }\n onSearch() { this.currentPage = 1; this.refreshTable(); }\n\n toggleColumn(key: string) {\n this.columnVisibility[key] = !this.columnVisibility[key];\n }\n\n private applySearch() {\n if (!this.searchTerm) { this.filteredData = [...this.data]; return; }\n const q = this.searchTerm.toLowerCase();\n this.filteredData = this.data.filter(row =>\n Object.values(row).some(val => String(val).toLowerCase().includes(q))\n );\n }\n\n private applySort() {\n if (!this.sortKey || !this.sortDir) return;\n this.filteredData.sort((a, b) => {\n const valA = a[this.sortKey]; const valB = b[this.sortKey];\n if (valA < valB) return this.sortDir === 'asc' ? -1 : 1;\n if (valA > valB) return this.sortDir === 'asc' ? 1 : -1;\n return 0;\n });\n }\n\n updatePage() {\n if (!this.paginate) { this.pagedData = this.filteredData; return; }\n const start = (this.currentPage - 1) * this.pageSize;\n const end = start + this.pageSize;\n this.pagedData = this.filteredData.slice(start, end);\n }\n\n // --- Helpers ---\n toggleSort(key: string) {\n if (this.sortKey === key) {\n this.sortDir = this.sortDir === 'asc' ? 'desc' : this.sortDir === 'desc' ? null : 'asc';\n } else { this.sortKey = key; this.sortDir = 'asc'; }\n this.refreshTable();\n }\n\n getSortIcon(key: string) {\n if (this.sortKey !== key || !this.sortDir) return 'ri-arrow-up-down-line opacity-30';\n return this.sortDir === 'asc' ? 'ri-arrow-up-line' : 'ri-arrow-down-line';\n }\n\n toggleRow(index: number) {\n if (this.expandedRows.has(index)) this.expandedRows.delete(index);\n else this.expandedRows.add(index);\n }\n\n // Helper to find the right cell template\n getTemplate(key: string): TolleCellDirective | undefined {\n return this.cellTemplates?.find(t => t.name === key);\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-accordion-item',\n standalone: true,\n imports: [CommonModule],\n animations: [\n trigger('expandCollapse', [\n state('collapsed', style({\n height: '0px',\n opacity: '0',\n overflow: 'hidden',\n visibility: 'hidden'\n })),\n state('expanded', style({\n height: '*', // \"Star\" means actual content height\n opacity: '1',\n overflow: 'hidden',\n visibility: 'visible'\n })),\n // Use cubic-bezier to match Tailwind/shadcn-ui default ease\n transition('collapsed <=> expanded', [\n animate('300ms cubic-bezier(0.87, 0, 0.13, 1)')\n ])\n ])\n ],\n template: `\n <div [class]=\"cn('flex flex-col border-b border-border', class)\">\n <button\n type=\"button\"\n (click)=\"toggle()\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.data-state]=\"isOpen ? 'open' : 'closed'\"\n class=\"flex flex-1 items-center justify-between py-4 font-medium transition-all group [&[data-state=open]>i]:rotate-180\"\n >\n <span class=\"text-left group-hover:underline\">{{ title }}</span>\n <i class=\"ri-arrow-down-s-line text-muted-foreground text-lg transition-transform duration-200 hover:no-underline\"></i>\n </button>\n\n <div\n [@expandCollapse]=\"isOpen ? 'expanded' : 'collapsed'\"\n class=\"overflow-hidden\">\n <div class=\"pb-4 pt-0 text-sm text-muted-foreground\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n `\n})\nexport class AccordionItemComponent {\n @Input() title: string = '';\n @Input() class: string = '';\n @Input() id!: string | number;\n\n isOpen = false;\n\n // This will be set by the parent Accordion component\n onToggle?: (id: string | number) => void;\n\n toggle() {\n if (this.onToggle) {\n this.onToggle(this.id);\n } else {\n this.isOpen = !this.isOpen;\n }\n }\n\n protected readonly cn = cn;\n}\n","import { Component, Input, ContentChildren, QueryList, AfterContentInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AccordionItemComponent } from './accordion-item.component';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-accordion',\n standalone: true,\n imports: [CommonModule], // No AccordionItemComponent import needed here if projected via ng-content\n template: `\n <div [class]=\"cn('w-full', class)\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class AccordionComponent implements AfterContentInit {\n @Input() type: 'single' | 'multiple' = 'single';\n @Input() class: string = '';\n\n @ContentChildren(AccordionItemComponent) items!: QueryList<AccordionItemComponent>;\n\n ngAfterContentInit() {\n // 1. Assign IDs and Listeners on load\n this.initItems();\n\n // 2. Re-init if items change dynamically (optional but good for robustness)\n this.items.changes.subscribe(() => this.initItems());\n }\n\n private initItems() {\n this.items.forEach((item, index) => {\n // Auto-assign ID if missing\n if (item.id === undefined) item.id = `accordion-item-${index}`;\n\n // Set up the toggle bridge\n item.onToggle = (id) => this.handleToggle(id);\n });\n }\n\n private handleToggle(selectedId: string | number) {\n this.items.forEach(item => {\n if (item.id === selectedId) {\n // Toggle the clicked item\n item.isOpen = !item.isOpen;\n } else if (this.type === 'single') {\n // Close others if in single mode\n item.isOpen = false;\n }\n });\n }\n\n protected readonly cn = cn;\n}\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Subject } from 'rxjs';\nimport { Modal } from './modal';\nimport { ModalStackService } from './modal-stack.service';\n\nexport class ModalRef<R = any> {\n private readonly _afterClosed$ = new Subject<R | undefined | null>();\n afterClosed$ = this._afterClosed$.asObservable();\n\n constructor(\n private overlay: OverlayRef,\n public modal: Modal,\n private stack: ModalStackService\n ) {\n this.stack.register(this);\n\n // Handle Backdrop Click\n this.overlay.backdropClick().subscribe(() => {\n if (this.modal.backdropClose) {\n this.close();\n }\n });\n }\n\n /**\n * Closes the modal instantly.\n * @param result Data to pass back to the caller\n */\n close(result?: R): void {\n this._afterClosed$.next(result);\n this._afterClosed$.complete();\n this.overlay.dispose(); // Instant disposal (No animation timer)\n this.stack.unregister(this);\n }\n}\n","import { Component, OnInit, TemplateRef, Type } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ModalRef } from './modal-ref';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-modal',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div [class]=\"modalClasses\" class=\"pointer-events-auto\" (mousedown)=\"$event.stopPropagation()\">\n\n <div *ngIf=\"ref.modal.showCloseButton || ref.modal.title\" class=\"flex items-center justify-between px-6 pt-6\">\n <h3 *ngIf=\"ref.modal.title\" class=\"text-lg font-semibold text-foreground tracking-tight\">\n {{ ref.modal.title }}\n </h3>\n <button *ngIf=\"ref.modal.showCloseButton\" (click)=\"ref.close()\" class=\"ml-auto p-1 text-muted-foreground hover:text-foreground hover:bg-accent rounded-md transition-colors\">\n <i class=\"ri-close-line text-2xl\"></i>\n </button>\n </div>\n\n <div class=\"px-6 pb-6 pt-4 overflow-y-auto max-h-[80vh] text-foreground\">\n <ng-container [ngSwitch]=\"contentType\">\n <div *ngSwitchCase=\"'string'\">{{ content }}</div>\n\n <ng-container *ngSwitchCase=\"'template'\">\n <ng-container *ngTemplateOutlet=\"asTemplate; context: ref.modal.context\"></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'component'\">\n <ng-container *ngComponentOutlet=\"asComponent\"></ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n `,\n styles: [`\n :host {\n display: contents; /* This makes the host \"disappear\" so the div targets the overlay pane directly */\n }\n `]\n})\nexport class ModalComponent implements OnInit {\n contentType: 'template' | 'string' | 'component' = 'string';\n content: any;\n modalClasses = '';\n\n constructor(public ref: ModalRef) {}\n\n ngOnInit() {\n this.content = this.ref.modal.content;\n this.modalClasses = this.getModalSizeCss();\n this.determineContentType();\n }\n\n private getModalSizeCss(): string {\n const { size } = this.ref.modal;\n\n return cn(\n // Base classes: Added 'w-full' and 'mx-auto'\n 'bg-background border border-border shadow-lg relative flex flex-col w-full mx-auto ',\n\n size === 'fullscreen' ? 'h-screen w-screen rounded-none' : 'rounded-md',\n\n // Sizing scale with explicit max-widths\n size === 'xs' && 'max-w-[320px]',\n size === 'sm' && 'max-w-[425px]',\n size === 'default' && 'max-w-[544px]',\n size === 'lg' && 'max-w-[1024px]'\n );\n }\n\n private determineContentType() {\n if (typeof this.content === 'string') this.contentType = 'string';\n else if (this.content instanceof TemplateRef) this.contentType = 'template';\n else this.contentType = 'component';\n }\n\n get asTemplate() { return this.content as TemplateRef<any>; }\n get asComponent() { return this.content as Type<any>; }\n protected cn = cn;\n}\n","import { Injectable } from '@angular/core';\nimport { ModalRef } from './modal-ref';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalStackService {\n private _stack = new Set<ModalRef>();\n\n register(ref: ModalRef): void {\n this._stack.add(ref);\n }\n\n unregister(ref: ModalRef): void {\n this._stack.delete(ref);\n }\n\n /** Instantly closes all open modals */\n closeAll(): void {\n this._stack.forEach(ref => ref.close());\n this._stack.clear();\n }\n\n get activeCount(): number {\n return this._stack.size;\n }\n}\n","import { Injectable, Injector } from '@angular/core';\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Modal } from './modal';\nimport { ModalRef } from './modal-ref';\nimport { ModalComponent } from './modal.component';\nimport { ModalStackService } from './modal-stack.service';\n\n@Injectable({ providedIn: 'root' })\nexport class ModalService {\n constructor(\n private overlay: Overlay,\n private injector: Injector,\n private stack: ModalStackService\n ) {}\n\n open<R = any>(config: Modal): ModalRef<R> {\n // 1. Create the Overlay (DOM placeholder)\n const overlayRef = this.createOverlay();\n\n // 2. Create the Controller (Ref)\n const modalRef = new ModalRef<R>(overlayRef, config, this.stack);\n\n // 3. Create Injector to allow the Component to access the Ref\n const injector = Injector.create({\n parent: this.injector,\n providers: [{ provide: ModalRef, useValue: modalRef }]\n });\n\n // 4. Attach the UI Component to the Overlay\n const portal = new ComponentPortal(ModalComponent, null, injector);\n overlayRef.attach(portal);\n\n return modalRef;\n }\n\n /** Global helper to close everything */\n closeAll() {\n this.stack.closeAll();\n }\n\n // modal.service.ts\n private createOverlay(): OverlayRef {\n const config = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: ['cdk-overlay-backdrop', 'bg-black/80', 'backdrop-blur-sm'],\n panelClass: [\n 'w-full',\n 'h-full',\n 'flex',\n 'items-center',\n 'justify-center',\n 'pointer-events-none'\n ],\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay.position()\n .global()\n .centerHorizontally()\n .centerVertically()\n });\n\n return this.overlay.create(config);\n }\n\n\n}\n","import { TemplateRef, Type } from \"@angular/core\";\n\nexport class Modal<T = any> {\n /** The content to display (String, Component, or Template) */\n content!: string | Type<any> | TemplateRef<any>;\n\n /** Optional title for the standard header */\n title?: string;\n\n /** * Predefined size scale.\n * - xs: 320px (Mobile alerts)\n * - sm: 425px (Standard dialogs)\n * - default: 544px (Forms)\n * - lg: 90% / 1024px (Data tables)\n * - fullscreen: 100vw/100vh (Complex workflows)\n */\n size?: 'xs' | 'sm' | 'default' | 'lg' | 'fullscreen' = 'default';\n\n /** * If true (default), clicking the backdrop closes the modal.\n * Set to false for \"blocking\" modals (e.g., Terms of Service).\n */\n backdropClose?: boolean = true;\n\n /** * Data to pass to a Component content.\n * Accessed via @Input() in the child component.\n */\n data?: { [key: string]: any };\n\n /** * Context to pass to a TemplateRef content.\n * Accessed via `let-val` in the HTML.\n */\n context?: T;\n\n showCloseButton?: boolean = true;\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-button-group',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div [class]=\"cn('inline-flex items-center -space-x-px rounded-md shadow-sm', class)\">\n <ng-content></ng-content>\n </div>\n `,\n styles: [`\n :host {\n display: inline-block;\n }\n\n /* 1. First Button: Remove right rounding and keep border */\n :host ::ng-deep tolle-button:first-child button {\n @apply rounded-r-none;\n }\n\n /* 2. Middle Buttons: Remove all rounding and the left border to avoid double-thickness */\n :host ::ng-deep tolle-button:not(:first-child):not(:last-child) button {\n @apply rounded-none border-l-0;\n }\n\n /* 3. Last Button: Remove left rounding and left border */\n :host ::ng-deep tolle-button:last-child:not(:first-child) button {\n @apply rounded-l-none border-l-0;\n }\n\n /* 4. Hover/Focus State: Bring the active button to the front so the focus ring isn't cut off */\n :host ::ng-deep tolle-button button:hover,\n :host ::ng-deep tolle-button button:focus {\n @apply z-10 relative;\n }\n `]\n})\nexport class ButtonGroupComponent {\n @Input() class: string = '';\n protected cn = cn;\n}\n","import { Component, Input, OnInit, forwardRef, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n addMonths, subMonths, startOfMonth, endOfMonth,\n startOfWeek, endOfWeek, eachDayOfInterval, isSameMonth,\n isSameDay, isToday, setMonth, setYear, addYears, subYears,\n isBefore, startOfDay, isWithinInterval\n} from 'date-fns';\nimport { cn } from './utils/cn';\nimport {DateRange} from './types/date-range';\n\n@Component({\n selector: 'tolle-range-calendar',\n standalone: true,\n imports: [CommonModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RangeCalendarComponent),\n multi: true\n }\n ],\n template: `\n <div [class]=\"cn('p-3 border rounded-md bg-background text-popover-foreground shadow-sm inline-block min-w-fit', class)\">\n\n <div class=\"flex items-center justify-between pt-1 pb-4 gap-2\">\n <div class=\"flex items-center gap-1\">\n <button type=\"button\" (click)=\"setView('month')\"\n [class]=\"cn('text-sm font-semibold px-2 py-1 rounded transition-colors', currentView === 'month' ? 'bg-secondary text-secondary-foreground' : 'hover:bg-accent hover:text-accent-foreground')\">\n {{ viewDate | date: 'MMMM' }}\n </button>\n <button type=\"button\" (click)=\"setView('year')\"\n [class]=\"cn('text-sm font-semibold px-2 py-1 rounded transition-colors', currentView === 'year' ? 'bg-secondary text-secondary-foreground' : 'hover:bg-accent hover:text-accent-foreground')\">\n {{ viewDate | date: 'yyyy' }}\n </button>\n </div>\n <div class=\"flex items-center space-x-1\">\n <button type=\"button\" (click)=\"prev()\" [class]=\"navBtnClass\"><i class=\"ri-arrow-left-s-line text-lg\"></i></button>\n <button type=\"button\" (click)=\"next()\" [class]=\"navBtnClass\"><i class=\"ri-arrow-right-s-line text-lg\"></i></button>\n </div>\n </div>\n\n <div *ngIf=\"currentView === 'date'\" class=\"space-y-2 animate-in fade-in zoom-in-95 duration-200\">\n <div class=\"grid grid-cols-7 gap-y-1 w-full\">\n <span *ngFor=\"let day of weekDays\" class=\"text-[0.8rem] text-muted-foreground font-normal text-center w-9\">\n {{ day }}\n </span>\n </div>\n <div class=\"grid grid-cols-7 gap-y-1 w-full\">\n <button\n *ngFor=\"let date of daysInMonth\"\n type=\"button\"\n (click)=\"selectDate(date)\"\n [disabled]=\"isDateDisabled(date)\"\n [class]=\"getDayClass(date)\"\n >\n {{ date | date: 'd' }}\n </button>\n </div>\n </div>\n\n <div *ngIf=\"currentView === 'month'\" class=\"grid grid-cols-3 gap-2 w-64 animate-in fade-in zoom-in-95 duration-200\">\n <button *ngFor=\"let month of months; let i = index\" type=\"button\" (click)=\"selectMonth(i)\"\n [class]=\"cn('text-sm py-2.5 rounded-md hover:bg-accent hover:text-accent-foreground transition-colors', i === viewDate.getMonth() ? 'bg-primary text-primary-foreground' : '')\">\n {{ month }}\n </button>\n </div>\n\n <div *ngIf=\"currentView === 'year'\" class=\"grid grid-cols-4 gap-2 w-64 animate-in fade-in zoom-in-95 duration-200\">\n <button *ngFor=\"let year of years\" type=\"button\" (click)=\"selectYear(year)\"\n [class]=\"cn('text-sm py-2 rounded-md hover:bg-accent hover:text-accent-foreground transition-colors', year === viewDate.getFullYear() ? 'bg-primary text-primary-foreground' : '')\">\n {{ year }}\n </button>\n </div>\n </div>\n `\n})\nexport class RangeCalendarComponent implements OnInit, ControlValueAccessor {\n @Input() class = '';\n @Input() disablePastDates = false;\n @Output() rangeSelect = new EventEmitter<DateRange>(); // Emits whenever selection changes\n\n currentView: 'date' | 'month' | 'year' = 'date';\n viewDate: Date = new Date();\n\n // The Range Value\n value: DateRange = { start: null, end: null };\n\n weekDays = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n daysInMonth: Date[] = [];\n months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n years: number[] = [];\n\n navBtnClass = cn('h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 border border-input rounded-md flex items-center justify-center hover:bg-accent hover:text-accent-foreground transition-all');\n\n onTouched: () => void = () => {};\n onChange: (value: DateRange) => void = () => {};\n protected cn = cn;\n\n ngOnInit() {\n this.generateDays();\n this.generateYears();\n }\n\n // --- Date Generation Logic (Same as Calendar) ---\n generateDays() {\n const start = startOfWeek(startOfMonth(this.viewDate));\n const end = endOfWeek(endOfMonth(this.viewDate));\n this.daysInMonth = eachDayOfInterval({ start, end });\n }\n\n generateYears() {\n const currentYear = this.viewDate.getFullYear();\n this.years = Array.from({ length: 16 }, (_, i) => currentYear - 6 + i);\n }\n\n setView(view: 'date' | 'month' | 'year') {\n this.currentView = view;\n if (view === 'year') this.generateYears();\n }\n\n prev() {\n if (this.currentView === 'date') {\n this.viewDate = subMonths(this.viewDate, 1);\n this.generateDays();\n } else if (this.currentView === 'year') {\n this.viewDate = subYears(this.viewDate, 16);\n this.generateYears();\n } else if (this.currentView === 'month') {\n this.viewDate = subYears(this.viewDate, 1);\n }\n }\n\n next() {\n if (this.currentView === 'date') {\n this.viewDate = addMonths(this.viewDate, 1);\n this.generateDays();\n } else if (this.currentView === 'year') {\n this.viewDate = addYears(this.viewDate, 16);\n this.generateYears();\n } else if (this.currentView === 'month') {\n this.viewDate = addYears(this.viewDate, 1);\n }\n }\n\n // --- Range Selection Logic ---\n\n selectDate(date: Date) {\n if (this.isDateDisabled(date)) return;\n\n const { start, end } = this.value;\n\n // 1. If start exists but end doesn't\n if (start && !end) {\n if (isBefore(date, start)) {\n // User clicked earlier date -> Reset start\n this.value = { start: date, end: null };\n } else {\n // User clicked later date -> Complete range\n this.value = { start, end: date };\n }\n }\n // 2. If neither exist OR both exist (reset)\n else {\n this.value = { start: date, end: null };\n }\n\n if (!isSameMonth(date, this.viewDate)) {\n this.viewDate = date;\n this.generateDays();\n }\n\n this.onChange(this.value);\n this.rangeSelect.emit(this.value);\n this.onTouched();\n }\n\n selectMonth(monthIndex: number) {\n this.viewDate = setMonth(this.viewDate, monthIndex);\n this.currentView = 'date';\n this.generateDays();\n }\n\n selectYear(year: number) {\n this.viewDate = setYear(this.viewDate, year);\n this.currentView = 'date';\n this.generateDays();\n }\n\n // --- Visual Styling for Range ---\n\n getDayClass(date: Date) {\n const { start, end } = this.value;\n const isOutside = !isSameMonth(date, this.viewDate);\n const isDisabled = this.isDateDisabled(date);\n\n // Range Checks\n const isStart = start && isSameDay(date, start);\n const isEnd = end && isSameDay(date, end);\n const isInside = start && end && isWithinInterval(date, { start, end });\n const isTodayDate = isToday(date);\n\n return cn(\n // Base: h-9 w-9, but we remove margins/rounding for the 'strip' effect\n 'h-9 w-9 p-0 font-normal text-sm transition-all flex items-center justify-center relative z-10',\n\n // Default State (Not selected, Not disabled)\n !isInside && !isStart && !isEnd && !isDisabled && 'hover:bg-accent hover:text-accent-foreground rounded-md',\n\n // The \"Caps\": Start and End\n (isStart || isEnd) && 'bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground',\n\n // The \"Strip\": Dates between start and end\n isInside && !isStart && !isEnd && 'bg-accent text-accent-foreground rounded-none',\n\n // Connecting the Caps to the Strip (Rectangular inside edges)\n isStart && end && 'rounded-l-md rounded-r-none',\n isEnd && start && 'rounded-r-md rounded-l-none',\n // If no end date yet, Start should be fully rounded\n isStart && !end && 'rounded-md',\n\n // Muted/Disabled logic\n !isInside && isTodayDate && !isStart && !isEnd && 'bg-accent/50 text-accent-foreground rounded-md',\n (isOutside || isDisabled) && 'text-muted-foreground opacity-50',\n isDisabled && 'cursor-not-allowed'\n );\n }\n\n isDateDisabled(date: Date): boolean {\n return this.disablePastDates ? isBefore(date, startOfDay(new Date())) : false;\n }\n\n // --- CVA Implementation ---\n writeValue(val: DateRange | null): void {\n if (val) {\n this.value = val;\n if (val.start) this.viewDate = val.start;\n this.generateDays();\n this.generateYears();\n }\n }\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n}\n","import {\n Component, Input, forwardRef, ElementRef, ViewChild, HostListener, ChangeDetectorRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { computePosition, flip, shift, offset, autoUpdate, size } from '@floating-ui/dom';\nimport { cn } from './utils/cn';\nimport { RangeCalendarComponent } from './range-calendar.component';\nimport { format } from 'date-fns';\nimport { InputComponent } from './input.component';\nimport { DateRange } from './types/date-range';\n\n@Component({\n selector: 'tolle-date-range-picker',\n standalone: true,\n imports: [CommonModule, FormsModule, RangeCalendarComponent, InputComponent],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => DateRangePickerComponent),\n multi: true\n }\n ],\n template: `\n <div class=\"relative w-full\" #triggerContainer>\n <tolle-input\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [ngModel]=\"displayValue\"\n [class]=\"class\"\n >\n <div suffix class=\"flex items-center gap-1.5 cursor-pointer\">\n <i\n *ngIf=\"(value.start || value.end) && !disabled\"\n (click)=\"clear($event)\"\n class=\"ri-close-line cursor-pointer text-muted-foreground hover:text-foreground transition-colors\"\n ></i>\n\n <i\n (click)=\"togglePopover($event)\"\n class=\"ri-calendar-line cursor-pointer text-muted-foreground hover:text-primary transition-colors\"\n ></i>\n </div>\n </tolle-input>\n\n <div\n #popover\n *ngIf=\"isOpen\"\n class=\"fixed z-50\"\n style=\"visibility: hidden;\"\n >\n <tolle-range-calendar class=\"shadow-lg\"\n [ngModel]=\"value\"\n (rangeSelect)=\"onCalendarSelect($event)\"\n [disablePastDates]=\"disablePastDates\"\n ></tolle-range-calendar>\n </div>\n </div>\n `\n})\nexport class DateRangePickerComponent implements ControlValueAccessor {\n @Input() disabled = false;\n @Input() placeholder = 'Pick a date range';\n @Input() class = '';\n @Input() disablePastDates = false;\n @Input() size: 'xs' | 'sm' | 'default' | 'lg' = 'default';\n\n @ViewChild('triggerContainer') triggerContainer!: ElementRef;\n @ViewChild('popover') popover!: ElementRef;\n\n value: DateRange = { start: null, end: null };\n isOpen = false;\n cleanupAutoUpdate?: () => void;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n get displayValue(): string {\n if (!this.value.start) return '';\n\n const startStr = format(this.value.start, 'MMM dd, yyyy');\n if (!this.value.end) return startStr;\n\n const endStr = format(this.value.end, 'MMM dd, yyyy');\n return `${startStr} - ${endStr}`;\n }\n\n onCalendarSelect(range: DateRange) {\n this.value = range;\n this.onChange(this.value);\n\n // Close only if range is complete\n if (range.start && range.end) {\n setTimeout(() => this.close(), 150);\n }\n }\n\n togglePopover(event: MouseEvent) {\n event.stopPropagation();\n if (this.disabled) return;\n this.isOpen ? this.close() : this.open();\n }\n\n open() {\n this.isOpen = true;\n setTimeout(() => this.updatePosition());\n }\n\n close() {\n this.isOpen = false;\n if (this.cleanupAutoUpdate) {\n this.cleanupAutoUpdate();\n this.cleanupAutoUpdate = undefined;\n }\n }\n\n clear(event: MouseEvent) {\n event.stopPropagation();\n this.value = { start: null, end: null };\n this.onChange(this.value);\n this.cdr.markForCheck();\n }\n\n // --- Floating UI Positioning with Fixed Strategy ---\n private updatePosition() {\n if (!this.triggerContainer || !this.popover) return;\n\n this.cleanupAutoUpdate = autoUpdate(\n this.triggerContainer.nativeElement,\n this.popover.nativeElement,\n () => {\n computePosition(this.triggerContainer.nativeElement, this.popover.nativeElement, {\n placement: 'bottom-end',\n strategy: 'fixed', // Use fixed to escape column layout\n middleware: [\n offset(4),\n flip({\n fallbackAxisSideDirection: 'start',\n padding: 8\n }),\n shift({ padding: 8 }),\n size({\n apply({ rects, elements, availableHeight }) {\n // Constrain popover to available space\n Object.assign(elements.floating.style, {\n maxHeight: `${Math.min(400, availableHeight)}px`,\n minWidth: `${Math.max(rects.reference.width, 320)}px`, // Calendar minimum width\n });\n }\n })\n ],\n }).then(({ x, y, placement }) => {\n Object.assign(this.popover.nativeElement.style, {\n left: `${x}px`,\n top: `${y}px`,\n visibility: 'visible',\n });\n\n // Optional: Add placement class for styling\n this.popover.nativeElement.classList.remove('calendar-top', 'calendar-bottom');\n if (placement.includes('top')) {\n this.popover.nativeElement.classList.add('calendar-top');\n } else {\n this.popover.nativeElement.classList.add('calendar-bottom');\n }\n });\n }\n );\n }\n\n @HostListener('document:mousedown', ['$event'])\n onClickOutside(event: MouseEvent) {\n if (this.isOpen &&\n !this.triggerContainer.nativeElement.contains(event.target) &&\n !this.popover?.nativeElement.contains(event.target)) {\n this.close();\n }\n }\n\n @HostListener('window:resize')\n onWindowResize() {\n if (this.isOpen) {\n this.close(); // Close on resize for simplicity\n }\n }\n\n @HostListener('window:scroll')\n onWindowScroll() {\n // Floating-UI's autoUpdate handles scroll repositioning\n }\n\n // --- Control Value Accessor ---\n onChange: any = () => {};\n onTouched: any = () => {};\n\n writeValue(val: DateRange | null): void {\n if (val) {\n this.value = { ...val };\n } else {\n this.value = { start: null, end: null };\n }\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled = isDisabled; }\n\n protected cn = cn;\n}\n","import {Component, Input} from '@angular/core';\n\n@Component({\n selector: 'tolle-dropdown-item',\n standalone: true,\n imports: [],\n template: `\n <div [class]=\"cn('relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50', class)\">\n <ng-content></ng-content>\n </div>\n `,\n styles: ``\n})\nexport class DropdownItemComponent {\n @Input() class: string = '';\n protected readonly cn = (c1: string, c2: string) => `${c1} ${c2}`;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'tolle-dropdown-label',\n standalone: true,\n imports: [],\n template: `\n <div class=\"px-2 py-1.5 text-xs font-semibold text-muted-foreground uppercase tracking-wider\">\n <ng-content></ng-content>\n </div>\n `,\n styles: ``\n})\nexport class DropdownLabelComponent {\n\n}\n","import {Component, TemplateRef, ViewChild} from '@angular/core';\n\n@Component({\n selector: 'tolle-dropdown-menu',\n standalone: true,\n imports: [],\n template: `\n <ng-template #menuTemplate>\n <div class=\"z-[1000] min-w-[12rem] overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md animate-in fade-in zoom-in-95\">\n <ng-content></ng-content>\n </div>\n </ng-template>\n `,\n styles: ``\n})\nexport class DropdownMenuComponent {\n @ViewChild('menuTemplate') templateRef!: TemplateRef<any>;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'tolle-dropdown-separator',\n standalone: true,\n imports: [],\n template: `<div class=\"-mx-1 my-1 h-px bg-border\"></div>`,\n styles: ``\n})\nexport class DropdownSeparatorComponent {\n\n}\n","import { Directive, Input, ElementRef, OnDestroy, HostListener, ViewContainerRef } from '@angular/core';\nimport { computePosition, flip, shift, offset, autoUpdate } from '@floating-ui/dom';\nimport { DropdownMenuComponent } from './dropdown-menu.component';\n\n@Directive({\n selector: '[tolleDropdownTrigger]',\n standalone: true\n})\nexport class DropdownTriggerDirective implements OnDestroy {\n @Input('tolleDropdownTrigger') menu!: DropdownMenuComponent;\n\n private cleanup?: () => void;\n private isOpen = false;\n private menuElement?: HTMLElement;\n\n constructor(\n private el: ElementRef,\n private vcr: ViewContainerRef\n ) {}\n\n @HostListener('click')\n toggle() {\n this.isOpen ? this.close() : this.open();\n }\n\n private open() {\n this.isOpen = true;\n\n // Create the menu view\n const view = this.vcr.createEmbeddedView(this.menu.templateRef);\n this.menuElement = view.rootNodes[0] as HTMLElement;\n document.body.appendChild(this.menuElement);\n\n // Floating UI positioning logic\n this.cleanup = autoUpdate(this.el.nativeElement, this.menuElement, () => {\n computePosition(this.el.nativeElement, this.menuElement!, {\n placement: 'bottom-end',\n middleware: [\n offset(4), // Space between trigger and menu\n flip(), // Flip to top if space is tight\n shift({ padding: 8 }) // Prevent menu from hitting screen edges\n ]\n }).then(({ x, y }) => {\n Object.assign(this.menuElement!.style, {\n left: `${x}px`,\n top: `${y}px`,\n position: 'absolute'\n });\n });\n });\n\n // Close on outside click\n setTimeout(() => {\n document.addEventListener('click', this.outsideClick);\n });\n }\n\n private close() {\n this.isOpen = false;\n this.cleanup?.();\n this.menuElement?.remove();\n document.removeEventListener('click', this.outsideClick);\n }\n\n private outsideClick = (event: MouseEvent) => {\n if (!this.el.nativeElement.contains(event.target) && !this.menuElement?.contains(event.target as Node)) {\n this.close();\n }\n };\n\n ngOnDestroy() {\n this.close();\n }\n}\n","import { Component, Input, forwardRef, ViewChild, ElementRef, AfterViewInit } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-textarea',\n standalone: true,\n imports: [CommonModule, FormsModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TextareaComponent),\n multi: true\n }\n ],\n template: `\n <div class=\"flex flex-col gap-1.5 w-full\">\n <label\n *ngIf=\"label\"\n [for]=\"id\"\n [class]=\"computedLabelClass\"\n >\n {{ label }}\n </label>\n\n <div class=\"relative\">\n <textarea\n #textareaElement\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [rows]=\"rows\"\n [(ngModel)]=\"value\"\n (input)=\"handleInput($event)\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [class]=\"textareaClasses\"\n [style.resize]=\"(autoGrow || readonly || disabled) ? 'none' : 'vertical'\"\n [style.overflow]=\"autoGrow ? 'hidden' : 'auto'\"\n [attr.aria-invalid]=\"error\"\n [attr.aria-describedby]=\"error && errorMessage ? id + '-error' : null\"\n [attr.maxlength]=\"maxLength\"\n ></textarea>\n </div>\n\n <div *ngIf=\"(showCharacterCount || hint || errorMessage) && !disabled\" class=\"flex justify-between items-center px-1\">\n <p\n *ngIf=\"hint && !error\"\n class=\"text-xs text-muted-foreground transition-opacity duration-200\"\n [class.opacity-0]=\"isFocused && hideHintOnFocus\"\n >\n {{ hint }}\n </p>\n <p\n *ngIf=\"error && errorMessage\"\n [id]=\"id + '-error'\"\n class=\"text-xs text-destructive\"\n >\n {{ errorMessage }}\n </p>\n <p\n *ngIf=\"showCharacterCount\"\n class=\"text-[10px] uppercase tracking-wider text-muted-foreground ml-auto font-medium transition-opacity duration-200\"\n [class.opacity-0]=\"isFocused && hideCharacterCountOnFocus\"\n >\n {{ value.length || 0 }}{{ maxLength ? ' / ' + maxLength : '' }}\n </p>\n </div>\n </div>\n `\n})\nexport class TextareaComponent implements ControlValueAccessor, AfterViewInit {\n @ViewChild('textareaElement') textareaElement!: ElementRef<HTMLTextAreaElement>;\n\n @Input() id = `textarea-${Math.random().toString(36).substr(2, 9)}`;\n @Input() label = '';\n @Input() placeholder = '';\n @Input() hint = '';\n @Input() errorMessage = '';\n @Input() rows = 3;\n @Input() maxLength?: number;\n @Input() showCharacterCount = false;\n @Input() autoGrow = false;\n @Input() error = false;\n @Input() className = '';\n\n // Focus behavior\n @Input() hideHintOnFocus = true;\n @Input() hideCharacterCountOnFocus = false;\n\n // New States\n @Input() disabled = false;\n @Input() readonly = false;\n\n value: string = '';\n isFocused: boolean = false;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n ngAfterViewInit() {\n if (this.autoGrow) this.resize();\n }\n\n get computedLabelClass() {\n return cn(\n \"text-sm font-medium text-foreground leading-none transition-opacity duration-200\",\n this.disabled && \"opacity-50\"\n );\n }\n\n get textareaClasses() {\n return cn(\n // Base styles\n 'flex w-full rounded-md border bg-background px-3 py-2 text-sm',\n 'ring-offset-background transition-all duration-200',\n 'placeholder:text-muted-foreground',\n\n // Border and shadow\n 'border-input shadow-sm',\n\n // Minimum height\n 'min-h-[80px]',\n\n // Focus state - SIMPLE LIKE ZARDUI\n !(this.readonly || this.disabled) && [\n 'focus:outline-none',\n 'focus:ring-4',\n 'focus:ring-ring/30',\n 'focus:ring-offset-0',\n 'focus:shadow-none',\n // Border darkens on focus automatically\n 'focus:border-primary/80'\n ],\n\n // Error state\n this.error && [\n 'border-destructive',\n !(this.readonly || this.disabled) && [\n 'focus:border-destructive/80',\n 'focus:ring-destructive/30'\n ]\n ],\n\n // Disabled state\n this.disabled && [\n 'cursor-not-allowed opacity-50',\n 'border-opacity-50'\n ],\n\n // Readonly state\n this.readonly && [\n 'cursor-default',\n 'border-dashed',\n !this.disabled && 'focus:ring-0 focus:border-opacity-100'\n ],\n\n // Scrollbar styling\n 'scrollbar-thin scrollbar-thumb-muted scrollbar-track-transparent',\n\n this.className\n );\n }\n\n handleInput(event: any) {\n if (this.readonly || this.disabled) return;\n const val = event.target.value;\n this.value = val;\n this.onChange(val);\n if (this.autoGrow) this.resize();\n }\n\n onFocus(): void {\n this.isFocused = true;\n }\n\n onBlur(): void {\n this.isFocused = false;\n this.onTouched();\n }\n\n private resize() {\n const textarea = this.textareaElement.nativeElement;\n textarea.style.height = 'auto';\n textarea.style.height = `${textarea.scrollHeight}px`;\n }\n\n writeValue(value: any): void {\n this.value = value;\n if (this.autoGrow) setTimeout(() => this.resize());\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n}\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { trigger, transition, style, animate } from '@angular/animations';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from './utils/cn';\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 [&>i+div]:translate-y-[-3px] [&>i]:absolute [&>i]:left-4 [&>i]:top-4 [&>i]:text-foreground [&>i~div]:pl-7\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-red-500/50 text-red-500 dark:border-red-500 [&>i]:text-red-500\",\n success:\n \"border-emerald-500/50 text-emerald-700 dark:border-emerald-500 [&>i]:text-emerald-600 dark:text-emerald-400\",\n warning:\n \"border-amber-500/50 text-amber-700 dark:border-amber-500 [&>i]:text-amber-600 dark:text-amber-400\",\n info:\n \"border-blue-500/50 text-blue-700 dark:border-blue-500 [&>i]:text-blue-600 dark:text-blue-400\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\ntype AlertVariants = VariantProps<typeof alertVariants>;\n\n@Component({\n selector: 'tolle-alert',\n standalone: true,\n imports: [CommonModule],\n animations: [\n trigger('fade', [\n transition(':leave', [\n style({ opacity: 1, transform: 'scale(1)' }),\n animate('300ms ease-in-out', style({ opacity: 0, transform: 'scale(0.95)', height: 0, margin: 0, padding: 0 }))\n ])\n ])\n ],\n template: `\n <div\n *ngIf=\"!dismissed\"\n @fade\n [class]=\"cn(alertVariants({ variant }), class)\"\n role=\"alert\"\n >\n <ng-content select=\"[icon]\"></ng-content>\n\n <button\n *ngIf=\"dismissible\"\n (click)=\"dismiss()\"\n class=\"absolute right-2 top-2 rounded-md p-1 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n type=\"button\"\n >\n <i class=\"ri-close-line text-lg\"></i>\n <span class=\"sr-only\">Close</span>\n </button>\n\n <div>\n <h5 *ngIf=\"title\" class=\"mb-1 font-medium leading-none tracking-tight\">\n {{ title }}\n </h5>\n <div class=\"text-sm [&_p]:leading-relaxed opacity-90\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n `\n})\nexport class AlertComponent {\n @Input() variant: AlertVariants['variant'] = 'default';\n @Input() title?: string;\n @Input() class: string = '';\n @Input() dismissible: boolean = false;\n\n @Output() onClose = new EventEmitter<void>();\n\n dismissed = false;\n protected alertVariants = alertVariants;\n protected cn = cn;\n\n dismiss() {\n this.dismissed = true;\n this.onClose.emit();\n }\n}\n","import { ChangeDetectorRef, Component, Input, HostBinding } from '@angular/core';\nimport { cn } from './utils/cn';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'tolle-avatar',\n standalone: true,\n imports: [NgIf],\n template: `\n <!-- Image Layer -->\n <img *ngIf=\"src && !hasError\"\n [src]=\"src\"\n [alt]=\"alt\"\n (load)=\"onLoad()\"\n (error)=\"onError()\"\n [class.opacity-0]=\"isLoading\"\n class=\"h-full w-full object-cover transition-opacity duration-300\" />\n\n <!-- Fallback Layer -->\n <div *ngIf=\"hasError || !src || isLoading\" class=\"flex h-full w-full items-center justify-center bg-muted\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class AvatarComponent {\n @Input() src?: string;\n @Input() alt: string = '';\n @Input() size: 'sm' | 'default' | 'lg' | 'xl' = 'default';\n @Input() shape: 'circle' | 'square' = 'circle';\n\n // We remove @Input() class because standard class=\"\" attributes\n // on the tag will now work automatically with the host bindings.\n\n isLoading = true;\n hasError = false;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n onLoad() {\n this.isLoading = false;\n this.cdr.detectChanges();\n }\n\n onError() {\n this.isLoading = false;\n this.hasError = true;\n this.cdr.detectChanges();\n }\n\n // Apply styles directly to the <tolle-avatar> tag\n @HostBinding('class')\n get hostClasses() {\n return cn(\n // Layout & Shape\n \"relative flex shrink-0 overflow-hidden bg-muted\",\n this.shape === 'circle' ? 'rounded-full' : 'rounded-md',\n\n // Sizes\n this.size === 'sm' && \"h-8 w-8 text-xs\",\n this.size === 'default' && \"h-10 w-10\",\n this.size === 'lg' && \"h-16 w-16 text-lg\",\n this.size === 'xl' && \"h-24 w-24 text-xl\"\n );\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'tolle-avatar-fallback',\n standalone: true,\n imports: [],\n template: `\n <div class=\"flex h-full w-full items-center justify-center bg-muted text-muted-foreground font-medium uppercase\">\n <ng-content></ng-content>\n </div>\n `,\n styles: ``\n})\nexport class AvatarFallbackComponent {\n\n}\n","import {Component, Input} from '@angular/core';\nimport { cn } from \"./utils/cn\";\n\n@Component({\n selector: 'tolle-breadcrumb',\n standalone: true,\n imports: [],\n template: `\n <nav aria-label=\"breadcrumb\" [class]=\"cn('flex flex-wrap items-center break-words text-sm text-muted-foreground', class)\">\n <ol class=\"flex flex-wrap items-center gap-1.5 break-words\">\n <ng-content></ng-content>\n </ol>\n </nav>\n `,\n styles: ``\n})\nexport class BreadcrumbComponent {\n @Input() class: string = '';\n protected cn = cn;\n}\n","import {Component, Input} from '@angular/core';\nimport {NgIf, NgTemplateOutlet} from '@angular/common';\n\n@Component({\n selector: 'tolle-breadcrumb-link',\n standalone: true,\n imports: [\n NgIf,\n NgTemplateOutlet\n ],\n template: `\n <ng-template #content>\n <ng-content></ng-content>\n </ng-template>\n\n <ng-container *ngIf=\"active; else linkTemplate\">\n <span\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n class=\"font-normal text-foreground\"\n >\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </span>\n </ng-container>\n\n <ng-template #linkTemplate>\n <div class=\"transition-colors hover:text-foreground cursor-pointer\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n </ng-template>\n `,\n styles: ``\n})\nexport class BreadcrumbLinkComponent {\n @Input() active: boolean = false;\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'tolle-breadcrumb-separator',\n standalone: true,\n imports: [],\n template: `\n <li role=\"presentation\" aria-hidden=\"true\" class=\"[&>i]:size-3.5\">\n <ng-content>\n <i class=\"ri-arrow-right-s-line\"></i>\n </ng-content>\n </li>\n `,\n styles: ``\n})\nexport class BreadcrumbSeparatorComponent {\n\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'tolle-breadcrumb-item',\n standalone: true,\n imports: [],\n template: `\n <li class=\"inline-flex items-center gap-1.5\">\n <ng-content></ng-content>\n </li>\n `,\n styles: ``\n})\nexport class BreadcrumbItemComponent {\n\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from './utils/cn';\n\nconst emptyStateVariants = cva(\n \"flex flex-col items-center justify-center text-center animate-in fade-in duration-500\",\n {\n variants: {\n variant: {\n default: \"min-h-[400px] rounded-md border border-dashed border-border p-8 bg-background/50\",\n minimal: \"p-4 min-h-[200px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\ntype EmptyStateVariants = VariantProps<typeof emptyStateVariants>;\n\n@Component({\n selector: 'tolle-empty-state',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div [class]=\"cn(emptyStateVariants({ variant }), class)\">\n\n <div [class]=\"cn(\n 'flex items-center justify-center rounded-full bg-muted',\n variant === 'minimal' ? 'h-12 w-12' : 'h-20 w-20'\n )\">\n <ng-content select=\"[icon]\">\n <i [class]=\"cn(\n 'ri-inbox-line text-muted-foreground/60',\n variant === 'minimal' ? 'text-xl' : 'text-3xl'\n )\"></i>\n </ng-content>\n </div>\n\n <h3 [class]=\"cn(\n 'font-semibold text-foreground',\n variant === 'minimal' ? 'mt-2 text-sm' : 'mt-4 text-lg'\n )\">\n {{ title }}\n </h3>\n\n <p *ngIf=\"description\" [class]=\"cn(\n 'text-muted-foreground',\n variant === 'minimal' ? 'mt-1 text-xs' : 'mb-6 mt-2 max-w-sm text-sm'\n )\">\n {{ description }}\n </p>\n\n <div *ngIf=\"variant !== 'minimal'\" class=\"flex items-center justify-center gap-3\">\n <ng-content select=\"[actions]\"></ng-content>\n </div>\n </div>\n `\n})\nexport class EmptyStateComponent {\n @Input() variant: EmptyStateVariants['variant'] = 'default';\n @Input() title: string = 'No items found';\n @Input() description?: string;\n @Input() class: string = '';\n\n protected emptyStateVariants = emptyStateVariants;\n protected cn = cn;\n}\n","import { Component, Input, forwardRef, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-otp',\n standalone: true,\n imports: [CommonModule, FormsModule],\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OtpComponent),\n multi: true\n }],\n template: `\n <div class=\"relative flex items-center gap-2\">\n <input\n #hiddenInput\n type=\"text\"\n inputmode=\"numeric\"\n autocomplete=\"one-time-code\"\n [maxLength]=\"length\"\n class=\"absolute inset-0 opacity-0 cursor-default z-20\"\n [(ngModel)]=\"value\"\n (input)=\"onInputChange($event)\"\n (focus)=\"isFocused = true\"\n (blur)=\"isFocused = false\"\n [disabled]=\"disabled\"\n />\n\n <div *ngIf=\"auto\" class=\"flex items-center gap-2 pointer-events-none\">\n <div class=\"flex items-center\">\n <div *ngFor=\"let _ of [].constructor(length); let i = index\"\n [class]=\"getSlotClass(i)\"\n >\n {{ value[i] || '' }}\n <div *ngIf=\"isFocused && value.length === i\" class=\"absolute inset-0 flex items-center justify-center\">\n <div class=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\"></div>\n </div>\n </div>\n </div>\n </div>\n\n <div *ngIf=\"!auto\" class=\"flex items-center gap-2 pointer-events-none\">\n <ng-content></ng-content>\n </div>\n </div>\n `\n})\nexport class OtpComponent implements ControlValueAccessor {\n @Input() length = 6;\n @Input() disabled = false;\n @Input() auto = false; // The toggle for automatic slot generation\n\n value: string = '';\n isFocused = false;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n onInputChange(event: any) {\n const val = event.target.value.replace(/\\D/g, '');\n this.value = val;\n this.onChange(val);\n this.cdr.markForCheck();\n }\n\n // Visual logic for the automated slots\n getSlotClass(index: number) {\n const isActive = this.isFocused && this.value.length === index;\n\n return cn(\n 'relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-all bg-background',\n index === 0 && 'rounded-l-md border-l',\n index === this.length - 1 && 'rounded-r-md',\n isActive && 'z-30 ring-2 ring-ring ring-offset-background'\n );\n }\n\n writeValue(value: any): void { this.value = value || ''; this.cdr.markForCheck(); }\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n}\n","import { Component, Input } from '@angular/core';\nimport { cn } from \"./utils/cn\";\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'tolle-otp-slot',\n standalone: true,\n imports: [NgIf],\n template: `\n <div [class]=\"computedClass\">\n <span class=\"text-lg font-medium\">{{ char || '' }}</span>\n <div *ngIf=\"isActive && !char\" class=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div class=\"h-6 w-0.5 animate-caret-blink bg-foreground\"></div>\n </div>\n </div>\n `\n})\nexport class OtpSlotComponent {\n @Input() char: string | undefined = '';\n @Input() isActive: boolean = false;\n @Input() isFirst: boolean = false;\n @Input() isLast: boolean = false;\n @Input() class: string = '';\n protected cn = cn;\n\n get computedClass() {\n return cn(\n // Base styles (matching input container)\n 'relative flex h-10 w-10 items-center justify-center',\n 'transition-all duration-200',\n 'text-center font-medium select-none',\n\n // Border styling - exactly like input\n 'border border-input shadow-sm bg-background',\n\n // FOCUS STYLING - EXACTLY LIKE INPUT COMPONENT\n this.isActive && [\n // Darker border on focus\n 'border-primary/80',\n // Remove shadow on focus\n 'shadow-none',\n // Focus ring with same styling as input\n 'ring-4',\n 'ring-ring/30',\n 'ring-offset-0',\n // Ensure it's above other slots\n 'z-10'\n ],\n\n // Filled state\n this.char && !this.isActive && 'border-primary/60',\n\n // Border radius\n this.isFirst && 'rounded-l-md',\n this.isLast && 'rounded-r-md',\n\n // Remove left border for all but first slot\n !this.isFirst && '-ml-px',\n\n this.class\n );\n }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'tolle-otp-group',\n standalone: true,\n imports: [],\n template: `\n <div class=\"flex items-center\"><ng-content></ng-content></div>\n `,\n styles: ``\n})\nexport class OtpGroupComponent {\n\n}\n","\nimport { CommonModule } from '@angular/common';\nimport { computePosition, flip, shift, offset, autoUpdate } from '@floating-ui/dom';\nimport {Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, Output, ViewChild} from '@angular/core';\n\n@Component({\n selector: 'tolle-popover',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div class=\"inline-block\" #trigger (click)=\"toggle()\">\n <ng-content select=\"[trigger]\"></ng-content>\n </div>\n\n <div\n *ngIf=\"isOpen\"\n #popover\n class=\"absolute top-0 left-0 w-max z-[9999]\"\n >\n <ng-content></ng-content>\n </div>\n `,\n})\nexport class PopoverComponent implements OnDestroy {\n @Input() placement: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n @Output() onOpen = new EventEmitter<void>();\n @Output() onClose = new EventEmitter<void>();\n\n @ViewChild('trigger') triggerEl!: ElementRef;\n @ViewChild('popover') popoverEl!: ElementRef;\n\n isOpen = false;\n private cleanup?: () => void;\n\n toggle() {\n this.isOpen ? this.close() : this.open();\n }\n\n open() {\n this.isOpen = true;\n this.onOpen.emit();\n setTimeout(() => this.updatePosition());\n }\n\n close() {\n this.isOpen = false;\n this.onClose.emit();\n if (this.cleanup) this.cleanup();\n }\n\n private updatePosition() {\n if (!this.triggerEl || !this.popoverEl) return;\n\n this.cleanup = autoUpdate(\n this.triggerEl.nativeElement,\n this.popoverEl.nativeElement,\n () => {\n computePosition(this.triggerEl.nativeElement, this.popoverEl.nativeElement, {\n placement: this.placement,\n middleware: [offset(8), flip(), shift({ padding: 8 })],\n }).then(({ x, y }) => {\n Object.assign(this.popoverEl.nativeElement.style, {\n left: `${x}px`,\n top: `${y}px`,\n });\n });\n }\n );\n }\n\n @HostListener('document:mousedown', ['$event'])\n onClickOutside(event: MouseEvent) {\n if (\n this.isOpen &&\n !this.triggerEl.nativeElement.contains(event.target) &&\n !this.popoverEl?.nativeElement.contains(event.target)\n ) {\n this.close();\n }\n }\n\n ngOnDestroy() {\n if (this.cleanup) this.cleanup();\n }\n}\n","import {\n Component,\n Input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cn } from './utils/cn';\n\n@Component({\n selector: 'tolle-popover-content',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n [class]=\"cn(\n 'z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none',\n 'animate-in fade-in zoom-in-95 duration-200',\n class\n )\"\n role=\"dialog\"\n >\n <ng-content></ng-content>\n </div>\n `\n})\nexport class PopoverContentComponent {\n @Input() class = '';\n protected cn = cn;\n}\n","import { Injectable } from '@angular/core';\nimport {BehaviorSubject, Subject} from 'rxjs';\n\n@Injectable()\nexport class RadioService {\n private selectedValueSource = new BehaviorSubject<any>(null);\n selectedValue$ = this.selectedValueSource.asObservable();\n\n private disabledSource = new BehaviorSubject<boolean>(false);\n disabled$ = this.disabledSource.asObservable();\n\n select(value: any) {\n if (!this.disabledSource.value) {\n this.selectedValueSource.next(value);\n }\n }\n\n setDisabled(isDisabled: boolean) {\n this.disabledSource.next(isDisabled);\n }\n}\n","import {Component, Input, forwardRef, AfterContentInit, OnChanges} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { cn } from './utils/cn';\nimport {RadioService} from './radio-service';\n\n@Component({\n selector: 'tolle-radio-group',\n standalone: true,\n imports: [CommonModule],\n providers: [\n RadioService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => RadioGroupComponent),\n multi: true\n }\n ],\n template: `\n <div [class]=\"cn('grid gap-2', class)\" role=\"radiogroup\">\n <ng-content></ng-content>\n </div>\n `\n})\nexport class RadioGroupComponent implements ControlValueAccessor, OnChanges {\n @Input() class = '';\n @Input() disabled = false;\n @Input() name = `radio-group-${Math.random().toString(36).substring(2, 9)}`;\n\n value: any;\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private radioService: RadioService) {\n this.radioService.selectedValue$.subscribe(val => {\n this.value = val;\n this.onChange(val);\n });\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.radioService.setDisabled(isDisabled);\n }\n\n ngOnChanges() {\n this.radioService.setDisabled(this.disabled);\n }\n\n writeValue(value: any): void {\n this.value = value;\n this.radioService.select(value);\n }\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n\n protected readonly cn = cn;\n}\n","import { Component, Input, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { cn } from './utils/cn';\nimport { RadioService } from './radio-service';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'tolle-radio-item',\n standalone: true,\n imports: [CommonModule],\n template: `\n <div\n (click)=\"!isEffectiveDisabled && select()\"\n [class]=\"cn(\n 'flex items-center space-x-2 group py-1',\n isEffectiveDisabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer'\n )\"\n >\n <div [class]=\"cn(\n 'aspect-square h-4 w-4 rounded-full border border-primary text-primary transition-all flex items-center justify-center',\n 'ring-offset-background focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n !isEffectiveDisabled && 'group-hover:border-primary/70',\n isSelected ? 'bg-background' : 'bg-transparent',\n class\n )\">\n <div\n *ngIf=\"isSelected\"\n class=\"h-2.5 w-2.5 rounded-full bg-primary animate-in zoom-in-50 duration-200\"\n ></div>\n </div>\n\n <label class=\"text-sm font-medium leading-none select-none\" [class.cursor-pointer]=\"!isEffectiveDisabled\">\n <ng-content></ng-content>\n </label>\n </div>\n `\n})\nexport class RadioItemComponent implements OnInit, OnDestroy {\n @Input() value: any;\n @Input() disabled = false;\n @Input() class = '';\n\n isSelected = false;\n groupDisabled = false;\n\n private sub = new Subscription();\n\n get isEffectiveDisabled(): boolean {\n return this.disabled || this.groupDisabled;\n }\n\n // Inject ChangeDetectorRef to ensure UI updates when service emits\n constructor(\n private radioService: RadioService,\n private cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit() {\n // Listen for selection changes\n this.sub.add(\n this.radioService.selectedValue$.subscribe(val => {\n this.isSelected = (val === this.value);\n this.cdr.markForCheck(); // Trigger UI refresh\n })\n );\n\n // Listen for group-level disabled state\n this.sub.add(\n this.radioService.disabled$.subscribe(dis => {\n this.groupDisabled = dis;\n this.cdr.markForCheck(); // Trigger UI refresh\n })\n );\n }\n\n select() {\n this.radioService.select(this.value);\n }\n\n ngOnDestroy() {\n this.sub.unsubscribe(); // Clean up subscriptions\n }\n\n protected cn = cn;\n}\n","import {\n Component,\n Input,\n forwardRef,\n ElementRef,\n ViewChildren,\n QueryList,\n AfterViewInit,\n ChangeDetectorRef,\n OnChanges,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\nimport { cn } from './utils/cn';\n\nexport type SegmentItem = {\n label: string;\n value: any;\n disabled?: boolean;\n icon?: string; // Added: Optional icon class (e.g., 'ri-home-line')\n class?: string; // Added: Custom class for specific item wrapper\n data?: any; // Added: Extra data payload for custom templates\n}\n\n@Component({\n selector: 'tolle-segment',\n standalone: true,\n imports: [CommonModule, FormsModule],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => SegmentedComponent),\n multi: true\n }\n ],\n template: `\n <div\n #container\n [class]=\"cn(\n 'relative flex items-center p-1 bg-muted rounded-lg select-none w-full gap-1',\n class\n )\"\n role=\"tablist\"\n >\n <div\n class=\"absolute top-1 bottom-1 bg-background shadow-sm rounded-md transition-all duration-300 ease-[cubic-bezier(0.2,0.0,0.2,1)]\"\n [style.left.px]=\"gliderLeft\"\n [style.width.px]=\"gliderWidth\"\n [class.opacity-0]=\"!hasValue\"\n ></div>\n\n <button\n *ngFor=\"let item of items\"\n #itemEls\n type=\"button\"\n role=\"tab\"\n [disabled]=\"item.disabled || disabled\"\n [attr.aria-selected]=\"value === item.value\"\n (click)=\"select(item.value)\"\n [class]=\"cn(\n 'relative z-10 flex-1 px-3 py-1.5 text-sm font-medium transition-colors duration-200 rounded-md text-center focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n 'flex items-center justify-center gap-2',\n value === item.value\n ? 'text-foreground'\n : 'text-muted-foreground hover:text-foreground/70',\n item.disabled && 'opacity-50 cursor-not-allowed',\n item.class\n )\"\n >\n <ng-container *ngIf=\"itemTemplate; else defaultContent\">\n <ng-container *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item, selected: value === item.value }\">\n </ng-container>\n </ng-container>\n\n <ng-template #defaultContent>\n <i *ngIf=\"item.icon\" [class]=\"item.icon\"></i>\n <span class=\"truncate\">{{ item.label }}</span>\n </ng-template>\n </button>\n </div>\n `,\n styles: [`\n :host {\n display: block;\n }\n `]\n})\nexport class SegmentedComponent implements ControlValueAccessor, AfterViewInit, OnChanges {\n @Input() items: SegmentItem[] = [];\n @Input() class = '';\n @Input() disabled = false;\n @Input() itemTemplate?: TemplateRef<any>; // Allow custom content\n\n value: any = null;\n gliderLeft = 0;\n gliderWidth = 0;\n hasValue = false;\n\n @ViewChildren('itemEls') itemElements!: QueryList<ElementRef<HTMLElement>>;\n\n onChange: any = () => {};\n onTouched: any = () => {};\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngAfterViewInit() {\n setTimeout(() => this.updateGlider());\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Recalculate if items change or if value changes externally\n if (changes['items'] && !changes['items'].firstChange) {\n setTimeout(() => this.updateGlider());\n }\n }\n\n select(val: any) {\n if (this.disabled) return;\n const item = this.items.find(i => i.value === val);\n if (item?.disabled) return;\n\n this.value = val;\n this.onChange(val);\n this.onTouched();\n this.updateGlider();\n }\n\n updateGlider() {\n if (!this.itemElements || !this.items.length) return;\n\n const index = this.items.findIndex(i => i.value === this.value);\n\n if (index === -1) {\n this.hasValue = false;\n this.gliderWidth = 0;\n return;\n }\n\n const activeElement = this.itemElements.get(index)?.nativeElement;\n\n if (activeElement) {\n this.hasValue = true;\n this.gliderLeft = activeElement.offsetLeft;\n this.gliderWidth = activeElement.offsetWidth;\n this.cdr.detectChanges();\n }\n }\n\n // CVA Implementation\n writeValue(val: any): void {\n this.value = val;\n setTimeout(() => this.updateGlider());\n }\n\n registerOnChange(fn: any): void { this.onChange = fn; }\n registerOnTouched(fn: any): void { this.onTouched = fn; }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n protected cn = cn;\n}\n","import { Component, Input, OnChanges, SimpleChanges } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { cn } from './utils/cn';\n\n// --- Interfaces ---\nexport interface SidebarItem {\n title: string;\n url?: string;\n icon?: string;\n isActive?: boolean;\n items?: SidebarItem[];\n id?: string;\n expanded?: boolean;\n}\n\nexport interface SidebarGroup {\n title: string;\n items: SidebarItem[];\n id?: string;\n}\n\n@Component({\n selector: 'tolle-sidebar',\n standalone: true,\n imports: [CommonModule, RouterModule],\n template: `\n <aside [class]=\"cn(\n 'flex flex-col h-full border-r bg-background transition-[width] duration-300 ease-in-out shrink-0 overflow-hidden',\n collapsed ? 'w-16' : 'w-64',\n class\n )\">\n <div class=\"flex h-14 shrink-0 items-center border-b px-3 overflow-hidden whitespace-nowrap\">\n <ng-content select=\"[header]\"></ng-content>\n </div>\n\n <div class=\"flex-1 min-h-0 overflow-y-auto overflow-x-hidden py-4 px-3 custom-scrollbar\">\n\n @for (group of items; track group.id || group.title || $index; let gIndex = $index) {\n <div class=\"mb-6\">\n\n <div [class]=\"cn(\n 'mb-2 px-2 text-xs font-semibold uppercase tracking-wider text-muted-foreground/70 transition-all duration-200 overflow-hidden',\n collapsed ? 'opacity-0 h-0 mb-0 px-0' : 'opacity-100 h-auto'\n )\">\n {{ group.title }}\n </div>\n\n <div class=\"flex flex-col gap-1\">\n @for (item of group.items; track item.id || item.title || $index; let i = $index) {\n\n @if (item.items && item.items.length) {\n <div class=\"relative\">\n <button\n type=\"button\"\n (click)=\"toggleParent(group, item, gIndex, i)\"\n [disabled]=\"collapsed\"\n [attr.aria-expanded]=\"isParentExpanded(group, item, gIndex, i)\"\n [class]=\"cn(\n 'group w-full relative flex items-center rounded-md px-3 py-2 text-sm font-medium transition-colors',\n 'hover:bg-accent hover:text-accent-foreground',\n isParentExpanded(group, item, gIndex, i) ? 'text-foreground bg-accent/50' : 'text-muted-foreground',\n collapsed ? 'justify-center' : 'justify-start'\n )\"\n >\n <i [class]=\"cn(\n item.icon || 'ri-circle-fill',\n 'h-4 w-4 text-lg shrink-0 transition-transform',\n !collapsed && 'group-hover:scale-110'\n )\"></i>\n\n <span [class]=\"cn(\n 'truncate transition-all duration-300',\n collapsed ? 'opacity-0 w-0 ml-0' : 'opacity-100 w-auto ml-3'\n )\">\n {{ item.title }}\n </span>\n\n @if (!collapsed) {\n <i [class]=\"cn(\n 'ri-arrow-down-s-line ml-auto transition-transform duration-300',\n isParentExpanded(group, item, gIndex, i) ? 'rotate-180' : ''\n )\"></i>\n }\n </button>\n\n <div [class]=\"cn(\n 'grid transition-[grid-template-rows] duration-300 ease-in-out',\n isParentExpanded(group, item, gIndex, i) && !collapsed ? 'grid-rows-[1fr] opacity-100' : 'grid-rows-[0fr] opacity-0'\n )\">\n <div class=\"overflow-hidden\">\n <div class=\"flex flex-col gap-1 mt-1 ml-4 border-l border-border/50 pl-2\">\n\n @for (subItem of item.items; track subItem.id || subItem.title || $index; let j = $index) {\n\n @if (subItem.items && subItem.items.length) {\n <div class=\"relative\">\n <button\n type=\"button\"\n (click)=\"toggleChild(group, item, subItem, gIndex, i, j); $event.stopPropagation()\"\n [class]=\"cn(\n 'group w-full relative flex items-center rounded-md px-3 py-1.5 text-sm font-medium transition-colors',\n 'hover:bg-accent hover:text-accent-foreground text-muted-foreground',\n isChildExpanded(group, item, subItem, gIndex, i, j) ? 'text-foreground bg-accent/30' : ''\n )\"\n >\n <span class=\"w-1.5 h-1.5 rounded-full bg-border shrink-0\"></span>\n <span class=\"ml-2 truncate\">{{ subItem.title }}</span>\n <i [class]=\"cn(\n 'ri-arrow-right-s-line ml-auto transition-transform duration-300 text-xs',\n isChildExpanded(group, item, subItem, gIndex, i, j) ? 'rotate-90' : ''\n )\"></i>\n </button>\n\n <div [class]=\"cn(\n 'grid transition-[grid-template-rows] duration-300 ease-in-out',\n isChildExpanded(group, item, subItem, gIndex, i, j) ? 'grid-rows-[1fr] opacity-100' : 'grid-rows-[0fr] opacity-0'\n )\">\n <div class=\"overflow-hidden\">\n <div class=\"flex flex-col gap-1 mt-1 ml-4 border-l border-border/30 pl-2\">\n @for (grandChild of subItem.items; track grandChild.title) {\n <a\n [routerLink]=\"grandChild.url\"\n routerLinkActive=\"bg-accent/50 text-accent-foreground\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n class=\"flex items-center gap-2 hover:no-underline rounded-md px-3 py-1.5 text-sm transition-colors hover:bg-accent hover:text-accent-foreground text-muted-foreground whitespace-nowrap\"\n >\n <span class=\"w-1.5 h-1.5 rounded-full bg-border/70 shrink-0\"></span>\n <span class=\"truncate\">{{ grandChild.title }}</span>\n </a>\n }\n </div>\n </div>\n </div>\n </div>\n }\n @else {\n <a\n [routerLink]=\"subItem.url\"\n routerLinkActive=\"bg-accent/50 text-accent-foreground\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n class=\"flex items-center gap-2 hover:no-underline rounded-md px-3 py-1.5 text-sm transition-colors hover:bg-accent hover:text-accent-foreground text-muted-foreground whitespace-nowrap\"\n >\n <span class=\"w-1.5 h-1.5 rounded-full bg-border shrink-0\"></span>\n <span class=\"truncate\">{{ subItem.title }}</span>\n </a>\n }\n }\n </div>\n </div>\n </div>\n </div>\n }\n @else {\n <a\n [routerLink]=\"item.url\"\n routerLinkActive=\"bg-primary/10 text-primary\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [class]=\"cn(\n 'group relative hover:no-underline flex items-center rounded-md px-3 py-2 text-sm font-medium transition-colors',\n 'hover:bg-accent hover:text-accent-foreground text-muted-foreground',\n collapsed ? 'justify-center' : 'justify-start'\n )\"\n >\n <i [class]=\"cn(\n item.icon || 'ri-circle-fill',\n 'h-4 w-4 text-lg shrink-0 transition-transform',\n !collapsed && 'group-hover:scale-110'\n )\"></i>\n <span [class]=\"cn(\n 'truncate transition-all duration-300',\n collapsed ? 'opacity-0 w-0 ml-0' : 'opacity-100 w-auto ml-3'\n )\">\n {{ item.title }}\n </span>\n </a>\n }\n }\n </div>\n </div>\n }\n </div>\n\n <div class=\"border-t shrink-0 p-3 overflow-hidden whitespace-nowrap\">\n <ng-content select=\"[footer]\"></ng-content>\n </div>\n </aside>\n `,\n styles: [`\n :host { display: block; height: 100%; }\n .custom-scrollbar { scrollbar-width: thin; scrollbar-color: rgba(156, 163, 175, 0.3) transparent; }\n .custom-scrollbar::-webkit-scrollbar { width: 4px; }\n .custom-scrollbar::-webkit-scrollbar-track { background: transparent; }\n .custom-scrollbar::-webkit-scrollbar-thumb { background-color: rgba(156, 163, 175, 0.3); border-radius: 20px; }\n button:disabled { cursor: not-allowed; opacity: 0.6; }\n * { transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); }\n .ml-4 { margin-left: 1rem; }\n .border-l { border-left-width: 1px; }\n `]\n})\nexport class SidebarComponent implements OnChanges {\n @Input() items: SidebarGroup[] = [];\n @Input() collapsed = false;\n @Input() class = '';\n\n expandedParents = new Set<string>();\n expandedChildren = new Set<string>();\n\n protected readonly cn = cn;\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes['collapsed'] && this.collapsed) {\n this.collapseAll();\n return;\n }\n if (changes['items']) {\n this.initializeState();\n }\n }\n\n // --- STATE INIT ---\n private initializeState() {\n this.collapseAll();\n if (!this.items) return;\n\n this.items.forEach((group, gIndex) => {\n group.items.forEach((item, iIndex) => {\n const parentId = this.getParentId(group, item, gIndex, iIndex);\n\n if (item.expanded) {\n this.expandedParents.add(parentId);\n }\n\n if (item.items) {\n item.items.forEach((subItem, sIndex) => {\n if (subItem.expanded) {\n const childId = this.getChildId(group, item, subItem, gIndex, iIndex, sIndex);\n this.expandedChildren.add(childId);\n this.expandedParents.add(parentId);\n }\n });\n }\n });\n });\n }\n\n // --- ID GENERATORS (Now using Group Index correctly) ---\n getGroupId(group: SidebarGroup, index: number): string {\n return group.id || group.title || `g-${index}`;\n }\n\n getParentId(group: SidebarGroup, item: SidebarItem, gIndex: number, iIndex: number): string {\n const groupId = this.getGroupId(group, gIndex);\n const itemId = item.id || item.title || `p-${iIndex}`;\n return `${groupId}__${itemId}`;\n }\n\n getChildId(group: SidebarGroup, parent: SidebarItem, subItem: SidebarItem, gIndex: number, iIndex: number, sIndex: number): string {\n const parentId = this.getParentId(group, parent, gIndex, iIndex);\n const subItemId = subItem.id || subItem.title || `c-${sIndex}`;\n return `${parentId}__${subItemId}`;\n }\n\n // --- ACTIONS ---\n toggleParent(group: SidebarGroup, item: SidebarItem, gIndex: number, iIndex: number) {\n if (this.collapsed) return;\n const id = this.getParentId(group, item, gIndex, iIndex);\n\n // Create new Set reference to ensure Change Detection triggers\n const newSet = new Set(this.expandedParents);\n if (newSet.has(id)) {\n newSet.delete(id);\n } else {\n newSet.add(id);\n }\n this.expandedParents = newSet;\n }\n\n toggleChild(group: SidebarGroup, parent: SidebarItem, subItem: SidebarItem, gIndex: number, iIndex: number, sIndex: number) {\n const id = this.getChildId(group, parent, subItem, gIndex, iIndex, sIndex);\n\n // Create new Set reference\n const newSet = new Set(this.expandedChildren);\n if (newSet.has(id)) {\n newSet.delete(id);\n } else {\n newSet.add(id);\n }\n this.expandedChildren = newSet;\n }\n\n private collapseAll() {\n this.expandedParents = new Set();\n this.expandedChildren = new Set();\n }\n\n // --- TEMPLATE HELPERS ---\n isParentExpanded(group: SidebarGroup, item: SidebarItem, gIndex: number, iIndex: number): boolean {\n return this.expandedParents.has(this.getParentId(group, item, gIndex, iIndex));\n }\n\n isChildExpanded(group: SidebarGroup, parent: SidebarItem, subItem: SidebarItem, gIndex: number, iIndex: number, sIndex: number): boolean {\n return this.expandedChildren.has(this.getChildId(group, parent, subItem, gIndex, iIndex, sIndex));\n }\n}\n","/*\n * Public API Surface of tolle\n */\n\nexport * from './lib/utils/cn';\nexport * from './lib/button.component';\nexport * from './lib/input.component';\nexport * from './lib/card.component';\nexport * from './lib/select.component';\nexport * from './lib/select-item.component';\nexport * from './lib/select-group.component';\nexport * from './lib/select-separator.component';\nexport * from './lib/switch.component';\nexport * from './lib/badge.component';\nexport * from './lib/skeleton.component';\nexport * from './lib/checkbox.component';\nexport * from './lib/tooltip.directive';\nexport * from './lib/toast.service'\nexport * from './lib/toaster.component';\nexport * from './lib/tolle-config';\nexport * from './lib/multi-select.component'\nexport * from './lib/calendar.component'\nexport * from './lib/masked-input.component'\nexport * from './lib/date-picker.component'\nexport * from './lib/pagination.component'\nexport * from './lib/data-table.component'\nexport * from './lib/tolle-cell.directive'\nexport * from './lib/accordion-item.component'\nexport * from './lib/accordion.component'\nexport * from './lib/modal.component'\nexport * from './lib/modal-ref'\nexport * from './lib/modal.service'\nexport * from './lib/modal-stack.service'\nexport * from './lib/modal'\nexport * from './lib/button-group.component'\nexport * from './lib/date-range-picker.component'\nexport * from './lib/range-calendar.component'\nexport * from './lib/theme.service'\nexport * from './lib/dropdown-item.component';\nexport * from './lib/dropdown-label.component'\nexport * from './lib/dropdown-menu.component'\nexport * from './lib/dropdown-separator.component';\nexport * from './lib/dropdown-trigger.directive';\nexport * from './lib/textarea.component';\nexport * from './lib/alert.component';\nexport * from './lib/avatar.component';\nexport * from './lib/avatar-fallback.component';\nexport * from './lib/breadcrumb.component';\nexport * from './lib/breadcrumb-link.component';\nexport * from './lib/breadcrumb-separator.component';\nexport * from './lib/breadcrumb-item.component';\nexport * from './lib/empty-state.component';\nexport * from './lib/otp.component';\nexport * from './lib/otp-slot.component';\nexport * from './lib/otp-group.component';\nexport * from './lib/popover.component';\nexport * from './lib/popover-content.component';\nexport * from './lib/radio-group.component';\nexport * from './lib/radio-item.component';\nexport * from './lib/segment.component';\nexport * from './lib/sidebar.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SelectService","i2","i3","i1.ModalRef","i1","i2.ModalStackService","i1.RadioService"],"mappings":"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"}
|