angular-tailwind-components 1.0.4 → 1.0.6
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-tailwind-components.mjs","sources":["../../../projects/angular-tailwind-components/src/lib/models/types.ts","../../../projects/angular-tailwind-components/src/lib/models/icons.ts","../../../projects/angular-tailwind-components/src/lib/components/tailwind.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tooltip/tooltip.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tooltip/tooltip.component.html","../../../projects/angular-tailwind-components/src/lib/directives/tooltip/tooltip.directive.ts","../../../projects/angular-tailwind-components/src/lib/components/button/button.component.ts","../../../projects/angular-tailwind-components/src/lib/components/button/button.component.html","../../../projects/angular-tailwind-components/src/lib/tokens/tokens.ts","../../../projects/angular-tailwind-components/src/lib/components/icon/icon.component.ts","../../../projects/angular-tailwind-components/src/lib/components/icon/icon.component.html","../../../projects/angular-tailwind-components/src/lib/components/input/input.component.ts","../../../projects/angular-tailwind-components/src/lib/components/input/input.component.html","../../../projects/angular-tailwind-components/src/lib/components/checkbox/checkbox.component.ts","../../../projects/angular-tailwind-components/src/lib/components/checkbox/checkbox.component.html","../../../projects/angular-tailwind-components/src/lib/components/radio/radio-group.component.ts","../../../projects/angular-tailwind-components/src/lib/components/radio/radio-group.component.html","../../../projects/angular-tailwind-components/src/lib/components/select/select.component.ts","../../../projects/angular-tailwind-components/src/lib/components/select/select.component.html","../../../projects/angular-tailwind-components/src/lib/components/toggle/toggle.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toggle/toggle.component.html","../../../projects/angular-tailwind-components/src/lib/components/badge/badge.component.ts","../../../projects/angular-tailwind-components/src/lib/components/badge/badge.component.html","../../../projects/angular-tailwind-components/src/lib/components/card/card.component.ts","../../../projects/angular-tailwind-components/src/lib/components/card/card.component.html","../../../projects/angular-tailwind-components/src/lib/components/alert/alert.component.ts","../../../projects/angular-tailwind-components/src/lib/components/alert/alert.component.html","../../../projects/angular-tailwind-components/src/lib/components/spinner/spinner.component.ts","../../../projects/angular-tailwind-components/src/lib/components/spinner/spinner.component.html","../../../projects/angular-tailwind-components/src/lib/components/modal/modal.component.ts","../../../projects/angular-tailwind-components/src/lib/components/modal/modal.component.html","../../../projects/angular-tailwind-components/src/lib/components/modal/modal-title.component.ts","../../../projects/angular-tailwind-components/src/lib/components/modal/modal-content.component.ts","../../../projects/angular-tailwind-components/src/lib/components/modal/modal-footer.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab.component.html","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab-group.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab-group.component.html","../../../projects/angular-tailwind-components/src/lib/components/progress-bar/progress-bar.component.ts","../../../projects/angular-tailwind-components/src/lib/components/progress-bar/progress-bar.component.html","../../../projects/angular-tailwind-components/src/lib/components/menu/menu.component.ts","../../../projects/angular-tailwind-components/src/lib/components/menu/menu.component.html","../../../projects/angular-tailwind-components/src/lib/components/drawer/drawer.component.ts","../../../projects/angular-tailwind-components/src/lib/components/drawer/drawer.component.html","../../../projects/angular-tailwind-components/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/angular-tailwind-components/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/angular-tailwind-components/src/lib/components/pagination/pagination.component.ts","../../../projects/angular-tailwind-components/src/lib/components/pagination/pagination.component.html","../../../projects/angular-tailwind-components/src/lib/components/tag/tag.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tag/tag.component.html","../../../projects/angular-tailwind-components/src/lib/components/table/table.component.ts","../../../projects/angular-tailwind-components/src/lib/components/table/table.component.html","../../../projects/angular-tailwind-components/src/lib/components/date-picker/date-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/date-picker/date-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/time-picker/time-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/time-picker/time-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/datetime-picker/datetime-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/datetime-picker/datetime-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/stepper/step.component.ts","../../../projects/angular-tailwind-components/src/lib/components/stepper/step.component.html","../../../projects/angular-tailwind-components/src/lib/components/stepper/stepper.component.ts","../../../projects/angular-tailwind-components/src/lib/components/stepper/stepper.component.html","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion-item.component.ts","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion-item.component.html","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion.component.ts","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion.component.html","../../../projects/angular-tailwind-components/src/lib/ref/modal/modal.ref.ts","../../../projects/angular-tailwind-components/src/lib/services/modal/modal.service.ts","../../../projects/angular-tailwind-components/src/lib/services/toast/toast.service.ts","../../../projects/angular-tailwind-components/src/lib/components/toast/toast.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toast/toast.component.html","../../../projects/angular-tailwind-components/src/lib/components/notification/notification.component.ts","../../../projects/angular-tailwind-components/src/lib/components/notification/notification.component.html","../../../projects/angular-tailwind-components/src/lib/components/message/message.component.ts","../../../projects/angular-tailwind-components/src/lib/components/message/message.component.html","../../../projects/angular-tailwind-components/src/lib/components/skeleton/skeleton.component.ts","../../../projects/angular-tailwind-components/src/lib/components/skeleton/skeleton.component.html","../../../projects/angular-tailwind-components/src/lib/components/toolbar/toolbar.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toolbar/toolbar.component.html","../../../projects/angular-tailwind-components/src/lib/components/divider/divider.component.ts","../../../projects/angular-tailwind-components/src/lib/components/divider/divider.component.html","../../../projects/angular-tailwind-components/src/lib/components/meter/meter.component.ts","../../../projects/angular-tailwind-components/src/lib/components/meter/meter.component.html","../../../projects/angular-tailwind-components/src/lib/components/slider/slider.component.ts","../../../projects/angular-tailwind-components/src/lib/components/slider/slider.component.html","../../../projects/angular-tailwind-components/src/lib/components/index.ts","../../../projects/angular-tailwind-components/src/public-api.ts","../../../projects/angular-tailwind-components/src/angular-tailwind-components.ts"],"sourcesContent":["/** Common types used across all components */\n\n/** Size variants for components */\nexport type TailwindSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** Color variants for buttons and interactive elements */\nexport type TailwindColor = 'primary' | 'secondary' | 'danger' | 'success' | 'warning' | 'info';\n\n/** Button kinds */\nexport type TailwindButtonKind = 'solid' | 'outlined' | 'ghost' | 'text';\n\n/** Alert/feedback color variants */\nexport type TailwindSeverity = 'success' | 'warning' | 'danger' | 'info';\n\n/** Position variants for overlays */\nexport type TailwindPosition = 'top' | 'bottom' | 'left' | 'right';\n\n/** Shape variants */\nexport type TailwindShape = 'rounded' | 'pill' | 'square';\n\n/** Icon dimensions: `normal` = 24×24, `small` = 16×16 */\nexport type TailwindIconSize = 'normal' | 'small';\n\n/** Option interface for select/radio/checkbox groups */\nexport interface TailwindOption<T = unknown> {\n value: T;\n label: string;\n disabled?: boolean;\n}\n\nexport interface TailwindOptionGroup<T = unknown> extends TailwindOption<T> {\n description?: string;\n}\n\nexport interface TailwindMenuItem {\n label?: string;\n icon?: string;\n disabled?: boolean;\n divider?: boolean;\n value?: string;\n}\n","/** Heroicons icon name (kebab-case). SVG assets live in `public/icons/` (outline 24×24). */\nexport const TAILWIND_HERO_ICON_NAMES = [\n 'academic-cap',\n 'adjustments-horizontal',\n 'adjustments-vertical',\n 'archive-box',\n 'archive-box-arrow-down',\n 'archive-box-x-mark',\n 'arrow-down',\n 'arrow-down-circle',\n 'arrow-down-left',\n 'arrow-down-on-square',\n 'arrow-down-on-square-stack',\n 'arrow-down-right',\n 'arrow-down-tray',\n 'arrow-left',\n 'arrow-left-circle',\n 'arrow-left-end-on-rectangle',\n 'arrow-left-on-rectangle',\n 'arrow-left-start-on-rectangle',\n 'arrow-long-down',\n 'arrow-long-left',\n 'arrow-long-right',\n 'arrow-long-up',\n 'arrow-path',\n 'arrow-path-rounded-square',\n 'arrow-right',\n 'arrow-right-circle',\n 'arrow-right-end-on-rectangle',\n 'arrow-right-on-rectangle',\n 'arrow-right-start-on-rectangle',\n 'arrow-small-down',\n 'arrow-small-left',\n 'arrow-small-right',\n 'arrow-small-up',\n 'arrows-pointing-in',\n 'arrows-pointing-out',\n 'arrows-right-left',\n 'arrows-up-down',\n 'arrow-top-right-on-square',\n 'arrow-trending-down',\n 'arrow-trending-up',\n 'arrow-turn-down-left',\n 'arrow-turn-down-right',\n 'arrow-turn-left-down',\n 'arrow-turn-left-up',\n 'arrow-turn-right-down',\n 'arrow-turn-right-up',\n 'arrow-turn-up-left',\n 'arrow-turn-up-right',\n 'arrow-up',\n 'arrow-up-circle',\n 'arrow-up-left',\n 'arrow-up-on-square',\n 'arrow-up-on-square-stack',\n 'arrow-up-right',\n 'arrow-up-tray',\n 'arrow-uturn-down',\n 'arrow-uturn-left',\n 'arrow-uturn-right',\n 'arrow-uturn-up',\n 'at-symbol',\n 'backspace',\n 'backward',\n 'banknotes',\n 'bars-2',\n 'bars-3',\n 'bars-3-bottom-left',\n 'bars-3-bottom-right',\n 'bars-3-center-left',\n 'bars-4',\n 'bars-arrow-down',\n 'bars-arrow-up',\n 'battery-0',\n 'battery-100',\n 'battery-50',\n 'beaker',\n 'bell',\n 'bell-alert',\n 'bell-slash',\n 'bell-snooze',\n 'bold',\n 'bolt',\n 'bolt-slash',\n 'bookmark',\n 'bookmark-slash',\n 'bookmark-square',\n 'book-open',\n 'briefcase',\n 'bug-ant',\n 'building-library',\n 'building-office',\n 'building-office-2',\n 'building-storefront',\n 'cake',\n 'calculator',\n 'calendar',\n 'calendar-date-range',\n 'calendar-days',\n 'camera',\n 'chart-bar',\n 'chart-bar-square',\n 'chart-pie',\n 'chat-bubble-bottom-center',\n 'chat-bubble-bottom-center-text',\n 'chat-bubble-left',\n 'chat-bubble-left-ellipsis',\n 'chat-bubble-left-right',\n 'chat-bubble-oval-left',\n 'chat-bubble-oval-left-ellipsis',\n 'check',\n 'check-badge',\n 'check-circle',\n 'chevron-double-down',\n 'chevron-double-left',\n 'chevron-double-right',\n 'chevron-double-up',\n 'chevron-down',\n 'chevron-left',\n 'chevron-right',\n 'chevron-up',\n 'chevron-up-down',\n 'circle-stack',\n 'clipboard',\n 'clipboard-document',\n 'clipboard-document-check',\n 'clipboard-document-list',\n 'clock',\n 'cloud',\n 'cloud-arrow-down',\n 'cloud-arrow-up',\n 'code-bracket',\n 'code-bracket-square',\n 'cog',\n 'cog-6-tooth',\n 'cog-8-tooth',\n 'command-line',\n 'computer-desktop',\n 'cpu-chip',\n 'credit-card',\n 'cube',\n 'cube-transparent',\n 'currency-bangladeshi',\n 'currency-dollar',\n 'currency-euro',\n 'currency-pound',\n 'currency-rupee',\n 'currency-yen',\n 'cursor-arrow-rays',\n 'cursor-arrow-ripple',\n 'device-phone-mobile',\n 'device-tablet',\n 'divide',\n 'document',\n 'document-arrow-down',\n 'document-arrow-up',\n 'document-chart-bar',\n 'document-check',\n 'document-currency-bangladeshi',\n 'document-currency-dollar',\n 'document-currency-euro',\n 'document-currency-pound',\n 'document-currency-rupee',\n 'document-currency-yen',\n 'document-duplicate',\n 'document-magnifying-glass',\n 'document-minus',\n 'document-plus',\n 'document-text',\n 'ellipsis-horizontal',\n 'ellipsis-horizontal-circle',\n 'ellipsis-vertical',\n 'envelope',\n 'envelope-open',\n 'equals',\n 'exclamation-circle',\n 'exclamation-triangle',\n 'eye',\n 'eye-dropper',\n 'eye-slash',\n 'face-frown',\n 'face-smile',\n 'film',\n 'finger-print',\n 'fire',\n 'flag',\n 'folder',\n 'folder-arrow-down',\n 'folder-minus',\n 'folder-open',\n 'folder-plus',\n 'forward',\n 'funnel',\n 'gif',\n 'gift',\n 'gift-top',\n 'globe-alt',\n 'globe-americas',\n 'globe-asia-australia',\n 'globe-europe-africa',\n 'h1',\n 'h2',\n 'h3',\n 'hand-raised',\n 'hand-thumb-down',\n 'hand-thumb-up',\n 'hashtag',\n 'heart',\n 'home',\n 'home-modern',\n 'identification',\n 'inbox',\n 'inbox-arrow-down',\n 'inbox-stack',\n 'information-circle',\n 'italic',\n 'key',\n 'language',\n 'lifebuoy',\n 'light-bulb',\n 'link',\n 'link-slash',\n 'list-bullet',\n 'lock-closed',\n 'lock-open',\n 'magnifying-glass',\n 'magnifying-glass-circle',\n 'magnifying-glass-minus',\n 'magnifying-glass-plus',\n 'map',\n 'map-pin',\n 'megaphone',\n 'microphone',\n 'minus',\n 'minus-circle',\n 'minus-small',\n 'moon',\n 'musical-note',\n 'newspaper',\n 'no-symbol',\n 'numbered-list',\n 'paint-brush',\n 'paper-airplane',\n 'paper-clip',\n 'pause',\n 'pause-circle',\n 'pencil',\n 'pencil-square',\n 'percent-badge',\n 'phone',\n 'phone-arrow-down-left',\n 'phone-arrow-up-right',\n 'phone-x-mark',\n 'photo',\n 'play',\n 'play-circle',\n 'play-pause',\n 'plus',\n 'plus-circle',\n 'plus-small',\n 'power',\n 'presentation-chart-bar',\n 'presentation-chart-line',\n 'printer',\n 'puzzle-piece',\n 'qr-code',\n 'question-mark-circle',\n 'queue-list',\n 'radio',\n 'receipt-percent',\n 'receipt-refund',\n 'rectangle-group',\n 'rectangle-stack',\n 'rocket-launch',\n 'rss',\n 'scale',\n 'scissors',\n 'server',\n 'server-stack',\n 'share',\n 'shield-check',\n 'shield-exclamation',\n 'shopping-bag',\n 'shopping-cart',\n 'signal',\n 'signal-slash',\n 'slash',\n 'sparkles',\n 'speaker-wave',\n 'speaker-x-mark',\n 'square-2-stack',\n 'square-3-stack-3d',\n 'squares-2x2',\n 'squares-plus',\n 'star',\n 'stop',\n 'stop-circle',\n 'strikethrough',\n 'sun',\n 'swatch',\n 'table-cells',\n 'tag',\n 'ticket',\n 'trash',\n 'trophy',\n 'truck',\n 'tv',\n 'underline',\n 'user',\n 'user-circle',\n 'user-group',\n 'user-minus',\n 'user-plus',\n 'users',\n 'variable',\n 'video-camera',\n 'video-camera-slash',\n 'view-columns',\n 'viewfinder-circle',\n 'wallet',\n 'wifi',\n 'window',\n 'wrench',\n 'wrench-screwdriver',\n 'x-circle',\n 'x-mark',\n] as const;\n\nexport type TailwindHeroIcon = (typeof TAILWIND_HERO_ICON_NAMES)[number];\n","import { Directive, input } from '@angular/core';\r\n\r\n@Directive({\r\n host: {\r\n '[attr.id]': 'id() || null',\r\n '[class]': 'class() || null'\r\n }\r\n})\r\nexport abstract class TailwindComponent {\r\n /** Optional ID for the component */\r\n readonly id = input<string>();\r\n\r\n /** Custom CSS classes to append */\r\n readonly class = input<string>(undefined, { alias: 'class' });\r\n}\r\n","import { Component, computed, inject, input, signal, OnDestroy, AfterViewInit, NgZone, ElementRef, viewChild } from '@angular/core';\r\nimport { TailwindPosition } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'tailwind-tooltip',\r\n templateUrl: './tooltip.component.html',\r\n styleUrl: './tooltip.component.scss'\r\n})\r\nexport class TailwindTooltip extends TailwindComponent implements AfterViewInit, OnDestroy {\r\n /** Tooltip text */\r\n readonly text = input.required<string>();\r\n /** Position relative to trigger */\r\n readonly position = input<TailwindPosition>('top');\r\n\r\n readonly isVisible = signal(false);\r\n readonly topPos = signal<number>(0);\r\n readonly leftPos = signal<number>(0);\r\n\r\n private targetElement: HTMLElement | null = null;\r\n\r\n private document = inject(DOCUMENT);\r\n private ngZone = inject(NgZone);\r\n private el = inject(ElementRef);\r\n \r\n readonly tooltipEl = viewChild.required<ElementRef<HTMLDivElement>>('tooltipEl');\r\n\r\n private scrollListener = () => this.updatePosition();\r\n\r\n readonly tooltipClasses = computed(() => {\r\n const base = [\r\n 'fixed z-[1070] px-3 py-1.5',\r\n 'text-xs font-medium text-white bg-surface-900 rounded-lg',\r\n 'shadow-lg whitespace-nowrap pointer-events-none',\r\n 'transition-opacity duration-150',\r\n this.isVisible() ? 'opacity-100' : 'opacity-0'\r\n ];\r\n return base.join(' ');\r\n });\r\n\r\n readonly arrowClasses = computed(() => {\r\n const base = 'absolute w-2 h-2 bg-surface-900 rotate-45';\r\n\r\n const posMap: Record<TailwindPosition, string> = {\r\n top: 'top-full left-1/2 -translate-x-1/2 -mt-1',\r\n bottom: 'bottom-full left-1/2 -translate-x-1/2 -mb-1',\r\n left: 'left-full top-1/2 -translate-y-1/2 -ml-1',\r\n right: 'right-full top-1/2 -translate-y-1/2 -mr-1'\r\n };\r\n\r\n return `${base} ${posMap[this.position()]}`;\r\n });\r\n\r\n ngAfterViewInit() {\r\n this.updatePosition();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.hide();\r\n }\r\n\r\n setTarget(el: HTMLElement) {\r\n this.targetElement = el;\r\n this.updatePosition();\r\n }\r\n\r\n private getFixedOrigin(): { top: number; left: number } {\r\n const dummy = this.document.createElement('div');\r\n dummy.style.position = 'fixed';\r\n dummy.style.top = '0';\r\n dummy.style.left = '0';\r\n this.el.nativeElement.appendChild(dummy);\r\n const rect = dummy.getBoundingClientRect();\r\n this.el.nativeElement.removeChild(dummy);\r\n return { top: rect.top, left: rect.left };\r\n }\r\n\r\n updatePosition(): void {\r\n if (!this.targetElement) return;\r\n \r\n const origin = this.getFixedOrigin();\r\n const targetRect = this.targetElement.getBoundingClientRect();\r\n const tooltipRect = this.tooltipEl().nativeElement.getBoundingClientRect();\r\n\r\n let top = 0;\r\n let left = 0;\r\n\r\n switch (this.position()) {\r\n case 'top':\r\n top = targetRect.top - tooltipRect.height - 8;\r\n left = targetRect.left + (targetRect.width - tooltipRect.width) / 2;\r\n break;\r\n case 'bottom':\r\n top = targetRect.bottom + 8;\r\n left = targetRect.left + (targetRect.width - tooltipRect.width) / 2;\r\n break;\r\n case 'left':\r\n top = targetRect.top + (targetRect.height - tooltipRect.height) / 2;\r\n left = targetRect.left - tooltipRect.width - 8;\r\n break;\r\n case 'right':\r\n top = targetRect.top + (targetRect.height - tooltipRect.height) / 2;\r\n left = targetRect.right + 8;\r\n break;\r\n }\r\n\r\n this.ngZone.run(() => {\r\n this.topPos.set(top - origin.top);\r\n this.leftPos.set(left - origin.left);\r\n });\r\n }\r\n\r\n show(): void {\r\n this.updatePosition();\r\n this.ngZone.run(() => {\r\n this.isVisible.set(true);\r\n });\r\n this.ngZone.runOutsideAngular(() => {\r\n window.addEventListener('scroll', this.scrollListener, true);\r\n window.addEventListener('resize', this.scrollListener, true);\r\n });\r\n }\r\n\r\n hide(): void {\r\n this.ngZone.run(() => {\r\n this.isVisible.set(false);\r\n });\r\n window.removeEventListener('scroll', this.scrollListener, true);\r\n window.removeEventListener('resize', this.scrollListener, true);\r\n }\r\n}\r\n","<div #tooltipEl role=\"tooltip\" [class]=\"tooltipClasses()\" \n [style.top.px]=\"topPos()\" \n [style.left.px]=\"leftPos()\">\n {{ text() }}\n <!-- Arrow -->\n <div [class]=\"arrowClasses()\"></div>\n</div>\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n ViewContainerRef,\n ComponentRef,\n inject\n} from '@angular/core';\nimport { TailwindTooltip } from '../../components/tooltip/tooltip.component';\nimport { TailwindPosition } from '../../models';\n\n@Directive({\n selector: '[tooltip]'\n})\nexport class TailwindTooltipDirective implements OnDestroy {\n @Input('tooltip') text!: string;\n @Input() tooltipPosition: TailwindPosition = 'top';\n\n private showTimeout: ReturnType<typeof setTimeout> | null = null;\n private hideTimeout: ReturnType<typeof setTimeout> | null = null;\n private componentRef: ComponentRef<TailwindTooltip> | null = null;\n\n private viewContainerRef = inject(ViewContainerRef);\n private el = inject(ElementRef);\n\n @HostListener('mouseenter')\n @HostListener('focusin')\n show() {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n\n if (this.componentRef) {\n return;\n }\n\n this.showTimeout = setTimeout(() => {\n this.createComponent();\n }, 200);\n }\n\n @HostListener('mouseleave')\n @HostListener('focusout')\n hide() {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = null;\n }\n\n if (!this.componentRef) {\n return;\n }\n\n this.componentRef.instance.hide();\n\n this.hideTimeout = setTimeout(() => {\n this.destroyComponent();\n }, 150);\n }\n\n private createComponent() {\n this.componentRef = this.viewContainerRef.createComponent(TailwindTooltip);\n this.componentRef.setInput('text', this.text);\n this.componentRef.setInput('position', this.tooltipPosition);\n this.componentRef.instance.setTarget(this.el.nativeElement);\n\n setTimeout(() => {\n if (this.componentRef) {\n this.componentRef.instance.show();\n }\n });\n }\n\n private destroyComponent() {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n ngOnDestroy() {\n if (this.showTimeout) clearTimeout(this.showTimeout);\n if (this.hideTimeout) clearTimeout(this.hideTimeout);\n this.destroyComponent();\n }\n}\n","import { Component, computed, input, output } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { TailwindSize, TailwindColor, TailwindButtonKind } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-button',\r\n imports: [NgClass],\r\n templateUrl: './button.component.html',\r\n styleUrl: './button.component.scss'\r\n})\r\nexport class TailwindButton extends TailwindComponent {\r\n /** Visual color */\r\n readonly color = input<TailwindColor>('primary');\r\n /** Visual kind: `ghost` = transparent with hover tint; `text` = text color only, no hover background */\r\n readonly kind = input<TailwindButtonKind>('solid');\r\n /** Size of the button */\r\n readonly size = input<TailwindSize>('md');\r\n /** Whether the button is disabled */\r\n readonly disabled = input<boolean>(false);\r\n /** HTML button type attribute */\r\n readonly type = input<'button' | 'submit' | 'reset'>('button');\r\n\r\n /** Emitted when the button is clicked (not disabled/loading) */\r\n readonly onClick = output<MouseEvent>();\r\n\r\n /** Computed Tailwind classes based on color, kind, size, and state */\r\n readonly computedClasses = computed(() => {\r\n const base = [\r\n 'inline-flex items-center justify-center gap-2',\r\n 'font-medium',\r\n 'transition-all duration-150 ease-in-out',\r\n 'focus-visible:outline-2 focus-visible:outline-offset-2',\r\n 'disabled:cursor-not-allowed disabled:opacity-50',\r\n 'cursor-pointer',\r\n 'border'\r\n ];\r\n\r\n const solidMap: Record<TailwindColor, string> = {\r\n primary:\r\n 'bg-primary-600 text-white hover:bg-primary-700 active:bg-primary-800 border-transparent focus-visible:outline-primary-600 shadow-sm',\r\n secondary:\r\n 'bg-surface-100 text-surface-800 hover:bg-surface-200 active:bg-surface-300 border-surface-300 focus-visible:outline-surface-500 shadow-sm',\r\n danger:\r\n 'bg-danger-600 text-white hover:bg-danger-700 active:bg-danger-800 border-transparent focus-visible:outline-danger-600 shadow-sm',\r\n success:\r\n 'bg-success-600 text-white hover:bg-success-700 active:bg-success-800 border-transparent focus-visible:outline-success-600 shadow-sm',\r\n warning:\r\n 'bg-warning-500 text-surface-900 hover:bg-warning-600 active:bg-warning-700 border-transparent focus-visible:outline-warning-500 shadow-sm',\r\n info: 'bg-info-600 text-white hover:bg-info-700 active:bg-info-800 border-transparent focus-visible:outline-info-600 shadow-sm'\r\n };\r\n\r\n const outlinedMap: Record<TailwindColor, string> = {\r\n primary:\r\n 'bg-transparent text-primary-600 border-primary-600 hover:bg-primary-50 active:bg-primary-100 focus-visible:outline-primary-600',\r\n secondary:\r\n 'bg-transparent text-surface-700 border-surface-300 hover:bg-surface-50 active:bg-surface-100 focus-visible:outline-surface-500',\r\n danger:\r\n 'bg-transparent text-danger-600 border-danger-600 hover:bg-danger-50 active:bg-danger-100 focus-visible:outline-danger-600',\r\n success:\r\n 'bg-transparent text-success-600 border-success-600 hover:bg-success-50 active:bg-success-100 focus-visible:outline-success-600',\r\n warning:\r\n 'bg-transparent text-warning-600 border-warning-500 hover:bg-warning-50 active:bg-warning-100 focus-visible:outline-warning-500',\r\n info: 'bg-transparent text-info-600 border-info-600 hover:bg-info-50 active:bg-info-100 focus-visible:outline-info-600'\r\n };\r\n\r\n /** Transparent + hover/active background tint (former `text` look). */\r\n const ghostMap: Record<TailwindColor, string> = {\r\n primary:\r\n 'bg-transparent text-primary-600 border-transparent hover:bg-primary-50 active:bg-primary-100 focus-visible:outline-primary-600',\r\n secondary:\r\n 'bg-transparent text-surface-700 border-transparent hover:bg-surface-100 active:bg-surface-200 focus-visible:outline-surface-500',\r\n danger:\r\n 'bg-transparent text-danger-600 border-transparent hover:bg-danger-50 active:bg-danger-100 focus-visible:outline-danger-600',\r\n success:\r\n 'bg-transparent text-success-600 border-transparent hover:bg-success-50 active:bg-success-100 focus-visible:outline-success-600',\r\n warning:\r\n 'bg-transparent text-warning-600 border-transparent hover:bg-warning-50 active:bg-warning-100 focus-visible:outline-warning-500',\r\n info: 'bg-transparent text-info-600 border-transparent hover:bg-info-50 active:bg-info-100 focus-visible:outline-info-600'\r\n };\r\n\r\n /** Text color from severity only; background stays transparent on hover/active. */\r\n const textMap: Record<TailwindColor, string> = {\r\n primary: 'bg-transparent text-primary-600 border-transparent focus-visible:outline-primary-600',\r\n secondary: 'bg-transparent text-surface-700 border-transparent focus-visible:outline-surface-500',\r\n danger: 'bg-transparent text-danger-600 border-transparent focus-visible:outline-danger-600',\r\n success: 'bg-transparent text-success-600 border-transparent focus-visible:outline-success-600',\r\n warning: 'bg-transparent text-warning-600 border-transparent focus-visible:outline-warning-500',\r\n info: 'bg-transparent text-info-600 border-transparent focus-visible:outline-info-600'\r\n };\r\n\r\n const styleMap = {\r\n solid: solidMap,\r\n outlined: outlinedMap,\r\n ghost: ghostMap,\r\n text: textMap\r\n };\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-2 py-1 rounded-sm',\r\n sm: 'text-sm px-3 py-1.5 rounded-md',\r\n md: 'text-sm px-4 py-2 rounded-md',\r\n lg: 'text-base px-5 py-2.5 rounded-lg',\r\n xl: 'text-base px-6 py-3 rounded-lg'\r\n };\r\n\r\n const iconSizeMap: Record<TailwindSize, string> = {\r\n xs: 'p-1 rounded-sm',\r\n sm: 'p-1.5 rounded-md',\r\n md: 'p-2 rounded-md',\r\n lg: 'p-2.5 rounded-lg',\r\n xl: 'p-3 rounded-lg'\r\n };\r\n\r\n return [...base, styleMap[this.kind()][this.color()] || styleMap['solid']['primary'], sizeMap[this.size()]].join(\r\n ' '\r\n );\r\n });\r\n\r\n handleClick(event: MouseEvent): void {\r\n if (!this.disabled()) {\r\n this.onClick.emit(event);\r\n }\r\n }\r\n}\r\n","<button\n [ngClass]=\"computedClasses()\"\n [disabled]=\"disabled()\"\n [type]=\"type()\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"handleClick($event)\">\n <ng-content />\n</button>\n","import { InjectionToken } from '@angular/core';\r\nimport { TailwindSize } from '../models';\r\n\r\nexport const TAILWIND_MODAL_DATA = new InjectionToken<unknown>('TAILWIND_MODAL_DATA');\r\n\r\nexport const TAILWIND_ICON_SIZE = new InjectionToken<'normal' | 'small'>('TAILWIND_ICON_SIZE');\r\n\r\nexport const TAILWIND_DATETIME_LANGUAGE = new InjectionToken<'it' | 'en'>('TAILWIND_DATETIME_LANGUAGE');\r\n\r\nexport const TAILWIND_COMPONENTS_SIZE = new InjectionToken<TailwindSize>('TAILWIND_COMPONENTS_SIZE');\r\n","import { Component, computed, inject, input } from '@angular/core';\r\nimport type { TailwindHeroIcon, TailwindIconSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TAILWIND_ICON_SIZE } from '../../tokens';\r\n\r\n@Component({\r\n selector: 'tailwind-icon',\r\n host: {\r\n class: 'inline-flex shrink-0 items-center justify-center'\r\n },\r\n templateUrl: './icon.component.html'\r\n})\r\nexport class TailwindIcon extends TailwindComponent {\r\n private readonly iconSize = inject(TAILWIND_ICON_SIZE, { optional: true });\r\n\r\n /** Heroicon name; SVG path `public/icons/<name>.svg` */\r\n readonly icon = input.required<TailwindHeroIcon>();\r\n /** `normal` = 24×24, `small` = 16×16; default dalla DI (`TAILWIND_ICON_SIZE`) se presente */\r\n readonly size = input<TailwindIconSize>(this.iconSize ?? 'normal');\r\n\r\n readonly src = computed(() => `/tailwind-icons/${this.icon()}.svg`);\r\n\r\n readonly pixelSize = computed(() => (this.size() === 'small' ? 16 : 24));\r\n}\r\n","<img\r\n class=\"block shrink-0\"\r\n [src]=\"src()\"\r\n [attr.width]=\"pixelSize()\"\r\n [attr.height]=\"pixelSize()\"\r\n [attr.alt]=\"icon()\"\r\n [attr.aria-hidden]=\"true\"\r\n decoding=\"async\" />\r\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-input',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindInput),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './input.component.html',\r\n styleUrl: './input.component.scss'\r\n})\r\nexport class TailwindInput extends TailwindComponent implements ControlValueAccessor {\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Placeholder text */\r\n readonly placeholder = input<string>('');\r\n /** Input type */\r\n readonly type = input<'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url'>('text');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Whether the input is readonly */\r\n readonly readonly = input<boolean>(false);\r\n /** Helper text shown below input */\r\n readonly helperText = input<string>('');\r\n /** Error text shown when hasError is true */\r\n readonly errorText = input<string>('');\r\n /** Whether the input is in error state */\r\n readonly hasError = input<boolean>(false);\r\n\r\n /** Two-way bound value */\r\n readonly value = model<string>('');\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Computed input classes */\r\n readonly inputClasses = computed(() => {\r\n const base = [\r\n 'block w-full bg-white',\r\n 'border transition-colors duration-150',\r\n 'placeholder:text-surface-400',\r\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\r\n 'disabled:bg-surface-50 disabled:text-surface-400 disabled:cursor-not-allowed'\r\n ];\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-2 py-1 rounded-sm',\r\n sm: 'text-sm px-2.5 py-1.5 rounded-md',\r\n md: 'text-sm px-3 py-2 rounded-md',\r\n lg: 'text-base px-3.5 py-2.5 rounded-lg',\r\n xl: 'text-base px-4 py-3 rounded-lg'\r\n };\r\n\r\n const stateClass = this.hasError()\r\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\r\n : 'border-surface-300 focus:outline-primary-500 text-surface-900';\r\n\r\n return [...base, sizeMap[this.size()], stateClass].join(' ');\r\n });\r\n\r\n // CVA\r\n private onChange: (value: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: string): void {\r\n this.value.set(value ?? '');\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n onInputChange(event: Event): void {\r\n const val = (event.target as HTMLInputElement).value;\r\n this.value.set(val);\r\n this.onChange(val);\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n}\r\n","<div class=\"tailwind-input-wrapper flex flex-col gap-1.5\">\n @if (label()) {\n <label\n [attr.for]=\"id() ? id() + '-inner' : null\"\n class=\"text-sm font-medium text-surface-700\"\n [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\n [value]=\"value()\"\n [class]=\"inputClasses()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onBlur()\" />\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-surface-500\">\n {{ helperText() }}\n </p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">\n {{ errorText() }}\n </p>\n }\n</div>\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-checkbox',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindCheckbox),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './checkbox.component.html',\r\n styleUrl: './checkbox.component.scss'\r\n})\r\nexport class TailwindCheckbox extends TailwindComponent implements ControlValueAccessor {\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Description text */\r\n readonly description = input<string>('');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Unique ID */\r\n \r\n /** Two-way bound checked state */\r\n readonly checked = model<boolean>(false);\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Box size class based on size input */\r\n readonly boxSizeClass = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-3.5 h-3.5',\r\n sm: 'w-4 h-4',\r\n md: 'w-5 h-5',\r\n lg: 'w-6 h-6',\r\n xl: 'w-7 h-7'\r\n };\r\n return sizeMap[this.size()];\r\n });\r\n\r\n // CVA\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: boolean): void {\r\n this.checked.set(!!value);\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n onCheckboxChange(event: Event): void {\r\n const val = (event.target as HTMLInputElement).checked;\r\n this.checked.set(val);\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n}\r\n\r\n","<label\n [attr.for]=\"id() ? id() + '-inner' : null\"\n class=\"inline-flex items-center gap-2.5 cursor-pointer select-none\"\n [class.cursor-not-allowed]=\"isDisabled()\"\n [class.opacity-50]=\"isDisabled()\">\n <div class=\"relative flex items-center justify-center shrink-0\" [class]=\"boxSizeClass()\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"checkbox\"\n class=\"peer sr-only\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-describedby]=\"description() && id() ? id() + '-desc' : null\"\n (change)=\"onCheckboxChange($event)\" />\n <div\n class=\"w-full h-full border-2 transition-all duration-150 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500/30 peer-focus-visible:ring-offset-1\"\n [class.rounded-sm]=\"size() === 'xs' || size() === 'sm'\"\n [class.rounded-md]=\"size() !== 'xs' && size() !== 'sm'\"\n [class.border-surface-300]=\"!checked()\"\n [class.bg-white]=\"!checked()\"\n [class.border-primary-600]=\"checked()\"\n [class.bg-primary-600]=\"checked()\">\n @if (checked()) {\n <svg class=\"w-full h-full text-white p-0.5\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M13.5 4.5L6.5 11.5L3 8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n </div>\n </div>\n\n <div class=\"flex flex-col gap-0.5 pt-0.5\">\n @if (label()) {\n <span class=\"text-sm font-medium text-surface-800 leading-tight\">{{ label() }}</span>\n }\n @if (description()) {\n <span [attr.id]=\"id() ? id() + '-desc' : null\" class=\"text-xs text-surface-500 leading-snug\">\n {{ description() }}\n </span>\n }\n </div>\n</label>\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindOptionGroup, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-radio-group',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindRadioGroup),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './radio-group.component.html',\r\n styleUrl: './radio-group.component.scss'\r\n})\r\nexport class TailwindRadioGroup<T = unknown> extends TailwindComponent implements ControlValueAccessor {\r\n /** Label for the radio group */\r\n readonly label = input<string>('');\r\n /** Aria label for accessibility */\r\n readonly ariaLabel = input<string>('');\r\n /** Name for the radio group (used for native radio grouping) */\r\n readonly name = input<string>();\r\n /** Available options */\r\n readonly options = input<TailwindOptionGroup<T>[]>([]);\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Layout orientation */\r\n readonly orientation = input<'horizontal' | 'vertical'>('vertical');\r\n\r\n /** Currently selected value */\r\n readonly value = model<T | null>(null);\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Radio button outer ring size */\r\n readonly radioSizeClass = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-3.5 h-3.5',\r\n sm: 'w-4 h-4',\r\n md: 'w-5 h-5',\r\n lg: 'w-6 h-6',\r\n xl: 'w-7 h-7'\r\n };\r\n return sizeMap[this.size()];\r\n });\r\n\r\n /** Inner dot size */\r\n readonly dotSizeClass = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-1.5 h-1.5',\r\n sm: 'w-2 h-2',\r\n md: 'w-2.5 h-2.5',\r\n lg: 'w-3 h-3',\r\n xl: 'w-3.5 h-3.5'\r\n };\r\n return sizeMap[this.size()];\r\n });\r\n\r\n // CVA\r\n private onChange: (value: T) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: T): void {\r\n this.value.set(value ?? null);\r\n }\r\n\r\n registerOnChange(fn: (value: T) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n onRadioChange(optionValue: T): void {\r\n this.value.set(optionValue);\r\n this.onChange(optionValue);\r\n this.onTouched();\r\n }\r\n}\r\n","<fieldset\n class=\"flex gap-3\"\n [class.flex-col]=\"orientation() === 'vertical'\"\n [attr.aria-label]=\"ariaLabel()\"\n role=\"radiogroup\">\n @if (label()) {\n <legend class=\"text-sm font-medium text-surface-700 mb-2\">{{ label() }}</legend>\n }\n\n @for (option of options(); track option.value) {\n <label\n class=\"inline-flex items-start gap-2.5 cursor-pointer select-none\"\n [class.cursor-not-allowed]=\"isDisabled() || option.disabled\"\n [class.opacity-50]=\"isDisabled() || option.disabled\">\n <div class=\"relative flex items-center justify-center shrink-0\" [class]=\"radioSizeClass()\">\n <input\n type=\"radio\"\n class=\"peer sr-only\"\n [name]=\"name()\"\n [value]=\"option.value\"\n [checked]=\"value() === option.value\"\n [disabled]=\"isDisabled() || !!option.disabled\"\n (change)=\"onRadioChange(option.value)\" />\n <div\n class=\"w-full h-full rounded-full border-2 transition-all duration-150 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500/30 peer-focus-visible:ring-offset-1 flex items-center justify-center\"\n [class.border-surface-300]=\"value() !== option.value\"\n [class.border-primary-600]=\"value() === option.value\">\n @if (value() === option.value) {\n <div\n class=\"rounded-full bg-primary-600 transition-transform duration-150 scale-100\"\n [class]=\"dotSizeClass()\"></div>\n }\n </div>\n </div>\n\n <div class=\"flex flex-col gap-0.5 pt-0.5\">\n <span class=\"text-sm font-medium text-surface-800 leading-tight\">{{ option.label }}</span>\n @if (option.description) {\n <span class=\"text-xs text-surface-500 leading-snug\">{{ option.description }}</span>\n }\n </div>\n </label>\n }\n</fieldset>\n","import {\r\n Component,\r\n computed,\r\n ElementRef,\r\n forwardRef,\r\n inject,\r\n input,\r\n model,\r\n OnDestroy,\r\n signal,\r\n TemplateRef,\r\n ViewContainerRef,\r\n viewChild\r\n} from '@angular/core';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindOption, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-select',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindSelect),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './select.component.html',\r\n styleUrl: './select.component.scss'\r\n})\r\nexport class TailwindSelect<T = unknown> extends TailwindComponent implements ControlValueAccessor, OnDestroy {\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly elRef = inject(ElementRef<HTMLElement>);\r\n private readonly panelTemplate = viewChild.required<TemplateRef<unknown>>('panelTemplate');\r\n\r\n private overlayRef: OverlayRef | null = null;\r\n private outsideSub: Subscription | null = null;\r\n\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Placeholder text */\r\n readonly placeholder = input<string>('');\r\n /** Available options */\r\n readonly options = input<TailwindOption<T>[]>([]);\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Helper text */\r\n readonly helperText = input<string>('');\r\n /** Error text */\r\n readonly errorText = input<string>('');\r\n /** Whether in error state */\r\n readonly hasError = input<boolean>(false);\r\n /** When true, value is `T[]` and several options can be selected */\r\n readonly multiple = input(false);\r\n\r\n /** Selected value: `T | null` when single, `T[]` when `multiple` */\r\n readonly value = model<T | T[] | null>(null);\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Whether the dropdown panel is open */\r\n readonly isOpen = signal(false);\r\n\r\n /** Keyboard-highlighted option index (-1 = none) */\r\n readonly activeIndex = signal(-1);\r\n\r\n /** The currently selected option object (single mode only) */\r\n readonly selectedOption = computed(() => {\r\n if (this.multiple()) return null;\r\n const v = this.value();\r\n if (v == null || Array.isArray(v)) return null;\r\n return this.options().find(o => this.optionValueEquals(o.value, v)) ?? null;\r\n });\r\n\r\n /** Selected option objects in `options()` order (multiple mode only) */\r\n readonly selectedOptions = computed(() => {\r\n if (!this.multiple()) return [];\r\n const v = this.value();\r\n const arr = Array.isArray(v) ? v : [];\r\n return this.options().filter(o => arr.some(sv => this.optionValueEquals(o.value, sv)));\r\n });\r\n\r\n /** Classes for the trigger button */\r\n readonly triggerClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-2 py-1 rounded-sm',\r\n sm: 'text-sm px-2.5 py-1.5 rounded-md',\r\n md: 'text-sm px-3 py-2 rounded-md',\r\n lg: 'text-base px-3.5 py-2.5 rounded-lg',\r\n xl: 'text-base px-4 py-3 rounded-lg'\r\n };\r\n\r\n const stateClass = this.hasError()\r\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\r\n : 'border-surface-300 focus:outline-primary-500';\r\n\r\n const layout = this.multiple() ? 'items-start' : 'items-center';\r\n\r\n return [\r\n 'flex justify-between w-full bg-white border transition-colors duration-150',\r\n layout,\r\n 'pr-3 cursor-pointer text-left',\r\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\r\n 'disabled:bg-surface-50 disabled:text-surface-400 disabled:cursor-not-allowed',\r\n sizeMap[this.size()],\r\n stateClass\r\n ].join(' ');\r\n });\r\n\r\n private optionValueEquals(a: unknown, b: unknown): boolean {\r\n return Object.is(a, b);\r\n }\r\n\r\n /** Used in the template to compare option values */\r\n isOptionSelected(option: TailwindOption<T>): boolean {\r\n if (this.multiple()) {\r\n const v = this.value();\r\n const arr = Array.isArray(v) ? v : [];\r\n return arr.some(sv => this.optionValueEquals(option.value, sv));\r\n }\r\n const v = this.value();\r\n if (v == null || Array.isArray(v)) return false;\r\n return this.optionValueEquals(option.value, v);\r\n }\r\n\r\n /** Classes for a single option row */\r\n optionClasses(index: number, option: TailwindOption<T>): string {\r\n const isSelected = this.isOptionSelected(option);\r\n const isActive = this.activeIndex() === index;\r\n const isDisabled = !!option.disabled;\r\n\r\n return [\r\n 'flex items-center justify-between px-3 py-2 text-sm cursor-pointer select-none',\r\n isDisabled\r\n ? 'text-surface-400 cursor-not-allowed'\r\n : isSelected\r\n ? 'bg-primary-50 text-primary-700 font-medium'\r\n : isActive\r\n ? 'bg-surface-100 text-surface-900'\r\n : 'text-surface-800 hover:bg-surface-50'\r\n ].join(' ');\r\n }\r\n\r\n // CVA\r\n private onChange: (value: T | T[] | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: T | T[] | null | undefined): void {\r\n if (this.multiple()) {\r\n if (value == null) this.value.set([]);\r\n else this.value.set(Array.isArray(value) ? [...value] : []);\r\n } else {\r\n if (Array.isArray(value)) this.value.set(null);\r\n else this.value.set(value ?? null);\r\n }\r\n }\r\n\r\n registerOnChange(fn: (value: T | T[] | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.closeDropdown();\r\n }\r\n\r\n private openDropdown(): void {\r\n if (this.overlayRef) return;\r\n\r\n const trigger =\r\n (this.elRef.nativeElement.querySelector('button[role=\"combobox\"]') as HTMLElement) ?? this.elRef.nativeElement;\r\n\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(trigger)\r\n .withPositions([\r\n // Preferred: open downward\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n // Fallback: open upward\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' }\r\n ])\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.close(),\r\n width: trigger.offsetWidth,\r\n minWidth: 'w-full'\r\n });\r\n\r\n const portal = new TemplatePortal(this.panelTemplate(), this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n const pane = this.overlayRef.overlayElement;\r\n this.outsideSub = new Subscription();\r\n\r\n // Close on outside click (capture: trigger + panel are excluded; avoids CDK edge cases)\r\n this.outsideSub.add(\r\n fromEvent<PointerEvent>(document, 'pointerdown', { capture: true }).subscribe(ev => {\r\n const t = ev.target as Node;\r\n if (this.elRef.nativeElement.contains(t) || pane.contains(t)) return;\r\n this.closeDropdown();\r\n })\r\n );\r\n\r\n this.outsideSub.add(\r\n fromEvent<KeyboardEvent>(document, 'keydown').subscribe(ev => {\r\n if (ev.key === 'Escape') {\r\n ev.preventDefault();\r\n this.closeDropdown();\r\n }\r\n })\r\n );\r\n\r\n this.isOpen.set(true);\r\n\r\n const opts = this.options();\r\n let initial = -1;\r\n if (this.multiple()) {\r\n const v = this.value();\r\n const arr = Array.isArray(v) ? v : [];\r\n initial = opts.findIndex(o => arr.some(sv => this.optionValueEquals(o.value, sv)));\r\n } else {\r\n const v = this.value();\r\n if (v != null && !Array.isArray(v)) {\r\n initial = opts.findIndex(o => this.optionValueEquals(o.value, v));\r\n }\r\n }\r\n this.activeIndex.set(initial >= 0 ? initial : -1);\r\n }\r\n\r\n private closeDropdown(): void {\r\n this.overlayRef?.detach();\r\n this.overlayRef?.dispose();\r\n this.overlayRef = null;\r\n this.outsideSub?.unsubscribe();\r\n this.outsideSub = null;\r\n this.isOpen.set(false);\r\n this.activeIndex.set(-1);\r\n }\r\n\r\n toggleDropdown(): void {\r\n if (this.isDisabled()) return;\r\n if (this.isOpen()) {\r\n this.closeDropdown();\r\n } else {\r\n this.openDropdown();\r\n }\r\n }\r\n\r\n selectOption(option: TailwindOption<T>): void {\r\n if (option.disabled) return;\r\n if (this.multiple()) {\r\n const v = this.value();\r\n const current = Array.isArray(v) ? [...v] : [];\r\n const idx = current.findIndex(sv => this.optionValueEquals(sv, option.value));\r\n if (idx >= 0) current.splice(idx, 1);\r\n else current.push(option.value);\r\n this.value.set(current);\r\n this.onChange(current);\r\n this.onTouched();\r\n return;\r\n }\r\n const val = option.value;\r\n this.value.set(val);\r\n this.onChange(val);\r\n this.onTouched();\r\n this.closeDropdown();\r\n }\r\n\r\n onKeydown(event: KeyboardEvent): void {\r\n if (this.isDisabled()) return;\r\n const opts = this.options();\r\n\r\n switch (event.key) {\r\n case 'ArrowDown': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openDropdown();\r\n return;\r\n }\r\n let next = this.activeIndex() + 1;\r\n while (next < opts.length && opts[next].disabled) next++;\r\n if (next < opts.length) this.activeIndex.set(next);\r\n break;\r\n }\r\n case 'ArrowUp': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openDropdown();\r\n return;\r\n }\r\n let prev = this.activeIndex() - 1;\r\n while (prev >= 0 && opts[prev].disabled) prev--;\r\n if (prev >= 0) this.activeIndex.set(prev);\r\n break;\r\n }\r\n case 'Enter':\r\n case ' ': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openDropdown();\r\n return;\r\n }\r\n const active = this.activeIndex();\r\n if (active >= 0 && active < opts.length) {\r\n this.selectOption(opts[active]);\r\n }\r\n break;\r\n }\r\n case 'Escape':\r\n case 'Tab': {\r\n this.closeDropdown();\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label\n [attr.for]=\"id() ? id() + '-inner' : null\"\n class=\"text-sm font-medium text-surface-700\"\n [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <!-- Trigger button -->\n <button\n type=\"button\"\n [attr.id]=\"id() ? id() + '-inner' : null\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\n [disabled]=\"isDisabled()\"\n [class]=\"triggerClasses()\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"onKeydown($event)\">\n @if (multiple()) {\n <span class=\"flex flex-wrap gap-1 flex-1 min-w-0 mr-2\" [class.text-surface-400]=\"selectedOptions().length === 0\">\n @if (selectedOptions().length === 0) {\n {{ placeholder() }}\n } @else {\n @for (opt of selectedOptions(); track opt) {\n <span class=\"rounded-md bg-surface-100 px-2 py-0.5 text-sm text-surface-800\">{{ opt.label }}</span>\n }\n }\n </span>\n } @else {\n <span [class.text-surface-400]=\"!selectedOption()\">\n {{ selectedOption()?.label ?? placeholder() }}\n </span>\n }\n\n <svg\n class=\"shrink-0 ml-2 w-4 h-4 text-surface-400 transition-transform duration-150\"\n [class.rotate-180]=\"isOpen()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\">\n <path\n fill-rule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-surface-500\">{{ helperText() }}</p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">{{ errorText() }}</p>\n }\n</div>\n\n<!-- Dropdown panel — rendered via CDK Overlay outside the component DOM -->\n<ng-template #panelTemplate>\n <ul\n role=\"listbox\"\n [attr.aria-multiselectable]=\"multiple() ? true : null\"\n class=\"w-full bg-white border border-surface-200 rounded-md shadow-lg py-1 max-h-60 overflow-auto\">\n @if (placeholder()) {\n <li role=\"option\" aria-disabled=\"true\" class=\"px-3 py-2 text-sm text-surface-400 cursor-default select-none\">\n {{ placeholder() }}\n </li>\n }\n @for (option of options(); track option.value; let i = $index) {\n <li\n role=\"option\"\n [attr.aria-selected]=\"isOptionSelected(option)\"\n [attr.aria-disabled]=\"option.disabled || null\"\n [class]=\"optionClasses(i, option)\"\n (click)=\"selectOption(option)\"\n (mouseenter)=\"!option.disabled && activeIndex.set(i)\">\n <span>{{ option.label }}</span>\n\n @if (isOptionSelected(option)) {\n <svg\n class=\"w-4 h-4 text-primary-600 shrink-0\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\">\n <path\n fill-rule=\"evenodd\"\n d=\"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z\"\n clip-rule=\"evenodd\" />\n </svg>\n }\n </li>\n }\n </ul>\n</ng-template>\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-toggle',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindToggle),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './toggle.component.html',\r\n styleUrl: './toggle.component.scss'\r\n})\r\nexport class TailwindToggle extends TailwindComponent implements ControlValueAccessor {\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Aria label for accessibility */\r\n readonly ariaLabel = input<string>('');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n\r\n /** Two-way bound checked state */\r\n readonly checked = model<boolean>(false);\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Track (background) classes */\r\n readonly trackClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-7 h-4',\r\n sm: 'w-8 h-5',\r\n md: 'w-11 h-6',\r\n lg: 'w-14 h-7',\r\n xl: 'w-16 h-8'\r\n };\r\n\r\n const base = [\r\n 'relative inline-flex shrink-0 rounded-full',\r\n 'border-2 border-transparent',\r\n 'transition-colors duration-200 ease-in-out',\r\n 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600',\r\n 'cursor-pointer disabled:cursor-not-allowed'\r\n ];\r\n\r\n const stateClass = this.checked() ? 'bg-primary-600' : 'bg-surface-300';\r\n\r\n return [...base, sizeMap[this.size()], stateClass].join(' ');\r\n });\r\n\r\n /** Thumb (knob) classes */\r\n readonly thumbClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, { thumb: string; translateOn: string }> = {\r\n xs: { thumb: 'w-3 h-3', translateOn: 'translate-x-3' },\r\n sm: { thumb: 'w-4 h-4', translateOn: 'translate-x-3' },\r\n md: { thumb: 'w-5 h-5', translateOn: 'translate-x-5' },\r\n lg: { thumb: 'w-6 h-6', translateOn: 'translate-x-7' },\r\n xl: { thumb: 'w-7 h-7', translateOn: 'translate-x-8' }\r\n };\r\n\r\n const config = sizeMap[this.size()];\r\n\r\n const base = [\r\n 'pointer-events-none inline-block rounded-full',\r\n 'bg-white shadow-md',\r\n 'transform transition-transform duration-200 ease-in-out'\r\n ];\r\n\r\n const translateClass = this.checked() ? config.translateOn : 'translate-x-0';\r\n\r\n return [...base, config.thumb, translateClass].join(' ');\r\n });\r\n\r\n // CVA\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: boolean): void {\r\n this.checked.set(!!value);\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n toggle(): void {\r\n if (this.isDisabled()) return;\r\n const newValue = !this.checked();\r\n this.checked.set(newValue);\r\n this.onChange(newValue);\r\n this.onTouched();\r\n }\r\n}\r\n","<label\n class=\"inline-flex items-center gap-3 cursor-pointer select-none\"\n [class.cursor-not-allowed]=\"isDisabled()\"\n [class.opacity-50]=\"isDisabled()\">\n <button\n type=\"button\"\n role=\"switch\"\n [attr.aria-checked]=\"checked()\"\n [attr.aria-label]=\"ariaLabel() || label()\"\n [disabled]=\"isDisabled()\"\n [class]=\"trackClasses()\"\n (click)=\"toggle()\">\n <span [class]=\"thumbClasses()\" aria-hidden=\"true\"></span>\n </button>\n\n @if (label()) {\n <span class=\"text-sm font-medium text-surface-800\">{{ label() }}</span>\n }\n</label>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSeverity, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-badge',\r\n templateUrl: './badge.component.html',\r\n styleUrl: './badge.component.scss'\r\n})\r\nexport class TailwindBadge extends TailwindComponent {\r\n /** Color variant */\r\n readonly variant = input<TailwindSeverity | 'neutral' | 'primary'>('primary');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Show a dot indicator */\r\n readonly dot = input<boolean>(false);\r\n /** Shape variant */\r\n readonly rounded = input<boolean>(false);\r\n /** Accessible label */\r\n readonly ariaLabel = input<string>('');\r\n\r\n readonly computedClasses = computed(() => {\r\n const base = ['inline-flex items-center gap-1 font-medium', 'leading-none'];\r\n\r\n const variantMap: Record<string, string> = {\r\n primary: 'bg-primary-100 text-primary-700',\r\n neutral: 'bg-surface-100 text-surface-700',\r\n success: 'bg-success-100 text-success-700',\r\n warning: 'bg-warning-100 text-warning-800',\r\n danger: 'bg-danger-100 text-danger-700',\r\n info: 'bg-info-100 text-info-700'\r\n };\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-[10px] px-1.5 py-0.5',\r\n sm: 'text-xs px-2 py-0.5',\r\n md: 'text-xs px-2.5 py-1',\r\n lg: 'text-sm px-3 py-1',\r\n xl: 'text-sm px-3.5 py-1.5'\r\n };\r\n\r\n const shape = this.rounded() ? 'rounded-full' : 'rounded-md';\r\n\r\n return [...base, variantMap[this.variant()] ?? variantMap['primary'], sizeMap[this.size()], shape].join(' ');\r\n });\r\n}\r\n","<span [class]=\"computedClasses()\" [attr.aria-label]=\"ariaLabel()\">\n @if (dot()) {\n <span class=\"w-1.5 h-1.5 rounded-full bg-current\"></span>\n }\n <ng-content />\n</span>\n","import { Component, input } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TailwindCardHeader } from './card-header.component';\r\nimport { TailwindCardFooter } from './card-footer.component';\r\nimport { TailwindCardImage } from './card-image.component';\r\nexport type { TailwindCardHeader, TailwindCardFooter, TailwindCardImage };\r\n\r\n@Component({\r\n selector: 'tailwind-card',\r\n templateUrl: './card.component.html',\r\n styleUrl: './card.component.scss'\r\n})\r\nexport class TailwindCard extends TailwindComponent {\r\n /** Whether the card has elevated shadow */\r\n readonly elevated = input<boolean>(false);\r\n /** Whether to show hover shadow effect */\r\n readonly hoverable = input<boolean>(false);\r\n /** Whether to show header background */\r\n readonly headerBg = input<boolean>(false);\r\n /** Whether the card has a header */\r\n readonly hasHeader = input<boolean>(true);\r\n /** Whether the card has a footer */\r\n readonly hasFooter = input<boolean>(true);\r\n}\r\n","<div\n class=\"bg-white rounded-xl border border-surface-200 overflow-hidden transition-shadow duration-200\"\n [class.shadow-sm]=\"!elevated()\"\n [class.shadow-lg]=\"elevated()\"\n [class.hover:shadow-md]=\"hoverable() && !elevated()\"\n [class.hover:shadow-xl]=\"hoverable() && elevated()\">\n @if (hasHeader()) {\n <!-- Header slot (always rendered; only visible when content is projected) -->\n <div class=\"px-6 py-4 border-b border-surface-100\" [class.bg-surface-50]=\"headerBg()\">\n <ng-content select=\"tailwind-card-header\" />\n </div>\n }\n\n <!-- Image slot -->\n <ng-content select=\"tailwind-card-image\" />\n\n <!-- Body -->\n <div class=\"p-6\">\n <ng-content />\n </div>\n\n @if (hasFooter()) {\n <!-- Footer slot -->\n <div class=\"px-6 py-4 border-t border-surface-100 bg-surface-50/50\">\n <ng-content select=\"tailwind-card-footer\" />\n </div>\n }\n</div>\n","import { Component, computed, input, output, signal } from '@angular/core';\r\nimport { TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-alert',\r\n templateUrl: './alert.component.html',\r\n styleUrl: './alert.component.scss'\r\n})\r\nexport class TailwindAlert extends TailwindComponent {\r\n /** Severity / color variant */\r\n readonly severity = input<TailwindSeverity>('info');\r\n /** Alert title */\r\n readonly title = input<string>('');\r\n /** Alert message */\r\n readonly message = input<string>('');\r\n /** Whether the alert can be dismissed */\r\n readonly dismissible = input<boolean>(false);\r\n /** Whether to show a border on the left */\r\n readonly bordered = input<boolean>(true);\r\n\r\n /** Emitted when the alert is dismissed */\r\n readonly onDismiss = output<void>();\r\n\r\n /** Internal dismissed state */\r\n readonly dismissed = signal(false);\r\n\r\n readonly computedClasses = computed(() => {\r\n const base = 'flex gap-3 p-4 rounded-lg';\r\n\r\n const variantMap: Record<TailwindSeverity, string> = {\r\n success: 'bg-success-50 text-success-800 border-success-200',\r\n warning: 'bg-warning-50 text-warning-800 border-warning-200',\r\n danger: 'bg-danger-50 text-danger-800 border-danger-200',\r\n info: 'bg-info-50 text-info-800 border-info-200'\r\n };\r\n\r\n const borderClass = this.bordered() ? 'border-l-4' : 'border';\r\n\r\n return `${base} ${variantMap[this.severity()]} ${borderClass}`;\r\n });\r\n\r\n dismiss(): void {\r\n this.dismissed.set(true);\r\n this.onDismiss.emit();\r\n }\r\n}\r\n","@if (!dismissed()) {\n <div [class]=\"computedClasses()\" role=\"alert\" [attr.aria-live]=\"severity() === 'danger' ? 'assertive' : 'polite'\">\n <!-- Icon -->\n <div class=\"shrink-0 mt-0.5\">\n @switch (severity()) {\n @case ('success') {\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\n clip-rule=\"evenodd\" />\n </svg>\n }\n @case ('warning') {\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 6a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 6zm0 9a1 1 0 100-2 1 1 0 000 2z\"\n clip-rule=\"evenodd\" />\n </svg>\n }\n @case ('danger') {\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\"\n clip-rule=\"evenodd\" />\n </svg>\n }\n @case ('info') {\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\"\n clip-rule=\"evenodd\" />\n </svg>\n }\n }\n </div>\n\n <!-- Content -->\n <div class=\"flex-1 min-w-0\">\n @if (title()) {\n <h3 class=\"text-sm font-semibold mb-0.5\">{{ title() }}</h3>\n }\n <div class=\"text-sm\">\n {{ message() }}\n </div>\n </div>\n\n <!-- Dismiss button -->\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"shrink-0 -m-1 p-1 rounded-md opacity-70 hover:opacity-100 transition-opacity focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-1 cursor-pointer\"\n [attr.aria-label]=\"'Dismiss alert'\"\n (click)=\"dismiss()\">\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n }\n </div>\n}\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindColor, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrl: './spinner.component.scss'\r\n})\r\nexport class TailwindSpinner extends TailwindComponent {\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Color uses Tailwind text color class */\r\n readonly color = input<TailwindColor>('primary');\r\n /** Optional label text */\r\n readonly label = input<string>('');\r\n /** Aria label for accessibility */\r\n readonly ariaLabel = input<string>('Loading');\r\n /** Layout orientation */\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n\r\n readonly containerClasses = computed(() => {\r\n const base = 'inline-flex items-center gap-2';\r\n const orient = this.orientation() === 'vertical' ? 'flex-col' : '';\r\n return `${base} ${orient}`;\r\n });\r\n\r\n readonly spinnerClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-3 h-3',\r\n sm: 'w-4 h-4',\r\n md: 'w-6 h-6',\r\n lg: 'w-8 h-8',\r\n xl: 'w-12 h-12'\r\n };\r\n\r\n const colorMap: Record<TailwindColor, string> = {\r\n primary: 'text-primary-600',\r\n secondary: 'text-secondary-600',\r\n success: 'text-success-600',\r\n warning: 'text-warning-600',\r\n danger: 'text-danger-600',\r\n info: 'text-info-600'\r\n };\r\n\r\n return `tailwind-spinner-svg ${sizeMap[this.size()]} ${colorMap[this.color()]}`;\r\n });\r\n\r\n readonly labelClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs',\r\n sm: 'text-xs',\r\n md: 'text-sm',\r\n lg: 'text-base',\r\n xl: 'text-lg'\r\n };\r\n\r\n return `${sizeMap[this.size()]} ${this.color()} font-medium`;\r\n });\r\n}\r\n","<div [class]=\"containerClasses()\" role=\"status\" [attr.aria-label]=\"ariaLabel()\">\n <svg [class]=\"spinnerClasses()\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-20\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n <path\n class=\"opacity-80\"\n fill=\"currentColor\"\n 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\" />\n </svg>\n\n @if (label()) {\n <span [class]=\"labelClasses()\">{{ label() }}</span>\n }\n</div>\n","import { Component, computed, effect, ElementRef, input, output, signal, viewChild } from '@angular/core';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-modal',\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.scss'\r\n})\r\nexport class TailwindModal extends TailwindComponent {\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Whether to show close button in header */\r\n readonly showCloseButton = input<boolean>(true);\r\n /** Whether clicking backdrop closes the modal */\r\n readonly closeOnBackdrop = input<boolean>(true);\r\n /** Whether pressing Escape closes the modal */\r\n readonly closeOnEscape = input<boolean>(true);\r\n\r\n /** Open/close state */\r\n readonly isOpen = signal(false);\r\n /** Visibility for animation */\r\n readonly isVisible = signal(false);\r\n\r\n /** Emitted when the modal is fully closed (after exit animation) */\r\n readonly onClose = output<void>();\r\n\r\n private readonly modalPanel = viewChild<ElementRef>('modalPanel');\r\n\r\n readonly panelClasses = computed(() => {\r\n const base = ['relative bg-white rounded-xl shadow-2xl', 'w-full transform transition-all duration-200'];\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'max-w-sm',\r\n sm: 'max-w-md',\r\n md: 'max-w-lg',\r\n lg: 'max-w-2xl',\r\n xl: 'max-w-4xl'\r\n };\r\n\r\n const animation = this.isVisible() ? 'opacity-100 scale-100' : 'opacity-0 scale-95';\r\n\r\n return [...base, sizeMap[this.size()], animation].join(' ');\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (this.isOpen()) {\r\n requestAnimationFrame(() => {\r\n this.isVisible.set(true);\r\n this.modalPanel()?.nativeElement?.focus();\r\n });\r\n }\r\n });\r\n }\r\n\r\n /** Open the modal */\r\n open(): void {\r\n this.isOpen.set(true);\r\n }\r\n\r\n /** Close the modal (plays exit animation then emits onClose) */\r\n close(): void {\r\n this.isVisible.set(false);\r\n setTimeout(() => {\r\n this.isOpen.set(false);\r\n this.onClose.emit();\r\n }, 200);\r\n }\r\n}\r\n","@if (isOpen()) {\r\n <!-- Backdrop -->\r\n <div\r\n class=\"fixed inset-0 bg-black/50 backdrop-blur-sm z-1040 transition-opacity duration-200\"\r\n [class.opacity-100]=\"isVisible()\"\r\n [class.opacity-0]=\"!isVisible()\"\r\n (click)=\"closeOnBackdrop() && close()\"\r\n aria-hidden=\"true\"></div>\r\n\r\n <!-- Modal -->\r\n <div\r\n class=\"fixed inset-0 z-1050 overflow-y-auto\"\r\n role=\"dialog\"\r\n [attr.aria-modal]=\"true\"\r\n (keydown.escape)=\"closeOnEscape() && close()\">\r\n <div class=\"flex min-h-full items-center justify-center p-4\">\r\n <div #modalPanel [class]=\"panelClasses()\" tabindex=\"-1\">\r\n\r\n <!-- Header -->\r\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-surface-200\">\r\n <h2 class=\"text-lg font-semibold text-surface-900 pr-2\">\r\n <ng-content />\r\n </h2>\r\n @if (showCloseButton()) {\r\n <button\r\n type=\"button\"\r\n class=\"p-1.5 -m-1.5 shrink-0 rounded-lg text-surface-400 hover:text-surface-600 hover:bg-surface-100 transition-colors cursor-pointer\"\r\n aria-label=\"Close\"\r\n (click)=\"close()\">\r\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n\r\n <!-- Body -->\r\n <ng-content select=\"tailwind-modal-content\" />\r\n\r\n <!-- Footer -->\r\n <ng-content select=\"tailwind-modal-footer\" />\r\n\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n/**\r\n * Transparent wrapper — the visual header structure is provided by TailwindModal.\r\n * Use inside a programmatically-opened component to supply the modal title.\r\n */\r\n@Component({\r\n selector: 'tailwind-modal-title',\r\n template: `<ng-content />`,\r\n styles: [`:host { display: contents; }`]\r\n})\r\nexport class TailwindModalTitle {}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'tailwind-modal-content',\r\n template: `\r\n <div class=\"px-6 py-5\">\r\n <ng-content />\r\n </div>\r\n `\r\n})\r\nexport class TailwindModalContent {}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'tailwind-modal-footer',\r\n template: `\r\n <div class=\"px-6 py-4 border-t border-surface-100 bg-surface-50/50 rounded-b-xl\">\r\n <ng-content />\r\n </div>\r\n `\r\n})\r\nexport class TailwindModalFooter {}\r\n","import { Component, input, signal } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-tab',\r\n templateUrl: './tab.component.html',\r\n styleUrl: './tab.component.scss'\r\n})\r\nexport class TailwindTab extends TailwindComponent {\r\n /** Tab label */\r\n readonly label = input.required<string>();\r\n /** Tab icon (optional, CSS class or content) */\r\n readonly icon = input<string>('');\r\n /** Whether the tab is disabled */\r\n readonly disabled = input<boolean>(false);\r\n /** Whether this tab is the currently active one (set by parent) */\r\n readonly isActive = signal(false);\r\n}\r\n","@if (isActive()) {\n <div role=\"tabpanel\" [attr.aria-labelledby]=\"id() ? 'tab-' + id() : null\">\n <ng-content />\n </div>\n}\n","import { Component, contentChildren, input, model, effect } from '@angular/core';\r\nimport { TailwindTab } from './tab.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-tab-group',\r\n templateUrl: './tab-group.component.html',\r\n styleUrl: './tab-group.component.scss'\r\n})\r\nexport class TailwindTabGroup extends TailwindComponent {\r\n /** Accessible label for the tab list */\r\n readonly ariaLabel = input<string>('');\r\n /** Whether tabs can scroll horizontally */\r\n readonly scrollable = input<boolean>(false);\r\n\r\n /** Currently active tab index (two-way) */\r\n readonly activeIndex = model<number>(0);\r\n\r\n /** Query all child TailwindTab components */\r\n readonly tabs = contentChildren(TailwindTab);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const allTabs = this.tabs();\r\n const idx = this.activeIndex();\r\n allTabs.forEach((tab, i) => tab.isActive.set(i === idx));\r\n });\r\n }\r\n\r\n selectTab(index: number): void {\r\n this.activeIndex.set(index);\r\n }\r\n}\r\n","<!-- Tab Headers -->\n<div class=\"border-b border-surface-200\" role=\"tablist\" [attr.aria-label]=\"ariaLabel()\">\n <nav class=\"flex -mb-px gap-1\" [class.overflow-x-auto]=\"scrollable()\">\n @for (tab of tabs(); track $index; let i = $index) {\n <button\n type=\"button\"\n role=\"tab\"\n [attr.id]=\"tab.id() ? 'tab-' + tab.id() : null\"\n [attr.aria-selected]=\"activeIndex() === i\"\n [attr.aria-controls]=\"tab.id() ? tab.id() : null\"\n [disabled]=\"tab.disabled()\"\n class=\"group relative px-4 py-2.5 text-sm font-medium whitespace-nowrap transition-colors duration-150 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/30 focus-visible:rounded-t-lg\"\n [class.text-primary-600]=\"activeIndex() === i\"\n [class.text-surface-500]=\"activeIndex() !== i\"\n [class.hover:text-surface-700]=\"activeIndex() !== i && !tab.disabled()\"\n [class.opacity-50]=\"tab.disabled()\"\n [class.cursor-not-allowed]=\"tab.disabled()\"\n (click)=\"!tab.disabled() && selectTab(i)\">\n {{ tab.label() }}\n <!-- Active indicator -->\n <span\n class=\"absolute bottom-0 left-0 right-0 h-0.5 rounded-full transition-all duration-200\"\n [class.bg-primary-600]=\"activeIndex() === i\"\n [class.scale-x-100]=\"activeIndex() === i\"\n [class.scale-x-0]=\"activeIndex() !== i\"></span>\n </button>\n }\n </nav>\n</div>\n\n<!-- Tab Content -->\n<div class=\"pt-4\">\n <ng-content />\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSeverity, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-progress-bar',\r\n templateUrl: './progress-bar.component.html',\r\n styleUrl: './progress-bar.component.scss'\r\n})\r\nexport class TailwindProgressBar extends TailwindComponent {\r\n /** Current value (0-100) */\r\n readonly value = input<number>(0);\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Show the label row */\r\n readonly showLabel = input<boolean>(true);\r\n /** Show percentage value */\r\n readonly showValue = input<boolean>(true);\r\n /** Color variant */\r\n readonly variant = input<TailwindSeverity | 'primary'>('primary');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Indeterminate mode (animated) */\r\n readonly indeterminate = input<boolean>(false);\r\n /** Whether to use striped pattern */\r\n readonly striped = input<boolean>(false);\r\n\r\n readonly clampedValue = computed(() => Math.max(0, Math.min(100, this.value())));\r\n\r\n readonly trackClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'h-1',\r\n sm: 'h-1.5',\r\n md: 'h-2.5',\r\n lg: 'h-4',\r\n xl: 'h-5'\r\n };\r\n\r\n return `w-full bg-surface-200 rounded-full overflow-hidden ${sizeMap[this.size()]}`;\r\n });\r\n\r\n readonly barClasses = computed(() => {\r\n const variantMap: Record<string, string> = {\r\n primary: 'bg-primary-600',\r\n success: 'bg-success-600',\r\n warning: 'bg-warning-500',\r\n danger: 'bg-danger-600',\r\n info: 'bg-info-600'\r\n };\r\n\r\n const base = [\r\n 'h-full rounded-full transition-all duration-300 ease-out',\r\n variantMap[this.variant()] ?? variantMap['primary']\r\n ];\r\n\r\n if (this.indeterminate()) {\r\n base.push('tailwind-progress-indeterminate');\r\n }\r\n\r\n if (this.striped()) {\r\n base.push('bg-gradient-to-r from-transparent via-white/20 to-transparent bg-[length:1rem_100%]');\r\n }\r\n\r\n return base.join(' ');\r\n });\r\n}\r\n","<div class=\"w-full\">\n @if (showLabel()) {\n <div class=\"flex justify-between items-center mb-1.5\">\n @if (label()) {\n <span class=\"text-sm font-medium text-surface-700\">{{ label() }}</span>\n }\n @if (showValue()) {\n <span class=\"text-sm font-medium text-surface-600\">{{ clampedValue() }}%</span>\n }\n </div>\n }\n\n <div\n [class]=\"trackClasses()\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"clampedValue()\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-label]=\"label() || 'Progress'\">\n <div [class]=\"barClasses()\" [style.width.%]=\"indeterminate() ? 100 : clampedValue()\"></div>\n </div>\n</div>\n","import {\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n input,\r\n OnDestroy,\r\n OnInit,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TailwindMenuItem } from '../../models';\r\n\r\n/** Matches previous `min-w-48` floor when the anchor is narrower. */\r\nconst MIN_PANEL_WIDTH_PX = 192;\r\n\r\n@Component({\r\n selector: 'tailwind-menu',\r\n templateUrl: './menu.component.html',\r\n styleUrl: './menu.component.scss'\r\n})\r\nexport class TailwindMenu extends TailwindComponent implements OnDestroy, OnInit {\r\n private openScheduleId: ReturnType<typeof setTimeout> | undefined;\r\n private anchorEl: HTMLElement | null = null;\r\n\r\n private readonly onScrollReposition = (): void => {\r\n if (this.isOpen()) {\r\n this.updatePanelPosition();\r\n }\r\n };\r\n\r\n readonly items = input<TailwindMenuItem[]>([]);\r\n readonly align = input<'left' | 'right'>('left');\r\n\r\n readonly onSelect = output<TailwindMenuItem>();\r\n\r\n readonly isOpen = signal(false);\r\n\r\n /** Popover box in coordinates relative to the `position: fixed` containing block (often viewport, not under transformed Docs wrappers). */\r\n readonly panelLayout = signal<{\r\n top: number;\r\n left?: number;\r\n right?: number;\r\n minWidth: number;\r\n } | null>(null);\r\n\r\n private readonly panelRef = viewChild<ElementRef<HTMLElement>>('panel');\r\n\r\n ngOnInit(): void {\r\n document.addEventListener('scroll', this.onScrollReposition, true);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n document.removeEventListener('scroll', this.onScrollReposition, true);\r\n if (this.openScheduleId != null) {\r\n clearTimeout(this.openScheduleId);\r\n }\r\n }\r\n\r\n /**\r\n * Opens the menu under `anchor` (toggle element).\r\n * Pass the click event from the button, e.g. `(click)=\"menu.open($event)\"`, or an `HTMLElement`.\r\n * After the first open with an anchor, `open()` without arguments reuses the last anchor.\r\n *\r\n * Opening is deferred one macrotask so the same `click` is not closed immediately by `document:click`.\r\n */\r\n open(anchor?: Event | HTMLElement): void {\r\n if (anchor !== undefined) {\r\n this.storeAnchor(anchor);\r\n }\r\n if (!this.anchorEl) {\r\n return;\r\n }\r\n if (this.isOpen()) {\r\n return;\r\n }\r\n this.scheduleOpen();\r\n }\r\n\r\n close(): void {\r\n this.isOpen.set(false);\r\n this.panelLayout.set(null);\r\n }\r\n\r\n toggle(anchor?: Event | HTMLElement): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n return;\r\n }\r\n if (anchor !== undefined) {\r\n this.storeAnchor(anchor);\r\n }\r\n if (!this.anchorEl) {\r\n return;\r\n }\r\n this.scheduleOpen();\r\n }\r\n\r\n private storeAnchor(anchor: Event | HTMLElement): void {\r\n if (anchor instanceof HTMLElement) {\r\n this.anchorEl = anchor;\r\n return;\r\n }\r\n const target = anchor.currentTarget;\r\n if (target instanceof HTMLElement) {\r\n this.anchorEl = target;\r\n }\r\n }\r\n\r\n private scheduleOpen(): void {\r\n if (this.openScheduleId != null) {\r\n clearTimeout(this.openScheduleId);\r\n }\r\n this.openScheduleId = setTimeout(() => {\r\n this.openScheduleId = undefined;\r\n this.isOpen.set(true);\r\n this.updatePanelPosition();\r\n requestAnimationFrame(() => this.updatePanelPosition());\r\n }, 0);\r\n }\r\n\r\n private updatePanelPosition(): void {\r\n const anchor = this.anchorEl;\r\n if (!anchor) {\r\n this.panelLayout.set(null);\r\n return;\r\n }\r\n const panelEl = this.panelRef()?.nativeElement;\r\n const cbRoot = panelEl\r\n ? this.getFixedPositioningContainingBlock(panelEl)\r\n : this.getFixedPositioningContainingBlock(anchor);\r\n const cbRect = cbRoot.getBoundingClientRect();\r\n const rect = anchor.getBoundingClientRect();\r\n const minWidth = Math.max(rect.width, MIN_PANEL_WIDTH_PX);\r\n const top = rect.bottom - cbRect.top;\r\n if (this.align() === 'right') {\r\n this.panelLayout.set({\r\n top,\r\n right: cbRect.right - rect.right,\r\n minWidth\r\n });\r\n } else {\r\n this.panelLayout.set({\r\n top,\r\n left: rect.left - cbRect.left,\r\n minWidth\r\n });\r\n }\r\n }\r\n\r\n selectItem(item: TailwindMenuItem): void {\r\n if (!item.disabled) {\r\n this.onSelect.emit(item);\r\n this.close();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n onDocumentEscape(): void {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n this.close();\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: Event): void {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n const target = event.target as Node | null;\r\n if (!target) {\r\n return;\r\n }\r\n const panelEl = this.panelRef()?.nativeElement;\r\n const inPanel = panelEl?.contains(target) ?? false;\r\n const inAnchor = this.anchorEl?.contains(target) ?? false;\r\n if (!inPanel && !inAnchor) {\r\n this.close();\r\n }\r\n }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n if (this.isOpen()) {\r\n this.updatePanelPosition();\r\n }\r\n }\r\n\r\n /** Ancestor that becomes the containing block for `position: fixed` (e.g. Storybook Docs wrappers with `transform`). */\r\n private createsFixedContainingBlock(el: HTMLElement): boolean {\r\n const s = getComputedStyle(el);\r\n if (s.transform && s.transform !== 'none') {\r\n return true;\r\n }\r\n if (s.perspective && s.perspective !== 'none') {\r\n return true;\r\n }\r\n if (s.filter && s.filter !== 'none') {\r\n return true;\r\n }\r\n const contain = s.contain;\r\n if (contain && contain !== 'none' && contain.split(/\\s+/).includes('paint')) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private getFixedPositioningContainingBlock(from: HTMLElement): HTMLElement {\r\n for (let p = from.parentElement; p; p = p.parentElement) {\r\n if (this.createsFixedContainingBlock(p)) {\r\n return p;\r\n }\r\n }\r\n return document.documentElement;\r\n }\r\n}\r\n","@if (isOpen() && panelLayout(); as layout) {\n <div\n #panel\n role=\"menu\"\n class=\"fixed z-1000 bg-white rounded-xl border border-surface-200 shadow-lg py-1 animate-in fade-in slide-in-from-top-1\"\n [style.top.px]=\"layout.top\"\n [style.left.px]=\"layout.left ?? null\"\n [style.right.px]=\"layout.right ?? null\"\n [style.minWidth.px]=\"layout.minWidth\">\n @for (item of items(); track $index) {\n @if (item.divider) {\n <hr class=\"my-1 border-surface-100\" />\n } @else {\n <button\n type=\"button\"\n role=\"menuitem\"\n [disabled]=\"!!item.disabled\"\n class=\"w-full text-left px-4 py-2 text-sm text-surface-700 hover:bg-surface-50 hover:text-surface-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer\"\n (click)=\"selectItem(item)\">\n {{ item.label }}\n </button>\n }\n }\n </div>\n}\n","import { Component, computed, input, output, signal } from '@angular/core';\r\nimport { TailwindPosition } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-drawer',\r\n templateUrl: './drawer.component.html',\r\n styleUrl: './drawer.component.scss'\r\n})\r\nexport class TailwindDrawer extends TailwindComponent {\r\n /** Drawer title */\r\n readonly title = input<string>('');\r\n /** Position (left or right) */\r\n readonly position = input<'left' | 'right'>('right');\r\n /** Width class */\r\n readonly width = input<string>('max-w-md');\r\n /** Whether clicking backdrop closes */\r\n readonly closeOnBackdrop = input<boolean>(true);\r\n\r\n /** Open/close state */\r\n readonly isOpen = signal(false);\r\n /** Visibility for animation */\r\n readonly isVisible = signal(false);\r\n\r\n /** Emitted when closed */\r\n readonly onClose = output<void>();\r\n\r\n readonly panelClasses = computed(() => {\r\n const base = [\r\n 'fixed top-0 bottom-0 z-[1050]',\r\n 'flex flex-col w-full bg-white shadow-2xl',\r\n 'transition-transform duration-300 ease-in-out',\r\n this.width()\r\n ];\r\n\r\n const pos = this.position();\r\n\r\n if (pos === 'right') {\r\n base.push('right-0');\r\n base.push(this.isVisible() ? 'translate-x-0' : 'translate-x-full');\r\n } else {\r\n base.push('left-0');\r\n base.push(this.isVisible() ? 'translate-x-0' : '-translate-x-full');\r\n }\r\n\r\n return base.join(' ');\r\n });\r\n\r\n open(): void {\r\n this.isOpen.set(true);\r\n requestAnimationFrame(() => {\r\n this.isVisible.set(true);\r\n });\r\n }\r\n\r\n close(): void {\r\n this.isVisible.set(false);\r\n setTimeout(() => {\r\n this.isOpen.set(false);\r\n this.onClose.emit();\r\n }, 300);\r\n }\r\n}\r\n","@if (isOpen()) {\n <!-- Backdrop -->\n <div\n class=\"fixed inset-0 bg-black/40 backdrop-blur-sm z-1040 transition-opacity duration-300\"\n [class.opacity-100]=\"isVisible()\"\n [class.opacity-0]=\"!isVisible()\"\n (click)=\"closeOnBackdrop() && close()\"\n aria-hidden=\"true\"></div>\n\n <!-- Drawer Panel -->\n <div [class]=\"panelClasses()\" role=\"dialog\" [attr.aria-modal]=\"true\" [attr.aria-label]=\"title()\">\n <!-- Header -->\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-surface-200\">\n @if (title()) {\n <h2 class=\"text-lg font-semibold text-surface-900\">{{ title() }}</h2>\n }\n <button\n type=\"button\"\n class=\"p-1.5 -m-1.5 rounded-lg text-surface-400 hover:text-surface-600 hover:bg-surface-100 transition-colors ml-auto cursor-pointer\"\n aria-label=\"Close\"\n (click)=\"close()\">\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n </div>\n\n <!-- Body -->\n <div class=\"flex-1 overflow-y-auto px-6 py-5\">\n <ng-content />\n </div>\n\n <!-- Footer -->\n <ng-content select=\"tailwind-drawer-footer\" />\n </div>\n}\n","import { Component, input } from '@angular/core';\r\nimport { TailwindBreadcrumbItem } from './interfaces/breadcrumb-item.interface';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\nexport type { TailwindBreadcrumbItem };\r\n\r\n@Component({\r\n selector: 'tailwind-breadcrumb',\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrl: './breadcrumb.component.scss'\r\n})\r\nexport class TailwindBreadcrumb extends TailwindComponent {\r\n readonly items = input<TailwindBreadcrumbItem[]>([]);\r\n readonly ariaLabel = input<string>('Breadcrumb');\r\n}\r\n","<nav [attr.aria-label]=\"ariaLabel()\" class=\"flex\">\n <ol class=\"inline-flex items-center gap-1.5 text-sm\">\n @for (item of items(); track item.label; let last = $last; let first = $first) {\n <li class=\"inline-flex items-center\">\n @if (!first) {\n <span class=\"mx-1.5 text-surface-400\" aria-hidden=\"true\">\n <svg class=\"w-3.5 h-3.5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </span>\n }\n @if (item.href && !last) {\n <a [href]=\"item.href\" class=\"text-surface-500 hover:text-primary-600 transition-colors font-medium\">{{\n item.label\n }}</a>\n } @else {\n <span\n class=\"font-medium\"\n [class.text-surface-900]=\"last\"\n [class.text-surface-500]=\"!last\"\n [attr.aria-current]=\"last ? 'page' : null\"\n >{{ item.label }}</span\n >\n }\n </li>\n }\n </ol>\n</nav>\n","import { Component, computed, input, model, output } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { Pagination } from './interfaces/pagination.interface';\r\nexport type { Pagination };\r\n\r\n@Component({\r\n selector: 'tailwind-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrl: './pagination.component.scss'\r\n})\r\nexport class TailwindPagination extends TailwindComponent {\r\n readonly totalItems = input.required<Pagination['totalItems']>();\r\n readonly pageSize = input<Pagination['pageSize']>(10);\r\n readonly currentPage = model<Pagination['currentPage']>(1);\r\n readonly ariaLabel = input<Pagination['ariaLabel']>('Pagination');\r\n readonly summary = input<Pagination['summary']>('Showing {start}-{end} of {total}');\r\n\r\n readonly onPageChange = output<number>();\r\n\r\n readonly totalPages = computed(() => Math.ceil(this.totalItems() / this.pageSize()));\r\n\r\n readonly visiblePages = computed(() => {\r\n const total = this.totalPages();\r\n return Array.from({ length: total }, (_, i) => i + 1);\r\n });\r\n\r\n readonly summaryText = computed(() => {\r\n const total = this.totalItems();\r\n if (total === 0) return this.summary().replace('{start}', '0').replace('{end}', '0').replace('{total}', '0');\r\n const start = (this.currentPage() - 1) * this.pageSize() + 1;\r\n const end = Math.min(this.currentPage() * this.pageSize(), total);\r\n return this.summary()\r\n .replace('{start}', start.toString())\r\n .replace('{end}', end.toString())\r\n .replace('{total}', total.toString());\r\n });\r\n\r\n goToPage(page: number): void {\r\n if (page >= 1 && page <= this.totalPages()) {\r\n this.currentPage.set(page);\r\n this.onPageChange.emit(page);\r\n }\r\n }\r\n}\r\n","<div class=\"flex flex-wrap items-center justify-between gap-4 w-full\">\n @if (summary()) {\n <span class=\"text-sm text-surface-700 dark:text-surface-300\">\n {{ summaryText() }}\n </span>\n }\n\n <nav [attr.aria-label]=\"ariaLabel()\" class=\"flex items-center gap-1\">\n <!-- Previous -->\n <button\n type=\"button\"\n [disabled]=\"currentPage() <= 1\"\n (click)=\"goToPage(currentPage() - 1)\"\n class=\"p-2 rounded-lg text-surface-500 hover:bg-surface-100 disabled:opacity-40 disabled:cursor-not-allowed transition-colors cursor-pointer\">\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n\n @for (page of visiblePages(); track page) {\n <button\n type=\"button\"\n (click)=\"goToPage(page)\"\n class=\"min-w-8 h-8 px-2 rounded-lg text-sm font-medium transition-colors cursor-pointer\"\n [class.bg-primary-600]=\"page === currentPage()\"\n [class.text-white]=\"page === currentPage()\"\n [class.text-surface-600]=\"page !== currentPage()\"\n [class.hover:bg-surface-100]=\"page !== currentPage()\">\n {{ page }}\n </button>\n }\n\n <!-- Next -->\n <button\n type=\"button\"\n [disabled]=\"currentPage() >= totalPages()\"\n (click)=\"goToPage(currentPage() + 1)\"\n class=\"p-2 rounded-lg text-surface-500 hover:bg-surface-100 disabled:opacity-40 disabled:cursor-not-allowed transition-colors cursor-pointer\">\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n </nav>\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-tag',\r\n templateUrl: './tag.component.html',\r\n styleUrl: './tag.component.scss'\r\n})\r\nexport class TailwindTag extends TailwindComponent {\r\n readonly variant = input<TailwindSeverity | 'neutral' | 'primary'>('neutral');\r\n\r\n readonly computedClasses = computed(() => {\r\n const variantMap: Record<string, string> = {\r\n primary: 'bg-primary-600 text-white',\r\n neutral: 'bg-surface-600 text-white',\r\n success: 'bg-success-600 text-white',\r\n warning: 'bg-warning-500 text-surface-900',\r\n danger: 'bg-danger-600 text-white',\r\n info: 'bg-info-600 text-white'\r\n };\r\n return `inline-flex items-center text-[11px] font-semibold uppercase tracking-wider px-2 py-0.5 rounded ${variantMap[this.variant()]}`;\r\n });\r\n}\r\n","<span [class]=\"computedClasses()\"><ng-content /></span>\n","import { Component, computed, effect, input, output, signal } from '@angular/core';\r\nimport { Pagination, TailwindPagination } from '../pagination/pagination.component';\r\nimport { TailwindTableColumn } from './interfaces/table-column.interface';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\nexport type { TailwindTableColumn };\r\n\r\n@Component({\r\n selector: 'tailwind-table',\r\n imports: [TailwindPagination],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss'\r\n})\r\nexport class TailwindTable extends TailwindComponent {\r\n readonly columns = input<TailwindTableColumn[]>([]);\r\n readonly data = input<Record<string, any>[]>([]);\r\n readonly selectable = input<boolean>(false);\r\n readonly striped = input<boolean>(false);\r\n readonly loading = input<boolean>(false);\r\n readonly emptyMessage = input<string>('No data available');\r\n\r\n // --- Pagination Inputs ---\r\n readonly paginated = input<boolean>(true);\r\n readonly pagination = input<Pagination>();\r\n\r\n // --- Outputs ---\r\n readonly onSortChange = output<{ key: string; direction: 'asc' | 'desc' }>();\r\n readonly onSelectionChange = output<Set<number>>();\r\n\r\n // --- Internal State ---\r\n readonly sortKey = signal<string>('');\r\n readonly sortDir = signal<'asc' | 'desc'>('asc');\r\n readonly selectedRows = signal<Set<number>>(new Set());\r\n readonly currentPage = signal<number>(1);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const fromInput = this.pagination()?.currentPage;\r\n if (fromInput != null && fromInput >= 1) {\r\n this.currentPage.set(fromInput);\r\n }\r\n });\r\n }\r\n\r\n // --- Computed ---\r\n readonly sortedData = computed(() => {\r\n let rows = [...this.data()];\r\n const key = this.sortKey();\r\n if (key) {\r\n const dir = this.sortDir() === 'asc' ? 1 : -1;\r\n rows.sort((a, b) => {\r\n const va = a[key],\r\n vb = b[key];\r\n if (va < vb) return -dir;\r\n if (va > vb) return dir;\r\n return 0;\r\n });\r\n }\r\n return rows;\r\n });\r\n\r\n readonly displayedData = computed(() => {\r\n const rows = this.sortedData();\r\n if (!this.paginated()) return rows;\r\n const size = this.pagination()?.pageSize ?? 10;\r\n const page = this.currentPage();\r\n return rows.slice((page - 1) * size, page * size);\r\n });\r\n\r\n // --- Methods ---\r\n sort(key: string): void {\r\n if (this.sortKey() === key) {\r\n this.sortDir.update(d => (d === 'asc' ? 'desc' : 'asc'));\r\n } else {\r\n this.sortKey.set(key);\r\n this.sortDir.set('asc');\r\n }\r\n this.currentPage.set(1); // Reset to first page on sort\r\n this.onSortChange.emit({ key: this.sortKey(), direction: this.sortDir() });\r\n }\r\n\r\n toggleSelection(index: number): void {\r\n this.selectedRows.update(s => {\r\n const next = new Set(s);\r\n if (next.has(index)) next.delete(index);\r\n else next.add(index);\r\n return next;\r\n });\r\n this.onSelectionChange.emit(this.selectedRows());\r\n }\r\n}\r\n","<div class=\"w-full overflow-x-auto rounded-xl border border-surface-200\">\n <!-- Loading overlay -->\n @if (loading()) {\n <div class=\"flex items-center justify-center py-16 text-surface-400\">\n <svg class=\"animate-spin w-6 h-6 mr-2\" 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\" />\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8z\" />\n </svg>\n Loading...\n </div>\n } @else {\n <table class=\"w-full text-sm text-left\">\n <thead class=\"bg-surface-50 border-b border-surface-200\">\n <tr>\n @for (col of columns(); track col.key) {\n <th\n scope=\"col\"\n class=\"px-4 py-3 font-semibold text-surface-700 whitespace-nowrap\"\n [class.text-center]=\"col.align === 'center'\"\n [class.text-right]=\"col.align === 'right'\"\n [style.width]=\"col.width || 'auto'\">\n @if (col.sortable) {\n <button\n type=\"button\"\n (click)=\"sort(col.key)\"\n class=\"inline-flex items-center gap-1 cursor-pointer hover:text-surface-900 transition-colors\">\n {{ col.label }}\n <svg\n class=\"w-3.5 h-3.5 text-surface-400\"\n [class.text-primary-600]=\"sortKey() === col.key\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n @if (sortKey() === col.key && sortDir() === 'asc') {\n <path\n fill-rule=\"evenodd\"\n d=\"M10 17a.75.75 0 01-.75-.75V5.612L5.29 9.77a.75.75 0 01-1.08-1.04l5.25-5.5a.75.75 0 011.08 0l5.25 5.5a.75.75 0 11-1.08 1.04l-3.96-4.158V16.25A.75.75 0 0110 17z\"\n clip-rule=\"evenodd\" />\n } @else {\n <path\n fill-rule=\"evenodd\"\n d=\"M10 3a.75.75 0 01.75.75v10.638l3.96-4.158a.75.75 0 111.08 1.04l-5.25 5.5a.75.75 0 01-1.08 0l-5.25-5.5a.75.75 0 111.08-1.04l3.96 4.158V3.75A.75.75 0 0110 3z\"\n clip-rule=\"evenodd\" />\n }\n </svg>\n </button>\n } @else {\n {{ col.label }}\n }\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"divide-y divide-surface-100\">\n @for (row of displayedData(); track $index) {\n <tr\n class=\"hover:bg-surface-50/50 transition-colors\"\n [class.bg-surface-50]=\"striped() && $index % 2 === 1\"\n [class.bg-primary-50/30]=\"selectedRows().has($index)\"\n [class.cursor-pointer]=\"selectable()\"\n (click)=\"selectable() && toggleSelection($index)\">\n @for (col of columns(); track col.key) {\n <td\n class=\"px-4 py-3 text-surface-700\"\n [class.text-center]=\"col.align === 'center'\"\n [class.text-right]=\"col.align === 'right'\">\n {{ row[col.key] }}\n </td>\n }\n </tr>\n } @empty {\n <tr>\n <td [attr.colspan]=\"columns().length\" class=\"px-4 py-8 text-center text-surface-400\">\n {{ emptyMessage() }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n @if (paginated() && data().length > 0) {\n <div class=\"px-4 py-3 border-t border-surface-200 bg-white\">\n <tailwind-pagination\n [totalItems]=\"pagination()?.totalItems ?? data().length\"\n [pageSize]=\"pagination()?.pageSize ?? 10\"\n [currentPage]=\"currentPage()\"\n (onPageChange)=\"currentPage.set($event)\"\n [ariaLabel]=\"pagination()?.ariaLabel ?? 'Pagination'\"\n [summary]=\"pagination()?.summary ?? 'Showing {start}-{end} of {total}'\">\n </tailwind-pagination>\n </div>\n }\n }\n</div>\n","import { Component, computed, forwardRef, inject, input, model, signal } from '@angular/core';\r\nimport { formatDate } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\ntype Lang = 'it' | 'en';\r\n\r\nconst I18N: Record<Lang, { months: string[]; weekDays: string[]; today: string; confirm: string; placeholder: string }> = {\r\n it: {\r\n months: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],\r\n weekDays: ['Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa', 'Do'],\r\n today: 'Oggi',\r\n confirm: 'Applica',\r\n placeholder: 'Seleziona data'\r\n },\r\n en: {\r\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n weekDays: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\r\n today: 'Today',\r\n confirm: 'Apply',\r\n placeholder: 'Select date'\r\n }\r\n};\r\n\r\n@Component({\r\n selector: 'tailwind-date-picker',\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindDatePicker), multi: true }],\r\n templateUrl: './date-picker.component.html',\r\n styleUrl: './date-picker.component.scss'\r\n})\r\nexport class TailwindDatePicker extends TailwindComponent implements ControlValueAccessor {\r\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\r\n\r\n protected readonly i18n = I18N[this.lang];\r\n protected readonly weekDays = this.i18n.weekDays;\r\n\r\n readonly label = input<string>('');\r\n readonly placeholder = input<string | undefined>(undefined);\r\n readonly format = input<string>('dd/MM/yyyy');\r\n\r\n readonly value = model<Date | null>(null);\r\n /** Working selection while the panel is open; committed on Apply. */\r\n readonly draft = signal<Date | null>(null);\r\n\r\n readonly isDisabled = signal(false);\r\n readonly showCalendar = signal(false);\r\n readonly viewMonth = signal(new Date().getMonth());\r\n readonly viewYear = signal(new Date().getFullYear());\r\n\r\n readonly effectivePlaceholder = computed(() => {\r\n const p = this.placeholder();\r\n return p?.trim() ? p : this.i18n.placeholder;\r\n });\r\n\r\n readonly displayValue = computed(() => {\r\n const d = this.value();\r\n if (!d) return '';\r\n const fmt = this.format();\r\n try {\r\n return formatDate(d, fmt, this.lang === 'it' ? 'it-IT' : 'en-US');\r\n } catch {\r\n return formatDate(d, fmt, 'en-US');\r\n }\r\n });\r\n\r\n readonly monthYearLabel = computed(() =>\r\n `${this.i18n.months[this.viewMonth()]} ${this.viewYear()}`\r\n );\r\n\r\n readonly calendarDays = computed(() => {\r\n const y = this.viewYear(), m = this.viewMonth();\r\n const offset = (new Date(y, m, 1).getDay() + 6) % 7; // Mon = 0\r\n const total = new Date(y, m + 1, 0).getDate();\r\n const days: number[] = Array(offset).fill(0);\r\n for (let i = 1; i <= total; i++) days.push(i);\r\n return days;\r\n });\r\n\r\n private onChange: (v: Date | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(v: Date | null): void {\r\n this.value.set(v ?? null);\r\n if (v && !isNaN(v.getTime())) {\r\n this.viewMonth.set(v.getMonth());\r\n this.viewYear.set(v.getFullYear());\r\n }\r\n }\r\n\r\n registerOnChange(fn: (v: Date | null) => void): void { this.onChange = fn; }\r\n registerOnTouched(fn: () => void): void { this.onTouched = fn; }\r\n setDisabledState(d: boolean): void { this.isDisabled.set(d); }\r\n\r\n toggleCalendar(): void {\r\n if (this.isDisabled()) return;\r\n if (!this.showCalendar()) {\r\n this.draft.set(this.value());\r\n const ref = this.value() ?? new Date();\r\n this.viewMonth.set(ref.getMonth());\r\n this.viewYear.set(ref.getFullYear());\r\n }\r\n this.showCalendar.update(v => !v);\r\n }\r\n\r\n apply(): void {\r\n const d = this.draft();\r\n this.value.set(d);\r\n this.onChange(d);\r\n this.onTouched();\r\n this.showCalendar.set(false);\r\n }\r\n\r\n prevMonth(): void {\r\n if (this.viewMonth() === 0) { this.viewMonth.set(11); this.viewYear.update(y => y - 1); }\r\n else { this.viewMonth.update(m => m - 1); }\r\n }\r\n\r\n nextMonth(): void {\r\n if (this.viewMonth() === 11) { this.viewMonth.set(0); this.viewYear.update(y => y + 1); }\r\n else { this.viewMonth.update(m => m + 1); }\r\n }\r\n\r\n selectDay(day: number): void {\r\n this.draft.set(new Date(this.viewYear(), this.viewMonth(), day));\r\n }\r\n\r\n isSelected(day: number): boolean {\r\n const d = this.draft();\r\n if (!d) return false;\r\n return d.getFullYear() === this.viewYear() && d.getMonth() === this.viewMonth() && d.getDate() === day;\r\n }\r\n\r\n isToday(day: number): boolean {\r\n const t = new Date();\r\n return t.getFullYear() === this.viewYear() && t.getMonth() === this.viewMonth() && t.getDate() === day;\r\n }\r\n\r\n goToToday(): void {\r\n const t = new Date();\r\n this.viewMonth.set(t.getMonth());\r\n this.viewYear.set(t.getFullYear());\r\n this.selectDay(t.getDate());\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-surface-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"effectivePlaceholder()\"\n class=\"block w-full bg-white border border-surface-300 rounded-md px-3 py-2 text-sm text-surface-900 placeholder:text-surface-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-surface-50 disabled:cursor-not-allowed pr-10\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggleCalendar()\" />\n <svg\n class=\"absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 text-surface-400 pointer-events-none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M5.75 2a.75.75 0 01.75.75V4h7V2.75a.75.75 0 011.5 0V4h.25A2.75 2.75 0 0118 6.75v8.5A2.75 2.75 0 0115.25 18H4.75A2.75 2.75 0 012 15.25v-8.5A2.75 2.75 0 014.75 4H5V2.75A.75.75 0 015.75 2zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75z\"\n clip-rule=\"evenodd\" />\n </svg>\n </div>\n\n @if (showCalendar()) {\n <div class=\"absolute z-popover mt-1 bg-white rounded-xl border border-surface-200 shadow-xl p-4 w-72\">\n <!-- Month/Year nav -->\n <div class=\"flex items-center justify-between mb-3\">\n <button\n type=\"button\"\n (click)=\"prevMonth()\"\n class=\"p-1 rounded-lg hover:bg-surface-100 transition-colors cursor-pointer\">\n <svg\n class=\"w-4 h-4 text-surface-600\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n <span class=\"text-sm font-semibold text-surface-800\">{{ monthYearLabel() }}</span>\n <button\n type=\"button\"\n (click)=\"nextMonth()\"\n class=\"p-1 rounded-lg hover:bg-surface-100 transition-colors cursor-pointer\">\n <svg\n class=\"w-4 h-4 text-surface-600\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n </div>\n <!-- Weekdays -->\n <div class=\"grid grid-cols-7 gap-0 mb-1\">\n @for (day of weekDays; track $index) {\n <div class=\"text-center text-xs font-medium text-surface-400 py-1\">{{ day }}</div>\n }\n </div>\n <!-- Days -->\n <div class=\"grid grid-cols-7 gap-0\">\n @for (day of calendarDays(); track $index) {\n @if (day === 0) {\n <div></div>\n } @else {\n <button\n type=\"button\"\n (click)=\"selectDay(day)\"\n class=\"h-8 w-8 mx-auto rounded-lg text-sm transition-colors cursor-pointer hover:bg-surface-100\"\n [class.bg-primary-600]=\"isSelected(day)\"\n [class.text-white]=\"isSelected(day)\"\n [class.hover:bg-primary-700]=\"isSelected(day)\"\n [class.text-surface-700]=\"!isSelected(day) && !isToday(day)\"\n [class.font-semibold]=\"isToday(day)\"\n [class.text-primary-600]=\"isToday(day) && !isSelected(day)\">\n {{ day }}\n </button>\n }\n }\n </div>\n <div class=\"mt-2 pt-2 border-t border-surface-100 flex items-center justify-between gap-2\">\n <button\n type=\"button\"\n (click)=\"goToToday()\"\n [disabled]=\"isDisabled()\"\n class=\"text-xs text-primary-600 font-medium hover:underline cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed disabled:no-underline\">\n {{ i18n.today }}\n </button>\n <button\n type=\"button\"\n (click)=\"apply()\"\n [disabled]=\"isDisabled() || !draft()\"\n class=\"px-3 py-1.5 text-xs font-medium rounded-md bg-primary-600 text-white hover:bg-primary-700 cursor-pointer disabled:bg-surface-200 disabled:text-surface-500 disabled:cursor-not-allowed\">\n {{ i18n.confirm }}\n </button>\n </div>\n </div>\n }\n</div>\n","import { Component, computed, forwardRef, inject, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\ntype Lang = 'it' | 'en';\r\ntype TimeDraft = { h: number; m: number };\r\n\r\nconst I18N: Record<Lang, { placeholder: string; now: string; apply: string }> = {\r\n it: { placeholder: 'Seleziona ora', now: 'Adesso', apply: 'Applica' },\r\n en: { placeholder: 'Select time', now: 'Now', apply: 'Apply' }\r\n};\r\n\r\n@Component({\r\n selector: 'tailwind-time-picker',\r\n imports: [],\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindTimePicker), multi: true }],\r\n templateUrl: './time-picker.component.html',\r\n styleUrl: './time-picker.component.scss'\r\n})\r\nexport class TailwindTimePicker extends TailwindComponent implements ControlValueAccessor {\r\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\r\n\r\n protected readonly i18n = I18N[this.lang];\r\n protected readonly hours = Array.from({ length: 24 }, (_, i) => i);\r\n protected readonly minutes = Array.from({ length: 60 }, (_, i) => i);\r\n\r\n readonly label = input<string>('');\r\n readonly value = model<string>('');\r\n readonly isDisabled = signal(false);\r\n readonly showPanel = signal(false);\r\n readonly draft = signal<TimeDraft | null>(null);\r\n\r\n readonly displayValue = computed(() => this.value());\r\n\r\n private onChange: (v: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(v: string): void {\r\n this.value.set(v ?? '');\r\n }\r\n registerOnChange(fn: (v: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState(d: boolean): void {\r\n this.isDisabled.set(d);\r\n }\r\n\r\n togglePanel(): void {\r\n if (this.isDisabled()) return;\r\n const opening = !this.showPanel();\r\n if (opening) {\r\n const v = this.value();\r\n const parts = v ? v.split(':') : null;\r\n const now = new Date();\r\n this.draft.set({\r\n h: parts ? parseInt(parts[0], 10) || 0 : now.getHours(),\r\n m: parts ? parseInt(parts[1], 10) || 0 : now.getMinutes()\r\n });\r\n }\r\n this.showPanel.set(opening);\r\n }\r\n\r\n apply(): void {\r\n const d = this.draft();\r\n if (!d) return;\r\n const val = `${d.h.toString().padStart(2, '0')}:${d.m.toString().padStart(2, '0')}`;\r\n this.value.set(val);\r\n this.onChange(val);\r\n this.onTouched();\r\n this.showPanel.set(false);\r\n }\r\n\r\n goToNow(): void {\r\n const now = new Date();\r\n this.draft.set({ h: now.getHours(), m: now.getMinutes() });\r\n }\r\n\r\n onHourChange(e: Event): void {\r\n const cur = this.draft();\r\n if (!cur) return;\r\n this.draft.set({ ...cur, h: Number((e.target as HTMLSelectElement).value) });\r\n }\r\n\r\n onMinuteChange(e: Event): void {\r\n const cur = this.draft();\r\n if (!cur) return;\r\n this.draft.set({ ...cur, m: Number((e.target as HTMLSelectElement).value) });\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-surface-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"i18n.placeholder\"\n [disabled]=\"isDisabled()\"\n class=\"block w-full bg-white border border-surface-300 rounded-md px-3 py-2 text-sm text-surface-900 placeholder:text-surface-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-surface-50 disabled:cursor-not-allowed pr-10\"\n (click)=\"togglePanel()\" />\n <svg\n class=\"absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 text-surface-400 pointer-events-none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z\"\n clip-rule=\"evenodd\" />\n </svg>\n\n @if (showPanel()) {\n <div\n class=\"absolute left-0 top-full z-popover mt-1 w-52 rounded-xl border border-surface-200 bg-white p-4 shadow-xl\">\n <div class=\"flex items-center gap-2\">\n <select\n class=\"flex-1 min-w-0 block bg-white border border-surface-300 rounded-md px-2 py-1.5 text-sm text-surface-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-surface-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled()\"\n (change)=\"onHourChange($event)\">\n @for (h of hours; track h) {\n <option [value]=\"h\" [selected]=\"h === (draft()?.h ?? 0)\">\n {{ h.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n <span class=\"text-surface-400 text-sm shrink-0\">:</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-surface-300 rounded-md px-2 py-1.5 text-sm text-surface-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-surface-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled()\"\n (change)=\"onMinuteChange($event)\">\n @for (m of minutes; track m) {\n <option [value]=\"m\" [selected]=\"m === (draft()?.m ?? 0)\">\n {{ m.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n </div>\n <div class=\"mt-2 pt-2 border-t border-surface-100 flex items-center justify-between gap-2\">\n <button\n type=\"button\"\n (click)=\"goToNow()\"\n [disabled]=\"isDisabled()\"\n class=\"text-xs text-primary-600 font-medium hover:underline cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed disabled:no-underline\">\n {{ i18n.now }}\n </button>\n <button\n type=\"button\"\n (click)=\"apply()\"\n [disabled]=\"isDisabled()\"\n class=\"px-3 py-1.5 text-xs font-medium rounded-md bg-primary-600 text-white hover:bg-primary-700 cursor-pointer disabled:bg-surface-200 disabled:text-surface-500 disabled:cursor-not-allowed\">\n {{ i18n.apply }}\n </button>\n </div>\n </div>\n }\n </div>\n</div>\n","import { formatDate } from '@angular/common';\r\nimport { Component, computed, forwardRef, inject, input, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\ntype Lang = 'it' | 'en';\r\n\r\nconst I18N: Record<Lang, { months: string[]; weekDays: string[]; time: string; today: string; confirm: string; placeholder: string }> = {\r\n it: {\r\n months: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],\r\n weekDays: ['Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa', 'Do'],\r\n time: 'Ora',\r\n today: 'Oggi',\r\n confirm: 'Applica',\r\n placeholder: 'Seleziona data e ora'\r\n },\r\n en: {\r\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n weekDays: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\r\n time: 'Time',\r\n today: 'Today',\r\n confirm: 'Apply',\r\n placeholder: 'Select date and time'\r\n }\r\n};\r\n\r\n@Component({\r\n selector: 'tailwind-datetime-picker',\r\n imports: [],\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindDateTimePicker), multi: true }],\r\n templateUrl: './datetime-picker.component.html',\r\n styleUrl: './datetime-picker.component.scss'\r\n})\r\nexport class TailwindDateTimePicker extends TailwindComponent implements ControlValueAccessor {\r\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\r\n\r\n protected readonly i18n = I18N[this.lang];\r\n protected readonly weekDays = this.i18n.weekDays;\r\n protected readonly hours = Array.from({ length: 24 }, (_, i) => i);\r\n protected readonly minutes = Array.from({ length: 60 }, (_, i) => i);\r\n\r\n readonly label = input<string>('');\r\n readonly placeholder = input<string | undefined>(undefined);\r\n /** Angular [DatePipe](https://angular.dev/api/common/DatePipe) format string. */\r\n readonly format = input<string>('dd/MM/yyyy HH:mm');\r\n\r\n readonly selected = signal<Date | null>(null);\r\n readonly draft = signal<Date | null>(null);\r\n readonly isDisabled = signal(false);\r\n readonly showPanel = signal(false);\r\n readonly viewMonth = signal(new Date().getMonth());\r\n readonly viewYear = signal(new Date().getFullYear());\r\n\r\n readonly effectivePlaceholder = computed(() => {\r\n const p = this.placeholder();\r\n return p?.trim() ? p : this.i18n.placeholder;\r\n });\r\n\r\n readonly displayValue = computed(() => {\r\n const d = this.selected();\r\n if (!d) return '';\r\n // formatDate richiede registerLocaleData per locale non-EN: leggiamo format fuori dal try\r\n // per non richiamare signal dentro il catch (contesto reattivo non garantito dopo un throw).\r\n // Per i formati numerici (default dd/MM/yyyy HH:mm) il risultato è identico in ogni locale.\r\n const fmt = this.format();\r\n try {\r\n return formatDate(d, fmt, this.lang === 'it' ? 'it-IT' : 'en-US');\r\n } catch {\r\n return formatDate(d, fmt, 'en-US');\r\n }\r\n });\r\n\r\n readonly monthYearLabel = computed(() =>\r\n `${this.i18n.months[this.viewMonth()]} ${this.viewYear()}`\r\n );\r\n\r\n readonly calendarDays = computed(() => {\r\n const y = this.viewYear(), m = this.viewMonth();\r\n const offset = (new Date(y, m, 1).getDay() + 6) % 7; // Mon = 0\r\n const total = new Date(y, m + 1, 0).getDate();\r\n const days: number[] = Array(offset).fill(0);\r\n for (let i = 1; i <= total; i++) days.push(i);\r\n return days;\r\n });\r\n\r\n private onChange: (v: Date | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(v: Date | null | undefined): void {\r\n const d = v ? new Date(v.getTime()) : null;\r\n this.selected.set(d);\r\n if (this.showPanel()) this.draft.set(d ? new Date(d.getTime()) : null);\r\n const ref = d ?? new Date();\r\n this.viewMonth.set(ref.getMonth());\r\n this.viewYear.set(ref.getFullYear());\r\n }\r\n\r\n registerOnChange(fn: (v: Date | null) => void): void { this.onChange = fn; }\r\n registerOnTouched(fn: () => void): void { this.onTouched = fn; }\r\n setDisabledState(disabled: boolean): void { this.isDisabled.set(disabled); }\r\n\r\n togglePanel(): void {\r\n if (this.isDisabled()) return;\r\n const opening = !this.showPanel();\r\n if (opening) {\r\n const s = this.selected();\r\n const ref = s ? new Date(s.getTime()) : this.todayNow();\r\n this.draft.set(ref);\r\n this.viewMonth.set(ref.getMonth());\r\n this.viewYear.set(ref.getFullYear());\r\n }\r\n this.showPanel.set(opening);\r\n }\r\n\r\n apply(): void {\r\n const d = this.draft();\r\n this.selected.set(d ? new Date(d.getTime()) : null);\r\n this.emitValue(this.selected());\r\n this.showPanel.set(false);\r\n }\r\n\r\n prevMonth(): void {\r\n if (this.viewMonth() === 0) { this.viewMonth.set(11); this.viewYear.update(y => y - 1); }\r\n else { this.viewMonth.update(m => m - 1); }\r\n }\r\n\r\n nextMonth(): void {\r\n if (this.viewMonth() === 11) { this.viewMonth.set(0); this.viewYear.update(y => y + 1); }\r\n else { this.viewMonth.update(m => m + 1); }\r\n }\r\n\r\n selectDay(day: number): void {\r\n const cur = this.draft();\r\n this.draft.set(new Date(this.viewYear(), this.viewMonth(), day, cur?.getHours() ?? 0, cur?.getMinutes() ?? 0, 0, 0));\r\n }\r\n\r\n isSelected(day: number): boolean {\r\n const v = this.draft();\r\n return !!v && v.getFullYear() === this.viewYear() && v.getMonth() === this.viewMonth() && v.getDate() === day;\r\n }\r\n\r\n isToday(day: number): boolean {\r\n const t = new Date();\r\n return t.getFullYear() === this.viewYear() && t.getMonth() === this.viewMonth() && t.getDate() === day;\r\n }\r\n\r\n goToToday(): void {\r\n const t = this.todayNow();\r\n this.viewMonth.set(t.getMonth());\r\n this.viewYear.set(t.getFullYear());\r\n this.draft.set(t);\r\n }\r\n\r\n onHourChange(e: Event): void {\r\n const cur = this.draft();\r\n if (!cur) return;\r\n const h = Number((e.target as HTMLSelectElement).value);\r\n this.draft.set(new Date(cur.getFullYear(), cur.getMonth(), cur.getDate(), h, cur.getMinutes(), 0, 0));\r\n }\r\n\r\n onMinuteChange(e: Event): void {\r\n const cur = this.draft();\r\n if (!cur) return;\r\n const min = Number((e.target as HTMLSelectElement).value);\r\n this.draft.set(new Date(cur.getFullYear(), cur.getMonth(), cur.getDate(), cur.getHours(), min, 0, 0));\r\n }\r\n\r\n private todayNow(): Date {\r\n const t = new Date();\r\n return new Date(t.getFullYear(), t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), 0, 0);\r\n }\r\n\r\n private emitValue(d: Date | null): void {\r\n this.onChange(d ? new Date(d.getTime()) : null);\r\n this.onTouched();\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-surface-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"effectivePlaceholder()\"\n class=\"block w-full bg-white border border-surface-300 rounded-md px-3 py-2 text-sm text-surface-900 placeholder:text-surface-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-surface-50 disabled:cursor-not-allowed pr-10\"\n [disabled]=\"isDisabled()\"\n (click)=\"togglePanel()\" />\n <svg\n class=\"absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 text-surface-400 pointer-events-none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M5.75 2a.75.75 0 01.75.75V4h7V2.75a.75.75 0 011.5 0V4h.25A2.75 2.75 0 0118 6.75v8.5A2.75 2.75 0 0115.25 18H4.75A2.75 2.75 0 012 15.25v-8.5A2.75 2.75 0 014.75 4H5V2.75A.75.75 0 015.75 2zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75z\"\n clip-rule=\"evenodd\" />\n </svg>\n\n @if (showPanel()) {\n <div\n class=\"absolute left-0 top-full z-popover mt-1 w-80 max-w-full rounded-xl border border-surface-200 bg-white p-4 shadow-xl\">\n <div class=\"flex items-center justify-between mb-3\">\n <button\n type=\"button\"\n (click)=\"prevMonth()\"\n class=\"p-1 rounded-lg hover:bg-surface-100 transition-colors cursor-pointer\">\n <svg\n class=\"w-4 h-4 text-surface-600\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n <span class=\"text-sm font-semibold text-surface-800\">{{ monthYearLabel() }}</span>\n <button\n type=\"button\"\n (click)=\"nextMonth()\"\n class=\"p-1 rounded-lg hover:bg-surface-100 transition-colors cursor-pointer\">\n <svg\n class=\"w-4 h-4 text-surface-600\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n </div>\n <div class=\"grid grid-cols-7 gap-0 mb-1\">\n @for (day of weekDays; track day) {\n <div class=\"text-center text-xs font-medium text-surface-400 py-1\">{{ day }}</div>\n }\n </div>\n <div class=\"grid grid-cols-7 gap-0\">\n @for (day of calendarDays(); track $index) {\n @if (day === 0) {\n <div></div>\n } @else {\n <button\n type=\"button\"\n (click)=\"selectDay(day)\"\n class=\"h-8 w-8 mx-auto rounded-lg text-sm transition-colors cursor-pointer hover:bg-surface-100\"\n [class.bg-primary-600]=\"isSelected(day)\"\n [class.text-white]=\"isSelected(day)\"\n [class.hover:bg-primary-700]=\"isSelected(day)\"\n [class.text-surface-700]=\"!isSelected(day) && !isToday(day)\"\n [class.font-semibold]=\"isToday(day)\"\n [class.text-primary-600]=\"isToday(day) && !isSelected(day)\">\n {{ day }}\n </button>\n }\n }\n </div>\n <div class=\"mt-3 pt-3 border-t border-surface-100 flex items-center gap-2\">\n <span class=\"text-xs font-medium text-surface-600 shrink-0\">{{ i18n.time }}</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-surface-300 rounded-md px-2 py-1.5 text-sm text-surface-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-surface-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled() || !draft()\"\n (change)=\"onHourChange($event)\">\n @for (h of hours; track h) {\n <option [value]=\"h\" [selected]=\"h === (draft()?.getHours() ?? 0)\">\n {{ h.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n <span class=\"text-surface-400 text-sm\">:</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-surface-300 rounded-md px-2 py-1.5 text-sm text-surface-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-surface-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled() || !draft()\"\n (change)=\"onMinuteChange($event)\">\n @for (m of minutes; track m) {\n <option [value]=\"m\" [selected]=\"m === (draft()?.getMinutes() ?? 0)\">\n {{ m.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n </div>\n <div class=\"mt-2 pt-2 border-t border-surface-100 flex items-center justify-between gap-2\">\n <button\n type=\"button\"\n (click)=\"goToToday()\"\n [disabled]=\"isDisabled()\"\n class=\"text-xs text-primary-600 font-medium hover:underline cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed disabled:no-underline\">\n {{ i18n.today }}\n </button>\n <button\n type=\"button\"\n (click)=\"apply()\"\n [disabled]=\"isDisabled() || !draft()\"\n class=\"px-3 py-1.5 text-xs font-medium rounded-md bg-primary-600 text-white hover:bg-primary-700 cursor-pointer disabled:bg-surface-200 disabled:text-surface-500 disabled:cursor-not-allowed\">\n {{ i18n.confirm }}\n </button>\n </div>\n </div>\n }\n </div>\n</div>\n","import { Component, input, signal } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-step',\r\n templateUrl: './step.component.html',\r\n styleUrl: './step.component.scss'\r\n})\r\nexport class TailwindStep extends TailwindComponent {\r\n readonly label = input.required<string>();\r\n readonly description = input<string>('');\r\n readonly optional = input<boolean>(false);\r\n readonly completed = signal(false);\r\n readonly isActive = signal(false);\r\n}\r\n","@if (isActive()) {\n <div class=\"py-4\"><ng-content /></div>\n}\n","import { Component, contentChildren, input, model, effect } from '@angular/core';\r\nimport { TailwindStep } from './step.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-stepper',\r\n templateUrl: './stepper.component.html',\r\n styleUrl: './stepper.component.scss'\r\n})\r\nexport class TailwindStepper extends TailwindComponent {\r\n readonly activeIndex = model<number>(0);\r\n readonly linear = input<boolean>(false);\r\n\r\n readonly steps = contentChildren(TailwindStep);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const allSteps = this.steps();\r\n const idx = this.activeIndex();\r\n allSteps.forEach((s, i) => s.isActive.set(i === idx));\r\n });\r\n }\r\n\r\n goToStep(index: number): void {\r\n if (!this.linear() || index <= this.activeIndex()) {\r\n this.activeIndex.set(index);\r\n }\r\n }\r\n\r\n next(): void {\r\n const s = this.steps();\r\n if (this.activeIndex() < s.length - 1) {\r\n s[this.activeIndex()].completed.set(true);\r\n this.activeIndex.update(v => v + 1);\r\n }\r\n }\r\n\r\n previous(): void {\r\n if (this.activeIndex() > 0) this.activeIndex.update(v => v - 1);\r\n }\r\n}\r\n","<!-- Step indicators -->\n<div class=\"flex items-center mb-6\">\n @for (step of steps(); track step.label(); let i = $index; let last = $last) {\n <div class=\"flex items-center\" [class.flex-1]=\"!last\">\n <button\n type=\"button\"\n (click)=\"goToStep(i)\"\n class=\"flex items-center gap-2 cursor-pointer group\"\n [attr.aria-current]=\"activeIndex() === i ? 'step' : null\">\n <div\n class=\"w-8 h-8 rounded-full flex items-center justify-center text-sm font-semibold border-2 transition-all duration-200\"\n [class.bg-primary-600]=\"i <= activeIndex()\"\n [class.border-primary-600]=\"i <= activeIndex()\"\n [class.text-white]=\"i <= activeIndex()\"\n [class.border-surface-300]=\"i > activeIndex()\"\n [class.text-surface-500]=\"i > activeIndex()\">\n @if (step.completed()) {\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z\"\n clip-rule=\"evenodd\" />\n </svg>\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"hidden sm:block\">\n <p\n class=\"text-sm font-medium\"\n [class.text-primary-600]=\"i <= activeIndex()\"\n [class.text-surface-500]=\"i > activeIndex()\">\n {{ step.label() }}\n </p>\n @if (step.description()) {\n <p class=\"text-xs text-surface-400\">{{ step.description() }}</p>\n }\n </div>\n </button>\n @if (!last) {\n <div\n class=\"flex-1 h-0.5 mx-3 rounded-full transition-colors duration-200\"\n [class.bg-primary-600]=\"i < activeIndex()\"\n [class.bg-surface-200]=\"i >= activeIndex()\"></div>\n }\n </div>\n }\n</div>\n<!-- Step content -->\n<ng-content />\n","import { Component, input, output, signal } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n imports: [CommonModule],\r\n selector: 'tailwind-accordion-item',\r\n templateUrl: './accordion-item.component.html',\r\n styleUrl: './accordion-item.component.scss'\r\n})\r\nexport class TailwindAccordionItem extends TailwindComponent {\r\n readonly title = input.required<string>();\r\n readonly disabled = input<boolean>(false);\r\n readonly isExpanded = signal(false);\r\n\r\n readonly onToggle = output<void>();\r\n\r\n toggle(): void {\r\n if (!this.disabled()) {\r\n this.isExpanded.update(v => !v);\r\n this.onToggle.emit();\r\n }\r\n }\r\n}\r\n","<div [id]=\"id()\" [ngClass]=\"class()\" class=\"border-b border-surface-200 last:border-b-0\">\r\n <button\r\n type=\"button\"\r\n (click)=\"toggle()\"\r\n class=\"flex items-center justify-between w-full px-5 py-4 text-left text-sm font-medium text-surface-800 hover:bg-surface-50 transition-colors cursor-pointer\"\r\n [attr.aria-expanded]=\"isExpanded()\">\r\n <span>{{ title() }}</span>\r\n <svg\r\n class=\"w-4 h-4 text-surface-400 transition-transform duration-200\"\r\n [class.rotate-180]=\"isExpanded()\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </button>\r\n @if (isExpanded()) {\r\n <div class=\"px-5 py-4 text-sm text-surface-600\">\r\n <ng-content />\r\n </div>\r\n }\r\n</div>\r\n","import { Component, contentChildren } from '@angular/core';\r\nimport { TailwindAccordionItem } from './accordion-item.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n imports: [CommonModule],\r\n selector: 'tailwind-accordion',\r\n templateUrl: './accordion.component.html',\r\n styleUrl: './accordion.component.scss'\r\n})\r\nexport class TailwindAccordion extends TailwindComponent {\r\n readonly items = contentChildren(TailwindAccordionItem);\r\n}\r\n","<div\r\n [id]=\"id()\"\r\n [ngClass]=\"class()\"\r\n class=\"border border-surface-200 rounded-xl overflow-hidden divide-y divide-surface-200\">\r\n <ng-content />\r\n</div>\r\n","export class TailwindModalRef<R = any> {\r\n private _closeFn!: () => void;\r\n private _result: R | undefined;\r\n\r\n /** @internal called by the service after component creation */\r\n _init(closeFn: () => void): void {\r\n this._closeFn = closeFn;\r\n }\r\n\r\n /** Close the modal resolving with the given result */\r\n close(result?: R): void {\r\n this._result = result;\r\n this._closeFn();\r\n }\r\n\r\n /** @internal read by the service after the close animation */\r\n _getResult(): R | undefined {\r\n return this._result;\r\n }\r\n}\r\n","import {\r\n ApplicationRef,\r\n createComponent,\r\n EnvironmentInjector,\r\n inject,\r\n Injectable,\r\n Injector,\r\n Type\r\n} from '@angular/core';\r\nimport { TailwindModal } from '../../components/modal/modal.component';\r\nimport { TailwindModalConfig } from '../../components/modal/interfaces/modal-config.interface';\r\nimport { TailwindModalRef } from '../../ref/modal/modal.ref';\r\nimport { TAILWIND_MODAL_DATA } from '../../tokens/tokens';\r\n\r\nexport type { TailwindModalConfig };\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TailwindModalService {\r\n private readonly appRef = inject(ApplicationRef);\r\n private readonly environmentInjector = inject(EnvironmentInjector);\r\n\r\n /**\r\n * Open a modal programmatically.\r\n *\r\n * The `component` is instantiated and its slot elements are projected into\r\n * TailwindModal's ng-content slots:\r\n * - `<tailwind-modal-title>` → header title area\r\n * - `<tailwind-modal-content>` → body area\r\n * - `<tailwind-modal-footer>` → footer area\r\n *\r\n * The component can inject `TailwindModalRef<R>` to close with a typed result\r\n * and `TAILWIND_MODAL_DATA` to receive the `config.data` payload.\r\n *\r\n * @returns Promise that resolves with `R` on `close(result)` or `undefined` on dismiss.\r\n */\r\n open<R = any, D = any>(component: Type<unknown>, config: TailwindModalConfig<D> = {}): Promise<R | undefined> {\r\n return new Promise<R | undefined>(resolve => {\r\n const modalRef = new TailwindModalRef<R>();\r\n\r\n const injector = Injector.create({\r\n providers: [\r\n { provide: TailwindModalRef, useValue: modalRef },\r\n { provide: TAILWIND_MODAL_DATA, useValue: config.data ?? null }\r\n ],\r\n parent: this.environmentInjector\r\n });\r\n\r\n // ── Step 1: create and render the user component ─────────────────────\r\n const userComp = createComponent(component, {\r\n environmentInjector: this.environmentInjector,\r\n elementInjector: injector\r\n });\r\n this.appRef.attachView(userComp.hostView);\r\n userComp.changeDetectorRef.detectChanges();\r\n\r\n // ── Step 2: extract slot elements from the rendered host ──────────────\r\n const host = userComp.location.nativeElement as HTMLElement;\r\n const nodes = (sel: string) => Array.from(host.querySelectorAll(`:scope > ${sel}`));\r\n\r\n // ── Step 3: create TailwindModal projecting the slot nodes ────────────\r\n // projectableNodes[0] → <ng-content /> (title / catch-all)\r\n // projectableNodes[1] → <ng-content select=\"tailwind-modal-content\" />\r\n // projectableNodes[2] → <ng-content select=\"tailwind-modal-footer\" />\r\n const modalComp = createComponent(TailwindModal, {\r\n environmentInjector: this.environmentInjector,\r\n elementInjector: injector,\r\n projectableNodes: [\r\n nodes('tailwind-modal-title'),\r\n nodes('tailwind-modal-content'),\r\n nodes('tailwind-modal-footer')\r\n ]\r\n });\r\n\r\n modalComp.setInput('size', config.size ?? 'md');\r\n modalComp.setInput('showCloseButton', config.showCloseButton ?? true);\r\n modalComp.setInput('closeOnBackdrop', config.closeOnBackdrop ?? true);\r\n modalComp.setInput('closeOnEscape', config.closeOnEscape ?? true);\r\n\r\n this.appRef.attachView(modalComp.hostView);\r\n document.body.appendChild(modalComp.location.nativeElement);\r\n\r\n // ── Step 4: wire close ────────────────────────────────────────────────\r\n modalRef._init(() => modalComp.instance.close());\r\n\r\n const sub = modalComp.instance.onClose.subscribe(() => {\r\n sub.unsubscribe();\r\n resolve(modalRef._getResult());\r\n modalComp.location.nativeElement.remove();\r\n this.appRef.detachView(modalComp.hostView);\r\n this.appRef.detachView(userComp.hostView);\r\n modalComp.destroy();\r\n userComp.destroy();\r\n });\r\n\r\n modalComp.instance.open();\r\n });\r\n }\r\n}\r\n","import { Injectable, signal } from '@angular/core';\nimport { TailwindToastItem } from '../../components/toast/interfaces/toast-item.interface';\nimport { TailwindToastConfig } from '../../components/toast/interfaces/toast-config.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class TailwindToastService {\n private nextId = 0;\n readonly toasts = signal<TailwindToastItem[]>([]);\n\n show(config: TailwindToastConfig): number {\n const id = this.nextId++;\n const toast: TailwindToastItem = { id, severity: 'info', duration: 4000, dismissible: true, ...config };\n this.toasts.update(list => [...list, toast]);\n if (toast.duration && toast.duration > 0) {\n setTimeout(() => this.dismiss(id), toast.duration);\n }\n return id;\n }\n\n success(message: string, title?: string): number {\n return this.show({ message, title, severity: 'success' });\n }\n warning(message: string, title?: string): number {\n return this.show({ message, title, severity: 'warning' });\n }\n danger(message: string, title?: string): number {\n return this.show({ message, title, severity: 'danger' });\n }\n info(message: string, title?: string): number {\n return this.show({ message, title, severity: 'info' });\n }\n\n dismiss(id: number): void {\n this.toasts.update(list => list.filter(t => t.id !== id));\n }\n clear(): void {\n this.toasts.set([]);\n }\n}\n","import { Component, inject } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\nimport { TailwindToastConfig } from './interfaces/toast-config.interface';\r\nimport { TailwindToastItem } from './interfaces/toast-item.interface';\r\nimport { TailwindToastService } from '../../services';\r\nexport type { TailwindToastConfig, TailwindToastItem };\r\n\r\n@Component({\r\n selector: 'tailwind-toast',\r\n templateUrl: './toast.component.html',\r\n styleUrl: './toast.component.scss'\r\n})\r\nexport class TailwindToast extends TailwindComponent {\r\n readonly toastService = inject(TailwindToastService);\r\n}\r\n","<div class=\"fixed bottom-4 right-4 z-1080 flex flex-col gap-2 max-w-sm w-full pointer-events-none\">\r\n @for (toast of toastService.toasts(); track toast.id) {\r\n <div\r\n class=\"pointer-events-auto rounded-xl border shadow-lg p-4 flex gap-3 animate-in slide-in-from-right-full duration-300\"\r\n [class.bg-success-50]=\"toast.severity === 'success'\"\r\n [class.border-success-200]=\"toast.severity === 'success'\"\r\n [class.bg-warning-50]=\"toast.severity === 'warning'\"\r\n [class.border-warning-200]=\"toast.severity === 'warning'\"\r\n [class.bg-danger-50]=\"toast.severity === 'danger'\"\r\n [class.border-danger-200]=\"toast.severity === 'danger'\"\r\n [class.bg-info-50]=\"toast.severity === 'info'\"\r\n [class.border-info-200]=\"toast.severity === 'info'\"\r\n role=\"alert\">\r\n <div class=\"flex-1 min-w-0\">\r\n @if (toast.title) {\r\n <p class=\"text-sm font-semibold mb-0.5\">{{ toast.title }}</p>\r\n }\r\n <p class=\"text-sm\">{{ toast.message }}</p>\r\n </div>\r\n @if (toast.dismissible) {\r\n <button\r\n type=\"button\"\r\n (click)=\"toastService.dismiss(toast.id)\"\r\n class=\"shrink-0 p-1 rounded-lg opacity-60 hover:opacity-100 transition-opacity cursor-pointer\"\r\n aria-label=\"Dismiss\">\r\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { Component, computed, input, output } from '@angular/core';\r\nimport { TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-notification',\r\n templateUrl: './notification.component.html',\r\n styleUrl: './notification.component.scss'\r\n})\r\nexport class TailwindNotification extends TailwindComponent {\r\n readonly title = input<string>('');\r\n readonly severity = input<TailwindSeverity>('info');\r\n readonly dismissible = input<boolean>(true);\r\n readonly showActions = input<boolean>(false);\r\n\r\n readonly onDismiss = output<void>();\r\n\r\n readonly computedClasses = computed(() => {\r\n const variantMap: Record<TailwindSeverity, string> = {\r\n success: 'bg-success-50 border-success-200 text-success-800',\r\n warning: 'bg-warning-50 border-warning-200 text-warning-800',\r\n danger: 'bg-danger-50 border-danger-200 text-danger-800',\r\n info: 'bg-info-50 border-info-200 text-info-800'\r\n };\r\n return `flex items-start rounded-xl border p-4 ${variantMap[this.severity()]}`;\r\n });\r\n}\r\n","<div [class]=\"computedClasses()\" role=\"alert\">\n <div class=\"flex-1 min-w-0\">\n @if (title()) {\n <p class=\"text-sm font-semibold mb-0.5\">{{ title() }}</p>\n }\n <p class=\"text-sm\"><ng-content /></p>\n @if (showActions()) {\n <div class=\"pt-3\">\n <ng-content select=\"tailwind-notification-actions\" />\n </div>\n }\n </div>\n @if (dismissible()) {\n <button\n type=\"button\"\n (click)=\"onDismiss.emit()\"\n class=\"shrink-0 p-1 -m-1 rounded-lg opacity-60 hover:opacity-100 transition-opacity cursor-pointer\"\n aria-label=\"Dismiss\">\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n }\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-message',\r\n templateUrl: './message.component.html',\r\n styleUrl: './message.component.scss'\r\n})\r\nexport class TailwindMessage extends TailwindComponent {\r\n readonly severity = input<TailwindSeverity>('info');\r\n\r\n readonly computedClasses = computed(() => {\r\n const variantMap: Record<TailwindSeverity, string> = {\r\n success: 'bg-success-50 text-success-700 border-success-200',\r\n warning: 'bg-warning-50 text-warning-700 border-warning-200',\r\n danger: 'bg-danger-50 text-danger-700 border-danger-200',\r\n info: 'bg-info-50 text-info-700 border-info-200'\r\n };\r\n return `text-sm px-3 py-2 rounded-lg border ${variantMap[this.severity()]}`;\r\n });\r\n}\r\n","<div [class]=\"computedClasses()\" role=\"status\">\n <ng-content />\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-skeleton',\r\n templateUrl: './skeleton.component.html',\r\n styleUrl: './skeleton.component.scss'\r\n})\r\nexport class TailwindSkeleton extends TailwindComponent {\r\n readonly variant = input<'text' | 'circle' | 'rect' | 'rounded'>('text');\r\n readonly width = input<string>('100%');\r\n readonly height = input<string>('');\r\n\r\n readonly computedClasses = computed(() => {\r\n const base = 'tailwind-skeleton-pulse';\r\n const variantMap: Record<string, string> = {\r\n text: 'h-4 rounded',\r\n circle: 'rounded-full',\r\n rect: 'rounded-none',\r\n rounded: 'rounded-xl'\r\n };\r\n return `${base} ${variantMap[this.variant()]}`;\r\n });\r\n}\r\n","<div\n [style.width]=\"width()\"\n [style.height]=\"height() || (variant() === 'circle' ? width() : '1.5rem')\"\n [class]=\"computedClasses()\"\n aria-hidden=\"true\"></div>\n","import { Component, computed, input, output } from '@angular/core';\r\nimport { TailwindMenuItem } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-toolbar',\r\n templateUrl: './toolbar.component.html',\r\n styleUrl: './toolbar.component.scss'\r\n})\r\nexport class TailwindToolbar extends TailwindComponent {\r\n /** When true, uses rounded corners (`rounded-xl`). */\r\n readonly rounded = input<boolean>(true);\r\n /**\r\n * Orizzontale: `full` = `w-full`; `container` = larghezza responsiva (95% / 85% / 75%) centrata.\r\n * Verticale: ignorato per l’altezza — il rail è sempre `h-full w-full` nella colonna.\r\n */\r\n readonly width = input<'full' | 'container'>('full');\r\n /** Applies a stronger drop shadow. */\r\n readonly elevated = input<boolean>(false);\r\n /** `horizontal` for a top app bar; `vertical` for a side rail (logo → menu → end). */\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n\r\n /** Navigation / actions rendered between logo and end slots. */\r\n readonly menu = input<TailwindMenuItem[]>([]);\r\n\r\n /** Emitted when a non-disabled, non-divider menu entry is activated. */\r\n readonly onMenuSelect = output<TailwindMenuItem>();\r\n\r\n readonly menuContainerClasses = computed(() =>\r\n this.orientation() === 'horizontal'\r\n ? 'min-w-0 flex-1 flex flex-row flex-wrap items-center gap-1'\r\n : 'min-w-0 flex-1 flex flex-col gap-1 overflow-y-auto min-h-0'\r\n );\r\n\r\n readonly menuItemButtonClasses = computed(() =>\r\n this.orientation() === 'horizontal'\r\n ? 'shrink-0 rounded-md px-3 py-1.5 text-sm font-medium text-surface-700 hover:bg-surface-100 hover:text-surface-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer border-0 bg-transparent'\r\n : 'w-full text-left rounded-md px-2 py-2 text-sm font-medium text-surface-700 hover:bg-surface-100 hover:text-surface-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer border-0 bg-transparent'\r\n );\r\n\r\n readonly rootClasses = computed(() => {\r\n const horizontal = this.orientation() === 'horizontal';\r\n const sizeClasses = horizontal\r\n ? this.width() === 'full'\r\n ? 'w-full'\r\n : 'w-[95%] md:w-[85%] lg:w-[75%] mx-auto'\r\n : 'h-full w-full';\r\n\r\n const base = [\r\n 'bg-white border border-surface-200',\r\n 'flex',\r\n sizeClasses,\r\n this.rounded() ? 'rounded-xl' : 'rounded-none',\r\n this.elevated() ? 'shadow-lg' : 'shadow-sm'\r\n ];\r\n\r\n if (horizontal) {\r\n base.push('flex-row items-center gap-3 px-4 py-3');\r\n } else {\r\n base.push('flex-col items-stretch gap-3 px-3 py-4 min-h-0');\r\n }\r\n\r\n return base.join(' ');\r\n });\r\n\r\n selectMenuItem(item: TailwindMenuItem): void {\r\n if (item.divider || item.disabled) {\r\n return;\r\n }\r\n this.onMenuSelect.emit(item);\r\n }\r\n\r\n menuTrackKey(index: number, item: TailwindMenuItem): string {\r\n return item.value ?? item.label ?? String(index);\r\n }\r\n}\r\n","<div [class]=\"rootClasses()\">\r\n <div class=\"shrink-0\">\r\n <ng-content select=\"tailwind-toolbar-logo\" />\r\n </div>\r\n <nav [class]=\"menuContainerClasses()\" [attr.aria-label]=\"'Toolbar menu'\">\r\n @for (item of menu(); track menuTrackKey($index, item)) {\r\n @if (item.divider) {\r\n @if (orientation() === 'horizontal') {\r\n <span class=\"mx-0.5 h-5 w-px shrink-0 self-center bg-surface-200\" aria-hidden=\"true\"></span>\r\n } @else {\r\n <hr class=\"my-1 w-full border-0 border-t border-surface-100\" />\r\n }\r\n } @else {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"!!item.disabled\"\r\n [class]=\"menuItemButtonClasses()\"\r\n (click)=\"selectMenuItem(item)\">\r\n {{ item.label }}\r\n </button>\r\n }\r\n }\r\n </nav>\r\n <div\r\n class=\"flex flex-wrap items-center gap-2 shrink-0\"\r\n [class.justify-end]=\"orientation() === 'horizontal'\"\r\n [class.mt-auto]=\"orientation() === 'vertical'\">\r\n <ng-content select=\"tailwind-toolbar-end\" />\r\n </div>\r\n</div>\r\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-divider',\r\n templateUrl: './divider.component.html',\r\n styleUrl: './divider.component.scss'\r\n})\r\nexport class TailwindDivider extends TailwindComponent {\r\n /** Rule direction */\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n /** Adds horizontal margin to the rule (horizontal orientation only). */\r\n readonly inset = input<boolean>(false);\r\n /** Border style for the rule */\r\n readonly variant = input<'solid' | 'dashed'>('solid');\r\n /** Centered text between two lines (horizontal only; ignored when empty). */\r\n readonly label = input<string>('');\r\n\r\n readonly isLabeledHorizontal = computed(\r\n () => this.orientation() === 'horizontal' && !!this.label()?.trim()\r\n );\r\n\r\n readonly ruleClasses = computed(() => {\r\n const inset = this.inset() && this.orientation() === 'horizontal' ? 'mx-4' : '';\r\n const variant = this.variant() === 'dashed' ? 'border-dashed' : 'border-solid';\r\n\r\n if (this.orientation() === 'vertical') {\r\n return ['self-stretch shrink-0 w-px min-h-full border-0 border-l', variant, 'border-surface-200']\r\n .join(' ');\r\n }\r\n\r\n return ['w-full border-0 border-t', variant, 'border-surface-200', inset].filter(Boolean).join(' ');\r\n });\r\n\r\n /** Top rule for labeled horizontal layout */\r\n readonly ruleLineClass = computed(() => {\r\n const variant = this.variant() === 'dashed' ? 'border-dashed' : 'border-solid';\r\n return ['border-surface-200', variant].join(' ');\r\n });\r\n\r\n readonly labeledRowClass = computed(() =>\r\n this.inset() ? 'flex items-center gap-3 w-full mx-4' : 'flex items-center gap-3 w-full'\r\n );\r\n}\r\n","@if (isLabeledHorizontal()) {\r\n <div [class]=\"labeledRowClass()\" role=\"separator\" [attr.aria-label]=\"label()\">\r\n <div class=\"flex-1 border-0 border-t\" [class]=\"ruleLineClass()\"></div>\r\n <span class=\"text-xs font-medium text-surface-500 shrink-0\">{{ label() }}</span>\r\n <div class=\"flex-1 border-0 border-t\" [class]=\"ruleLineClass()\"></div>\r\n </div>\r\n} @else {\r\n <div [class]=\"ruleClasses()\" role=\"separator\"></div>\r\n}\r\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSize, TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TailwindMeterSegment } from './interfaces/meter-segment.interface';\r\n\r\n@Component({\r\n selector: 'tailwind-meter',\r\n templateUrl: './meter.component.html',\r\n styleUrl: './meter.component.scss'\r\n})\r\nexport class TailwindMeter extends TailwindComponent {\r\n /** Segments rendered as proportional blocks in the bar. */\r\n readonly segments = input<TailwindMeterSegment[]>([]);\r\n /**\r\n * Scale maximum. Each segment `value` is shown as `value / max` of the bar width.\r\n * Default 100 (percent-style values).\r\n */\r\n readonly max = input<number>(100);\r\n /** Show a simple legend under the bar */\r\n readonly showLabels = input<boolean>(true);\r\n /** Track height */\r\n readonly size = input<TailwindSize>('md');\r\n\r\n readonly trackHeightClass = computed(() => {\r\n const map: Record<TailwindSize, string> = {\r\n xs: 'h-1.5',\r\n sm: 'h-2',\r\n md: 'h-2.5',\r\n lg: 'h-3.5',\r\n xl: 'h-4'\r\n };\r\n return map[this.size()];\r\n });\r\n\r\n readonly totalValue = computed(() => this.segments().reduce((s, x) => s + Math.max(0, x.value), 0));\r\n\r\n readonly scaleMax = computed(() => {\r\n const m = this.max();\r\n if (m > 0) {\r\n return m;\r\n }\r\n const t = this.totalValue();\r\n return t > 0 ? t : 1;\r\n });\r\n\r\n readonly segmentLayouts = computed(() => {\r\n const cap = this.scaleMax();\r\n return this.segments().map(seg => {\r\n const pct = cap > 0 ? (Math.max(0, seg.value) / cap) * 100 : 0;\r\n const variant = seg.variant ?? 'primary';\r\n return { ...seg, widthPct: pct, barClass: this.variantToBarClass(variant) };\r\n });\r\n });\r\n\r\n readonly trackContainerClasses = computed(\r\n () => `flex w-full overflow-hidden rounded-full bg-surface-200 ${this.trackHeightClass()}`\r\n );\r\n\r\n legendSwatchClass(variant?: TailwindSeverity | 'primary'): string {\r\n return this.variantToBarClass(variant ?? 'primary');\r\n }\r\n\r\n private variantToBarClass(variant: TailwindSeverity | 'primary'): string {\r\n const map: Record<string, string> = {\r\n primary: 'bg-primary-600',\r\n success: 'bg-success-600',\r\n warning: 'bg-warning-500',\r\n danger: 'bg-danger-600',\r\n info: 'bg-info-600'\r\n };\r\n return map[variant] ?? map['primary'];\r\n }\r\n}\r\n","<div class=\"w-full space-y-2\">\r\n <div\r\n [class]=\"trackContainerClasses()\"\r\n role=\"meter\"\r\n [attr.aria-valuemin]=\"0\"\r\n [attr.aria-valuemax]=\"scaleMax()\"\r\n [attr.aria-valuenow]=\"totalValue()\"\r\n [attr.aria-label]=\"'Meter'\">\r\n @for (seg of segmentLayouts(); track $index) {\r\n @if (seg.widthPct > 0) {\r\n <div\r\n class=\"h-full min-w-0 transition-all duration-300 ease-out\"\r\n [class]=\"seg.barClass\"\r\n [style.width.%]=\"seg.widthPct\"\r\n [attr.title]=\"seg.label + ': ' + seg.value\"></div>\r\n }\r\n }\r\n </div>\r\n\r\n @if (showLabels()) {\r\n <div class=\"flex flex-wrap gap-x-4 gap-y-1 text-xs text-surface-600\">\r\n @for (seg of segments(); track $index) {\r\n <span class=\"inline-flex items-center gap-1.5\">\r\n <span class=\"inline-block size-2 rounded-sm shrink-0\" [class]=\"legendSwatchClass(seg.variant)\"></span>\r\n <span>{{ seg.label }}</span>\r\n <span class=\"text-surface-400\">({{ seg.value }})</span>\r\n </span>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { booleanAttribute, Component, computed, ElementRef, forwardRef, input, signal, viewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n/** Value model: single number or sorted pair when `range` is true */\r\nexport type TailwindSliderValue = number | [number, number];\r\n\r\n@Component({\r\n selector: 'tailwind-slider',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindSlider),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './slider.component.html',\r\n styleUrl: './slider.component.scss'\r\n})\r\nexport class TailwindSlider extends TailwindComponent implements ControlValueAccessor {\r\n /** Minimum bound */\r\n readonly min = input<number>(0);\r\n /** Maximum bound */\r\n readonly max = input<number>(100);\r\n /** Step increment */\r\n readonly step = input<number>(1);\r\n /** Two-thumb range mode */\r\n readonly range = input<boolean>(false);\r\n /** Layout */\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n /** Tick marks at each step */\r\n readonly showTicks = input<boolean>(false);\r\n /** Control size */\r\n readonly size = input<TailwindSize>('md');\r\n\r\n readonly trackRef = viewChild<ElementRef<HTMLElement>>('track');\r\n\r\n /** Single-thumb value */\r\n readonly singleValue = signal(0);\r\n /** Range: lower value */\r\n readonly rangeLow = signal(0);\r\n /** Range: upper value */\r\n readonly rangeHigh = signal(100);\r\n\r\n /** Disabled via template (combined with form `setDisabledState`) */\r\n readonly hostDisabled = input(false, { alias: 'disabled', transform: booleanAttribute });\r\n\r\n readonly isDisabled = signal(false);\r\n\r\n readonly isEffectivelyDisabled = computed(() => this.isDisabled() || this.hostDisabled());\r\n\r\n private onChange: (v: TailwindSliderValue) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n readonly activeThumb = signal<null | 0 | 1>(null);\r\n\r\n readonly thumbSizeClass = computed(() => {\r\n const map: Record<TailwindSize, string> = {\r\n xs: 'size-3',\r\n sm: 'size-3.5',\r\n md: 'size-4',\r\n lg: 'size-5',\r\n xl: 'size-6'\r\n };\r\n return map[this.size()];\r\n });\r\n\r\n readonly trackThickness = computed(() => {\r\n const map: Record<TailwindSize, string> = {\r\n xs: 'h-1',\r\n sm: 'h-1.5',\r\n md: 'h-2',\r\n lg: 'h-2.5',\r\n xl: 'h-3'\r\n };\r\n return map[this.size()];\r\n });\r\n\r\n readonly verticalTrackThickness = computed(() => {\r\n const map: Record<TailwindSize, string> = {\r\n xs: 'w-1',\r\n sm: 'w-1.5',\r\n md: 'w-2',\r\n lg: 'w-2.5',\r\n xl: 'w-3'\r\n };\r\n return map[this.size()];\r\n });\r\n\r\n readonly singlePct = computed(() => this.valueToPct(this.singleValue()));\r\n\r\n readonly lowPct = computed(() => this.valueToPct(this.rangeLow()));\r\n readonly highPct = computed(() => this.valueToPct(this.rangeHigh()));\r\n\r\n readonly fillStartPct = computed(() => (this.range() ? Math.min(this.lowPct(), this.highPct()) : 0));\r\n\r\n readonly fillWidthPct = computed(() =>\r\n this.range() ? Math.abs(this.highPct() - this.lowPct()) : this.singlePct()\r\n );\r\n\r\n readonly tickPositions = computed(() => {\r\n if (!this.showTicks()) {\r\n return [] as number[];\r\n }\r\n const lo = this.min();\r\n const hi = this.max();\r\n const st = this.step();\r\n if (st <= 0 || hi < lo) {\r\n return [];\r\n }\r\n const steps = Math.round((hi - lo) / st);\r\n const out: number[] = [];\r\n for (let i = 0; i <= steps; i++) {\r\n out.push(this.valueToPct(lo + i * st));\r\n }\r\n return out;\r\n });\r\n\r\n writeValue(value: TailwindSliderValue | null): void {\r\n const lo = this.min();\r\n const hi = this.max();\r\n if (this.range()) {\r\n const pair = Array.isArray(value) ? value : [lo, hi];\r\n const a = this.snap(Math.min(pair[0] ?? lo, pair[1] ?? hi));\r\n const b = this.snap(Math.max(pair[0] ?? lo, pair[1] ?? hi));\r\n this.rangeLow.set(Math.min(a, b));\r\n this.rangeHigh.set(Math.max(a, b));\r\n } else {\r\n const n = Array.isArray(value) ? value[0] : value;\r\n const num = typeof n === 'number' && !Number.isNaN(n) ? n : lo;\r\n this.singleValue.set(this.snap(num));\r\n }\r\n }\r\n\r\n registerOnChange(fn: (v: TailwindSliderValue) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n valueToPct(v: number): number {\r\n const lo = this.min();\r\n const hi = this.max();\r\n if (hi === lo) {\r\n return 0;\r\n }\r\n return ((this.snap(v) - lo) / (hi - lo)) * 100;\r\n }\r\n\r\n snap(raw: number): number {\r\n const lo = this.min();\r\n const hi = this.max();\r\n const st = this.step();\r\n if (st <= 0) {\r\n return Math.min(hi, Math.max(lo, raw));\r\n }\r\n const stepped = Math.round((raw - lo) / st) * st + lo;\r\n const rounded = Math.round(stepped * 1e6) / 1e6;\r\n return Math.min(hi, Math.max(lo, rounded));\r\n }\r\n\r\n pctToValue(pct: number): number {\r\n const lo = this.min();\r\n const hi = this.max();\r\n const v = lo + (pct / 100) * (hi - lo);\r\n return this.snap(v);\r\n }\r\n\r\n onThumbPointerDown(event: PointerEvent, thumbIndex: 0 | 1): void {\r\n event.stopPropagation();\r\n this.onTrackPointerDown(event, thumbIndex);\r\n }\r\n\r\n onTrackPointerDown(event: PointerEvent, thumbIndex: 0 | 1 | null): void {\r\n if (this.isEffectivelyDisabled()) {\r\n return;\r\n }\r\n event.preventDefault();\r\n const track = this.trackRef()?.nativeElement;\r\n if (!track) {\r\n return;\r\n }\r\n\r\n let thumb: 0 | 1 | null = thumbIndex;\r\n if (!this.range()) {\r\n thumb = null;\r\n } else if (thumb === null) {\r\n const v = this.readValueFromPointer(event, track);\r\n const low = this.rangeLow();\r\n const high = this.rangeHigh();\r\n const d0 = Math.abs(v - low);\r\n const d1 = Math.abs(v - high);\r\n thumb = d0 <= d1 ? 0 : 1;\r\n }\r\n\r\n this.activeThumb.set(thumb);\r\n this.applyPointer(event, track, thumb);\r\n\r\n if (typeof track.setPointerCapture === 'function') {\r\n track.setPointerCapture(event.pointerId);\r\n }\r\n\r\n const move = (ev: PointerEvent) => this.applyPointer(ev, track, thumb);\r\n const up = (ev: PointerEvent) => {\r\n document.removeEventListener('pointermove', move);\r\n document.removeEventListener('pointerup', up);\r\n document.removeEventListener('pointercancel', up);\r\n try {\r\n track.releasePointerCapture(ev.pointerId);\r\n } catch {\r\n /* ignore */\r\n }\r\n this.activeThumb.set(null);\r\n this.onTouched();\r\n };\r\n document.addEventListener('pointermove', move);\r\n document.addEventListener('pointerup', up);\r\n document.addEventListener('pointercancel', up);\r\n }\r\n\r\n private readValueFromPointer(event: PointerEvent, track: HTMLElement): number {\r\n const rect = track.getBoundingClientRect();\r\n const horizontal = this.orientation() === 'horizontal';\r\n let ratio: number;\r\n if (horizontal) {\r\n ratio = (event.clientX - rect.left) / rect.width;\r\n } else {\r\n ratio = 1 - (event.clientY - rect.top) / rect.height;\r\n }\r\n ratio = Math.min(1, Math.max(0, ratio));\r\n return this.pctToValue(ratio * 100);\r\n }\r\n\r\n private applyPointer(event: PointerEvent, track: HTMLElement, thumbIndex: 0 | 1 | null): void {\r\n const next = this.readValueFromPointer(event, track);\r\n if (this.range()) {\r\n const idx = thumbIndex ?? 0;\r\n if (idx === 0) {\r\n const hi = this.rangeHigh();\r\n this.rangeLow.set(this.snap(Math.min(next, hi)));\r\n } else {\r\n const lo = this.rangeLow();\r\n this.rangeHigh.set(this.snap(Math.max(next, lo)));\r\n }\r\n this.onChange([this.rangeLow(), this.rangeHigh()]);\r\n } else {\r\n this.singleValue.set(next);\r\n this.onChange(this.singleValue());\r\n }\r\n }\r\n\r\n onKeyDown(event: KeyboardEvent, thumbIndex: 0 | 1): void {\r\n if (this.isEffectivelyDisabled()) {\r\n return;\r\n }\r\n const keys = ['ArrowLeft', 'ArrowRight', 'ArrowDown', 'ArrowUp', 'Home', 'End'];\r\n if (!keys.includes(event.key)) {\r\n return;\r\n }\r\n event.preventDefault();\r\n const lo = this.min();\r\n const hi = this.max();\r\n const st = this.step();\r\n const horizontal = this.orientation() === 'horizontal';\r\n const decKey = horizontal ? 'ArrowLeft' : 'ArrowDown';\r\n const incKey = horizontal ? 'ArrowRight' : 'ArrowUp';\r\n\r\n const delta = (key: string) => {\r\n if (key === 'Home') {\r\n return lo - (thumbIndex === 0 ? this.rangeLow() : this.rangeHigh());\r\n }\r\n if (key === 'End') {\r\n return hi - (thumbIndex === 0 ? this.rangeLow() : this.rangeHigh());\r\n }\r\n if (key === decKey) {\r\n return -st;\r\n }\r\n if (key === incKey) {\r\n return st;\r\n }\r\n return 0;\r\n };\r\n\r\n const d = delta(event.key);\r\n if (d === 0) {\r\n return;\r\n }\r\n\r\n if (this.range()) {\r\n if (thumbIndex === 0) {\r\n const next = this.snap(this.rangeLow() + d);\r\n this.rangeLow.set(Math.min(next, this.rangeHigh()));\r\n } else {\r\n const next = this.snap(this.rangeHigh() + d);\r\n this.rangeHigh.set(Math.max(next, this.rangeLow()));\r\n }\r\n this.onChange([this.rangeLow(), this.rangeHigh()]);\r\n } else {\r\n this.singleValue.set(this.snap(this.singleValue() + d));\r\n this.onChange(this.singleValue());\r\n }\r\n }\r\n}\r\n","@if (orientation() === 'horizontal') {\r\n <div\r\n #track\r\n class=\"relative w-full touch-none select-none py-3\"\r\n [class.opacity-50]=\"isEffectivelyDisabled()\"\r\n [class.pointer-events-none]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onTrackPointerDown($event, range() ? null : null)\">\r\n <div class=\"relative h-6 w-full\">\r\n <!-- rail -->\r\n <div\r\n class=\"pointer-events-none absolute left-0 right-0 top-1/2 -translate-y-1/2 rounded-full bg-surface-200\"\r\n [class]=\"trackThickness()\"></div>\r\n\r\n @if (showTicks()) {\r\n @for (p of tickPositions(); track $index) {\r\n <div\r\n class=\"pointer-events-none absolute top-1/2 h-2 w-px -translate-x-1/2 -translate-y-1/2 bg-surface-300\"\r\n [style.left.%]=\"p\"></div>\r\n }\r\n }\r\n\r\n <!-- fill -->\r\n <div\r\n class=\"pointer-events-none absolute top-1/2 -translate-y-1/2 rounded-full bg-primary-500\"\r\n [class]=\"trackThickness()\"\r\n [style.left.%]=\"fillStartPct()\"\r\n [style.width.%]=\"fillWidthPct()\"></div>\r\n\r\n @if (range()) {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white bg-primary-600 shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.left.%]=\"lowPct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"rangeLow()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\r\n (keydown)=\"onKeyDown($event, 0)\"></button>\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white bg-primary-600 shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.left.%]=\"highPct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"rangeHigh()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 1)\"\r\n (keydown)=\"onKeyDown($event, 1)\"></button>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white bg-primary-600 shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.left.%]=\"singlePct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"singleValue()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\r\n (keydown)=\"onKeyDown($event, 0)\"></button>\r\n }\r\n </div>\r\n </div>\r\n} @else {\r\n <div\r\n #track\r\n class=\"relative mx-auto h-52 w-10 touch-none select-none\"\r\n [class.opacity-50]=\"isEffectivelyDisabled()\"\r\n [class.pointer-events-none]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onTrackPointerDown($event, range() ? null : null)\">\r\n <div class=\"relative h-full w-full\">\r\n <div\r\n class=\"pointer-events-none absolute bottom-0 left-1/2 top-0 -translate-x-1/2 rounded-full bg-surface-200\"\r\n [class]=\"verticalTrackThickness()\"></div>\r\n\r\n @if (showTicks()) {\r\n @for (p of tickPositions(); track $index) {\r\n <div\r\n class=\"pointer-events-none absolute left-1/2 w-2 h-px -translate-x-1/2 translate-y-1/2 bg-surface-300\"\r\n [style.bottom.%]=\"p\"></div>\r\n }\r\n }\r\n\r\n <div\r\n class=\"pointer-events-none absolute bottom-0 left-1/2 -translate-x-1/2 rounded-full bg-primary-500\"\r\n [class]=\"verticalTrackThickness()\"\r\n [style.bottom.%]=\"fillStartPct()\"\r\n [style.height.%]=\"fillWidthPct()\"></div>\r\n\r\n @if (range()) {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white bg-primary-600 shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.bottom.%]=\"lowPct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"rangeLow()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\r\n (keydown)=\"onKeyDown($event, 0)\"></button>\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white bg-primary-600 shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.bottom.%]=\"highPct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"rangeHigh()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 1)\"\r\n (keydown)=\"onKeyDown($event, 1)\"></button>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white bg-primary-600 shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.bottom.%]=\"singlePct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"singleValue()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\r\n (keydown)=\"onKeyDown($event, 0)\"></button>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","// Batch 1 — Foundation\nexport * from './button/button.component';\nexport * from './icon/icon.component';\nexport * from './input/input.component';\nexport * from './checkbox/checkbox.component';\nexport * from './radio/radio-group.component';\nexport * from './select/select.component';\nexport * from './toggle/toggle.component';\nexport * from './badge/badge.component';\nexport * from './card/card.component';\nexport * from './alert/alert.component';\nexport * from './spinner/spinner.component';\n\n// Batch 2 — Intermediate\nexport * from './modal/modal.component';\nexport * from './modal/modal-title.component';\nexport * from './modal/modal-content.component';\nexport * from './modal/modal-footer.component';\nexport * from './tabs/tab.component';\nexport * from './tabs/tab-group.component';\nexport * from './tooltip/tooltip.component';\nexport * from '../directives/tooltip/tooltip.directive';\nexport * from './progress-bar/progress-bar.component';\nexport * from './menu/menu.component';\nexport * from './drawer/drawer.component';\nexport * from './breadcrumb/breadcrumb.component';\nexport * from './pagination/pagination.component';\nexport * from './tag/tag.component';\n\n// Batch 3 — Advanced\nexport * from './table/table.component';\nexport * from './date-picker/date-picker.component';\nexport * from './time-picker/time-picker.component';\nexport * from './datetime-picker/datetime-picker.component';\nexport * from './stepper/step.component';\nexport * from './stepper/stepper.component';\nexport * from './accordion/accordion-item.component';\nexport * from './accordion/accordion.component';\nexport * from './toast/toast.component';\nexport * from './notification/notification.component';\nexport * from './message/message.component';\nexport * from './skeleton/skeleton.component';\nexport * from './toolbar/toolbar.component';\nexport * from './divider/divider.component';\nexport * from './meter/interfaces/meter-segment.interface';\nexport * from './meter/meter.component';\nexport * from './slider/slider.component';\n","/*\r\n * Public API Surface of angular-tailwind-components\r\n */\r\n\r\n// Models & Types\r\nexport * from './lib/models';\r\n\r\n// Directives\r\nexport * from './lib/directives';\r\n\r\n// Components\r\nexport * from './lib/components';\r\n\r\n// Services\r\nexport * from './lib/services';\r\n\r\n// Tokens\r\nexport * from './lib/tokens';\r\n\r\n// Refs\r\nexport * from './lib/ref';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["I18N"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-tailwind-components.mjs","sources":["../../../projects/angular-tailwind-components/src/lib/models/types.ts","../../../projects/angular-tailwind-components/src/lib/models/icons.ts","../../../projects/angular-tailwind-components/src/lib/components/tailwind.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tooltip/tooltip.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tooltip/tooltip.component.html","../../../projects/angular-tailwind-components/src/lib/directives/tooltip/tooltip.directive.ts","../../../projects/angular-tailwind-components/src/lib/components/button/button.component.ts","../../../projects/angular-tailwind-components/src/lib/components/button/button.component.html","../../../projects/angular-tailwind-components/src/lib/tokens/tokens.ts","../../../projects/angular-tailwind-components/src/lib/components/icon/icon.component.ts","../../../projects/angular-tailwind-components/src/lib/components/icon/icon.component.html","../../../projects/angular-tailwind-components/src/lib/components/input/input.component.ts","../../../projects/angular-tailwind-components/src/lib/components/input/input.component.html","../../../projects/angular-tailwind-components/src/lib/components/checkbox/checkbox.component.ts","../../../projects/angular-tailwind-components/src/lib/components/checkbox/checkbox.component.html","../../../projects/angular-tailwind-components/src/lib/components/radio/radio-group.component.ts","../../../projects/angular-tailwind-components/src/lib/components/radio/radio-group.component.html","../../../projects/angular-tailwind-components/src/lib/components/select/select.component.ts","../../../projects/angular-tailwind-components/src/lib/components/select/select.component.html","../../../projects/angular-tailwind-components/src/lib/components/toggle/toggle.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toggle/toggle.component.html","../../../projects/angular-tailwind-components/src/lib/components/badge/badge.component.ts","../../../projects/angular-tailwind-components/src/lib/components/badge/badge.component.html","../../../projects/angular-tailwind-components/src/lib/components/card/card-header.component.ts","../../../projects/angular-tailwind-components/src/lib/components/card/card-footer.component.ts","../../../projects/angular-tailwind-components/src/lib/components/card/card-image.component.ts","../../../projects/angular-tailwind-components/src/lib/components/card/card.component.ts","../../../projects/angular-tailwind-components/src/lib/components/card/card.component.html","../../../projects/angular-tailwind-components/src/lib/components/alert/alert.component.ts","../../../projects/angular-tailwind-components/src/lib/components/alert/alert.component.html","../../../projects/angular-tailwind-components/src/lib/components/spinner/spinner.component.ts","../../../projects/angular-tailwind-components/src/lib/components/spinner/spinner.component.html","../../../projects/angular-tailwind-components/src/lib/components/modal/modal.component.ts","../../../projects/angular-tailwind-components/src/lib/components/modal/modal.component.html","../../../projects/angular-tailwind-components/src/lib/components/modal/modal-title.component.ts","../../../projects/angular-tailwind-components/src/lib/components/modal/modal-content.component.ts","../../../projects/angular-tailwind-components/src/lib/components/modal/modal-footer.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab.component.html","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab-group.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tabs/tab-group.component.html","../../../projects/angular-tailwind-components/src/lib/components/progress-bar/progress-bar.component.ts","../../../projects/angular-tailwind-components/src/lib/components/progress-bar/progress-bar.component.html","../../../projects/angular-tailwind-components/src/lib/components/menu/menu.component.ts","../../../projects/angular-tailwind-components/src/lib/components/menu/menu.component.html","../../../projects/angular-tailwind-components/src/lib/components/drawer/drawer.component.ts","../../../projects/angular-tailwind-components/src/lib/components/drawer/drawer.component.html","../../../projects/angular-tailwind-components/src/lib/components/breadcrumb/breadcrumb.component.ts","../../../projects/angular-tailwind-components/src/lib/components/breadcrumb/breadcrumb.component.html","../../../projects/angular-tailwind-components/src/lib/components/pagination/pagination.component.ts","../../../projects/angular-tailwind-components/src/lib/components/pagination/pagination.component.html","../../../projects/angular-tailwind-components/src/lib/components/tag/tag.component.ts","../../../projects/angular-tailwind-components/src/lib/components/tag/tag.component.html","../../../projects/angular-tailwind-components/src/lib/components/table/table.component.ts","../../../projects/angular-tailwind-components/src/lib/components/table/table.component.html","../../../projects/angular-tailwind-components/src/lib/components/date-picker/date-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/date-picker/date-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/time-picker/time-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/time-picker/time-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/datetime-picker/datetime-picker.component.ts","../../../projects/angular-tailwind-components/src/lib/components/datetime-picker/datetime-picker.component.html","../../../projects/angular-tailwind-components/src/lib/components/stepper/step.component.ts","../../../projects/angular-tailwind-components/src/lib/components/stepper/step.component.html","../../../projects/angular-tailwind-components/src/lib/components/stepper/stepper.component.ts","../../../projects/angular-tailwind-components/src/lib/components/stepper/stepper.component.html","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion-item.component.ts","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion-item.component.html","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion.component.ts","../../../projects/angular-tailwind-components/src/lib/components/accordion/accordion.component.html","../../../projects/angular-tailwind-components/src/lib/ref/modal/modal.ref.ts","../../../projects/angular-tailwind-components/src/lib/services/modal/modal.service.ts","../../../projects/angular-tailwind-components/src/lib/services/toast/toast.service.ts","../../../projects/angular-tailwind-components/src/lib/components/toast/toast.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toast/toast.component.html","../../../projects/angular-tailwind-components/src/lib/components/notification/notification.component.ts","../../../projects/angular-tailwind-components/src/lib/components/notification/notification.component.html","../../../projects/angular-tailwind-components/src/lib/components/message/message.component.ts","../../../projects/angular-tailwind-components/src/lib/components/message/message.component.html","../../../projects/angular-tailwind-components/src/lib/components/skeleton/skeleton.component.ts","../../../projects/angular-tailwind-components/src/lib/components/skeleton/skeleton.component.html","../../../projects/angular-tailwind-components/src/lib/components/toolbar/toolbar.component.ts","../../../projects/angular-tailwind-components/src/lib/components/toolbar/toolbar.component.html","../../../projects/angular-tailwind-components/src/lib/components/divider/divider.component.ts","../../../projects/angular-tailwind-components/src/lib/components/divider/divider.component.html","../../../projects/angular-tailwind-components/src/lib/components/meter/meter.component.ts","../../../projects/angular-tailwind-components/src/lib/components/meter/meter.component.html","../../../projects/angular-tailwind-components/src/lib/components/slider/slider.component.ts","../../../projects/angular-tailwind-components/src/lib/components/slider/slider.component.html","../../../projects/angular-tailwind-components/src/lib/components/index.ts","../../../projects/angular-tailwind-components/src/public-api.ts","../../../projects/angular-tailwind-components/src/angular-tailwind-components.ts"],"sourcesContent":["/** Common types used across all components */\n\n/** Size variants for components */\nexport type TailwindSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/** Color variants for buttons and interactive elements */\nexport type TailwindColor = 'primary' | 'secondary' | 'danger' | 'success' | 'warning' | 'info';\n\n/** Button kinds */\nexport type TailwindButtonKind = 'solid' | 'outlined' | 'ghost' | 'text';\n\n/** Alert/feedback color variants */\nexport type TailwindSeverity = 'success' | 'warning' | 'danger' | 'info';\n\n/** Position variants for overlays */\nexport type TailwindPosition = 'top' | 'bottom' | 'left' | 'right';\n\n/** Shape variants */\nexport type TailwindShape = 'rounded' | 'pill' | 'square';\n\n/** Icon dimensions: `normal` = 24×24, `small` = 16×16 */\nexport type TailwindIconSize = 'normal' | 'small';\n\n/** Option interface for select/radio/checkbox groups */\nexport interface TailwindOption<T = unknown> {\n value: T;\n label: string;\n disabled?: boolean;\n}\n\nexport interface TailwindOptionGroup<T = unknown> extends TailwindOption<T> {\n description?: string;\n}\n\nexport interface TailwindMenuItem {\n label?: string;\n icon?: string;\n disabled?: boolean;\n divider?: boolean;\n value?: string;\n}\n","/** Heroicons icon name (kebab-case). SVG assets live in `public/icons/` (outline 24×24). */\nexport const TAILWIND_HERO_ICON_NAMES = [\n 'academic-cap',\n 'adjustments-horizontal',\n 'adjustments-vertical',\n 'archive-box',\n 'archive-box-arrow-down',\n 'archive-box-x-mark',\n 'arrow-down',\n 'arrow-down-circle',\n 'arrow-down-left',\n 'arrow-down-on-square',\n 'arrow-down-on-square-stack',\n 'arrow-down-right',\n 'arrow-down-tray',\n 'arrow-left',\n 'arrow-left-circle',\n 'arrow-left-end-on-rectangle',\n 'arrow-left-on-rectangle',\n 'arrow-left-start-on-rectangle',\n 'arrow-long-down',\n 'arrow-long-left',\n 'arrow-long-right',\n 'arrow-long-up',\n 'arrow-path',\n 'arrow-path-rounded-square',\n 'arrow-right',\n 'arrow-right-circle',\n 'arrow-right-end-on-rectangle',\n 'arrow-right-on-rectangle',\n 'arrow-right-start-on-rectangle',\n 'arrow-small-down',\n 'arrow-small-left',\n 'arrow-small-right',\n 'arrow-small-up',\n 'arrows-pointing-in',\n 'arrows-pointing-out',\n 'arrows-right-left',\n 'arrows-up-down',\n 'arrow-top-right-on-square',\n 'arrow-trending-down',\n 'arrow-trending-up',\n 'arrow-turn-down-left',\n 'arrow-turn-down-right',\n 'arrow-turn-left-down',\n 'arrow-turn-left-up',\n 'arrow-turn-right-down',\n 'arrow-turn-right-up',\n 'arrow-turn-up-left',\n 'arrow-turn-up-right',\n 'arrow-up',\n 'arrow-up-circle',\n 'arrow-up-left',\n 'arrow-up-on-square',\n 'arrow-up-on-square-stack',\n 'arrow-up-right',\n 'arrow-up-tray',\n 'arrow-uturn-down',\n 'arrow-uturn-left',\n 'arrow-uturn-right',\n 'arrow-uturn-up',\n 'at-symbol',\n 'backspace',\n 'backward',\n 'banknotes',\n 'bars-2',\n 'bars-3',\n 'bars-3-bottom-left',\n 'bars-3-bottom-right',\n 'bars-3-center-left',\n 'bars-4',\n 'bars-arrow-down',\n 'bars-arrow-up',\n 'battery-0',\n 'battery-100',\n 'battery-50',\n 'beaker',\n 'bell',\n 'bell-alert',\n 'bell-slash',\n 'bell-snooze',\n 'bold',\n 'bolt',\n 'bolt-slash',\n 'bookmark',\n 'bookmark-slash',\n 'bookmark-square',\n 'book-open',\n 'briefcase',\n 'bug-ant',\n 'building-library',\n 'building-office',\n 'building-office-2',\n 'building-storefront',\n 'cake',\n 'calculator',\n 'calendar',\n 'calendar-date-range',\n 'calendar-days',\n 'camera',\n 'chart-bar',\n 'chart-bar-square',\n 'chart-pie',\n 'chat-bubble-bottom-center',\n 'chat-bubble-bottom-center-text',\n 'chat-bubble-left',\n 'chat-bubble-left-ellipsis',\n 'chat-bubble-left-right',\n 'chat-bubble-oval-left',\n 'chat-bubble-oval-left-ellipsis',\n 'check',\n 'check-badge',\n 'check-circle',\n 'chevron-double-down',\n 'chevron-double-left',\n 'chevron-double-right',\n 'chevron-double-up',\n 'chevron-down',\n 'chevron-left',\n 'chevron-right',\n 'chevron-up',\n 'chevron-up-down',\n 'circle-stack',\n 'clipboard',\n 'clipboard-document',\n 'clipboard-document-check',\n 'clipboard-document-list',\n 'clock',\n 'cloud',\n 'cloud-arrow-down',\n 'cloud-arrow-up',\n 'code-bracket',\n 'code-bracket-square',\n 'cog',\n 'cog-6-tooth',\n 'cog-8-tooth',\n 'command-line',\n 'computer-desktop',\n 'cpu-chip',\n 'credit-card',\n 'cube',\n 'cube-transparent',\n 'currency-bangladeshi',\n 'currency-dollar',\n 'currency-euro',\n 'currency-pound',\n 'currency-rupee',\n 'currency-yen',\n 'cursor-arrow-rays',\n 'cursor-arrow-ripple',\n 'device-phone-mobile',\n 'device-tablet',\n 'divide',\n 'document',\n 'document-arrow-down',\n 'document-arrow-up',\n 'document-chart-bar',\n 'document-check',\n 'document-currency-bangladeshi',\n 'document-currency-dollar',\n 'document-currency-euro',\n 'document-currency-pound',\n 'document-currency-rupee',\n 'document-currency-yen',\n 'document-duplicate',\n 'document-magnifying-glass',\n 'document-minus',\n 'document-plus',\n 'document-text',\n 'ellipsis-horizontal',\n 'ellipsis-horizontal-circle',\n 'ellipsis-vertical',\n 'envelope',\n 'envelope-open',\n 'equals',\n 'exclamation-circle',\n 'exclamation-triangle',\n 'eye',\n 'eye-dropper',\n 'eye-slash',\n 'face-frown',\n 'face-smile',\n 'film',\n 'finger-print',\n 'fire',\n 'flag',\n 'folder',\n 'folder-arrow-down',\n 'folder-minus',\n 'folder-open',\n 'folder-plus',\n 'forward',\n 'funnel',\n 'gif',\n 'gift',\n 'gift-top',\n 'globe-alt',\n 'globe-americas',\n 'globe-asia-australia',\n 'globe-europe-africa',\n 'h1',\n 'h2',\n 'h3',\n 'hand-raised',\n 'hand-thumb-down',\n 'hand-thumb-up',\n 'hashtag',\n 'heart',\n 'home',\n 'home-modern',\n 'identification',\n 'inbox',\n 'inbox-arrow-down',\n 'inbox-stack',\n 'information-circle',\n 'italic',\n 'key',\n 'language',\n 'lifebuoy',\n 'light-bulb',\n 'link',\n 'link-slash',\n 'list-bullet',\n 'lock-closed',\n 'lock-open',\n 'magnifying-glass',\n 'magnifying-glass-circle',\n 'magnifying-glass-minus',\n 'magnifying-glass-plus',\n 'map',\n 'map-pin',\n 'megaphone',\n 'microphone',\n 'minus',\n 'minus-circle',\n 'minus-small',\n 'moon',\n 'musical-note',\n 'newspaper',\n 'no-symbol',\n 'numbered-list',\n 'paint-brush',\n 'paper-airplane',\n 'paper-clip',\n 'pause',\n 'pause-circle',\n 'pencil',\n 'pencil-square',\n 'percent-badge',\n 'phone',\n 'phone-arrow-down-left',\n 'phone-arrow-up-right',\n 'phone-x-mark',\n 'photo',\n 'play',\n 'play-circle',\n 'play-pause',\n 'plus',\n 'plus-circle',\n 'plus-small',\n 'power',\n 'presentation-chart-bar',\n 'presentation-chart-line',\n 'printer',\n 'puzzle-piece',\n 'qr-code',\n 'question-mark-circle',\n 'queue-list',\n 'radio',\n 'receipt-percent',\n 'receipt-refund',\n 'rectangle-group',\n 'rectangle-stack',\n 'rocket-launch',\n 'rss',\n 'scale',\n 'scissors',\n 'server',\n 'server-stack',\n 'share',\n 'shield-check',\n 'shield-exclamation',\n 'shopping-bag',\n 'shopping-cart',\n 'signal',\n 'signal-slash',\n 'slash',\n 'sparkles',\n 'speaker-wave',\n 'speaker-x-mark',\n 'square-2-stack',\n 'square-3-stack-3d',\n 'squares-2x2',\n 'squares-plus',\n 'star',\n 'stop',\n 'stop-circle',\n 'strikethrough',\n 'sun',\n 'swatch',\n 'table-cells',\n 'tag',\n 'ticket',\n 'trash',\n 'trophy',\n 'truck',\n 'tv',\n 'underline',\n 'user',\n 'user-circle',\n 'user-group',\n 'user-minus',\n 'user-plus',\n 'users',\n 'variable',\n 'video-camera',\n 'video-camera-slash',\n 'view-columns',\n 'viewfinder-circle',\n 'wallet',\n 'wifi',\n 'window',\n 'wrench',\n 'wrench-screwdriver',\n 'x-circle',\n 'x-mark',\n] as const;\n\nexport type TailwindHeroIcon = (typeof TAILWIND_HERO_ICON_NAMES)[number];\n","import { Directive, input } from '@angular/core';\r\n\r\n@Directive({\r\n host: {\r\n '[attr.id]': 'id() || null',\r\n '[class]': 'class() || null'\r\n }\r\n})\r\nexport abstract class TailwindComponent {\r\n /** Optional ID for the component */\r\n readonly id = input<string>();\r\n\r\n /** Custom CSS classes to append */\r\n readonly class = input<string>(undefined, { alias: 'class' });\r\n}\r\n","import { Component, computed, inject, input, signal, OnDestroy, AfterViewInit, NgZone, ElementRef, viewChild } from '@angular/core';\r\nimport { TailwindPosition } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'tailwind-tooltip',\r\n templateUrl: './tooltip.component.html',\r\n styleUrl: './tooltip.component.scss'\r\n})\r\nexport class TailwindTooltip extends TailwindComponent implements AfterViewInit, OnDestroy {\r\n /** Tooltip text */\r\n readonly text = input.required<string>();\r\n /** Position relative to trigger */\r\n readonly position = input<TailwindPosition>('top');\r\n\r\n readonly isVisible = signal(false);\r\n readonly topPos = signal<number>(0);\r\n readonly leftPos = signal<number>(0);\r\n\r\n private targetElement: HTMLElement | null = null;\r\n\r\n private document = inject(DOCUMENT);\r\n private ngZone = inject(NgZone);\r\n private el = inject(ElementRef);\r\n \r\n readonly tooltipEl = viewChild.required<ElementRef<HTMLDivElement>>('tooltipEl');\r\n\r\n private scrollListener = () => this.updatePosition();\r\n\r\n readonly tooltipClasses = computed(() => {\r\n const base = [\r\n 'fixed z-[1070] px-3 py-1.5',\r\n 'text-xs font-medium text-white bg-surface-900 rounded-lg',\r\n 'shadow-lg whitespace-nowrap pointer-events-none',\r\n 'transition-opacity duration-150',\r\n this.isVisible() ? 'opacity-100' : 'opacity-0'\r\n ];\r\n return base.join(' ');\r\n });\r\n\r\n readonly arrowClasses = computed(() => {\r\n const base = 'absolute w-2 h-2 bg-surface-900 rotate-45';\r\n\r\n const posMap: Record<TailwindPosition, string> = {\r\n top: 'top-full left-1/2 -translate-x-1/2 -mt-1',\r\n bottom: 'bottom-full left-1/2 -translate-x-1/2 -mb-1',\r\n left: 'left-full top-1/2 -translate-y-1/2 -ml-1',\r\n right: 'right-full top-1/2 -translate-y-1/2 -mr-1'\r\n };\r\n\r\n return `${base} ${posMap[this.position()]}`;\r\n });\r\n\r\n ngAfterViewInit() {\r\n this.updatePosition();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.hide();\r\n }\r\n\r\n setTarget(el: HTMLElement) {\r\n this.targetElement = el;\r\n this.updatePosition();\r\n }\r\n\r\n private getFixedOrigin(): { top: number; left: number } {\r\n const dummy = this.document.createElement('div');\r\n dummy.style.position = 'fixed';\r\n dummy.style.top = '0';\r\n dummy.style.left = '0';\r\n this.el.nativeElement.appendChild(dummy);\r\n const rect = dummy.getBoundingClientRect();\r\n this.el.nativeElement.removeChild(dummy);\r\n return { top: rect.top, left: rect.left };\r\n }\r\n\r\n updatePosition(): void {\r\n if (!this.targetElement) return;\r\n \r\n const origin = this.getFixedOrigin();\r\n const targetRect = this.targetElement.getBoundingClientRect();\r\n const tooltipRect = this.tooltipEl().nativeElement.getBoundingClientRect();\r\n\r\n let top = 0;\r\n let left = 0;\r\n\r\n switch (this.position()) {\r\n case 'top':\r\n top = targetRect.top - tooltipRect.height - 8;\r\n left = targetRect.left + (targetRect.width - tooltipRect.width) / 2;\r\n break;\r\n case 'bottom':\r\n top = targetRect.bottom + 8;\r\n left = targetRect.left + (targetRect.width - tooltipRect.width) / 2;\r\n break;\r\n case 'left':\r\n top = targetRect.top + (targetRect.height - tooltipRect.height) / 2;\r\n left = targetRect.left - tooltipRect.width - 8;\r\n break;\r\n case 'right':\r\n top = targetRect.top + (targetRect.height - tooltipRect.height) / 2;\r\n left = targetRect.right + 8;\r\n break;\r\n }\r\n\r\n this.ngZone.run(() => {\r\n this.topPos.set(top - origin.top);\r\n this.leftPos.set(left - origin.left);\r\n });\r\n }\r\n\r\n show(): void {\r\n this.updatePosition();\r\n this.ngZone.run(() => {\r\n this.isVisible.set(true);\r\n });\r\n this.ngZone.runOutsideAngular(() => {\r\n window.addEventListener('scroll', this.scrollListener, true);\r\n window.addEventListener('resize', this.scrollListener, true);\r\n });\r\n }\r\n\r\n hide(): void {\r\n this.ngZone.run(() => {\r\n this.isVisible.set(false);\r\n });\r\n window.removeEventListener('scroll', this.scrollListener, true);\r\n window.removeEventListener('resize', this.scrollListener, true);\r\n }\r\n}\r\n","<div #tooltipEl role=\"tooltip\" [class]=\"tooltipClasses()\" \n [style.top.px]=\"topPos()\" \n [style.left.px]=\"leftPos()\">\n {{ text() }}\n <!-- Arrow -->\n <div [class]=\"arrowClasses()\"></div>\n</div>\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n OnDestroy,\n ViewContainerRef,\n ComponentRef,\n inject\n} from '@angular/core';\nimport { TailwindTooltip } from '../../components/tooltip/tooltip.component';\nimport { TailwindPosition } from '../../models';\n\n@Directive({\n selector: '[tooltip]'\n})\nexport class TailwindTooltipDirective implements OnDestroy {\n @Input('tooltip') text!: string;\n @Input() tooltipPosition: TailwindPosition = 'top';\n\n private showTimeout: ReturnType<typeof setTimeout> | null = null;\n private hideTimeout: ReturnType<typeof setTimeout> | null = null;\n private componentRef: ComponentRef<TailwindTooltip> | null = null;\n\n private viewContainerRef = inject(ViewContainerRef);\n private el = inject(ElementRef);\n\n @HostListener('mouseenter')\n @HostListener('focusin')\n show() {\n if (this.hideTimeout) {\n clearTimeout(this.hideTimeout);\n this.hideTimeout = null;\n }\n\n if (this.componentRef) {\n return;\n }\n\n this.showTimeout = setTimeout(() => {\n this.createComponent();\n }, 200);\n }\n\n @HostListener('mouseleave')\n @HostListener('focusout')\n hide() {\n if (this.showTimeout) {\n clearTimeout(this.showTimeout);\n this.showTimeout = null;\n }\n\n if (!this.componentRef) {\n return;\n }\n\n this.componentRef.instance.hide();\n\n this.hideTimeout = setTimeout(() => {\n this.destroyComponent();\n }, 150);\n }\n\n private createComponent() {\n this.componentRef = this.viewContainerRef.createComponent(TailwindTooltip);\n this.componentRef.setInput('text', this.text);\n this.componentRef.setInput('position', this.tooltipPosition);\n this.componentRef.instance.setTarget(this.el.nativeElement);\n\n setTimeout(() => {\n if (this.componentRef) {\n this.componentRef.instance.show();\n }\n });\n }\n\n private destroyComponent() {\n if (this.componentRef) {\n this.componentRef.destroy();\n this.componentRef = null;\n }\n }\n\n ngOnDestroy() {\n if (this.showTimeout) clearTimeout(this.showTimeout);\n if (this.hideTimeout) clearTimeout(this.hideTimeout);\n this.destroyComponent();\n }\n}\n","import { Component, computed, input, output } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\nimport { TailwindSize, TailwindColor, TailwindButtonKind } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-button',\r\n imports: [NgClass],\r\n templateUrl: './button.component.html',\r\n styleUrl: './button.component.scss'\r\n})\r\nexport class TailwindButton extends TailwindComponent {\r\n /** Visual color */\r\n readonly color = input<TailwindColor>('primary');\r\n /** Visual kind: `ghost` = transparent with hover tint; `text` = text color only, no hover background */\r\n readonly kind = input<TailwindButtonKind>('solid');\r\n /** Size of the button */\r\n readonly size = input<TailwindSize>('md');\r\n /** Whether the button is disabled */\r\n readonly disabled = input<boolean>(false);\r\n /** HTML button type attribute */\r\n readonly type = input<'button' | 'submit' | 'reset'>('button');\r\n\r\n /** Emitted when the button is clicked (not disabled/loading) */\r\n readonly onClick = output<MouseEvent>();\r\n\r\n /** Computed Tailwind classes based on color, kind, size, and state */\r\n readonly computedClasses = computed(() => {\r\n const base = [\r\n 'inline-flex items-center justify-center gap-2',\r\n 'font-medium',\r\n 'transition-all duration-150 ease-in-out',\r\n 'focus-visible:outline-2 focus-visible:outline-offset-2',\r\n 'disabled:cursor-not-allowed disabled:opacity-50',\r\n 'cursor-pointer',\r\n 'border'\r\n ];\r\n\r\n const solidMap: Record<TailwindColor, string> = {\r\n primary:\r\n 'bg-primary-600 text-white hover:bg-primary-700 active:bg-primary-800 border-transparent focus-visible:outline-primary-600 shadow-sm',\r\n secondary:\r\n 'bg-surface-100 text-surface-800 hover:bg-surface-200 active:bg-surface-300 border-surface-300 focus-visible:outline-surface-500 shadow-sm',\r\n danger:\r\n 'bg-danger-600 text-white hover:bg-danger-700 active:bg-danger-800 border-transparent focus-visible:outline-danger-600 shadow-sm',\r\n success:\r\n 'bg-success-600 text-white hover:bg-success-700 active:bg-success-800 border-transparent focus-visible:outline-success-600 shadow-sm',\r\n warning:\r\n 'bg-warning-500 text-surface-900 hover:bg-warning-600 active:bg-warning-700 border-transparent focus-visible:outline-warning-500 shadow-sm',\r\n info: 'bg-info-600 text-white hover:bg-info-700 active:bg-info-800 border-transparent focus-visible:outline-info-600 shadow-sm'\r\n };\r\n\r\n const outlinedMap: Record<TailwindColor, string> = {\r\n primary:\r\n 'bg-transparent text-primary-600 border-primary-600 hover:bg-primary-50 active:bg-primary-100 focus-visible:outline-primary-600',\r\n secondary:\r\n 'bg-transparent text-surface-700 border-surface-300 hover:bg-surface-50 active:bg-surface-100 focus-visible:outline-surface-500',\r\n danger:\r\n 'bg-transparent text-danger-600 border-danger-600 hover:bg-danger-50 active:bg-danger-100 focus-visible:outline-danger-600',\r\n success:\r\n 'bg-transparent text-success-600 border-success-600 hover:bg-success-50 active:bg-success-100 focus-visible:outline-success-600',\r\n warning:\r\n 'bg-transparent text-warning-600 border-warning-500 hover:bg-warning-50 active:bg-warning-100 focus-visible:outline-warning-500',\r\n info: 'bg-transparent text-info-600 border-info-600 hover:bg-info-50 active:bg-info-100 focus-visible:outline-info-600'\r\n };\r\n\r\n /** Transparent + hover/active background tint (former `text` look). */\r\n const ghostMap: Record<TailwindColor, string> = {\r\n primary:\r\n 'bg-transparent text-primary-600 border-transparent hover:bg-primary-50 active:bg-primary-100 focus-visible:outline-primary-600',\r\n secondary:\r\n 'bg-transparent text-surface-700 border-transparent hover:bg-surface-100 active:bg-surface-200 focus-visible:outline-surface-500',\r\n danger:\r\n 'bg-transparent text-danger-600 border-transparent hover:bg-danger-50 active:bg-danger-100 focus-visible:outline-danger-600',\r\n success:\r\n 'bg-transparent text-success-600 border-transparent hover:bg-success-50 active:bg-success-100 focus-visible:outline-success-600',\r\n warning:\r\n 'bg-transparent text-warning-600 border-transparent hover:bg-warning-50 active:bg-warning-100 focus-visible:outline-warning-500',\r\n info: 'bg-transparent text-info-600 border-transparent hover:bg-info-50 active:bg-info-100 focus-visible:outline-info-600'\r\n };\r\n\r\n /** Text color from severity only; background stays transparent on hover/active. */\r\n const textMap: Record<TailwindColor, string> = {\r\n primary: 'bg-transparent text-primary-600 border-transparent focus-visible:outline-primary-600',\r\n secondary: 'bg-transparent text-surface-700 border-transparent focus-visible:outline-surface-500',\r\n danger: 'bg-transparent text-danger-600 border-transparent focus-visible:outline-danger-600',\r\n success: 'bg-transparent text-success-600 border-transparent focus-visible:outline-success-600',\r\n warning: 'bg-transparent text-warning-600 border-transparent focus-visible:outline-warning-500',\r\n info: 'bg-transparent text-info-600 border-transparent focus-visible:outline-info-600'\r\n };\r\n\r\n const styleMap = {\r\n solid: solidMap,\r\n outlined: outlinedMap,\r\n ghost: ghostMap,\r\n text: textMap\r\n };\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-2 py-1 rounded-sm',\r\n sm: 'text-sm px-3 py-1.5 rounded-md',\r\n md: 'text-sm px-4 py-2 rounded-md',\r\n lg: 'text-base px-5 py-2.5 rounded-lg',\r\n xl: 'text-base px-6 py-3 rounded-lg'\r\n };\r\n\r\n const iconSizeMap: Record<TailwindSize, string> = {\r\n xs: 'p-1 rounded-sm',\r\n sm: 'p-1.5 rounded-md',\r\n md: 'p-2 rounded-md',\r\n lg: 'p-2.5 rounded-lg',\r\n xl: 'p-3 rounded-lg'\r\n };\r\n\r\n return [...base, styleMap[this.kind()][this.color()] || styleMap['solid']['primary'], sizeMap[this.size()]].join(\r\n ' '\r\n );\r\n });\r\n\r\n handleClick(event: MouseEvent): void {\r\n if (!this.disabled()) {\r\n this.onClick.emit(event);\r\n }\r\n }\r\n}\r\n","<button\n [ngClass]=\"computedClasses()\"\n [disabled]=\"disabled()\"\n [type]=\"type()\"\n [attr.aria-disabled]=\"disabled() || null\"\n (click)=\"handleClick($event)\">\n <ng-content />\n</button>\n","import { InjectionToken } from '@angular/core';\r\nimport { TailwindSize } from '../models';\r\n\r\nexport const TAILWIND_MODAL_DATA = new InjectionToken<unknown>('TAILWIND_MODAL_DATA');\r\n\r\nexport const TAILWIND_ICON_SIZE = new InjectionToken<'normal' | 'small'>('TAILWIND_ICON_SIZE');\r\n\r\nexport const TAILWIND_DATETIME_LANGUAGE = new InjectionToken<'it' | 'en'>('TAILWIND_DATETIME_LANGUAGE');\r\n\r\nexport const TAILWIND_COMPONENTS_SIZE = new InjectionToken<TailwindSize>('TAILWIND_COMPONENTS_SIZE');\r\n","import { Component, computed, inject, input } from '@angular/core';\r\nimport type { TailwindHeroIcon, TailwindIconSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TAILWIND_ICON_SIZE } from '../../tokens';\r\n\r\n@Component({\r\n selector: 'tailwind-icon',\r\n host: {\r\n class: 'inline-flex shrink-0 items-center justify-center'\r\n },\r\n templateUrl: './icon.component.html'\r\n})\r\nexport class TailwindIcon extends TailwindComponent {\r\n private readonly iconSize = inject(TAILWIND_ICON_SIZE, { optional: true });\r\n\r\n /** Heroicon name; SVG path `public/icons/<name>.svg` */\r\n readonly icon = input.required<TailwindHeroIcon>();\r\n /** `normal` = 24×24, `small` = 16×16; default dalla DI (`TAILWIND_ICON_SIZE`) se presente */\r\n readonly size = input<TailwindIconSize>(this.iconSize ?? 'normal');\r\n\r\n readonly src = computed(() => `/tailwind-icons/${this.icon()}.svg`);\r\n\r\n readonly pixelSize = computed(() => (this.size() === 'small' ? 16 : 24));\r\n}\r\n","<img\r\n class=\"block shrink-0\"\r\n [src]=\"src()\"\r\n [attr.width]=\"pixelSize()\"\r\n [attr.height]=\"pixelSize()\"\r\n [attr.alt]=\"icon()\"\r\n [attr.aria-hidden]=\"true\"\r\n decoding=\"async\" />\r\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-input',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindInput),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './input.component.html',\r\n styleUrl: './input.component.scss'\r\n})\r\nexport class TailwindInput extends TailwindComponent implements ControlValueAccessor {\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Placeholder text */\r\n readonly placeholder = input<string>('');\r\n /** Input type */\r\n readonly type = input<'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url'>('text');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Whether the input is readonly */\r\n readonly readonly = input<boolean>(false);\r\n /** Helper text shown below input */\r\n readonly helperText = input<string>('');\r\n /** Error text shown when hasError is true */\r\n readonly errorText = input<string>('');\r\n /** Whether the input is in error state */\r\n readonly hasError = input<boolean>(false);\r\n\r\n /** Two-way bound value */\r\n readonly value = model<string>('');\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Computed input classes */\r\n readonly inputClasses = computed(() => {\r\n const base = [\r\n 'block w-full bg-white',\r\n 'border transition-colors duration-150',\r\n 'placeholder:text-surface-400',\r\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\r\n 'disabled:bg-surface-50 disabled:text-surface-400 disabled:cursor-not-allowed'\r\n ];\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-2 py-1 rounded-sm',\r\n sm: 'text-sm px-2.5 py-1.5 rounded-md',\r\n md: 'text-sm px-3 py-2 rounded-md',\r\n lg: 'text-base px-3.5 py-2.5 rounded-lg',\r\n xl: 'text-base px-4 py-3 rounded-lg'\r\n };\r\n\r\n const stateClass = this.hasError()\r\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\r\n : 'border-surface-300 focus:outline-primary-500 text-surface-900';\r\n\r\n return [...base, sizeMap[this.size()], stateClass].join(' ');\r\n });\r\n\r\n // CVA\r\n private onChange: (value: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: string): void {\r\n this.value.set(value ?? '');\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n onInputChange(event: Event): void {\r\n const val = (event.target as HTMLInputElement).value;\r\n this.value.set(val);\r\n this.onChange(val);\r\n }\r\n\r\n onBlur(): void {\r\n this.onTouched();\r\n }\r\n}\r\n","<div class=\"tailwind-input-wrapper flex flex-col gap-1.5\">\n @if (label()) {\n <label\n [attr.for]=\"id() ? id() + '-inner' : null\"\n class=\"text-sm font-medium text-surface-700\"\n [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n [type]=\"type()\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"isDisabled()\"\n [readonly]=\"readonly()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\n [value]=\"value()\"\n [class]=\"inputClasses()\"\n (input)=\"onInputChange($event)\"\n (blur)=\"onBlur()\" />\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-surface-500\">\n {{ helperText() }}\n </p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">\n {{ errorText() }}\n </p>\n }\n</div>\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-checkbox',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindCheckbox),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './checkbox.component.html',\r\n styleUrl: './checkbox.component.scss'\r\n})\r\nexport class TailwindCheckbox extends TailwindComponent implements ControlValueAccessor {\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Description text */\r\n readonly description = input<string>('');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Unique ID */\r\n \r\n /** Two-way bound checked state */\r\n readonly checked = model<boolean>(false);\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Box size class based on size input */\r\n readonly boxSizeClass = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-3.5 h-3.5',\r\n sm: 'w-4 h-4',\r\n md: 'w-5 h-5',\r\n lg: 'w-6 h-6',\r\n xl: 'w-7 h-7'\r\n };\r\n return sizeMap[this.size()];\r\n });\r\n\r\n // CVA\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: boolean): void {\r\n this.checked.set(!!value);\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n onCheckboxChange(event: Event): void {\r\n const val = (event.target as HTMLInputElement).checked;\r\n this.checked.set(val);\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n}\r\n\r\n","<label\n [attr.for]=\"id() ? id() + '-inner' : null\"\n class=\"inline-flex items-center gap-2.5 cursor-pointer select-none\"\n [class.cursor-not-allowed]=\"isDisabled()\"\n [class.opacity-50]=\"isDisabled()\">\n <div class=\"relative flex items-center justify-center shrink-0\" [class]=\"boxSizeClass()\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"checkbox\"\n class=\"peer sr-only\"\n [checked]=\"checked()\"\n [disabled]=\"isDisabled()\"\n [attr.aria-describedby]=\"description() && id() ? id() + '-desc' : null\"\n (change)=\"onCheckboxChange($event)\" />\n <div\n class=\"w-full h-full border-2 transition-all duration-150 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500/30 peer-focus-visible:ring-offset-1\"\n [class.rounded-sm]=\"size() === 'xs' || size() === 'sm'\"\n [class.rounded-md]=\"size() !== 'xs' && size() !== 'sm'\"\n [class.border-surface-300]=\"!checked()\"\n [class.bg-white]=\"!checked()\"\n [class.border-primary-600]=\"checked()\"\n [class.bg-primary-600]=\"checked()\">\n @if (checked()) {\n <svg class=\"w-full h-full text-white p-0.5\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path\n d=\"M13.5 4.5L6.5 11.5L3 8\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n }\n </div>\n </div>\n\n <div class=\"flex flex-col gap-0.5 pt-0.5\">\n @if (label()) {\n <span class=\"text-sm font-medium text-surface-800 leading-tight\">{{ label() }}</span>\n }\n @if (description()) {\n <span [attr.id]=\"id() ? id() + '-desc' : null\" class=\"text-xs text-surface-500 leading-snug\">\n {{ description() }}\n </span>\n }\n </div>\n</label>\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindOptionGroup, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-radio-group',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindRadioGroup),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './radio-group.component.html',\r\n styleUrl: './radio-group.component.scss'\r\n})\r\nexport class TailwindRadioGroup<T = unknown> extends TailwindComponent implements ControlValueAccessor {\r\n /** Label for the radio group */\r\n readonly label = input<string>('');\r\n /** Aria label for accessibility */\r\n readonly ariaLabel = input<string>('');\r\n /** Name for the radio group (used for native radio grouping) */\r\n readonly name = input<string>();\r\n /** Available options */\r\n readonly options = input<TailwindOptionGroup<T>[]>([]);\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Layout orientation */\r\n readonly orientation = input<'horizontal' | 'vertical'>('vertical');\r\n\r\n /** Currently selected value */\r\n readonly value = model<T | null>(null);\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Radio button outer ring size */\r\n readonly radioSizeClass = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-3.5 h-3.5',\r\n sm: 'w-4 h-4',\r\n md: 'w-5 h-5',\r\n lg: 'w-6 h-6',\r\n xl: 'w-7 h-7'\r\n };\r\n return sizeMap[this.size()];\r\n });\r\n\r\n /** Inner dot size */\r\n readonly dotSizeClass = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-1.5 h-1.5',\r\n sm: 'w-2 h-2',\r\n md: 'w-2.5 h-2.5',\r\n lg: 'w-3 h-3',\r\n xl: 'w-3.5 h-3.5'\r\n };\r\n return sizeMap[this.size()];\r\n });\r\n\r\n // CVA\r\n private onChange: (value: T) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: T): void {\r\n this.value.set(value ?? null);\r\n }\r\n\r\n registerOnChange(fn: (value: T) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n onRadioChange(optionValue: T): void {\r\n this.value.set(optionValue);\r\n this.onChange(optionValue);\r\n this.onTouched();\r\n }\r\n}\r\n","<fieldset\n class=\"flex gap-3\"\n [class.flex-col]=\"orientation() === 'vertical'\"\n [attr.aria-label]=\"ariaLabel()\"\n role=\"radiogroup\">\n @if (label()) {\n <legend class=\"text-sm font-medium text-surface-700 mb-2\">{{ label() }}</legend>\n }\n\n @for (option of options(); track option.value) {\n <label\n class=\"inline-flex items-start gap-2.5 cursor-pointer select-none\"\n [class.cursor-not-allowed]=\"isDisabled() || option.disabled\"\n [class.opacity-50]=\"isDisabled() || option.disabled\">\n <div class=\"relative flex items-center justify-center shrink-0\" [class]=\"radioSizeClass()\">\n <input\n type=\"radio\"\n class=\"peer sr-only\"\n [name]=\"name()\"\n [value]=\"option.value\"\n [checked]=\"value() === option.value\"\n [disabled]=\"isDisabled() || !!option.disabled\"\n (change)=\"onRadioChange(option.value)\" />\n <div\n class=\"w-full h-full rounded-full border-2 transition-all duration-150 peer-focus-visible:ring-2 peer-focus-visible:ring-primary-500/30 peer-focus-visible:ring-offset-1 flex items-center justify-center\"\n [class.border-surface-300]=\"value() !== option.value\"\n [class.border-primary-600]=\"value() === option.value\">\n @if (value() === option.value) {\n <div\n class=\"rounded-full bg-primary-600 transition-transform duration-150 scale-100\"\n [class]=\"dotSizeClass()\"></div>\n }\n </div>\n </div>\n\n <div class=\"flex flex-col gap-0.5 pt-0.5\">\n <span class=\"text-sm font-medium text-surface-800 leading-tight\">{{ option.label }}</span>\n @if (option.description) {\n <span class=\"text-xs text-surface-500 leading-snug\">{{ option.description }}</span>\n }\n </div>\n </label>\n }\n</fieldset>\n","import {\r\n Component,\r\n computed,\r\n ElementRef,\r\n forwardRef,\r\n inject,\r\n input,\r\n model,\r\n OnDestroy,\r\n signal,\r\n TemplateRef,\r\n ViewContainerRef,\r\n viewChild\r\n} from '@angular/core';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { fromEvent, Subscription } from 'rxjs';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindOption, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-select',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindSelect),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './select.component.html',\r\n styleUrl: './select.component.scss'\r\n})\r\nexport class TailwindSelect<T = unknown> extends TailwindComponent implements ControlValueAccessor, OnDestroy {\r\n private readonly overlay = inject(Overlay);\r\n private readonly vcr = inject(ViewContainerRef);\r\n private readonly elRef = inject(ElementRef<HTMLElement>);\r\n private readonly panelTemplate = viewChild.required<TemplateRef<unknown>>('panelTemplate');\r\n\r\n private overlayRef: OverlayRef | null = null;\r\n private outsideSub: Subscription | null = null;\r\n\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Placeholder text */\r\n readonly placeholder = input<string>('');\r\n /** Available options */\r\n readonly options = input<TailwindOption<T>[]>([]);\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Helper text */\r\n readonly helperText = input<string>('');\r\n /** Error text */\r\n readonly errorText = input<string>('');\r\n /** Whether in error state */\r\n readonly hasError = input<boolean>(false);\r\n /** When true, value is `T[]` and several options can be selected */\r\n readonly multiple = input(false);\r\n\r\n /** Selected value: `T | null` when single, `T[]` when `multiple` */\r\n readonly value = model<T | T[] | null>(null);\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Whether the dropdown panel is open */\r\n readonly isOpen = signal(false);\r\n\r\n /** Keyboard-highlighted option index (-1 = none) */\r\n readonly activeIndex = signal(-1);\r\n\r\n /** The currently selected option object (single mode only) */\r\n readonly selectedOption = computed(() => {\r\n if (this.multiple()) return null;\r\n const v = this.value();\r\n if (v == null || Array.isArray(v)) return null;\r\n return this.options().find(o => this.optionValueEquals(o.value, v)) ?? null;\r\n });\r\n\r\n /** Selected option objects in `options()` order (multiple mode only) */\r\n readonly selectedOptions = computed(() => {\r\n if (!this.multiple()) return [];\r\n const v = this.value();\r\n const arr = Array.isArray(v) ? v : [];\r\n return this.options().filter(o => arr.some(sv => this.optionValueEquals(o.value, sv)));\r\n });\r\n\r\n /** Classes for the trigger button */\r\n readonly triggerClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs px-2 py-1 rounded-sm',\r\n sm: 'text-sm px-2.5 py-1.5 rounded-md',\r\n md: 'text-sm px-3 py-2 rounded-md',\r\n lg: 'text-base px-3.5 py-2.5 rounded-lg',\r\n xl: 'text-base px-4 py-3 rounded-lg'\r\n };\r\n\r\n const stateClass = this.hasError()\r\n ? 'border-danger-400 focus:outline-danger-500 text-danger-900'\r\n : 'border-surface-300 focus:outline-primary-500';\r\n\r\n const layout = this.multiple() ? 'items-start' : 'items-center';\r\n\r\n return [\r\n 'flex justify-between w-full bg-white border transition-colors duration-150',\r\n layout,\r\n 'pr-3 cursor-pointer text-left',\r\n 'outline-none focus:outline focus:outline-2 focus:outline-offset-2',\r\n 'disabled:bg-surface-50 disabled:text-surface-400 disabled:cursor-not-allowed',\r\n sizeMap[this.size()],\r\n stateClass\r\n ].join(' ');\r\n });\r\n\r\n private optionValueEquals(a: unknown, b: unknown): boolean {\r\n return Object.is(a, b);\r\n }\r\n\r\n /** Used in the template to compare option values */\r\n isOptionSelected(option: TailwindOption<T>): boolean {\r\n if (this.multiple()) {\r\n const v = this.value();\r\n const arr = Array.isArray(v) ? v : [];\r\n return arr.some(sv => this.optionValueEquals(option.value, sv));\r\n }\r\n const v = this.value();\r\n if (v == null || Array.isArray(v)) return false;\r\n return this.optionValueEquals(option.value, v);\r\n }\r\n\r\n /** Classes for a single option row */\r\n optionClasses(index: number, option: TailwindOption<T>): string {\r\n const isSelected = this.isOptionSelected(option);\r\n const isActive = this.activeIndex() === index;\r\n const isDisabled = !!option.disabled;\r\n\r\n return [\r\n 'flex items-center justify-between px-3 py-2 text-sm cursor-pointer select-none',\r\n isDisabled\r\n ? 'text-surface-400 cursor-not-allowed'\r\n : isSelected\r\n ? 'bg-primary-50 text-primary-700 font-medium'\r\n : isActive\r\n ? 'bg-surface-100 text-surface-900'\r\n : 'text-surface-800 hover:bg-surface-50'\r\n ].join(' ');\r\n }\r\n\r\n // CVA\r\n private onChange: (value: T | T[] | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: T | T[] | null | undefined): void {\r\n if (this.multiple()) {\r\n if (value == null) this.value.set([]);\r\n else this.value.set(Array.isArray(value) ? [...value] : []);\r\n } else {\r\n if (Array.isArray(value)) this.value.set(null);\r\n else this.value.set(value ?? null);\r\n }\r\n }\r\n\r\n registerOnChange(fn: (value: T | T[] | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.closeDropdown();\r\n }\r\n\r\n private openDropdown(): void {\r\n if (this.overlayRef) return;\r\n\r\n const trigger =\r\n (this.elRef.nativeElement.querySelector('button[role=\"combobox\"]') as HTMLElement) ?? this.elRef.nativeElement;\r\n\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(trigger)\r\n .withPositions([\r\n // Preferred: open downward\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\r\n // Fallback: open upward\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' }\r\n ])\r\n .withFlexibleDimensions(false)\r\n .withPush(false);\r\n\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n scrollStrategy: this.overlay.scrollStrategies.close(),\r\n width: trigger.offsetWidth,\r\n minWidth: 'w-full'\r\n });\r\n\r\n const portal = new TemplatePortal(this.panelTemplate(), this.vcr);\r\n this.overlayRef.attach(portal);\r\n\r\n const pane = this.overlayRef.overlayElement;\r\n this.outsideSub = new Subscription();\r\n\r\n // Close on outside click (capture: trigger + panel are excluded; avoids CDK edge cases)\r\n this.outsideSub.add(\r\n fromEvent<PointerEvent>(document, 'pointerdown', { capture: true }).subscribe(ev => {\r\n const t = ev.target as Node;\r\n if (this.elRef.nativeElement.contains(t) || pane.contains(t)) return;\r\n this.closeDropdown();\r\n })\r\n );\r\n\r\n this.outsideSub.add(\r\n fromEvent<KeyboardEvent>(document, 'keydown').subscribe(ev => {\r\n if (ev.key === 'Escape') {\r\n ev.preventDefault();\r\n this.closeDropdown();\r\n }\r\n })\r\n );\r\n\r\n this.isOpen.set(true);\r\n\r\n const opts = this.options();\r\n let initial = -1;\r\n if (this.multiple()) {\r\n const v = this.value();\r\n const arr = Array.isArray(v) ? v : [];\r\n initial = opts.findIndex(o => arr.some(sv => this.optionValueEquals(o.value, sv)));\r\n } else {\r\n const v = this.value();\r\n if (v != null && !Array.isArray(v)) {\r\n initial = opts.findIndex(o => this.optionValueEquals(o.value, v));\r\n }\r\n }\r\n this.activeIndex.set(initial >= 0 ? initial : -1);\r\n }\r\n\r\n private closeDropdown(): void {\r\n this.overlayRef?.detach();\r\n this.overlayRef?.dispose();\r\n this.overlayRef = null;\r\n this.outsideSub?.unsubscribe();\r\n this.outsideSub = null;\r\n this.isOpen.set(false);\r\n this.activeIndex.set(-1);\r\n }\r\n\r\n toggleDropdown(): void {\r\n if (this.isDisabled()) return;\r\n if (this.isOpen()) {\r\n this.closeDropdown();\r\n } else {\r\n this.openDropdown();\r\n }\r\n }\r\n\r\n selectOption(option: TailwindOption<T>): void {\r\n if (option.disabled) return;\r\n if (this.multiple()) {\r\n const v = this.value();\r\n const current = Array.isArray(v) ? [...v] : [];\r\n const idx = current.findIndex(sv => this.optionValueEquals(sv, option.value));\r\n if (idx >= 0) current.splice(idx, 1);\r\n else current.push(option.value);\r\n this.value.set(current);\r\n this.onChange(current);\r\n this.onTouched();\r\n return;\r\n }\r\n const val = option.value;\r\n this.value.set(val);\r\n this.onChange(val);\r\n this.onTouched();\r\n this.closeDropdown();\r\n }\r\n\r\n onKeydown(event: KeyboardEvent): void {\r\n if (this.isDisabled()) return;\r\n const opts = this.options();\r\n\r\n switch (event.key) {\r\n case 'ArrowDown': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openDropdown();\r\n return;\r\n }\r\n let next = this.activeIndex() + 1;\r\n while (next < opts.length && opts[next].disabled) next++;\r\n if (next < opts.length) this.activeIndex.set(next);\r\n break;\r\n }\r\n case 'ArrowUp': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openDropdown();\r\n return;\r\n }\r\n let prev = this.activeIndex() - 1;\r\n while (prev >= 0 && opts[prev].disabled) prev--;\r\n if (prev >= 0) this.activeIndex.set(prev);\r\n break;\r\n }\r\n case 'Enter':\r\n case ' ': {\r\n event.preventDefault();\r\n if (!this.isOpen()) {\r\n this.openDropdown();\r\n return;\r\n }\r\n const active = this.activeIndex();\r\n if (active >= 0 && active < opts.length) {\r\n this.selectOption(opts[active]);\r\n }\r\n break;\r\n }\r\n case 'Escape':\r\n case 'Tab': {\r\n this.closeDropdown();\r\n break;\r\n }\r\n }\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label\n [attr.for]=\"id() ? id() + '-inner' : null\"\n class=\"text-sm font-medium text-surface-700\"\n [class.text-danger-600]=\"hasError()\">\n {{ label() }}\n </label>\n }\n\n <!-- Trigger button -->\n <button\n type=\"button\"\n [attr.id]=\"id() ? id() + '-inner' : null\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-invalid]=\"hasError() || null\"\n [attr.aria-describedby]=\"(helperText() || errorText()) && id() ? id() + '-helper' : null\"\n [disabled]=\"isDisabled()\"\n [class]=\"triggerClasses()\"\n (click)=\"toggleDropdown()\"\n (keydown)=\"onKeydown($event)\">\n @if (multiple()) {\n <span class=\"flex flex-wrap gap-1 flex-1 min-w-0 mr-2\" [class.text-surface-400]=\"selectedOptions().length === 0\">\n @if (selectedOptions().length === 0) {\n {{ placeholder() }}\n } @else {\n @for (opt of selectedOptions(); track opt) {\n <span class=\"rounded-md bg-surface-100 px-2 py-0.5 text-sm text-surface-800\">{{ opt.label }}</span>\n }\n }\n </span>\n } @else {\n <span [class.text-surface-400]=\"!selectedOption()\">\n {{ selectedOption()?.label ?? placeholder() }}\n </span>\n }\n\n <svg\n class=\"shrink-0 ml-2 w-4 h-4 text-surface-400 transition-transform duration-150\"\n [class.rotate-180]=\"isOpen()\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\">\n <path\n fill-rule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n\n @if (helperText() && !hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-surface-500\">{{ helperText() }}</p>\n }\n @if (errorText() && hasError()) {\n <p [attr.id]=\"id() ? id() + '-helper' : null\" class=\"text-xs text-danger-600\">{{ errorText() }}</p>\n }\n</div>\n\n<!-- Dropdown panel — rendered via CDK Overlay outside the component DOM -->\n<ng-template #panelTemplate>\n <ul\n role=\"listbox\"\n [attr.aria-multiselectable]=\"multiple() ? true : null\"\n class=\"w-full bg-white border border-surface-200 rounded-md shadow-lg py-1 max-h-60 overflow-auto\">\n @if (placeholder()) {\n <li role=\"option\" aria-disabled=\"true\" class=\"px-3 py-2 text-sm text-surface-400 cursor-default select-none\">\n {{ placeholder() }}\n </li>\n }\n @for (option of options(); track option.value; let i = $index) {\n <li\n role=\"option\"\n [attr.aria-selected]=\"isOptionSelected(option)\"\n [attr.aria-disabled]=\"option.disabled || null\"\n [class]=\"optionClasses(i, option)\"\n (click)=\"selectOption(option)\"\n (mouseenter)=\"!option.disabled && activeIndex.set(i)\">\n <span>{{ option.label }}</span>\n\n @if (isOptionSelected(option)) {\n <svg\n class=\"w-4 h-4 text-primary-600 shrink-0\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\">\n <path\n fill-rule=\"evenodd\"\n d=\"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z\"\n clip-rule=\"evenodd\" />\n </svg>\n }\n </li>\n }\n </ul>\n</ng-template>\n","import { Component, computed, forwardRef, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-toggle',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindToggle),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './toggle.component.html',\r\n styleUrl: './toggle.component.scss'\r\n})\r\nexport class TailwindToggle extends TailwindComponent implements ControlValueAccessor {\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Aria label for accessibility */\r\n readonly ariaLabel = input<string>('');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n\r\n /** Two-way bound checked state */\r\n readonly checked = model<boolean>(false);\r\n\r\n /** Internal disabled state */\r\n readonly isDisabled = signal(false);\r\n\r\n /** Track (background) classes */\r\n readonly trackClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-7 h-4',\r\n sm: 'w-8 h-5',\r\n md: 'w-11 h-6',\r\n lg: 'w-14 h-7',\r\n xl: 'w-16 h-8'\r\n };\r\n\r\n const base = [\r\n 'relative inline-flex shrink-0 rounded-full',\r\n 'border-2 border-transparent',\r\n 'transition-colors duration-200 ease-in-out',\r\n 'focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary-600',\r\n 'cursor-pointer disabled:cursor-not-allowed'\r\n ];\r\n\r\n const stateClass = this.checked() ? 'bg-primary-600' : 'bg-surface-300';\r\n\r\n return [...base, sizeMap[this.size()], stateClass].join(' ');\r\n });\r\n\r\n /** Thumb (knob) classes */\r\n readonly thumbClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, { thumb: string; translateOn: string }> = {\r\n xs: { thumb: 'w-3 h-3', translateOn: 'translate-x-3' },\r\n sm: { thumb: 'w-4 h-4', translateOn: 'translate-x-3' },\r\n md: { thumb: 'w-5 h-5', translateOn: 'translate-x-5' },\r\n lg: { thumb: 'w-6 h-6', translateOn: 'translate-x-7' },\r\n xl: { thumb: 'w-7 h-7', translateOn: 'translate-x-8' }\r\n };\r\n\r\n const config = sizeMap[this.size()];\r\n\r\n const base = [\r\n 'pointer-events-none inline-block rounded-full',\r\n 'bg-white shadow-md',\r\n 'transform transition-transform duration-200 ease-in-out'\r\n ];\r\n\r\n const translateClass = this.checked() ? config.translateOn : 'translate-x-0';\r\n\r\n return [...base, config.thumb, translateClass].join(' ');\r\n });\r\n\r\n // CVA\r\n private onChange: (value: boolean) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(value: boolean): void {\r\n this.checked.set(!!value);\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n toggle(): void {\r\n if (this.isDisabled()) return;\r\n const newValue = !this.checked();\r\n this.checked.set(newValue);\r\n this.onChange(newValue);\r\n this.onTouched();\r\n }\r\n}\r\n","<label\n class=\"inline-flex items-center gap-3 cursor-pointer select-none\"\n [class.cursor-not-allowed]=\"isDisabled()\"\n [class.opacity-50]=\"isDisabled()\">\n <button\n type=\"button\"\n role=\"switch\"\n [attr.aria-checked]=\"checked()\"\n [attr.aria-label]=\"ariaLabel() || label()\"\n [disabled]=\"isDisabled()\"\n [class]=\"trackClasses()\"\n (click)=\"toggle()\">\n <span [class]=\"thumbClasses()\" aria-hidden=\"true\"></span>\n </button>\n\n @if (label()) {\n <span class=\"text-sm font-medium text-surface-800\">{{ label() }}</span>\n }\n</label>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSeverity, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-badge',\r\n templateUrl: './badge.component.html',\r\n styleUrl: './badge.component.scss'\r\n})\r\nexport class TailwindBadge extends TailwindComponent {\r\n /** Color variant */\r\n readonly variant = input<TailwindSeverity | 'neutral' | 'primary'>('primary');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Show a dot indicator */\r\n readonly dot = input<boolean>(false);\r\n /** Shape variant */\r\n readonly rounded = input<boolean>(false);\r\n /** Accessible label */\r\n readonly ariaLabel = input<string>('');\r\n\r\n readonly computedClasses = computed(() => {\r\n const base = ['inline-flex items-center gap-1 font-medium', 'leading-none'];\r\n\r\n const variantMap: Record<string, string> = {\r\n primary: 'bg-primary-100 text-primary-700',\r\n neutral: 'bg-surface-100 text-surface-700',\r\n success: 'bg-success-100 text-success-700',\r\n warning: 'bg-warning-100 text-warning-800',\r\n danger: 'bg-danger-100 text-danger-700',\r\n info: 'bg-info-100 text-info-700'\r\n };\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-[10px] px-1.5 py-0.5',\r\n sm: 'text-xs px-2 py-0.5',\r\n md: 'text-xs px-2.5 py-1',\r\n lg: 'text-sm px-3 py-1',\r\n xl: 'text-sm px-3.5 py-1.5'\r\n };\r\n\r\n const shape = this.rounded() ? 'rounded-full' : 'rounded-md';\r\n\r\n return [...base, variantMap[this.variant()] ?? variantMap['primary'], sizeMap[this.size()], shape].join(' ');\r\n });\r\n}\r\n","<span [class]=\"computedClasses()\" [attr.aria-label]=\"ariaLabel()\">\n @if (dot()) {\n <span class=\"w-1.5 h-1.5 rounded-full bg-current\"></span>\n }\n <ng-content />\n</span>\n","import { Component } from '@angular/core';\r\n\r\n/** Slot marker for `TailwindCard` header projection (`ng-content select=\"tailwind-card-header\"`). */\r\n@Component({\r\n selector: 'tailwind-card-header',\r\n template: `<ng-content />`,\r\n styles: [`:host { display: contents; }`]\r\n})\r\nexport class TailwindCardHeader {}\r\n","import { Component } from '@angular/core';\r\n\r\n/** Slot marker for `TailwindCard` footer projection (`ng-content select=\"tailwind-card-footer\"`). */\r\n@Component({\r\n selector: 'tailwind-card-footer',\r\n template: `<ng-content />`,\r\n styles: [`:host { display: contents; }`]\r\n})\r\nexport class TailwindCardFooter {}\r\n","import { Component } from '@angular/core';\r\n\r\n/** Slot marker for `TailwindCard` image projection (`ng-content select=\"tailwind-card-image\"`). */\r\n@Component({\r\n selector: 'tailwind-card-image',\r\n template: `<ng-content />`,\r\n styles: [`:host { display: contents; }`]\r\n})\r\nexport class TailwindCardImage {}\r\n","import { Component, input } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TailwindCardHeader } from './card-header.component';\r\nimport { TailwindCardFooter } from './card-footer.component';\r\nimport { TailwindCardImage } from './card-image.component';\r\nexport { TailwindCardHeader, TailwindCardFooter, TailwindCardImage };\r\n\r\n@Component({\r\n selector: 'tailwind-card',\r\n templateUrl: './card.component.html',\r\n styleUrl: './card.component.scss'\r\n})\r\nexport class TailwindCard extends TailwindComponent {\r\n /** Whether the card has elevated shadow */\r\n readonly elevated = input<boolean>(false);\r\n /** Whether to show hover shadow effect */\r\n readonly hoverable = input<boolean>(false);\r\n /** Whether to show header background */\r\n readonly headerBg = input<boolean>(false);\r\n /** Whether the card has a header */\r\n readonly hasHeader = input<boolean>(true);\r\n /** Whether the card has a footer */\r\n readonly hasFooter = input<boolean>(true);\r\n}\r\n","<div\n class=\"bg-white rounded-xl border border-surface-200 overflow-hidden transition-shadow duration-200\"\n [class.shadow-sm]=\"!elevated()\"\n [class.shadow-lg]=\"elevated()\"\n [class.hover:shadow-md]=\"hoverable() && !elevated()\"\n [class.hover:shadow-xl]=\"hoverable() && elevated()\">\n @if (hasHeader()) {\n <!-- Header slot (always rendered; only visible when content is projected) -->\n <div class=\"px-6 py-4 border-b border-surface-100\" [class.bg-surface-50]=\"headerBg()\">\n <ng-content select=\"tailwind-card-header\" />\n </div>\n }\n\n <!-- Image slot -->\n <ng-content select=\"tailwind-card-image\" />\n\n <!-- Body -->\n <div class=\"p-6\">\n <ng-content />\n </div>\n\n @if (hasFooter()) {\n <!-- Footer slot -->\n <div class=\"px-6 py-4 border-t border-surface-100 bg-surface-50/50\">\n <ng-content select=\"tailwind-card-footer\" />\n </div>\n }\n</div>\n","import { Component, computed, input, output, signal } from '@angular/core';\r\nimport { TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-alert',\r\n templateUrl: './alert.component.html',\r\n styleUrl: './alert.component.scss'\r\n})\r\nexport class TailwindAlert extends TailwindComponent {\r\n /** Severity / color variant */\r\n readonly severity = input<TailwindSeverity>('info');\r\n /** Alert title */\r\n readonly title = input<string>('');\r\n /** Alert message */\r\n readonly message = input<string>('');\r\n /** Whether the alert can be dismissed */\r\n readonly dismissible = input<boolean>(false);\r\n /** Whether to show a border on the left */\r\n readonly bordered = input<boolean>(true);\r\n\r\n /** Emitted when the alert is dismissed */\r\n readonly onDismiss = output<void>();\r\n\r\n /** Internal dismissed state */\r\n readonly dismissed = signal(false);\r\n\r\n readonly computedClasses = computed(() => {\r\n const base = 'flex gap-3 p-4 rounded-lg';\r\n\r\n const variantMap: Record<TailwindSeverity, string> = {\r\n success: 'bg-success-50 text-success-800 border-success-200',\r\n warning: 'bg-warning-50 text-warning-800 border-warning-200',\r\n danger: 'bg-danger-50 text-danger-800 border-danger-200',\r\n info: 'bg-info-50 text-info-800 border-info-200'\r\n };\r\n\r\n const borderClass = this.bordered() ? 'border-l-4' : 'border';\r\n\r\n return `${base} ${variantMap[this.severity()]} ${borderClass}`;\r\n });\r\n\r\n dismiss(): void {\r\n this.dismissed.set(true);\r\n this.onDismiss.emit();\r\n }\r\n}\r\n","@if (!dismissed()) {\n <div [class]=\"computedClasses()\" role=\"alert\" [attr.aria-live]=\"severity() === 'danger' ? 'assertive' : 'polite'\">\n <!-- Icon -->\n <div class=\"shrink-0 mt-0.5\">\n @switch (severity()) {\n @case ('success') {\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\n clip-rule=\"evenodd\" />\n </svg>\n }\n @case ('warning') {\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 6a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 6zm0 9a1 1 0 100-2 1 1 0 000 2z\"\n clip-rule=\"evenodd\" />\n </svg>\n }\n @case ('danger') {\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\"\n clip-rule=\"evenodd\" />\n </svg>\n }\n @case ('info') {\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\"\n clip-rule=\"evenodd\" />\n </svg>\n }\n }\n </div>\n\n <!-- Content -->\n <div class=\"flex-1 min-w-0\">\n @if (title()) {\n <h3 class=\"text-sm font-semibold mb-0.5\">{{ title() }}</h3>\n }\n <div class=\"text-sm\">\n {{ message() }}\n </div>\n </div>\n\n <!-- Dismiss button -->\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"shrink-0 -m-1 p-1 rounded-md opacity-70 hover:opacity-100 transition-opacity focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-1 cursor-pointer\"\n [attr.aria-label]=\"'Dismiss alert'\"\n (click)=\"dismiss()\">\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n }\n </div>\n}\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindColor, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-spinner',\r\n templateUrl: './spinner.component.html',\r\n styleUrl: './spinner.component.scss'\r\n})\r\nexport class TailwindSpinner extends TailwindComponent {\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Color uses Tailwind text color class */\r\n readonly color = input<TailwindColor>('primary');\r\n /** Optional label text */\r\n readonly label = input<string>('');\r\n /** Aria label for accessibility */\r\n readonly ariaLabel = input<string>('Loading');\r\n /** Layout orientation */\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n\r\n readonly containerClasses = computed(() => {\r\n const base = 'inline-flex items-center gap-2';\r\n const orient = this.orientation() === 'vertical' ? 'flex-col' : '';\r\n return `${base} ${orient}`;\r\n });\r\n\r\n readonly spinnerClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'w-3 h-3',\r\n sm: 'w-4 h-4',\r\n md: 'w-6 h-6',\r\n lg: 'w-8 h-8',\r\n xl: 'w-12 h-12'\r\n };\r\n\r\n const colorMap: Record<TailwindColor, string> = {\r\n primary: 'text-primary-600',\r\n secondary: 'text-secondary-600',\r\n success: 'text-success-600',\r\n warning: 'text-warning-600',\r\n danger: 'text-danger-600',\r\n info: 'text-info-600'\r\n };\r\n\r\n return `tailwind-spinner-svg ${sizeMap[this.size()]} ${colorMap[this.color()]}`;\r\n });\r\n\r\n readonly labelClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'text-xs',\r\n sm: 'text-xs',\r\n md: 'text-sm',\r\n lg: 'text-base',\r\n xl: 'text-lg'\r\n };\r\n\r\n return `${sizeMap[this.size()]} ${this.color()} font-medium`;\r\n });\r\n}\r\n","<div [class]=\"containerClasses()\" role=\"status\" [attr.aria-label]=\"ariaLabel()\">\n <svg [class]=\"spinnerClasses()\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"opacity-20\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n <path\n class=\"opacity-80\"\n fill=\"currentColor\"\n 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\" />\n </svg>\n\n @if (label()) {\n <span [class]=\"labelClasses()\">{{ label() }}</span>\n }\n</div>\n","import { Component, computed, effect, ElementRef, input, output, signal, viewChild } from '@angular/core';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-modal',\r\n templateUrl: './modal.component.html',\r\n styleUrl: './modal.component.scss'\r\n})\r\nexport class TailwindModal extends TailwindComponent {\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Whether to show close button in header */\r\n readonly showCloseButton = input<boolean>(true);\r\n /** Whether clicking backdrop closes the modal */\r\n readonly closeOnBackdrop = input<boolean>(true);\r\n /** Whether pressing Escape closes the modal */\r\n readonly closeOnEscape = input<boolean>(true);\r\n\r\n /** Open/close state */\r\n readonly isOpen = signal(false);\r\n /** Visibility for animation */\r\n readonly isVisible = signal(false);\r\n\r\n /** Emitted when the modal is fully closed (after exit animation) */\r\n readonly onClose = output<void>();\r\n\r\n private readonly modalPanel = viewChild<ElementRef>('modalPanel');\r\n\r\n readonly panelClasses = computed(() => {\r\n const base = ['relative bg-white rounded-xl shadow-2xl', 'w-full transform transition-all duration-200'];\r\n\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'max-w-sm',\r\n sm: 'max-w-md',\r\n md: 'max-w-lg',\r\n lg: 'max-w-2xl',\r\n xl: 'max-w-4xl'\r\n };\r\n\r\n const animation = this.isVisible() ? 'opacity-100 scale-100' : 'opacity-0 scale-95';\r\n\r\n return [...base, sizeMap[this.size()], animation].join(' ');\r\n });\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (this.isOpen()) {\r\n requestAnimationFrame(() => {\r\n this.isVisible.set(true);\r\n this.modalPanel()?.nativeElement?.focus();\r\n });\r\n }\r\n });\r\n }\r\n\r\n /** Open the modal */\r\n open(): void {\r\n this.isOpen.set(true);\r\n }\r\n\r\n /** Close the modal (plays exit animation then emits onClose) */\r\n close(): void {\r\n this.isVisible.set(false);\r\n setTimeout(() => {\r\n this.isOpen.set(false);\r\n this.onClose.emit();\r\n }, 200);\r\n }\r\n}\r\n","@if (isOpen()) {\r\n <!-- Backdrop -->\r\n <div\r\n class=\"fixed inset-0 bg-black/50 backdrop-blur-sm z-1040 transition-opacity duration-200\"\r\n [class.opacity-100]=\"isVisible()\"\r\n [class.opacity-0]=\"!isVisible()\"\r\n (click)=\"closeOnBackdrop() && close()\"\r\n aria-hidden=\"true\"></div>\r\n\r\n <!-- Modal -->\r\n <div\r\n class=\"fixed inset-0 z-1050 overflow-y-auto\"\r\n role=\"dialog\"\r\n [attr.aria-modal]=\"true\"\r\n (keydown.escape)=\"closeOnEscape() && close()\">\r\n <div class=\"flex min-h-full items-center justify-center p-4\">\r\n <div #modalPanel [class]=\"panelClasses()\" tabindex=\"-1\">\r\n\r\n <!-- Header -->\r\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-surface-200\">\r\n <h2 class=\"text-lg font-semibold text-surface-900 pr-2\">\r\n <ng-content />\r\n </h2>\r\n @if (showCloseButton()) {\r\n <button\r\n type=\"button\"\r\n class=\"p-1.5 -m-1.5 shrink-0 rounded-lg text-surface-400 hover:text-surface-600 hover:bg-surface-100 transition-colors cursor-pointer\"\r\n aria-label=\"Close\"\r\n (click)=\"close()\">\r\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n\r\n <!-- Body -->\r\n <ng-content select=\"tailwind-modal-content\" />\r\n\r\n <!-- Footer -->\r\n <ng-content select=\"tailwind-modal-footer\" />\r\n\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n/**\r\n * Transparent wrapper — the visual header structure is provided by TailwindModal.\r\n * Use inside a programmatically-opened component to supply the modal title.\r\n */\r\n@Component({\r\n selector: 'tailwind-modal-title',\r\n template: `<ng-content />`,\r\n styles: [`:host { display: contents; }`]\r\n})\r\nexport class TailwindModalTitle {}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'tailwind-modal-content',\r\n template: `\r\n <div class=\"px-6 py-5\">\r\n <ng-content />\r\n </div>\r\n `\r\n})\r\nexport class TailwindModalContent {}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'tailwind-modal-footer',\r\n template: `\r\n <div class=\"px-6 py-4 border-t border-surface-100 bg-surface-50/50 rounded-b-xl\">\r\n <ng-content />\r\n </div>\r\n `\r\n})\r\nexport class TailwindModalFooter {}\r\n","import { Component, input, signal } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-tab',\r\n templateUrl: './tab.component.html',\r\n styleUrl: './tab.component.scss'\r\n})\r\nexport class TailwindTab extends TailwindComponent {\r\n /** Tab label */\r\n readonly label = input.required<string>();\r\n /** Tab icon (optional, CSS class or content) */\r\n readonly icon = input<string>('');\r\n /** Whether the tab is disabled */\r\n readonly disabled = input<boolean>(false);\r\n /** Whether this tab is the currently active one (set by parent) */\r\n readonly isActive = signal(false);\r\n}\r\n","@if (isActive()) {\n <div role=\"tabpanel\" [attr.aria-labelledby]=\"id() ? 'tab-' + id() : null\">\n <ng-content />\n </div>\n}\n","import { Component, contentChildren, input, model, effect } from '@angular/core';\r\nimport { TailwindTab } from './tab.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-tab-group',\r\n templateUrl: './tab-group.component.html',\r\n styleUrl: './tab-group.component.scss'\r\n})\r\nexport class TailwindTabGroup extends TailwindComponent {\r\n /** Accessible label for the tab list */\r\n readonly ariaLabel = input<string>('');\r\n /** Whether tabs can scroll horizontally */\r\n readonly scrollable = input<boolean>(false);\r\n\r\n /** Currently active tab index (two-way) */\r\n readonly activeIndex = model<number>(0);\r\n\r\n /** Query all child TailwindTab components */\r\n readonly tabs = contentChildren(TailwindTab);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const allTabs = this.tabs();\r\n const idx = this.activeIndex();\r\n allTabs.forEach((tab, i) => tab.isActive.set(i === idx));\r\n });\r\n }\r\n\r\n selectTab(index: number): void {\r\n this.activeIndex.set(index);\r\n }\r\n}\r\n","<!-- Tab Headers -->\n<div class=\"border-b border-surface-200\" role=\"tablist\" [attr.aria-label]=\"ariaLabel()\">\n <nav class=\"flex -mb-px gap-1\" [class.overflow-x-auto]=\"scrollable()\">\n @for (tab of tabs(); track $index; let i = $index) {\n <button\n type=\"button\"\n role=\"tab\"\n [attr.id]=\"tab.id() ? 'tab-' + tab.id() : null\"\n [attr.aria-selected]=\"activeIndex() === i\"\n [attr.aria-controls]=\"tab.id() ? tab.id() : null\"\n [disabled]=\"tab.disabled()\"\n class=\"group relative px-4 py-2.5 text-sm font-medium whitespace-nowrap transition-colors duration-150 cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500/30 focus-visible:rounded-t-lg\"\n [class.text-primary-600]=\"activeIndex() === i\"\n [class.text-surface-500]=\"activeIndex() !== i\"\n [class.hover:text-surface-700]=\"activeIndex() !== i && !tab.disabled()\"\n [class.opacity-50]=\"tab.disabled()\"\n [class.cursor-not-allowed]=\"tab.disabled()\"\n (click)=\"!tab.disabled() && selectTab(i)\">\n {{ tab.label() }}\n <!-- Active indicator -->\n <span\n class=\"absolute bottom-0 left-0 right-0 h-0.5 rounded-full transition-all duration-200\"\n [class.bg-primary-600]=\"activeIndex() === i\"\n [class.scale-x-100]=\"activeIndex() === i\"\n [class.scale-x-0]=\"activeIndex() !== i\"></span>\n </button>\n }\n </nav>\n</div>\n\n<!-- Tab Content -->\n<div class=\"pt-4\">\n <ng-content />\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSeverity, TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-progress-bar',\r\n templateUrl: './progress-bar.component.html',\r\n styleUrl: './progress-bar.component.scss'\r\n})\r\nexport class TailwindProgressBar extends TailwindComponent {\r\n /** Current value (0-100) */\r\n readonly value = input<number>(0);\r\n /** Label text */\r\n readonly label = input<string>('');\r\n /** Show the label row */\r\n readonly showLabel = input<boolean>(true);\r\n /** Show percentage value */\r\n readonly showValue = input<boolean>(true);\r\n /** Color variant */\r\n readonly variant = input<TailwindSeverity | 'primary'>('primary');\r\n /** Size variant */\r\n readonly size = input<TailwindSize>('md');\r\n /** Indeterminate mode (animated) */\r\n readonly indeterminate = input<boolean>(false);\r\n /** Whether to use striped pattern */\r\n readonly striped = input<boolean>(false);\r\n\r\n readonly clampedValue = computed(() => Math.max(0, Math.min(100, this.value())));\r\n\r\n readonly trackClasses = computed(() => {\r\n const sizeMap: Record<TailwindSize, string> = {\r\n xs: 'h-1',\r\n sm: 'h-1.5',\r\n md: 'h-2.5',\r\n lg: 'h-4',\r\n xl: 'h-5'\r\n };\r\n\r\n return `w-full bg-surface-200 rounded-full overflow-hidden ${sizeMap[this.size()]}`;\r\n });\r\n\r\n readonly barClasses = computed(() => {\r\n const variantMap: Record<string, string> = {\r\n primary: 'bg-primary-600',\r\n success: 'bg-success-600',\r\n warning: 'bg-warning-500',\r\n danger: 'bg-danger-600',\r\n info: 'bg-info-600'\r\n };\r\n\r\n const base = [\r\n 'h-full rounded-full transition-all duration-300 ease-out',\r\n variantMap[this.variant()] ?? variantMap['primary']\r\n ];\r\n\r\n if (this.indeterminate()) {\r\n base.push('tailwind-progress-indeterminate');\r\n }\r\n\r\n if (this.striped()) {\r\n base.push('bg-gradient-to-r from-transparent via-white/20 to-transparent bg-[length:1rem_100%]');\r\n }\r\n\r\n return base.join(' ');\r\n });\r\n}\r\n","<div class=\"w-full\">\n @if (showLabel()) {\n <div class=\"flex justify-between items-center mb-1.5\">\n @if (label()) {\n <span class=\"text-sm font-medium text-surface-700\">{{ label() }}</span>\n }\n @if (showValue()) {\n <span class=\"text-sm font-medium text-surface-600\">{{ clampedValue() }}%</span>\n }\n </div>\n }\n\n <div\n [class]=\"trackClasses()\"\n role=\"progressbar\"\n [attr.aria-valuenow]=\"clampedValue()\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"100\"\n [attr.aria-label]=\"label() || 'Progress'\">\n <div [class]=\"barClasses()\" [style.width.%]=\"indeterminate() ? 100 : clampedValue()\"></div>\n </div>\n</div>\n","import {\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n input,\r\n OnDestroy,\r\n OnInit,\r\n output,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TailwindMenuItem } from '../../models';\r\n\r\n/** Matches previous `min-w-48` floor when the anchor is narrower. */\r\nconst MIN_PANEL_WIDTH_PX = 192;\r\n\r\n@Component({\r\n selector: 'tailwind-menu',\r\n templateUrl: './menu.component.html',\r\n styleUrl: './menu.component.scss'\r\n})\r\nexport class TailwindMenu extends TailwindComponent implements OnDestroy, OnInit {\r\n private openScheduleId: ReturnType<typeof setTimeout> | undefined;\r\n private anchorEl: HTMLElement | null = null;\r\n\r\n private readonly onScrollReposition = (): void => {\r\n if (this.isOpen()) {\r\n this.updatePanelPosition();\r\n }\r\n };\r\n\r\n readonly items = input<TailwindMenuItem[]>([]);\r\n readonly align = input<'left' | 'right'>('left');\r\n\r\n readonly onSelect = output<TailwindMenuItem>();\r\n\r\n readonly isOpen = signal(false);\r\n\r\n /** Popover box in coordinates relative to the `position: fixed` containing block (often viewport, not under transformed Docs wrappers). */\r\n readonly panelLayout = signal<{\r\n top: number;\r\n left?: number;\r\n right?: number;\r\n minWidth: number;\r\n } | null>(null);\r\n\r\n private readonly panelRef = viewChild<ElementRef<HTMLElement>>('panel');\r\n\r\n ngOnInit(): void {\r\n document.addEventListener('scroll', this.onScrollReposition, true);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n document.removeEventListener('scroll', this.onScrollReposition, true);\r\n if (this.openScheduleId != null) {\r\n clearTimeout(this.openScheduleId);\r\n }\r\n }\r\n\r\n /**\r\n * Opens the menu under `anchor` (toggle element).\r\n * Pass the click event from the button, e.g. `(click)=\"menu.open($event)\"`, or an `HTMLElement`.\r\n * After the first open with an anchor, `open()` without arguments reuses the last anchor.\r\n *\r\n * Opening is deferred one macrotask so the same `click` is not closed immediately by `document:click`.\r\n */\r\n open(anchor?: Event | HTMLElement): void {\r\n if (anchor !== undefined) {\r\n this.storeAnchor(anchor);\r\n }\r\n if (!this.anchorEl) {\r\n return;\r\n }\r\n if (this.isOpen()) {\r\n return;\r\n }\r\n this.scheduleOpen();\r\n }\r\n\r\n close(): void {\r\n this.isOpen.set(false);\r\n this.panelLayout.set(null);\r\n }\r\n\r\n toggle(anchor?: Event | HTMLElement): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n return;\r\n }\r\n if (anchor !== undefined) {\r\n this.storeAnchor(anchor);\r\n }\r\n if (!this.anchorEl) {\r\n return;\r\n }\r\n this.scheduleOpen();\r\n }\r\n\r\n private storeAnchor(anchor: Event | HTMLElement): void {\r\n if (anchor instanceof HTMLElement) {\r\n this.anchorEl = anchor;\r\n return;\r\n }\r\n const target = anchor.currentTarget;\r\n if (target instanceof HTMLElement) {\r\n this.anchorEl = target;\r\n }\r\n }\r\n\r\n private scheduleOpen(): void {\r\n if (this.openScheduleId != null) {\r\n clearTimeout(this.openScheduleId);\r\n }\r\n this.openScheduleId = setTimeout(() => {\r\n this.openScheduleId = undefined;\r\n this.isOpen.set(true);\r\n this.updatePanelPosition();\r\n requestAnimationFrame(() => this.updatePanelPosition());\r\n }, 0);\r\n }\r\n\r\n private updatePanelPosition(): void {\r\n const anchor = this.anchorEl;\r\n if (!anchor) {\r\n this.panelLayout.set(null);\r\n return;\r\n }\r\n const panelEl = this.panelRef()?.nativeElement;\r\n const cbRoot = panelEl\r\n ? this.getFixedPositioningContainingBlock(panelEl)\r\n : this.getFixedPositioningContainingBlock(anchor);\r\n const cbRect = cbRoot.getBoundingClientRect();\r\n const rect = anchor.getBoundingClientRect();\r\n const minWidth = Math.max(rect.width, MIN_PANEL_WIDTH_PX);\r\n const top = rect.bottom - cbRect.top;\r\n if (this.align() === 'right') {\r\n this.panelLayout.set({\r\n top,\r\n right: cbRect.right - rect.right,\r\n minWidth\r\n });\r\n } else {\r\n this.panelLayout.set({\r\n top,\r\n left: rect.left - cbRect.left,\r\n minWidth\r\n });\r\n }\r\n }\r\n\r\n selectItem(item: TailwindMenuItem): void {\r\n if (!item.disabled) {\r\n this.onSelect.emit(item);\r\n this.close();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n onDocumentEscape(): void {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n this.close();\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: Event): void {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n const target = event.target as Node | null;\r\n if (!target) {\r\n return;\r\n }\r\n const panelEl = this.panelRef()?.nativeElement;\r\n const inPanel = panelEl?.contains(target) ?? false;\r\n const inAnchor = this.anchorEl?.contains(target) ?? false;\r\n if (!inPanel && !inAnchor) {\r\n this.close();\r\n }\r\n }\r\n\r\n @HostListener('window:resize')\r\n onWindowResize(): void {\r\n if (this.isOpen()) {\r\n this.updatePanelPosition();\r\n }\r\n }\r\n\r\n /** Ancestor that becomes the containing block for `position: fixed` (e.g. Storybook Docs wrappers with `transform`). */\r\n private createsFixedContainingBlock(el: HTMLElement): boolean {\r\n const s = getComputedStyle(el);\r\n if (s.transform && s.transform !== 'none') {\r\n return true;\r\n }\r\n if (s.perspective && s.perspective !== 'none') {\r\n return true;\r\n }\r\n if (s.filter && s.filter !== 'none') {\r\n return true;\r\n }\r\n const contain = s.contain;\r\n if (contain && contain !== 'none' && contain.split(/\\s+/).includes('paint')) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private getFixedPositioningContainingBlock(from: HTMLElement): HTMLElement {\r\n for (let p = from.parentElement; p; p = p.parentElement) {\r\n if (this.createsFixedContainingBlock(p)) {\r\n return p;\r\n }\r\n }\r\n return document.documentElement;\r\n }\r\n}\r\n","@if (isOpen() && panelLayout(); as layout) {\n <div\n #panel\n role=\"menu\"\n class=\"fixed z-1000 bg-white rounded-xl border border-surface-200 shadow-lg py-1 animate-in fade-in slide-in-from-top-1\"\n [style.top.px]=\"layout.top\"\n [style.left.px]=\"layout.left ?? null\"\n [style.right.px]=\"layout.right ?? null\"\n [style.minWidth.px]=\"layout.minWidth\">\n @for (item of items(); track $index) {\n @if (item.divider) {\n <hr class=\"my-1 border-surface-100\" />\n } @else {\n <button\n type=\"button\"\n role=\"menuitem\"\n [disabled]=\"!!item.disabled\"\n class=\"w-full text-left px-4 py-2 text-sm text-surface-700 hover:bg-surface-50 hover:text-surface-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer\"\n (click)=\"selectItem(item)\">\n {{ item.label }}\n </button>\n }\n }\n </div>\n}\n","import { Component, computed, input, output, signal } from '@angular/core';\r\nimport { TailwindPosition } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-drawer',\r\n templateUrl: './drawer.component.html',\r\n styleUrl: './drawer.component.scss'\r\n})\r\nexport class TailwindDrawer extends TailwindComponent {\r\n /** Drawer title */\r\n readonly title = input<string>('');\r\n /** Position (left or right) */\r\n readonly position = input<'left' | 'right'>('right');\r\n /** Width class */\r\n readonly width = input<string>('max-w-md');\r\n /** Whether clicking backdrop closes */\r\n readonly closeOnBackdrop = input<boolean>(true);\r\n\r\n /** Open/close state */\r\n readonly isOpen = signal(false);\r\n /** Visibility for animation */\r\n readonly isVisible = signal(false);\r\n\r\n /** Emitted when closed */\r\n readonly onClose = output<void>();\r\n\r\n readonly panelClasses = computed(() => {\r\n const base = [\r\n 'fixed top-0 bottom-0 z-[1050]',\r\n 'flex flex-col w-full bg-white shadow-2xl',\r\n 'transition-transform duration-300 ease-in-out',\r\n this.width()\r\n ];\r\n\r\n const pos = this.position();\r\n\r\n if (pos === 'right') {\r\n base.push('right-0');\r\n base.push(this.isVisible() ? 'translate-x-0' : 'translate-x-full');\r\n } else {\r\n base.push('left-0');\r\n base.push(this.isVisible() ? 'translate-x-0' : '-translate-x-full');\r\n }\r\n\r\n return base.join(' ');\r\n });\r\n\r\n open(): void {\r\n this.isOpen.set(true);\r\n requestAnimationFrame(() => {\r\n this.isVisible.set(true);\r\n });\r\n }\r\n\r\n close(): void {\r\n this.isVisible.set(false);\r\n setTimeout(() => {\r\n this.isOpen.set(false);\r\n this.onClose.emit();\r\n }, 300);\r\n }\r\n}\r\n","@if (isOpen()) {\n <!-- Backdrop -->\n <div\n class=\"fixed inset-0 bg-black/40 backdrop-blur-sm z-1040 transition-opacity duration-300\"\n [class.opacity-100]=\"isVisible()\"\n [class.opacity-0]=\"!isVisible()\"\n (click)=\"closeOnBackdrop() && close()\"\n aria-hidden=\"true\"></div>\n\n <!-- Drawer Panel -->\n <div [class]=\"panelClasses()\" role=\"dialog\" [attr.aria-modal]=\"true\" [attr.aria-label]=\"title()\">\n <!-- Header -->\n <div class=\"flex items-center justify-between px-6 py-4 border-b border-surface-200\">\n @if (title()) {\n <h2 class=\"text-lg font-semibold text-surface-900\">{{ title() }}</h2>\n }\n <button\n type=\"button\"\n class=\"p-1.5 -m-1.5 rounded-lg text-surface-400 hover:text-surface-600 hover:bg-surface-100 transition-colors ml-auto cursor-pointer\"\n aria-label=\"Close\"\n (click)=\"close()\">\n <svg class=\"w-5 h-5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n </div>\n\n <!-- Body -->\n <div class=\"flex-1 overflow-y-auto px-6 py-5\">\n <ng-content />\n </div>\n\n <!-- Footer -->\n <ng-content select=\"tailwind-drawer-footer\" />\n </div>\n}\n","import { Component, input } from '@angular/core';\r\nimport { TailwindBreadcrumbItem } from './interfaces/breadcrumb-item.interface';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\nexport type { TailwindBreadcrumbItem };\r\n\r\n@Component({\r\n selector: 'tailwind-breadcrumb',\r\n templateUrl: './breadcrumb.component.html',\r\n styleUrl: './breadcrumb.component.scss'\r\n})\r\nexport class TailwindBreadcrumb extends TailwindComponent {\r\n readonly items = input<TailwindBreadcrumbItem[]>([]);\r\n readonly ariaLabel = input<string>('Breadcrumb');\r\n}\r\n","<nav [attr.aria-label]=\"ariaLabel()\" class=\"flex\">\n <ol class=\"inline-flex items-center gap-1.5 text-sm\">\n @for (item of items(); track item.label; let last = $last; let first = $first) {\n <li class=\"inline-flex items-center\">\n @if (!first) {\n <span class=\"mx-1.5 text-surface-400\" aria-hidden=\"true\">\n <svg class=\"w-3.5 h-3.5\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </span>\n }\n @if (item.href && !last) {\n <a [href]=\"item.href\" class=\"text-surface-500 hover:text-primary-600 transition-colors font-medium\">{{\n item.label\n }}</a>\n } @else {\n <span\n class=\"font-medium\"\n [class.text-surface-900]=\"last\"\n [class.text-surface-500]=\"!last\"\n [attr.aria-current]=\"last ? 'page' : null\"\n >{{ item.label }}</span\n >\n }\n </li>\n }\n </ol>\n</nav>\n","import { Component, computed, input, model, output } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { Pagination } from './interfaces/pagination.interface';\r\nexport type { Pagination };\r\n\r\n@Component({\r\n selector: 'tailwind-pagination',\r\n templateUrl: './pagination.component.html',\r\n styleUrl: './pagination.component.scss'\r\n})\r\nexport class TailwindPagination extends TailwindComponent {\r\n readonly totalItems = input.required<Pagination['totalItems']>();\r\n readonly pageSize = input<Pagination['pageSize']>(10);\r\n readonly currentPage = model<Pagination['currentPage']>(1);\r\n readonly ariaLabel = input<Pagination['ariaLabel']>('Pagination');\r\n readonly summary = input<Pagination['summary']>('Showing {start}-{end} of {total}');\r\n\r\n readonly onPageChange = output<number>();\r\n\r\n readonly totalPages = computed(() => Math.ceil(this.totalItems() / this.pageSize()));\r\n\r\n readonly visiblePages = computed(() => {\r\n const total = this.totalPages();\r\n return Array.from({ length: total }, (_, i) => i + 1);\r\n });\r\n\r\n readonly summaryText = computed(() => {\r\n const total = this.totalItems();\r\n if (total === 0) return this.summary().replace('{start}', '0').replace('{end}', '0').replace('{total}', '0');\r\n const start = (this.currentPage() - 1) * this.pageSize() + 1;\r\n const end = Math.min(this.currentPage() * this.pageSize(), total);\r\n return this.summary()\r\n .replace('{start}', start.toString())\r\n .replace('{end}', end.toString())\r\n .replace('{total}', total.toString());\r\n });\r\n\r\n goToPage(page: number): void {\r\n if (page >= 1 && page <= this.totalPages()) {\r\n this.currentPage.set(page);\r\n this.onPageChange.emit(page);\r\n }\r\n }\r\n}\r\n","<div class=\"flex flex-wrap items-center justify-between gap-4 w-full\">\n @if (summary()) {\n <span class=\"text-sm text-surface-700 dark:text-surface-300\">\n {{ summaryText() }}\n </span>\n }\n\n <nav [attr.aria-label]=\"ariaLabel()\" class=\"flex items-center gap-1\">\n <!-- Previous -->\n <button\n type=\"button\"\n [disabled]=\"currentPage() <= 1\"\n (click)=\"goToPage(currentPage() - 1)\"\n class=\"p-2 rounded-lg text-surface-500 hover:bg-surface-100 disabled:opacity-40 disabled:cursor-not-allowed transition-colors cursor-pointer\">\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n\n @for (page of visiblePages(); track page) {\n <button\n type=\"button\"\n (click)=\"goToPage(page)\"\n class=\"min-w-8 h-8 px-2 rounded-lg text-sm font-medium transition-colors cursor-pointer\"\n [class.bg-primary-600]=\"page === currentPage()\"\n [class.text-white]=\"page === currentPage()\"\n [class.text-surface-600]=\"page !== currentPage()\"\n [class.hover:bg-surface-100]=\"page !== currentPage()\">\n {{ page }}\n </button>\n }\n\n <!-- Next -->\n <button\n type=\"button\"\n [disabled]=\"currentPage() >= totalPages()\"\n (click)=\"goToPage(currentPage() + 1)\"\n class=\"p-2 rounded-lg text-surface-500 hover:bg-surface-100 disabled:opacity-40 disabled:cursor-not-allowed transition-colors cursor-pointer\">\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n </nav>\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-tag',\r\n templateUrl: './tag.component.html',\r\n styleUrl: './tag.component.scss'\r\n})\r\nexport class TailwindTag extends TailwindComponent {\r\n readonly variant = input<TailwindSeverity | 'neutral' | 'primary'>('neutral');\r\n\r\n readonly computedClasses = computed(() => {\r\n const variantMap: Record<string, string> = {\r\n primary: 'bg-primary-600 text-white',\r\n neutral: 'bg-surface-600 text-white',\r\n success: 'bg-success-600 text-white',\r\n warning: 'bg-warning-500 text-surface-900',\r\n danger: 'bg-danger-600 text-white',\r\n info: 'bg-info-600 text-white'\r\n };\r\n return `inline-flex items-center text-[11px] font-semibold uppercase tracking-wider px-2 py-0.5 rounded ${variantMap[this.variant()]}`;\r\n });\r\n}\r\n","<span [class]=\"computedClasses()\"><ng-content /></span>\n","import { Component, computed, effect, input, output, signal } from '@angular/core';\r\nimport { Pagination, TailwindPagination } from '../pagination/pagination.component';\r\nimport { TailwindTableColumn } from './interfaces/table-column.interface';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\nexport type { TailwindTableColumn };\r\n\r\n@Component({\r\n selector: 'tailwind-table',\r\n imports: [TailwindPagination],\r\n templateUrl: './table.component.html',\r\n styleUrl: './table.component.scss'\r\n})\r\nexport class TailwindTable extends TailwindComponent {\r\n readonly columns = input<TailwindTableColumn[]>([]);\r\n readonly data = input<Record<string, any>[]>([]);\r\n readonly selectable = input<boolean>(false);\r\n readonly striped = input<boolean>(false);\r\n readonly loading = input<boolean>(false);\r\n readonly emptyMessage = input<string>('No data available');\r\n\r\n // --- Pagination Inputs ---\r\n readonly paginated = input<boolean>(true);\r\n readonly pagination = input<Pagination>();\r\n\r\n // --- Outputs ---\r\n readonly onSortChange = output<{ key: string; direction: 'asc' | 'desc' }>();\r\n readonly onSelectionChange = output<Set<number>>();\r\n\r\n // --- Internal State ---\r\n readonly sortKey = signal<string>('');\r\n readonly sortDir = signal<'asc' | 'desc'>('asc');\r\n readonly selectedRows = signal<Set<number>>(new Set());\r\n readonly currentPage = signal<number>(1);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const fromInput = this.pagination()?.currentPage;\r\n if (fromInput != null && fromInput >= 1) {\r\n this.currentPage.set(fromInput);\r\n }\r\n });\r\n }\r\n\r\n // --- Computed ---\r\n readonly sortedData = computed(() => {\r\n let rows = [...this.data()];\r\n const key = this.sortKey();\r\n if (key) {\r\n const dir = this.sortDir() === 'asc' ? 1 : -1;\r\n rows.sort((a, b) => {\r\n const va = a[key],\r\n vb = b[key];\r\n if (va < vb) return -dir;\r\n if (va > vb) return dir;\r\n return 0;\r\n });\r\n }\r\n return rows;\r\n });\r\n\r\n readonly displayedData = computed(() => {\r\n const rows = this.sortedData();\r\n if (!this.paginated()) return rows;\r\n const size = this.pagination()?.pageSize ?? 10;\r\n const page = this.currentPage();\r\n return rows.slice((page - 1) * size, page * size);\r\n });\r\n\r\n // --- Methods ---\r\n sort(key: string): void {\r\n if (this.sortKey() === key) {\r\n this.sortDir.update(d => (d === 'asc' ? 'desc' : 'asc'));\r\n } else {\r\n this.sortKey.set(key);\r\n this.sortDir.set('asc');\r\n }\r\n this.currentPage.set(1); // Reset to first page on sort\r\n this.onSortChange.emit({ key: this.sortKey(), direction: this.sortDir() });\r\n }\r\n\r\n toggleSelection(index: number): void {\r\n this.selectedRows.update(s => {\r\n const next = new Set(s);\r\n if (next.has(index)) next.delete(index);\r\n else next.add(index);\r\n return next;\r\n });\r\n this.onSelectionChange.emit(this.selectedRows());\r\n }\r\n}\r\n","<div class=\"w-full overflow-x-auto rounded-xl border border-surface-200\">\n <!-- Loading overlay -->\n @if (loading()) {\n <div class=\"flex items-center justify-center py-16 text-surface-400\">\n <svg class=\"animate-spin w-6 h-6 mr-2\" 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\" />\n <path class=\"opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8v8z\" />\n </svg>\n Loading...\n </div>\n } @else {\n <table class=\"w-full text-sm text-left\">\n <thead class=\"bg-surface-50 border-b border-surface-200\">\n <tr>\n @for (col of columns(); track col.key) {\n <th\n scope=\"col\"\n class=\"px-4 py-3 font-semibold text-surface-700 whitespace-nowrap\"\n [class.text-center]=\"col.align === 'center'\"\n [class.text-right]=\"col.align === 'right'\"\n [style.width]=\"col.width || 'auto'\">\n @if (col.sortable) {\n <button\n type=\"button\"\n (click)=\"sort(col.key)\"\n class=\"inline-flex items-center gap-1 cursor-pointer hover:text-surface-900 transition-colors\">\n {{ col.label }}\n <svg\n class=\"w-3.5 h-3.5 text-surface-400\"\n [class.text-primary-600]=\"sortKey() === col.key\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n @if (sortKey() === col.key && sortDir() === 'asc') {\n <path\n fill-rule=\"evenodd\"\n d=\"M10 17a.75.75 0 01-.75-.75V5.612L5.29 9.77a.75.75 0 01-1.08-1.04l5.25-5.5a.75.75 0 011.08 0l5.25 5.5a.75.75 0 11-1.08 1.04l-3.96-4.158V16.25A.75.75 0 0110 17z\"\n clip-rule=\"evenodd\" />\n } @else {\n <path\n fill-rule=\"evenodd\"\n d=\"M10 3a.75.75 0 01.75.75v10.638l3.96-4.158a.75.75 0 111.08 1.04l-5.25 5.5a.75.75 0 01-1.08 0l-5.25-5.5a.75.75 0 111.08-1.04l3.96 4.158V3.75A.75.75 0 0110 3z\"\n clip-rule=\"evenodd\" />\n }\n </svg>\n </button>\n } @else {\n {{ col.label }}\n }\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"divide-y divide-surface-100\">\n @for (row of displayedData(); track $index) {\n <tr\n class=\"hover:bg-surface-50/50 transition-colors\"\n [class.bg-surface-50]=\"striped() && $index % 2 === 1\"\n [class.bg-primary-50/30]=\"selectedRows().has($index)\"\n [class.cursor-pointer]=\"selectable()\"\n (click)=\"selectable() && toggleSelection($index)\">\n @for (col of columns(); track col.key) {\n <td\n class=\"px-4 py-3 text-surface-700\"\n [class.text-center]=\"col.align === 'center'\"\n [class.text-right]=\"col.align === 'right'\">\n {{ row[col.key] }}\n </td>\n }\n </tr>\n } @empty {\n <tr>\n <td [attr.colspan]=\"columns().length\" class=\"px-4 py-8 text-center text-surface-400\">\n {{ emptyMessage() }}\n </td>\n </tr>\n }\n </tbody>\n </table>\n\n @if (paginated() && data().length > 0) {\n <div class=\"px-4 py-3 border-t border-surface-200 bg-white\">\n <tailwind-pagination\n [totalItems]=\"pagination()?.totalItems ?? data().length\"\n [pageSize]=\"pagination()?.pageSize ?? 10\"\n [currentPage]=\"currentPage()\"\n (onPageChange)=\"currentPage.set($event)\"\n [ariaLabel]=\"pagination()?.ariaLabel ?? 'Pagination'\"\n [summary]=\"pagination()?.summary ?? 'Showing {start}-{end} of {total}'\">\n </tailwind-pagination>\n </div>\n }\n }\n</div>\n","import { Component, computed, forwardRef, inject, input, model, signal } from '@angular/core';\r\nimport { formatDate } from '@angular/common';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\ntype Lang = 'it' | 'en';\r\n\r\nconst I18N: Record<Lang, { months: string[]; weekDays: string[]; today: string; confirm: string; placeholder: string }> = {\r\n it: {\r\n months: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],\r\n weekDays: ['Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa', 'Do'],\r\n today: 'Oggi',\r\n confirm: 'Applica',\r\n placeholder: 'Seleziona data'\r\n },\r\n en: {\r\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n weekDays: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\r\n today: 'Today',\r\n confirm: 'Apply',\r\n placeholder: 'Select date'\r\n }\r\n};\r\n\r\n@Component({\r\n selector: 'tailwind-date-picker',\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindDatePicker), multi: true }],\r\n templateUrl: './date-picker.component.html',\r\n styleUrl: './date-picker.component.scss'\r\n})\r\nexport class TailwindDatePicker extends TailwindComponent implements ControlValueAccessor {\r\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\r\n\r\n protected readonly i18n = I18N[this.lang];\r\n protected readonly weekDays = this.i18n.weekDays;\r\n\r\n readonly label = input<string>('');\r\n readonly placeholder = input<string | undefined>(undefined);\r\n readonly format = input<string>('dd/MM/yyyy');\r\n\r\n readonly value = model<Date | null>(null);\r\n /** Working selection while the panel is open; committed on Apply. */\r\n readonly draft = signal<Date | null>(null);\r\n\r\n readonly isDisabled = signal(false);\r\n readonly showCalendar = signal(false);\r\n readonly viewMonth = signal(new Date().getMonth());\r\n readonly viewYear = signal(new Date().getFullYear());\r\n\r\n readonly effectivePlaceholder = computed(() => {\r\n const p = this.placeholder();\r\n return p?.trim() ? p : this.i18n.placeholder;\r\n });\r\n\r\n readonly displayValue = computed(() => {\r\n const d = this.value();\r\n if (!d) return '';\r\n const fmt = this.format();\r\n try {\r\n return formatDate(d, fmt, this.lang === 'it' ? 'it-IT' : 'en-US');\r\n } catch {\r\n return formatDate(d, fmt, 'en-US');\r\n }\r\n });\r\n\r\n readonly monthYearLabel = computed(() =>\r\n `${this.i18n.months[this.viewMonth()]} ${this.viewYear()}`\r\n );\r\n\r\n readonly calendarDays = computed(() => {\r\n const y = this.viewYear(), m = this.viewMonth();\r\n const offset = (new Date(y, m, 1).getDay() + 6) % 7; // Mon = 0\r\n const total = new Date(y, m + 1, 0).getDate();\r\n const days: number[] = Array(offset).fill(0);\r\n for (let i = 1; i <= total; i++) days.push(i);\r\n return days;\r\n });\r\n\r\n private onChange: (v: Date | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(v: Date | null): void {\r\n this.value.set(v ?? null);\r\n if (v && !isNaN(v.getTime())) {\r\n this.viewMonth.set(v.getMonth());\r\n this.viewYear.set(v.getFullYear());\r\n }\r\n }\r\n\r\n registerOnChange(fn: (v: Date | null) => void): void { this.onChange = fn; }\r\n registerOnTouched(fn: () => void): void { this.onTouched = fn; }\r\n setDisabledState(d: boolean): void { this.isDisabled.set(d); }\r\n\r\n toggleCalendar(): void {\r\n if (this.isDisabled()) return;\r\n if (!this.showCalendar()) {\r\n this.draft.set(this.value());\r\n const ref = this.value() ?? new Date();\r\n this.viewMonth.set(ref.getMonth());\r\n this.viewYear.set(ref.getFullYear());\r\n }\r\n this.showCalendar.update(v => !v);\r\n }\r\n\r\n apply(): void {\r\n const d = this.draft();\r\n this.value.set(d);\r\n this.onChange(d);\r\n this.onTouched();\r\n this.showCalendar.set(false);\r\n }\r\n\r\n prevMonth(): void {\r\n if (this.viewMonth() === 0) { this.viewMonth.set(11); this.viewYear.update(y => y - 1); }\r\n else { this.viewMonth.update(m => m - 1); }\r\n }\r\n\r\n nextMonth(): void {\r\n if (this.viewMonth() === 11) { this.viewMonth.set(0); this.viewYear.update(y => y + 1); }\r\n else { this.viewMonth.update(m => m + 1); }\r\n }\r\n\r\n selectDay(day: number): void {\r\n this.draft.set(new Date(this.viewYear(), this.viewMonth(), day));\r\n }\r\n\r\n isSelected(day: number): boolean {\r\n const d = this.draft();\r\n if (!d) return false;\r\n return d.getFullYear() === this.viewYear() && d.getMonth() === this.viewMonth() && d.getDate() === day;\r\n }\r\n\r\n isToday(day: number): boolean {\r\n const t = new Date();\r\n return t.getFullYear() === this.viewYear() && t.getMonth() === this.viewMonth() && t.getDate() === day;\r\n }\r\n\r\n goToToday(): void {\r\n const t = new Date();\r\n this.viewMonth.set(t.getMonth());\r\n this.viewYear.set(t.getFullYear());\r\n this.selectDay(t.getDate());\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-surface-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"effectivePlaceholder()\"\n class=\"block w-full bg-white border border-surface-300 rounded-md px-3 py-2 text-sm text-surface-900 placeholder:text-surface-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-surface-50 disabled:cursor-not-allowed pr-10\"\n [disabled]=\"isDisabled()\"\n (click)=\"toggleCalendar()\" />\n <svg\n class=\"absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 text-surface-400 pointer-events-none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M5.75 2a.75.75 0 01.75.75V4h7V2.75a.75.75 0 011.5 0V4h.25A2.75 2.75 0 0118 6.75v8.5A2.75 2.75 0 0115.25 18H4.75A2.75 2.75 0 012 15.25v-8.5A2.75 2.75 0 014.75 4H5V2.75A.75.75 0 015.75 2zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75z\"\n clip-rule=\"evenodd\" />\n </svg>\n </div>\n\n @if (showCalendar()) {\n <div class=\"absolute z-popover mt-1 bg-white rounded-xl border border-surface-200 shadow-xl p-4 w-72\">\n <!-- Month/Year nav -->\n <div class=\"flex items-center justify-between mb-3\">\n <button\n type=\"button\"\n (click)=\"prevMonth()\"\n class=\"p-1 rounded-lg hover:bg-surface-100 transition-colors cursor-pointer\">\n <svg\n class=\"w-4 h-4 text-surface-600\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n <span class=\"text-sm font-semibold text-surface-800\">{{ monthYearLabel() }}</span>\n <button\n type=\"button\"\n (click)=\"nextMonth()\"\n class=\"p-1 rounded-lg hover:bg-surface-100 transition-colors cursor-pointer\">\n <svg\n class=\"w-4 h-4 text-surface-600\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n </div>\n <!-- Weekdays -->\n <div class=\"grid grid-cols-7 gap-0 mb-1\">\n @for (day of weekDays; track $index) {\n <div class=\"text-center text-xs font-medium text-surface-400 py-1\">{{ day }}</div>\n }\n </div>\n <!-- Days -->\n <div class=\"grid grid-cols-7 gap-0\">\n @for (day of calendarDays(); track $index) {\n @if (day === 0) {\n <div></div>\n } @else {\n <button\n type=\"button\"\n (click)=\"selectDay(day)\"\n class=\"h-8 w-8 mx-auto rounded-lg text-sm transition-colors cursor-pointer hover:bg-surface-100\"\n [class.bg-primary-600]=\"isSelected(day)\"\n [class.text-white]=\"isSelected(day)\"\n [class.hover:bg-primary-700]=\"isSelected(day)\"\n [class.text-surface-700]=\"!isSelected(day) && !isToday(day)\"\n [class.font-semibold]=\"isToday(day)\"\n [class.text-primary-600]=\"isToday(day) && !isSelected(day)\">\n {{ day }}\n </button>\n }\n }\n </div>\n <div class=\"mt-2 pt-2 border-t border-surface-100 flex items-center justify-between gap-2\">\n <button\n type=\"button\"\n (click)=\"goToToday()\"\n [disabled]=\"isDisabled()\"\n class=\"text-xs text-primary-600 font-medium hover:underline cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed disabled:no-underline\">\n {{ i18n.today }}\n </button>\n <button\n type=\"button\"\n (click)=\"apply()\"\n [disabled]=\"isDisabled() || !draft()\"\n class=\"px-3 py-1.5 text-xs font-medium rounded-md bg-primary-600 text-white hover:bg-primary-700 cursor-pointer disabled:bg-surface-200 disabled:text-surface-500 disabled:cursor-not-allowed\">\n {{ i18n.confirm }}\n </button>\n </div>\n </div>\n }\n</div>\n","import { Component, computed, forwardRef, inject, input, model, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\ntype Lang = 'it' | 'en';\r\ntype TimeDraft = { h: number; m: number };\r\n\r\nconst I18N: Record<Lang, { placeholder: string; now: string; apply: string }> = {\r\n it: { placeholder: 'Seleziona ora', now: 'Adesso', apply: 'Applica' },\r\n en: { placeholder: 'Select time', now: 'Now', apply: 'Apply' }\r\n};\r\n\r\n@Component({\r\n selector: 'tailwind-time-picker',\r\n imports: [],\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindTimePicker), multi: true }],\r\n templateUrl: './time-picker.component.html',\r\n styleUrl: './time-picker.component.scss'\r\n})\r\nexport class TailwindTimePicker extends TailwindComponent implements ControlValueAccessor {\r\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\r\n\r\n protected readonly i18n = I18N[this.lang];\r\n protected readonly hours = Array.from({ length: 24 }, (_, i) => i);\r\n protected readonly minutes = Array.from({ length: 60 }, (_, i) => i);\r\n\r\n readonly label = input<string>('');\r\n readonly value = model<string>('');\r\n readonly isDisabled = signal(false);\r\n readonly showPanel = signal(false);\r\n readonly draft = signal<TimeDraft | null>(null);\r\n\r\n readonly displayValue = computed(() => this.value());\r\n\r\n private onChange: (v: string) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(v: string): void {\r\n this.value.set(v ?? '');\r\n }\r\n registerOnChange(fn: (v: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState(d: boolean): void {\r\n this.isDisabled.set(d);\r\n }\r\n\r\n togglePanel(): void {\r\n if (this.isDisabled()) return;\r\n const opening = !this.showPanel();\r\n if (opening) {\r\n const v = this.value();\r\n const parts = v ? v.split(':') : null;\r\n const now = new Date();\r\n this.draft.set({\r\n h: parts ? parseInt(parts[0], 10) || 0 : now.getHours(),\r\n m: parts ? parseInt(parts[1], 10) || 0 : now.getMinutes()\r\n });\r\n }\r\n this.showPanel.set(opening);\r\n }\r\n\r\n apply(): void {\r\n const d = this.draft();\r\n if (!d) return;\r\n const val = `${d.h.toString().padStart(2, '0')}:${d.m.toString().padStart(2, '0')}`;\r\n this.value.set(val);\r\n this.onChange(val);\r\n this.onTouched();\r\n this.showPanel.set(false);\r\n }\r\n\r\n goToNow(): void {\r\n const now = new Date();\r\n this.draft.set({ h: now.getHours(), m: now.getMinutes() });\r\n }\r\n\r\n onHourChange(e: Event): void {\r\n const cur = this.draft();\r\n if (!cur) return;\r\n this.draft.set({ ...cur, h: Number((e.target as HTMLSelectElement).value) });\r\n }\r\n\r\n onMinuteChange(e: Event): void {\r\n const cur = this.draft();\r\n if (!cur) return;\r\n this.draft.set({ ...cur, m: Number((e.target as HTMLSelectElement).value) });\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-surface-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"i18n.placeholder\"\n [disabled]=\"isDisabled()\"\n class=\"block w-full bg-white border border-surface-300 rounded-md px-3 py-2 text-sm text-surface-900 placeholder:text-surface-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-surface-50 disabled:cursor-not-allowed pr-10\"\n (click)=\"togglePanel()\" />\n <svg\n class=\"absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 text-surface-400 pointer-events-none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z\"\n clip-rule=\"evenodd\" />\n </svg>\n\n @if (showPanel()) {\n <div\n class=\"absolute left-0 top-full z-popover mt-1 w-52 rounded-xl border border-surface-200 bg-white p-4 shadow-xl\">\n <div class=\"flex items-center gap-2\">\n <select\n class=\"flex-1 min-w-0 block bg-white border border-surface-300 rounded-md px-2 py-1.5 text-sm text-surface-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-surface-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled()\"\n (change)=\"onHourChange($event)\">\n @for (h of hours; track h) {\n <option [value]=\"h\" [selected]=\"h === (draft()?.h ?? 0)\">\n {{ h.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n <span class=\"text-surface-400 text-sm shrink-0\">:</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-surface-300 rounded-md px-2 py-1.5 text-sm text-surface-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-surface-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled()\"\n (change)=\"onMinuteChange($event)\">\n @for (m of minutes; track m) {\n <option [value]=\"m\" [selected]=\"m === (draft()?.m ?? 0)\">\n {{ m.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n </div>\n <div class=\"mt-2 pt-2 border-t border-surface-100 flex items-center justify-between gap-2\">\n <button\n type=\"button\"\n (click)=\"goToNow()\"\n [disabled]=\"isDisabled()\"\n class=\"text-xs text-primary-600 font-medium hover:underline cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed disabled:no-underline\">\n {{ i18n.now }}\n </button>\n <button\n type=\"button\"\n (click)=\"apply()\"\n [disabled]=\"isDisabled()\"\n class=\"px-3 py-1.5 text-xs font-medium rounded-md bg-primary-600 text-white hover:bg-primary-700 cursor-pointer disabled:bg-surface-200 disabled:text-surface-500 disabled:cursor-not-allowed\">\n {{ i18n.apply }}\n </button>\n </div>\n </div>\n }\n </div>\n</div>\n","import { formatDate } from '@angular/common';\r\nimport { Component, computed, forwardRef, inject, input, signal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TAILWIND_DATETIME_LANGUAGE } from '../../tokens/tokens';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\ntype Lang = 'it' | 'en';\r\n\r\nconst I18N: Record<Lang, { months: string[]; weekDays: string[]; time: string; today: string; confirm: string; placeholder: string }> = {\r\n it: {\r\n months: ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'],\r\n weekDays: ['Lu', 'Ma', 'Me', 'Gi', 'Ve', 'Sa', 'Do'],\r\n time: 'Ora',\r\n today: 'Oggi',\r\n confirm: 'Applica',\r\n placeholder: 'Seleziona data e ora'\r\n },\r\n en: {\r\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n weekDays: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\r\n time: 'Time',\r\n today: 'Today',\r\n confirm: 'Apply',\r\n placeholder: 'Select date and time'\r\n }\r\n};\r\n\r\n@Component({\r\n selector: 'tailwind-datetime-picker',\r\n imports: [],\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => TailwindDateTimePicker), multi: true }],\r\n templateUrl: './datetime-picker.component.html',\r\n styleUrl: './datetime-picker.component.scss'\r\n})\r\nexport class TailwindDateTimePicker extends TailwindComponent implements ControlValueAccessor {\r\n private readonly lang: Lang = inject(TAILWIND_DATETIME_LANGUAGE, { optional: true }) ?? 'it';\r\n\r\n protected readonly i18n = I18N[this.lang];\r\n protected readonly weekDays = this.i18n.weekDays;\r\n protected readonly hours = Array.from({ length: 24 }, (_, i) => i);\r\n protected readonly minutes = Array.from({ length: 60 }, (_, i) => i);\r\n\r\n readonly label = input<string>('');\r\n readonly placeholder = input<string | undefined>(undefined);\r\n /** Angular [DatePipe](https://angular.dev/api/common/DatePipe) format string. */\r\n readonly format = input<string>('dd/MM/yyyy HH:mm');\r\n\r\n readonly selected = signal<Date | null>(null);\r\n readonly draft = signal<Date | null>(null);\r\n readonly isDisabled = signal(false);\r\n readonly showPanel = signal(false);\r\n readonly viewMonth = signal(new Date().getMonth());\r\n readonly viewYear = signal(new Date().getFullYear());\r\n\r\n readonly effectivePlaceholder = computed(() => {\r\n const p = this.placeholder();\r\n return p?.trim() ? p : this.i18n.placeholder;\r\n });\r\n\r\n readonly displayValue = computed(() => {\r\n const d = this.selected();\r\n if (!d) return '';\r\n // formatDate richiede registerLocaleData per locale non-EN: leggiamo format fuori dal try\r\n // per non richiamare signal dentro il catch (contesto reattivo non garantito dopo un throw).\r\n // Per i formati numerici (default dd/MM/yyyy HH:mm) il risultato è identico in ogni locale.\r\n const fmt = this.format();\r\n try {\r\n return formatDate(d, fmt, this.lang === 'it' ? 'it-IT' : 'en-US');\r\n } catch {\r\n return formatDate(d, fmt, 'en-US');\r\n }\r\n });\r\n\r\n readonly monthYearLabel = computed(() =>\r\n `${this.i18n.months[this.viewMonth()]} ${this.viewYear()}`\r\n );\r\n\r\n readonly calendarDays = computed(() => {\r\n const y = this.viewYear(), m = this.viewMonth();\r\n const offset = (new Date(y, m, 1).getDay() + 6) % 7; // Mon = 0\r\n const total = new Date(y, m + 1, 0).getDate();\r\n const days: number[] = Array(offset).fill(0);\r\n for (let i = 1; i <= total; i++) days.push(i);\r\n return days;\r\n });\r\n\r\n private onChange: (v: Date | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n writeValue(v: Date | null | undefined): void {\r\n const d = v ? new Date(v.getTime()) : null;\r\n this.selected.set(d);\r\n if (this.showPanel()) this.draft.set(d ? new Date(d.getTime()) : null);\r\n const ref = d ?? new Date();\r\n this.viewMonth.set(ref.getMonth());\r\n this.viewYear.set(ref.getFullYear());\r\n }\r\n\r\n registerOnChange(fn: (v: Date | null) => void): void { this.onChange = fn; }\r\n registerOnTouched(fn: () => void): void { this.onTouched = fn; }\r\n setDisabledState(disabled: boolean): void { this.isDisabled.set(disabled); }\r\n\r\n togglePanel(): void {\r\n if (this.isDisabled()) return;\r\n const opening = !this.showPanel();\r\n if (opening) {\r\n const s = this.selected();\r\n const ref = s ? new Date(s.getTime()) : this.todayNow();\r\n this.draft.set(ref);\r\n this.viewMonth.set(ref.getMonth());\r\n this.viewYear.set(ref.getFullYear());\r\n }\r\n this.showPanel.set(opening);\r\n }\r\n\r\n apply(): void {\r\n const d = this.draft();\r\n this.selected.set(d ? new Date(d.getTime()) : null);\r\n this.emitValue(this.selected());\r\n this.showPanel.set(false);\r\n }\r\n\r\n prevMonth(): void {\r\n if (this.viewMonth() === 0) { this.viewMonth.set(11); this.viewYear.update(y => y - 1); }\r\n else { this.viewMonth.update(m => m - 1); }\r\n }\r\n\r\n nextMonth(): void {\r\n if (this.viewMonth() === 11) { this.viewMonth.set(0); this.viewYear.update(y => y + 1); }\r\n else { this.viewMonth.update(m => m + 1); }\r\n }\r\n\r\n selectDay(day: number): void {\r\n const cur = this.draft();\r\n this.draft.set(new Date(this.viewYear(), this.viewMonth(), day, cur?.getHours() ?? 0, cur?.getMinutes() ?? 0, 0, 0));\r\n }\r\n\r\n isSelected(day: number): boolean {\r\n const v = this.draft();\r\n return !!v && v.getFullYear() === this.viewYear() && v.getMonth() === this.viewMonth() && v.getDate() === day;\r\n }\r\n\r\n isToday(day: number): boolean {\r\n const t = new Date();\r\n return t.getFullYear() === this.viewYear() && t.getMonth() === this.viewMonth() && t.getDate() === day;\r\n }\r\n\r\n goToToday(): void {\r\n const t = this.todayNow();\r\n this.viewMonth.set(t.getMonth());\r\n this.viewYear.set(t.getFullYear());\r\n this.draft.set(t);\r\n }\r\n\r\n onHourChange(e: Event): void {\r\n const cur = this.draft();\r\n if (!cur) return;\r\n const h = Number((e.target as HTMLSelectElement).value);\r\n this.draft.set(new Date(cur.getFullYear(), cur.getMonth(), cur.getDate(), h, cur.getMinutes(), 0, 0));\r\n }\r\n\r\n onMinuteChange(e: Event): void {\r\n const cur = this.draft();\r\n if (!cur) return;\r\n const min = Number((e.target as HTMLSelectElement).value);\r\n this.draft.set(new Date(cur.getFullYear(), cur.getMonth(), cur.getDate(), cur.getHours(), min, 0, 0));\r\n }\r\n\r\n private todayNow(): Date {\r\n const t = new Date();\r\n return new Date(t.getFullYear(), t.getMonth(), t.getDate(), t.getHours(), t.getMinutes(), 0, 0);\r\n }\r\n\r\n private emitValue(d: Date | null): void {\r\n this.onChange(d ? new Date(d.getTime()) : null);\r\n this.onTouched();\r\n }\r\n}\r\n","<div class=\"flex flex-col gap-1.5\">\n @if (label()) {\n <label [attr.for]=\"id() ? id() + '-inner' : null\" class=\"text-sm font-medium text-surface-700\">{{ label() }}</label>\n }\n <div class=\"relative\">\n <input\n [attr.id]=\"id() ? id() + '-inner' : null\"\n type=\"text\"\n readonly\n [value]=\"displayValue()\"\n [placeholder]=\"effectivePlaceholder()\"\n class=\"block w-full bg-white border border-surface-300 rounded-md px-3 py-2 text-sm text-surface-900 placeholder:text-surface-400 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 cursor-pointer disabled:bg-surface-50 disabled:cursor-not-allowed pr-10\"\n [disabled]=\"isDisabled()\"\n (click)=\"togglePanel()\" />\n <svg\n class=\"absolute right-3 top-1/2 -translate-y-1/2 w-4 h-4 text-surface-400 pointer-events-none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M5.75 2a.75.75 0 01.75.75V4h7V2.75a.75.75 0 011.5 0V4h.25A2.75 2.75 0 0118 6.75v8.5A2.75 2.75 0 0115.25 18H4.75A2.75 2.75 0 012 15.25v-8.5A2.75 2.75 0 014.75 4H5V2.75A.75.75 0 015.75 2zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75z\"\n clip-rule=\"evenodd\" />\n </svg>\n\n @if (showPanel()) {\n <div\n class=\"absolute left-0 top-full z-popover mt-1 w-80 max-w-full rounded-xl border border-surface-200 bg-white p-4 shadow-xl\">\n <div class=\"flex items-center justify-between mb-3\">\n <button\n type=\"button\"\n (click)=\"prevMonth()\"\n class=\"p-1 rounded-lg hover:bg-surface-100 transition-colors cursor-pointer\">\n <svg\n class=\"w-4 h-4 text-surface-600\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n <span class=\"text-sm font-semibold text-surface-800\">{{ monthYearLabel() }}</span>\n <button\n type=\"button\"\n (click)=\"nextMonth()\"\n class=\"p-1 rounded-lg hover:bg-surface-100 transition-colors cursor-pointer\">\n <svg\n class=\"w-4 h-4 text-surface-600\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\n clip-rule=\"evenodd\" />\n </svg>\n </button>\n </div>\n <div class=\"grid grid-cols-7 gap-0 mb-1\">\n @for (day of weekDays; track day) {\n <div class=\"text-center text-xs font-medium text-surface-400 py-1\">{{ day }}</div>\n }\n </div>\n <div class=\"grid grid-cols-7 gap-0\">\n @for (day of calendarDays(); track $index) {\n @if (day === 0) {\n <div></div>\n } @else {\n <button\n type=\"button\"\n (click)=\"selectDay(day)\"\n class=\"h-8 w-8 mx-auto rounded-lg text-sm transition-colors cursor-pointer hover:bg-surface-100\"\n [class.bg-primary-600]=\"isSelected(day)\"\n [class.text-white]=\"isSelected(day)\"\n [class.hover:bg-primary-700]=\"isSelected(day)\"\n [class.text-surface-700]=\"!isSelected(day) && !isToday(day)\"\n [class.font-semibold]=\"isToday(day)\"\n [class.text-primary-600]=\"isToday(day) && !isSelected(day)\">\n {{ day }}\n </button>\n }\n }\n </div>\n <div class=\"mt-3 pt-3 border-t border-surface-100 flex items-center gap-2\">\n <span class=\"text-xs font-medium text-surface-600 shrink-0\">{{ i18n.time }}</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-surface-300 rounded-md px-2 py-1.5 text-sm text-surface-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-surface-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled() || !draft()\"\n (change)=\"onHourChange($event)\">\n @for (h of hours; track h) {\n <option [value]=\"h\" [selected]=\"h === (draft()?.getHours() ?? 0)\">\n {{ h.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n <span class=\"text-surface-400 text-sm\">:</span>\n <select\n class=\"flex-1 min-w-0 block bg-white border border-surface-300 rounded-md px-2 py-1.5 text-sm text-surface-900 outline-none focus:outline focus:outline-primary-500 focus:outline-offset-2 disabled:bg-surface-50 disabled:cursor-not-allowed\"\n [disabled]=\"isDisabled() || !draft()\"\n (change)=\"onMinuteChange($event)\">\n @for (m of minutes; track m) {\n <option [value]=\"m\" [selected]=\"m === (draft()?.getMinutes() ?? 0)\">\n {{ m.toString().padStart(2, '0') }}\n </option>\n }\n </select>\n </div>\n <div class=\"mt-2 pt-2 border-t border-surface-100 flex items-center justify-between gap-2\">\n <button\n type=\"button\"\n (click)=\"goToToday()\"\n [disabled]=\"isDisabled()\"\n class=\"text-xs text-primary-600 font-medium hover:underline cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed disabled:no-underline\">\n {{ i18n.today }}\n </button>\n <button\n type=\"button\"\n (click)=\"apply()\"\n [disabled]=\"isDisabled() || !draft()\"\n class=\"px-3 py-1.5 text-xs font-medium rounded-md bg-primary-600 text-white hover:bg-primary-700 cursor-pointer disabled:bg-surface-200 disabled:text-surface-500 disabled:cursor-not-allowed\">\n {{ i18n.confirm }}\n </button>\n </div>\n </div>\n }\n </div>\n</div>\n","import { Component, input, signal } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-step',\r\n templateUrl: './step.component.html',\r\n styleUrl: './step.component.scss'\r\n})\r\nexport class TailwindStep extends TailwindComponent {\r\n readonly label = input.required<string>();\r\n readonly description = input<string>('');\r\n readonly optional = input<boolean>(false);\r\n readonly completed = signal(false);\r\n readonly isActive = signal(false);\r\n}\r\n","@if (isActive()) {\n <div class=\"py-4\"><ng-content /></div>\n}\n","import { Component, contentChildren, input, model, effect } from '@angular/core';\r\nimport { TailwindStep } from './step.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-stepper',\r\n templateUrl: './stepper.component.html',\r\n styleUrl: './stepper.component.scss'\r\n})\r\nexport class TailwindStepper extends TailwindComponent {\r\n readonly activeIndex = model<number>(0);\r\n readonly linear = input<boolean>(false);\r\n\r\n readonly steps = contentChildren(TailwindStep);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const allSteps = this.steps();\r\n const idx = this.activeIndex();\r\n allSteps.forEach((s, i) => s.isActive.set(i === idx));\r\n });\r\n }\r\n\r\n goToStep(index: number): void {\r\n if (!this.linear() || index <= this.activeIndex()) {\r\n this.activeIndex.set(index);\r\n }\r\n }\r\n\r\n next(): void {\r\n const s = this.steps();\r\n if (this.activeIndex() < s.length - 1) {\r\n s[this.activeIndex()].completed.set(true);\r\n this.activeIndex.update(v => v + 1);\r\n }\r\n }\r\n\r\n previous(): void {\r\n if (this.activeIndex() > 0) this.activeIndex.update(v => v - 1);\r\n }\r\n}\r\n","<!-- Step indicators -->\n<div class=\"flex items-center mb-6\">\n @for (step of steps(); track step.label(); let i = $index; let last = $last) {\n <div class=\"flex items-center\" [class.flex-1]=\"!last\">\n <button\n type=\"button\"\n (click)=\"goToStep(i)\"\n class=\"flex items-center gap-2 cursor-pointer group\"\n [attr.aria-current]=\"activeIndex() === i ? 'step' : null\">\n <div\n class=\"w-8 h-8 rounded-full flex items-center justify-center text-sm font-semibold border-2 transition-all duration-200\"\n [class.bg-primary-600]=\"i <= activeIndex()\"\n [class.border-primary-600]=\"i <= activeIndex()\"\n [class.text-white]=\"i <= activeIndex()\"\n [class.border-surface-300]=\"i > activeIndex()\"\n [class.text-surface-500]=\"i > activeIndex()\">\n @if (step.completed()) {\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n fill-rule=\"evenodd\"\n d=\"M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z\"\n clip-rule=\"evenodd\" />\n </svg>\n } @else {\n {{ i + 1 }}\n }\n </div>\n <div class=\"hidden sm:block\">\n <p\n class=\"text-sm font-medium\"\n [class.text-primary-600]=\"i <= activeIndex()\"\n [class.text-surface-500]=\"i > activeIndex()\">\n {{ step.label() }}\n </p>\n @if (step.description()) {\n <p class=\"text-xs text-surface-400\">{{ step.description() }}</p>\n }\n </div>\n </button>\n @if (!last) {\n <div\n class=\"flex-1 h-0.5 mx-3 rounded-full transition-colors duration-200\"\n [class.bg-primary-600]=\"i < activeIndex()\"\n [class.bg-surface-200]=\"i >= activeIndex()\"></div>\n }\n </div>\n }\n</div>\n<!-- Step content -->\n<ng-content />\n","import { Component, input, output, signal } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n imports: [CommonModule],\r\n selector: 'tailwind-accordion-item',\r\n templateUrl: './accordion-item.component.html',\r\n styleUrl: './accordion-item.component.scss'\r\n})\r\nexport class TailwindAccordionItem extends TailwindComponent {\r\n readonly title = input.required<string>();\r\n readonly disabled = input<boolean>(false);\r\n readonly isExpanded = signal(false);\r\n\r\n readonly onToggle = output<void>();\r\n\r\n toggle(): void {\r\n if (!this.disabled()) {\r\n this.isExpanded.update(v => !v);\r\n this.onToggle.emit();\r\n }\r\n }\r\n}\r\n","<div [id]=\"id()\" [ngClass]=\"class()\" class=\"border-b border-surface-200 last:border-b-0\">\r\n <button\r\n type=\"button\"\r\n (click)=\"toggle()\"\r\n class=\"flex items-center justify-between w-full px-5 py-4 text-left text-sm font-medium text-surface-800 hover:bg-surface-50 transition-colors cursor-pointer\"\r\n [attr.aria-expanded]=\"isExpanded()\">\r\n <span>{{ title() }}</span>\r\n <svg\r\n class=\"w-4 h-4 text-surface-400 transition-transform duration-200\"\r\n [class.rotate-180]=\"isExpanded()\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\">\r\n <path\r\n fill-rule=\"evenodd\"\r\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\r\n clip-rule=\"evenodd\" />\r\n </svg>\r\n </button>\r\n @if (isExpanded()) {\r\n <div class=\"px-5 py-4 text-sm text-surface-600\">\r\n <ng-content />\r\n </div>\r\n }\r\n</div>\r\n","import { Component, contentChildren } from '@angular/core';\r\nimport { TailwindAccordionItem } from './accordion-item.component';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n imports: [CommonModule],\r\n selector: 'tailwind-accordion',\r\n templateUrl: './accordion.component.html',\r\n styleUrl: './accordion.component.scss'\r\n})\r\nexport class TailwindAccordion extends TailwindComponent {\r\n readonly items = contentChildren(TailwindAccordionItem);\r\n}\r\n","<div\r\n [id]=\"id()\"\r\n [ngClass]=\"class()\"\r\n class=\"border border-surface-200 rounded-xl overflow-hidden divide-y divide-surface-200\">\r\n <ng-content />\r\n</div>\r\n","export class TailwindModalRef<R = any> {\r\n private _closeFn!: () => void;\r\n private _result: R | undefined;\r\n\r\n /** @internal called by the service after component creation */\r\n _init(closeFn: () => void): void {\r\n this._closeFn = closeFn;\r\n }\r\n\r\n /** Close the modal resolving with the given result */\r\n close(result?: R): void {\r\n this._result = result;\r\n this._closeFn();\r\n }\r\n\r\n /** @internal read by the service after the close animation */\r\n _getResult(): R | undefined {\r\n return this._result;\r\n }\r\n}\r\n","import {\r\n ApplicationRef,\r\n createComponent,\r\n EnvironmentInjector,\r\n inject,\r\n Injectable,\r\n Injector,\r\n Type\r\n} from '@angular/core';\r\nimport { TailwindModal } from '../../components/modal/modal.component';\r\nimport { TailwindModalConfig } from '../../components/modal/interfaces/modal-config.interface';\r\nimport { TailwindModalRef } from '../../ref/modal/modal.ref';\r\nimport { TAILWIND_MODAL_DATA } from '../../tokens/tokens';\r\n\r\nexport type { TailwindModalConfig };\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TailwindModalService {\r\n private readonly appRef = inject(ApplicationRef);\r\n private readonly environmentInjector = inject(EnvironmentInjector);\r\n\r\n /**\r\n * Open a modal programmatically.\r\n *\r\n * The `component` is instantiated and its slot elements are projected into\r\n * TailwindModal's ng-content slots:\r\n * - `<tailwind-modal-title>` → header title area\r\n * - `<tailwind-modal-content>` → body area\r\n * - `<tailwind-modal-footer>` → footer area\r\n *\r\n * The component can inject `TailwindModalRef<R>` to close with a typed result\r\n * and `TAILWIND_MODAL_DATA` to receive the `config.data` payload.\r\n *\r\n * @returns Promise that resolves with `R` on `close(result)` or `undefined` on dismiss.\r\n */\r\n open<R = any, D = any>(component: Type<unknown>, config: TailwindModalConfig<D> = {}): Promise<R | undefined> {\r\n return new Promise<R | undefined>(resolve => {\r\n const modalRef = new TailwindModalRef<R>();\r\n\r\n const injector = Injector.create({\r\n providers: [\r\n { provide: TailwindModalRef, useValue: modalRef },\r\n { provide: TAILWIND_MODAL_DATA, useValue: config.data ?? null }\r\n ],\r\n parent: this.environmentInjector\r\n });\r\n\r\n // ── Step 1: create and render the user component ─────────────────────\r\n const userComp = createComponent(component, {\r\n environmentInjector: this.environmentInjector,\r\n elementInjector: injector\r\n });\r\n this.appRef.attachView(userComp.hostView);\r\n userComp.changeDetectorRef.detectChanges();\r\n\r\n // ── Step 2: extract slot elements from the rendered host ──────────────\r\n const host = userComp.location.nativeElement as HTMLElement;\r\n const nodes = (sel: string) => Array.from(host.querySelectorAll(`:scope > ${sel}`));\r\n\r\n // ── Step 3: create TailwindModal projecting the slot nodes ────────────\r\n // projectableNodes[0] → <ng-content /> (title / catch-all)\r\n // projectableNodes[1] → <ng-content select=\"tailwind-modal-content\" />\r\n // projectableNodes[2] → <ng-content select=\"tailwind-modal-footer\" />\r\n const modalComp = createComponent(TailwindModal, {\r\n environmentInjector: this.environmentInjector,\r\n elementInjector: injector,\r\n projectableNodes: [\r\n nodes('tailwind-modal-title'),\r\n nodes('tailwind-modal-content'),\r\n nodes('tailwind-modal-footer')\r\n ]\r\n });\r\n\r\n modalComp.setInput('size', config.size ?? 'md');\r\n modalComp.setInput('showCloseButton', config.showCloseButton ?? true);\r\n modalComp.setInput('closeOnBackdrop', config.closeOnBackdrop ?? true);\r\n modalComp.setInput('closeOnEscape', config.closeOnEscape ?? true);\r\n\r\n this.appRef.attachView(modalComp.hostView);\r\n document.body.appendChild(modalComp.location.nativeElement);\r\n\r\n // ── Step 4: wire close ────────────────────────────────────────────────\r\n modalRef._init(() => modalComp.instance.close());\r\n\r\n const sub = modalComp.instance.onClose.subscribe(() => {\r\n sub.unsubscribe();\r\n resolve(modalRef._getResult());\r\n modalComp.location.nativeElement.remove();\r\n this.appRef.detachView(modalComp.hostView);\r\n this.appRef.detachView(userComp.hostView);\r\n modalComp.destroy();\r\n userComp.destroy();\r\n });\r\n\r\n modalComp.instance.open();\r\n });\r\n }\r\n}\r\n","import { Injectable, signal } from '@angular/core';\nimport { TailwindToastItem } from '../../components/toast/interfaces/toast-item.interface';\nimport { TailwindToastConfig } from '../../components/toast/interfaces/toast-config.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class TailwindToastService {\n private nextId = 0;\n readonly toasts = signal<TailwindToastItem[]>([]);\n\n show(config: TailwindToastConfig): number {\n const id = this.nextId++;\n const toast: TailwindToastItem = { id, severity: 'info', duration: 4000, dismissible: true, ...config };\n this.toasts.update(list => [...list, toast]);\n if (toast.duration && toast.duration > 0) {\n setTimeout(() => this.dismiss(id), toast.duration);\n }\n return id;\n }\n\n success(message: string, title?: string): number {\n return this.show({ message, title, severity: 'success' });\n }\n warning(message: string, title?: string): number {\n return this.show({ message, title, severity: 'warning' });\n }\n danger(message: string, title?: string): number {\n return this.show({ message, title, severity: 'danger' });\n }\n info(message: string, title?: string): number {\n return this.show({ message, title, severity: 'info' });\n }\n\n dismiss(id: number): void {\n this.toasts.update(list => list.filter(t => t.id !== id));\n }\n clear(): void {\n this.toasts.set([]);\n }\n}\n","import { Component, inject } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\nimport { TailwindToastConfig } from './interfaces/toast-config.interface';\r\nimport { TailwindToastItem } from './interfaces/toast-item.interface';\r\nimport { TailwindToastService } from '../../services';\r\nexport type { TailwindToastConfig, TailwindToastItem };\r\n\r\n@Component({\r\n selector: 'tailwind-toast',\r\n templateUrl: './toast.component.html',\r\n styleUrl: './toast.component.scss'\r\n})\r\nexport class TailwindToast extends TailwindComponent {\r\n readonly toastService = inject(TailwindToastService);\r\n}\r\n","<div class=\"fixed bottom-4 right-4 z-1080 flex flex-col gap-2 max-w-sm w-full pointer-events-none\">\r\n @for (toast of toastService.toasts(); track toast.id) {\r\n <div\r\n class=\"pointer-events-auto rounded-xl border shadow-lg p-4 flex gap-3 animate-in slide-in-from-right-full duration-300\"\r\n [class.bg-success-50]=\"toast.severity === 'success'\"\r\n [class.border-success-200]=\"toast.severity === 'success'\"\r\n [class.bg-warning-50]=\"toast.severity === 'warning'\"\r\n [class.border-warning-200]=\"toast.severity === 'warning'\"\r\n [class.bg-danger-50]=\"toast.severity === 'danger'\"\r\n [class.border-danger-200]=\"toast.severity === 'danger'\"\r\n [class.bg-info-50]=\"toast.severity === 'info'\"\r\n [class.border-info-200]=\"toast.severity === 'info'\"\r\n role=\"alert\">\r\n <div class=\"flex-1 min-w-0\">\r\n @if (toast.title) {\r\n <p class=\"text-sm font-semibold mb-0.5\">{{ toast.title }}</p>\r\n }\r\n <p class=\"text-sm\">{{ toast.message }}</p>\r\n </div>\r\n @if (toast.dismissible) {\r\n <button\r\n type=\"button\"\r\n (click)=\"toastService.dismiss(toast.id)\"\r\n class=\"shrink-0 p-1 rounded-lg opacity-60 hover:opacity-100 transition-opacity cursor-pointer\"\r\n aria-label=\"Dismiss\">\r\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\r\n <path\r\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\r\n </svg>\r\n </button>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { Component, computed, input, output } from '@angular/core';\r\nimport { TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-notification',\r\n templateUrl: './notification.component.html',\r\n styleUrl: './notification.component.scss'\r\n})\r\nexport class TailwindNotification extends TailwindComponent {\r\n readonly title = input<string>('');\r\n readonly severity = input<TailwindSeverity>('info');\r\n readonly dismissible = input<boolean>(true);\r\n readonly showActions = input<boolean>(false);\r\n\r\n readonly onDismiss = output<void>();\r\n\r\n readonly computedClasses = computed(() => {\r\n const variantMap: Record<TailwindSeverity, string> = {\r\n success: 'bg-success-50 border-success-200 text-success-800',\r\n warning: 'bg-warning-50 border-warning-200 text-warning-800',\r\n danger: 'bg-danger-50 border-danger-200 text-danger-800',\r\n info: 'bg-info-50 border-info-200 text-info-800'\r\n };\r\n return `flex items-start rounded-xl border p-4 ${variantMap[this.severity()]}`;\r\n });\r\n}\r\n","<div [class]=\"computedClasses()\" role=\"alert\">\n <div class=\"flex-1 min-w-0\">\n @if (title()) {\n <p class=\"text-sm font-semibold mb-0.5\">{{ title() }}</p>\n }\n <p class=\"text-sm\"><ng-content /></p>\n @if (showActions()) {\n <div class=\"pt-3\">\n <ng-content select=\"tailwind-notification-actions\" />\n </div>\n }\n </div>\n @if (dismissible()) {\n <button\n type=\"button\"\n (click)=\"onDismiss.emit()\"\n class=\"shrink-0 p-1 -m-1 rounded-lg opacity-60 hover:opacity-100 transition-opacity cursor-pointer\"\n aria-label=\"Dismiss\">\n <svg class=\"w-4 h-4\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n <path\n d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n }\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-message',\r\n templateUrl: './message.component.html',\r\n styleUrl: './message.component.scss'\r\n})\r\nexport class TailwindMessage extends TailwindComponent {\r\n readonly severity = input<TailwindSeverity>('info');\r\n\r\n readonly computedClasses = computed(() => {\r\n const variantMap: Record<TailwindSeverity, string> = {\r\n success: 'bg-success-50 text-success-700 border-success-200',\r\n warning: 'bg-warning-50 text-warning-700 border-warning-200',\r\n danger: 'bg-danger-50 text-danger-700 border-danger-200',\r\n info: 'bg-info-50 text-info-700 border-info-200'\r\n };\r\n return `text-sm px-3 py-2 rounded-lg border ${variantMap[this.severity()]}`;\r\n });\r\n}\r\n","<div [class]=\"computedClasses()\" role=\"status\">\n <ng-content />\n</div>\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-skeleton',\r\n templateUrl: './skeleton.component.html',\r\n styleUrl: './skeleton.component.scss'\r\n})\r\nexport class TailwindSkeleton extends TailwindComponent {\r\n readonly variant = input<'text' | 'circle' | 'rect' | 'rounded'>('text');\r\n readonly width = input<string>('100%');\r\n readonly height = input<string>('');\r\n\r\n readonly computedClasses = computed(() => {\r\n const base = 'tailwind-skeleton-pulse';\r\n const variantMap: Record<string, string> = {\r\n text: 'h-4 rounded',\r\n circle: 'rounded-full',\r\n rect: 'rounded-none',\r\n rounded: 'rounded-xl'\r\n };\r\n return `${base} ${variantMap[this.variant()]}`;\r\n });\r\n}\r\n","<div\n [style.width]=\"width()\"\n [style.height]=\"height() || (variant() === 'circle' ? width() : '1.5rem')\"\n [class]=\"computedClasses()\"\n aria-hidden=\"true\"></div>\n","import { Component, computed, input, output } from '@angular/core';\r\nimport { TailwindMenuItem } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-toolbar',\r\n templateUrl: './toolbar.component.html',\r\n styleUrl: './toolbar.component.scss'\r\n})\r\nexport class TailwindToolbar extends TailwindComponent {\r\n /** When true, uses rounded corners (`rounded-xl`). */\r\n readonly rounded = input<boolean>(true);\r\n /**\r\n * Orizzontale: `full` = `w-full`; `container` = larghezza responsiva (95% / 85% / 75%) centrata.\r\n * Verticale: ignorato per l’altezza — il rail è sempre `h-full w-full` nella colonna.\r\n */\r\n readonly width = input<'full' | 'container'>('full');\r\n /** Applies a stronger drop shadow. */\r\n readonly elevated = input<boolean>(false);\r\n /** `horizontal` for a top app bar; `vertical` for a side rail (logo → menu → end). */\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n\r\n /** Navigation / actions rendered between logo and end slots. */\r\n readonly menu = input<TailwindMenuItem[]>([]);\r\n\r\n /** Emitted when a non-disabled, non-divider menu entry is activated. */\r\n readonly onMenuSelect = output<TailwindMenuItem>();\r\n\r\n readonly menuContainerClasses = computed(() =>\r\n this.orientation() === 'horizontal'\r\n ? 'min-w-0 flex-1 flex flex-row flex-wrap items-center gap-1'\r\n : 'min-w-0 flex-1 flex flex-col gap-1 overflow-y-auto min-h-0'\r\n );\r\n\r\n readonly menuItemButtonClasses = computed(() =>\r\n this.orientation() === 'horizontal'\r\n ? 'shrink-0 rounded-md px-3 py-1.5 text-sm font-medium text-surface-700 hover:bg-surface-100 hover:text-surface-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer border-0 bg-transparent'\r\n : 'w-full text-left rounded-md px-2 py-2 text-sm font-medium text-surface-700 hover:bg-surface-100 hover:text-surface-900 disabled:opacity-50 disabled:cursor-not-allowed transition-colors cursor-pointer border-0 bg-transparent'\r\n );\r\n\r\n readonly rootClasses = computed(() => {\r\n const horizontal = this.orientation() === 'horizontal';\r\n const sizeClasses = horizontal\r\n ? this.width() === 'full'\r\n ? 'w-full'\r\n : 'w-[95%] md:w-[85%] lg:w-[75%] mx-auto'\r\n : 'h-full w-full';\r\n\r\n const base = [\r\n 'bg-white border border-surface-200',\r\n 'flex',\r\n sizeClasses,\r\n this.rounded() ? 'rounded-xl' : 'rounded-none',\r\n this.elevated() ? 'shadow-lg' : 'shadow-sm'\r\n ];\r\n\r\n if (horizontal) {\r\n base.push('flex-row items-center gap-3 px-4 py-3');\r\n } else {\r\n base.push('flex-col items-stretch gap-3 px-3 py-4 min-h-0');\r\n }\r\n\r\n return base.join(' ');\r\n });\r\n\r\n selectMenuItem(item: TailwindMenuItem): void {\r\n if (item.divider || item.disabled) {\r\n return;\r\n }\r\n this.onMenuSelect.emit(item);\r\n }\r\n\r\n menuTrackKey(index: number, item: TailwindMenuItem): string {\r\n return item.value ?? item.label ?? String(index);\r\n }\r\n}\r\n","<div [class]=\"rootClasses()\">\r\n <div class=\"shrink-0\">\r\n <ng-content select=\"tailwind-toolbar-logo\" />\r\n </div>\r\n <nav [class]=\"menuContainerClasses()\" [attr.aria-label]=\"'Toolbar menu'\">\r\n @for (item of menu(); track menuTrackKey($index, item)) {\r\n @if (item.divider) {\r\n @if (orientation() === 'horizontal') {\r\n <span class=\"mx-0.5 h-5 w-px shrink-0 self-center bg-surface-200\" aria-hidden=\"true\"></span>\r\n } @else {\r\n <hr class=\"my-1 w-full border-0 border-t border-surface-100\" />\r\n }\r\n } @else {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"!!item.disabled\"\r\n [class]=\"menuItemButtonClasses()\"\r\n (click)=\"selectMenuItem(item)\">\r\n {{ item.label }}\r\n </button>\r\n }\r\n }\r\n </nav>\r\n <div\r\n class=\"flex flex-wrap items-center gap-2 shrink-0\"\r\n [class.justify-end]=\"orientation() === 'horizontal'\"\r\n [class.mt-auto]=\"orientation() === 'vertical'\">\r\n <ng-content select=\"tailwind-toolbar-end\" />\r\n </div>\r\n</div>\r\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n@Component({\r\n selector: 'tailwind-divider',\r\n templateUrl: './divider.component.html',\r\n styleUrl: './divider.component.scss'\r\n})\r\nexport class TailwindDivider extends TailwindComponent {\r\n /** Rule direction */\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n /** Adds horizontal margin to the rule (horizontal orientation only). */\r\n readonly inset = input<boolean>(false);\r\n /** Border style for the rule */\r\n readonly variant = input<'solid' | 'dashed'>('solid');\r\n /** Centered text between two lines (horizontal only; ignored when empty). */\r\n readonly label = input<string>('');\r\n\r\n readonly isLabeledHorizontal = computed(\r\n () => this.orientation() === 'horizontal' && !!this.label()?.trim()\r\n );\r\n\r\n readonly ruleClasses = computed(() => {\r\n const inset = this.inset() && this.orientation() === 'horizontal' ? 'mx-4' : '';\r\n const variant = this.variant() === 'dashed' ? 'border-dashed' : 'border-solid';\r\n\r\n if (this.orientation() === 'vertical') {\r\n return ['self-stretch shrink-0 w-px min-h-full border-0 border-l', variant, 'border-surface-200']\r\n .join(' ');\r\n }\r\n\r\n return ['w-full border-0 border-t', variant, 'border-surface-200', inset].filter(Boolean).join(' ');\r\n });\r\n\r\n /** Top rule for labeled horizontal layout */\r\n readonly ruleLineClass = computed(() => {\r\n const variant = this.variant() === 'dashed' ? 'border-dashed' : 'border-solid';\r\n return ['border-surface-200', variant].join(' ');\r\n });\r\n\r\n readonly labeledRowClass = computed(() =>\r\n this.inset() ? 'flex items-center gap-3 w-full mx-4' : 'flex items-center gap-3 w-full'\r\n );\r\n}\r\n","@if (isLabeledHorizontal()) {\r\n <div [class]=\"labeledRowClass()\" role=\"separator\" [attr.aria-label]=\"label()\">\r\n <div class=\"flex-1 border-0 border-t\" [class]=\"ruleLineClass()\"></div>\r\n <span class=\"text-xs font-medium text-surface-500 shrink-0\">{{ label() }}</span>\r\n <div class=\"flex-1 border-0 border-t\" [class]=\"ruleLineClass()\"></div>\r\n </div>\r\n} @else {\r\n <div [class]=\"ruleClasses()\" role=\"separator\"></div>\r\n}\r\n","import { Component, computed, input } from '@angular/core';\r\nimport { TailwindSize, TailwindSeverity } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\nimport { TailwindMeterSegment } from './interfaces/meter-segment.interface';\r\n\r\n@Component({\r\n selector: 'tailwind-meter',\r\n templateUrl: './meter.component.html',\r\n styleUrl: './meter.component.scss'\r\n})\r\nexport class TailwindMeter extends TailwindComponent {\r\n /** Segments rendered as proportional blocks in the bar. */\r\n readonly segments = input<TailwindMeterSegment[]>([]);\r\n /**\r\n * Scale maximum. Each segment `value` is shown as `value / max` of the bar width.\r\n * Default 100 (percent-style values).\r\n */\r\n readonly max = input<number>(100);\r\n /** Show a simple legend under the bar */\r\n readonly showLabels = input<boolean>(true);\r\n /** Track height */\r\n readonly size = input<TailwindSize>('md');\r\n\r\n readonly trackHeightClass = computed(() => {\r\n const map: Record<TailwindSize, string> = {\r\n xs: 'h-1.5',\r\n sm: 'h-2',\r\n md: 'h-2.5',\r\n lg: 'h-3.5',\r\n xl: 'h-4'\r\n };\r\n return map[this.size()];\r\n });\r\n\r\n readonly totalValue = computed(() => this.segments().reduce((s, x) => s + Math.max(0, x.value), 0));\r\n\r\n readonly scaleMax = computed(() => {\r\n const m = this.max();\r\n if (m > 0) {\r\n return m;\r\n }\r\n const t = this.totalValue();\r\n return t > 0 ? t : 1;\r\n });\r\n\r\n readonly segmentLayouts = computed(() => {\r\n const cap = this.scaleMax();\r\n return this.segments().map(seg => {\r\n const pct = cap > 0 ? (Math.max(0, seg.value) / cap) * 100 : 0;\r\n const variant = seg.variant ?? 'primary';\r\n return { ...seg, widthPct: pct, barClass: this.variantToBarClass(variant) };\r\n });\r\n });\r\n\r\n readonly trackContainerClasses = computed(\r\n () => `flex w-full overflow-hidden rounded-full bg-surface-200 ${this.trackHeightClass()}`\r\n );\r\n\r\n legendSwatchClass(variant?: TailwindSeverity | 'primary'): string {\r\n return this.variantToBarClass(variant ?? 'primary');\r\n }\r\n\r\n private variantToBarClass(variant: TailwindSeverity | 'primary'): string {\r\n const map: Record<string, string> = {\r\n primary: 'bg-primary-600',\r\n success: 'bg-success-600',\r\n warning: 'bg-warning-500',\r\n danger: 'bg-danger-600',\r\n info: 'bg-info-600'\r\n };\r\n return map[variant] ?? map['primary'];\r\n }\r\n}\r\n","<div class=\"w-full space-y-2\">\r\n <div\r\n [class]=\"trackContainerClasses()\"\r\n role=\"meter\"\r\n [attr.aria-valuemin]=\"0\"\r\n [attr.aria-valuemax]=\"scaleMax()\"\r\n [attr.aria-valuenow]=\"totalValue()\"\r\n [attr.aria-label]=\"'Meter'\">\r\n @for (seg of segmentLayouts(); track $index) {\r\n @if (seg.widthPct > 0) {\r\n <div\r\n class=\"h-full min-w-0 transition-all duration-300 ease-out\"\r\n [class]=\"seg.barClass\"\r\n [style.width.%]=\"seg.widthPct\"\r\n [attr.title]=\"seg.label + ': ' + seg.value\"></div>\r\n }\r\n }\r\n </div>\r\n\r\n @if (showLabels()) {\r\n <div class=\"flex flex-wrap gap-x-4 gap-y-1 text-xs text-surface-600\">\r\n @for (seg of segments(); track $index) {\r\n <span class=\"inline-flex items-center gap-1.5\">\r\n <span class=\"inline-block size-2 rounded-sm shrink-0\" [class]=\"legendSwatchClass(seg.variant)\"></span>\r\n <span>{{ seg.label }}</span>\r\n <span class=\"text-surface-400\">({{ seg.value }})</span>\r\n </span>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { booleanAttribute, Component, computed, ElementRef, forwardRef, input, signal, viewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { TailwindSize } from '../../models';\r\nimport { TailwindComponent } from '../tailwind.component';\r\n\r\n/** Value model: single number or sorted pair when `range` is true */\r\nexport type TailwindSliderValue = number | [number, number];\r\n\r\n@Component({\r\n selector: 'tailwind-slider',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => TailwindSlider),\r\n multi: true\r\n }\r\n ],\r\n templateUrl: './slider.component.html',\r\n styleUrl: './slider.component.scss'\r\n})\r\nexport class TailwindSlider extends TailwindComponent implements ControlValueAccessor {\r\n /** Minimum bound */\r\n readonly min = input<number>(0);\r\n /** Maximum bound */\r\n readonly max = input<number>(100);\r\n /** Step increment */\r\n readonly step = input<number>(1);\r\n /** Two-thumb range mode */\r\n readonly range = input<boolean>(false);\r\n /** Layout */\r\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\r\n /** Tick marks at each step */\r\n readonly showTicks = input<boolean>(false);\r\n /** Control size */\r\n readonly size = input<TailwindSize>('md');\r\n\r\n readonly trackRef = viewChild<ElementRef<HTMLElement>>('track');\r\n\r\n /** Single-thumb value */\r\n readonly singleValue = signal(0);\r\n /** Range: lower value */\r\n readonly rangeLow = signal(0);\r\n /** Range: upper value */\r\n readonly rangeHigh = signal(100);\r\n\r\n /** Disabled via template (combined with form `setDisabledState`) */\r\n readonly hostDisabled = input(false, { alias: 'disabled', transform: booleanAttribute });\r\n\r\n readonly isDisabled = signal(false);\r\n\r\n readonly isEffectivelyDisabled = computed(() => this.isDisabled() || this.hostDisabled());\r\n\r\n private onChange: (v: TailwindSliderValue) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n readonly activeThumb = signal<null | 0 | 1>(null);\r\n\r\n readonly thumbSizeClass = computed(() => {\r\n const map: Record<TailwindSize, string> = {\r\n xs: 'size-3',\r\n sm: 'size-3.5',\r\n md: 'size-4',\r\n lg: 'size-5',\r\n xl: 'size-6'\r\n };\r\n return map[this.size()];\r\n });\r\n\r\n readonly trackThickness = computed(() => {\r\n const map: Record<TailwindSize, string> = {\r\n xs: 'h-1',\r\n sm: 'h-1.5',\r\n md: 'h-2',\r\n lg: 'h-2.5',\r\n xl: 'h-3'\r\n };\r\n return map[this.size()];\r\n });\r\n\r\n readonly verticalTrackThickness = computed(() => {\r\n const map: Record<TailwindSize, string> = {\r\n xs: 'w-1',\r\n sm: 'w-1.5',\r\n md: 'w-2',\r\n lg: 'w-2.5',\r\n xl: 'w-3'\r\n };\r\n return map[this.size()];\r\n });\r\n\r\n readonly singlePct = computed(() => this.valueToPct(this.singleValue()));\r\n\r\n readonly lowPct = computed(() => this.valueToPct(this.rangeLow()));\r\n readonly highPct = computed(() => this.valueToPct(this.rangeHigh()));\r\n\r\n readonly fillStartPct = computed(() => (this.range() ? Math.min(this.lowPct(), this.highPct()) : 0));\r\n\r\n readonly fillWidthPct = computed(() =>\r\n this.range() ? Math.abs(this.highPct() - this.lowPct()) : this.singlePct()\r\n );\r\n\r\n readonly tickPositions = computed(() => {\r\n if (!this.showTicks()) {\r\n return [] as number[];\r\n }\r\n const lo = this.min();\r\n const hi = this.max();\r\n const st = this.step();\r\n if (st <= 0 || hi < lo) {\r\n return [];\r\n }\r\n const steps = Math.round((hi - lo) / st);\r\n const out: number[] = [];\r\n for (let i = 0; i <= steps; i++) {\r\n out.push(this.valueToPct(lo + i * st));\r\n }\r\n return out;\r\n });\r\n\r\n writeValue(value: TailwindSliderValue | null): void {\r\n const lo = this.min();\r\n const hi = this.max();\r\n if (this.range()) {\r\n const pair = Array.isArray(value) ? value : [lo, hi];\r\n const a = this.snap(Math.min(pair[0] ?? lo, pair[1] ?? hi));\r\n const b = this.snap(Math.max(pair[0] ?? lo, pair[1] ?? hi));\r\n this.rangeLow.set(Math.min(a, b));\r\n this.rangeHigh.set(Math.max(a, b));\r\n } else {\r\n const n = Array.isArray(value) ? value[0] : value;\r\n const num = typeof n === 'number' && !Number.isNaN(n) ? n : lo;\r\n this.singleValue.set(this.snap(num));\r\n }\r\n }\r\n\r\n registerOnChange(fn: (v: TailwindSliderValue) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled.set(disabled);\r\n }\r\n\r\n valueToPct(v: number): number {\r\n const lo = this.min();\r\n const hi = this.max();\r\n if (hi === lo) {\r\n return 0;\r\n }\r\n return ((this.snap(v) - lo) / (hi - lo)) * 100;\r\n }\r\n\r\n snap(raw: number): number {\r\n const lo = this.min();\r\n const hi = this.max();\r\n const st = this.step();\r\n if (st <= 0) {\r\n return Math.min(hi, Math.max(lo, raw));\r\n }\r\n const stepped = Math.round((raw - lo) / st) * st + lo;\r\n const rounded = Math.round(stepped * 1e6) / 1e6;\r\n return Math.min(hi, Math.max(lo, rounded));\r\n }\r\n\r\n pctToValue(pct: number): number {\r\n const lo = this.min();\r\n const hi = this.max();\r\n const v = lo + (pct / 100) * (hi - lo);\r\n return this.snap(v);\r\n }\r\n\r\n onThumbPointerDown(event: PointerEvent, thumbIndex: 0 | 1): void {\r\n event.stopPropagation();\r\n this.onTrackPointerDown(event, thumbIndex);\r\n }\r\n\r\n onTrackPointerDown(event: PointerEvent, thumbIndex: 0 | 1 | null): void {\r\n if (this.isEffectivelyDisabled()) {\r\n return;\r\n }\r\n event.preventDefault();\r\n const track = this.trackRef()?.nativeElement;\r\n if (!track) {\r\n return;\r\n }\r\n\r\n let thumb: 0 | 1 | null = thumbIndex;\r\n if (!this.range()) {\r\n thumb = null;\r\n } else if (thumb === null) {\r\n const v = this.readValueFromPointer(event, track);\r\n const low = this.rangeLow();\r\n const high = this.rangeHigh();\r\n const d0 = Math.abs(v - low);\r\n const d1 = Math.abs(v - high);\r\n thumb = d0 <= d1 ? 0 : 1;\r\n }\r\n\r\n this.activeThumb.set(thumb);\r\n this.applyPointer(event, track, thumb);\r\n\r\n if (typeof track.setPointerCapture === 'function') {\r\n track.setPointerCapture(event.pointerId);\r\n }\r\n\r\n const move = (ev: PointerEvent) => this.applyPointer(ev, track, thumb);\r\n const up = (ev: PointerEvent) => {\r\n document.removeEventListener('pointermove', move);\r\n document.removeEventListener('pointerup', up);\r\n document.removeEventListener('pointercancel', up);\r\n try {\r\n track.releasePointerCapture(ev.pointerId);\r\n } catch {\r\n /* ignore */\r\n }\r\n this.activeThumb.set(null);\r\n this.onTouched();\r\n };\r\n document.addEventListener('pointermove', move);\r\n document.addEventListener('pointerup', up);\r\n document.addEventListener('pointercancel', up);\r\n }\r\n\r\n private readValueFromPointer(event: PointerEvent, track: HTMLElement): number {\r\n const rect = track.getBoundingClientRect();\r\n const horizontal = this.orientation() === 'horizontal';\r\n let ratio: number;\r\n if (horizontal) {\r\n ratio = (event.clientX - rect.left) / rect.width;\r\n } else {\r\n ratio = 1 - (event.clientY - rect.top) / rect.height;\r\n }\r\n ratio = Math.min(1, Math.max(0, ratio));\r\n return this.pctToValue(ratio * 100);\r\n }\r\n\r\n private applyPointer(event: PointerEvent, track: HTMLElement, thumbIndex: 0 | 1 | null): void {\r\n const next = this.readValueFromPointer(event, track);\r\n if (this.range()) {\r\n const idx = thumbIndex ?? 0;\r\n if (idx === 0) {\r\n const hi = this.rangeHigh();\r\n this.rangeLow.set(this.snap(Math.min(next, hi)));\r\n } else {\r\n const lo = this.rangeLow();\r\n this.rangeHigh.set(this.snap(Math.max(next, lo)));\r\n }\r\n this.onChange([this.rangeLow(), this.rangeHigh()]);\r\n } else {\r\n this.singleValue.set(next);\r\n this.onChange(this.singleValue());\r\n }\r\n }\r\n\r\n onKeyDown(event: KeyboardEvent, thumbIndex: 0 | 1): void {\r\n if (this.isEffectivelyDisabled()) {\r\n return;\r\n }\r\n const keys = ['ArrowLeft', 'ArrowRight', 'ArrowDown', 'ArrowUp', 'Home', 'End'];\r\n if (!keys.includes(event.key)) {\r\n return;\r\n }\r\n event.preventDefault();\r\n const lo = this.min();\r\n const hi = this.max();\r\n const st = this.step();\r\n const horizontal = this.orientation() === 'horizontal';\r\n const decKey = horizontal ? 'ArrowLeft' : 'ArrowDown';\r\n const incKey = horizontal ? 'ArrowRight' : 'ArrowUp';\r\n\r\n const delta = (key: string) => {\r\n if (key === 'Home') {\r\n return lo - (thumbIndex === 0 ? this.rangeLow() : this.rangeHigh());\r\n }\r\n if (key === 'End') {\r\n return hi - (thumbIndex === 0 ? this.rangeLow() : this.rangeHigh());\r\n }\r\n if (key === decKey) {\r\n return -st;\r\n }\r\n if (key === incKey) {\r\n return st;\r\n }\r\n return 0;\r\n };\r\n\r\n const d = delta(event.key);\r\n if (d === 0) {\r\n return;\r\n }\r\n\r\n if (this.range()) {\r\n if (thumbIndex === 0) {\r\n const next = this.snap(this.rangeLow() + d);\r\n this.rangeLow.set(Math.min(next, this.rangeHigh()));\r\n } else {\r\n const next = this.snap(this.rangeHigh() + d);\r\n this.rangeHigh.set(Math.max(next, this.rangeLow()));\r\n }\r\n this.onChange([this.rangeLow(), this.rangeHigh()]);\r\n } else {\r\n this.singleValue.set(this.snap(this.singleValue() + d));\r\n this.onChange(this.singleValue());\r\n }\r\n }\r\n}\r\n","@if (orientation() === 'horizontal') {\r\n <div\r\n #track\r\n class=\"relative w-full touch-none select-none py-3\"\r\n [class.opacity-50]=\"isEffectivelyDisabled()\"\r\n [class.pointer-events-none]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onTrackPointerDown($event, range() ? null : null)\">\r\n <div class=\"relative h-6 w-full\">\r\n <!-- rail -->\r\n <div\r\n class=\"pointer-events-none absolute left-0 right-0 top-1/2 -translate-y-1/2 rounded-full bg-surface-200\"\r\n [class]=\"trackThickness()\"></div>\r\n\r\n @if (showTicks()) {\r\n @for (p of tickPositions(); track $index) {\r\n <div\r\n class=\"pointer-events-none absolute top-1/2 h-2 w-px -translate-x-1/2 -translate-y-1/2 bg-surface-300\"\r\n [style.left.%]=\"p\"></div>\r\n }\r\n }\r\n\r\n <!-- fill -->\r\n <div\r\n class=\"pointer-events-none absolute top-1/2 -translate-y-1/2 rounded-full bg-primary-500\"\r\n [class]=\"trackThickness()\"\r\n [style.left.%]=\"fillStartPct()\"\r\n [style.width.%]=\"fillWidthPct()\"></div>\r\n\r\n @if (range()) {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white bg-primary-600 shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.left.%]=\"lowPct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"rangeLow()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\r\n (keydown)=\"onKeyDown($event, 0)\"></button>\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white bg-primary-600 shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.left.%]=\"highPct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"rangeHigh()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 1)\"\r\n (keydown)=\"onKeyDown($event, 1)\"></button>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute top-1/2 z-10 -translate-x-1/2 -translate-y-1/2 rounded-full border-2 border-white bg-primary-600 shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.left.%]=\"singlePct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"singleValue()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\r\n (keydown)=\"onKeyDown($event, 0)\"></button>\r\n }\r\n </div>\r\n </div>\r\n} @else {\r\n <div\r\n #track\r\n class=\"relative mx-auto h-52 w-10 touch-none select-none\"\r\n [class.opacity-50]=\"isEffectivelyDisabled()\"\r\n [class.pointer-events-none]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onTrackPointerDown($event, range() ? null : null)\">\r\n <div class=\"relative h-full w-full\">\r\n <div\r\n class=\"pointer-events-none absolute bottom-0 left-1/2 top-0 -translate-x-1/2 rounded-full bg-surface-200\"\r\n [class]=\"verticalTrackThickness()\"></div>\r\n\r\n @if (showTicks()) {\r\n @for (p of tickPositions(); track $index) {\r\n <div\r\n class=\"pointer-events-none absolute left-1/2 w-2 h-px -translate-x-1/2 translate-y-1/2 bg-surface-300\"\r\n [style.bottom.%]=\"p\"></div>\r\n }\r\n }\r\n\r\n <div\r\n class=\"pointer-events-none absolute bottom-0 left-1/2 -translate-x-1/2 rounded-full bg-primary-500\"\r\n [class]=\"verticalTrackThickness()\"\r\n [style.bottom.%]=\"fillStartPct()\"\r\n [style.height.%]=\"fillWidthPct()\"></div>\r\n\r\n @if (range()) {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white bg-primary-600 shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.bottom.%]=\"lowPct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"rangeLow()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\r\n (keydown)=\"onKeyDown($event, 0)\"></button>\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white bg-primary-600 shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.bottom.%]=\"highPct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"rangeHigh()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 1)\"\r\n (keydown)=\"onKeyDown($event, 1)\"></button>\r\n } @else {\r\n <button\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n class=\"tailwind-slider-thumb absolute left-1/2 z-10 -translate-x-1/2 translate-y-1/2 rounded-full border-2 border-white bg-primary-600 shadow focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2\"\r\n [class]=\"thumbSizeClass()\"\r\n [style.bottom.%]=\"singlePct()\"\r\n role=\"slider\"\r\n [attr.aria-valuemin]=\"min()\"\r\n [attr.aria-valuemax]=\"max()\"\r\n [attr.aria-valuenow]=\"singleValue()\"\r\n [attr.aria-disabled]=\"isEffectivelyDisabled()\"\r\n (pointerdown)=\"onThumbPointerDown($event, 0)\"\r\n (keydown)=\"onKeyDown($event, 0)\"></button>\r\n }\r\n </div>\r\n </div>\r\n}\r\n","// Batch 1 — Foundation\nexport * from './button/button.component';\nexport * from './icon/icon.component';\nexport * from './input/input.component';\nexport * from './checkbox/checkbox.component';\nexport * from './radio/radio-group.component';\nexport * from './select/select.component';\nexport * from './toggle/toggle.component';\nexport * from './badge/badge.component';\nexport * from './card/card.component';\nexport * from './alert/alert.component';\nexport * from './spinner/spinner.component';\n\n// Batch 2 — Intermediate\nexport * from './modal/modal.component';\nexport * from './modal/modal-title.component';\nexport * from './modal/modal-content.component';\nexport * from './modal/modal-footer.component';\nexport * from './tabs/tab.component';\nexport * from './tabs/tab-group.component';\nexport * from './tooltip/tooltip.component';\nexport * from '../directives/tooltip/tooltip.directive';\nexport * from './progress-bar/progress-bar.component';\nexport * from './menu/menu.component';\nexport * from './drawer/drawer.component';\nexport * from './breadcrumb/breadcrumb.component';\nexport * from './pagination/pagination.component';\nexport * from './tag/tag.component';\n\n// Batch 3 — Advanced\nexport * from './table/table.component';\nexport * from './date-picker/date-picker.component';\nexport * from './time-picker/time-picker.component';\nexport * from './datetime-picker/datetime-picker.component';\nexport * from './stepper/step.component';\nexport * from './stepper/stepper.component';\nexport * from './accordion/accordion-item.component';\nexport * from './accordion/accordion.component';\nexport * from './toast/toast.component';\nexport * from './notification/notification.component';\nexport * from './message/message.component';\nexport * from './skeleton/skeleton.component';\nexport * from './toolbar/toolbar.component';\nexport * from './divider/divider.component';\nexport * from './meter/interfaces/meter-segment.interface';\nexport * from './meter/meter.component';\nexport * from './slider/slider.component';\n","/*\r\n * Public API Surface of angular-tailwind-components\r\n */\r\n\r\n// Models & Types\r\nexport * from './lib/models';\r\n\r\n// Directives\r\nexport * from './lib/directives';\r\n\r\n// Components\r\nexport * from './lib/components';\r\n\r\n// Services\r\nexport * from './lib/services';\r\n\r\n// Tokens\r\nexport * from './lib/tokens';\r\n\r\n// Refs\r\nexport * from './lib/ref';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["I18N"],"mappings":"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"}
|