pdm-ui-kit 0.1.49 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +189 -2
- package/esm2020/lib/components/alert-dialog/alert-dialog.component.mjs +25 -7
- package/esm2020/lib/components/breadcrumb/breadcrumb.component.mjs +37 -4
- package/esm2020/lib/components/calendar/calendar.component.mjs +3 -3
- package/esm2020/lib/components/card/card.component.mjs +36 -53
- package/esm2020/lib/components/command/command.component.mjs +3 -3
- package/esm2020/lib/components/context-menu/context-menu.component.mjs +16 -8
- package/esm2020/lib/components/data-table/data-table.component.mjs +214 -16
- package/esm2020/lib/components/dialog/dialog.component.mjs +133 -17
- package/esm2020/lib/components/draggable-table/draggable-table.component.mjs +300 -0
- package/esm2020/lib/components/drawer/drawer.component.mjs +138 -10
- package/esm2020/lib/components/dropdown-menu/dropdown-menu.component.mjs +6 -3
- package/esm2020/lib/components/hover-card/hover-card.component.mjs +3 -3
- package/esm2020/lib/components/menubar/menubar.component.mjs +38 -7
- package/esm2020/lib/components/navigation-menu/navigation-menu.component.mjs +25 -3
- package/esm2020/lib/components/pagination/pagination.component.mjs +3 -3
- package/esm2020/lib/components/popover/popover.component.mjs +19 -11
- package/esm2020/lib/components/select/select.component.mjs +8 -4
- package/esm2020/lib/components/sheet/sheet.component.mjs +88 -11
- package/esm2020/lib/components/sidebar/sidebar.component.mjs +52 -5
- package/esm2020/lib/components/table/table.component.mjs +152 -188
- package/esm2020/lib/components/tabs/tabs.component.mjs +3 -3
- package/esm2020/lib/components/tooltip/tooltip.component.mjs +3 -3
- package/esm2020/lib/overlay/pdm-outside-click.directive.mjs +86 -0
- package/esm2020/lib/pdm-ui-kit.module.mjs +9 -1
- package/esm2020/lib/utils/responsive.mjs +143 -0
- package/esm2020/lib/utils/z-index.mjs +93 -0
- package/esm2020/public-api.mjs +5 -1
- package/fesm2015/pdm-ui-kit.mjs +1625 -370
- package/fesm2015/pdm-ui-kit.mjs.map +1 -1
- package/fesm2020/pdm-ui-kit.mjs +1620 -367
- package/fesm2020/pdm-ui-kit.mjs.map +1 -1
- package/lib/components/alert-dialog/alert-dialog.component.d.ts +9 -1
- package/lib/components/breadcrumb/breadcrumb.component.d.ts +23 -1
- package/lib/components/card/card.component.d.ts +32 -19
- package/lib/components/context-menu/context-menu.component.d.ts +6 -3
- package/lib/components/data-table/data-table.component.d.ts +172 -14
- package/lib/components/dialog/dialog.component.d.ts +35 -1
- package/lib/components/draggable-table/draggable-table.component.d.ts +74 -0
- package/lib/components/drawer/drawer.component.d.ts +67 -3
- package/lib/components/menubar/menubar.component.d.ts +10 -2
- package/lib/components/navigation-menu/navigation-menu.component.d.ts +22 -1
- package/lib/components/popover/popover.component.d.ts +6 -3
- package/lib/components/sheet/sheet.component.d.ts +34 -1
- package/lib/components/sidebar/sidebar.component.d.ts +39 -1
- package/lib/components/table/table.component.d.ts +46 -25
- package/lib/overlay/pdm-outside-click.directive.d.ts +40 -0
- package/lib/pdm-ui-kit.module.d.ts +42 -40
- package/lib/utils/responsive.d.ts +107 -0
- package/lib/utils/z-index.d.ts +73 -0
- package/package.json +5 -3
- package/public-api.d.ts +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdm-ui-kit.mjs","sources":["../../../src/lib/components/accordion/accordion.component.ts","../../../src/lib/components/accordion/accordion.component.html","../../../src/lib/components/alert/alert.component.ts","../../../src/lib/components/alert/alert.component.html","../../../src/lib/components/alert-dialog/alert-dialog.component.ts","../../../src/lib/components/alert-dialog/alert-dialog.component.html","../../../src/lib/components/aspect-ratio/aspect-ratio.component.ts","../../../src/lib/components/aspect-ratio/aspect-ratio.component.html","../../../src/lib/components/avatar/avatar.component.ts","../../../src/lib/components/avatar/avatar.component.html","../../../src/lib/components/badge/badge.component.ts","../../../src/lib/components/badge/badge.component.html","../../../src/lib/components/breadcrumb/breadcrumb.component.ts","../../../src/lib/components/breadcrumb/breadcrumb.component.html","../../../src/lib/components/button-group/button-group.component.ts","../../../src/lib/components/button-group/button-group.component.html","../../../src/lib/components/button/button.component.ts","../../../src/lib/components/button/button.component.html","../../../src/lib/components/calendar/calendar.component.ts","../../../src/lib/components/calendar/calendar.component.html","../../../src/lib/components/carousel/carousel.component.ts","../../../src/lib/components/carousel/carousel.component.html","../../../src/lib/components/card/card.component.ts","../../../src/lib/components/card/card.component.html","../../../src/lib/components/chart/chart.component.ts","../../../src/lib/components/chart/chart.component.html","../../../src/lib/components/checkbox/checkbox.component.ts","../../../src/lib/components/checkbox/checkbox.component.html","../../../src/lib/components/collapsible/collapsible.component.ts","../../../src/lib/components/collapsible/collapsible.component.html","../../../src/lib/components/combobox/combobox.component.ts","../../../src/lib/components/combobox/combobox.component.html","../../../src/lib/components/icon/icon.component.ts","../../../src/lib/components/icon/icon.component.html","../../../src/lib/components/command/command.component.ts","../../../src/lib/components/command/command.component.html","../../../src/lib/components/context-menu/context-menu.component.ts","../../../src/lib/components/context-menu/context-menu.component.html","../../../src/lib/components/data-table/data-table.component.ts","../../../src/lib/components/data-table/data-table.component.html","../../../src/lib/overlay/create-flexible-position-strategy.ts","../../../src/lib/components/label/label.component.ts","../../../src/lib/components/label/label.component.html","../../../src/lib/components/date-picker/date-picker.component.ts","../../../src/lib/components/date-picker/date-picker.component.html","../../../src/lib/components/dialog/dialog.component.ts","../../../src/lib/components/dialog/dialog.component.html","../../../src/lib/components/dropdown-menu/dropdown-menu.component.ts","../../../src/lib/components/dropdown-menu/dropdown-menu.component.html","../../../src/lib/components/drawer/drawer.component.ts","../../../src/lib/components/drawer/drawer.component.html","../../../src/lib/components/empty/empty.component.ts","../../../src/lib/components/empty/empty.component.html","../../../src/lib/components/field/field.component.ts","../../../src/lib/components/field/field.component.html","../../../src/lib/components/hover-card/hover-card.component.ts","../../../src/lib/components/hover-card/hover-card.component.html","../../../src/lib/components/item/item.component.ts","../../../src/lib/components/item/item.component.html","../../../src/lib/components/input/input.component.ts","../../../src/lib/components/input/input.component.html","../../../src/lib/components/input-password/input-password.component.ts","../../../src/lib/components/input-password/input-password.component.html","../../../src/lib/components/input-group/input-group.component.ts","../../../src/lib/components/input-group/input-group.component.html","../../../src/lib/components/input-otp/input-otp.component.ts","../../../src/lib/components/input-otp/input-otp.component.html","../../../src/lib/components/kbd/kbd.component.ts","../../../src/lib/components/kbd/kbd.component.html","../../../src/lib/components/menubar/menubar.component.ts","../../../src/lib/components/menubar/menubar.component.html","../../../src/lib/components/native-select/native-select.component.ts","../../../src/lib/components/native-select/native-select.component.html","../../../src/lib/components/navigation-menu/navigation-menu.component.ts","../../../src/lib/components/navigation-menu/navigation-menu.component.html","../../../src/lib/components/select/select-option.directive.ts","../../../src/lib/components/select/select.component.ts","../../../src/lib/components/select/select.component.html","../../../src/lib/components/pagination/pagination.component.ts","../../../src/lib/components/pagination/pagination.component.html","../../../src/lib/components/popover/popover.component.ts","../../../src/lib/components/popover/popover.component.html","../../../src/lib/components/progress/progress.component.ts","../../../src/lib/components/progress/progress.component.html","../../../src/lib/components/radio-group/radio-group.component.ts","../../../src/lib/components/radio-group/radio-group.component.html","../../../src/lib/components/scroll-area/scroll-area.component.ts","../../../src/lib/components/scroll-area/scroll-area.component.html","../../../src/lib/components/separator/separator.component.ts","../../../src/lib/components/separator/separator.component.html","../../../src/lib/components/sheet/sheet.component.ts","../../../src/lib/components/sheet/sheet.component.html","../../../src/lib/components/sidebar/sidebar.component.ts","../../../src/lib/components/sidebar/sidebar.component.html","../../../src/lib/components/skeleton/skeleton.component.ts","../../../src/lib/components/skeleton/skeleton.component.html","../../../src/lib/components/slider/slider.component.ts","../../../src/lib/components/slider/slider.component.html","../../../src/lib/components/sonner/sonner.component.ts","../../../src/lib/components/sonner/sonner.component.html","../../../src/lib/components/spinner/spinner.component.ts","../../../src/lib/components/spinner/spinner.component.html","../../../src/lib/components/switch/switch.component.ts","../../../src/lib/components/switch/switch.component.html","../../../src/lib/components/table/table.component.ts","../../../src/lib/components/table/table.component.html","../../../src/lib/components/tabs/tabs.component.ts","../../../src/lib/components/tabs/tabs.component.html","../../../src/lib/components/textarea/textarea.component.ts","../../../src/lib/components/textarea/textarea.component.html","../../../src/lib/components/toggle/toggle.component.ts","../../../src/lib/components/toggle/toggle.component.html","../../../src/lib/components/toggle-group/toggle-group.component.ts","../../../src/lib/components/toggle-group/toggle-group.component.html","../../../src/lib/components/tooltip/tooltip.component.ts","../../../src/lib/components/tooltip/tooltip.component.html","../../../src/lib/pdm-ui-kit.module.ts","../../../src/pdm-ui-kit.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface PdmAccordionItem {\n id: string;\n title: string;\n content: string | string[];\n disabled?: boolean;\n}\n\n@Component({\n selector: 'pdm-accordion',\n templateUrl: './accordion.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmAccordionComponent {\n @Input() items: PdmAccordionItem[] = [];\n @Input() expandedIndex = -1;\n @Input() className = '';\n\n @Output() expandedIndexChange = new EventEmitter<number>();\n\n isExpanded(index: number): boolean {\n return this.expandedIndex === index;\n }\n\n contentLines(content: string | string[]): string[] {\n if (Array.isArray(content)) return content;\n return content\n .split('\\n')\n .map((line) => line.trim())\n .filter((line) => line.length > 0);\n }\n\n toggle(index: number): void {\n if (this.items[index]?.disabled) return;\n this.expandedIndexChange.emit(this.expandedIndex === index ? -1 : index);\n }\n}\n","<div [ngClass]=\"['w-full', className]\">\n <div *ngFor=\"let item of items; let i = index\" class=\"border-b border-border\">\n <h3>\n <button\n type=\"button\"\n class=\"flex w-full appearance-none items-center justify-between border-0 bg-transparent py-4 text-left text-sm font-medium text-foreground transition-all hover:underline ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n [disabled]=\"item.disabled\"\n [attr.aria-expanded]=\"isExpanded(i)\"\n [attr.aria-controls]=\"item.id + '-panel'\"\n (click)=\"toggle(i)\"\n >\n <span class=\"pr-2\">{{ item.title }}</span>\n <span class=\"inline-flex h-6 w-6 items-center justify-center text-foreground\" aria-hidden=\"true\">\n <svg\n class=\"h-4 w-4 transition-transform\"\n [ngClass]=\"isExpanded(i) ? 'rotate-180' : ''\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M3.5 6.5L8 11L12.5 6.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </button>\n </h3>\n <div\n *ngIf=\"isExpanded(i)\"\n [id]=\"item.id + '-panel'\"\n class=\"flex flex-col gap-4 pb-4 text-sm text-muted-foreground\"\n >\n <p *ngFor=\"let line of contentLines(item.content)\" class=\"m-0\">{{ line }}</p>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmAlertVariant = 'default' | 'title-only' | 'destructive';\n\n@Component({\n selector: 'pdm-alert',\n templateUrl: './alert.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmAlertComponent {\n @Input() variant: PdmAlertVariant = 'default';\n @Input() title = 'Success! Your changes have been saved';\n @Input() description = 'This is an alert with icon, title and description.';\n @Input() details: string[] = [];\n @Input() className = '';\n\n get isDestructive(): boolean {\n return this.variant === 'destructive';\n }\n\n get isTitleOnly(): boolean {\n return this.variant === 'title-only';\n }\n}\n\n","<section\n role=\"alert\"\n [ngClass]=\"[\n 'w-full rounded-lg border border-border bg-background p-4',\n className\n ]\"\n>\n <div [ngClass]=\"['flex gap-3', isDestructive ? 'items-start' : 'items-center']\">\n <span class=\"inline-flex h-6 w-6 shrink-0 items-center justify-center\">\n <svg *ngIf=\"!isDestructive && !isTitleOnly\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M8.5 12.5L10.8 14.8L15.8 9.8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <svg *ngIf=\"isTitleOnly\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 8H19\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <path d=\"M9 8V6.5C9 5.67 9.67 5 10.5 5H13.5C14.33 5 15 5.67 15 6.5V8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <path d=\"M7 8L8 18.5C8.07 19.33 8.77 20 9.6 20H14.4C15.23 20 15.93 19.33 16 18.5L17 8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n <svg *ngIf=\"isDestructive\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-destructive\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M12 8V12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\"></circle>\n </svg>\n </span>\n\n <div class=\"min-w-0 flex-1\">\n <h4\n [ngClass]=\"[\n 'm-0 text-sm font-medium',\n isDestructive ? 'text-destructive' : 'text-foreground'\n ]\"\n >\n {{ title }}\n </h4>\n\n <p\n *ngIf=\"!isTitleOnly && description\"\n [ngClass]=\"[\n 'm-0 mt-0.5 text-sm',\n isDestructive ? 'text-destructive' : 'text-muted-foreground'\n ]\"\n >\n {{ description }}\n </p>\n\n <ul *ngIf=\"isDestructive && details.length\" class=\"m-0 mt-1 pl-5 text-sm text-destructive\">\n <li *ngFor=\"let item of details\">{{ item }}</li>\n </ul>\n </div>\n </div>\n</section>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'pdm-alert-dialog',\n templateUrl: './alert-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmAlertDialogComponent {\n @Input() open = false;\n @Input() showTrigger = false;\n @Input() triggerText = 'Show dialog';\n @Input() title = 'Are you absolutely sure?';\n @Input() description = '';\n @Input() confirmText = 'Continue';\n @Input() cancelText = 'Cancel';\n @Input() className = '';\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output() confirm = new EventEmitter<void>();\n @Output() cancel = new EventEmitter<void>();\n\n onTriggerClick(): void {\n this.open = true;\n this.openChange.emit(true);\n }\n\n onCancel(): void {\n this.cancel.emit();\n this.open = false;\n this.openChange.emit(false);\n }\n\n onConfirm(): void {\n this.confirm.emit();\n this.open = false;\n this.openChange.emit(false);\n }\n\n @HostListener('document:keydown.escape')\n onEsc(): void {\n if (this.open) {\n this.onCancel();\n }\n }\n}\n","<button\n *ngIf=\"showTrigger && !open\"\n type=\"button\"\n class=\"inline-flex h-9 appearance-none items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm\"\n (click)=\"onTriggerClick()\"\n>\n {{ triggerText }}\n</button>\n\n<div *ngIf=\"open\" class=\"fixed inset-0 z-50 flex items-center justify-center p-5\">\n <div class=\"absolute inset-0 bg-foreground/30\" (click)=\"onCancel()\"></div>\n <section\n role=\"alertdialog\"\n aria-modal=\"true\"\n [ngClass]=\"[\n 'relative z-10 w-full max-w-lg rounded-lg border border-border bg-background p-6 text-foreground shadow-lg',\n className\n ]\"\n >\n <div class=\"flex flex-col gap-2\">\n <h2 class=\"m-0 text-lg font-semibold leading-none tracking-tight\">{{ title }}</h2>\n <p *ngIf=\"description\" class=\"m-0 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n <div class=\"mt-4 flex items-center justify-end gap-2\">\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm\"\n (click)=\"onCancel()\"\n >\n {{ cancelText }}\n </button>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm\"\n (click)=\"onConfirm()\"\n >\n {{ confirmText }}\n </button>\n </div>\n </section>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-aspect-ratio',\n templateUrl: './aspect-ratio.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmAspectRatioComponent {\n @Input() ratio = 16 / 9;\n @Input() imageSrc = '';\n @Input() imageAlt = '';\n @Input() className = '';\n\n get paddingTop(): string {\n if (!this.ratio || this.ratio <= 0) return '56.25%';\n return (100 / this.ratio).toFixed(4) + '%';\n }\n}\n","<div class=\"relative w-full\" [ngClass]=\"className\" [style.paddingTop]=\"paddingTop\">\n <div class=\"absolute inset-0 overflow-hidden rounded-lg\">\n <img\n *ngIf=\"imageSrc\"\n [src]=\"imageSrc\"\n [alt]=\"imageAlt\"\n class=\"pointer-events-none h-full w-full rounded-lg object-cover\"\n />\n <ng-content></ng-content>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmAvatarShape = 'circle' | 'square';\n\n@Component({\n selector: 'pdm-avatar',\n templateUrl: './avatar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmAvatarComponent {\n @Input() src = '';\n @Input() alt = 'Avatar';\n @Input() fallback = 'U';\n @Input() shape: PdmAvatarShape = 'circle';\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() groupSources: string[] = [];\n @Input() className = '';\n\n readonly sizeClasses = {\n sm: 'h-8 w-8',\n md: 'h-10 w-10',\n lg: 'h-12 w-12'\n };\n\n get isGroup(): boolean {\n return this.groupSources.length > 0;\n }\n\n get radiusClass(): string {\n return this.shape === 'square' ? 'rounded-[8px]' : 'rounded-full';\n }\n}\n","<div *ngIf=\"!isGroup\" [ngClass]=\"['relative flex shrink-0 overflow-hidden', radiusClass, sizeClasses[size], className]\">\n <img *ngIf=\"src\" [src]=\"src\" [alt]=\"alt\" [ngClass]=\"['aspect-square h-full w-full object-cover', radiusClass]\" />\n <div\n *ngIf=\"!src\"\n [ngClass]=\"['flex h-full w-full items-center justify-center bg-muted text-xs text-muted-foreground', radiusClass]\"\n >\n {{ fallback }}\n </div>\n</div>\n\n<div *ngIf=\"isGroup\" [ngClass]=\"['inline-flex items-center pr-2', className]\">\n <div\n *ngFor=\"let groupSrc of groupSources; let i = index\"\n [ngClass]=\"[\n 'relative h-8 w-8 shrink-0 overflow-hidden rounded-full',\n i > 0 ? '-mr-2 border border-border' : '-mr-2'\n ]\"\n >\n <img [src]=\"groupSrc\" [alt]=\"alt + ' ' + (i + 1)\" class=\"h-full w-full rounded-full object-cover\" />\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmBadgeVariant =\n | 'default'\n | 'secondary'\n | 'destructive'\n | 'outline'\n | 'icon'\n | 'number'\n | 'destructive-number'\n | 'secondary-number';\n\n@Component({\n selector: 'pdm-badge',\n templateUrl: './badge.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmBadgeComponent {\n @Input() variant: PdmBadgeVariant = 'default';\n @Input() text = 'Badge';\n @Input() className = '';\n}\n\n","<span\n [ngClass]=\"[\n 'inline-flex items-center justify-center text-center align-middle rounded-full px-2.5 py-0.5 text-xs font-semibold',\n variant === 'default' ? 'bg-primary text-primary-foreground' : '',\n variant === 'secondary' ? 'bg-secondary text-secondary-foreground' : '',\n variant === 'destructive' ? 'bg-destructive text-destructive-foreground' : '',\n variant === 'outline' ? 'border border-input text-foreground' : '',\n variant === 'icon' ? 'gap-1 bg-primary text-primary-foreground' : '',\n variant === 'number' ? 'min-w-5 rounded-full bg-primary px-1.5 text-primary-foreground' : '',\n variant === 'destructive-number' ? 'min-w-5 rounded-full bg-destructive px-1.5 text-destructive-foreground' : '',\n variant === 'secondary-number' ? 'min-w-5 rounded-full border border-input px-1.5 text-foreground' : '',\n className\n ]\"\n>\n <svg\n *ngIf=\"variant === 'icon'\"\n viewBox=\"0 0 24 24\"\n class=\"h-4 w-4\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M8.5 12.5L10.8 14.8L15.8 9.8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <span [ngClass]=\"[variant === 'secondary-number' ? 'font-mono' : '']\">{{ text }}</span>\n</span>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmBreadcrumbMode =\n | 'custom-separator'\n | 'dropdown'\n | 'collapsed'\n | 'link-component'\n | 'responsive';\n\n@Component({\n selector: 'pdm-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmBreadcrumbComponent {\n @Input() mode: PdmBreadcrumbMode = 'link-component';\n @Input() items: string[] = ['Home', 'Components', 'Breadcrumb'];\n @Input() className = '';\n\n get renderedItems(): string[] {\n if ((this.mode === 'collapsed' || this.mode === 'responsive') && this.items.length > 3) {\n return [this.items[0], '...', this.items[this.items.length - 2], this.items[this.items.length - 1]];\n }\n return this.items;\n }\n}\n","<nav\n aria-label=\"breadcrumb\"\n [ngClass]=\"['inline-flex items-center gap-1.5 text-sm', className]\"\n>\n <ng-container *ngFor=\"let item of renderedItems; let i = index; let last = last\">\n <span [ngClass]=\"[last ? 'text-foreground' : 'text-muted-foreground']\">{{ item }}</span>\n\n <ng-container *ngIf=\"!last\">\n <span class=\"inline-flex h-6 w-6 items-center justify-center text-muted-foreground\" aria-hidden=\"true\">\n <svg\n *ngIf=\"mode === 'custom-separator' && item !== '...'\"\n viewBox=\"0 0 24 24\"\n class=\"h-4 w-4\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M8 20L16 4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" />\n </svg>\n <svg\n *ngIf=\"(mode !== 'custom-separator' && item !== '...') || item === '...'\"\n viewBox=\"0 0 24 24\"\n class=\"h-4 w-4\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M9 6L15 12L9 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </ng-container>\n\n <ng-container *ngIf=\"mode === 'dropdown' && i === 1 && item !== '...' && !last\">\n <span class=\"-ml-2 inline-flex h-6 w-6 items-center justify-center text-muted-foreground\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 10L12 15L17 10\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </ng-container>\n </ng-container>\n</nav>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmButtonGroupVariant = 'default' | 'group' | 'orientation' | 'separator';\nexport type PdmButtonGroupOrientation = 'horizontal' | 'vertical';\n\n@Component({\n selector: 'pdm-button-group',\n templateUrl: './button-group.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmButtonGroupComponent {\n @Input() variant: PdmButtonGroupVariant = 'default';\n @Input() orientation?: PdmButtonGroupOrientation;\n @Input() direction?: PdmButtonGroupOrientation;\n @Input() separated = true;\n @Input() className = '';\n\n get rootClasses(): string[] {\n const effectiveOrientation = this.orientation ?? this.direction ?? 'horizontal';\n const isVertical = this.variant === 'orientation' || effectiveOrientation === 'vertical';\n const isGroup = this.variant === 'group';\n const isAttached = !this.separated && this.variant !== 'default';\n const isSeparator = this.variant === 'separator';\n\n const attachedClasses = isAttached && !isGroup\n ? isVertical\n ? [\n '[&>*]:rounded-none',\n '[&>*:first-child]:rounded-t-md',\n '[&>*:last-child]:rounded-b-md',\n '[&>*:not(:first-child)]:border-t-0',\n '[&>*:not(:first-child)]:-mt-px'\n ].join(' ')\n : [\n '[&>*]:rounded-none',\n '[&>*:first-child]:rounded-l-md',\n '[&>*:last-child]:rounded-r-md',\n '[&>*:not(:first-child)]:border-l-0',\n '[&>*:not(:first-child)]:-ml-px'\n ].join(' ')\n : '';\n\n const groupHorizontalClasses = isGroup && !isVertical && !this.separated\n ? [\n '[&>*]:rounded-none',\n '[&>*:first-child]:rounded-l-md',\n '[&>*:last-child]:rounded-r-md',\n '[&>*:not(:first-child)]:-ml-px',\n '[&>*:not(:first-child)]:border-l-0',\n '[&>pdm-button]:flex',\n '[&>pdm-button>button]:h-9',\n '[&>pdm-input]:flex-1',\n '[&>pdm-input>div]:w-full',\n '[&>pdm-select>select]:!rounded-none',\n '[&>pdm-select:first-child>select]:!rounded-l-md',\n '[&>pdm-select:last-child>select]:!rounded-r-md',\n '[&>pdm-select>select]:shadow-none',\n '[&>pdm-select>div>button]:!rounded-none',\n '[&>pdm-select:first-child>div>button]:!rounded-l-md',\n '[&>pdm-select:last-child>div>button]:!rounded-r-md',\n '[&>pdm-select:not(:first-child)>div>button]:!rounded-l-none',\n '[&>pdm-select:not(:last-child)>div>button]:!rounded-r-none',\n '[&>pdm-select>div>button]:shadow-none',\n '[&>pdm-button>button]:!rounded-none',\n '[&>pdm-button:first-child>button]:!rounded-l-md',\n '[&>pdm-button:last-child>button]:!rounded-r-md',\n '[&>pdm-input>div>input]:!rounded-none',\n '[&>pdm-input:first-child>div>input]:!rounded-l-md',\n '[&>pdm-input:last-child>div>input]:!rounded-r-md',\n '[&>pdm-input-group>div]:!rounded-none',\n '[&>pdm-input-group:first-child>div]:!rounded-l-md',\n '[&>pdm-input-group:last-child>div]:!rounded-r-md',\n '[&>pdm-input>div>input]:bg-background',\n '[&>pdm-input>div>input]:shadow-none',\n '[&>pdm-button>button]:rounded-l-none',\n '[&>pdm-button>button]:shadow-none',\n '[&>pdm-tooltip>span>*]:rounded-none',\n '[&>pdm-tooltip:first-child>span>*]:rounded-l-md',\n '[&>pdm-tooltip:last-child>span>*]:rounded-r-md',\n '[&>pdm-tooltip:not(:first-child)>span>*]:border-l-0',\n '[&>pdm-tooltip>span>pdm-button>button]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-button>button]:!rounded-l-md',\n '[&>pdm-tooltip:last-child>span>pdm-button>button]:!rounded-r-md',\n '[&>pdm-tooltip>span>pdm-button>button]:shadow-none',\n '[&>pdm-tooltip>span>button]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>button]:!rounded-l-md',\n '[&>pdm-tooltip:last-child>span>button]:!rounded-r-md',\n '[&>pdm-tooltip>span>button]:shadow-none',\n '[&>pdm-tooltip>span>pdm-input>div>input]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-input>div>input]:!rounded-l-md',\n '[&>pdm-tooltip:last-child>span>pdm-input>div>input]:!rounded-r-md',\n '[&>pdm-tooltip>span>pdm-input>div>input]:shadow-none',\n '[&>pdm-tooltip>span>input]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>input]:!rounded-l-md',\n '[&>pdm-tooltip:last-child>span>input]:!rounded-r-md',\n '[&>pdm-tooltip>span>input]:shadow-none',\n '[&>pdm-tooltip>span>pdm-input-group>div]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-input-group>div]:!rounded-l-md',\n '[&>pdm-tooltip:last-child>span>pdm-input-group>div]:!rounded-r-md',\n '[&>pdm-tooltip>span>pdm-select>select]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-select>select]:!rounded-l-md',\n '[&>pdm-tooltip:last-child>span>pdm-select>select]:!rounded-r-md',\n '[&>pdm-tooltip>span>pdm-select>select]:shadow-none',\n '[&>pdm-tooltip>span>pdm-select>div>button]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-select>div>button]:!rounded-l-md',\n '[&>pdm-tooltip:last-child>span>pdm-select>div>button]:!rounded-r-md',\n '[&>pdm-tooltip:not(:first-child)>span>pdm-select>div>button]:!rounded-l-none',\n '[&>pdm-tooltip:not(:last-child)>span>pdm-select>div>button]:!rounded-r-none',\n '[&>pdm-tooltip>span>pdm-select>div>button]:shadow-none',\n '[&>pdm-tooltip>span>select]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>select]:!rounded-l-md',\n '[&>pdm-tooltip:last-child>span>select]:!rounded-r-md',\n '[&>pdm-tooltip>span>select]:shadow-none'\n ].join(' ')\n : '';\n\n const groupVerticalClasses = isGroup && isVertical && !this.separated\n ? [\n '[&>*]:rounded-none',\n '[&>*:first-child]:rounded-t-md',\n '[&>*:last-child]:rounded-b-md',\n '[&>*:not(:first-child)]:-mt-px',\n '[&>*:not(:first-child)]:border-t-0',\n '[&>pdm-button]:flex',\n '[&>pdm-button>button]:h-9',\n '[&>pdm-button>button]:!rounded-none',\n '[&>pdm-button:first-child>button]:!rounded-t-md',\n '[&>pdm-button:last-child>button]:!rounded-b-md',\n '[&>pdm-input>div>input]:!rounded-none',\n '[&>pdm-input:first-child>div>input]:!rounded-t-md',\n '[&>pdm-input:last-child>div>input]:!rounded-b-md',\n '[&>pdm-input-group>div]:!rounded-none',\n '[&>pdm-input-group:first-child>div]:!rounded-t-md',\n '[&>pdm-input-group:last-child>div]:!rounded-b-md',\n '[&>pdm-select>select]:!rounded-none',\n '[&>pdm-select:first-child>select]:!rounded-t-md',\n '[&>pdm-select:last-child>select]:!rounded-b-md',\n '[&>pdm-select>select]:shadow-none',\n '[&>pdm-select>div>button]:!rounded-none',\n '[&>pdm-select:first-child>div>button]:!rounded-t-md',\n '[&>pdm-select:last-child>div>button]:!rounded-b-md',\n '[&>pdm-select:not(:first-child)>div>button]:!rounded-t-none',\n '[&>pdm-select:not(:last-child)>div>button]:!rounded-b-none',\n '[&>pdm-select>div>button]:shadow-none',\n '[&>pdm-input>div>input]:bg-background',\n '[&>pdm-input>div>input]:shadow-none',\n '[&>pdm-button>button]:shadow-none',\n '[&>pdm-tooltip>span>*]:rounded-none',\n '[&>pdm-tooltip:first-child>span>*]:rounded-t-md',\n '[&>pdm-tooltip:last-child>span>*]:rounded-b-md',\n '[&>pdm-tooltip:not(:first-child)>span>*]:border-t-0',\n '[&>pdm-tooltip>span>pdm-button>button]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-button>button]:!rounded-t-md',\n '[&>pdm-tooltip:last-child>span>pdm-button>button]:!rounded-b-md',\n '[&>pdm-tooltip>span>pdm-button>button]:shadow-none',\n '[&>pdm-tooltip>span>button]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>button]:!rounded-t-md',\n '[&>pdm-tooltip:last-child>span>button]:!rounded-b-md',\n '[&>pdm-tooltip>span>button]:shadow-none',\n '[&>pdm-tooltip>span>pdm-input>div>input]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-input>div>input]:!rounded-t-md',\n '[&>pdm-tooltip:last-child>span>pdm-input>div>input]:!rounded-b-md',\n '[&>pdm-tooltip>span>pdm-input>div>input]:shadow-none',\n '[&>pdm-tooltip>span>input]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>input]:!rounded-t-md',\n '[&>pdm-tooltip:last-child>span>input]:!rounded-b-md',\n '[&>pdm-tooltip>span>input]:shadow-none',\n '[&>pdm-tooltip>span>pdm-input-group>div]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-input-group>div]:!rounded-t-md',\n '[&>pdm-tooltip:last-child>span>pdm-input-group>div]:!rounded-b-md',\n '[&>pdm-tooltip>span>pdm-select>select]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-select>select]:!rounded-t-md',\n '[&>pdm-tooltip:last-child>span>pdm-select>select]:!rounded-b-md',\n '[&>pdm-tooltip>span>pdm-select>select]:shadow-none',\n '[&>pdm-tooltip>span>pdm-select>div>button]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-select>div>button]:!rounded-t-md',\n '[&>pdm-tooltip:last-child>span>pdm-select>div>button]:!rounded-b-md',\n '[&>pdm-tooltip:not(:first-child)>span>pdm-select>div>button]:!rounded-t-none',\n '[&>pdm-tooltip:not(:last-child)>span>pdm-select>div>button]:!rounded-b-none',\n '[&>pdm-tooltip>span>pdm-select>div>button]:shadow-none',\n '[&>pdm-tooltip>span>select]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>select]:!rounded-t-md',\n '[&>pdm-tooltip:last-child>span>select]:!rounded-b-md',\n '[&>pdm-tooltip>span>select]:shadow-none'\n ].join(' ')\n : '';\n\n return [\n 'inline-flex w-fit',\n isVertical ? 'flex-col items-stretch' : 'items-center',\n this.variant === 'default' || this.separated ? 'gap-2' : 'gap-0',\n isGroup ? '*:focus-visible:relative *:focus-visible:z-10' : '',\n attachedClasses,\n groupHorizontalClasses,\n groupVerticalClasses,\n isSeparator\n ? 'overflow-hidden rounded-md border border-border bg-secondary shadow-sm'\n : '',\n this.className\n ];\n }\n}\n","<div\n role=\"group\"\n [attr.aria-orientation]=\"variant === 'orientation' || orientation === 'vertical' || direction === 'vertical' ? 'vertical' : 'horizontal'\"\n [ngClass]=\"rootClasses\"\n>\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmButtonVariant =\n | 'default'\n | 'primary'\n | 'destructive'\n | 'outline'\n | 'subtle'\n | 'secondary'\n | 'ghost'\n | 'link'\n | 'with-icon'\n | 'icon'\n | 'icon-circle'\n | 'rounded'\n | 'loading';\nexport type PdmButtonState = 'default' | 'hover';\nexport type PdmButtonSize = 'small' | 'default' | 'large';\n\n@Component({\n selector: 'pdm-button',\n templateUrl: './button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmButtonComponent {\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n @Input() variant: PdmButtonVariant | string = 'default';\n @Input() state: PdmButtonState | string = 'default';\n @Input() size: PdmButtonSize | string = 'default';\n @Input() disabled = false;\n @Input() loading = false;\n @Input() className = '';\n\n @Output() pressed = new EventEmitter<MouseEvent>();\n\n readonly toneClassMap: Record<PdmButtonVariant, { default: string; hover: string }> = {\n default: { default: 'border-primary bg-primary text-primary-foreground', hover: 'border-primary bg-primary text-primary-foreground opacity-90' },\n primary: { default: 'border-primary bg-primary text-primary-foreground', hover: 'border-primary bg-primary text-primary-foreground opacity-90' },\n destructive: { default: 'border-border bg-destructive text-destructive-foreground', hover: 'border-border bg-destructive text-destructive-foreground opacity-90' },\n outline: { default: 'border-border bg-background text-foreground', hover: 'border-border bg-muted text-foreground' },\n subtle: { default: 'border-secondary bg-secondary text-secondary-foreground', hover: 'border-accent bg-accent text-accent-foreground' },\n secondary: { default: 'border-secondary bg-secondary text-secondary-foreground', hover: 'border-accent bg-accent text-accent-foreground' },\n ghost: { default: 'border-border bg-transparent text-foreground', hover: 'border-border bg-accent text-accent-foreground' },\n link: { default: 'border-border bg-transparent text-primary', hover: 'border-border bg-transparent text-primary underline underline-offset-4' },\n 'with-icon': { default: 'border-primary bg-primary text-primary-foreground', hover: 'border-primary bg-primary text-primary-foreground opacity-90' },\n icon: { default: 'border-border bg-background text-foreground', hover: 'border-border bg-accent text-accent-foreground' },\n 'icon-circle': { default: 'border-border bg-background text-foreground', hover: 'border-border bg-accent text-accent-foreground' },\n rounded: { default: 'border-border bg-background text-foreground', hover: 'border-border bg-accent text-accent-foreground' },\n loading: { default: 'border-primary bg-primary text-primary-foreground opacity-70', hover: 'border-primary bg-primary text-primary-foreground opacity-70' }\n };\n\n get isDisabled(): boolean {\n return this.disabled || this.loading || this.variant === 'loading';\n }\n\n get resolvedVariant(): PdmButtonVariant {\n return this.isValidVariant(this.variant) ? this.variant : 'default';\n }\n\n get resolvedState(): PdmButtonState {\n return this.state === 'hover' ? 'hover' : 'default';\n }\n\n get resolvedSize(): PdmButtonSize {\n if (this.size === 'small' || this.size === 'large') {\n return this.size;\n }\n\n return 'default';\n }\n\n get showsIconSlot(): boolean {\n const variant = this.resolvedVariant;\n return variant === 'with-icon' || variant === 'icon' || variant === 'icon-circle' || variant === 'rounded';\n }\n\n get rootClasses(): string[] {\n const currentState = this.resolvedState;\n const variant = this.resolvedVariant;\n const toneClass = this.toneClassMap[variant][currentState];\n\n return [\n 'inline-flex appearance-none items-center justify-center gap-2 rounded-md border text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-clip-padding',\n variant === 'link' ? 'px-4 py-2 h-9' : '',\n variant === 'icon' ? 'h-9 w-9 p-0' : '',\n variant === 'icon-circle' ? 'h-10 w-10 rounded-full p-0' : '',\n variant === 'rounded' ? 'h-9 w-9 rounded-full p-0' : '',\n variant !== 'icon' && variant !== 'icon-circle' && variant !== 'rounded'\n ? this.resolvedSize === 'small'\n ? 'h-8 px-3 text-xs'\n : this.resolvedSize === 'large'\n ? 'h-10 px-8'\n : 'h-9 px-4'\n : '',\n variant === 'link' && currentState === 'hover' ? 'underline underline-offset-4' : '',\n toneClass,\n this.className\n ];\n }\n\n onClick(event: MouseEvent): void {\n if (!this.isDisabled) {\n this.pressed.emit(event);\n }\n }\n\n private isValidVariant(value: unknown): value is PdmButtonVariant {\n return (\n value === 'default' ||\n value === 'primary' ||\n value === 'destructive' ||\n value === 'outline' ||\n value === 'subtle' ||\n value === 'secondary' ||\n value === 'ghost' ||\n value === 'link' ||\n value === 'with-icon' ||\n value === 'icon' ||\n value === 'icon-circle' ||\n value === 'rounded' ||\n value === 'loading'\n );\n }\n}\n","<button\n [type]=\"type\"\n [disabled]=\"isDisabled\"\n [attr.aria-busy]=\"loading\"\n [ngClass]=\"rootClasses\"\n (click)=\"onClick($event)\"\n>\n <span\n *ngIf=\"loading\"\n class=\"inline-block h-4 w-4 animate-spin rounded-full border-2 border-current border-r-transparent\"\n aria-hidden=\"true\"\n ></span>\n <ng-content select=\"[pdmButtonIcon]\" *ngIf=\"showsIconSlot\"></ng-content>\n <ng-content></ng-content>\n</button>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmCalendarVariant = 'single' | 'range';\n\nexport interface PdmCalendarRange {\n start: Date | null;\n end: Date | null;\n}\n\ninterface PdmCalendarCell {\n date: Date;\n label: number;\n muted: boolean;\n disabled: boolean;\n selected: boolean;\n inRange: boolean;\n rangeFill: boolean;\n rangeLeftCap: boolean;\n rangeRightCap: boolean;\n}\n\ninterface PdmCalendarMonthView {\n date: Date;\n title: string;\n titleStyle: 'dropdowns' | 'plain';\n dropdownMonth?: string;\n dropdownYear?: string;\n showPrevButton: boolean;\n showNextButton: boolean;\n weeks: readonly (readonly PdmCalendarCell[])[];\n}\n\nconst DAY_MS = 24 * 60 * 60 * 1000;\n\n@Component({\n selector: 'pdm-calendar',\n templateUrl: './calendar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmCalendarComponent {\n private _value: Date | null = null;\n private _rangeValue: PdmCalendarRange | null = null;\n private _month: Date | null = null;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n @Input() variant: PdmCalendarVariant | string = 'single';\n @Input() className = '';\n @Input() disabledDates: Date[] = [];\n @Input() minDate: Date | null = null;\n @Input() maxDate: Date | null = null;\n @Input() minYear: number | null = null;\n @Input() maxYear: number | null = null;\n @Input() isDateDisabled: ((date: Date) => boolean) | null = null;\n @Input() allowSameDayRange = true;\n @Input() readonly = false;\n\n @Output() valueChange = new EventEmitter<Date | null>();\n @Output() rangeValueChange = new EventEmitter<PdmCalendarRange | null>();\n @Output() monthChange = new EventEmitter<Date>();\n @Output() dateClick = new EventEmitter<Date>();\n @Output() disabledDateClick = new EventEmitter<Date>();\n\n @Input()\n set value(value: Date | null) {\n this._value = this.normalizeDate(value);\n }\n get value(): Date | null {\n return this._value;\n }\n\n @Input()\n set rangeValue(value: PdmCalendarRange | null) {\n this._rangeValue = value\n ? {\n start: this.normalizeDate(value.start),\n end: this.normalizeDate(value.end)\n }\n : null;\n }\n get rangeValue(): PdmCalendarRange | null {\n return this._rangeValue;\n }\n\n @Input()\n set month(value: Date | null) {\n this._month = value ? this.startOfMonth(value) : null;\n }\n get month(): Date | null {\n return this._month;\n }\n\n readonly weekdays = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] as const;\n readonly monthOptions = [\n { value: 0, label: 'Jan' },\n { value: 1, label: 'Feb' },\n { value: 2, label: 'Mar' },\n { value: 3, label: 'Apr' },\n { value: 4, label: 'May' },\n { value: 5, label: 'Jun' },\n { value: 6, label: 'Jul' },\n { value: 7, label: 'Aug' },\n { value: 8, label: 'Sep' },\n { value: 9, label: 'Oct' },\n { value: 10, label: 'Nov' },\n { value: 11, label: 'Dec' }\n ] as const;\n\n get resolvedVariant(): PdmCalendarVariant {\n return this.variant === 'range' ? 'range' : 'single';\n }\n\n get visibleMonths(): readonly PdmCalendarMonthView[] {\n const baseMonth = this.getAnchorMonth();\n\n if (this.resolvedVariant === 'single') {\n return [\n {\n date: baseMonth,\n title: this.formatMonthYear(baseMonth),\n titleStyle: 'dropdowns',\n dropdownMonth: this.formatMonthShort(baseMonth),\n dropdownYear: String(baseMonth.getFullYear()),\n showPrevButton: true,\n showNextButton: true,\n weeks: this.buildMonthWeeks(baseMonth, false)\n }\n ];\n }\n\n const nextMonth = this.addMonths(baseMonth, 1);\n return [\n {\n date: baseMonth,\n title: this.formatMonthYear(baseMonth),\n titleStyle: 'plain',\n showPrevButton: true,\n showNextButton: false,\n weeks: this.buildMonthWeeks(baseMonth, true)\n },\n {\n date: nextMonth,\n title: this.formatMonthYear(nextMonth),\n titleStyle: 'plain',\n showPrevButton: false,\n showNextButton: true,\n weeks: this.buildMonthWeeks(nextMonth, true)\n }\n ];\n }\n\n get singleHeaderMonth(): number {\n return this.getAnchorMonth().getMonth();\n }\n\n get singleHeaderYear(): number {\n return this.getAnchorMonth().getFullYear();\n }\n\n get yearOptions(): readonly number[] {\n const baseYear = new Date().getFullYear();\n const selectedYear = this.singleHeaderYear;\n let minYear = this.minYear ?? (this.minDate ? this.minDate.getFullYear() : baseYear - 100);\n let maxYear = this.maxYear ?? (this.maxDate ? this.maxDate.getFullYear() : baseYear + 10);\n const years: number[] = [];\n\n if (selectedYear < minYear) {\n minYear = selectedYear;\n }\n\n if (selectedYear > maxYear) {\n maxYear = selectedYear;\n }\n\n if (minYear > maxYear) {\n const nextMin = maxYear;\n maxYear = minYear;\n minYear = nextMin;\n }\n\n for (let year = minYear; year <= maxYear; year += 1) {\n years.push(year);\n }\n\n return years;\n }\n\n get rootClasses(): string[] {\n return [\n 'border-border bg-background relative rounded-[10px] border p-3 shadow-sm',\n this.resolvedVariant === 'range'\n ? 'inline-flex items-start justify-center gap-4 shrink-0 grow-0 basis-auto'\n : 'inline-flex flex-col gap-4 shrink-0 grow-0 basis-auto',\n this.className\n ];\n }\n\n get rootStyle(): Record<string, string> {\n const width = this.resolvedVariant === 'range' ? '488px' : '250px';\n\n return {\n width,\n minWidth: width,\n maxWidth: width,\n minHeight: '293px',\n flex: '0 0 auto',\n alignSelf: 'flex-start'\n };\n }\n\n monthPanelClasses(_index: number): string[] {\n return ['flex flex-col items-start', this.resolvedVariant === 'range' ? 'w-[224px] gap-4' : 'w-full gap-0'];\n }\n\n headerClasses(month: PdmCalendarMonthView): string[] {\n return ['flex w-full items-center justify-between', month.titleStyle === 'dropdowns' ? '' : 'mb-4'];\n }\n\n navButtonClasses(): string[] {\n return [\n 'flex h-8 w-8 appearance-none items-center justify-center rounded-md border-0 bg-transparent p-0 text-foreground',\n 'disabled:pointer-events-none disabled:opacity-40'\n ];\n }\n\n navPlaceholderClasses(): string[] {\n return ['h-7 w-7 shrink-0'];\n }\n\n dropdownWrapClasses(): string[] {\n return ['flex w-40 items-center justify-center gap-2'];\n }\n\n dropdownClasses(widthClass: string): string[] {\n return ['flex h-8 items-center justify-center gap-1 px-1', widthClass];\n }\n\n dropdownSelectClasses(): string[] {\n return [\n 'text-foreground h-full bg-transparent text-sm font-medium leading-5',\n 'appearance-none border-0 outline-none ring-0 focus:outline-none focus:ring-0 text-center cursor-pointer'\n ];\n }\n\n get dropdownSelectStyle(): Record<string, string> {\n return {\n appearance: 'none',\n WebkitAppearance: 'none',\n MozAppearance: 'none',\n background: 'transparent',\n border: '0',\n boxShadow: 'none',\n outline: '0',\n padding: '0',\n margin: '0'\n };\n }\n\n calendarGridWrapClasses(): string[] {\n return ['flex w-full flex-col items-start'];\n }\n\n weekdayRowClasses(): string[] {\n return ['flex w-full items-center'];\n }\n\n weekdayCellClasses(): string[] {\n return ['text-muted-foreground flex h-[21px] w-8 items-center justify-center rounded-md text-xs leading-4'];\n }\n\n weekRowClasses(): string[] {\n return ['flex w-full items-start pt-2'];\n }\n\n dayCellClasses(cell: PdmCalendarCell): string[] {\n return [\n 'relative flex h-8 w-8 shrink-0 items-center justify-center',\n cell.rangeFill ? 'bg-accent' : '',\n cell.rangeLeftCap ? 'rounded-l-md' : '',\n cell.rangeRightCap ? 'rounded-r-md' : ''\n ];\n }\n\n dayButtonClasses(cell: PdmCalendarCell): string[] {\n return [\n 'relative z-10 flex h-8 w-8 appearance-none items-center justify-center rounded-md border-0 p-0 text-sm leading-5',\n cell.selected\n ? 'bg-primary text-primary-foreground'\n : cell.rangeFill\n ? 'bg-transparent text-accent-foreground'\n : 'bg-transparent text-foreground',\n cell.muted && !cell.rangeFill ? 'opacity-50' : '',\n cell.disabled ? 'cursor-not-allowed opacity-40' : '',\n !cell.disabled && !this.readonly && !cell.selected ? 'hover:bg-accent/70' : ''\n ];\n }\n\n dayLabelClasses(_cell: PdmCalendarCell): string[] {\n return ['font-normal'];\n }\n\n trackByIndex = (index: number): number => {\n return index;\n }\n\n trackByDate = (_index: number, cell: PdmCalendarCell): string => {\n return this.dateKey(cell.date);\n }\n\n goToPreviousMonth(): void {\n this.setAnchorMonth(this.addMonths(this.getAnchorMonth(), -1));\n }\n\n goToNextMonth(): void {\n this.setAnchorMonth(this.addMonths(this.getAnchorMonth(), 1));\n }\n\n onSingleMonthChange(monthValue: string): void {\n const month = Number(monthValue);\n if (Number.isNaN(month) || month < 0 || month > 11) {\n return;\n }\n\n const anchor = this.getAnchorMonth();\n this.setAnchorMonth(new Date(anchor.getFullYear(), month, 1));\n }\n\n onSingleYearChange(yearValue: string): void {\n const year = Number(yearValue);\n if (Number.isNaN(year)) {\n return;\n }\n\n const anchor = this.getAnchorMonth();\n this.setAnchorMonth(new Date(year, anchor.getMonth(), 1));\n }\n\n onDatePressed(cell: PdmCalendarCell): void {\n const date = this.cloneDate(cell.date);\n\n if (cell.disabled) {\n this.disabledDateClick.emit(date);\n return;\n }\n\n if (this.readonly) {\n return;\n }\n\n this.dateClick.emit(date);\n\n if (this.resolvedVariant === 'single') {\n this._value = date;\n this.valueChange.emit(this.cloneDate(date));\n this.syncVisibleMonthToDate(date);\n this.cdr.markForCheck();\n return;\n }\n\n this.handleRangeSelection(date);\n this.cdr.markForCheck();\n }\n\n private handleRangeSelection(date: Date): void {\n const current = this._rangeValue;\n const currentStart = current?.start ? this.cloneDate(current.start) : null;\n const currentEnd = current?.end ? this.cloneDate(current.end) : null;\n\n if (!currentStart || (currentStart && currentEnd)) {\n this._rangeValue = { start: date, end: null };\n this.rangeValueChange.emit({ start: this.cloneDate(date), end: null });\n this.syncVisibleMonthToDate(date);\n return;\n }\n\n if (this.isSameDay(currentStart, date) && !this.allowSameDayRange) {\n this._rangeValue = { start: date, end: null };\n this.rangeValueChange.emit({ start: this.cloneDate(date), end: null });\n return;\n }\n\n const start = this.compareDate(date, currentStart) < 0 ? date : currentStart;\n const end = this.compareDate(date, currentStart) < 0 ? currentStart : date;\n\n if (this.rangeContainsBlockedDate(start, end)) {\n this.disabledDateClick.emit(this.cloneDate(date));\n return;\n }\n\n this._rangeValue = { start, end };\n this.rangeValueChange.emit({ start: this.cloneDate(start), end: this.cloneDate(end) });\n this.syncVisibleMonthToDate(start);\n }\n\n private buildMonthWeeks(month: Date, includeRange: boolean): readonly (readonly PdmCalendarCell[])[] {\n const firstOfMonth = this.startOfMonth(month);\n const start = this.startOfWeek(firstOfMonth);\n const end = this.endOfWeek(this.endOfMonth(firstOfMonth));\n const weeks: PdmCalendarCell[][] = [];\n\n let cursor = this.cloneDate(start);\n while (this.compareDate(cursor, end) <= 0) {\n const row: PdmCalendarCell[] = [];\n\n for (let col = 0; col < 7; col += 1) {\n row.push(this.buildCell(cursor, month, includeRange));\n cursor = this.addDays(cursor, 1);\n }\n\n weeks.push(row);\n }\n\n for (const row of weeks) {\n for (let col = 0; col < row.length; col += 1) {\n const cell = row[col];\n if (!cell.inRange) {\n continue;\n }\n\n const leftInRow = col > 0 ? row[col - 1].inRange : false;\n const rightInRow = col < row.length - 1 ? row[col + 1].inRange : false;\n\n cell.rangeLeftCap = !leftInRow;\n cell.rangeRightCap = !rightInRow;\n }\n }\n\n return weeks;\n }\n\n private buildCell(date: Date, visibleMonth: Date, includeRange: boolean): PdmCalendarCell {\n const normalized = this.cloneDate(date);\n const inCurrentMonth = normalized.getMonth() === visibleMonth.getMonth() && normalized.getFullYear() === visibleMonth.getFullYear();\n const disabled = this.isBlocked(normalized);\n\n const selectedSingle = this.resolvedVariant === 'single' && !!this._value && this.isSameDay(normalized, this._value);\n const rangeStart = includeRange && !!this._rangeValue?.start && this.isSameDay(normalized, this._rangeValue.start);\n const rangeEnd = includeRange && !!this._rangeValue?.end && this.isSameDay(normalized, this._rangeValue.end);\n const inRange =\n includeRange &&\n !!this._rangeValue?.start &&\n !!this._rangeValue?.end &&\n this.compareDate(normalized, this._rangeValue.start) >= 0 &&\n this.compareDate(normalized, this._rangeValue.end) <= 0;\n\n return {\n date: normalized,\n label: normalized.getDate(),\n muted: !inCurrentMonth,\n disabled,\n selected: selectedSingle || rangeStart || rangeEnd,\n inRange,\n rangeFill: inRange,\n rangeLeftCap: false,\n rangeRightCap: false\n };\n }\n\n private getAnchorMonth(): Date {\n let candidate: Date | null = null;\n\n if (this._month) {\n candidate = this.cloneDate(this._month);\n } else if (this.resolvedVariant === 'single' && this._value) {\n candidate = this.startOfMonth(this._value);\n } else if (this.resolvedVariant === 'range' && this._rangeValue?.start) {\n candidate = this.startOfMonth(this._rangeValue.start);\n } else {\n candidate = this.startOfMonth(new Date());\n }\n\n if (!this.isValidDate(candidate)) {\n return this.startOfMonth(new Date());\n }\n\n return candidate;\n }\n\n private setAnchorMonth(month: Date): void {\n const normalized = this.startOfMonth(month);\n if (!this.isValidDate(normalized)) {\n return;\n }\n this._month = normalized;\n this.monthChange.emit(this.cloneDate(this._month));\n }\n\n private syncVisibleMonthToDate(date: Date): void {\n const nextMonth = this.startOfMonth(date);\n if (!this._month || !this.isSameMonth(this._month, nextMonth)) {\n this._month = nextMonth;\n this.monthChange.emit(this.cloneDate(nextMonth));\n }\n }\n\n private isBlocked(date: Date): boolean {\n if (this.minDate && this.compareDate(date, this.minDate) < 0) {\n return true;\n }\n\n if (this.maxDate && this.compareDate(date, this.maxDate) > 0) {\n return true;\n }\n\n const blockedSet = new Set((this.disabledDates || []).map((item) => this.dateKey(item)));\n if (blockedSet.has(this.dateKey(date))) {\n return true;\n }\n\n return !!this.isDateDisabled?.(this.cloneDate(date));\n }\n\n private rangeContainsBlockedDate(start: Date, end: Date): boolean {\n let cursor = this.cloneDate(start);\n\n while (this.compareDate(cursor, end) <= 0) {\n if (this.isBlocked(cursor)) {\n return true;\n }\n cursor = this.addDays(cursor, 1);\n }\n\n return false;\n }\n\n private normalizeDate(value: Date | null | undefined): Date | null {\n if (!(value instanceof Date) || Number.isNaN(value.getTime())) {\n return null;\n }\n\n return new Date(value.getFullYear(), value.getMonth(), value.getDate());\n }\n\n private cloneDate(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n private isValidDate(date: Date | null | undefined): date is Date {\n return !!date && date instanceof Date && !Number.isNaN(date.getTime());\n }\n\n private startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n }\n\n private endOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n }\n\n private startOfWeek(date: Date): Date {\n return this.addDays(date, -date.getDay());\n }\n\n private endOfWeek(date: Date): Date {\n return this.addDays(date, 6 - date.getDay());\n }\n\n private addMonths(date: Date, months: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + months, 1);\n }\n\n private addDays(date: Date, days: number): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days);\n }\n\n private compareDate(a: Date, b: Date): number {\n return this.dateValue(a) - this.dateValue(b);\n }\n\n private dateValue(date: Date): number {\n return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) / DAY_MS;\n }\n\n private isSameDay(a: Date, b: Date): boolean {\n return this.compareDate(a, b) === 0;\n }\n\n private isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n }\n\n private dateKey(date: Date): string {\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, '0');\n const d = String(date.getDate()).padStart(2, '0');\n return `${y}-${m}-${d}`;\n }\n\n private formatMonthShort(date: Date): string {\n return date.toLocaleString('en-US', { month: 'short' });\n }\n\n private formatMonthYear(date: Date): string {\n return date.toLocaleString('en-US', { month: 'long', year: 'numeric' });\n }\n}\n","<div [ngClass]=\"rootClasses\" [ngStyle]=\"rootStyle\">\n <div *ngFor=\"let month of visibleMonths; let monthIndex = index; trackBy: trackByIndex\" [ngClass]=\"monthPanelClasses(monthIndex)\">\n <div [ngClass]=\"headerClasses(month)\">\n <button\n *ngIf=\"month.showPrevButton; else prevPlaceholder\"\n type=\"button\"\n [ngClass]=\"navButtonClasses()\"\n aria-label=\"Previous month\"\n (click)=\"goToPreviousMonth()\"\n [disabled]=\"readonly\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <path d=\"m15 18-6-6 6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n <ng-template #prevPlaceholder>\n <div [ngClass]=\"navPlaceholderClasses()\" aria-hidden=\"true\"></div>\n </ng-template>\n\n <ng-container *ngIf=\"month.titleStyle === 'dropdowns'; else plainTitle\">\n <div [ngClass]=\"dropdownWrapClasses()\">\n <div [ngClass]=\"dropdownClasses('w-[72px]')\">\n <select\n [ngClass]=\"dropdownSelectClasses()\"\n [ngStyle]=\"dropdownSelectStyle\"\n [value]=\"singleHeaderMonth\"\n aria-label=\"Month\"\n (change)=\"onSingleMonthChange($any($event.target).value)\"\n >\n <option\n *ngFor=\"let monthOption of monthOptions\"\n [value]=\"monthOption.value\"\n [selected]=\"monthOption.value === singleHeaderMonth\"\n >\n {{ monthOption.label }}\n </option>\n </select>\n <svg viewBox=\"0 0 24 24\" class=\"h-3 w-3 text-foreground\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <path d=\"m6 9 6 6 6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </div>\n <div [ngClass]=\"dropdownClasses('w-[82px]')\">\n <select\n [ngClass]=\"dropdownSelectClasses()\"\n [ngStyle]=\"dropdownSelectStyle\"\n [value]=\"singleHeaderYear\"\n aria-label=\"Year\"\n (change)=\"onSingleYearChange($any($event.target).value)\"\n >\n <option\n *ngFor=\"let year of yearOptions\"\n [value]=\"year\"\n [selected]=\"year === singleHeaderYear\"\n >\n {{ year }}\n </option>\n </select>\n <svg viewBox=\"0 0 24 24\" class=\"h-3 w-3 text-foreground\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <path d=\"m6 9 6 6 6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </div>\n </div>\n </ng-container>\n\n <ng-template #plainTitle>\n <div class=\"flex min-w-0 flex-1 items-center justify-center\">\n <p class=\"m-0 text-foreground text-center text-sm font-medium leading-5\">\n {{ month.title }}\n </p>\n </div>\n </ng-template>\n\n <button\n *ngIf=\"month.showNextButton; else nextPlaceholder\"\n type=\"button\"\n [ngClass]=\"navButtonClasses()\"\n aria-label=\"Next month\"\n (click)=\"goToNextMonth()\"\n [disabled]=\"readonly\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <path d=\"m9 18 6-6-6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n <ng-template #nextPlaceholder>\n <div [ngClass]=\"navPlaceholderClasses()\" aria-hidden=\"true\"></div>\n </ng-template>\n </div>\n\n <div [ngClass]=\"calendarGridWrapClasses()\">\n <div [ngClass]=\"weekdayRowClasses()\">\n <div *ngFor=\"let day of weekdays; trackBy: trackByIndex\" [ngClass]=\"weekdayCellClasses()\">\n <span>{{ day }}</span>\n </div>\n </div>\n\n <div *ngFor=\"let week of month.weeks; trackBy: trackByIndex\" [ngClass]=\"weekRowClasses()\">\n <div *ngFor=\"let cell of week; trackBy: trackByDate\" [ngClass]=\"dayCellClasses(cell)\">\n <button\n type=\"button\"\n [ngClass]=\"dayButtonClasses(cell)\"\n [disabled]=\"readonly\"\n [attr.aria-selected]=\"cell.selected\"\n [attr.aria-disabled]=\"cell.disabled || readonly\"\n [attr.title]=\"cell.date | date : 'yyyy-MM-dd'\"\n (click)=\"onDatePressed(cell)\"\n >\n <span [ngClass]=\"dayLabelClasses(cell)\">{{ cell.label }}</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmCarouselVariant = 'default' | 'sizes' | 'orientation' | 'api';\n\n@Component({\n selector: 'pdm-carousel',\n templateUrl: './carousel.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmCarouselComponent {\n @Input() variant: PdmCarouselVariant = 'default';\n @Input() className = '';\n @Input() slides: Array<string | number> = [];\n @Input() startIndex = 0;\n @Input() loop = false;\n @Input() windowSize?: number;\n @Input() showCounter = false;\n\n @Output() indexChange = new EventEmitter<number>();\n\n private _index = 0;\n\n ngOnInit(): void {\n this._index = this.normalizeIndex(this.startIndex);\n }\n\n get index(): number {\n return this._index;\n }\n\n get canPrev(): boolean {\n return this.loop || this._index > 0;\n }\n\n get canNext(): boolean {\n return this.loop || this._index < this.maxIndex;\n }\n\n get maxIndex(): number {\n if (this.slides.length === 0) {\n return 0;\n }\n return Math.max(0, this.slides.length - this.currentWindowSize);\n }\n\n get visibleSlides(): Array<string | number> {\n if (this.slides.length === 0) {\n return [];\n }\n\n return this.sliceWindow(this.currentWindowSize);\n }\n\n get currentWindowSize(): number {\n if (typeof this.windowSize === 'number' && this.windowSize > 0) {\n return Math.max(1, Math.floor(this.windowSize));\n }\n if (this.variant === 'sizes') {\n return 3;\n }\n if (this.variant === 'orientation') {\n return 2;\n }\n return 1;\n }\n\n onPrev(): void {\n if (!this.canPrev) {\n return;\n }\n\n const next = this._index - 1;\n this.setIndex(this.loop && next < 0 ? this.maxIndex : next);\n }\n\n onNext(): void {\n if (!this.canNext) {\n return;\n }\n\n const next = this._index + 1;\n this.setIndex(this.loop && next > this.maxIndex ? 0 : next);\n }\n\n private setIndex(value: number): void {\n const normalized = this.normalizeIndex(value);\n this._index = normalized;\n this.indexChange.emit(this._index);\n }\n\n private normalizeIndex(value: number): number {\n if (this.slides.length === 0) {\n return 0;\n }\n return Math.min(this.maxIndex, Math.max(0, value));\n }\n\n private sliceWindow(size: number): Array<string | number> {\n return this.slides.slice(this._index, this._index + size);\n }\n}\n","<section [ngClass]=\"[className]\">\n <div *ngIf=\"variant !== 'orientation'\" class=\"flex items-center gap-4\">\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 appearance-none items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canPrev ? 'opacity-50' : ''\"\n [disabled]=\"!canPrev\"\n (click)=\"onPrev()\"\n aria-label=\"Previous slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15 18L9 12L15 6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <div class=\"flex items-center\">\n <div *ngFor=\"let slide of visibleSlides; let i = index\" class=\"flex items-center\" [ngClass]=\"i > 0 ? 'pl-4' : ''\">\n <div class=\"flex h-40 w-32 items-center p-1\">\n <div class=\"flex h-full w-full items-center justify-center rounded-lg border border-border bg-background py-6 shadow-sm\">\n <div class=\"text-center text-2xl font-semibold text-foreground\">{{ slide }}</div>\n </div>\n </div>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 appearance-none items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canNext ? 'opacity-50' : ''\"\n [disabled]=\"!canNext\"\n (click)=\"onNext()\"\n aria-label=\"Next slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 18L15 12L9 6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n\n <p *ngIf=\"variant !== 'orientation' && showCounter\" class=\"m-0 pt-2 text-sm font-medium text-muted-foreground\">\n {{ slides.length ? (index + 1) : 0 }} / {{ slides.length }}\n </p>\n\n <div *ngIf=\"variant === 'orientation'\" class=\"flex flex-col items-center gap-4\">\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 appearance-none items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canPrev ? 'opacity-50' : ''\"\n [disabled]=\"!canPrev\"\n (click)=\"onPrev()\"\n aria-label=\"Previous slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M18 15L12 9L6 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <div class=\"flex w-80 flex-col\">\n <div *ngFor=\"let slide of visibleSlides; let i = index\" class=\"flex h-36 w-full items-center p-1\" [ngClass]=\"i > 0 ? 'pt-1' : ''\">\n <div class=\"flex h-full w-full items-center justify-center rounded-lg border border-border bg-background py-6 shadow-sm\">\n <div class=\"text-center text-2xl font-semibold text-foreground\">{{ slide }}</div>\n </div>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 appearance-none items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canNext ? 'opacity-50' : ''\"\n [disabled]=\"!canNext\"\n (click)=\"onNext()\"\n aria-label=\"Next slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n</section>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmCardVariant = 'default' | 'login';\n\n@Component({\n selector: 'pdm-card',\n templateUrl: './card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmCardComponent {\n @Input() variant: PdmCardVariant = 'default';\n @Input() className = '';\n\n @Input() title = 'Login to your account';\n @Input() description = 'Enter your email below to login to your account';\n @Input() actionText = 'Sign up';\n @Input() emailLabel = 'Email';\n @Input() emailPlaceholder = 'm@example.com';\n @Input() passwordLabel = 'Password';\n @Input() passwordHint = 'Forgot password?';\n @Input() primaryActionText = 'Login';\n @Input() secondaryActionText = 'Login with Google';\n\n @Output() primaryAction = new EventEmitter<void>();\n @Output() secondaryAction = new EventEmitter<void>();\n @Output() actionPressed = new EventEmitter<void>();\n\n onPrimaryAction(): void {\n this.primaryAction.emit();\n }\n\n onSecondaryAction(): void {\n this.secondaryAction.emit();\n }\n\n onActionPressed(): void {\n this.actionPressed.emit();\n }\n}\n","<section\n [ngClass]=\"[\n 'w-full rounded-lg border border-border bg-background py-6 shadow-sm',\n className\n ]\"\n>\n <ng-container *ngIf=\"variant === 'login'; else defaultCard\">\n <div class=\"flex w-full items-start gap-1.5 px-6\">\n <div class=\"min-w-0 flex-1\">\n <h3 class=\"m-0 text-lg font-semibold leading-none tracking-tight text-foreground\">{{ title }}</h3>\n <p class=\"m-0 mt-1.5 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none items-center justify-center rounded-md border-0 bg-transparent px-4 py-2 text-sm font-medium text-foreground\"\n (click)=\"onActionPressed()\"\n >\n {{ actionText }}\n </button>\n </div>\n\n <div class=\"mt-6 flex flex-col gap-4 px-6\">\n <div class=\"w-full\">\n <label class=\"mb-3 block text-sm font-medium text-foreground\">{{ emailLabel }}</label>\n <input\n type=\"email\"\n [placeholder]=\"emailPlaceholder\"\n class=\"h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm text-foreground shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\"\n />\n </div>\n\n <div class=\"w-full\">\n <div class=\"mb-3 flex w-full items-center justify-between gap-4\">\n <label class=\"text-sm font-medium text-foreground\">{{ passwordLabel }}</label>\n <button type=\"button\" class=\"appearance-none border-0 bg-transparent p-0 text-sm text-foreground\">\n {{ passwordHint }}\n </button>\n </div>\n <input\n type=\"password\"\n class=\"h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm text-foreground shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\"\n />\n </div>\n </div>\n\n <div class=\"mt-6 flex w-full flex-col gap-2 px-6\">\n <button\n type=\"button\"\n class=\"flex h-9 w-full appearance-none items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm\"\n (click)=\"onPrimaryAction()\"\n >\n {{ primaryActionText }}\n </button>\n <button\n type=\"button\"\n class=\"flex h-9 w-full appearance-none items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm\"\n (click)=\"onSecondaryAction()\"\n >\n {{ secondaryActionText }}\n </button>\n </div>\n </ng-container>\n\n <ng-template #defaultCard>\n <div class=\"flex w-full flex-col gap-6\">\n <div class=\"px-6\">\n <ng-content select=\"[pdmCardHeader]\"></ng-content>\n </div>\n <div class=\"px-6\">\n <ng-content select=\"[pdmCardContent]\"></ng-content>\n </div>\n <div class=\"px-6\">\n <ng-content select=\"[pdmCardFooter]\"></ng-content>\n </div>\n </div>\n </ng-template>\n</section>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmChartType = 'area' | 'bar' | 'line' | 'pie' | 'radar' | 'radial' | 'tooltips';\n\n@Component({\n selector: 'pdm-chart',\n templateUrl: './chart.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmChartComponent {\n @Input() type: PdmChartType = 'bar';\n @Input() className = '';\n @Input() title = '';\n @Input() description = '';\n\n @Input() desktopLabel = '';\n @Input() desktopValue = '';\n @Input() mobileLabel = '';\n @Input() mobileValue = '';\n\n @Input() labels: string[] = [];\n\n @Input() bars: number[] = [];\n @Input() line: number[] = [];\n @Input() pie: number[] = [];\n @Input() radar: number[] = [];\n @Input() radialValue = 0;\n @Input() radialLabel = '';\n @Input() radialDescription = '';\n @Input() tooltipTitle = '';\n @Input() tooltipPrimaryLabel = '';\n @Input() tooltipPrimaryValue = '';\n @Input() tooltipSecondaryLabel = '';\n @Input() tooltipSecondaryValue = '';\n @Input() pieLabels: string[] = [];\n @Input() tooltipHint = '';\n @Input() radarMetricPrefix = 'Metric';\n @Input() emptyLabel = 'No data available';\n\n get normalizedBars(): number[] {\n if (!this.bars.length) {\n return [];\n }\n\n const max = Math.max(...this.bars);\n if (max === 0) {\n return this.bars.map(() => 0);\n }\n\n return this.bars.map((value) => Math.max(8, Math.round((value / max) * 183)));\n }\n\n get normalizedLine(): number[] {\n if (!this.line.length) {\n return [];\n }\n\n const max = Math.max(...this.line);\n if (max === 0) {\n return this.line.map(() => 170);\n }\n\n return this.line.map((value) => 180 - Math.round((value / max) * 150));\n }\n\n get linePath(): string {\n const points = this.normalizedLine;\n if (!points.length) {\n return '';\n }\n\n const step = points.length > 1 ? 320 / (points.length - 1) : 0;\n return points\n .map((y, index) => `${index === 0 ? 'M' : 'L'} ${Math.round(index * step)} ${y}`)\n .join(' ');\n }\n\n get areaPath(): string {\n const linePath = this.linePath;\n if (!linePath) {\n return '';\n }\n\n return `${linePath} L 320 180 L 0 180 Z`;\n }\n\n get pieSegments(): { color: string; size: number; offset: number; label: string }[] {\n const total = this.pie.reduce((acc, value) => acc + Math.max(value, 0), 0);\n if (total === 0) {\n return [];\n }\n\n let offset = 0;\n const colors = ['hsl(var(--chart-1))', 'hsl(var(--chart-2))', 'hsl(var(--chart-3))', 'hsl(var(--chart-4))'];\n return this.pie.map((value, index) => {\n const size = (Math.max(value, 0) / total) * 100;\n const segment = {\n color: colors[index % colors.length],\n size,\n offset,\n label: this.pieLabels[index] ?? `Series ${index + 1}`\n };\n offset += size;\n return segment;\n });\n }\n\n get pieGradient(): string {\n const segments = this.pieSegments;\n if (!segments.length) {\n return 'conic-gradient(hsl(var(--muted)) 0 100%)';\n }\n\n return `conic-gradient(${segments\n .map((segment) => `${segment.color} ${segment.offset}% ${segment.offset + segment.size}%`)\n .join(', ')})`;\n }\n\n get radarPoints(): string {\n const values = this.radar.slice(0, 6);\n if (!values.length) {\n return '';\n }\n\n const max = Math.max(...values, 1);\n const radius = 72;\n const center = 80;\n return values\n .map((value, index) => {\n const angle = ((Math.PI * 2) / values.length) * index - Math.PI / 2;\n const valueRadius = (Math.max(value, 0) / max) * radius;\n const x = center + Math.cos(angle) * valueRadius;\n const y = center + Math.sin(angle) * valueRadius;\n return `${x},${y}`;\n })\n .join(' ');\n }\n\n get radialStrokeOffset(): number {\n const bounded = Math.max(0, Math.min(this.radialValue, 100));\n const circumference = 2 * Math.PI * 42;\n return circumference - (bounded / 100) * circumference;\n }\n}\n","<section [ngClass]=\"['w-full rounded-lg border border-border bg-card text-card-foreground', className]\">\n <div *ngIf=\"title || description || desktopLabel || desktopValue || mobileLabel || mobileValue\" class=\"flex w-full items-stretch border-b border-border\">\n <div class=\"flex min-w-0 flex-1 flex-col gap-1 px-6 pb-3 pt-4\">\n <h3 *ngIf=\"title\" class=\"m-0 text-sm font-semibold leading-none tracking-tight\">{{ title }}</h3>\n <p *ngIf=\"description\" class=\"m-0 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n\n <div *ngIf=\"desktopLabel || desktopValue || mobileLabel || mobileValue\" class=\"flex h-24\">\n <div class=\"flex h-full w-44 flex-col justify-center border-l border-border bg-muted px-6 py-4\">\n <span class=\"text-xs text-muted-foreground\">{{ desktopLabel }}</span>\n <span class=\"mt-1 text-2xl font-semibold\">{{ desktopValue }}</span>\n </div>\n <div class=\"flex h-full w-44 flex-col justify-center px-6 py-4\">\n <span class=\"text-xs text-muted-foreground\">{{ mobileLabel }}</span>\n <span class=\"mt-1 text-2xl font-semibold\">{{ mobileValue }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"w-full p-6\">\n <ng-container [ngSwitch]=\"type\">\n <div *ngSwitchCase=\"'bar'\" class=\"flex h-60 w-full flex-col justify-end gap-2\">\n <p *ngIf=\"normalizedBars.length === 0\" class=\"m-0 text-sm text-muted-foreground\">{{ emptyLabel }}</p>\n <div class=\"relative h-48 w-full overflow-hidden\">\n <div class=\"absolute bottom-0 left-0 right-0 border-t border-border opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-1/4 border-t border-border opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-1/2 border-t border-border opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-3/4 border-t border-border opacity-50\"></div>\n <div class=\"absolute inset-x-0 bottom-0 flex h-48 items-end gap-0.5 px-0.5\">\n <div *ngFor=\"let bar of normalizedBars\" class=\"w-1.5 rounded-sm bg-primary\" [style.height.px]=\"bar\"></div>\n </div>\n </div>\n <div *ngIf=\"labels.length\" class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs text-muted-foreground\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'line'\" class=\"flex h-60 w-full flex-col gap-2\">\n <p *ngIf=\"normalizedLine.length === 0\" class=\"m-0 text-sm text-muted-foreground\">{{ emptyLabel }}</p>\n <svg viewBox=\"0 0 320 180\" class=\"h-48 w-full\">\n <line x1=\"0\" y1=\"180\" x2=\"320\" y2=\"180\" stroke=\"hsl(var(--border))\" stroke-width=\"1\"></line>\n <line x1=\"0\" y1=\"135\" x2=\"320\" y2=\"135\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"90\" x2=\"320\" y2=\"90\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"45\" x2=\"320\" y2=\"45\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <path [attr.d]=\"linePath\" fill=\"none\" stroke=\"hsl(var(--primary))\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <div *ngIf=\"labels.length\" class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs text-muted-foreground\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'area'\" class=\"flex h-60 w-full flex-col gap-2\">\n <p *ngIf=\"normalizedLine.length === 0\" class=\"m-0 text-sm text-muted-foreground\">{{ emptyLabel }}</p>\n <svg viewBox=\"0 0 320 180\" class=\"h-48 w-full\">\n <defs>\n <linearGradient id=\"pdm-chart-area-gradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stop-color=\"hsl(var(--primary))\" stop-opacity=\"0.35\"></stop>\n <stop offset=\"100%\" stop-color=\"hsl(var(--primary))\" stop-opacity=\"0.02\"></stop>\n </linearGradient>\n </defs>\n <line x1=\"0\" y1=\"180\" x2=\"320\" y2=\"180\" stroke=\"hsl(var(--border))\" stroke-width=\"1\"></line>\n <line x1=\"0\" y1=\"135\" x2=\"320\" y2=\"135\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"90\" x2=\"320\" y2=\"90\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"45\" x2=\"320\" y2=\"45\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <path [attr.d]=\"areaPath\" fill=\"url(#pdm-chart-area-gradient)\"></path>\n <path [attr.d]=\"linePath\" fill=\"none\" stroke=\"hsl(var(--primary))\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <div *ngIf=\"labels.length\" class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs text-muted-foreground\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'pie'\" class=\"flex items-center gap-6\">\n <div class=\"relative h-40 w-40 rounded-full\" [style.background]=\"pieGradient\">\n <div class=\"absolute inset-7 rounded-full bg-card\"></div>\n </div>\n <div class=\"grid flex-1 gap-2\">\n <div *ngFor=\"let segment of pieSegments\" class=\"flex items-center justify-between rounded-md border border-border px-3 py-2\">\n <div class=\"flex items-center gap-2\">\n <span class=\"size-2.5 rounded-full\" [style.background]=\"segment.color\"></span>\n <span class=\"text-sm\">{{ segment.label }}</span>\n </div>\n <span class=\"text-sm font-medium\">{{ segment.size | number: '1.0-0' }}%</span>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'radar'\" class=\"flex items-center gap-6\">\n <svg viewBox=\"0 0 160 160\" class=\"h-44 w-44\">\n <polygon points=\"80,8 144,44 144,116 80,152 16,116 16,44\" fill=\"none\" stroke=\"hsl(var(--border))\"></polygon>\n <polygon points=\"80,28 126,54 126,106 80,132 34,106 34,54\" fill=\"none\" stroke=\"hsl(var(--border))\" opacity=\"0.75\"></polygon>\n <polygon points=\"80,48 109,64 109,96 80,112 51,96 51,64\" fill=\"none\" stroke=\"hsl(var(--border))\" opacity=\"0.55\"></polygon>\n <polygon [attr.points]=\"radarPoints\" fill=\"hsl(var(--primary))\" fill-opacity=\"0.22\" stroke=\"hsl(var(--primary))\" stroke-width=\"2\"></polygon>\n </svg>\n <div class=\"grid flex-1 gap-2\">\n <div *ngFor=\"let item of radar; index as i\" class=\"flex items-center justify-between rounded-md border border-border px-3 py-2 text-sm\">\n <span class=\"text-muted-foreground\">{{ radarMetricPrefix }} {{ i + 1 }}</span>\n <span class=\"font-medium\">{{ item }}</span>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'radial'\" class=\"flex items-center justify-between gap-6\">\n <div class=\"relative flex size-44 items-center justify-center\">\n <svg viewBox=\"0 0 96 96\" class=\"size-40 -rotate-90\">\n <circle cx=\"48\" cy=\"48\" r=\"42\" fill=\"none\" stroke=\"hsl(var(--muted))\" stroke-width=\"10\"></circle>\n <circle\n cx=\"48\"\n cy=\"48\"\n r=\"42\"\n fill=\"none\"\n stroke=\"hsl(var(--primary))\"\n stroke-width=\"10\"\n stroke-linecap=\"round\"\n stroke-dasharray=\"263.89\"\n [attr.stroke-dashoffset]=\"radialStrokeOffset\"\n ></circle>\n </svg>\n <div class=\"absolute text-center\">\n <div class=\"text-2xl font-semibold\">{{ radialValue }}%</div>\n <div class=\"text-xs text-muted-foreground\">{{ radialLabel }}</div>\n </div>\n </div>\n <div class=\"flex-1\">\n <p class=\"m-0 text-sm font-medium\">{{ radialLabel }}</p>\n <p class=\"m-0 mt-1 text-sm text-muted-foreground\">{{ radialDescription }}</p>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'tooltips'\" class=\"grid gap-3\">\n <div class=\"inline-flex w-fit min-w-56 flex-col gap-2 rounded-lg border border-border bg-card p-3 shadow-sm\">\n <p class=\"m-0 text-xs font-medium text-muted-foreground\">{{ tooltipTitle }}</p>\n <div class=\"flex items-center justify-between text-sm\">\n <span>{{ tooltipPrimaryLabel }}</span>\n <span class=\"font-semibold\">{{ tooltipPrimaryValue }}</span>\n </div>\n <div class=\"flex items-center justify-between text-sm\">\n <span>{{ tooltipSecondaryLabel }}</span>\n <span class=\"font-semibold\">{{ tooltipSecondaryValue }}</span>\n </div>\n </div>\n <p *ngIf=\"tooltipHint\" class=\"m-0 text-xs text-muted-foreground\">{{ tooltipHint }}</p>\n </div>\n </ng-container>\n </div>\n</section>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmCheckboxVariant = 'default' | 'subtext' | 'card';\n\n@Component({\n selector: 'pdm-checkbox',\n templateUrl: './checkbox.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmCheckboxComponent {\n @Input() id = '';\n @Input() checked = false;\n @Input() disabled = false;\n @Input() variant: PdmCheckboxVariant = 'default';\n @Input() label = 'Accept terms and conditions';\n @Input() description = '';\n @Input() className = '';\n\n @Output() checkedChange = new EventEmitter<boolean>();\n\n get hasDescription(): boolean {\n return this.variant === 'subtext' || this.variant === 'card' ? !!this.description : false;\n }\n\n onToggle(): void {\n if (this.disabled) {\n return;\n }\n\n this.checkedChange.emit(!this.checked);\n }\n}\n","<button\n type=\"button\"\n role=\"checkbox\"\n [attr.id]=\"id || null\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-disabled]=\"disabled\"\n [disabled]=\"disabled\"\n [ngClass]=\"[\n 'w-full border-0 bg-transparent p-0 text-left outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n variant === 'card'\n ? checked\n ? 'flex items-start gap-3 rounded-lg border border-primary bg-muted p-4'\n : 'flex items-start gap-3 rounded-lg border border-border bg-background p-4'\n : hasDescription\n ? 'flex items-start gap-3'\n : 'flex items-center gap-3',\n disabled ? 'opacity-50' : '',\n className\n ]\"\n (click)=\"onToggle()\"\n>\n <span\n [ngClass]=\"[\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-sm border shadow-sm',\n checked ? 'border-primary bg-primary text-primary-foreground' : 'border-border bg-background text-transparent'\n ]\"\n aria-hidden=\"true\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M3 8.5L6.4 12L13 4\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n\n <span [ngClass]=\"['min-w-0 flex-1', hasDescription ? 'flex flex-col gap-2' : 'flex items-center']\">\n <span class=\"text-sm font-medium text-foreground\">{{ label }}</span>\n <span *ngIf=\"hasDescription\" class=\"text-sm text-muted-foreground\">{{ description }}</span>\n </span>\n</button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'pdm-collapsible',\n templateUrl: './collapsible.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmCollapsibleComponent {\n @Input() title = '@peduarte starred 3 repositories';\n @Input() open = false;\n @Input() disabled = false;\n @Input() items: string[] = ['@radix-ui/primitives', '@radix-ui/colors', '@stitches/react'];\n @Input() className = '';\n\n @Output() openChange = new EventEmitter<boolean>();\n\n get visibleItems(): string[] {\n if (!this.items.length) {\n return [];\n }\n return this.open ? this.items : this.items.slice(0, 1);\n }\n\n toggle(): void {\n if (!this.disabled) {\n this.openChange.emit(!this.open);\n }\n }\n}\n","<div [ngClass]=\"['flex w-full max-w-sm flex-col gap-2', className]\">\n <button\n type=\"button\"\n [disabled]=\"disabled\"\n class=\"flex w-full appearance-none items-center justify-between rounded-md border-0 bg-transparent px-4 py-2 text-left text-sm font-medium text-foreground hover:bg-accent ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggle()\"\n >\n <span>{{ title }}</span>\n <span class=\"inline-flex h-8 w-8 items-center justify-center text-foreground\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 15L12 20L17 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M17 9L12 4L7 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n </button>\n\n <div class=\"flex w-full flex-col gap-2\">\n <div\n *ngFor=\"let item of visibleItems\"\n class=\"w-full rounded-md border border-border bg-background px-4 py-2\"\n >\n <span class=\"font-mono text-sm text-foreground\">{{ item }}</span>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'pdm-combobox',\n templateUrl: './combobox.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmComboboxComponent {\n @Input() open = false;\n @Input() placeholder = 'Select framework...';\n @Input() searchPlaceholder = 'Search framework';\n @Input() className = '';\n @Input() options: string[] = ['Next.js', 'SvelteKit', 'Nuxt.js', 'Remix', 'Astro'];\n @Input() value = '';\n @Input() width = 200;\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output() valueChange = new EventEmitter<string>();\n\n get selectedLabel(): string {\n return this.value || this.placeholder;\n }\n\n toggle(): void {\n this.openChange.emit(!this.open);\n }\n\n select(option: string): void {\n this.valueChange.emit(option);\n this.openChange.emit(false);\n }\n}\n","<div [ngClass]=\"['flex flex-col gap-1', className]\" [style.width.px]=\"width\">\n <button\n type=\"button\"\n class=\"flex h-9 w-full appearance-none items-center justify-between gap-2 rounded-md border border-input bg-background px-3 py-2 text-sm shadow-sm\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggle()\"\n >\n <span class=\"min-w-0 flex-1 truncate text-left text-sm font-medium text-foreground\">{{ selectedLabel }}</span>\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 15L12 20L17 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M17 9L12 4L7 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <div\n *ngIf=\"open\"\n class=\"w-full rounded-md border border-border bg-popover p-0 text-popover-foreground shadow-md\"\n >\n <div class=\"flex items-center gap-2 border-b border-border px-3\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-muted-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M20 20L16.6 16.6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n <div class=\"h-9 flex-1 py-2 text-sm text-muted-foreground\">{{ searchPlaceholder }}</div>\n </div>\n\n <div class=\"p-1\">\n <button\n *ngFor=\"let option of options\"\n type=\"button\"\n class=\"flex w-full appearance-none items-center gap-2 rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground\"\n [ngClass]=\"option === value ? 'bg-accent text-accent-foreground' : ''\"\n (click)=\"select(option)\"\n >\n <span class=\"min-w-0 flex-1 truncate\">{{ option }}</span>\n <svg *ngIf=\"option === value\" viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 12.5L9.2 16.7L19 7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { icons, type IconNode } from 'lucide';\n\nexport type PdmIconLibrary = 'lucide' | 'tabler' | 'hugeicons' | 'phosphor' | 'remix';\n\nexport type PdmIconName =\n | 'command'\n | 'check'\n | 'check-circle'\n | 'circle'\n | 'dot'\n | 'x'\n | 'alert-circle'\n | 'info'\n | 'loader-2'\n | 'menu'\n | 'search'\n | 'calendar'\n | 'panel-left'\n | 'monitor'\n | 'laptop'\n | 'sun'\n | 'moon'\n | 'chevron-down'\n | 'chevron-up'\n | 'chevron-left'\n | 'chevron-right'\n | 'chevrons-left'\n | 'chevrons-right'\n | 'chevrons-up-down'\n | 'arrow-up-down'\n | 'ellipsis'\n | 'filter'\n | 'sort-asc'\n | 'sort-desc'\n | 'plus'\n | 'minus'\n | 'copy'\n | 'pencil'\n | 'trash-2'\n | 'download'\n | 'upload'\n | 'home'\n | 'mail'\n | 'phone'\n | 'log-in'\n | 'log-out'\n | 'user'\n | 'settings'\n | 'credit-card'\n | 'smile'\n | 'calculator'\n | 'external-link'\n | 'folder'\n | 'arrow-up-right';\n\nconst FALLBACK_NODE: IconNode = [['circle', { cx: '12', cy: '12', r: '9' }]];\n\n@Component({\n selector: 'pdm-icon',\n templateUrl: './icon.component.html',\n styles: [\n `\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n flex-shrink: 0;\n }\n\n :host svg {\n display: block;\n }\n `\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmIconComponent {\n @Input() name: PdmIconName | string = 'check';\n @Input() library: PdmIconLibrary = 'lucide';\n @Input() assetUrl: string | null = null;\n @Input() size = 16;\n @Input() strokeWidth = 1.5;\n @Input() className = '';\n @Input() ariaLabel: string | null = null;\n @Input() decorative = false;\n\n private readonly lucideIndex = this.buildLucideIndex();\n\n private readonly aliasMapByLibrary: Record<PdmIconLibrary, Record<string, string>> = {\n lucide: {\n 'check-circle': 'circle-check',\n 'alert-circle': 'circle-alert',\n info: 'circle-info',\n 'sort-asc': 'arrow-up-a-z',\n 'sort-desc': 'arrow-down-z-a'\n },\n tabler: {\n 'alert-triangle': 'triangle-alert',\n 'user-circle': 'circle-user',\n 'settings-2': 'settings-2',\n 'external-link': 'external-link'\n },\n hugeicons: {\n 'alert-02': 'circle-alert',\n 'user-circle': 'circle-user',\n 'search-01': 'search',\n 'settings-01': 'settings',\n 'arrow-right-01': 'chevron-right',\n 'arrow-down-01': 'chevron-down'\n },\n phosphor: {\n 'warning-circle': 'circle-alert',\n 'caret-down': 'chevron-down',\n 'caret-right': 'chevron-right',\n 'user-circle': 'circle-user',\n gear: 'settings',\n 'arrow-square-out': 'external-link'\n },\n remix: {\n 'alert-line': 'circle-alert',\n 'arrow-right-line': 'chevron-right',\n 'arrow-down-s-line': 'chevron-down',\n 'external-link-line': 'external-link',\n 'user-line': 'user',\n 'settings-3-line': 'settings'\n }\n };\n\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n get resolvedStrokeWidth(): number {\n const value = Number(this.strokeWidth);\n if (Number.isFinite(value) && value > 0) {\n return value;\n }\n\n if (this.library === 'phosphor') {\n return 1.6;\n }\n\n if (this.library === 'tabler') {\n return 1.8;\n }\n\n return 1.5;\n }\n\n get resolvedSize(): number {\n const value = Number(this.size);\n return Number.isFinite(value) && value > 0 ? value : 16;\n }\n\n get iconKey(): string {\n const raw = `${this.name || ''}`.trim();\n if (!raw) {\n return 'circle';\n }\n\n const trimmed = raw.replace(/^(lucide|tabler|hugeicons|phosphor|remix)\\//, '');\n const aliases = this.aliasMapByLibrary[this.library] ?? {};\n return aliases[trimmed] ?? trimmed;\n }\n\n get svgMarkup(): SafeHtml {\n const node = this.resolveIconNode(this.iconKey) ?? FALLBACK_NODE;\n const strokeWidth = this.escapeAttr(this.resolvedStrokeWidth);\n const size = this.escapeAttr(this.resolvedSize);\n\n const body = node\n .map(([tag, attrs]) => {\n const serializedAttrs = Object.entries(attrs)\n .map(([key, value]) => `${key}=\"${this.escapeAttr(value)}\"`)\n .join(' ');\n\n return serializedAttrs ? `<${tag} ${serializedAttrs}></${tag}>` : `<${tag}></${tag}>`;\n })\n .join('');\n\n const svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"${strokeWidth}\" stroke-linecap=\"round\" stroke-linejoin=\"round\">${body}</svg>`;\n\n return this.sanitizer.bypassSecurityTrustHtml(svg);\n }\n\n private resolveIconNode(iconName: string): IconNode | null {\n const normalized = this.normalizeIconName(iconName);\n return this.lucideIndex.get(normalized) ?? null;\n }\n\n private normalizeIconName(name: string): string {\n return `${name || ''}`.toLowerCase().replace(/[^a-z0-9]/g, '');\n }\n\n private buildLucideIndex(): Map<string, IconNode> {\n const map = new Map<string, IconNode>();\n\n Object.entries(icons).forEach(([iconName, iconNode]) => {\n map.set(this.normalizeIconName(iconName), iconNode as IconNode);\n });\n\n return map;\n }\n\n private escapeAttr(value: unknown): string {\n return `${value ?? ''}`\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n }\n}\n","<ng-container *ngIf=\"assetUrl; else inlineIcon\">\n <img\n [src]=\"assetUrl\"\n [style.width.px]=\"resolvedSize\"\n [style.height.px]=\"resolvedSize\"\n [ngClass]=\"className\"\n [attr.role]=\"decorative ? null : 'img'\"\n [attr.aria-hidden]=\"decorative ? 'true' : null\"\n [attr.aria-label]=\"!decorative ? ariaLabel || name : null\"\n alt=\"\"\n />\n</ng-container>\n\n<ng-template #inlineIcon>\n <span\n [ngClass]=\"className\"\n [style.display]=\"'inline-flex'\"\n [style.align-items]=\"'center'\"\n [style.justify-content]=\"'center'\"\n [style.line-height]=\"0\"\n [style.width.px]=\"resolvedSize\"\n [style.height.px]=\"resolvedSize\"\n [attr.role]=\"decorative ? null : 'img'\"\n [attr.aria-hidden]=\"decorative ? 'true' : null\"\n [attr.aria-label]=\"!decorative ? ariaLabel || name : null\"\n [innerHTML]=\"svgMarkup\"\n ></span>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport type { PdmIconName } from '../icon/icon.component';\n\nexport interface PdmCommandItem {\n label: string;\n value: string;\n group?: string;\n icon?: PdmIconName;\n shortcut?: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'pdm-command',\n templateUrl: './command.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmCommandComponent {\n @Input() open = true;\n @Input() hintLabel = 'Press';\n @Input() hintKey = 'J';\n @Input() placeholder = 'Type a command or search...';\n @Input() emptyMessage = 'No results found.';\n @Input() items: PdmCommandItem[] = [\n { label: 'Calendar', value: 'calendar', group: 'Suggestions', icon: 'calendar' },\n { label: 'Search emoji', value: 'emoji', group: 'Suggestions', icon: 'smile' },\n { label: 'Calculator', value: 'calculator', group: 'Suggestions', icon: 'calculator', disabled: true },\n { label: 'Profile', value: 'profile', group: 'Settings', icon: 'user', shortcut: '⌘P' },\n { label: 'Billing', value: 'billing', group: 'Settings', icon: 'credit-card', shortcut: '⌘B' },\n { label: 'Settings', value: 'settings', group: 'Settings', icon: 'settings', shortcut: '⌘S' }\n ];\n @Input() className = '';\n\n @Output() itemSelect = new EventEmitter<string>();\n @Output() openChange = new EventEmitter<boolean>();\n\n query = '';\n\n get filteredItems(): PdmCommandItem[] {\n const q = this.query.toLowerCase().trim();\n if (!q) return this.items;\n return this.items.filter((item) => item.label.toLowerCase().includes(q));\n }\n\n get groupedItems(): { name: string; items: PdmCommandItem[] }[] {\n const map = new Map<string, PdmCommandItem[]>();\n for (const item of this.filteredItems) {\n const key = item.group || '';\n const arr = map.get(key) ?? [];\n arr.push(item);\n map.set(key, arr);\n }\n return Array.from(map.entries()).map(([name, items]) => ({ name, items }));\n }\n\n onQueryChange(event: Event): void {\n this.query = (event.target as HTMLInputElement).value;\n }\n\n toggleOpen(): void {\n this.openChange.emit(!this.open);\n }\n\n select(value: string): void {\n this.itemSelect.emit(value);\n }\n}\n","<div [ngClass]=\"['w-full', className]\">\n <div *ngIf=\"!open\" class=\"flex items-center gap-1\">\n <span class=\"text-sm font-medium text-muted-foreground\">{{ hintLabel }}</span>\n <button\n type=\"button\"\n class=\"inline-flex h-5 appearance-none items-center gap-0.5 rounded-sm border border-border bg-muted px-1.5\"\n (click)=\"toggleOpen()\"\n >\n <pdm-icon name=\"command\" [size]=\"12\" className=\"text-muted-foreground\" [decorative]=\"true\"></pdm-icon>\n <span class=\"text-xs text-muted-foreground\">{{ hintKey }}</span>\n </button>\n </div>\n\n <section\n *ngIf=\"open\"\n class=\"flex w-full flex-col overflow-hidden rounded-lg border border-border bg-popover text-popover-foreground shadow-md\"\n >\n <div class=\"flex items-center gap-2 border-b border-border px-3\">\n <pdm-icon name=\"search\" [size]=\"16\" className=\"text-muted-foreground\" [decorative]=\"true\"></pdm-icon>\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"query\"\n (input)=\"onQueryChange($event)\"\n class=\"h-10 w-full bg-transparent py-3 text-sm text-foreground outline-none placeholder:text-muted-foreground\"\n />\n </div>\n\n <div class=\"max-h-72 overflow-y-auto p-1\">\n <ng-container *ngFor=\"let group of groupedItems; let groupIndex = index\">\n <div *ngIf=\"group.name\" class=\"px-2 py-1.5 text-xs text-muted-foreground\">{{ group.name }}</div>\n <button\n *ngFor=\"let item of group.items\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n class=\"flex w-full appearance-none items-center gap-2 rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground\"\n [ngClass]=\"[\n item.disabled ? 'opacity-50' : '',\n item.label === 'Calendar' ? 'bg-accent text-accent-foreground' : ''\n ]\"\n (click)=\"select(item.value)\"\n >\n <span class=\"inline-flex h-4 w-4 items-center justify-center text-foreground\">\n <pdm-icon *ngIf=\"item.icon\" [name]=\"item.icon\" [size]=\"16\" [decorative]=\"true\"></pdm-icon>\n </span>\n <span class=\"min-w-0 flex-1 text-foreground\">{{ item.label }}</span>\n <span *ngIf=\"item.shortcut\" class=\"text-xs text-muted-foreground\">{{ item.shortcut }}</span>\n </button>\n <div *ngIf=\"groupIndex === 0 && groupedItems.length > 1\" class=\"my-1 border-t border-border\"></div>\n </ng-container>\n\n <p *ngIf=\"filteredItems.length === 0\" class=\"m-0 py-6 text-center text-sm text-muted-foreground\">{{ emptyMessage }}</p>\n </div>\n </section>\n</div>\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { PdmMenuItem } from '../dropdown-menu/dropdown-menu.component';\n\nexport interface PdmContextMenuItem extends PdmMenuItem {\n checked?: boolean;\n selectedDot?: boolean;\n}\n\n@Component({\n selector: 'pdm-context-menu',\n templateUrl: './context-menu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmContextMenuComponent {\n @Input() items: PdmContextMenuItem[] = [\n { type: 'item', label: 'Back', value: 'back', inset: true, shortcut: '⌘[' },\n { type: 'item', label: 'Forward', value: 'forward', inset: true, shortcut: '⌘]', disabled: true },\n { type: 'item', label: 'Reload', value: 'reload', inset: true, shortcut: '⌘R' },\n { type: 'item', label: 'More Tools', value: 'more-tools', inset: true, showChevron: true },\n { type: 'separator' },\n { type: 'item', label: 'Show Bookmarks Bar', value: 'show-bookmarks', checked: true },\n { type: 'item', label: 'Show Full URLs', value: 'show-urls', inset: true },\n { type: 'separator' },\n { type: 'label', label: 'People' },\n { type: 'separator' },\n { type: 'item', label: 'Pedro Duarte', value: 'pedro', selectedDot: true },\n { type: 'item', label: 'Colm Tuite', value: 'colm', inset: true }\n ];\n @Input() className = '';\n @Input() triggerLabel = 'Right click here';\n @Input() width = 300;\n @Input() height = 150;\n @Output() itemSelect = new EventEmitter<string>();\n\n open = false;\n x = 0;\n y = 0;\n\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {}\n\n onContextMenu(event: MouseEvent): void {\n event.preventDefault();\n this.x = event.clientX;\n this.y = event.clientY;\n this.open = true;\n }\n\n select(item: PdmContextMenuItem): void {\n if (item.disabled || item.type === 'separator' || item.type === 'label' || !item.value) return;\n this.itemSelect.emit(item.value);\n this.open = false;\n }\n\n @HostListener('document:keydown.escape')\n onEsc(): void {\n this.open = false;\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.open) return;\n const target = event.target as Node | null;\n if (target && !this.elementRef.nativeElement.contains(target)) {\n this.open = false;\n }\n }\n}\n","<div class=\"relative\" [ngClass]=\"className\" (contextmenu)=\"onContextMenu($event)\">\n <div\n class=\"flex items-center justify-center rounded-md border border-dashed border-border\"\n [style.width.px]=\"width\"\n [style.height.px]=\"height\"\n >\n <span class=\"text-sm font-medium text-foreground\">{{ triggerLabel }}</span>\n </div>\n\n <div\n *ngIf=\"open\"\n class=\"fixed z-50 w-52 rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md\"\n [style.left.px]=\"x + 4\"\n [style.top.px]=\"y + 2\"\n >\n <div>\n <ng-container *ngFor=\"let item of items\">\n <div *ngIf=\"item.type === 'separator'\" class=\"-mx-1 my-1 h-px bg-muted\"></div>\n\n <div *ngIf=\"item.type === 'label'\" class=\"px-2 py-1.5 text-sm font-semibold text-foreground\">\n {{ item.label }}\n </div>\n\n <button\n *ngIf=\"!item.type || item.type === 'item'\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n class=\"relative flex w-full appearance-none cursor-default select-none items-center rounded-sm border-0 bg-transparent py-1.5 pr-2 text-left text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground disabled:pointer-events-none disabled:opacity-50\"\n [ngClass]=\"item.inset ? 'pl-8' : 'px-2'\"\n (click)=\"select(item)\"\n >\n <span class=\"mr-2 inline-flex w-4 shrink-0 items-center justify-center text-foreground\">\n <svg *ngIf=\"item.checked\" viewBox=\"0 0 24 24\" class=\"h-3.5 w-3.5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 12.5L9.2 16.7L19 7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <span *ngIf=\"item.selectedDot\" class=\"h-2 w-2 rounded-full bg-foreground\"></span>\n </span>\n <span class=\"min-w-0 flex-1 truncate text-foreground\">{{ item.label }}</span>\n <span *ngIf=\"item.shortcut\" class=\"text-xs text-muted-foreground\">{{ item.shortcut }}</span>\n <svg *ngIf=\"item.showChevron\" viewBox=\"0 0 24 24\" class=\"h-3.5 w-3.5 text-muted-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 6L15 12L9 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </ng-container>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface PdmDataTableRow {\n id: string;\n status: string;\n email: string;\n amount: string;\n selected?: boolean;\n}\n\n@Component({\n selector: 'pdm-data-table',\n templateUrl: './data-table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmDataTableComponent {\n @Input() className = '';\n @Input() filterPlaceholder = 'Filter...';\n @Input() columnsLabel = 'Columns';\n @Input() statusLabel = 'Status';\n @Input() emailLabel = 'Email';\n @Input() amountLabel = 'Amount';\n @Input() previousLabel = 'Previous';\n @Input() nextLabel = 'Next';\n @Input() emptyLabel = 'No results.';\n @Input() rows: PdmDataTableRow[] = [];\n\n @Input() page = 1;\n @Input() pageSize = 5;\n @Input() query = '';\n\n @Output() queryChange = new EventEmitter<string>();\n @Output() rowAction = new EventEmitter<string>();\n @Output() pageChange = new EventEmitter<number>();\n @Output() selectionChange = new EventEmitter<{ id: string; selected: boolean }>();\n\n get filteredRows(): PdmDataTableRow[] {\n const q = this.query.trim().toLowerCase();\n if (!q) return this.rows;\n return this.rows.filter((r) => r.email.toLowerCase().includes(q));\n }\n\n get pagedRows(): PdmDataTableRow[] {\n const start = (this.page - 1) * this.pageSize;\n return this.filteredRows.slice(start, start + this.pageSize);\n }\n\n get totalPages(): number {\n return Math.max(1, Math.ceil(this.filteredRows.length / this.pageSize));\n }\n\n get selectedCount(): number {\n return this.rows.filter((row) => row.selected).length;\n }\n\n onQueryInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.queryChange.emit(value);\n }\n\n onToggleRow(row: PdmDataTableRow, event: Event): void {\n this.selectionChange.emit({ id: row.id, selected: (event.target as HTMLInputElement).checked });\n }\n\n previous(): void {\n if (this.page <= 1) return;\n this.pageChange.emit(this.page - 1);\n }\n\n next(): void {\n if (this.page >= this.totalPages) return;\n this.pageChange.emit(this.page + 1);\n }\n\n onAction(row: PdmDataTableRow): void {\n this.rowAction.emit(row.id);\n }\n}\n","<section [ngClass]=\"['flex w-full max-w-3xl flex-col items-end', className]\">\n <div class=\"flex w-full items-center justify-between py-4\">\n <input\n type=\"text\"\n [placeholder]=\"filterPlaceholder\"\n [value]=\"query\"\n (input)=\"onQueryInput($event)\"\n class=\"h-9 flex-1 rounded-md border border-input bg-transparent px-3 py-1 text-sm text-foreground shadow-sm placeholder:text-muted-foreground outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\"\n />\n\n <button type=\"button\" class=\"inline-flex h-9 appearance-none items-center gap-2 rounded-md border border-input bg-background px-3 py-2 text-sm font-medium text-foreground shadow-sm\">\n <span>{{ columnsLabel }}</span>\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 10L12 15L17 10\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n\n <div class=\"w-full overflow-hidden rounded-md border border-border bg-background\">\n <table class=\"w-full border-collapse text-sm text-foreground\">\n <thead>\n <tr class=\"border-b border-border\">\n <th class=\"w-10 px-2 text-left font-medium\"><input type=\"checkbox\" class=\"h-4 w-4 rounded-sm border border-input\" /></th>\n <th class=\"w-32 px-2 py-2 text-left font-medium\">{{ statusLabel }}</th>\n <th class=\"px-2 py-2 text-left font-medium\">\n <button type=\"button\" class=\"inline-flex appearance-none items-center gap-1 rounded-sm border-0 bg-transparent px-3 py-2 text-sm\">\n <span>{{ emailLabel }}</span>\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 6L4 10L8 14M16 18L20 14L16 10\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </th>\n <th class=\"w-24 px-2 py-2 text-right font-medium\">{{ amountLabel }}</th>\n <th class=\"px-2 py-2\"></th>\n </tr>\n </thead>\n\n <tbody>\n <tr *ngFor=\"let row of pagedRows\" class=\"border-b border-border last:border-b-0\">\n <td class=\"px-2 py-2\"><input type=\"checkbox\" [checked]=\"row.selected\" (change)=\"onToggleRow(row, $event)\" class=\"h-4 w-4 rounded-sm border border-input\" /></td>\n <td class=\"px-2 py-2\">{{ row.status }}</td>\n <td class=\"px-2 py-2\">{{ row.email }}</td>\n <td class=\"px-2 py-2 text-right\">{{ row.amount }}</td>\n <td class=\"px-2 py-2\">\n <button type=\"button\" class=\"inline-flex h-8 w-8 appearance-none items-center justify-center border-0 bg-transparent p-0\" (click)=\"onAction(row)\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"6\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"></circle>\n <circle cx=\"12\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"></circle>\n <circle cx=\"18\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"></circle>\n </svg>\n </button>\n </td>\n </tr>\n <tr *ngIf=\"pagedRows.length === 0\">\n <td colspan=\"5\" class=\"px-3 py-6 text-center text-sm text-muted-foreground\">{{ emptyLabel }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div class=\"flex w-full items-center gap-2 py-4\">\n <p class=\"m-0 flex-1 pr-2 text-sm text-muted-foreground\">{{ selectedCount }} of {{ rows.length }} row(s) selected.</p>\n <button type=\"button\" class=\"h-9 appearance-none rounded-md border border-input bg-background px-4 text-sm font-medium text-foreground shadow-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50\" [disabled]=\"page <= 1\" (click)=\"previous()\">{{ previousLabel }}</button>\n <button type=\"button\" class=\"h-9 appearance-none rounded-md border border-input bg-background px-4 text-sm font-medium text-foreground shadow-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50\" [disabled]=\"page >= totalPages\" (click)=\"next()\">{{ nextLabel }}</button>\n </div>\n</section>\n","import { PositionStrategy } from '@angular/cdk/overlay';\nimport { ElementRef } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\n\n/**\n * Creates a flexible position strategy that automatically adjusts\n * to keep the overlay within the viewport edges.\n *\n * The strategy tries positions in this order:\n * 1. Bottom-left (origin bottom edge, aligns to left)\n * 2. Top-left (origin top edge, aligns to left)\n * 3. Bottom-right (origin bottom edge, aligns to right)\n * 4. Top-right (origin top edge, aligns to right)\n *\n * CDK Overlay will use the first position that fits within the viewport.\n */\nexport function createFlexiblePositionStrategy(\n overlay: Overlay,\n triggerElement: HTMLElement,\n offset: number = 4\n): PositionStrategy {\n return overlay\n .position()\n .flexibleConnectedTo(triggerElement)\n .withPositions([\n // Bottom-left (default) - opens downward from left edge\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: offset\n },\n // Top-left - opens upward from left edge\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -offset\n },\n // Bottom-right - opens downward from right edge\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: offset\n },\n // Top-right - opens upward from right edge\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -offset\n }\n ])\n .withFlexibleDimensions(false)\n .withPush(true);\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-label',\n templateUrl: './label.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmLabelComponent {\n @Input() forId = '';\n @Input() required = false;\n @Input() className = '';\n}\n","<label\n [attr.for]=\"forId\"\n [ngClass]=\"['text-sm font-medium leading-none text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70', className]\"\n>\n <ng-content></ng-content>\n <span *ngIf=\"required\" class=\"ml-1 text-destructive\">*</span>\n</label>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { format as formatDateFns } from 'date-fns';\nimport { PdmCalendarRange, PdmCalendarVariant } from '../calendar/calendar.component';\nimport { PdmOverlayOptions } from '../../overlay/pdm-overlay-options';\nimport { createFlexiblePositionStrategy } from '../../overlay/create-flexible-position-strategy';\n\nlet nextDatePickerId = 0;\n\n@Component({\n selector: 'pdm-date-picker',\n templateUrl: './date-picker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmDatePickerComponent implements OnDestroy {\n private _value: Date | null = null;\n private _rangeValue: PdmCalendarRange | null = null;\n private _open = false;\n\n private readonly instanceId = `pdm-date-picker-${++nextDatePickerId}`;\n private triggerFocused = false;\n\n private overlayRef: OverlayRef | null = null;\n private backdropSub: Subscription | null = null;\n\n @ViewChild('triggerEl') private triggerRef?: ElementRef<HTMLElement>;\n @ViewChild('panelTemplate') private panelTemplateRef!: any;\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n private readonly cdr: ChangeDetectorRef,\n private readonly overlay: Overlay,\n private readonly viewContainerRef: ViewContainerRef\n ) {}\n\n @Input() id = '';\n @Input() variant: PdmCalendarVariant | string = 'single';\n @Input() label = '';\n @Input() labelClassName = '';\n @Input() className = '';\n @Input() triggerClassName = '';\n /**\n * Additional CSS classes applied to the overlay panel.\n * Backward-compatible: mapped to `overlayOptions.panelClass` when `overlayOptions` is not set.\n * When both are supplied, `overlayOptions.panelClass` takes precedence.\n */\n @Input() panelClassName = '';\n /**\n * Optional CDK OverlayConfig overrides.\n * Shallow-merged on top of component defaults — consumer always wins.\n * Providing `positionStrategy` or `scrollStrategy` replaces the component default entirely.\n */\n @Input() overlayOptions?: PdmOverlayOptions;\n @Input() placeholder = 'Pick a date';\n @Input() rangePlaceholder = 'Pick a date range';\n @Input() format = 'MMM d, yyyy';\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() required = false;\n @Input() invalid = false;\n @Input() allowSameDayRange = true;\n @Input() closeOnSelect = true;\n @Input() minDate: Date | null = null;\n @Input() maxDate: Date | null = null;\n @Input() minYear: number | null = null;\n @Input() maxYear: number | null = null;\n @Input() disabledDates: Date[] = [];\n @Input() isDateDisabled: ((date: Date) => boolean) | null = null;\n\n @Output() valueChange = new EventEmitter<Date | null>();\n @Output() rangeValueChange = new EventEmitter<PdmCalendarRange | null>();\n @Output() openChange = new EventEmitter<boolean>();\n @Output() monthChange = new EventEmitter<Date>();\n\n @Input()\n set open(value: boolean) {\n if (this._open === !!value) return;\n if (!!value) {\n this.openPanel();\n } else {\n this.closePanel();\n }\n }\n get open(): boolean {\n return this._open;\n }\n\n @Input()\n set value(value: Date | null) {\n this._value = this.normalizeDate(value);\n this.cdr.markForCheck();\n }\n get value(): Date | null {\n return this._value;\n }\n\n @Input()\n set rangeValue(value: PdmCalendarRange | null) {\n this._rangeValue = value\n ? {\n start: this.normalizeDate(value.start),\n end: this.normalizeDate(value.end)\n }\n : null;\n this.cdr.markForCheck();\n }\n get rangeValue(): PdmCalendarRange | null {\n return this._rangeValue;\n }\n\n ngOnDestroy(): void {\n this.destroyOverlay();\n }\n\n get resolvedVariant(): PdmCalendarVariant {\n return this.variant === 'range' ? 'range' : 'single';\n }\n\n get triggerId(): string {\n return this.id || `${this.instanceId}-trigger`;\n }\n\n get panelId(): string {\n return `${this.id || this.instanceId}-panel`;\n }\n\n get hasSingleValue(): boolean {\n return this.resolvedVariant === 'single' && !!this._value;\n }\n\n get hasRangeValue(): boolean {\n return this.resolvedVariant === 'range' && !!this._rangeValue?.start;\n }\n\n get displayText(): string {\n if (this.resolvedVariant === 'single') {\n return this._value ? this.formatDate(this._value) : this.placeholder;\n }\n\n const start = this._rangeValue?.start ?? null;\n const end = this._rangeValue?.end ?? null;\n\n if (!start) {\n return this.rangePlaceholder;\n }\n\n if (!end) {\n return `${this.formatDate(start)} -`;\n }\n\n return `${this.formatDate(start)} - ${this.formatDate(end)}`;\n }\n\n get textClasses(): string[] {\n const hasValue = this.resolvedVariant === 'single' ? this.hasSingleValue : this.hasRangeValue;\n return [\n 'min-w-0 flex-1 truncate text-left text-sm leading-5',\n hasValue ? 'text-foreground' : 'text-muted-foreground'\n ];\n }\n\n get rootClasses(): string[] {\n return [\n 'grid gap-2',\n this.resolvedVariant === 'range' ? 'w-[280px]' : 'w-[197px]',\n this.className\n ];\n }\n\n get triggerClasses(): string[] {\n const focusStyle = this._open || this.triggerFocused;\n\n return [\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive relative flex w-full appearance-none items-center gap-2 overflow-hidden rounded-lg border bg-background px-3 py-[7.5px] text-left text-sm shadow-sm outline-none transition-colors',\n 'min-h-[36px] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n focusStyle\n ? 'border-ring ring-2 ring-ring/50'\n : '',\n this.invalid ? 'border-destructive ring-destructive/20' : '',\n this.triggerClassName\n ];\n }\n\n toggleOpen(): void {\n if (this.disabled || this.readonly) {\n return;\n }\n\n this.setOpen(!this._open);\n }\n\n onTriggerFocus(): void {\n this.triggerFocused = true;\n this.cdr.markForCheck();\n }\n\n onTriggerBlur(): void {\n this.triggerFocused = false;\n this.cdr.markForCheck();\n }\n\n onCalendarValueChange(value: Date | null): void {\n this._value = this.normalizeDate(value);\n this.valueChange.emit(this._value ? this.cloneDate(this._value) : null);\n\n if (this.closeOnSelect && this._value) {\n this.setOpen(false);\n } else {\n this.cdr.markForCheck();\n }\n }\n\n onCalendarRangeValueChange(value: PdmCalendarRange | null): void {\n this._rangeValue = value\n ? {\n start: this.normalizeDate(value.start),\n end: this.normalizeDate(value.end)\n }\n : null;\n\n this.rangeValueChange.emit(\n this._rangeValue\n ? {\n start: this._rangeValue.start ? this.cloneDate(this._rangeValue.start) : null,\n end: this._rangeValue.end ? this.cloneDate(this._rangeValue.end) : null\n }\n : null\n );\n\n if (this.closeOnSelect && this._rangeValue?.start && this._rangeValue?.end) {\n this.setOpen(false);\n return;\n }\n\n this.cdr.markForCheck();\n }\n\n onCalendarMonthChange(month: Date): void {\n this.monthChange.emit(this.cloneDate(month));\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n if (this._open) {\n this.setOpen(false);\n }\n }\n\n private setOpen(nextOpen: boolean): void {\n if (this._open === nextOpen) {\n return;\n }\n\n if (nextOpen) {\n this.openPanel();\n } else {\n this.closePanel();\n }\n }\n\n private openPanel(): void {\n if (this.overlayRef) return;\n\n const triggerEl = this.triggerRef?.nativeElement;\n if (!triggerEl) return;\n\n this._open = true;\n this.openChange.emit(true);\n this.cdr.markForCheck();\n\n const positionStrategy = createFlexiblePositionStrategy(\n this.overlay,\n triggerEl,\n 8\n );\n\n // Resolve panelClass: overlayOptions.panelClass wins; otherwise map panelClassName.\n const resolvedPanelClass = this.overlayOptions?.panelClass\n ?? (this.panelClassName ? ['block', this.panelClassName] : ['block']);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n // Consumer overrides are spread last — they win over every default above.\n ...this.overlayOptions,\n // panelClass always overrides last: it already merges panelClassName + overlayOptions.\n panelClass: resolvedPanelClass\n });\n\n const portal = new TemplatePortal(this.panelTemplateRef, this.viewContainerRef);\n this.overlayRef.attach(portal);\n\n this.backdropSub = this.overlayRef.outsidePointerEvents().subscribe((event) => {\n const target = event.target as Node;\n if (!triggerEl.contains(target)) {\n this.closePanel();\n }\n });\n\n this.cdr.markForCheck();\n }\n\n private closePanel(): void {\n if (!this.overlayRef && !this._open) return;\n\n this._open = false;\n this.openChange.emit(false);\n this.destroyOverlay();\n this.cdr.markForCheck();\n }\n\n private destroyOverlay(): void {\n if (this.backdropSub) {\n this.backdropSub.unsubscribe();\n this.backdropSub = null;\n }\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n\n private formatDate(date: Date): string {\n try {\n return formatDateFns(date, this.format || 'MMM d, yyyy');\n } catch {\n return formatDateFns(date, 'MMM d, yyyy');\n }\n }\n\n private normalizeDate(value: Date | null | undefined): Date | null {\n if (!(value instanceof Date) || Number.isNaN(value.getTime())) {\n return null;\n }\n\n return new Date(value.getFullYear(), value.getMonth(), value.getDate());\n }\n\n private cloneDate(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n }\n}\n","<div [ngClass]=\"rootClasses\">\n <pdm-label *ngIf=\"label\" [forId]=\"triggerId\" [required]=\"required\" [className]=\"labelClassName\">\n {{ label }}\n </pdm-label>\n\n <button\n #triggerEl\n type=\"button\"\n [id]=\"triggerId\"\n [disabled]=\"disabled\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-controls]=\"panelId\"\n [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"triggerClasses\"\n [attr.title]=\"displayText\"\n (click)=\"toggleOpen()\"\n (focus)=\"onTriggerFocus()\"\n (blur)=\"onTriggerBlur()\"\n >\n <span class=\"flex h-5 w-5 shrink-0 items-center justify-center p-0.5 text-muted-foreground\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\">\n <path d=\"M8 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M16 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <rect x=\"3\" y=\"4.5\" width=\"18\" height=\"16.5\" rx=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></rect>\n <path d=\"M3 9.5h18\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n\n <span [ngClass]=\"textClasses\">{{ displayText }}</span>\n </button>\n</div>\n\n<ng-template #panelTemplate>\n <div [id]=\"panelId\" role=\"dialog\" [attr.aria-labelledby]=\"label ? triggerId : null\">\n <pdm-calendar\n [variant]=\"resolvedVariant\"\n [value]=\"value\"\n [rangeValue]=\"rangeValue\"\n [readonly]=\"readonly\"\n [allowSameDayRange]=\"allowSameDayRange\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minYear]=\"minYear\"\n [maxYear]=\"maxYear\"\n [disabledDates]=\"disabledDates\"\n [isDateDisabled]=\"isDateDisabled\"\n (valueChange)=\"onCalendarValueChange($event)\"\n (rangeValueChange)=\"onCalendarRangeValueChange($event)\"\n (monthChange)=\"onCalendarMonthChange($event)\"\n ></pdm-calendar>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\nexport type PdmDialogVariant = 'default' | 'custom-close';\nexport type PdmDialogSize = 'desktop' | 'mobile' | 'mobile-fullscreen';\nexport type PdmDialogFooterAlign = 'right' | 'full-width' | 'left';\n\n@Component({\n selector: 'pdm-dialog',\n templateUrl: './dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmDialogComponent {\n @Input() open = false;\n @Input() variant: PdmDialogVariant = 'default';\n @Input() size: PdmDialogSize = 'desktop';\n @Input() title = 'Edit profile';\n @Input() description = '';\n @Input() closeOnBackdrop = true;\n @Input() closeOnEsc = true;\n @Input() showCloseButton = true;\n @Input() showHeader = true;\n @Input() showFooter = true;\n @Input() primaryActionText = 'Save changes';\n @Input() secondaryActionText = 'Cancel';\n @Input() alignFooter: PdmDialogFooterAlign = 'right';\n @Input() headerClassName = '';\n @Input() bodyClassName = '';\n @Input() footerClassName = '';\n @Input() className = '';\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output() primaryAction = new EventEmitter<void>();\n @Output() secondaryAction = new EventEmitter<void>();\n\n @HostListener('document:keydown.escape')\n onEsc(): void {\n if (this.open && this.closeOnEsc) {\n this.close();\n }\n }\n\n close(): void {\n this.openChange.emit(false);\n }\n\n onPrimaryAction(): void {\n this.primaryAction.emit();\n }\n\n onSecondaryAction(): void {\n this.secondaryAction.emit();\n }\n\n onBackdropClick(): void {\n if (this.closeOnBackdrop) {\n this.close();\n }\n }\n\n get panelClassName(): string {\n const base = [\n 'relative z-10 w-full border border-border bg-background text-foreground shadow-lg',\n this.size === 'desktop' ? 'max-w-[640px] max-h-[calc(100vh-2rem)] rounded-[10px] overflow-visible' : '',\n this.size === 'mobile' ? 'max-w-[320px] min-h-[240px] rounded-[10px] overflow-visible' : '',\n this.size === 'mobile-fullscreen'\n ? 'max-w-[320px] h-[min(100dvh,640px)] rounded-none sm:rounded-[10px] overflow-visible'\n : '',\n this.className\n ];\n\n return base.filter(Boolean).join(' ');\n }\n\n get bodyWrapperClassName(): string {\n const base = [\n 'min-h-0 flex-1',\n this.size === 'mobile-fullscreen' ? 'overflow-y-auto px-4 py-6' : 'px-6 py-6',\n this.bodyClassName\n ];\n\n return base.filter(Boolean).join(' ');\n }\n\n get headerWrapperClassName(): string {\n return ['flex items-start justify-between gap-3 p-4', this.headerClassName].filter(Boolean).join(' ');\n }\n\n get footerWrapperClassName(): string {\n const effectiveAlign =\n this.alignFooter === 'right' && this.variant === 'custom-close' ? 'left' : this.alignFooter;\n\n const base = [\n 'p-4',\n effectiveAlign === 'full-width'\n ? 'flex flex-col gap-2'\n : effectiveAlign === 'left'\n ? 'flex items-center gap-2 justify-start'\n : 'flex items-center gap-2 justify-end',\n this.footerClassName\n ];\n\n return base.filter(Boolean).join(' ');\n }\n}\n","<div *ngIf=\"open\" class=\"fixed inset-0 z-50 flex items-center justify-center p-4\">\n <div class=\"absolute inset-0 bg-foreground/30\" (click)=\"onBackdropClick()\"></div>\n <section role=\"dialog\" aria-modal=\"true\" [ngClass]=\"panelClassName\">\n <div *ngIf=\"showHeader\" [ngClass]=\"headerWrapperClassName\">\n <div class=\"min-w-0\">\n <h2 class=\"m-0 text-lg font-semibold leading-none tracking-tight text-foreground\">{{ title }}</h2>\n <p *ngIf=\"description\" class=\"m-0 mt-2 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n <button\n *ngIf=\"showCloseButton\"\n type=\"button\"\n class=\"inline-flex h-6 w-6 appearance-none items-center justify-center rounded-sm border-0 bg-transparent p-0 text-foreground opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\"\n (click)=\"close()\"\n aria-label=\"Close dialog\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 6L18 18M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n </button>\n </div>\n\n <div [ngClass]=\"bodyWrapperClassName\">\n <ng-content></ng-content>\n </div>\n\n <div *ngIf=\"showFooter\" [ngClass]=\"footerWrapperClassName\">\n <ng-container *ngIf=\"variant === 'custom-close'; else defaultActions\">\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm\"\n (click)=\"onSecondaryAction()\"\n >\n {{ secondaryActionText }}\n </button>\n </ng-container>\n\n <ng-template #defaultActions>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm\"\n (click)=\"onSecondaryAction()\"\n >\n {{ secondaryActionText }}\n </button>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm\"\n (click)=\"onPrimaryAction()\"\n >\n {{ primaryActionText }}\n </button>\n </ng-template>\n </div>\n </section>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { PdmOverlayOptions } from '../../overlay/pdm-overlay-options';\nimport { createFlexiblePositionStrategy } from '../../overlay/create-flexible-position-strategy';\n\nexport type PdmDropdownMenuVariant = 'default' | 'checkboxes' | 'radio-group';\n\nexport interface PdmMenuItem {\n type?: 'item' | 'label' | 'separator';\n label?: string;\n value?: string;\n shortcut?: string;\n disabled?: boolean;\n inset?: boolean;\n showChevron?: boolean;\n checked?: boolean;\n radioSelected?: boolean;\n}\n\n@Component({\n selector: 'pdm-dropdown-menu',\n templateUrl: './dropdown-menu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmDropdownMenuComponent implements OnDestroy {\n @Input() triggerText = 'Open';\n @Input() variant: PdmDropdownMenuVariant = 'default';\n @Input() items: PdmMenuItem[] = [];\n @Input() closeOnSelect = true;\n /**\n * Additional CSS classes applied to the trigger wrapper element.\n * Preserved for backward compatibility.\n */\n @Input() className = '';\n /**\n * Additional CSS classes applied to the overlay panel.\n * Backward-compatible: mapped to `overlayOptions.panelClass` when `overlayOptions` is not set.\n * When both are supplied, `overlayOptions.panelClass` takes precedence.\n */\n @Input() panelClassName = '';\n /**\n * Optional CDK OverlayConfig overrides.\n * Shallow-merged on top of component defaults — consumer always wins.\n * Providing `positionStrategy` or `scrollStrategy` replaces the component default entirely.\n */\n @Input() overlayOptions?: PdmOverlayOptions;\n\n @Output() itemSelect = new EventEmitter<string>();\n @Output() itemsChange = new EventEmitter<PdmMenuItem[]>();\n\n open = false;\n\n @ViewChild('triggerEl') private triggerRef?: ElementRef<HTMLElement>;\n @ViewChild('panelTemplate') private panelTemplateRef!: any;\n\n private overlayRef: OverlayRef | null = null;\n private backdropSub: Subscription | null = null;\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n private readonly cdr: ChangeDetectorRef,\n private readonly overlay: Overlay,\n private readonly viewContainerRef: ViewContainerRef\n ) {}\n\n ngOnDestroy(): void {\n this.destroyOverlay();\n }\n\n toggle(): void {\n if (this.open) {\n this.closePanel();\n } else {\n this.openPanel();\n }\n }\n\n get resolvedItems(): PdmMenuItem[] {\n if (this.items.length) {\n return this.items;\n }\n\n if (this.variant === 'checkboxes') {\n return [\n { type: 'label', label: 'Appearance' },\n { type: 'separator' },\n { type: 'item', label: 'Status Bar', value: 'status-bar', checked: true },\n { type: 'item', label: 'Activity Bar', value: 'activity-bar', checked: false },\n { type: 'item', label: 'Panel', value: 'panel', checked: false }\n ];\n }\n\n if (this.variant === 'radio-group') {\n return [\n { type: 'label', label: 'Panel Position' },\n { type: 'separator' },\n { type: 'item', label: 'Top', value: 'top', radioSelected: true },\n { type: 'item', label: 'Bottom', value: 'bottom', radioSelected: false },\n { type: 'item', label: 'Right', value: 'right', radioSelected: false }\n ];\n }\n\n return [\n { type: 'label', label: 'My Account', inset: true },\n { type: 'separator' },\n { type: 'item', label: 'Profile', value: 'profile', shortcut: '⇧⌘P' },\n { type: 'item', label: 'Billing', value: 'billing', shortcut: '⌘B' },\n { type: 'item', label: 'Settings', value: 'settings', shortcut: '⌘S' },\n { type: 'item', label: 'Keyboard shortcuts', value: 'shortcuts', shortcut: '⌘K' },\n { type: 'separator' },\n { type: 'item', label: 'Team', value: 'team' },\n { type: 'item', label: 'Invite users', value: 'invite', showChevron: true },\n { type: 'item', label: 'New Team', value: 'new-team', shortcut: '⌘+T' },\n { type: 'separator' },\n { type: 'item', label: 'GitHub', value: 'github' },\n { type: 'item', label: 'Support', value: 'support' },\n { type: 'item', label: 'API', value: 'api', disabled: true },\n { type: 'separator' },\n { type: 'item', label: 'Log out', value: 'logout', shortcut: '⇧⌘Q' }\n ];\n }\n\n select(item: PdmMenuItem): void {\n if (item.disabled || item.type === 'separator' || item.type === 'label' || !item.value) return;\n\n if (this.variant === 'checkboxes') {\n const updated = this.resolvedItems.map((entry) =>\n entry.value === item.value ? { ...entry, checked: !entry.checked } : entry\n );\n this.itemsChange.emit(updated);\n }\n\n if (this.variant === 'radio-group') {\n const updated = this.resolvedItems.map((entry) =>\n entry.type === 'item'\n ? { ...entry, radioSelected: entry.value === item.value }\n : entry\n );\n this.itemsChange.emit(updated);\n }\n\n this.itemSelect.emit(item.value);\n\n const shouldClose = this.variant === 'default' ? this.closeOnSelect : false;\n if (shouldClose) {\n this.closePanel();\n }\n }\n\n @HostListener('document:keydown.escape')\n onEsc(): void {\n this.closePanel();\n }\n\n private openPanel(): void {\n if (this.overlayRef) return;\n\n const triggerEl = this.triggerRef?.nativeElement;\n if (!triggerEl) return;\n\n this.open = true;\n this.cdr.markForCheck();\n\n const positionStrategy = createFlexiblePositionStrategy(\n this.overlay,\n triggerEl,\n 8\n );\n\n // Resolve panelClass: overlayOptions.panelClass wins; otherwise map panelClassName.\n const resolvedPanelClass = this.overlayOptions?.panelClass\n ?? (this.panelClassName ? ['block', this.panelClassName] : ['block']);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n // Consumer overrides are spread last — they win over every default above.\n ...this.overlayOptions,\n // panelClass always overrides last: it already merges panelClassName + overlayOptions.\n panelClass: resolvedPanelClass\n });\n\n const portal = new TemplatePortal(this.panelTemplateRef, this.viewContainerRef);\n this.overlayRef.attach(portal);\n\n this.backdropSub = this.overlayRef.outsidePointerEvents().subscribe((event) => {\n const target = event.target as Node;\n if (!triggerEl.contains(target)) {\n this.closePanel();\n }\n });\n\n this.cdr.markForCheck();\n }\n\n private closePanel(): void {\n if (!this.overlayRef) return;\n\n this.open = false;\n this.destroyOverlay();\n this.cdr.markForCheck();\n }\n\n private destroyOverlay(): void {\n if (this.backdropSub) {\n this.backdropSub.unsubscribe();\n this.backdropSub = null;\n }\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n}\n","<button\n #triggerEl\n type=\"button\"\n [ngClass]=\"[\n 'inline-flex h-9 appearance-none items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className\n ]\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggle()\"\n>\n {{ triggerText }}\n</button>\n\n<ng-template #panelTemplate>\n <div\n class=\"min-w-32 overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md\"\n >\n <ng-container *ngFor=\"let item of resolvedItems\">\n <div *ngIf=\"item.type === 'separator'\" class=\"-mx-1 my-1 h-px bg-muted\"></div>\n\n <div\n *ngIf=\"item.type === 'label'\"\n [ngClass]=\"['px-2 py-1.5 text-sm font-semibold text-foreground', item.inset ? 'pl-8' : '']\"\n >\n {{ item.label }}\n </div>\n\n <button\n *ngIf=\"!item.type || item.type === 'item'\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n [ngClass]=\"[\n 'relative flex w-full appearance-none cursor-default select-none items-center gap-2 rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm text-foreground outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground disabled:pointer-events-none disabled:opacity-50',\n item.inset ? 'pl-8' : ''\n ]\"\n (click)=\"select(item)\"\n >\n <span class=\"inline-flex h-4 w-4 shrink-0 items-center justify-center\">\n <svg\n *ngIf=\"item.checked\"\n viewBox=\"0 0 24 24\"\n class=\"h-3.5 w-3.5 text-foreground\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M5 12.5L9.2 16.7L19 7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <span *ngIf=\"item.radioSelected\" class=\"h-2 w-2 rounded-full bg-foreground\"></span>\n </span>\n <span class=\"min-w-0 flex-1 truncate\">{{ item.label }}</span>\n <span *ngIf=\"item.shortcut\" class=\"text-xs text-muted-foreground\">{{ item.shortcut }}</span>\n <span *ngIf=\"item.showChevron\" class=\"text-sm text-muted-foreground\">›</span>\n </button>\n </ng-container>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmDrawerVariant = 'drawer' | 'responsive-dialog';\n\n@Component({\n selector: 'pdm-drawer',\n templateUrl: './drawer.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmDrawerComponent {\n @Input() open = false;\n @Input() variant: PdmDrawerVariant = 'drawer';\n @Input() className = '';\n @Input() title = '';\n @Input() description = '';\n @Input() value: number | string = '';\n @Input() unit = '';\n @Input() decrementLabel = '-';\n @Input() incrementLabel = '+';\n @Input() primaryLabel = '';\n @Input() secondaryLabel = '';\n\n @Input() profileTitle = '';\n @Input() profileDescription = '';\n @Input() nameLabel = 'Name';\n @Input() nameValue = '';\n @Input() usernameLabel = 'Username';\n @Input() usernameValue = '';\n @Input() responsivePrimaryLabel = '';\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output() primaryAction = new EventEmitter<void>();\n @Output() secondaryAction = new EventEmitter<void>();\n\n @Input() bars: number[] = [];\n\n close(): void {\n this.openChange.emit(false);\n }\n\n onPrimaryAction(): void {\n this.primaryAction.emit();\n }\n\n onSecondaryAction(): void {\n this.secondaryAction.emit();\n }\n}\n","<div *ngIf=\"open\" class=\"fixed inset-0 z-50\" [ngClass]=\"className\">\n <div class=\"absolute inset-0 bg-foreground/30\" (click)=\"close()\"></div>\n\n <section\n *ngIf=\"variant === 'drawer'; else responsiveDialog\"\n class=\"absolute inset-x-0 bottom-0 mx-auto w-full max-w-6xl rounded-t-lg border border-border bg-background p-6 shadow-lg\"\n >\n <div class=\"mx-auto mb-4 h-1 w-10 rounded-full bg-border\"></div>\n\n <div class=\"mx-auto flex max-w-sm flex-col items-center\">\n <h3 class=\"m-0 text-sm font-semibold text-foreground\">{{ title }}</h3>\n <p class=\"m-0 mt-1 text-xs text-muted-foreground\">{{ description }}</p>\n\n <div class=\"mt-3 flex w-full items-center justify-center gap-4\">\n <button type=\"button\" class=\"inline-flex h-6 w-6 appearance-none items-center justify-center rounded-full border border-border bg-transparent p-0 text-muted-foreground\">{{ decrementLabel }}</button>\n <div class=\"text-center\">\n <div class=\"text-5xl font-semibold leading-none text-foreground\">{{ value }}</div>\n <div class=\"mt-1 text-xs tracking-wide text-muted-foreground\">{{ unit }}</div>\n </div>\n <button type=\"button\" class=\"inline-flex h-6 w-6 appearance-none items-center justify-center rounded-full border border-border bg-transparent p-0 text-muted-foreground\">{{ incrementLabel }}</button>\n </div>\n\n <div *ngIf=\"bars.length\" class=\"mt-3 flex h-14 w-full items-end gap-1\">\n <div *ngFor=\"let bar of bars\" class=\"flex-1 bg-foreground\" [style.height.px]=\"bar\"></div>\n </div>\n\n <button *ngIf=\"primaryLabel\" type=\"button\" class=\"mt-3 h-9 w-full appearance-none rounded-md bg-primary text-sm font-medium text-primary-foreground\" (click)=\"onPrimaryAction()\">{{ primaryLabel }}</button>\n <button *ngIf=\"secondaryLabel\" type=\"button\" class=\"mt-2 h-9 w-full appearance-none rounded-md border border-input bg-background text-sm font-medium text-foreground\" (click)=\"onSecondaryAction()\">{{ secondaryLabel }}</button>\n </div>\n </section>\n\n <ng-template #responsiveDialog>\n <section class=\"absolute left-1/2 top-1/2 w-full max-w-lg -translate-x-1/2 -translate-y-1/2 rounded-lg border border-border bg-background p-6 shadow-lg\">\n <div class=\"flex items-start justify-between\">\n <div>\n <h3 class=\"m-0 text-lg font-semibold leading-none tracking-tight text-foreground\">{{ profileTitle }}</h3>\n <p class=\"m-0 mt-1 text-sm text-muted-foreground\">{{ profileDescription }}</p>\n </div>\n <button type=\"button\" class=\"h-5 w-5 appearance-none border-0 bg-transparent p-0 text-muted-foreground\" (click)=\"close()\">×</button>\n </div>\n\n <div class=\"mt-3 flex flex-col gap-3\">\n <div>\n <label class=\"mb-1 block text-xs font-medium text-foreground\">{{ nameLabel }}</label>\n <div class=\"h-8 rounded-md border border-border bg-background px-2 py-1 text-xs text-foreground\">{{ nameValue }}</div>\n </div>\n <div>\n <label class=\"mb-1 block text-xs font-medium text-foreground\">{{ usernameLabel }}</label>\n <div class=\"h-8 rounded-md border border-border bg-background px-2 py-1 text-xs text-foreground\">{{ usernameValue }}</div>\n </div>\n </div>\n\n <button *ngIf=\"responsivePrimaryLabel\" type=\"button\" class=\"mt-3 h-8 w-full appearance-none rounded-md bg-primary text-xs font-medium text-primary-foreground\" (click)=\"onPrimaryAction()\">{{ responsivePrimaryLabel }}</button>\n </section>\n </ng-template>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmEmptyVariant = 'default' | 'outline' | 'background';\n\n@Component({\n selector: 'pdm-empty',\n templateUrl: './empty.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmEmptyComponent {\n @Input() variant: PdmEmptyVariant = 'default';\n @Input() title = 'No Projects Yet';\n @Input() description = \"You haven't created any projects yet. Get started by creating your first project.\";\n @Input() iconName = 'folder';\n @Input() primaryActionLabel = '';\n @Input() secondaryActionLabel = '';\n @Input() linkLabel = '';\n @Input() className = '';\n\n @Output() primaryAction = new EventEmitter<void>();\n @Output() secondaryAction = new EventEmitter<void>();\n @Output() linkAction = new EventEmitter<void>();\n\n get containerClass(): string {\n if (this.variant === 'outline') {\n return 'border border-dashed border-border rounded-[12px]';\n }\n\n if (this.variant === 'background') {\n return 'rounded-[12px] bg-muted';\n }\n\n return '';\n }\n}\n","<section [ngClass]=\"['flex flex-col items-center justify-center gap-4 px-6 py-10 text-center text-foreground', containerClass, className]\">\n <div class=\"flex h-10 w-10 items-center justify-center rounded-lg bg-muted text-muted-foreground\">\n <pdm-icon [name]=\"iconName\" [size]=\"20\"></pdm-icon>\n </div>\n\n <div class=\"space-y-2\">\n <h3 class=\"m-0 text-2xl font-semibold leading-none tracking-tight\">{{ title }}</h3>\n <p class=\"m-0 mx-auto max-w-md text-sm leading-relaxed text-muted-foreground\">\n {{ description }}\n </p>\n </div>\n\n <div *ngIf=\"primaryActionLabel || secondaryActionLabel\" class=\"mt-1 flex flex-wrap items-center justify-center gap-3\">\n <pdm-button *ngIf=\"primaryActionLabel\" variant=\"default\" (pressed)=\"primaryAction.emit()\">{{ primaryActionLabel }}</pdm-button>\n <pdm-button *ngIf=\"secondaryActionLabel\" variant=\"outline\" (pressed)=\"secondaryAction.emit()\">{{ secondaryActionLabel }}</pdm-button>\n </div>\n\n <button\n *ngIf=\"linkLabel\"\n type=\"button\"\n class=\"mt-1 inline-flex appearance-none items-center gap-2 border-0 bg-transparent p-0 text-sm font-medium text-muted-foreground underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n (click)=\"linkAction.emit()\"\n >\n <span>{{ linkLabel }}</span>\n <pdm-icon name=\"arrow-up-right\" [size]=\"16\"></pdm-icon>\n </button>\n\n <ng-content></ng-content>\n</section>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmFieldOrientation = 'vertical' | 'horizontal';\nexport type PdmFieldDescriptionPosition = 'before' | 'after';\n\n@Component({\n selector: 'pdm-field',\n templateUrl: './field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmFieldComponent {\n @Input() id = '';\n @Input() label = '';\n @Input() description = '';\n @Input() error = '';\n @Input() required = false;\n @Input() disabled = false;\n @Input() invalid = false;\n @Input() orientation: PdmFieldOrientation = 'vertical';\n @Input() descriptionPosition: PdmFieldDescriptionPosition = 'after';\n @Input() className = '';\n @Input() labelClassName = '';\n @Input() controlClassName = '';\n\n get rootClass(): string {\n return this.orientation === 'horizontal'\n ? 'grid items-start gap-3 sm:grid-cols-[200px_minmax(0,1fr)] sm:gap-4'\n : 'grid w-full gap-3';\n }\n\n get isHorizontal(): boolean {\n return this.orientation === 'horizontal';\n }\n\n get showDescriptionBeforeControl(): boolean {\n return !this.isHorizontal && this.descriptionPosition === 'before' && !!this.description && !this.invalid;\n }\n\n get showDescriptionAfterControl(): boolean {\n return !this.isHorizontal && !this.showDescriptionBeforeControl && !!this.description && !this.invalid;\n }\n}\n","<div [ngClass]=\"[rootClass, className]\">\n <div [ngClass]=\"[isHorizontal ? 'grid gap-1.5' : 'grid gap-0']\">\n <label\n *ngIf=\"label\"\n [attr.for]=\"id\"\n [ngClass]=\"[\n 'text-sm font-medium leading-none',\n disabled ? 'opacity-70' : '',\n invalid ? 'text-destructive' : 'text-foreground',\n labelClassName\n ]\"\n >\n {{ label }}\n <span *ngIf=\"required\" class=\"text-destructive\">*</span>\n </label>\n\n <p *ngIf=\"isHorizontal && description && !invalid\" class=\"m-0 text-sm text-muted-foreground\">{{ description }}</p>\n <p *ngIf=\"isHorizontal && invalid && error\" class=\"m-0 text-sm text-destructive\">{{ error }}</p>\n </div>\n\n <div [ngClass]=\"['grid gap-3', controlClassName]\">\n <p *ngIf=\"showDescriptionBeforeControl\" class=\"m-0 text-sm text-muted-foreground\">{{ description }}</p>\n\n <ng-content></ng-content>\n <ng-content select=\"[pdmFieldControl]\"></ng-content>\n\n <p *ngIf=\"showDescriptionAfterControl\" class=\"m-0 text-sm text-muted-foreground\">{{ description }}</p>\n <p *ngIf=\"!isHorizontal && invalid && error\" class=\"m-0 text-sm text-destructive\">{{ error }}</p>\n <ng-content select=\"[pdmFieldDescription]\"></ng-content>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmHoverCardSide = 'top' | 'right' | 'bottom' | 'left';\nexport type PdmHoverCardAlign = 'start' | 'center' | 'end';\n\n@Component({\n selector: 'pdm-hover-card',\n templateUrl: './hover-card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmHoverCardComponent {\n @Input() className = '';\n @Input() panelClassName = '';\n @Input() side: PdmHoverCardSide = 'bottom';\n @Input() align: PdmHoverCardAlign = 'start';\n @Input() panelWidth = 304;\n\n open = false;\n\n get positionClass(): string {\n const sideClassMap: Record<PdmHoverCardSide, string> = {\n top: 'bottom-full mb-2',\n right: 'left-full ml-2',\n bottom: 'top-full mt-2',\n left: 'right-full mr-2'\n };\n\n const alignClassMap: Record<PdmHoverCardAlign, string> = {\n start: this.side === 'top' || this.side === 'bottom' ? 'left-0' : 'top-0',\n center: this.side === 'top' || this.side === 'bottom' ? 'left-1/2 -translate-x-1/2' : 'top-1/2 -translate-y-1/2',\n end: this.side === 'top' || this.side === 'bottom' ? 'right-0' : 'bottom-0'\n };\n\n return `${sideClassMap[this.side]} ${alignClassMap[this.align]}`;\n }\n}\n","<div\n class=\"relative inline-flex\"\n [ngClass]=\"className\"\n (mouseenter)=\"open = true\"\n (mouseleave)=\"open = false\"\n (focusin)=\"open = true\"\n (focusout)=\"open = false\"\n>\n <div>\n <ng-content select=\"[pdmHoverTrigger]\"></ng-content>\n </div>\n\n <section\n *ngIf=\"open\"\n [style.width.px]=\"panelWidth\"\n [ngClass]=\"[\n 'absolute z-30 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md',\n positionClass,\n panelClassName\n ]\"\n >\n <ng-content select=\"[pdmHoverContent]\"></ng-content>\n </section>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-item',\n templateUrl: './item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmItemComponent {\n @Input() className = '';\n @Input() disabled = false;\n @Input() selected = false;\n}\n","<div\n [ngClass]=\"[\n 'relative flex w-full select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors',\n selected ? 'bg-accent text-accent-foreground' : 'text-foreground',\n disabled ? 'pointer-events-none opacity-50' : 'hover:bg-accent hover:text-accent-foreground',\n className\n ]\"\n>\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmInputSize = 'mini' | 'small' | 'regular' | 'large';\nexport type PdmInputRoundness = 'default' | 'round';\n\n@Component({\n selector: 'pdm-input',\n templateUrl: './input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmInputComponent {\n @Input() id = '';\n @Input() type = 'text';\n @Input() value = '';\n @Input() placeholder = '';\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() required = false;\n @Input() invalid = false;\n @Input() size: PdmInputSize = 'regular';\n @Input() roundness: PdmInputRoundness = 'default';\n @Input() className = '';\n @Input() inputClassName = '';\n @Input() label = '';\n @Input() helperText = '';\n @Input() errorText = '';\n\n @Output() valueChange = new EventEmitter<string>();\n @Output() blurred = new EventEmitter<FocusEvent>();\n\n onInput(event: Event): void {\n this.valueChange.emit((event.target as HTMLInputElement).value);\n }\n\n onBlur(event: FocusEvent): void {\n this.blurred.emit(event);\n }\n}\n","<div [ngClass]=\"['grid w-full gap-3', className]\">\n <label\n *ngIf=\"label\"\n [attr.for]=\"id\"\n [ngClass]=\"[\n 'text-sm font-medium leading-none',\n invalid ? 'text-destructive' : 'text-foreground'\n ]\"\n >{{ label }}</label\n >\n <input\n [id]=\"id\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive aria-invalid:placeholder:text-destructive/70 placeholder:text-muted-foreground w-full min-w-0 rounded-lg border bg-transparent px-3 py-1 text-sm shadow-sm transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n size === 'large' ? 'h-10 px-4 text-sm' : '',\n size === 'regular' ? 'h-9 px-3 text-sm' : '',\n size === 'small' ? 'h-8 px-2 text-sm' : '',\n size === 'mini' ? 'h-6 px-1.5 text-xs' : '',\n roundness === 'round' ? 'rounded-full' : 'rounded-lg',\n type === 'file' ? 'text-sm' : 'text-foreground',\n inputClassName,\n ]\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n />\n <p *ngIf=\"!invalid && helperText\" class=\"m-0 text-sm text-muted-foreground\">\n {{ helperText }}\n </p>\n <p *ngIf=\"invalid && errorText\" class=\"m-0 text-sm text-destructive\">\n {{ errorText }}\n </p>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { PdmInputRoundness, PdmInputSize } from '../input/input.component';\n\n@Component({\n selector: 'pdm-input-password',\n templateUrl: './input-password.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmInputPasswordComponent {\n @Input() id = '';\n @Input() value = '';\n @Input() placeholder = '';\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() required = false;\n @Input() invalid = false;\n @Input() size: PdmInputSize = 'regular';\n @Input() roundness: PdmInputRoundness = 'default';\n @Input() className = '';\n @Input() inputClassName = '';\n @Input() label = '';\n @Input() helperText = '';\n @Input() errorText = '';\n\n @Output() valueChange = new EventEmitter<string>();\n @Output() blurred = new EventEmitter<FocusEvent>();\n\n showPassword = false;\n\n get inputType(): 'text' | 'password' {\n return this.showPassword ? 'text' : 'password';\n }\n\n onInput(event: Event): void {\n this.valueChange.emit((event.target as HTMLInputElement).value);\n }\n\n onBlur(event: FocusEvent): void {\n this.blurred.emit(event);\n }\n\n toggleVisibility(): void {\n if (this.disabled) {\n return;\n }\n\n this.showPassword = !this.showPassword;\n }\n}\n","<div [ngClass]=\"['grid w-full gap-3', className]\">\n <label\n *ngIf=\"label\"\n [attr.for]=\"id\"\n [ngClass]=\"[\n 'text-sm font-medium leading-none',\n invalid ? 'text-destructive' : 'text-foreground'\n ]\"\n >{{ label }}</label>\n <div class=\"relative\">\n <input\n [id]=\"id\"\n [type]=\"inputType\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive aria-invalid:placeholder:text-destructive/70 file:text-foreground placeholder:text-muted-foreground w-full min-w-0 rounded-lg border bg-transparent px-3 py-1 pr-10 text-sm shadow-sm transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n size === 'large' ? 'h-10 px-4 text-sm' : '',\n size === 'regular' ? 'h-9 px-3 text-sm' : '',\n size === 'small' ? 'h-8 px-2 text-sm' : '',\n size === 'mini' ? 'h-6 px-1.5 text-xs' : '',\n roundness === 'round' ? 'rounded-full' : 'rounded-lg',\n 'text-foreground',\n inputClassName\n ]\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n />\n <button\n type=\"button\"\n class=\"absolute right-2 top-1/2 inline-flex h-6 w-6 -translate-y-1/2 items-center justify-center rounded border-0 bg-transparent p-0 text-muted-foreground outline-none transition-colors hover:text-foreground focus:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-60\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"showPassword ? 'Hide password' : 'Show password'\"\n (click)=\"toggleVisibility()\"\n >\n <svg\n *ngIf=\"!showPassword\"\n aria-hidden=\"true\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"h-4 w-4\"\n >\n <path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\"></path>\n <circle cx=\"12\" cy=\"12\" r=\"3\"></circle>\n </svg>\n <svg\n *ngIf=\"showPassword\"\n aria-hidden=\"true\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"h-4 w-4\"\n >\n <path d=\"M3 3l18 18\"></path>\n <path d=\"M10.58 10.58a2 2 0 1 0 2.83 2.83\"></path>\n <path d=\"M9.88 5.09A10.94 10.94 0 0 1 12 4.91c5.05 0 9.27 3.11 10.6 7.09a1 1 0 0 1 0 .64 11.9 11.9 0 0 1-1.84 3.2\"></path>\n <path d=\"M6.61 6.61A11.81 11.81 0 0 0 1.4 12a1 1 0 0 0 0 .64 11.83 11.83 0 0 0 8.79 7.54\"></path>\n </svg>\n </button>\n </div>\n <p *ngIf=\"!invalid && helperText\" class=\"m-0 text-sm text-muted-foreground\">{{ helperText }}</p>\n <p *ngIf=\"invalid && errorText\" class=\"m-0 text-sm text-destructive\">{{ errorText }}</p>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'pdm-input-group',\n templateUrl: './input-group.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmInputGroupComponent {\n @Input() id = '';\n @Input() type = 'text';\n @Input() value = '';\n @Input() placeholder = '';\n @Input() disabled = false;\n @Input() invalid = false;\n @Input() prefixText = '';\n @Input() suffixText = '';\n @Input() prefixIcon = '';\n @Input() suffixIcon = '';\n @Input() buttonText = '';\n @Input() className = '';\n\n @Output() valueChange = new EventEmitter<string>();\n @Output() buttonClick = new EventEmitter<MouseEvent>();\n\n onInput(event: Event): void {\n this.valueChange.emit((event.target as HTMLInputElement).value);\n }\n\n onButtonClick(event: MouseEvent): void {\n this.buttonClick.emit(event);\n }\n}\n","<div\n [ngClass]=\"[\n 'flex w-full items-center gap-2',\n disabled ? 'opacity-50' : '',\n className\n ]\"\n>\n <div\n [ngClass]=\"[\n 'flex h-9 min-w-0 flex-1 items-center overflow-hidden rounded-md border border-input bg-transparent px-3 py-1 text-sm text-foreground shadow-sm transition-colors focus-within:border-ring focus-within:ring-2 focus-within:ring-ring/50',\n invalid ? 'border-destructive focus-within:ring-destructive' : '',\n disabled ? 'cursor-not-allowed' : ''\n ]\"\n >\n <div\n *ngIf=\"prefixText || prefixIcon\"\n class=\"inline-flex h-full shrink-0 items-center gap-2 pr-2 text-sm text-muted-foreground\"\n >\n <pdm-icon *ngIf=\"prefixIcon\" [name]=\"prefixIcon\" [size]=\"16\"></pdm-icon>\n <span *ngIf=\"prefixText\">{{ prefixText }}</span>\n <ng-content select=\"[pdmInputGroupPrefix]\"></ng-content>\n </div>\n\n <input\n [id]=\"id\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"[\n 'h-full min-w-0 flex-1 border-0 bg-transparent p-0 text-sm text-foreground outline-none placeholder:text-muted-foreground aria-invalid:placeholder:text-destructive/70',\n type === 'file' ? 'text-sm file:mr-2 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground' : ''\n ]\"\n (input)=\"onInput($event)\"\n />\n\n <div\n *ngIf=\"!buttonText && (suffixText || suffixIcon)\"\n class=\"inline-flex h-full shrink-0 items-center gap-2 pl-2 text-sm text-muted-foreground\"\n >\n <pdm-icon *ngIf=\"suffixIcon\" [name]=\"suffixIcon\" [size]=\"16\"></pdm-icon>\n <span *ngIf=\"suffixText\" class=\"font-medium\">{{ suffixText }}</span>\n <ng-content select=\"[pdmInputGroupSuffix]\"></ng-content>\n </div>\n </div>\n\n <button\n *ngIf=\"buttonText\"\n type=\"button\"\n [disabled]=\"disabled\"\n class=\"inline-flex h-9 shrink-0 appearance-none items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed\"\n (click)=\"onButtonClick($event)\"\n >\n {{ buttonText }}\n </button>\n</div>\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, QueryList, ViewChildren } from '@angular/core';\n\n@Component({\n selector: 'pdm-input-otp',\n templateUrl: './input-otp.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmInputOtpComponent {\n @Input() length = 6;\n @Input() groupSize = 3;\n @Input() disabled = false;\n @Input() invalid = false;\n @Input() className = '';\n\n @Output() valueChange = new EventEmitter<string>();\n @Output() completed = new EventEmitter<string>();\n\n @ViewChildren('otpInput') private readonly inputs?: QueryList<ElementRef<HTMLInputElement>>;\n\n values: string[] = Array.from({ length: this.length }, () => '');\n\n ngOnChanges(): void {\n if (this.values.length !== this.length) {\n this.values = Array.from({ length: this.length }, (_, index) => this.values[index] ?? '');\n }\n }\n\n trackByIndex(index: number): number {\n return index;\n }\n\n onInput(index: number, event: Event): void {\n const input = event.target as HTMLInputElement;\n const char = (input.value || '').replace(/\\D+/g, '').slice(-1);\n\n this.values[index] = char;\n input.value = char;\n this.emit();\n\n if (char) {\n this.focusInput(index + 1, true);\n }\n }\n\n onKeyDown(index: number, event: KeyboardEvent): void {\n if (event.key === 'Backspace' && !this.values[index]) {\n this.focusInput(index - 1);\n return;\n }\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n this.focusInput(index - 1);\n return;\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n this.focusInput(index + 1);\n }\n }\n\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n\n const pastedText = (event.clipboardData?.getData('text') ?? '').replace(/\\D+/g, '').slice(0, this.length);\n\n if (!pastedText) {\n return;\n }\n\n this.values = Array.from({ length: this.length }, (_, index) => pastedText[index] ?? '');\n this.emit();\n\n const nextIndex = Math.min(pastedText.length, this.length - 1);\n this.focusInput(nextIndex);\n }\n\n getInputClasses(index: number): string {\n const classes = [\n 'h-9 w-9 appearance-none border bg-background text-center text-sm font-normal text-foreground outline-none transition focus:outline-none focus-visible:outline-none',\n 'shadow-sm',\n 'focus:border-input focus:ring-1 focus:ring-primary/30',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n ];\n\n if (this.invalid) {\n classes.push('border-destructive focus:border-destructive focus:ring-destructive');\n } else {\n classes.push('border-input');\n }\n\n if (this.isGroupStart(index)) {\n classes.push('rounded-l-md border-l');\n } else {\n classes.push('border-l-0');\n }\n\n if (this.isGroupEnd(index)) {\n classes.push('rounded-r-md');\n }\n\n return classes.join(' ');\n }\n\n shouldShowSeparator(index: number): boolean {\n return this.groupSize > 0 && (index + 1) % this.groupSize === 0 && index < this.length - 1;\n }\n\n private isGroupStart(index: number): boolean {\n return this.groupSize <= 0 || index % this.groupSize === 0;\n }\n\n private isGroupEnd(index: number): boolean {\n if (this.groupSize <= 0) {\n return index === this.length - 1;\n }\n return (index + 1) % this.groupSize === 0 || index === this.length - 1;\n }\n\n private emit(): void {\n const value = this.values.join('');\n this.valueChange.emit(value);\n\n if (value.length === this.length && !this.values.includes('')) {\n this.completed.emit(value);\n }\n }\n\n private focusInput(index: number, deferred = false): void {\n if (deferred) {\n requestAnimationFrame(() => this.focusInput(index, false));\n return;\n }\n\n if (!this.inputs || index < 0 || index >= this.length) {\n return;\n }\n\n const input = this.inputs.get(index)?.nativeElement;\n if (input) {\n input.focus();\n input.select();\n }\n }\n}\n","<div [ngClass]=\"['inline-flex items-center justify-center', className]\" (paste)=\"onPaste($event)\">\n <ng-container *ngFor=\"let value of values; let index = index; trackBy: trackByIndex\">\n <input\n #otpInput\n [class]=\"getInputClasses(index)\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n inputmode=\"numeric\"\n maxlength=\"1\"\n [attr.name]=\"'otp-digit-' + index\"\n autocomplete=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-label]=\"'OTP digit ' + (index + 1)\"\n (input)=\"onInput(index, $event)\"\n (keydown)=\"onKeyDown(index, $event)\"\n />\n <span\n *ngIf=\"shouldShowSeparator(index)\"\n class=\"mx-2 mt-[-1px] h-px w-6 bg-foreground opacity-80\"\n aria-hidden=\"true\"\n ></span>\n </ng-container>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-kbd',\n templateUrl: './kbd.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmKbdComponent {\n @Input() className = '';\n}\n","<kbd [ngClass]=\"['inline-flex h-6 min-w-6 items-center justify-center rounded-md border border-border bg-muted px-1.5 font-mono text-xs font-medium text-muted-foreground', className]\">\n <ng-content></ng-content>\n</kbd>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { PdmMenuItem } from '../dropdown-menu/dropdown-menu.component';\n\nexport interface PdmMenubarItem {\n label: string;\n items: PdmMenuItem[];\n}\n\n@Component({\n selector: 'pdm-menubar',\n templateUrl: './menubar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmMenubarComponent {\n @Input() menus: PdmMenubarItem[] = [];\n @Input() className = '';\n @Output() itemSelect = new EventEmitter<string>();\n\n openIndex = -1;\n\n toggle(index: number): void {\n this.openIndex = this.openIndex === index ? -1 : index;\n }\n\n select(value: string): void {\n this.itemSelect.emit(value);\n this.openIndex = -1;\n }\n\n selectItem(item: PdmMenuItem): void {\n if (item.disabled || !item.value) {\n return;\n }\n\n this.select(item.value);\n }\n}\n","<nav role=\"menubar\" [ngClass]=\"['inline-flex h-9 items-center gap-0.5 rounded-md border border-border bg-background p-1 shadow-sm', className]\">\n <div *ngFor=\"let menu of menus; let i = index\" class=\"relative\">\n <button type=\"button\" class=\"inline-flex h-7 appearance-none items-center rounded-sm border-0 bg-transparent px-3 text-sm text-foreground hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\" (click)=\"toggle(i)\">{{ menu.label }}</button>\n <div *ngIf=\"openIndex === i\" class=\"absolute left-0 top-full z-50 mt-1 min-w-48 rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md\">\n <button\n *ngFor=\"let item of menu.items\"\n type=\"button\"\n [disabled]=\"item.disabled || !item.value\"\n class=\"relative flex w-full appearance-none cursor-default select-none items-center rounded-sm border-0 bg-transparent px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground disabled:pointer-events-none disabled:opacity-50\"\n (click)=\"selectItem(item)\"\n >\n {{ item.label }}\n </button>\n </div>\n </div>\n</nav>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface PdmNativeSelectOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'pdm-native-select',\n templateUrl: './native-select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmNativeSelectComponent {\n @Input() id = '';\n @Input() value = '';\n @Input() disabled = false;\n @Input() invalid = false;\n @Input() options: PdmNativeSelectOption[] = [];\n @Input() placeholder = 'Select an option';\n @Input() className = '';\n\n @Output() valueChange = new EventEmitter<string>();\n\n onChange(event: Event): void {\n this.valueChange.emit((event.target as HTMLSelectElement).value);\n }\n}\n","<div class=\"relative\" [ngClass]=\"className\">\n <select\n [id]=\"id\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n (change)=\"onChange($event)\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive aria-invalid:placeholder:text-destructive/70 flex h-9 w-full appearance-none rounded-md border bg-transparent px-3 py-2 pr-9 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50'\n ]\"\n >\n <option value=\"\" disabled>{{ placeholder }}</option>\n <option *ngFor=\"let option of options\" [value]=\"option.value\" [disabled]=\"option.disabled\">{{ option.label }}</option>\n </select>\n <pdm-icon className=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground\" name=\"chevron-down\" [size]=\"16\"></pdm-icon>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport interface PdmNavigationItem {\n label: string;\n href?: string;\n active?: boolean;\n}\n\n@Component({\n selector: 'pdm-navigation-menu',\n templateUrl: './navigation-menu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmNavigationMenuComponent {\n @Input() items: PdmNavigationItem[] = [];\n @Input() className = '';\n}\n","<nav [ngClass]=\"['relative z-10 flex max-w-max flex-1 items-center justify-center', className]\">\n <ul class=\"group flex flex-1 list-none items-center justify-center space-x-1\">\n <li *ngFor=\"let item of items\">\n <a\n [href]=\"item.href || '#'\"\n [ngClass]=\"[\n 'group inline-flex h-9 w-max items-center justify-center rounded-md px-3 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n item.active ? 'bg-accent text-accent-foreground' : 'text-foreground'\n ]\"\n >\n {{ item.label }}\n </a>\n </li>\n </ul>\n</nav>\n","import {\n AfterContentInit,\n Directive,\n ElementRef,\n Input\n} from '@angular/core';\n\n/**\n * Directive used to declare an option inside `<pdm-select>` via content projection.\n *\n * Usage:\n * ```html\n * <pdm-select [(value)]=\"val\">\n * <pdm-select-option value=\"a\">Option A</pdm-select-option>\n * <pdm-select-option value=\"b\" [disabled]=\"true\">Option B</pdm-select-option>\n * <pdm-select-option value=\"c\" label=\"Option C\"></pdm-select-option>\n * </pdm-select>\n * ```\n *\n * When `label` is not provided, the text content of the projected node is used.\n */\n@Directive({\n selector: 'pdm-select-option'\n})\nexport class PdmSelectOptionDirective implements AfterContentInit {\n /** The option value that will be emitted on selection. */\n @Input() value = '';\n\n /** When true, the option is rendered but cannot be selected. */\n @Input() disabled = false;\n\n /**\n * Explicit label for the option.\n * When omitted, the directive reads the element's `textContent` after content init.\n */\n @Input() label = '';\n\n constructor(private readonly el: ElementRef<HTMLElement>) {}\n\n ngAfterContentInit(): void {\n // If no explicit label, harvest text from the projected node.\n if (!this.label) {\n this.label = (this.el.nativeElement.textContent ?? '').trim();\n }\n }\n\n /** Resolved label string — always non-empty after ngAfterContentInit. */\n get resolvedLabel(): string {\n return this.label || this.value;\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { PdmSelectOptionDirective } from './select-option.directive';\nimport { PdmOverlayOptions } from '../../overlay/pdm-overlay-options';\nimport { createFlexiblePositionStrategy } from '../../overlay/create-flexible-position-strategy';\n\nexport interface PdmSelectOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'pdm-select',\n templateUrl: './select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSelectComponent implements AfterContentInit, OnDestroy {\n @Input() id = '';\n @Input() value = '';\n @Input() options: PdmSelectOption[] = [];\n @Input() disabled = false;\n @Input() invalid = false;\n @Input() className = '';\n @Input() placeholder = 'Select an option';\n /**\n * Optional CDK OverlayConfig overrides.\n * Shallow-merged on top of component defaults — consumer always wins.\n * Providing `positionStrategy` or `scrollStrategy` replaces the component default entirely.\n */\n @Input() overlayOptions?: PdmOverlayOptions;\n\n open = false;\n\n @Output() valueChange = new EventEmitter<string>();\n\n @ViewChild('triggerEl') private triggerRef?: ElementRef<HTMLElement>;\n @ViewChild('panelTemplate') private panelTemplateRef!: any;\n\n /** Collects any `<pdm-select-option>` children projected into this component. */\n @ContentChildren(PdmSelectOptionDirective)\n private projectedOptions!: QueryList<PdmSelectOptionDirective>;\n\n private overlayRef: OverlayRef | null = null;\n private backdropSub: Subscription | null = null;\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n private readonly cdr: ChangeDetectorRef,\n private readonly overlay: Overlay,\n private readonly viewContainerRef: ViewContainerRef\n ) {}\n\n ngAfterContentInit(): void {\n // Re-render when projected options change (e.g. *ngFor on pdm-select-option).\n this.projectedOptions.changes.subscribe(() => this.cdr.markForCheck());\n }\n\n ngOnDestroy(): void {\n this.destroyOverlay();\n }\n\n /**\n * Returns the effective list of options.\n * Projected `<pdm-select-option>` children take priority over the `[options]` input.\n * Falls back to `[options]` when no children are projected.\n */\n get resolvedOptions(): PdmSelectOption[] {\n if (this.projectedOptions && this.projectedOptions.length > 0) {\n return this.projectedOptions.map((d) => ({\n label: d.resolvedLabel,\n value: d.value,\n disabled: d.disabled\n }));\n }\n return this.options;\n }\n\n get selectedOption(): PdmSelectOption | undefined {\n return this.resolvedOptions.find((option) => option.value === this.value);\n }\n\n get selectedLabel(): string {\n return this.selectedOption?.label || this.placeholder;\n }\n\n toggle(): void {\n if (this.disabled) return;\n if (this.open) {\n this.closePanel();\n } else {\n this.openPanel();\n }\n }\n\n onChange(event: Event): void {\n this.valueChange.emit((event.target as HTMLSelectElement).value);\n }\n\n selectOption(option: PdmSelectOption): void {\n if (option.disabled) return;\n this.valueChange.emit(option.value);\n this.closePanel();\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n this.closePanel();\n }\n\n private openPanel(): void {\n if (this.overlayRef) return;\n\n const triggerEl = this.triggerRef?.nativeElement;\n if (!triggerEl) return;\n\n this.open = true;\n this.cdr.markForCheck();\n\n const positionStrategy = createFlexiblePositionStrategy(\n this.overlay,\n triggerEl,\n 4\n );\n\n this.overlayRef = this.overlay.create({\n // Fix: use a token array — DOMTokenList.add() rejects space-containing strings.\n panelClass: ['block'],\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width: triggerEl.offsetWidth,\n // Consumer overrides are spread last — they win over every default above.\n ...this.overlayOptions\n });\n\n const portal = new TemplatePortal(\n this.panelTemplateRef,\n this.viewContainerRef\n );\n this.overlayRef.attach(portal);\n\n this.backdropSub = this.overlayRef.outsidePointerEvents().subscribe((event) => {\n const target = event.target as Node;\n if (!triggerEl.contains(target)) {\n this.closePanel();\n }\n });\n\n this.cdr.markForCheck();\n }\n\n private closePanel(): void {\n if (!this.overlayRef) return;\n\n this.open = false;\n this.destroyOverlay();\n this.cdr.markForCheck();\n }\n\n private destroyOverlay(): void {\n if (this.backdropSub) {\n this.backdropSub.unsubscribe();\n this.backdropSub = null;\n }\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n}\n","<div [ngClass]=\"['relative', className || 'w-full']\">\n <button\n #triggerEl\n type=\"button\"\n [id]=\"id\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-expanded]=\"open\"\n [attr.data-state]=\"open ? 'open' : 'closed'\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive flex h-9 w-full appearance-none items-center justify-between rounded-md border bg-background px-3 py-2 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50',\n ]\"\n >\n <span\n [ngClass]=\"[\n 'min-w-0 flex-1 truncate text-left leading-5',\n selectedOption\n ? 'font-medium text-foreground'\n : 'font-normal text-muted-foreground',\n ]\"\n >\n {{ selectedLabel }}\n </span>\n <pdm-icon\n name=\"chevron-down\"\n [size]=\"16\"\n className=\"shrink-0 text-muted-foreground\"\n ></pdm-icon>\n </button>\n\n <!-- Hidden native select kept for screen-reader / form fallback -->\n <select\n class=\"sr-only\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [value]=\"value\"\n (change)=\"onChange($event)\"\n >\n <option\n *ngFor=\"let option of resolvedOptions\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n\n <!-- Slot for content-projected pdm-select-option elements (hidden from layout) -->\n <span class=\"hidden\">\n <ng-content select=\"pdm-select-option\"></ng-content>\n </span>\n</div>\n\n<ng-template #panelTemplate>\n <div\n role=\"listbox\"\n [attr.aria-labelledby]=\"id || null\"\n class=\"overflow-y-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md max-h-96\"\n >\n <button\n *ngFor=\"let option of resolvedOptions\"\n type=\"button\"\n role=\"option\"\n [attr.aria-selected]=\"option.value === value\"\n [disabled]=\"option.disabled\"\n (click)=\"selectOption(option)\"\n [ngClass]=\"[\n 'flex w-full appearance-none items-center justify-between rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors',\n option.disabled\n ? 'cursor-not-allowed opacity-50'\n : 'hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground',\n option.value === value ? 'text-foreground' : '',\n ]\"\n >\n <span class=\"min-w-0 flex-1 truncate leading-5\">{{ option.label }}</span>\n <span\n *ngIf=\"option.value === value\"\n class=\"ml-2 flex shrink-0 items-center justify-end\"\n >\n <pdm-icon\n name=\"check\"\n [size]=\"16\"\n className=\"shrink-0 text-current\"\n ></pdm-icon>\n </span>\n </button>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport type { PdmNativeSelectOption } from '../native-select/native-select.component';\n\n@Component({\n selector: 'pdm-pagination',\n templateUrl: './pagination.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmPaginationComponent {\n @Input() page = 1;\n @Input() pageCount = 1;\n @Input() maxVisible = 4;\n @Input() className = '';\n @Input() rowsPerPageLabel = 'Rows per page';\n @Input() rowsPerPage = 10;\n @Input() rowsPerPageOptions: number[] = [10, 20, 30, 50];\n\n @Output() pageChange = new EventEmitter<number>();\n @Output() rowsPerPageChange = new EventEmitter<number>();\n\n get rowsPerPageSelectOptions(): PdmNativeSelectOption[] {\n return this.rowsPerPageOptions.map((value) => ({\n label: String(value),\n value: String(value)\n }));\n }\n\n get rowsPerPageValue(): string {\n return String(this.rowsPerPage);\n }\n\n get visiblePages(): Array<number | 'ellipsis'> {\n const total = Math.max(1, this.pageCount);\n if (total <= Math.max(1, this.maxVisible)) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n return [1, 2, 'ellipsis', total];\n }\n\n setPage(next: number): void {\n if (next < 1 || next > this.pageCount || next === this.page) {\n return;\n }\n\n this.pageChange.emit(next);\n }\n\n onRowsPerPageChangeValue(value: string): void {\n const next = Number(value);\n if (!Number.isFinite(next) || next <= 0 || next === this.rowsPerPage) {\n return;\n }\n\n this.rowsPerPageChange.emit(next);\n }\n}\n","<nav\n aria-label=\"Pagination\"\n [ngClass]=\"[\n 'mx-auto flex w-full flex-wrap items-center justify-center gap-4',\n className,\n ]\"\n>\n <div class=\"flex items-center gap-3\" *ngIf=\"rowsPerPageOptions.length > 0\">\n <span class=\"text-sm font-medium text-foreground\">{{\n rowsPerPageLabel\n }}</span>\n <pdm-select\n [value]=\"rowsPerPageValue\"\n [options]=\"rowsPerPageSelectOptions\"\n [placeholder]=\"rowsPerPageValue\"\n className=\"w-[120px]\"\n (valueChange)=\"onRowsPerPageChangeValue($event)\"\n ></pdm-select>\n </div>\n\n <ul class=\"m-0 flex list-none items-center gap-1 p-0\">\n <li>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none items-center justify-center gap-1 rounded-md border-0 bg-transparent px-2 text-sm text-foreground hover:bg-accent disabled:opacity-50 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n [disabled]=\"page <= 1\"\n (click)=\"setPage(page - 1)\"\n >\n <pdm-icon name=\"chevron-left\" [size]=\"14\"></pdm-icon>\n Previous\n </button>\n </li>\n <li *ngFor=\"let pageNumber of visiblePages\">\n <ng-container *ngIf=\"pageNumber === 'ellipsis'; else pageButton\">\n <span\n class=\"inline-flex h-9 min-w-9 items-center justify-center px-2 text-sm text-muted-foreground\"\n >...</span\n >\n </ng-container>\n <ng-template #pageButton>\n <button\n type=\"button\"\n [ngClass]=\"[\n 'inline-flex h-9 min-w-9 items-center justify-center rounded-md px-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n pageNumber === page\n ? 'appearance-none border border-border bg-muted text-foreground shadow-sm'\n : 'appearance-none border-0 bg-transparent text-foreground hover:bg-accent hover:text-accent-foreground',\n ]\"\n (click)=\"setPage(+pageNumber)\"\n >\n {{ pageNumber }}\n </button>\n </ng-template>\n </li>\n <li>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none items-center justify-center gap-1 rounded-md border-0 bg-transparent px-2 text-sm text-foreground hover:bg-accent disabled:opacity-50 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n [disabled]=\"page >= pageCount\"\n (click)=\"setPage(page + 1)\"\n >\n Next\n <pdm-icon name=\"chevron-right\" [size]=\"14\"></pdm-icon>\n </button>\n </li>\n </ul>\n</nav>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n ViewChild\n} from '@angular/core';\n\n@Component({\n selector: 'pdm-popover',\n templateUrl: './popover.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmPopoverComponent {\n private _open = false;\n @Input() triggerText = 'Open';\n @Input() className = '';\n @Input() panelClassName = '';\n @Input() showTrigger = true;\n @Output() openChange = new EventEmitter<boolean>();\n\n panelPlacement: 'top' | 'bottom' = 'bottom';\n\n @ViewChild('anchorEl') private anchorRef?: ElementRef<HTMLElement>;\n @ViewChild('triggerEl') private triggerRef?: ElementRef<HTMLElement>;\n @ViewChild('panelEl') private panelRef?: ElementRef<HTMLElement>;\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n @Input()\n set open(value: boolean) {\n this._open = !!value;\n if (this._open) {\n this.schedulePanelPlacementUpdate();\n } else {\n this.panelPlacement = 'bottom';\n }\n this.cdr.markForCheck();\n }\n get open(): boolean {\n return this._open;\n }\n\n get panelClasses(): string[] {\n return [\n this.panelPlacement === 'top'\n ? 'absolute bottom-full left-0 z-30 mb-2 min-w-80 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md'\n : 'absolute left-0 top-full z-30 mt-2 min-w-80 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md',\n this.panelClassName\n ];\n }\n\n toggle(): void {\n this.open = !this.open;\n this.openChange.emit(this.open);\n }\n\n @HostListener('document:keydown.escape')\n onEsc(): void {\n if (this.open) {\n this.open = false;\n this.openChange.emit(false);\n }\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (!this.open) return;\n const target = event.target as Node | null;\n if (target && !this.elementRef.nativeElement.contains(target)) {\n this.open = false;\n this.openChange.emit(false);\n }\n }\n\n @HostListener('window:resize')\n @HostListener('window:scroll')\n onViewportChange(): void {\n this.updatePanelPlacement();\n }\n\n private schedulePanelPlacementUpdate(): void {\n setTimeout(() => this.updatePanelPlacement());\n }\n\n private updatePanelPlacement(): void {\n if (!this.open) return;\n\n const anchorEl = this.triggerRef?.nativeElement || this.anchorRef?.nativeElement;\n const panelEl = this.panelRef?.nativeElement;\n if (!anchorEl || !panelEl || typeof window === 'undefined') {\n return;\n }\n\n const viewportHeight = window.innerHeight;\n const gap = 8;\n const anchorRect = anchorEl.getBoundingClientRect();\n const panelHeight = panelEl.offsetHeight;\n const spaceBelow = Math.max(0, viewportHeight - anchorRect.bottom - gap);\n const spaceAbove = Math.max(0, anchorRect.top - gap);\n const nextPlacement: 'top' | 'bottom' =\n spaceBelow < panelHeight && spaceAbove > spaceBelow ? 'top' : 'bottom';\n\n if (this.panelPlacement !== nextPlacement) {\n this.panelPlacement = nextPlacement;\n this.cdr.markForCheck();\n }\n }\n}\n","<div #anchorEl class=\"relative inline-block\" [ngClass]=\"className\">\n <button #triggerEl *ngIf=\"showTrigger\" type=\"button\" class=\"inline-flex h-9 appearance-none items-center justify-center rounded-md border border-input bg-background px-3 text-sm font-medium text-foreground shadow-sm\" [attr.aria-expanded]=\"open\" (click)=\"toggle()\">{{ triggerText }}</button>\n <div #panelEl *ngIf=\"open || !showTrigger\" [ngClass]=\"panelClasses\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-progress',\n templateUrl: './progress.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmProgressComponent {\n @Input() value = 0;\n @Input() max = 100;\n @Input() indeterminate = false;\n @Input() className = '';\n\n get width(): string {\n if (this.indeterminate) return '100%';\n const safeMax = this.max > 0 ? this.max : 100;\n const pct = Math.min(100, Math.max(0, (this.value / safeMax) * 100));\n return pct + '%';\n }\n}\n","<div\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-valuenow]=\"indeterminate ? null : value\"\n [ngClass]=\"['relative h-1.5 w-full overflow-hidden rounded-full bg-muted', className]\"\n>\n <div [ngClass]=\"['h-full bg-foreground transition-all', indeterminate ? 'animate-pulse' : '']\" [style.width]=\"width\"></div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface PdmRadioOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'pdm-radio-group',\n templateUrl: './radio-group.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmRadioGroupComponent {\n @Input() name = 'pdm-radio-group';\n @Input() value = '';\n @Input() options: PdmRadioOption[] = [];\n @Input() direction: 'vertical' | 'horizontal' = 'vertical';\n @Input() className = '';\n\n @Output() valueChange = new EventEmitter<string>();\n\n optionId(option: PdmRadioOption): string {\n return `${this.name}-${option.value}`;\n }\n\n onChange(event: Event): void {\n this.valueChange.emit((event.target as HTMLInputElement).value);\n }\n}\n","<div\n role=\"radiogroup\"\n [ngClass]=\"[\n 'gap-2 text-sm',\n direction === 'horizontal' ? 'inline-flex items-center' : 'grid',\n className\n ]\"\n>\n <label *ngFor=\"let option of options\" [attr.for]=\"optionId(option)\" class=\"inline-flex cursor-pointer items-center gap-2\">\n <input\n [id]=\"optionId(option)\"\n type=\"radio\"\n [name]=\"name\"\n [value]=\"option.value\"\n [checked]=\"value === option.value\"\n [disabled]=\"option.disabled\"\n class=\"peer sr-only\"\n (change)=\"onChange($event)\"\n />\n <span class=\"relative block h-4 w-4 rounded-full border border-input bg-background peer-checked:border-primary peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-2 peer-focus-visible:ring-offset-background\">\n <span class=\"absolute left-1/2 top-1/2 hidden h-2 w-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary peer-checked:block\"></span>\n </span>\n <span class=\"text-foreground\">{{ option.label }}</span>\n </label>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-scroll-area',\n templateUrl: './scroll-area.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmScrollAreaComponent {\n @Input() maxHeight = '16rem';\n @Input() className = '';\n}\n","<div [style.maxHeight]=\"maxHeight\" [ngClass]=\"['relative overflow-auto rounded-md border border-border', className]\">\n <div class=\"p-3\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-separator',\n templateUrl: './separator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSeparatorComponent {\n @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\n @Input() decorative = true;\n @Input() className = '';\n\n get orientationClass(): string {\n return this.orientation === 'vertical' ? 'h-full w-px' : 'h-px w-full';\n }\n}\n","<div\n [attr.role]=\"decorative ? 'none' : 'separator'\"\n [attr.aria-orientation]=\"orientation\"\n [ngClass]=\"['shrink-0 bg-border', orientationClass, className]\"\n></div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmSheetSide = 'top' | 'right' | 'bottom' | 'left';\n\n@Component({\n selector: 'pdm-sheet',\n templateUrl: './sheet.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSheetComponent {\n @Input() open = false;\n @Input() side: PdmSheetSide = 'right';\n @Input() className = '';\n\n @Output() openChange = new EventEmitter<boolean>();\n\n close(): void {\n this.openChange.emit(false);\n }\n\n get panelClass(): string {\n if (this.side === 'left') return 'left-0 top-0 h-full w-full max-w-[360px] border-r';\n if (this.side === 'top') return 'top-0 left-0 w-full border-b';\n if (this.side === 'bottom') return 'bottom-0 left-0 w-full border-t';\n\n return 'right-0 top-0 h-full w-full max-w-[360px] border-l';\n }\n}\n","<div *ngIf=\"open\" class=\"fixed inset-0 z-50\">\n <button type=\"button\" class=\"absolute inset-0 appearance-none border-0 bg-foreground/80 p-0\" aria-label=\"Close sheet\" (click)=\"close()\"></button>\n\n <section [ngClass]=\"['absolute border border-border bg-background p-6 shadow-lg', panelClass, className]\" role=\"dialog\" aria-modal=\"true\">\n <button type=\"button\" class=\"absolute right-3 top-3 appearance-none rounded-sm border-0 bg-transparent p-0 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\" (click)=\"close()\">\n <pdm-icon name=\"x\" [size]=\"16\"></pdm-icon>\n </button>\n <ng-content></ng-content>\n </section>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-sidebar',\n templateUrl: './sidebar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSidebarComponent {\n @Input() collapsed = false;\n @Input() className = '';\n}\n","<aside [ngClass]=\"['h-full border-r border-border bg-background transition-all', collapsed ? 'w-14' : 'w-64', className]\">\n <ng-content></ng-content>\n</aside>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-skeleton',\n templateUrl: './skeleton.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSkeletonComponent {\n @Input() className = '';\n}\n","<div [ngClass]=\"['animate-pulse rounded-md bg-muted', className]\"></div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'pdm-slider',\n templateUrl: './slider.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSliderComponent {\n @Input() min = 0;\n @Input() max = 100;\n @Input() step = 1;\n @Input() value = 0;\n @Input() disabled = false;\n @Input() className = '';\n\n @Output() valueChange = new EventEmitter<number>();\n\n get percentage(): number {\n const safeRange = this.max - this.min;\n if (safeRange <= 0) {\n return 0;\n }\n\n const bounded = Math.min(this.max, Math.max(this.min, this.value));\n return ((bounded - this.min) / safeRange) * 100;\n }\n\n onInput(event: Event): void {\n this.valueChange.emit(Number((event.target as HTMLInputElement).value));\n }\n}\n","<div [ngClass]=\"['relative h-5 w-full', className]\">\n <div class=\"absolute left-0 right-0 top-1/2 h-1 -translate-y-1/2 rounded-full bg-muted\"></div>\n <div class=\"absolute left-0 top-1/2 h-1 -translate-y-1/2 rounded-full bg-foreground\" [style.width.%]=\"percentage\"></div>\n <div class=\"absolute top-1/2 h-4 w-4 -translate-x-1/2 -translate-y-1/2 rounded-full border border-foreground bg-background shadow-sm\" [style.left.%]=\"percentage\"></div>\n <input\n type=\"range\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n class=\"absolute inset-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n (input)=\"onInput($event)\"\n />\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmToastTone = 'default' | 'success' | 'error' | 'warning';\n\n@Component({\n selector: 'pdm-sonner',\n templateUrl: './sonner.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSonnerComponent {\n @Input() title = '';\n @Input() description = '';\n @Input() tone: PdmToastTone = 'default';\n @Input() className = '';\n\n @Output() dismissed = new EventEmitter<void>();\n\n get toneClass(): string {\n if (this.tone === 'success') return 'border-emerald-200 bg-emerald-50 text-emerald-900';\n if (this.tone === 'error') return 'border-red-200 bg-red-50 text-red-900';\n if (this.tone === 'warning') return 'border-amber-200 bg-amber-50 text-amber-900';\n\n return 'border-border bg-background text-foreground';\n }\n}\n","<div [ngClass]=\"['flex w-full max-w-sm items-start gap-3 rounded-lg border p-4 shadow-lg', toneClass, className]\" role=\"status\" aria-live=\"polite\">\n <div class=\"grid gap-0.5\">\n <p *ngIf=\"title\" class=\"m-0 text-sm font-semibold\">{{ title }}</p>\n <p *ngIf=\"description\" class=\"m-0 text-sm opacity-90\">{{ description }}</p>\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"ml-auto appearance-none rounded-sm border-0 bg-transparent p-0 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\" (click)=\"dismissed.emit()\" aria-label=\"Dismiss\">\n <pdm-icon name=\"x\" [size]=\"14\"></pdm-icon>\n </button>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-spinner',\n templateUrl: './spinner.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSpinnerComponent {\n @Input() size = 16;\n @Input() className = '';\n}\n","<span\n [style.width.px]=\"size\"\n [style.height.px]=\"size\"\n [ngClass]=\"['inline-block animate-spin rounded-full border-2 border-current border-r-transparent', className]\"\n aria-hidden=\"true\"\n></span>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmSwitchSize = 'default' | 'sm';\n\n@Component({\n selector: 'pdm-switch',\n templateUrl: './switch.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSwitchComponent {\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n @Input() id = '';\n @Input() checked = false;\n @Input() disabled = false;\n @Input() label = '';\n @Input() className = '';\n @Input() size: PdmSwitchSize = 'default';\n\n @Output() checkedChange = new EventEmitter<boolean>();\n\n get rootClasses(): string[] {\n return [\n 'peer relative inline-flex appearance-none shrink-0 items-center rounded-full border border-transparent outline-none transition-all focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50',\n this.size === 'sm' ? 'h-[14px] w-[24px]' : 'h-[18.4px] w-[32px]',\n this.checked ? 'bg-primary' : 'bg-input dark:bg-input/80'\n ];\n }\n\n get thumbClasses(): string[] {\n return [\n 'pointer-events-none block rounded-full bg-background ring-0 transition-transform',\n this.size === 'sm' ? 'size-3' : 'size-4',\n this.checked ? 'translate-x-[calc(100%-2px)]' : 'translate-x-0'\n ];\n }\n\n onToggle(): void {\n if (this.disabled) return;\n const next = !this.checked;\n this.checked = next;\n this.checkedChange.emit(next);\n this.cdr.markForCheck();\n }\n}\n","<div [ngClass]=\"['flex items-center space-x-2', className]\">\n <button\n type=\"button\"\n role=\"switch\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-disabled]=\"disabled\"\n [attr.data-state]=\"checked ? 'checked' : 'unchecked'\"\n [attr.data-disabled]=\"disabled ? 'true' : 'false'\"\n [attr.data-size]=\"size\"\n [attr.data-slot]=\"'switch'\"\n [attr.value]=\"checked ? 'on' : 'off'\"\n [id]=\"id\"\n [disabled]=\"disabled\"\n [ngClass]=\"rootClasses\"\n (click)=\"onToggle()\"\n >\n <span\n [attr.data-state]=\"checked ? 'checked' : 'unchecked'\"\n [attr.data-slot]=\"'switch-thumb'\"\n [ngClass]=\"thumbClasses\"\n ></span>\n </button>\n <label\n *ngIf=\"label\"\n [attr.for]=\"id\"\n [attr.data-slot]=\"'label'\"\n class=\"flex cursor-pointer items-center gap-2 text-sm leading-none font-medium select-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50\"\n (click)=\"onToggle()\"\n >\n {{ label }}\n </label>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\n\nexport type PdmTableVariant = 'default' | 'data' | 'interactive';\n\n@Component({\n selector: 'pdm-table',\n templateUrl: './table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmTableComponent {\n @Input() variant: PdmTableVariant = 'default';\n @Input() reorderRows = false;\n @Input() dragHandleSelector = '[data-drag-handle],[data-slot=row-drag-handle],.row-drag-handle,[data-auto-drag-handle]';\n @Input() className = '';\n @Output() rowOrderChange = new EventEmitter<string[]>();\n\n @ViewChild('tableElement') tableElement?: ElementRef<HTMLTableElement>;\n\n private cleanupListeners: Array<() => void> = [];\n private observer?: MutationObserver;\n private draggedRow: HTMLTableRowElement | null = null;\n\n constructor(private readonly renderer: Renderer2) {}\n\n ngAfterViewInit(): void {\n this.syncReorderBehavior();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['reorderRows'] || changes['variant']) {\n this.syncReorderBehavior();\n }\n }\n\n ngOnDestroy(): void {\n this.cleanupReorderBehavior();\n }\n\n get wrapperClasses(): string[] {\n return [\n 'relative w-full overflow-auto',\n this.variant === 'interactive' ? 'overflow-x-auto overflow-y-hidden rounded-xl border border-border bg-background' : '',\n this.variant === 'data' ? 'overflow-hidden rounded-md border border-border bg-background' : '',\n this.className\n ];\n }\n\n get tableClasses(): string[] {\n return [\n 'w-full caption-bottom text-sm',\n this.variant === 'data'\n ? 'border-collapse text-foreground [&_thead_tr]:border-b [&_thead_tr]:border-border [&_tbody_tr]:border-b [&_tbody_tr]:border-border [&_tbody_tr:last-child]:border-b-0 [&_th]:h-10 [&_th]:px-2 [&_th]:text-left [&_th]:align-middle [&_th]:font-medium [&_td]:p-2 [&_td]:align-middle'\n : '',\n this.variant === 'interactive'\n ? 'text-foreground [&_thead]:sticky [&_thead]:top-0 [&_thead]:z-10 [&_thead]:bg-muted/70 [&_thead_tr]:border-b [&_thead_tr]:border-border [&_th]:h-12 [&_th]:px-4 [&_th]:text-left [&_th]:align-middle [&_th]:text-sm [&_th]:font-medium [&_th]:whitespace-nowrap [&_tbody_tr]:border-b [&_tbody_tr]:border-border [&_tbody_tr]:transition-colors [&_tbody_tr:hover]:bg-muted/50 [&_tbody_tr:last-child]:border-b-0 [&_td]:h-14 [&_td]:px-4 [&_td]:align-middle [&_td]:text-sm [&_td]:whitespace-nowrap [&_td:first-child]:w-10 [&_td:last-child]:w-10 [&_svg]:text-muted-foreground'\n : ''\n ];\n }\n\n private syncReorderBehavior(): void {\n this.cleanupReorderBehavior();\n\n if (!this.isReorderEnabled) {\n return;\n }\n\n const tbody = this.getTbody();\n if (!tbody) {\n return;\n }\n\n this.setRowsDraggable(tbody, true);\n\n this.cleanupListeners.push(\n this.renderer.listen(tbody, 'mousedown', (event: MouseEvent) => this.armDragFromHandle(event)),\n this.renderer.listen(tbody, 'dragstart', (event: DragEvent) => this.onDragStart(event)),\n this.renderer.listen(tbody, 'dragover', (event: DragEvent) => this.onDragOver(event, tbody)),\n this.renderer.listen(tbody, 'drop', (event: DragEvent) => this.onDrop(event)),\n this.renderer.listen(tbody, 'dragend', () => this.onDragEnd())\n );\n\n this.observer = new MutationObserver(() => this.setRowsDraggable(tbody, true));\n this.observer.observe(tbody, { childList: true });\n }\n\n private cleanupReorderBehavior(): void {\n this.cleanupListeners.forEach((dispose) => dispose());\n this.cleanupListeners = [];\n\n if (this.observer) {\n this.observer.disconnect();\n this.observer = undefined;\n }\n\n const tbody = this.getTbody();\n if (tbody) {\n this.setRowsDraggable(tbody, false);\n }\n\n this.draggedRow = null;\n }\n\n private get isReorderEnabled(): boolean {\n return this.reorderRows;\n }\n\n private getTbody(): HTMLTableSectionElement | null {\n return this.tableElement?.nativeElement.tBodies.item(0) ?? null;\n }\n\n private setRowsDraggable(tbody: HTMLTableSectionElement, enabled: boolean): void {\n const rows = Array.from(tbody.rows);\n rows.forEach((row) => {\n this.syncAutoDragHandle(row, enabled);\n row.draggable = false;\n if (!enabled) {\n delete row.dataset['dragging'];\n delete row.dataset['dragArmed'];\n }\n });\n }\n\n private syncAutoDragHandle(row: HTMLTableRowElement, enabled: boolean): void {\n const firstCell = row.cells.item(0);\n if (!firstCell) {\n return;\n }\n\n const existingAutoHandle = firstCell.querySelector('[data-auto-drag-handle]');\n if (!enabled) {\n existingAutoHandle?.remove();\n return;\n }\n\n const hasCustomHandle = !!firstCell.querySelector('[data-drag-handle],[data-slot=row-drag-handle],.row-drag-handle');\n if (hasCustomHandle || existingAutoHandle) {\n return;\n }\n\n const button = this.renderer.createElement('button') as HTMLButtonElement;\n this.renderer.setAttribute(button, 'type', 'button');\n this.renderer.setAttribute(button, 'aria-label', 'Drag row');\n this.renderer.setAttribute(button, 'data-auto-drag-handle', 'true');\n this.renderer.addClass(button, 'inline-flex');\n this.renderer.addClass(button, 'h-7');\n this.renderer.addClass(button, 'w-7');\n this.renderer.addClass(button, 'items-center');\n this.renderer.addClass(button, 'justify-center');\n this.renderer.addClass(button, 'cursor-grab');\n this.renderer.addClass(button, 'active:cursor-grabbing');\n this.renderer.addClass(button, 'text-muted-foreground');\n\n const dots = this.renderer.createElement('span');\n this.renderer.addClass(dots, 'text-sm');\n this.renderer.addClass(dots, 'leading-none');\n this.renderer.setProperty(dots, 'textContent', '⋮⋮');\n this.renderer.appendChild(button, dots);\n\n this.renderer.insertBefore(firstCell, button, firstCell.firstChild);\n }\n\n private onDragStart(event: DragEvent): void {\n const target = event.target as HTMLElement | null;\n const row = target?.closest('tr');\n if (!row) {\n return;\n }\n\n const handle = target?.closest(this.dragHandleSelector);\n const isArmed = row.dataset['dragArmed'] === 'true';\n if ((!handle || !row.contains(handle)) && !isArmed) {\n event.preventDefault();\n return;\n }\n\n this.draggedRow = row as HTMLTableRowElement;\n this.draggedRow.dataset['dragging'] = 'true';\n\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', '');\n }\n }\n\n private onDragOver(event: DragEvent, tbody: HTMLTableSectionElement): void {\n if (!this.draggedRow) {\n return;\n }\n\n event.preventDefault();\n const target = event.target as HTMLElement | null;\n const targetRow = target?.closest('tr') as HTMLTableRowElement | null;\n\n if (!targetRow || targetRow === this.draggedRow) {\n return;\n }\n\n const rect = targetRow.getBoundingClientRect();\n const shouldInsertBefore = event.clientY < rect.top + rect.height / 2;\n tbody.insertBefore(this.draggedRow, shouldInsertBefore ? targetRow : targetRow.nextSibling);\n }\n\n private onDrop(event: DragEvent): void {\n event.preventDefault();\n }\n\n private onDragEnd(): void {\n const tbody = this.getTbody();\n if (tbody) {\n Array.from(tbody.rows).forEach((row) => {\n row.draggable = false;\n delete row.dataset['dragArmed'];\n });\n }\n\n if (this.draggedRow) {\n delete this.draggedRow.dataset['dragging'];\n this.draggedRow = null;\n }\n\n if (!tbody) {\n return;\n }\n\n const order = Array.from(tbody.rows).map((row, index) => row.getAttribute('data-row-id') || String(index));\n this.rowOrderChange.emit(order);\n }\n\n private armDragFromHandle(event: MouseEvent): void {\n const target = event.target as HTMLElement | null;\n const handle = target?.closest(this.dragHandleSelector);\n if (!handle) {\n return;\n }\n\n const row = handle.closest('tr') as HTMLTableRowElement | null;\n if (!row) {\n return;\n }\n\n row.draggable = true;\n row.dataset['dragArmed'] = 'true';\n }\n}\n","<div [ngClass]=\"wrapperClasses\" [attr.data-slot]=\"variant === 'interactive' ? 'table-container' : null\">\n <table #tableElement [ngClass]=\"tableClasses\" [attr.data-slot]=\"variant === 'interactive' ? 'table' : null\">\n <ng-content></ng-content>\n </table>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface PdmTabItem {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'pdm-tabs',\n templateUrl: './tabs.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmTabsComponent {\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n @Input() items: PdmTabItem[] = [];\n @Input() value = '';\n @Input() className = '';\n\n @Output() valueChange = new EventEmitter<string>();\n\n select(item: PdmTabItem): void {\n if (!item.disabled) {\n this.value = item.value;\n this.valueChange.emit(item.value);\n this.cdr.markForCheck();\n }\n }\n}\n","<div [ngClass]=\"['w-full', className]\">\n <div role=\"tablist\" class=\"inline-flex h-8 w-fit items-center justify-center rounded-lg bg-muted p-[3px] text-muted-foreground\">\n <button\n *ngFor=\"let item of items\"\n role=\"tab\"\n [attr.aria-selected]=\"value === item.value\"\n [disabled]=\"item.disabled\"\n [ngClass]=\"[\n 'relative inline-flex h-[calc(100%-1px)] appearance-none flex-1 items-center justify-center gap-1.5 whitespace-nowrap rounded-md border border-transparent px-1.5 py-0.5 text-sm font-medium transition-all focus-visible:border-ring focus-visible:outline-none focus-visible:outline-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50',\n value === item.value ? 'bg-background text-foreground shadow-sm' : 'bg-transparent text-muted-foreground'\n ]\"\n (click)=\"select(item)\"\n type=\"button\"\n >\n {{ item.label }}\n </button>\n </div>\n <div class=\"mt-4\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'pdm-textarea',\n templateUrl: './textarea.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmTextareaComponent {\n @Input() id = '';\n @Input() value = '';\n @Input() placeholder = '';\n @Input() rows = 4;\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() required = false;\n @Input() invalid = false;\n @Input() className = '';\n @Input() textareaClassName = '';\n @Input() label = '';\n @Input() helperText = '';\n @Input() errorText = '';\n\n @Output() valueChange = new EventEmitter<string>();\n\n onInput(event: Event): void {\n this.valueChange.emit((event.target as HTMLTextAreaElement).value);\n }\n}\n","<div [ngClass]=\"['grid w-full gap-2', className]\">\n <label\n *ngIf=\"label\"\n [attr.for]=\"id\"\n [ngClass]=\"[\n 'text-sm font-medium leading-none',\n invalid ? 'text-destructive' : 'text-foreground'\n ]\"\n >{{ label }}</label>\n <textarea\n [id]=\"id\"\n [rows]=\"rows\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive aria-invalid:placeholder:text-destructive/70 placeholder:text-muted-foreground flex min-h-20 w-full rounded-md border bg-transparent px-3 py-2 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50',\n textareaClassName\n ]\"\n (input)=\"onInput($event)\"\n ></textarea>\n <p *ngIf=\"!invalid && helperText\" class=\"m-0 text-sm text-muted-foreground\">{{ helperText }}</p>\n <p *ngIf=\"invalid && errorText\" class=\"m-0 text-sm text-destructive\">{{ errorText }}</p>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmToggleSize = 'sm' | 'default' | 'lg';\n\n@Component({\n selector: 'pdm-toggle',\n templateUrl: './toggle.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmToggleComponent {\n @Input() pressed = false;\n @Input() disabled = false;\n @Input() size: PdmToggleSize = 'default';\n @Input() className = '';\n\n @Output() pressedChange = new EventEmitter<boolean>();\n\n toggle(): void {\n if (!this.disabled) {\n this.pressedChange.emit(!this.pressed);\n }\n }\n\n get sizeClass(): string {\n if (this.size === 'sm') return 'h-8 px-2.5 min-w-[32px]';\n if (this.size === 'lg') return 'h-10 px-4 min-w-[40px]';\n return 'h-9 px-3 min-w-[36px]';\n }\n}\n","<button\n type=\"button\"\n [disabled]=\"disabled\"\n [attr.aria-pressed]=\"pressed\"\n [ngClass]=\"[\n 'inline-flex appearance-none items-center justify-center gap-2 rounded-md border-0 text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50',\n 'ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n sizeClass,\n pressed\n ? 'bg-accent text-accent-foreground'\n : 'bg-transparent text-foreground hover:bg-accent hover:text-accent-foreground',\n className\n ]\"\n (click)=\"toggle()\"\n>\n <ng-content></ng-content>\n</button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface PdmToggleGroupItem {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'pdm-toggle-group',\n templateUrl: './toggle-group.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmToggleGroupComponent {\n @Input() items: PdmToggleGroupItem[] = [];\n @Input() value = '';\n @Input() className = '';\n\n @Output() valueChange = new EventEmitter<string>();\n\n onSelect(next: string, disabled?: boolean): void {\n if (!disabled && next !== this.value) {\n this.valueChange.emit(next);\n }\n }\n}\n","<div [ngClass]=\"['inline-flex items-center rounded-md border border-border p-1', className]\" role=\"group\">\n <button\n *ngFor=\"let item of items\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n [attr.aria-pressed]=\"item.value === value\"\n [ngClass]=\"[\n 'inline-flex h-8 appearance-none items-center justify-center rounded-sm border-0 bg-transparent px-2.5 text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n item.value === value\n ? 'bg-accent text-accent-foreground'\n : 'text-foreground hover:bg-accent hover:text-accent-foreground'\n ]\"\n (click)=\"onSelect(item.value, item.disabled)\"\n >\n {{ item.label }}\n </button>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-tooltip',\n templateUrl: './tooltip.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmTooltipComponent {\n @Input() text = '';\n @Input() side: 'top' | 'right' | 'bottom' | 'left' = 'top';\n @Input() className = '';\n open = false;\n\n get positionClass(): string {\n if (this.side === 'bottom') return 'top-full left-1/2 -translate-x-1/2 mt-2';\n if (this.side === 'left') return 'right-full top-1/2 -translate-y-1/2 mr-2';\n if (this.side === 'right') return 'left-full top-1/2 -translate-y-1/2 ml-2';\n return 'bottom-full left-1/2 -translate-x-1/2 mb-2';\n }\n}\n","<span class=\"relative inline-flex\" [ngClass]=\"className\" (mouseenter)=\"open = true\" (mouseleave)=\"open = false\" (focusin)=\"open = true\" (focusout)=\"open = false\">\n <ng-content></ng-content>\n <span *ngIf=\"open\" [ngClass]=\"['pointer-events-none absolute z-50 overflow-hidden rounded-md bg-foreground px-3 py-1.5 text-xs text-background animate-in fade-in-0 zoom-in-95', positionClass]\">\n {{ text }}\n </span>\n</span>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PdmAccordionComponent } from './components/accordion/accordion.component';\nimport { PdmAlertComponent } from './components/alert/alert.component';\nimport { PdmAlertDialogComponent } from './components/alert-dialog/alert-dialog.component';\nimport { PdmAspectRatioComponent } from './components/aspect-ratio/aspect-ratio.component';\nimport { PdmAvatarComponent } from './components/avatar/avatar.component';\nimport { PdmBadgeComponent } from './components/badge/badge.component';\nimport { PdmBreadcrumbComponent } from './components/breadcrumb/breadcrumb.component';\nimport { PdmButtonGroupComponent } from './components/button-group/button-group.component';\nimport { PdmButtonComponent } from './components/button/button.component';\nimport { PdmCalendarComponent } from './components/calendar/calendar.component';\nimport { PdmCarouselComponent } from './components/carousel/carousel.component';\nimport { PdmCardComponent } from './components/card/card.component';\nimport { PdmChartComponent } from './components/chart/chart.component';\nimport { PdmCheckboxComponent } from './components/checkbox/checkbox.component';\nimport { PdmCollapsibleComponent } from './components/collapsible/collapsible.component';\nimport { PdmComboboxComponent } from './components/combobox/combobox.component';\nimport { PdmCommandComponent } from './components/command/command.component';\nimport { PdmContextMenuComponent } from './components/context-menu/context-menu.component';\nimport { PdmDataTableComponent } from './components/data-table/data-table.component';\nimport { PdmDatePickerComponent } from './components/date-picker/date-picker.component';\nimport { PdmDialogComponent } from './components/dialog/dialog.component';\nimport { PdmDropdownMenuComponent } from './components/dropdown-menu/dropdown-menu.component';\nimport { PdmDrawerComponent } from './components/drawer/drawer.component';\nimport { PdmEmptyComponent } from './components/empty/empty.component';\nimport { PdmFieldComponent } from './components/field/field.component';\nimport { PdmHoverCardComponent } from './components/hover-card/hover-card.component';\nimport { PdmIconComponent } from './components/icon/icon.component';\nimport { PdmItemComponent } from './components/item/item.component';\nimport { PdmInputComponent } from './components/input/input.component';\nimport { PdmInputPasswordComponent } from './components/input-password/input-password.component';\nimport { PdmInputGroupComponent } from './components/input-group/input-group.component';\nimport { PdmInputOtpComponent } from './components/input-otp/input-otp.component';\nimport { PdmKbdComponent } from './components/kbd/kbd.component';\nimport { PdmLabelComponent } from './components/label/label.component';\nimport { PdmMenubarComponent } from './components/menubar/menubar.component';\nimport { PdmNativeSelectComponent } from './components/native-select/native-select.component';\nimport { PdmNavigationMenuComponent } from './components/navigation-menu/navigation-menu.component';\nimport { PdmPaginationComponent } from './components/pagination/pagination.component';\nimport { PdmPopoverComponent } from './components/popover/popover.component';\nimport { PdmProgressComponent } from './components/progress/progress.component';\nimport { PdmRadioGroupComponent } from './components/radio-group/radio-group.component';\nimport { PdmScrollAreaComponent } from './components/scroll-area/scroll-area.component';\nimport { PdmSelectComponent } from './components/select/select.component';\nimport { PdmSelectOptionDirective } from './components/select/select-option.directive';\nimport { PdmSeparatorComponent } from './components/separator/separator.component';\nimport { PdmSheetComponent } from './components/sheet/sheet.component';\nimport { PdmSidebarComponent } from './components/sidebar/sidebar.component';\nimport { PdmSkeletonComponent } from './components/skeleton/skeleton.component';\nimport { PdmSliderComponent } from './components/slider/slider.component';\nimport { PdmSonnerComponent } from './components/sonner/sonner.component';\nimport { PdmSpinnerComponent } from './components/spinner/spinner.component';\nimport { PdmSwitchComponent } from './components/switch/switch.component';\nimport { PdmTableComponent } from './components/table/table.component';\nimport { PdmTabsComponent } from './components/tabs/tabs.component';\nimport { PdmTextareaComponent } from './components/textarea/textarea.component';\nimport { PdmToggleComponent } from './components/toggle/toggle.component';\nimport { PdmToggleGroupComponent } from './components/toggle-group/toggle-group.component';\nimport { PdmTooltipComponent } from './components/tooltip/tooltip.component';\n\nconst COMPONENTS = [\n PdmAccordionComponent,\n PdmAlertComponent,\n PdmAlertDialogComponent,\n PdmAspectRatioComponent,\n PdmAvatarComponent,\n PdmBadgeComponent,\n PdmBreadcrumbComponent,\n PdmButtonGroupComponent,\n PdmButtonComponent,\n PdmCalendarComponent,\n PdmCarouselComponent,\n PdmCardComponent,\n PdmChartComponent,\n PdmCheckboxComponent,\n PdmCollapsibleComponent,\n PdmComboboxComponent,\n PdmCommandComponent,\n PdmContextMenuComponent,\n PdmDataTableComponent,\n PdmDatePickerComponent,\n PdmDialogComponent,\n PdmDropdownMenuComponent,\n PdmDrawerComponent,\n PdmEmptyComponent,\n PdmFieldComponent,\n PdmHoverCardComponent,\n PdmIconComponent,\n PdmItemComponent,\n PdmInputComponent,\n PdmInputPasswordComponent,\n PdmInputGroupComponent,\n PdmInputOtpComponent,\n PdmKbdComponent,\n PdmLabelComponent,\n PdmMenubarComponent,\n PdmNativeSelectComponent,\n PdmNavigationMenuComponent,\n PdmPaginationComponent,\n PdmPopoverComponent,\n PdmProgressComponent,\n PdmRadioGroupComponent,\n PdmScrollAreaComponent,\n PdmSelectComponent,\n PdmSelectOptionDirective,\n PdmSeparatorComponent,\n PdmSheetComponent,\n PdmSidebarComponent,\n PdmSkeletonComponent,\n PdmSliderComponent,\n PdmSonnerComponent,\n PdmSpinnerComponent,\n PdmSwitchComponent,\n PdmTableComponent,\n PdmTabsComponent,\n PdmTextareaComponent,\n PdmToggleComponent,\n PdmToggleGroupComponent,\n PdmTooltipComponent\n];\n\n@NgModule({\n imports: [CommonModule, OverlayModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class PdmUiKitModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i2.PdmIconComponent","formatDateFns","i3.PdmCalendarComponent","i4.PdmLabelComponent","i2.PdmButtonComponent","i3.PdmIconComponent","i3.PdmSelectComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pdm-ui-kit.mjs","sources":["../../../src/lib/components/accordion/accordion.component.ts","../../../src/lib/components/accordion/accordion.component.html","../../../src/lib/components/alert/alert.component.ts","../../../src/lib/components/alert/alert.component.html","../../../src/lib/components/alert-dialog/alert-dialog.component.ts","../../../src/lib/components/alert-dialog/alert-dialog.component.html","../../../src/lib/components/aspect-ratio/aspect-ratio.component.ts","../../../src/lib/components/aspect-ratio/aspect-ratio.component.html","../../../src/lib/components/avatar/avatar.component.ts","../../../src/lib/components/avatar/avatar.component.html","../../../src/lib/components/badge/badge.component.ts","../../../src/lib/components/badge/badge.component.html","../../../src/lib/components/breadcrumb/breadcrumb.component.ts","../../../src/lib/components/breadcrumb/breadcrumb.component.html","../../../src/lib/components/button-group/button-group.component.ts","../../../src/lib/components/button-group/button-group.component.html","../../../src/lib/components/button/button.component.ts","../../../src/lib/components/button/button.component.html","../../../src/lib/components/calendar/calendar.component.ts","../../../src/lib/components/calendar/calendar.component.html","../../../src/lib/components/carousel/carousel.component.ts","../../../src/lib/components/carousel/carousel.component.html","../../../src/lib/components/card/card.component.ts","../../../src/lib/components/card/card.component.html","../../../src/lib/components/chart/chart.component.ts","../../../src/lib/components/chart/chart.component.html","../../../src/lib/components/checkbox/checkbox.component.ts","../../../src/lib/components/checkbox/checkbox.component.html","../../../src/lib/components/collapsible/collapsible.component.ts","../../../src/lib/components/collapsible/collapsible.component.html","../../../src/lib/components/combobox/combobox.component.ts","../../../src/lib/components/combobox/combobox.component.html","../../../src/lib/components/icon/icon.component.ts","../../../src/lib/components/icon/icon.component.html","../../../src/lib/components/command/command.component.ts","../../../src/lib/components/command/command.component.html","../../../src/lib/components/context-menu/context-menu.component.ts","../../../src/lib/components/context-menu/context-menu.component.html","../../../src/lib/utils/responsive.ts","../../../src/lib/components/table/table.component.ts","../../../src/lib/components/table/table.component.html","../../../src/lib/components/data-table/data-table.component.ts","../../../src/lib/components/data-table/data-table.component.html","../../../src/lib/overlay/create-flexible-position-strategy.ts","../../../src/lib/components/label/label.component.ts","../../../src/lib/components/label/label.component.html","../../../src/lib/components/date-picker/date-picker.component.ts","../../../src/lib/components/date-picker/date-picker.component.html","../../../src/lib/utils/z-index.ts","../../../src/lib/components/dialog/dialog.component.ts","../../../src/lib/components/dialog/dialog.component.html","../../../src/lib/components/draggable-table/draggable-table.component.ts","../../../src/lib/components/draggable-table/draggable-table.component.html","../../../src/lib/components/dropdown-menu/dropdown-menu.component.ts","../../../src/lib/components/dropdown-menu/dropdown-menu.component.html","../../../src/lib/components/drawer/drawer.component.ts","../../../src/lib/components/drawer/drawer.component.html","../../../src/lib/components/empty/empty.component.ts","../../../src/lib/components/empty/empty.component.html","../../../src/lib/components/field/field.component.ts","../../../src/lib/components/field/field.component.html","../../../src/lib/components/hover-card/hover-card.component.ts","../../../src/lib/components/hover-card/hover-card.component.html","../../../src/lib/components/item/item.component.ts","../../../src/lib/components/item/item.component.html","../../../src/lib/components/input/input.component.ts","../../../src/lib/components/input/input.component.html","../../../src/lib/components/input-password/input-password.component.ts","../../../src/lib/components/input-password/input-password.component.html","../../../src/lib/components/input-group/input-group.component.ts","../../../src/lib/components/input-group/input-group.component.html","../../../src/lib/components/input-otp/input-otp.component.ts","../../../src/lib/components/input-otp/input-otp.component.html","../../../src/lib/components/kbd/kbd.component.ts","../../../src/lib/components/kbd/kbd.component.html","../../../src/lib/components/menubar/menubar.component.ts","../../../src/lib/components/menubar/menubar.component.html","../../../src/lib/components/native-select/native-select.component.ts","../../../src/lib/components/native-select/native-select.component.html","../../../src/lib/components/navigation-menu/navigation-menu.component.ts","../../../src/lib/components/navigation-menu/navigation-menu.component.html","../../../src/lib/overlay/pdm-outside-click.directive.ts","../../../src/lib/components/select/select-option.directive.ts","../../../src/lib/components/select/select.component.ts","../../../src/lib/components/select/select.component.html","../../../src/lib/components/pagination/pagination.component.ts","../../../src/lib/components/pagination/pagination.component.html","../../../src/lib/components/popover/popover.component.ts","../../../src/lib/components/popover/popover.component.html","../../../src/lib/components/progress/progress.component.ts","../../../src/lib/components/progress/progress.component.html","../../../src/lib/components/radio-group/radio-group.component.ts","../../../src/lib/components/radio-group/radio-group.component.html","../../../src/lib/components/scroll-area/scroll-area.component.ts","../../../src/lib/components/scroll-area/scroll-area.component.html","../../../src/lib/components/separator/separator.component.ts","../../../src/lib/components/separator/separator.component.html","../../../src/lib/components/sheet/sheet.component.ts","../../../src/lib/components/sheet/sheet.component.html","../../../src/lib/components/sidebar/sidebar.component.ts","../../../src/lib/components/sidebar/sidebar.component.html","../../../src/lib/components/skeleton/skeleton.component.ts","../../../src/lib/components/skeleton/skeleton.component.html","../../../src/lib/components/slider/slider.component.ts","../../../src/lib/components/slider/slider.component.html","../../../src/lib/components/sonner/sonner.component.ts","../../../src/lib/components/sonner/sonner.component.html","../../../src/lib/components/spinner/spinner.component.ts","../../../src/lib/components/spinner/spinner.component.html","../../../src/lib/components/switch/switch.component.ts","../../../src/lib/components/switch/switch.component.html","../../../src/lib/components/tabs/tabs.component.ts","../../../src/lib/components/tabs/tabs.component.html","../../../src/lib/components/textarea/textarea.component.ts","../../../src/lib/components/textarea/textarea.component.html","../../../src/lib/components/toggle/toggle.component.ts","../../../src/lib/components/toggle/toggle.component.html","../../../src/lib/components/toggle-group/toggle-group.component.ts","../../../src/lib/components/toggle-group/toggle-group.component.html","../../../src/lib/components/tooltip/tooltip.component.ts","../../../src/lib/components/tooltip/tooltip.component.html","../../../src/lib/pdm-ui-kit.module.ts","../../../src/pdm-ui-kit.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface PdmAccordionItem {\n id: string;\n title: string;\n content: string | string[];\n disabled?: boolean;\n}\n\n@Component({\n selector: 'pdm-accordion',\n templateUrl: './accordion.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmAccordionComponent {\n @Input() items: PdmAccordionItem[] = [];\n @Input() expandedIndex = -1;\n @Input() className = '';\n\n @Output() expandedIndexChange = new EventEmitter<number>();\n\n isExpanded(index: number): boolean {\n return this.expandedIndex === index;\n }\n\n contentLines(content: string | string[]): string[] {\n if (Array.isArray(content)) return content;\n return content\n .split('\\n')\n .map((line) => line.trim())\n .filter((line) => line.length > 0);\n }\n\n toggle(index: number): void {\n if (this.items[index]?.disabled) return;\n this.expandedIndexChange.emit(this.expandedIndex === index ? -1 : index);\n }\n}\n","<div [ngClass]=\"['w-full', className]\">\n <div *ngFor=\"let item of items; let i = index\" class=\"border-b border-border\">\n <h3>\n <button\n type=\"button\"\n class=\"flex w-full appearance-none items-center justify-between border-0 bg-transparent py-4 text-left text-sm font-medium text-foreground transition-all hover:underline ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n [disabled]=\"item.disabled\"\n [attr.aria-expanded]=\"isExpanded(i)\"\n [attr.aria-controls]=\"item.id + '-panel'\"\n (click)=\"toggle(i)\"\n >\n <span class=\"pr-2\">{{ item.title }}</span>\n <span class=\"inline-flex h-6 w-6 items-center justify-center text-foreground\" aria-hidden=\"true\">\n <svg\n class=\"h-4 w-4 transition-transform\"\n [ngClass]=\"isExpanded(i) ? 'rotate-180' : ''\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M3.5 6.5L8 11L12.5 6.5\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </button>\n </h3>\n <div\n *ngIf=\"isExpanded(i)\"\n [id]=\"item.id + '-panel'\"\n class=\"flex flex-col gap-4 pb-4 text-sm text-muted-foreground\"\n >\n <p *ngFor=\"let line of contentLines(item.content)\" class=\"m-0\">{{ line }}</p>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmAlertVariant = 'default' | 'title-only' | 'destructive';\n\n@Component({\n selector: 'pdm-alert',\n templateUrl: './alert.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmAlertComponent {\n @Input() variant: PdmAlertVariant = 'default';\n @Input() title = 'Success! Your changes have been saved';\n @Input() description = 'This is an alert with icon, title and description.';\n @Input() details: string[] = [];\n @Input() className = '';\n\n get isDestructive(): boolean {\n return this.variant === 'destructive';\n }\n\n get isTitleOnly(): boolean {\n return this.variant === 'title-only';\n }\n}\n\n","<section\n role=\"alert\"\n [ngClass]=\"[\n 'w-full rounded-lg border border-border bg-background p-4',\n className\n ]\"\n>\n <div [ngClass]=\"['flex gap-3', isDestructive ? 'items-start' : 'items-center']\">\n <span class=\"inline-flex h-6 w-6 shrink-0 items-center justify-center\">\n <svg *ngIf=\"!isDestructive && !isTitleOnly\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M8.5 12.5L10.8 14.8L15.8 9.8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <svg *ngIf=\"isTitleOnly\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 8H19\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <path d=\"M9 8V6.5C9 5.67 9.67 5 10.5 5H13.5C14.33 5 15 5.67 15 6.5V8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <path d=\"M7 8L8 18.5C8.07 19.33 8.77 20 9.6 20H14.4C15.23 20 15.93 19.33 16 18.5L17 8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n <svg *ngIf=\"isDestructive\" viewBox=\"0 0 24 24\" class=\"h-5 w-5 text-destructive\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M12 8V12\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n <circle cx=\"12\" cy=\"16\" r=\"1\" fill=\"currentColor\"></circle>\n </svg>\n </span>\n\n <div class=\"min-w-0 flex-1\">\n <h4\n [ngClass]=\"[\n 'm-0 text-sm font-medium',\n isDestructive ? 'text-destructive' : 'text-foreground'\n ]\"\n >\n {{ title }}\n </h4>\n\n <p\n *ngIf=\"!isTitleOnly && description\"\n [ngClass]=\"[\n 'm-0 mt-0.5 text-sm',\n isDestructive ? 'text-destructive' : 'text-muted-foreground'\n ]\"\n >\n {{ description }}\n </p>\n\n <ul *ngIf=\"isDestructive && details.length\" class=\"m-0 mt-1 pl-5 text-sm text-destructive\">\n <li *ngFor=\"let item of details\">{{ item }}</li>\n </ul>\n </div>\n </div>\n</section>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'pdm-alert-dialog',\n templateUrl: './alert-dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmAlertDialogComponent {\n @Input() open = false;\n @Input() showTrigger = false;\n @Input() triggerText = 'Show dialog';\n @Input() title = 'Are you absolutely sure?';\n @Input() description = '';\n @Input() confirmText = 'Continue';\n @Input() cancelText = 'Cancel';\n @Input() className = '';\n\n /** Close when the ESC key is pressed. Default: `true`. */\n @Input() closeOnEsc = true;\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output() confirm = new EventEmitter<void>();\n @Output() cancel = new EventEmitter<void>();\n\n /**\n * Returns `true` when at least one consumer listens to `openChange`.\n * - **Controlled** (has observers): parent manages `open` via two-way binding → only emit.\n * - **Uncontrolled** (no observers): we own the `open` state → mutate it locally.\n */\n private get isControlled(): boolean {\n return this.openChange.observed;\n }\n\n onTriggerClick(): void {\n if (!this.isControlled) {\n this.open = true;\n }\n this.openChange.emit(true);\n }\n\n onCancel(): void {\n this.cancel.emit();\n if (!this.isControlled) {\n this.open = false;\n }\n this.openChange.emit(false);\n }\n\n onConfirm(): void {\n this.confirm.emit();\n if (!this.isControlled) {\n this.open = false;\n }\n this.openChange.emit(false);\n }\n\n @HostListener('document:keydown.escape')\n onEsc(): void {\n if (this.open && this.closeOnEsc) {\n this.onCancel();\n }\n }\n}\n","<button\n *ngIf=\"showTrigger && !open\"\n type=\"button\"\n class=\"inline-flex h-9 appearance-none items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm\"\n (click)=\"onTriggerClick()\"\n>\n {{ triggerText }}\n</button>\n\n<div *ngIf=\"open\" class=\"fixed inset-0 z-50 flex items-center justify-center p-5\">\n <div class=\"absolute inset-0 bg-foreground/30\" (click)=\"onCancel()\"></div>\n <section\n role=\"alertdialog\"\n aria-modal=\"true\"\n [ngClass]=\"[\n 'relative z-[60] w-full max-w-lg rounded-lg border border-border bg-background p-6 text-foreground shadow-lg',\n className\n ]\"\n >\n <div class=\"flex flex-col gap-2\">\n <h2 class=\"m-0 text-lg font-semibold leading-none tracking-tight\">{{ title }}</h2>\n <p *ngIf=\"description\" class=\"m-0 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n <div class=\"mt-4 flex items-center justify-end gap-2\">\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm\"\n (click)=\"onCancel()\"\n >\n {{ cancelText }}\n </button>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm\"\n (click)=\"onConfirm()\"\n >\n {{ confirmText }}\n </button>\n </div>\n </section>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-aspect-ratio',\n templateUrl: './aspect-ratio.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmAspectRatioComponent {\n @Input() ratio = 16 / 9;\n @Input() imageSrc = '';\n @Input() imageAlt = '';\n @Input() className = '';\n\n get paddingTop(): string {\n if (!this.ratio || this.ratio <= 0) return '56.25%';\n return (100 / this.ratio).toFixed(4) + '%';\n }\n}\n","<div class=\"relative w-full\" [ngClass]=\"className\" [style.paddingTop]=\"paddingTop\">\n <div class=\"absolute inset-0 overflow-hidden rounded-lg\">\n <img\n *ngIf=\"imageSrc\"\n [src]=\"imageSrc\"\n [alt]=\"imageAlt\"\n class=\"pointer-events-none h-full w-full rounded-lg object-cover\"\n />\n <ng-content></ng-content>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmAvatarShape = 'circle' | 'square';\n\n@Component({\n selector: 'pdm-avatar',\n templateUrl: './avatar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmAvatarComponent {\n @Input() src = '';\n @Input() alt = 'Avatar';\n @Input() fallback = 'U';\n @Input() shape: PdmAvatarShape = 'circle';\n @Input() size: 'sm' | 'md' | 'lg' = 'md';\n @Input() groupSources: string[] = [];\n @Input() className = '';\n\n readonly sizeClasses = {\n sm: 'h-8 w-8',\n md: 'h-10 w-10',\n lg: 'h-12 w-12'\n };\n\n get isGroup(): boolean {\n return this.groupSources.length > 0;\n }\n\n get radiusClass(): string {\n return this.shape === 'square' ? 'rounded-[8px]' : 'rounded-full';\n }\n}\n","<div *ngIf=\"!isGroup\" [ngClass]=\"['relative flex shrink-0 overflow-hidden', radiusClass, sizeClasses[size], className]\">\n <img *ngIf=\"src\" [src]=\"src\" [alt]=\"alt\" [ngClass]=\"['aspect-square h-full w-full object-cover', radiusClass]\" />\n <div\n *ngIf=\"!src\"\n [ngClass]=\"['flex h-full w-full items-center justify-center bg-muted text-xs text-muted-foreground', radiusClass]\"\n >\n {{ fallback }}\n </div>\n</div>\n\n<div *ngIf=\"isGroup\" [ngClass]=\"['inline-flex items-center pr-2', className]\">\n <div\n *ngFor=\"let groupSrc of groupSources; let i = index\"\n [ngClass]=\"[\n 'relative h-8 w-8 shrink-0 overflow-hidden rounded-full',\n i > 0 ? '-mr-2 border border-border' : '-mr-2'\n ]\"\n >\n <img [src]=\"groupSrc\" [alt]=\"alt + ' ' + (i + 1)\" class=\"h-full w-full rounded-full object-cover\" />\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmBadgeVariant =\n | 'default'\n | 'secondary'\n | 'destructive'\n | 'outline'\n | 'icon'\n | 'number'\n | 'destructive-number'\n | 'secondary-number';\n\n@Component({\n selector: 'pdm-badge',\n templateUrl: './badge.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmBadgeComponent {\n @Input() variant: PdmBadgeVariant = 'default';\n @Input() text = 'Badge';\n @Input() className = '';\n}\n\n","<span\n [ngClass]=\"[\n 'inline-flex items-center justify-center text-center align-middle rounded-full px-2.5 py-0.5 text-xs font-semibold',\n variant === 'default' ? 'bg-primary text-primary-foreground' : '',\n variant === 'secondary' ? 'bg-secondary text-secondary-foreground' : '',\n variant === 'destructive' ? 'bg-destructive text-destructive-foreground' : '',\n variant === 'outline' ? 'border border-input text-foreground' : '',\n variant === 'icon' ? 'gap-1 bg-primary text-primary-foreground' : '',\n variant === 'number' ? 'min-w-5 rounded-full bg-primary px-1.5 text-primary-foreground' : '',\n variant === 'destructive-number' ? 'min-w-5 rounded-full bg-destructive px-1.5 text-destructive-foreground' : '',\n variant === 'secondary-number' ? 'min-w-5 rounded-full border border-input px-1.5 text-foreground' : '',\n className\n ]\"\n>\n <svg\n *ngIf=\"variant === 'icon'\"\n viewBox=\"0 0 24 24\"\n class=\"h-4 w-4\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"9\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M8.5 12.5L10.8 14.8L15.8 9.8\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <span [ngClass]=\"[variant === 'secondary-number' ? 'font-mono' : '']\">{{ text }}</span>\n</span>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmBreadcrumbMode =\n | 'custom-separator'\n | 'dropdown'\n | 'collapsed'\n | 'link-component'\n | 'responsive';\n\n/**\n * Breadcrumb component con soporte responsive\n * \n * MEJORADO en v0.2.0:\n * - Modo responsive real con overflow-x-auto\n * - Collapse inteligente en mobile\n * \n * @example\n * <pdm-breadcrumb\n * mode=\"responsive\"\n * [items]=\"['Home', 'Products', 'Electronics', 'Laptops']\">\n * </pdm-breadcrumb>\n */\n@Component({\n selector: 'pdm-breadcrumb',\n templateUrl: './breadcrumb.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmBreadcrumbComponent {\n @Input() mode: PdmBreadcrumbMode = 'link-component';\n @Input() items: string[] = ['Home', 'Components', 'Breadcrumb'];\n @Input() className = '';\n \n /**\n * Cantidad mínima de items para mostrar en mobile cuando mode=\"responsive\"\n * Default: 2 (primer y último item)\n */\n @Input() minItemsMobile = 2;\n\n get renderedItems(): string[] {\n if (this.mode === 'collapsed' && this.items.length > 3) {\n return [this.items[0], '...', this.items[this.items.length - 2], this.items[this.items.length - 1]];\n }\n \n // Responsive mode: no collapse en el TS, se maneja en el template con CSS\n return this.items;\n }\n \n /**\n * Determina si un item debe estar visible en mobile (modo responsive)\n */\n shouldShowInMobile(index: number): boolean {\n if (this.mode !== 'responsive') return true;\n \n const totalItems = this.items.length;\n if (totalItems <= this.minItemsMobile) return true;\n \n // Siempre mostrar primero y último\n return index === 0 || index === totalItems - 1;\n }\n}\n","<nav\n aria-label=\"breadcrumb\"\n [ngClass]=\"[\n 'inline-flex items-center gap-1.5 text-sm',\n mode === 'responsive' ? 'overflow-x-auto max-w-full pb-1 scrollbar-thin' : '',\n className\n ]\"\n>\n <ng-container *ngFor=\"let item of renderedItems; let i = index; let last = last\">\n <!-- Item text -->\n <span \n [ngClass]=\"[\n last ? 'text-foreground font-medium' : 'text-muted-foreground hover:text-foreground transition-colors cursor-pointer',\n mode === 'responsive' && !shouldShowInMobile(i) ? 'hidden sm:inline' : '',\n 'whitespace-nowrap'\n ]\">\n {{ item }}\n </span>\n\n <!-- Separator -->\n <ng-container *ngIf=\"!last\">\n <span \n [ngClass]=\"[\n 'inline-flex h-6 w-6 flex-shrink-0 items-center justify-center text-muted-foreground',\n mode === 'responsive' && !shouldShowInMobile(i) && !shouldShowInMobile(i + 1) ? 'hidden sm:inline-flex' : ''\n ]\" \n aria-hidden=\"true\">\n <!-- Custom separator (slash) -->\n <svg\n *ngIf=\"mode === 'custom-separator' && item !== '...'\"\n viewBox=\"0 0 24 24\"\n class=\"h-4 w-4\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M8 20L16 4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" />\n </svg>\n \n <!-- Default separator (chevron) -->\n <svg\n *ngIf=\"(mode !== 'custom-separator' && item !== '...') || item === '...'\"\n viewBox=\"0 0 24 24\"\n class=\"h-4 w-4\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M9 6L15 12L9 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n \n <!-- Ellipsis indicator for responsive mode (only shown when items are hidden) -->\n <span \n *ngIf=\"mode === 'responsive' && !shouldShowInMobile(i) && i === 0\"\n class=\"inline-flex sm:hidden text-muted-foreground\">\n ...\n </span>\n </ng-container>\n\n <!-- Dropdown indicator -->\n <ng-container *ngIf=\"mode === 'dropdown' && i === 1 && item !== '...' && !last\">\n <span class=\"-ml-2 inline-flex h-6 w-6 items-center justify-center text-muted-foreground\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 10L12 15L17 10\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n </svg>\n </span>\n </ng-container>\n </ng-container>\n</nav>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmButtonGroupVariant = 'default' | 'group' | 'orientation' | 'separator';\nexport type PdmButtonGroupOrientation = 'horizontal' | 'vertical';\n\n@Component({\n selector: 'pdm-button-group',\n templateUrl: './button-group.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmButtonGroupComponent {\n @Input() variant: PdmButtonGroupVariant = 'default';\n @Input() orientation?: PdmButtonGroupOrientation;\n @Input() direction?: PdmButtonGroupOrientation;\n @Input() separated = true;\n @Input() className = '';\n\n get rootClasses(): string[] {\n const effectiveOrientation = this.orientation ?? this.direction ?? 'horizontal';\n const isVertical = this.variant === 'orientation' || effectiveOrientation === 'vertical';\n const isGroup = this.variant === 'group';\n const isAttached = !this.separated && this.variant !== 'default';\n const isSeparator = this.variant === 'separator';\n\n const attachedClasses = isAttached && !isGroup\n ? isVertical\n ? [\n '[&>*]:rounded-none',\n '[&>*:first-child]:rounded-t-md',\n '[&>*:last-child]:rounded-b-md',\n '[&>*:not(:first-child)]:border-t-0',\n '[&>*:not(:first-child)]:-mt-px'\n ].join(' ')\n : [\n '[&>*]:rounded-none',\n '[&>*:first-child]:rounded-l-md',\n '[&>*:last-child]:rounded-r-md',\n '[&>*:not(:first-child)]:border-l-0',\n '[&>*:not(:first-child)]:-ml-px'\n ].join(' ')\n : '';\n\n const groupHorizontalClasses = isGroup && !isVertical && !this.separated\n ? [\n '[&>*]:rounded-none',\n '[&>*:first-child]:rounded-l-md',\n '[&>*:last-child]:rounded-r-md',\n '[&>*:not(:first-child)]:-ml-px',\n '[&>*:not(:first-child)]:border-l-0',\n '[&>pdm-button]:flex',\n '[&>pdm-button>button]:h-9',\n '[&>pdm-input]:flex-1',\n '[&>pdm-input>div]:w-full',\n '[&>pdm-select>select]:!rounded-none',\n '[&>pdm-select:first-child>select]:!rounded-l-md',\n '[&>pdm-select:last-child>select]:!rounded-r-md',\n '[&>pdm-select>select]:shadow-none',\n '[&>pdm-select>div>button]:!rounded-none',\n '[&>pdm-select:first-child>div>button]:!rounded-l-md',\n '[&>pdm-select:last-child>div>button]:!rounded-r-md',\n '[&>pdm-select:not(:first-child)>div>button]:!rounded-l-none',\n '[&>pdm-select:not(:last-child)>div>button]:!rounded-r-none',\n '[&>pdm-select>div>button]:shadow-none',\n '[&>pdm-button>button]:!rounded-none',\n '[&>pdm-button:first-child>button]:!rounded-l-md',\n '[&>pdm-button:last-child>button]:!rounded-r-md',\n '[&>pdm-input>div>input]:!rounded-none',\n '[&>pdm-input:first-child>div>input]:!rounded-l-md',\n '[&>pdm-input:last-child>div>input]:!rounded-r-md',\n '[&>pdm-input-group>div]:!rounded-none',\n '[&>pdm-input-group:first-child>div]:!rounded-l-md',\n '[&>pdm-input-group:last-child>div]:!rounded-r-md',\n '[&>pdm-input>div>input]:bg-background',\n '[&>pdm-input>div>input]:shadow-none',\n '[&>pdm-button>button]:rounded-l-none',\n '[&>pdm-button>button]:shadow-none',\n '[&>pdm-tooltip>span>*]:rounded-none',\n '[&>pdm-tooltip:first-child>span>*]:rounded-l-md',\n '[&>pdm-tooltip:last-child>span>*]:rounded-r-md',\n '[&>pdm-tooltip:not(:first-child)>span>*]:border-l-0',\n '[&>pdm-tooltip>span>pdm-button>button]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-button>button]:!rounded-l-md',\n '[&>pdm-tooltip:last-child>span>pdm-button>button]:!rounded-r-md',\n '[&>pdm-tooltip>span>pdm-button>button]:shadow-none',\n '[&>pdm-tooltip>span>button]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>button]:!rounded-l-md',\n '[&>pdm-tooltip:last-child>span>button]:!rounded-r-md',\n '[&>pdm-tooltip>span>button]:shadow-none',\n '[&>pdm-tooltip>span>pdm-input>div>input]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-input>div>input]:!rounded-l-md',\n '[&>pdm-tooltip:last-child>span>pdm-input>div>input]:!rounded-r-md',\n '[&>pdm-tooltip>span>pdm-input>div>input]:shadow-none',\n '[&>pdm-tooltip>span>input]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>input]:!rounded-l-md',\n '[&>pdm-tooltip:last-child>span>input]:!rounded-r-md',\n '[&>pdm-tooltip>span>input]:shadow-none',\n '[&>pdm-tooltip>span>pdm-input-group>div]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-input-group>div]:!rounded-l-md',\n '[&>pdm-tooltip:last-child>span>pdm-input-group>div]:!rounded-r-md',\n '[&>pdm-tooltip>span>pdm-select>select]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-select>select]:!rounded-l-md',\n '[&>pdm-tooltip:last-child>span>pdm-select>select]:!rounded-r-md',\n '[&>pdm-tooltip>span>pdm-select>select]:shadow-none',\n '[&>pdm-tooltip>span>pdm-select>div>button]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-select>div>button]:!rounded-l-md',\n '[&>pdm-tooltip:last-child>span>pdm-select>div>button]:!rounded-r-md',\n '[&>pdm-tooltip:not(:first-child)>span>pdm-select>div>button]:!rounded-l-none',\n '[&>pdm-tooltip:not(:last-child)>span>pdm-select>div>button]:!rounded-r-none',\n '[&>pdm-tooltip>span>pdm-select>div>button]:shadow-none',\n '[&>pdm-tooltip>span>select]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>select]:!rounded-l-md',\n '[&>pdm-tooltip:last-child>span>select]:!rounded-r-md',\n '[&>pdm-tooltip>span>select]:shadow-none'\n ].join(' ')\n : '';\n\n const groupVerticalClasses = isGroup && isVertical && !this.separated\n ? [\n '[&>*]:rounded-none',\n '[&>*:first-child]:rounded-t-md',\n '[&>*:last-child]:rounded-b-md',\n '[&>*:not(:first-child)]:-mt-px',\n '[&>*:not(:first-child)]:border-t-0',\n '[&>pdm-button]:flex',\n '[&>pdm-button>button]:h-9',\n '[&>pdm-button>button]:!rounded-none',\n '[&>pdm-button:first-child>button]:!rounded-t-md',\n '[&>pdm-button:last-child>button]:!rounded-b-md',\n '[&>pdm-input>div>input]:!rounded-none',\n '[&>pdm-input:first-child>div>input]:!rounded-t-md',\n '[&>pdm-input:last-child>div>input]:!rounded-b-md',\n '[&>pdm-input-group>div]:!rounded-none',\n '[&>pdm-input-group:first-child>div]:!rounded-t-md',\n '[&>pdm-input-group:last-child>div]:!rounded-b-md',\n '[&>pdm-select>select]:!rounded-none',\n '[&>pdm-select:first-child>select]:!rounded-t-md',\n '[&>pdm-select:last-child>select]:!rounded-b-md',\n '[&>pdm-select>select]:shadow-none',\n '[&>pdm-select>div>button]:!rounded-none',\n '[&>pdm-select:first-child>div>button]:!rounded-t-md',\n '[&>pdm-select:last-child>div>button]:!rounded-b-md',\n '[&>pdm-select:not(:first-child)>div>button]:!rounded-t-none',\n '[&>pdm-select:not(:last-child)>div>button]:!rounded-b-none',\n '[&>pdm-select>div>button]:shadow-none',\n '[&>pdm-input>div>input]:bg-background',\n '[&>pdm-input>div>input]:shadow-none',\n '[&>pdm-button>button]:shadow-none',\n '[&>pdm-tooltip>span>*]:rounded-none',\n '[&>pdm-tooltip:first-child>span>*]:rounded-t-md',\n '[&>pdm-tooltip:last-child>span>*]:rounded-b-md',\n '[&>pdm-tooltip:not(:first-child)>span>*]:border-t-0',\n '[&>pdm-tooltip>span>pdm-button>button]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-button>button]:!rounded-t-md',\n '[&>pdm-tooltip:last-child>span>pdm-button>button]:!rounded-b-md',\n '[&>pdm-tooltip>span>pdm-button>button]:shadow-none',\n '[&>pdm-tooltip>span>button]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>button]:!rounded-t-md',\n '[&>pdm-tooltip:last-child>span>button]:!rounded-b-md',\n '[&>pdm-tooltip>span>button]:shadow-none',\n '[&>pdm-tooltip>span>pdm-input>div>input]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-input>div>input]:!rounded-t-md',\n '[&>pdm-tooltip:last-child>span>pdm-input>div>input]:!rounded-b-md',\n '[&>pdm-tooltip>span>pdm-input>div>input]:shadow-none',\n '[&>pdm-tooltip>span>input]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>input]:!rounded-t-md',\n '[&>pdm-tooltip:last-child>span>input]:!rounded-b-md',\n '[&>pdm-tooltip>span>input]:shadow-none',\n '[&>pdm-tooltip>span>pdm-input-group>div]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-input-group>div]:!rounded-t-md',\n '[&>pdm-tooltip:last-child>span>pdm-input-group>div]:!rounded-b-md',\n '[&>pdm-tooltip>span>pdm-select>select]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-select>select]:!rounded-t-md',\n '[&>pdm-tooltip:last-child>span>pdm-select>select]:!rounded-b-md',\n '[&>pdm-tooltip>span>pdm-select>select]:shadow-none',\n '[&>pdm-tooltip>span>pdm-select>div>button]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>pdm-select>div>button]:!rounded-t-md',\n '[&>pdm-tooltip:last-child>span>pdm-select>div>button]:!rounded-b-md',\n '[&>pdm-tooltip:not(:first-child)>span>pdm-select>div>button]:!rounded-t-none',\n '[&>pdm-tooltip:not(:last-child)>span>pdm-select>div>button]:!rounded-b-none',\n '[&>pdm-tooltip>span>pdm-select>div>button]:shadow-none',\n '[&>pdm-tooltip>span>select]:!rounded-none',\n '[&>pdm-tooltip:first-child>span>select]:!rounded-t-md',\n '[&>pdm-tooltip:last-child>span>select]:!rounded-b-md',\n '[&>pdm-tooltip>span>select]:shadow-none'\n ].join(' ')\n : '';\n\n return [\n 'inline-flex w-fit',\n isVertical ? 'flex-col items-stretch' : 'items-center',\n this.variant === 'default' || this.separated ? 'gap-2' : 'gap-0',\n isGroup ? '*:focus-visible:relative *:focus-visible:z-10' : '',\n attachedClasses,\n groupHorizontalClasses,\n groupVerticalClasses,\n isSeparator\n ? 'overflow-hidden rounded-md border border-border bg-secondary shadow-sm'\n : '',\n this.className\n ];\n }\n}\n","<div\n role=\"group\"\n [attr.aria-orientation]=\"variant === 'orientation' || orientation === 'vertical' || direction === 'vertical' ? 'vertical' : 'horizontal'\"\n [ngClass]=\"rootClasses\"\n>\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmButtonVariant =\n | 'default'\n | 'primary'\n | 'destructive'\n | 'outline'\n | 'subtle'\n | 'secondary'\n | 'ghost'\n | 'link'\n | 'with-icon'\n | 'icon'\n | 'icon-circle'\n | 'rounded'\n | 'loading';\nexport type PdmButtonState = 'default' | 'hover';\nexport type PdmButtonSize = 'small' | 'default' | 'large';\n\n@Component({\n selector: 'pdm-button',\n templateUrl: './button.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmButtonComponent {\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n @Input() variant: PdmButtonVariant | string = 'default';\n @Input() state: PdmButtonState | string = 'default';\n @Input() size: PdmButtonSize | string = 'default';\n @Input() disabled = false;\n @Input() loading = false;\n @Input() className = '';\n\n @Output() pressed = new EventEmitter<MouseEvent>();\n\n readonly toneClassMap: Record<PdmButtonVariant, { default: string; hover: string }> = {\n default: { default: 'border-primary bg-primary text-primary-foreground', hover: 'border-primary bg-primary text-primary-foreground opacity-90' },\n primary: { default: 'border-primary bg-primary text-primary-foreground', hover: 'border-primary bg-primary text-primary-foreground opacity-90' },\n destructive: { default: 'border-border bg-destructive text-destructive-foreground', hover: 'border-border bg-destructive text-destructive-foreground opacity-90' },\n outline: { default: 'border-border bg-background text-foreground', hover: 'border-border bg-muted text-foreground' },\n subtle: { default: 'border-secondary bg-secondary text-secondary-foreground', hover: 'border-accent bg-accent text-accent-foreground' },\n secondary: { default: 'border-secondary bg-secondary text-secondary-foreground', hover: 'border-accent bg-accent text-accent-foreground' },\n ghost: { default: 'border-border bg-transparent text-foreground', hover: 'border-border bg-accent text-accent-foreground' },\n link: { default: 'border-border bg-transparent text-primary', hover: 'border-border bg-transparent text-primary underline underline-offset-4' },\n 'with-icon': { default: 'border-primary bg-primary text-primary-foreground', hover: 'border-primary bg-primary text-primary-foreground opacity-90' },\n icon: { default: 'border-border bg-background text-foreground', hover: 'border-border bg-accent text-accent-foreground' },\n 'icon-circle': { default: 'border-border bg-background text-foreground', hover: 'border-border bg-accent text-accent-foreground' },\n rounded: { default: 'border-border bg-background text-foreground', hover: 'border-border bg-accent text-accent-foreground' },\n loading: { default: 'border-primary bg-primary text-primary-foreground opacity-70', hover: 'border-primary bg-primary text-primary-foreground opacity-70' }\n };\n\n get isDisabled(): boolean {\n return this.disabled || this.loading || this.variant === 'loading';\n }\n\n get resolvedVariant(): PdmButtonVariant {\n return this.isValidVariant(this.variant) ? this.variant : 'default';\n }\n\n get resolvedState(): PdmButtonState {\n return this.state === 'hover' ? 'hover' : 'default';\n }\n\n get resolvedSize(): PdmButtonSize {\n if (this.size === 'small' || this.size === 'large') {\n return this.size;\n }\n\n return 'default';\n }\n\n get showsIconSlot(): boolean {\n const variant = this.resolvedVariant;\n return variant === 'with-icon' || variant === 'icon' || variant === 'icon-circle' || variant === 'rounded';\n }\n\n get rootClasses(): string[] {\n const currentState = this.resolvedState;\n const variant = this.resolvedVariant;\n const toneClass = this.toneClassMap[variant][currentState];\n\n return [\n 'inline-flex appearance-none items-center justify-center gap-2 rounded-md border text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-clip-padding',\n variant === 'link' ? 'px-4 py-2 h-9' : '',\n variant === 'icon' ? 'h-9 w-9 p-0' : '',\n variant === 'icon-circle' ? 'h-10 w-10 rounded-full p-0' : '',\n variant === 'rounded' ? 'h-9 w-9 rounded-full p-0' : '',\n variant !== 'icon' && variant !== 'icon-circle' && variant !== 'rounded'\n ? this.resolvedSize === 'small'\n ? 'h-8 px-3 text-xs'\n : this.resolvedSize === 'large'\n ? 'h-10 px-8'\n : 'h-9 px-4'\n : '',\n variant === 'link' && currentState === 'hover' ? 'underline underline-offset-4' : '',\n toneClass,\n this.className\n ];\n }\n\n onClick(event: MouseEvent): void {\n if (!this.isDisabled) {\n this.pressed.emit(event);\n }\n }\n\n private isValidVariant(value: unknown): value is PdmButtonVariant {\n return (\n value === 'default' ||\n value === 'primary' ||\n value === 'destructive' ||\n value === 'outline' ||\n value === 'subtle' ||\n value === 'secondary' ||\n value === 'ghost' ||\n value === 'link' ||\n value === 'with-icon' ||\n value === 'icon' ||\n value === 'icon-circle' ||\n value === 'rounded' ||\n value === 'loading'\n );\n }\n}\n","<button\n [type]=\"type\"\n [disabled]=\"isDisabled\"\n [attr.aria-busy]=\"loading\"\n [ngClass]=\"rootClasses\"\n (click)=\"onClick($event)\"\n>\n <span\n *ngIf=\"loading\"\n class=\"inline-block h-4 w-4 animate-spin rounded-full border-2 border-current border-r-transparent\"\n aria-hidden=\"true\"\n ></span>\n <ng-content select=\"[pdmButtonIcon]\" *ngIf=\"showsIconSlot\"></ng-content>\n <ng-content></ng-content>\n</button>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmCalendarVariant = 'single' | 'range';\n\nexport interface PdmCalendarRange {\n start: Date | null;\n end: Date | null;\n}\n\ninterface PdmCalendarCell {\n date: Date;\n label: number;\n muted: boolean;\n disabled: boolean;\n selected: boolean;\n inRange: boolean;\n rangeFill: boolean;\n rangeLeftCap: boolean;\n rangeRightCap: boolean;\n}\n\ninterface PdmCalendarMonthView {\n date: Date;\n title: string;\n titleStyle: 'dropdowns' | 'plain';\n dropdownMonth?: string;\n dropdownYear?: string;\n showPrevButton: boolean;\n showNextButton: boolean;\n weeks: readonly (readonly PdmCalendarCell[])[];\n}\n\nconst DAY_MS = 24 * 60 * 60 * 1000;\n\n@Component({\n selector: 'pdm-calendar',\n templateUrl: './calendar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmCalendarComponent {\n private _value: Date | null = null;\n private _rangeValue: PdmCalendarRange | null = null;\n private _month: Date | null = null;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n @Input() variant: PdmCalendarVariant | string = 'single';\n @Input() className = '';\n @Input() disabledDates: Date[] = [];\n @Input() minDate: Date | null = null;\n @Input() maxDate: Date | null = null;\n @Input() minYear: number | null = null;\n @Input() maxYear: number | null = null;\n @Input() isDateDisabled: ((date: Date) => boolean) | null = null;\n @Input() allowSameDayRange = true;\n @Input() readonly = false;\n\n @Output() valueChange = new EventEmitter<Date | null>();\n @Output() rangeValueChange = new EventEmitter<PdmCalendarRange | null>();\n @Output() monthChange = new EventEmitter<Date>();\n @Output() dateClick = new EventEmitter<Date>();\n @Output() disabledDateClick = new EventEmitter<Date>();\n\n @Input()\n set value(value: Date | null) {\n this._value = this.normalizeDate(value);\n }\n get value(): Date | null {\n return this._value;\n }\n\n @Input()\n set rangeValue(value: PdmCalendarRange | null) {\n this._rangeValue = value\n ? {\n start: this.normalizeDate(value.start),\n end: this.normalizeDate(value.end)\n }\n : null;\n }\n get rangeValue(): PdmCalendarRange | null {\n return this._rangeValue;\n }\n\n @Input()\n set month(value: Date | null) {\n this._month = value ? this.startOfMonth(value) : null;\n }\n get month(): Date | null {\n return this._month;\n }\n\n readonly weekdays = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'] as const;\n readonly monthOptions = [\n { value: 0, label: 'Jan' },\n { value: 1, label: 'Feb' },\n { value: 2, label: 'Mar' },\n { value: 3, label: 'Apr' },\n { value: 4, label: 'May' },\n { value: 5, label: 'Jun' },\n { value: 6, label: 'Jul' },\n { value: 7, label: 'Aug' },\n { value: 8, label: 'Sep' },\n { value: 9, label: 'Oct' },\n { value: 10, label: 'Nov' },\n { value: 11, label: 'Dec' }\n ] as const;\n\n get resolvedVariant(): PdmCalendarVariant {\n return this.variant === 'range' ? 'range' : 'single';\n }\n\n get visibleMonths(): readonly PdmCalendarMonthView[] {\n const baseMonth = this.getAnchorMonth();\n\n if (this.resolvedVariant === 'single') {\n return [\n {\n date: baseMonth,\n title: this.formatMonthYear(baseMonth),\n titleStyle: 'dropdowns',\n dropdownMonth: this.formatMonthShort(baseMonth),\n dropdownYear: String(baseMonth.getFullYear()),\n showPrevButton: true,\n showNextButton: true,\n weeks: this.buildMonthWeeks(baseMonth, false)\n }\n ];\n }\n\n const nextMonth = this.addMonths(baseMonth, 1);\n return [\n {\n date: baseMonth,\n title: this.formatMonthYear(baseMonth),\n titleStyle: 'plain',\n showPrevButton: true,\n showNextButton: false,\n weeks: this.buildMonthWeeks(baseMonth, true)\n },\n {\n date: nextMonth,\n title: this.formatMonthYear(nextMonth),\n titleStyle: 'plain',\n showPrevButton: false,\n showNextButton: true,\n weeks: this.buildMonthWeeks(nextMonth, true)\n }\n ];\n }\n\n get singleHeaderMonth(): number {\n return this.getAnchorMonth().getMonth();\n }\n\n get singleHeaderYear(): number {\n return this.getAnchorMonth().getFullYear();\n }\n\n get yearOptions(): readonly number[] {\n const baseYear = new Date().getFullYear();\n const selectedYear = this.singleHeaderYear;\n let minYear = this.minYear ?? (this.minDate ? this.minDate.getFullYear() : baseYear - 100);\n let maxYear = this.maxYear ?? (this.maxDate ? this.maxDate.getFullYear() : baseYear + 10);\n const years: number[] = [];\n\n if (selectedYear < minYear) {\n minYear = selectedYear;\n }\n\n if (selectedYear > maxYear) {\n maxYear = selectedYear;\n }\n\n if (minYear > maxYear) {\n const nextMin = maxYear;\n maxYear = minYear;\n minYear = nextMin;\n }\n\n for (let year = minYear; year <= maxYear; year += 1) {\n years.push(year);\n }\n\n return years;\n }\n\n get rootClasses(): string[] {\n return [\n 'border-border bg-background relative rounded-[10px] border p-3 shadow-sm',\n this.resolvedVariant === 'range'\n ? 'inline-flex items-start justify-center gap-4 shrink-0 grow-0 basis-auto'\n : 'inline-flex flex-col gap-4 shrink-0 grow-0 basis-auto',\n this.className\n ];\n }\n\n get rootStyle(): Record<string, string> {\n const width = this.resolvedVariant === 'range' ? '488px' : '250px';\n\n return {\n width,\n minWidth: width,\n maxWidth: width,\n minHeight: '293px',\n flex: '0 0 auto',\n alignSelf: 'flex-start'\n };\n }\n\n monthPanelClasses(_index: number): string[] {\n return ['flex flex-col items-start', this.resolvedVariant === 'range' ? 'w-[224px] gap-4' : 'w-full gap-0'];\n }\n\n headerClasses(month: PdmCalendarMonthView): string[] {\n return ['flex w-full items-center justify-between', month.titleStyle === 'dropdowns' ? '' : 'mb-4'];\n }\n\n navButtonClasses(): string[] {\n return [\n 'flex h-8 w-8 appearance-none items-center justify-center rounded-md border-0 bg-transparent p-0 text-foreground',\n 'disabled:pointer-events-none disabled:opacity-40'\n ];\n }\n\n navPlaceholderClasses(): string[] {\n return ['h-7 w-7 shrink-0'];\n }\n\n dropdownWrapClasses(): string[] {\n return ['flex w-40 items-center justify-center gap-2'];\n }\n\n dropdownClasses(widthClass: string): string[] {\n return ['flex h-8 items-center justify-center gap-1 px-1', widthClass];\n }\n\n dropdownSelectClasses(): string[] {\n return [\n 'text-foreground h-full bg-transparent text-sm font-medium leading-5',\n 'appearance-none border-0 outline-none ring-0 focus:outline-none focus:ring-0 text-center cursor-pointer'\n ];\n }\n\n get dropdownSelectStyle(): Record<string, string> {\n return {\n appearance: 'none',\n WebkitAppearance: 'none',\n MozAppearance: 'none',\n background: 'transparent',\n border: '0',\n boxShadow: 'none',\n outline: '0',\n padding: '0',\n margin: '0'\n };\n }\n\n calendarGridWrapClasses(): string[] {\n return ['flex w-full flex-col items-start'];\n }\n\n weekdayRowClasses(): string[] {\n return ['flex w-full items-center'];\n }\n\n weekdayCellClasses(): string[] {\n return ['text-muted-foreground flex h-[21px] w-8 items-center justify-center rounded-md text-xs leading-4'];\n }\n\n weekRowClasses(): string[] {\n return ['flex w-full items-start pt-2'];\n }\n\n dayCellClasses(cell: PdmCalendarCell): string[] {\n return [\n 'relative flex h-8 w-8 shrink-0 items-center justify-center',\n cell.rangeFill ? 'bg-accent' : '',\n cell.rangeLeftCap ? 'rounded-l-md' : '',\n cell.rangeRightCap ? 'rounded-r-md' : ''\n ];\n }\n\n dayButtonClasses(cell: PdmCalendarCell): string[] {\n return [\n 'relative z-10 flex h-8 w-8 appearance-none items-center justify-center rounded-md border-0 p-0 text-sm leading-5',\n cell.selected\n ? 'bg-primary text-primary-foreground'\n : cell.rangeFill\n ? 'bg-transparent text-accent-foreground'\n : 'bg-transparent text-foreground',\n cell.muted && !cell.rangeFill ? 'opacity-50' : '',\n cell.disabled ? 'cursor-not-allowed opacity-40' : '',\n !cell.disabled && !this.readonly && !cell.selected ? 'hover:bg-accent/70' : ''\n ];\n }\n\n dayLabelClasses(_cell: PdmCalendarCell): string[] {\n return ['font-normal'];\n }\n\n trackByIndex = (index: number): number => {\n return index;\n }\n\n trackByDate = (_index: number, cell: PdmCalendarCell): string => {\n return this.dateKey(cell.date);\n }\n\n goToPreviousMonth(): void {\n this.setAnchorMonth(this.addMonths(this.getAnchorMonth(), -1));\n }\n\n goToNextMonth(): void {\n this.setAnchorMonth(this.addMonths(this.getAnchorMonth(), 1));\n }\n\n onSingleMonthChange(monthValue: string): void {\n const month = Number(monthValue);\n if (Number.isNaN(month) || month < 0 || month > 11) {\n return;\n }\n\n const anchor = this.getAnchorMonth();\n this.setAnchorMonth(new Date(anchor.getFullYear(), month, 1));\n }\n\n onSingleYearChange(yearValue: string): void {\n const year = Number(yearValue);\n if (Number.isNaN(year)) {\n return;\n }\n\n const anchor = this.getAnchorMonth();\n this.setAnchorMonth(new Date(year, anchor.getMonth(), 1));\n }\n\n onDatePressed(cell: PdmCalendarCell): void {\n const date = this.cloneDate(cell.date);\n\n if (cell.disabled) {\n this.disabledDateClick.emit(date);\n return;\n }\n\n if (this.readonly) {\n return;\n }\n\n this.dateClick.emit(date);\n\n if (this.resolvedVariant === 'single') {\n this._value = date;\n this.valueChange.emit(this.cloneDate(date));\n this.syncVisibleMonthToDate(date);\n this.cdr.markForCheck();\n return;\n }\n\n this.handleRangeSelection(date);\n this.cdr.markForCheck();\n }\n\n private handleRangeSelection(date: Date): void {\n const current = this._rangeValue;\n const currentStart = current?.start ? this.cloneDate(current.start) : null;\n const currentEnd = current?.end ? this.cloneDate(current.end) : null;\n\n if (!currentStart || (currentStart && currentEnd)) {\n this._rangeValue = { start: date, end: null };\n this.rangeValueChange.emit({ start: this.cloneDate(date), end: null });\n this.syncVisibleMonthToDate(date);\n return;\n }\n\n if (this.isSameDay(currentStart, date) && !this.allowSameDayRange) {\n this._rangeValue = { start: date, end: null };\n this.rangeValueChange.emit({ start: this.cloneDate(date), end: null });\n return;\n }\n\n const start = this.compareDate(date, currentStart) < 0 ? date : currentStart;\n const end = this.compareDate(date, currentStart) < 0 ? currentStart : date;\n\n if (this.rangeContainsBlockedDate(start, end)) {\n this.disabledDateClick.emit(this.cloneDate(date));\n return;\n }\n\n this._rangeValue = { start, end };\n this.rangeValueChange.emit({ start: this.cloneDate(start), end: this.cloneDate(end) });\n this.syncVisibleMonthToDate(start);\n }\n\n private buildMonthWeeks(month: Date, includeRange: boolean): readonly (readonly PdmCalendarCell[])[] {\n const firstOfMonth = this.startOfMonth(month);\n const start = this.startOfWeek(firstOfMonth);\n const end = this.endOfWeek(this.endOfMonth(firstOfMonth));\n const weeks: PdmCalendarCell[][] = [];\n\n let cursor = this.cloneDate(start);\n while (this.compareDate(cursor, end) <= 0) {\n const row: PdmCalendarCell[] = [];\n\n for (let col = 0; col < 7; col += 1) {\n row.push(this.buildCell(cursor, month, includeRange));\n cursor = this.addDays(cursor, 1);\n }\n\n weeks.push(row);\n }\n\n for (const row of weeks) {\n for (let col = 0; col < row.length; col += 1) {\n const cell = row[col];\n if (!cell.inRange) {\n continue;\n }\n\n const leftInRow = col > 0 ? row[col - 1].inRange : false;\n const rightInRow = col < row.length - 1 ? row[col + 1].inRange : false;\n\n cell.rangeLeftCap = !leftInRow;\n cell.rangeRightCap = !rightInRow;\n }\n }\n\n return weeks;\n }\n\n private buildCell(date: Date, visibleMonth: Date, includeRange: boolean): PdmCalendarCell {\n const normalized = this.cloneDate(date);\n const inCurrentMonth = normalized.getMonth() === visibleMonth.getMonth() && normalized.getFullYear() === visibleMonth.getFullYear();\n const disabled = this.isBlocked(normalized);\n\n const selectedSingle = this.resolvedVariant === 'single' && !!this._value && this.isSameDay(normalized, this._value);\n const rangeStart = includeRange && !!this._rangeValue?.start && this.isSameDay(normalized, this._rangeValue.start);\n const rangeEnd = includeRange && !!this._rangeValue?.end && this.isSameDay(normalized, this._rangeValue.end);\n const inRange =\n includeRange &&\n !!this._rangeValue?.start &&\n !!this._rangeValue?.end &&\n this.compareDate(normalized, this._rangeValue.start) >= 0 &&\n this.compareDate(normalized, this._rangeValue.end) <= 0;\n\n return {\n date: normalized,\n label: normalized.getDate(),\n muted: !inCurrentMonth,\n disabled,\n selected: selectedSingle || rangeStart || rangeEnd,\n inRange,\n rangeFill: inRange,\n rangeLeftCap: false,\n rangeRightCap: false\n };\n }\n\n private getAnchorMonth(): Date {\n let candidate: Date | null = null;\n\n if (this._month) {\n candidate = this.cloneDate(this._month);\n } else if (this.resolvedVariant === 'single' && this._value) {\n candidate = this.startOfMonth(this._value);\n } else if (this.resolvedVariant === 'range' && this._rangeValue?.start) {\n candidate = this.startOfMonth(this._rangeValue.start);\n } else {\n candidate = this.startOfMonth(new Date());\n }\n\n if (!this.isValidDate(candidate)) {\n return this.startOfMonth(new Date());\n }\n\n return candidate;\n }\n\n private setAnchorMonth(month: Date): void {\n const normalized = this.startOfMonth(month);\n if (!this.isValidDate(normalized)) {\n return;\n }\n this._month = normalized;\n this.monthChange.emit(this.cloneDate(this._month));\n }\n\n private syncVisibleMonthToDate(date: Date): void {\n const nextMonth = this.startOfMonth(date);\n if (!this._month || !this.isSameMonth(this._month, nextMonth)) {\n this._month = nextMonth;\n this.monthChange.emit(this.cloneDate(nextMonth));\n }\n }\n\n private isBlocked(date: Date): boolean {\n if (this.minDate && this.compareDate(date, this.minDate) < 0) {\n return true;\n }\n\n if (this.maxDate && this.compareDate(date, this.maxDate) > 0) {\n return true;\n }\n\n const blockedSet = new Set((this.disabledDates || []).map((item) => this.dateKey(item)));\n if (blockedSet.has(this.dateKey(date))) {\n return true;\n }\n\n return !!this.isDateDisabled?.(this.cloneDate(date));\n }\n\n private rangeContainsBlockedDate(start: Date, end: Date): boolean {\n let cursor = this.cloneDate(start);\n\n while (this.compareDate(cursor, end) <= 0) {\n if (this.isBlocked(cursor)) {\n return true;\n }\n cursor = this.addDays(cursor, 1);\n }\n\n return false;\n }\n\n private normalizeDate(value: Date | null | undefined): Date | null {\n if (!(value instanceof Date) || Number.isNaN(value.getTime())) {\n return null;\n }\n\n return new Date(value.getFullYear(), value.getMonth(), value.getDate());\n }\n\n private cloneDate(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n private isValidDate(date: Date | null | undefined): date is Date {\n return !!date && date instanceof Date && !Number.isNaN(date.getTime());\n }\n\n private startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n }\n\n private endOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n }\n\n private startOfWeek(date: Date): Date {\n return this.addDays(date, -date.getDay());\n }\n\n private endOfWeek(date: Date): Date {\n return this.addDays(date, 6 - date.getDay());\n }\n\n private addMonths(date: Date, months: number): Date {\n return new Date(date.getFullYear(), date.getMonth() + months, 1);\n }\n\n private addDays(date: Date, days: number): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate() + days);\n }\n\n private compareDate(a: Date, b: Date): number {\n return this.dateValue(a) - this.dateValue(b);\n }\n\n private dateValue(date: Date): number {\n return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) / DAY_MS;\n }\n\n private isSameDay(a: Date, b: Date): boolean {\n return this.compareDate(a, b) === 0;\n }\n\n private isSameMonth(a: Date, b: Date): boolean {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n }\n\n private dateKey(date: Date): string {\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, '0');\n const d = String(date.getDate()).padStart(2, '0');\n return `${y}-${m}-${d}`;\n }\n\n private formatMonthShort(date: Date): string {\n return date.toLocaleString('en-US', { month: 'short' });\n }\n\n private formatMonthYear(date: Date): string {\n return date.toLocaleString('en-US', { month: 'long', year: 'numeric' });\n }\n}\n","<div [ngClass]=\"rootClasses\" [ngStyle]=\"rootStyle\">\n <div *ngFor=\"let month of visibleMonths; let monthIndex = index; trackBy: trackByIndex\" [ngClass]=\"monthPanelClasses(monthIndex)\">\n <div [ngClass]=\"headerClasses(month)\">\n <button\n *ngIf=\"month.showPrevButton; else prevPlaceholder\"\n type=\"button\"\n [ngClass]=\"navButtonClasses()\"\n aria-label=\"Previous month\"\n (click)=\"goToPreviousMonth()\"\n [disabled]=\"readonly\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <path d=\"m15 18-6-6 6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n <ng-template #prevPlaceholder>\n <div [ngClass]=\"navPlaceholderClasses()\" aria-hidden=\"true\"></div>\n </ng-template>\n\n <ng-container *ngIf=\"month.titleStyle === 'dropdowns'; else plainTitle\">\n <div [ngClass]=\"dropdownWrapClasses()\">\n <div [ngClass]=\"dropdownClasses('w-16 sm:w-[72px]')\">\n <select\n [ngClass]=\"dropdownSelectClasses()\"\n [ngStyle]=\"dropdownSelectStyle\"\n [value]=\"singleHeaderMonth\"\n aria-label=\"Month\"\n (change)=\"onSingleMonthChange($any($event.target).value)\"\n >\n <option\n *ngFor=\"let monthOption of monthOptions\"\n [value]=\"monthOption.value\"\n [selected]=\"monthOption.value === singleHeaderMonth\"\n >\n {{ monthOption.label }}\n </option>\n </select>\n <svg viewBox=\"0 0 24 24\" class=\"h-3 w-3 text-foreground\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <path d=\"m6 9 6 6 6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </div>\n <div [ngClass]=\"dropdownClasses('w-16 sm:w-[82px]')\">\n <select\n [ngClass]=\"dropdownSelectClasses()\"\n [ngStyle]=\"dropdownSelectStyle\"\n [value]=\"singleHeaderYear\"\n aria-label=\"Year\"\n (change)=\"onSingleYearChange($any($event.target).value)\"\n >\n <option\n *ngFor=\"let year of yearOptions\"\n [value]=\"year\"\n [selected]=\"year === singleHeaderYear\"\n >\n {{ year }}\n </option>\n </select>\n <svg viewBox=\"0 0 24 24\" class=\"h-3 w-3 text-foreground\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <path d=\"m6 9 6 6 6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </div>\n </div>\n </ng-container>\n\n <ng-template #plainTitle>\n <div class=\"flex min-w-0 flex-1 items-center justify-center\">\n <p class=\"m-0 text-foreground text-center text-sm font-medium leading-5\">\n {{ month.title }}\n </p>\n </div>\n </ng-template>\n\n <button\n *ngIf=\"month.showNextButton; else nextPlaceholder\"\n type=\"button\"\n [ngClass]=\"navButtonClasses()\"\n aria-label=\"Next month\"\n (click)=\"goToNextMonth()\"\n [disabled]=\"readonly\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\">\n <path d=\"m9 18 6-6-6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n <ng-template #nextPlaceholder>\n <div [ngClass]=\"navPlaceholderClasses()\" aria-hidden=\"true\"></div>\n </ng-template>\n </div>\n\n <div [ngClass]=\"calendarGridWrapClasses()\">\n <div [ngClass]=\"weekdayRowClasses()\">\n <div *ngFor=\"let day of weekdays; trackBy: trackByIndex\" [ngClass]=\"weekdayCellClasses()\">\n <span>{{ day }}</span>\n </div>\n </div>\n\n <div *ngFor=\"let week of month.weeks; trackBy: trackByIndex\" [ngClass]=\"weekRowClasses()\">\n <div *ngFor=\"let cell of week; trackBy: trackByDate\" [ngClass]=\"dayCellClasses(cell)\">\n <button\n type=\"button\"\n [ngClass]=\"dayButtonClasses(cell)\"\n [disabled]=\"readonly\"\n [attr.aria-selected]=\"cell.selected\"\n [attr.aria-disabled]=\"cell.disabled || readonly\"\n [attr.title]=\"cell.date | date : 'yyyy-MM-dd'\"\n (click)=\"onDatePressed(cell)\"\n >\n <span [ngClass]=\"dayLabelClasses(cell)\">{{ cell.label }}</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmCarouselVariant = 'default' | 'sizes' | 'orientation' | 'api';\n\n@Component({\n selector: 'pdm-carousel',\n templateUrl: './carousel.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmCarouselComponent {\n @Input() variant: PdmCarouselVariant = 'default';\n @Input() className = '';\n @Input() slides: Array<string | number> = [];\n @Input() startIndex = 0;\n @Input() loop = false;\n @Input() windowSize?: number;\n @Input() showCounter = false;\n\n @Output() indexChange = new EventEmitter<number>();\n\n private _index = 0;\n\n ngOnInit(): void {\n this._index = this.normalizeIndex(this.startIndex);\n }\n\n get index(): number {\n return this._index;\n }\n\n get canPrev(): boolean {\n return this.loop || this._index > 0;\n }\n\n get canNext(): boolean {\n return this.loop || this._index < this.maxIndex;\n }\n\n get maxIndex(): number {\n if (this.slides.length === 0) {\n return 0;\n }\n return Math.max(0, this.slides.length - this.currentWindowSize);\n }\n\n get visibleSlides(): Array<string | number> {\n if (this.slides.length === 0) {\n return [];\n }\n\n return this.sliceWindow(this.currentWindowSize);\n }\n\n get currentWindowSize(): number {\n if (typeof this.windowSize === 'number' && this.windowSize > 0) {\n return Math.max(1, Math.floor(this.windowSize));\n }\n if (this.variant === 'sizes') {\n return 3;\n }\n if (this.variant === 'orientation') {\n return 2;\n }\n return 1;\n }\n\n onPrev(): void {\n if (!this.canPrev) {\n return;\n }\n\n const next = this._index - 1;\n this.setIndex(this.loop && next < 0 ? this.maxIndex : next);\n }\n\n onNext(): void {\n if (!this.canNext) {\n return;\n }\n\n const next = this._index + 1;\n this.setIndex(this.loop && next > this.maxIndex ? 0 : next);\n }\n\n private setIndex(value: number): void {\n const normalized = this.normalizeIndex(value);\n this._index = normalized;\n this.indexChange.emit(this._index);\n }\n\n private normalizeIndex(value: number): number {\n if (this.slides.length === 0) {\n return 0;\n }\n return Math.min(this.maxIndex, Math.max(0, value));\n }\n\n private sliceWindow(size: number): Array<string | number> {\n return this.slides.slice(this._index, this._index + size);\n }\n}\n","<section [ngClass]=\"[className]\">\n <div *ngIf=\"variant !== 'orientation'\" class=\"flex items-center gap-4\">\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 appearance-none items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canPrev ? 'opacity-50' : ''\"\n [disabled]=\"!canPrev\"\n (click)=\"onPrev()\"\n aria-label=\"Previous slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15 18L9 12L15 6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <div class=\"flex items-center\">\n <div *ngFor=\"let slide of visibleSlides; let i = index\" class=\"flex items-center\" [ngClass]=\"i > 0 ? 'pl-4' : ''\">\n <div class=\"flex h-40 w-32 items-center p-1\">\n <div class=\"flex h-full w-full items-center justify-center rounded-lg border border-border bg-background py-6 shadow-sm\">\n <div class=\"text-center text-2xl font-semibold text-foreground\">{{ slide }}</div>\n </div>\n </div>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 appearance-none items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canNext ? 'opacity-50' : ''\"\n [disabled]=\"!canNext\"\n (click)=\"onNext()\"\n aria-label=\"Next slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 18L15 12L9 6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n\n <p *ngIf=\"variant !== 'orientation' && showCounter\" class=\"m-0 pt-2 text-sm font-medium text-muted-foreground\">\n {{ slides.length ? (index + 1) : 0 }} / {{ slides.length }}\n </p>\n\n <div *ngIf=\"variant === 'orientation'\" class=\"flex flex-col items-center gap-4\">\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 appearance-none items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canPrev ? 'opacity-50' : ''\"\n [disabled]=\"!canPrev\"\n (click)=\"onPrev()\"\n aria-label=\"Previous slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M18 15L12 9L6 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <div class=\"flex w-80 flex-col\">\n <div *ngFor=\"let slide of visibleSlides; let i = index\" class=\"flex h-36 w-full items-center p-1\" [ngClass]=\"i > 0 ? 'pt-1' : ''\">\n <div class=\"flex h-full w-full items-center justify-center rounded-lg border border-border bg-background py-6 shadow-sm\">\n <div class=\"text-center text-2xl font-semibold text-foreground\">{{ slide }}</div>\n </div>\n </div>\n </div>\n\n <button\n type=\"button\"\n class=\"inline-flex h-8 w-8 appearance-none items-center justify-center rounded-full border border-input bg-background p-2.5\"\n [ngClass]=\"!canNext ? 'opacity-50' : ''\"\n [disabled]=\"!canNext\"\n (click)=\"onNext()\"\n aria-label=\"Next slide\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 9L12 15L18 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n</section>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n/**\n * Card component - Visual container primitivo\n * \n * BREAKING CHANGE en v0.2.0: variant=\"login\" eliminado.\n * Card es ahora un componente UI puro sin lógica de negocio.\n * \n * Para crear un login form, componer con primitivos:\n * \n * @example\n * <pdm-card>\n * <div pdmCardHeader>\n * <h3 class=\"text-lg font-semibold\">Login</h3>\n * <p class=\"text-sm text-muted-foreground\">Enter your credentials</p>\n * </div>\n * <div pdmCardContent>\n * <form [formGroup]=\"form\">\n * <pdm-field>\n * <pdm-label>Email</pdm-label>\n * <pdm-input type=\"email\" formControlName=\"email\" />\n * </pdm-field>\n * <pdm-field>\n * <pdm-label>Password</pdm-label>\n * <pdm-input-password formControlName=\"password\" />\n * </pdm-field>\n * </form>\n * </div>\n * <div pdmCardFooter>\n * <pdm-button (click)=\"onLogin()\">Login</pdm-button>\n * </div>\n * </pdm-card>\n */\n@Component({\n selector: 'pdm-card',\n templateUrl: './card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmCardComponent {\n @Input() className = '';\n}\n","<section\n [ngClass]=\"[\n 'w-full rounded-lg border border-border bg-background py-6 shadow-sm',\n className\n ]\"\n>\n <div class=\"flex w-full flex-col gap-6\">\n <div class=\"px-6\">\n <ng-content select=\"[pdmCardHeader]\"></ng-content>\n </div>\n <div class=\"px-6\">\n <ng-content select=\"[pdmCardContent]\"></ng-content>\n </div>\n <div class=\"px-6\">\n <ng-content select=\"[pdmCardFooter]\"></ng-content>\n </div>\n </div>\n</section>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmChartType = 'area' | 'bar' | 'line' | 'pie' | 'radar' | 'radial' | 'tooltips';\n\n@Component({\n selector: 'pdm-chart',\n templateUrl: './chart.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmChartComponent {\n @Input() type: PdmChartType = 'bar';\n @Input() className = '';\n @Input() title = '';\n @Input() description = '';\n\n @Input() desktopLabel = '';\n @Input() desktopValue = '';\n @Input() mobileLabel = '';\n @Input() mobileValue = '';\n\n @Input() labels: string[] = [];\n\n @Input() bars: number[] = [];\n @Input() line: number[] = [];\n @Input() pie: number[] = [];\n @Input() radar: number[] = [];\n @Input() radialValue = 0;\n @Input() radialLabel = '';\n @Input() radialDescription = '';\n @Input() tooltipTitle = '';\n @Input() tooltipPrimaryLabel = '';\n @Input() tooltipPrimaryValue = '';\n @Input() tooltipSecondaryLabel = '';\n @Input() tooltipSecondaryValue = '';\n @Input() pieLabels: string[] = [];\n @Input() tooltipHint = '';\n @Input() radarMetricPrefix = 'Metric';\n @Input() emptyLabel = 'No data available';\n\n get normalizedBars(): number[] {\n if (!this.bars.length) {\n return [];\n }\n\n const max = Math.max(...this.bars);\n if (max === 0) {\n return this.bars.map(() => 0);\n }\n\n return this.bars.map((value) => Math.max(8, Math.round((value / max) * 183)));\n }\n\n get normalizedLine(): number[] {\n if (!this.line.length) {\n return [];\n }\n\n const max = Math.max(...this.line);\n if (max === 0) {\n return this.line.map(() => 170);\n }\n\n return this.line.map((value) => 180 - Math.round((value / max) * 150));\n }\n\n get linePath(): string {\n const points = this.normalizedLine;\n if (!points.length) {\n return '';\n }\n\n const step = points.length > 1 ? 320 / (points.length - 1) : 0;\n return points\n .map((y, index) => `${index === 0 ? 'M' : 'L'} ${Math.round(index * step)} ${y}`)\n .join(' ');\n }\n\n get areaPath(): string {\n const linePath = this.linePath;\n if (!linePath) {\n return '';\n }\n\n return `${linePath} L 320 180 L 0 180 Z`;\n }\n\n get pieSegments(): { color: string; size: number; offset: number; label: string }[] {\n const total = this.pie.reduce((acc, value) => acc + Math.max(value, 0), 0);\n if (total === 0) {\n return [];\n }\n\n let offset = 0;\n const colors = ['hsl(var(--chart-1))', 'hsl(var(--chart-2))', 'hsl(var(--chart-3))', 'hsl(var(--chart-4))'];\n return this.pie.map((value, index) => {\n const size = (Math.max(value, 0) / total) * 100;\n const segment = {\n color: colors[index % colors.length],\n size,\n offset,\n label: this.pieLabels[index] ?? `Series ${index + 1}`\n };\n offset += size;\n return segment;\n });\n }\n\n get pieGradient(): string {\n const segments = this.pieSegments;\n if (!segments.length) {\n return 'conic-gradient(hsl(var(--muted)) 0 100%)';\n }\n\n return `conic-gradient(${segments\n .map((segment) => `${segment.color} ${segment.offset}% ${segment.offset + segment.size}%`)\n .join(', ')})`;\n }\n\n get radarPoints(): string {\n const values = this.radar.slice(0, 6);\n if (!values.length) {\n return '';\n }\n\n const max = Math.max(...values, 1);\n const radius = 72;\n const center = 80;\n return values\n .map((value, index) => {\n const angle = ((Math.PI * 2) / values.length) * index - Math.PI / 2;\n const valueRadius = (Math.max(value, 0) / max) * radius;\n const x = center + Math.cos(angle) * valueRadius;\n const y = center + Math.sin(angle) * valueRadius;\n return `${x},${y}`;\n })\n .join(' ');\n }\n\n get radialStrokeOffset(): number {\n const bounded = Math.max(0, Math.min(this.radialValue, 100));\n const circumference = 2 * Math.PI * 42;\n return circumference - (bounded / 100) * circumference;\n }\n}\n","<section [ngClass]=\"['w-full rounded-lg border border-border bg-card text-card-foreground', className]\">\n <div *ngIf=\"title || description || desktopLabel || desktopValue || mobileLabel || mobileValue\" class=\"flex w-full items-stretch border-b border-border\">\n <div class=\"flex min-w-0 flex-1 flex-col gap-1 px-6 pb-3 pt-4\">\n <h3 *ngIf=\"title\" class=\"m-0 text-sm font-semibold leading-none tracking-tight\">{{ title }}</h3>\n <p *ngIf=\"description\" class=\"m-0 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n\n <div *ngIf=\"desktopLabel || desktopValue || mobileLabel || mobileValue\" class=\"flex h-24\">\n <div class=\"flex h-full w-44 flex-col justify-center border-l border-border bg-muted px-6 py-4\">\n <span class=\"text-xs text-muted-foreground\">{{ desktopLabel }}</span>\n <span class=\"mt-1 text-2xl font-semibold\">{{ desktopValue }}</span>\n </div>\n <div class=\"flex h-full w-44 flex-col justify-center px-6 py-4\">\n <span class=\"text-xs text-muted-foreground\">{{ mobileLabel }}</span>\n <span class=\"mt-1 text-2xl font-semibold\">{{ mobileValue }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"w-full p-6\">\n <ng-container [ngSwitch]=\"type\">\n <div *ngSwitchCase=\"'bar'\" class=\"flex h-60 w-full flex-col justify-end gap-2\">\n <p *ngIf=\"normalizedBars.length === 0\" class=\"m-0 text-sm text-muted-foreground\">{{ emptyLabel }}</p>\n <div class=\"relative h-48 w-full overflow-hidden\">\n <div class=\"absolute bottom-0 left-0 right-0 border-t border-border opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-1/4 border-t border-border opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-1/2 border-t border-border opacity-50\"></div>\n <div class=\"absolute left-0 right-0 top-3/4 border-t border-border opacity-50\"></div>\n <div class=\"absolute inset-x-0 bottom-0 flex h-48 items-end gap-0.5 px-0.5\">\n <div *ngFor=\"let bar of normalizedBars\" class=\"w-1.5 rounded-sm bg-primary\" [style.height.px]=\"bar\"></div>\n </div>\n </div>\n <div *ngIf=\"labels.length\" class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs text-muted-foreground\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'line'\" class=\"flex h-60 w-full flex-col gap-2\">\n <p *ngIf=\"normalizedLine.length === 0\" class=\"m-0 text-sm text-muted-foreground\">{{ emptyLabel }}</p>\n <svg viewBox=\"0 0 320 180\" class=\"h-48 w-full\">\n <line x1=\"0\" y1=\"180\" x2=\"320\" y2=\"180\" stroke=\"hsl(var(--border))\" stroke-width=\"1\"></line>\n <line x1=\"0\" y1=\"135\" x2=\"320\" y2=\"135\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"90\" x2=\"320\" y2=\"90\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"45\" x2=\"320\" y2=\"45\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <path [attr.d]=\"linePath\" fill=\"none\" stroke=\"hsl(var(--primary))\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <div *ngIf=\"labels.length\" class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs text-muted-foreground\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'area'\" class=\"flex h-60 w-full flex-col gap-2\">\n <p *ngIf=\"normalizedLine.length === 0\" class=\"m-0 text-sm text-muted-foreground\">{{ emptyLabel }}</p>\n <svg viewBox=\"0 0 320 180\" class=\"h-48 w-full\">\n <defs>\n <linearGradient id=\"pdm-chart-area-gradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stop-color=\"hsl(var(--primary))\" stop-opacity=\"0.35\"></stop>\n <stop offset=\"100%\" stop-color=\"hsl(var(--primary))\" stop-opacity=\"0.02\"></stop>\n </linearGradient>\n </defs>\n <line x1=\"0\" y1=\"180\" x2=\"320\" y2=\"180\" stroke=\"hsl(var(--border))\" stroke-width=\"1\"></line>\n <line x1=\"0\" y1=\"135\" x2=\"320\" y2=\"135\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"90\" x2=\"320\" y2=\"90\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <line x1=\"0\" y1=\"45\" x2=\"320\" y2=\"45\" stroke=\"hsl(var(--border))\" stroke-width=\"1\" opacity=\"0.5\"></line>\n <path [attr.d]=\"areaPath\" fill=\"url(#pdm-chart-area-gradient)\"></path>\n <path [attr.d]=\"linePath\" fill=\"none\" stroke=\"hsl(var(--primary))\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <div *ngIf=\"labels.length\" class=\"flex h-4 w-full items-center justify-between gap-2\">\n <span *ngFor=\"let label of labels\" class=\"truncate text-xs text-muted-foreground\">{{ label }}</span>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'pie'\" class=\"flex items-center gap-6\">\n <div class=\"relative h-40 w-40 rounded-full\" [style.background]=\"pieGradient\">\n <div class=\"absolute inset-7 rounded-full bg-card\"></div>\n </div>\n <div class=\"grid flex-1 gap-2\">\n <div *ngFor=\"let segment of pieSegments\" class=\"flex items-center justify-between rounded-md border border-border px-3 py-2\">\n <div class=\"flex items-center gap-2\">\n <span class=\"size-2.5 rounded-full\" [style.background]=\"segment.color\"></span>\n <span class=\"text-sm\">{{ segment.label }}</span>\n </div>\n <span class=\"text-sm font-medium\">{{ segment.size | number: '1.0-0' }}%</span>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'radar'\" class=\"flex items-center gap-6\">\n <svg viewBox=\"0 0 160 160\" class=\"h-44 w-44\">\n <polygon points=\"80,8 144,44 144,116 80,152 16,116 16,44\" fill=\"none\" stroke=\"hsl(var(--border))\"></polygon>\n <polygon points=\"80,28 126,54 126,106 80,132 34,106 34,54\" fill=\"none\" stroke=\"hsl(var(--border))\" opacity=\"0.75\"></polygon>\n <polygon points=\"80,48 109,64 109,96 80,112 51,96 51,64\" fill=\"none\" stroke=\"hsl(var(--border))\" opacity=\"0.55\"></polygon>\n <polygon [attr.points]=\"radarPoints\" fill=\"hsl(var(--primary))\" fill-opacity=\"0.22\" stroke=\"hsl(var(--primary))\" stroke-width=\"2\"></polygon>\n </svg>\n <div class=\"grid flex-1 gap-2\">\n <div *ngFor=\"let item of radar; index as i\" class=\"flex items-center justify-between rounded-md border border-border px-3 py-2 text-sm\">\n <span class=\"text-muted-foreground\">{{ radarMetricPrefix }} {{ i + 1 }}</span>\n <span class=\"font-medium\">{{ item }}</span>\n </div>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'radial'\" class=\"flex items-center justify-between gap-6\">\n <div class=\"relative flex size-44 items-center justify-center\">\n <svg viewBox=\"0 0 96 96\" class=\"size-40 -rotate-90\">\n <circle cx=\"48\" cy=\"48\" r=\"42\" fill=\"none\" stroke=\"hsl(var(--muted))\" stroke-width=\"10\"></circle>\n <circle\n cx=\"48\"\n cy=\"48\"\n r=\"42\"\n fill=\"none\"\n stroke=\"hsl(var(--primary))\"\n stroke-width=\"10\"\n stroke-linecap=\"round\"\n stroke-dasharray=\"263.89\"\n [attr.stroke-dashoffset]=\"radialStrokeOffset\"\n ></circle>\n </svg>\n <div class=\"absolute text-center\">\n <div class=\"text-2xl font-semibold\">{{ radialValue }}%</div>\n <div class=\"text-xs text-muted-foreground\">{{ radialLabel }}</div>\n </div>\n </div>\n <div class=\"flex-1\">\n <p class=\"m-0 text-sm font-medium\">{{ radialLabel }}</p>\n <p class=\"m-0 mt-1 text-sm text-muted-foreground\">{{ radialDescription }}</p>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'tooltips'\" class=\"grid gap-3\">\n <div class=\"inline-flex w-fit min-w-56 flex-col gap-2 rounded-lg border border-border bg-card p-3 shadow-sm\">\n <p class=\"m-0 text-xs font-medium text-muted-foreground\">{{ tooltipTitle }}</p>\n <div class=\"flex items-center justify-between text-sm\">\n <span>{{ tooltipPrimaryLabel }}</span>\n <span class=\"font-semibold\">{{ tooltipPrimaryValue }}</span>\n </div>\n <div class=\"flex items-center justify-between text-sm\">\n <span>{{ tooltipSecondaryLabel }}</span>\n <span class=\"font-semibold\">{{ tooltipSecondaryValue }}</span>\n </div>\n </div>\n <p *ngIf=\"tooltipHint\" class=\"m-0 text-xs text-muted-foreground\">{{ tooltipHint }}</p>\n </div>\n </ng-container>\n </div>\n</section>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmCheckboxVariant = 'default' | 'subtext' | 'card';\n\n@Component({\n selector: 'pdm-checkbox',\n templateUrl: './checkbox.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmCheckboxComponent {\n @Input() id = '';\n @Input() checked = false;\n @Input() disabled = false;\n @Input() variant: PdmCheckboxVariant = 'default';\n @Input() label = 'Accept terms and conditions';\n @Input() description = '';\n @Input() className = '';\n\n @Output() checkedChange = new EventEmitter<boolean>();\n\n get hasDescription(): boolean {\n return this.variant === 'subtext' || this.variant === 'card' ? !!this.description : false;\n }\n\n onToggle(): void {\n if (this.disabled) {\n return;\n }\n\n this.checkedChange.emit(!this.checked);\n }\n}\n","<button\n type=\"button\"\n role=\"checkbox\"\n [attr.id]=\"id || null\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-disabled]=\"disabled\"\n [disabled]=\"disabled\"\n [ngClass]=\"[\n 'w-full border-0 bg-transparent p-0 text-left outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n variant === 'card'\n ? checked\n ? 'flex items-start gap-3 rounded-lg border border-primary bg-muted p-4'\n : 'flex items-start gap-3 rounded-lg border border-border bg-background p-4'\n : hasDescription\n ? 'flex items-start gap-3'\n : 'flex items-center gap-3',\n disabled ? 'opacity-50' : '',\n className\n ]\"\n (click)=\"onToggle()\"\n>\n <span\n [ngClass]=\"[\n 'mt-0.5 inline-flex h-4 w-4 shrink-0 items-center justify-center rounded-sm border shadow-sm',\n checked ? 'border-primary bg-primary text-primary-foreground' : 'border-border bg-background text-transparent'\n ]\"\n aria-hidden=\"true\"\n >\n <svg viewBox=\"0 0 16 16\" class=\"h-3 w-3\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M3 8.5L6.4 12L13 4\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n\n <span [ngClass]=\"['min-w-0 flex-1', hasDescription ? 'flex flex-col gap-2' : 'flex items-center']\">\n <span class=\"text-sm font-medium text-foreground\">{{ label }}</span>\n <span *ngIf=\"hasDescription\" class=\"text-sm text-muted-foreground\">{{ description }}</span>\n </span>\n</button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'pdm-collapsible',\n templateUrl: './collapsible.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmCollapsibleComponent {\n @Input() title = '@peduarte starred 3 repositories';\n @Input() open = false;\n @Input() disabled = false;\n @Input() items: string[] = ['@radix-ui/primitives', '@radix-ui/colors', '@stitches/react'];\n @Input() className = '';\n\n @Output() openChange = new EventEmitter<boolean>();\n\n get visibleItems(): string[] {\n if (!this.items.length) {\n return [];\n }\n return this.open ? this.items : this.items.slice(0, 1);\n }\n\n toggle(): void {\n if (!this.disabled) {\n this.openChange.emit(!this.open);\n }\n }\n}\n","<div [ngClass]=\"['flex w-full max-w-sm flex-col gap-2', className]\">\n <button\n type=\"button\"\n [disabled]=\"disabled\"\n class=\"flex w-full appearance-none items-center justify-between rounded-md border-0 bg-transparent px-4 py-2 text-left text-sm font-medium text-foreground hover:bg-accent ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggle()\"\n >\n <span>{{ title }}</span>\n <span class=\"inline-flex h-8 w-8 items-center justify-center text-foreground\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 15L12 20L17 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M17 9L12 4L7 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n </button>\n\n <div class=\"flex w-full flex-col gap-2\">\n <div\n *ngFor=\"let item of visibleItems\"\n class=\"w-full rounded-md border border-border bg-background px-4 py-2\"\n >\n <span class=\"font-mono text-sm text-foreground\">{{ item }}</span>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'pdm-combobox',\n templateUrl: './combobox.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmComboboxComponent {\n @Input() open = false;\n @Input() placeholder = 'Select framework...';\n @Input() searchPlaceholder = 'Search framework';\n @Input() className = '';\n @Input() options: string[] = ['Next.js', 'SvelteKit', 'Nuxt.js', 'Remix', 'Astro'];\n @Input() value = '';\n @Input() width = 200;\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output() valueChange = new EventEmitter<string>();\n\n get selectedLabel(): string {\n return this.value || this.placeholder;\n }\n\n toggle(): void {\n this.openChange.emit(!this.open);\n }\n\n select(option: string): void {\n this.valueChange.emit(option);\n this.openChange.emit(false);\n }\n}\n","<div [ngClass]=\"['flex flex-col gap-1', className]\" [style.width.px]=\"width\">\n <button\n type=\"button\"\n class=\"flex h-9 w-full appearance-none items-center justify-between gap-2 rounded-md border border-input bg-background px-3 py-2 text-sm shadow-sm\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggle()\"\n >\n <span class=\"min-w-0 flex-1 truncate text-left text-sm font-medium text-foreground\">{{ selectedLabel }}</span>\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 15L12 20L17 15\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M17 9L12 4L7 9\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <div\n *ngIf=\"open\"\n class=\"w-full rounded-md border border-border bg-popover p-0 text-popover-foreground shadow-md\"\n >\n <div class=\"flex items-center gap-2 border-b border-border px-3\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-muted-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" stroke=\"currentColor\" stroke-width=\"1.5\"></circle>\n <path d=\"M20 20L16.6 16.6\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n <div class=\"h-9 flex-1 py-2 text-sm text-muted-foreground\">{{ searchPlaceholder }}</div>\n </div>\n\n <div class=\"p-1\">\n <button\n *ngFor=\"let option of options\"\n type=\"button\"\n class=\"flex w-full appearance-none items-center gap-2 rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground\"\n [ngClass]=\"option === value ? 'bg-accent text-accent-foreground' : ''\"\n (click)=\"select(option)\"\n >\n <span class=\"min-w-0 flex-1 truncate\">{{ option }}</span>\n <svg *ngIf=\"option === value\" viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 12.5L9.2 16.7L19 7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { icons, type IconNode } from 'lucide';\n\nexport type PdmIconLibrary = 'lucide' | 'tabler' | 'hugeicons' | 'phosphor' | 'remix';\n\nexport type PdmIconName =\n | 'command'\n | 'check'\n | 'check-circle'\n | 'circle'\n | 'dot'\n | 'x'\n | 'alert-circle'\n | 'info'\n | 'loader-2'\n | 'menu'\n | 'search'\n | 'calendar'\n | 'panel-left'\n | 'monitor'\n | 'laptop'\n | 'sun'\n | 'moon'\n | 'chevron-down'\n | 'chevron-up'\n | 'chevron-left'\n | 'chevron-right'\n | 'chevrons-left'\n | 'chevrons-right'\n | 'chevrons-up-down'\n | 'arrow-up-down'\n | 'ellipsis'\n | 'filter'\n | 'sort-asc'\n | 'sort-desc'\n | 'plus'\n | 'minus'\n | 'copy'\n | 'pencil'\n | 'trash-2'\n | 'download'\n | 'upload'\n | 'home'\n | 'mail'\n | 'phone'\n | 'log-in'\n | 'log-out'\n | 'user'\n | 'settings'\n | 'credit-card'\n | 'smile'\n | 'calculator'\n | 'external-link'\n | 'folder'\n | 'arrow-up-right';\n\nconst FALLBACK_NODE: IconNode = [['circle', { cx: '12', cy: '12', r: '9' }]];\n\n@Component({\n selector: 'pdm-icon',\n templateUrl: './icon.component.html',\n styles: [\n `\n :host {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n flex-shrink: 0;\n }\n\n :host svg {\n display: block;\n }\n `\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmIconComponent {\n @Input() name: PdmIconName | string = 'check';\n @Input() library: PdmIconLibrary = 'lucide';\n @Input() assetUrl: string | null = null;\n @Input() size = 16;\n @Input() strokeWidth = 1.5;\n @Input() className = '';\n @Input() ariaLabel: string | null = null;\n @Input() decorative = false;\n\n private readonly lucideIndex = this.buildLucideIndex();\n\n private readonly aliasMapByLibrary: Record<PdmIconLibrary, Record<string, string>> = {\n lucide: {\n 'check-circle': 'circle-check',\n 'alert-circle': 'circle-alert',\n info: 'circle-info',\n 'sort-asc': 'arrow-up-a-z',\n 'sort-desc': 'arrow-down-z-a'\n },\n tabler: {\n 'alert-triangle': 'triangle-alert',\n 'user-circle': 'circle-user',\n 'settings-2': 'settings-2',\n 'external-link': 'external-link'\n },\n hugeicons: {\n 'alert-02': 'circle-alert',\n 'user-circle': 'circle-user',\n 'search-01': 'search',\n 'settings-01': 'settings',\n 'arrow-right-01': 'chevron-right',\n 'arrow-down-01': 'chevron-down'\n },\n phosphor: {\n 'warning-circle': 'circle-alert',\n 'caret-down': 'chevron-down',\n 'caret-right': 'chevron-right',\n 'user-circle': 'circle-user',\n gear: 'settings',\n 'arrow-square-out': 'external-link'\n },\n remix: {\n 'alert-line': 'circle-alert',\n 'arrow-right-line': 'chevron-right',\n 'arrow-down-s-line': 'chevron-down',\n 'external-link-line': 'external-link',\n 'user-line': 'user',\n 'settings-3-line': 'settings'\n }\n };\n\n constructor(private readonly sanitizer: DomSanitizer) {}\n\n get resolvedStrokeWidth(): number {\n const value = Number(this.strokeWidth);\n if (Number.isFinite(value) && value > 0) {\n return value;\n }\n\n if (this.library === 'phosphor') {\n return 1.6;\n }\n\n if (this.library === 'tabler') {\n return 1.8;\n }\n\n return 1.5;\n }\n\n get resolvedSize(): number {\n const value = Number(this.size);\n return Number.isFinite(value) && value > 0 ? value : 16;\n }\n\n get iconKey(): string {\n const raw = `${this.name || ''}`.trim();\n if (!raw) {\n return 'circle';\n }\n\n const trimmed = raw.replace(/^(lucide|tabler|hugeicons|phosphor|remix)\\//, '');\n const aliases = this.aliasMapByLibrary[this.library] ?? {};\n return aliases[trimmed] ?? trimmed;\n }\n\n get svgMarkup(): SafeHtml {\n const node = this.resolveIconNode(this.iconKey) ?? FALLBACK_NODE;\n const strokeWidth = this.escapeAttr(this.resolvedStrokeWidth);\n const size = this.escapeAttr(this.resolvedSize);\n\n const body = node\n .map(([tag, attrs]) => {\n const serializedAttrs = Object.entries(attrs)\n .map(([key, value]) => `${key}=\"${this.escapeAttr(value)}\"`)\n .join(' ');\n\n return serializedAttrs ? `<${tag} ${serializedAttrs}></${tag}>` : `<${tag}></${tag}>`;\n })\n .join('');\n\n const svg = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${size}\" height=\"${size}\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"${strokeWidth}\" stroke-linecap=\"round\" stroke-linejoin=\"round\">${body}</svg>`;\n\n return this.sanitizer.bypassSecurityTrustHtml(svg);\n }\n\n private resolveIconNode(iconName: string): IconNode | null {\n const normalized = this.normalizeIconName(iconName);\n return this.lucideIndex.get(normalized) ?? null;\n }\n\n private normalizeIconName(name: string): string {\n return `${name || ''}`.toLowerCase().replace(/[^a-z0-9]/g, '');\n }\n\n private buildLucideIndex(): Map<string, IconNode> {\n const map = new Map<string, IconNode>();\n\n Object.entries(icons).forEach(([iconName, iconNode]) => {\n map.set(this.normalizeIconName(iconName), iconNode as IconNode);\n });\n\n return map;\n }\n\n private escapeAttr(value: unknown): string {\n return `${value ?? ''}`\n .replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/</g, '<')\n .replace(/>/g, '>');\n }\n}\n","<ng-container *ngIf=\"assetUrl; else inlineIcon\">\n <img\n [src]=\"assetUrl\"\n [style.width.px]=\"resolvedSize\"\n [style.height.px]=\"resolvedSize\"\n [ngClass]=\"className\"\n [attr.role]=\"decorative ? null : 'img'\"\n [attr.aria-hidden]=\"decorative ? 'true' : null\"\n [attr.aria-label]=\"!decorative ? ariaLabel || name : null\"\n alt=\"\"\n />\n</ng-container>\n\n<ng-template #inlineIcon>\n <span\n [ngClass]=\"className\"\n [style.display]=\"'inline-flex'\"\n [style.align-items]=\"'center'\"\n [style.justify-content]=\"'center'\"\n [style.line-height]=\"0\"\n [style.width.px]=\"resolvedSize\"\n [style.height.px]=\"resolvedSize\"\n [attr.role]=\"decorative ? null : 'img'\"\n [attr.aria-hidden]=\"decorative ? 'true' : null\"\n [attr.aria-label]=\"!decorative ? ariaLabel || name : null\"\n [innerHTML]=\"svgMarkup\"\n ></span>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport type { PdmIconName } from '../icon/icon.component';\n\nexport interface PdmCommandItem {\n label: string;\n value: string;\n group?: string;\n icon?: PdmIconName;\n shortcut?: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'pdm-command',\n templateUrl: './command.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmCommandComponent {\n @Input() open = true;\n @Input() hintLabel = 'Press';\n @Input() hintKey = 'J';\n @Input() placeholder = 'Type a command or search...';\n @Input() emptyMessage = 'No results found.';\n @Input() items: PdmCommandItem[] = [\n { label: 'Calendar', value: 'calendar', group: 'Suggestions', icon: 'calendar' },\n { label: 'Search emoji', value: 'emoji', group: 'Suggestions', icon: 'smile' },\n { label: 'Calculator', value: 'calculator', group: 'Suggestions', icon: 'calculator', disabled: true },\n { label: 'Profile', value: 'profile', group: 'Settings', icon: 'user', shortcut: '⌘P' },\n { label: 'Billing', value: 'billing', group: 'Settings', icon: 'credit-card', shortcut: '⌘B' },\n { label: 'Settings', value: 'settings', group: 'Settings', icon: 'settings', shortcut: '⌘S' }\n ];\n @Input() className = '';\n\n @Output() itemSelect = new EventEmitter<string>();\n @Output() openChange = new EventEmitter<boolean>();\n\n query = '';\n\n get filteredItems(): PdmCommandItem[] {\n const q = this.query.toLowerCase().trim();\n if (!q) return this.items;\n return this.items.filter((item) => item.label.toLowerCase().includes(q));\n }\n\n get groupedItems(): { name: string; items: PdmCommandItem[] }[] {\n const map = new Map<string, PdmCommandItem[]>();\n for (const item of this.filteredItems) {\n const key = item.group || '';\n const arr = map.get(key) ?? [];\n arr.push(item);\n map.set(key, arr);\n }\n return Array.from(map.entries()).map(([name, items]) => ({ name, items }));\n }\n\n onQueryChange(event: Event): void {\n this.query = (event.target as HTMLInputElement).value;\n }\n\n toggleOpen(): void {\n this.openChange.emit(!this.open);\n }\n\n select(value: string): void {\n this.itemSelect.emit(value);\n }\n}\n","<div [ngClass]=\"['w-full', className]\">\n <div *ngIf=\"!open\" class=\"flex items-center gap-1\">\n <span class=\"text-sm font-medium text-muted-foreground\">{{ hintLabel }}</span>\n <button\n type=\"button\"\n class=\"inline-flex h-5 appearance-none items-center gap-0.5 rounded-sm border border-border bg-muted px-1.5\"\n (click)=\"toggleOpen()\"\n >\n <pdm-icon name=\"command\" [size]=\"12\" className=\"text-muted-foreground\" [decorative]=\"true\"></pdm-icon>\n <span class=\"text-xs text-muted-foreground\">{{ hintKey }}</span>\n </button>\n </div>\n\n <section\n *ngIf=\"open\"\n class=\"flex w-full flex-col overflow-hidden rounded-lg border border-border bg-popover text-popover-foreground shadow-md\"\n >\n <div class=\"flex items-center gap-2 border-b border-border px-3\">\n <pdm-icon name=\"search\" [size]=\"16\" className=\"text-muted-foreground\" [decorative]=\"true\"></pdm-icon>\n <input\n type=\"text\"\n [placeholder]=\"placeholder\"\n [value]=\"query\"\n (input)=\"onQueryChange($event)\"\n class=\"h-10 w-full bg-transparent py-3 text-sm text-foreground outline-none placeholder:text-muted-foreground\"\n />\n </div>\n\n <div class=\"max-h-[50vh] overflow-y-auto p-1 md:max-h-72\">\n <ng-container *ngFor=\"let group of groupedItems; let groupIndex = index\">\n <div *ngIf=\"group.name\" class=\"px-2 py-1.5 text-xs text-muted-foreground\">{{ group.name }}</div>\n <button\n *ngFor=\"let item of group.items\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n class=\"flex w-full appearance-none items-center gap-2 rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground\"\n [ngClass]=\"[\n item.disabled ? 'opacity-50' : '',\n item.label === 'Calendar' ? 'bg-accent text-accent-foreground' : ''\n ]\"\n (click)=\"select(item.value)\"\n >\n <span class=\"inline-flex h-4 w-4 items-center justify-center text-foreground\">\n <pdm-icon *ngIf=\"item.icon\" [name]=\"item.icon\" [size]=\"16\" [decorative]=\"true\"></pdm-icon>\n </span>\n <span class=\"min-w-0 flex-1 text-foreground\">{{ item.label }}</span>\n <span *ngIf=\"item.shortcut\" class=\"text-xs text-muted-foreground\">{{ item.shortcut }}</span>\n </button>\n <div *ngIf=\"groupIndex === 0 && groupedItems.length > 1\" class=\"my-1 border-t border-border\"></div>\n </ng-container>\n\n <p *ngIf=\"filteredItems.length === 0\" class=\"m-0 py-6 text-center text-sm text-muted-foreground\">{{ emptyMessage }}</p>\n </div>\n </section>\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output\n} from '@angular/core';\nimport { PdmMenuItem } from '../dropdown-menu/dropdown-menu.component';\n\nexport interface PdmContextMenuItem extends PdmMenuItem {\n checked?: boolean;\n selectedDot?: boolean;\n}\n\n@Component({\n selector: 'pdm-context-menu',\n templateUrl: './context-menu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmContextMenuComponent implements OnInit, OnDestroy {\n @Input() items: PdmContextMenuItem[] = [\n { type: 'item', label: 'Back', value: 'back', inset: true, shortcut: '⌘[' },\n { type: 'item', label: 'Forward', value: 'forward', inset: true, shortcut: '⌘]', disabled: true },\n { type: 'item', label: 'Reload', value: 'reload', inset: true, shortcut: '⌘R' },\n { type: 'item', label: 'More Tools', value: 'more-tools', inset: true, showChevron: true },\n { type: 'separator' },\n { type: 'item', label: 'Show Bookmarks Bar', value: 'show-bookmarks', checked: true },\n { type: 'item', label: 'Show Full URLs', value: 'show-urls', inset: true },\n { type: 'separator' },\n { type: 'label', label: 'People' },\n { type: 'separator' },\n { type: 'item', label: 'Pedro Duarte', value: 'pedro', selectedDot: true },\n { type: 'item', label: 'Colm Tuite', value: 'colm', inset: true }\n ];\n @Input() className = '';\n @Input() triggerLabel = 'Right click here';\n @Input() width = 300;\n @Input() height = 150;\n @Output() itemSelect = new EventEmitter<string>();\n\n open = false;\n x = 0;\n y = 0;\n\n private boundPointerDown!: (event: PointerEvent) => void;\n\n constructor(private readonly elementRef: ElementRef<HTMLElement>) {}\n\n ngOnInit(): void {\n this.boundPointerDown = (event: PointerEvent) => this.onDocumentPointerDown(event);\n document.addEventListener('pointerdown', this.boundPointerDown, { capture: true });\n }\n\n ngOnDestroy(): void {\n if (this.boundPointerDown) {\n document.removeEventListener('pointerdown', this.boundPointerDown, { capture: true });\n }\n }\n\n onContextMenu(event: MouseEvent): void {\n event.preventDefault();\n this.x = event.clientX;\n this.y = event.clientY;\n this.open = true;\n }\n\n select(item: PdmContextMenuItem): void {\n if (item.disabled || item.type === 'separator' || item.type === 'label' || !item.value) return;\n this.itemSelect.emit(item.value);\n this.open = false;\n }\n\n @HostListener('document:keydown.escape')\n onEsc(): void {\n if (this.open) {\n this.open = false;\n }\n }\n\n private onDocumentPointerDown(event: PointerEvent): void {\n if (!this.open) return;\n const target = event.target as Node | null;\n if (target && !this.elementRef.nativeElement.contains(target)) {\n this.open = false;\n }\n }\n}\n","<div class=\"relative\" [ngClass]=\"className\" (contextmenu)=\"onContextMenu($event)\">\n <div\n class=\"flex items-center justify-center rounded-md border border-dashed border-border\"\n [style.width.px]=\"width\"\n [style.height.px]=\"height\"\n >\n <span class=\"text-sm font-medium text-foreground\">{{ triggerLabel }}</span>\n </div>\n\n <div\n *ngIf=\"open\"\n class=\"fixed z-[70] min-w-48 max-w-xs rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md sm:min-w-52\"\n [style.left.px]=\"x + 4\"\n [style.top.px]=\"y + 2\"\n >\n <div>\n <ng-container *ngFor=\"let item of items\">\n <div *ngIf=\"item.type === 'separator'\" class=\"-mx-1 my-1 h-px bg-muted\"></div>\n\n <div *ngIf=\"item.type === 'label'\" class=\"px-2 py-1.5 text-sm font-semibold text-foreground\">\n {{ item.label }}\n </div>\n\n <button\n *ngIf=\"!item.type || item.type === 'item'\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n class=\"relative flex w-full appearance-none cursor-default select-none items-center rounded-sm border-0 bg-transparent py-1.5 pr-2 text-left text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground disabled:pointer-events-none disabled:opacity-50\"\n [ngClass]=\"item.inset ? 'pl-8' : 'px-2'\"\n (click)=\"select(item)\"\n >\n <span class=\"mr-2 inline-flex w-4 shrink-0 items-center justify-center text-foreground\">\n <svg *ngIf=\"item.checked\" viewBox=\"0 0 24 24\" class=\"h-3.5 w-3.5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 12.5L9.2 16.7L19 7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <span *ngIf=\"item.selectedDot\" class=\"h-2 w-2 rounded-full bg-foreground\"></span>\n </span>\n <span class=\"min-w-0 flex-1 truncate text-foreground\">{{ item.label }}</span>\n <span *ngIf=\"item.shortcut\" class=\"text-xs text-muted-foreground\">{{ item.shortcut }}</span>\n <svg *ngIf=\"item.showChevron\" viewBox=\"0 0 24 24\" class=\"h-3.5 w-3.5 text-muted-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 6L15 12L9 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </ng-container>\n </div>\n </div>\n</div>\n","/**\n * Sistema de responsive utilities para PDM UI Kit\n * \n * Proporciona constantes, tipos y helpers para manejar responsive design\n * de forma consistente en todos los componentes.\n */\n\n/**\n * Breakpoints estándar de Tailwind CSS\n * Mobile-first approach: los estilos base son para mobile, los breakpoints son MIN-WIDTH\n */\nexport const BREAKPOINTS = {\n sm: '640px', // tablet portrait\n md: '768px', // tablet landscape\n lg: '1024px', // desktop\n xl: '1280px', // large desktop\n '2xl': '1536px' // extra large desktop\n} as const;\n\nexport type Breakpoint = keyof typeof BREAKPOINTS;\n\n/**\n * Estrategias de overflow para componentes que pueden desbordar\n */\nexport type OverflowStrategy = \n | 'auto' // Scroll automático cuando sea necesario\n | 'scroll' // Siempre scroll\n | 'hidden' // Ocultar contenido que desborda\n | 'visible'; // Permitir desbordamiento\n\n/**\n * Estrategias responsive para tablas\n */\nexport type TableResponsiveStrategy = \n | 'scroll' // Scroll horizontal en mobile (default, más simple)\n | 'stack' // Convertir filas en cards verticales en mobile\n | 'wrap' // Permitir que el contenido haga wrap\n | 'collapse'; // Colapsar columnas menos importantes en mobile\n\n/**\n * Helper para generar clases responsive de forma programática\n * \n * @example\n * responsive({ default: 'block', sm: 'flex', lg: 'grid' })\n * // Returns: 'block sm:flex lg:grid'\n */\nexport function responsive<T extends string>(\n config: Partial<Record<Breakpoint | 'default', T>>\n): string {\n const classes: string[] = [];\n \n if (config.default) {\n classes.push(config.default);\n }\n \n (['sm', 'md', 'lg', 'xl', '2xl'] as Breakpoint[]).forEach(bp => {\n if (config[bp]) {\n classes.push(`${bp}:${config[bp]}`);\n }\n });\n \n return classes.join(' ');\n}\n\n/**\n * Helper para overflow responsive\n * Maneja el caso común de scroll en mobile, auto en desktop\n * \n * @example\n * overflowResponsive('x', 'scroll', 'auto')\n * // Returns: 'overflow-x-scroll sm:overflow-x-auto'\n */\nexport function overflowResponsive(\n axis: 'x' | 'y' | 'both',\n mobile: OverflowStrategy,\n desktop?: OverflowStrategy\n): string {\n const axisClass = axis === 'both' ? 'overflow' : `overflow-${axis}`;\n const mobileClass = `${axisClass}-${mobile}`;\n \n if (!desktop || desktop === mobile) {\n return mobileClass;\n }\n \n return `${mobileClass} sm:${axisClass}-${desktop}`;\n}\n\n/**\n * Helper para spacing responsive\n * Útil para padding/margin que necesita ajustarse por breakpoint\n * \n * @example\n * spacingResponsive('px', { default: '4', sm: '6', lg: '8' })\n * // Returns: 'px-4 sm:px-6 lg:px-8'\n */\nexport function spacingResponsive(\n property: 'p' | 'px' | 'py' | 'pt' | 'pr' | 'pb' | 'pl' | 'm' | 'mx' | 'my' | 'mt' | 'mr' | 'mb' | 'ml',\n values: Partial<Record<Breakpoint | 'default', string>>\n): string {\n return responsive(\n Object.entries(values).reduce((acc, [key, value]) => {\n acc[key as Breakpoint | 'default'] = `${property}-${value}` as any;\n return acc;\n }, {} as Record<Breakpoint | 'default', string>)\n );\n}\n\n/**\n * Helper para width responsive\n * \n * @example\n * widthResponsive({ default: 'full', sm: 'auto', lg: '1/2' })\n * // Returns: 'w-full sm:w-auto lg:w-1/2'\n */\nexport function widthResponsive(\n values: Partial<Record<Breakpoint | 'default', string>>\n): string {\n return responsive(\n Object.entries(values).reduce((acc, [key, value]) => {\n acc[key as Breakpoint | 'default'] = `w-${value}` as any;\n return acc;\n }, {} as Record<Breakpoint | 'default', string>)\n );\n}\n\n/**\n * Clases comunes para containers responsive\n * Pensadas para wrappers que contienen contenido que puede desbordar\n */\nexport const RESPONSIVE_CONTAINER = {\n // Container con scroll horizontal en mobile, contenido visible en desktop\n tableWrapper: 'relative w-full overflow-x-auto sm:overflow-x-visible',\n \n // Container con padding negativo en mobile para scroll edge-to-edge\n tableWrapperFullBleed: 'relative w-full -mx-4 px-4 overflow-x-auto sm:mx-0 sm:px-0 sm:overflow-x-visible',\n \n // Container con max-width responsive\n contentWrapper: 'w-full mx-auto px-4 sm:px-6 lg:px-8 max-w-screen-2xl',\n \n // Container para modals/dialogs\n modalWrapper: 'w-full max-w-lg mx-auto px-4 sm:px-0',\n \n // Container para forms\n formWrapper: 'w-full max-w-md mx-auto space-y-4'\n} as const;\n\n/**\n * Clases comunes para display responsive\n */\nexport const RESPONSIVE_DISPLAY = {\n // Ocultar en mobile, mostrar en desktop\n hideOnMobile: 'hidden sm:block',\n \n // Mostrar solo en mobile\n showOnMobile: 'block sm:hidden',\n \n // Stack en mobile, flex en desktop\n stackToFlex: 'flex flex-col sm:flex-row',\n \n // Stack en mobile, grid en desktop\n stackToGrid: 'grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3'\n} as const;\n\n/**\n * Clases para table responsive strategies\n */\nexport const TABLE_RESPONSIVE = {\n // Scroll horizontal (default, más simple)\n scroll: {\n wrapper: 'relative w-full overflow-x-auto',\n table: 'w-full min-w-full',\n cell: 'whitespace-nowrap'\n },\n \n // Permitir wrap del contenido\n wrap: {\n wrapper: 'relative w-full overflow-x-auto',\n table: 'w-full',\n cell: 'whitespace-normal break-words'\n },\n \n // Stack en mobile (cada fila se convierte en card)\n // Requiere lógica adicional en el componente\n stack: {\n wrapper: 'relative w-full',\n table: 'w-full',\n row: 'block sm:table-row border-b sm:border-b-0',\n cell: 'block sm:table-cell py-2 sm:py-0 before:content-[attr(data-label)] before:font-medium before:inline-block before:w-32 sm:before:content-none'\n },\n \n // Collapse: ocultar columnas menos importantes en mobile\n // Se usa con clases de visibility en las columnas específicas\n collapse: {\n wrapper: 'relative w-full overflow-x-auto',\n table: 'w-full',\n cell: 'whitespace-nowrap',\n // Estas clases se aplican a columnas opcionales\n optionalColumn: 'hidden md:table-cell'\n }\n} as const;\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { TableResponsiveStrategy, TABLE_RESPONSIVE } from '../../utils/responsive';\n\nexport type PdmTableVariant = 'default' | 'data' | 'interactive';\n\n/**\n * Componente base de tabla con soporte responsive\n * \n * SIMPLIFICADO: Ya no incluye drag & drop (usar pdm-draggable-table para eso)\n * \n * @example\n * // Tabla simple con scroll horizontal\n * <pdm-table variant=\"default\">\n * <thead><tr><th>Name</th><th>Email</th></tr></thead>\n * <tbody><tr><td>John</td><td>john@example.com</td></tr></tbody>\n * </pdm-table>\n * \n * @example\n * // Tabla interactiva con wrap en mobile\n * <pdm-table variant=\"interactive\" responsiveStrategy=\"wrap\">\n * ...\n * </pdm-table>\n */\n@Component({\n selector: 'pdm-table',\n templateUrl: './table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmTableComponent {\n /**\n * Variante visual de la tabla\n * - default: tabla básica sin estilos extra\n * - data: tabla con bordes y espaciado para data\n * - interactive: tabla con hover, sticky header y estilos interactivos\n */\n @Input() variant: PdmTableVariant = 'default';\n \n /**\n * Estrategia responsive para la tabla\n * - scroll: scroll horizontal en mobile (default, más simple)\n * - wrap: permite que el contenido haga wrap\n * - stack: convierte filas en cards en mobile (requiere data-label en celdas)\n * - collapse: oculta columnas menos importantes en mobile\n */\n @Input() responsiveStrategy: TableResponsiveStrategy = 'scroll';\n \n /**\n * Clases CSS adicionales para el wrapper\n */\n @Input() className = '';\n \n /**\n * Si es true, aplica padding negativo en mobile para scroll edge-to-edge\n * Útil cuando la tabla está dentro de un container con padding\n */\n @Input() fullBleed = false;\n\n get wrapperClasses(): string[] {\n const baseClasses = ['relative', 'w-full'];\n const strategyClasses = this.getResponsiveStrategyClasses();\n const variantClasses = this.getVariantWrapperClasses();\n \n // Full bleed: scroll edge-to-edge en mobile\n if (this.fullBleed && this.responsiveStrategy === 'scroll') {\n baseClasses.push('-mx-4', 'px-4', 'sm:mx-0', 'sm:px-0');\n }\n \n return [\n ...baseClasses,\n ...strategyClasses,\n ...variantClasses,\n this.className\n ].filter(Boolean);\n }\n\n get tableClasses(): string[] {\n const baseClasses = ['w-full', 'caption-bottom', 'text-sm'];\n const variantClasses = this.getVariantTableClasses();\n const cellClasses = this.getCellClasses();\n \n return [...baseClasses, ...variantClasses, ...cellClasses].filter(Boolean);\n }\n\n private getResponsiveStrategyClasses(): string[] {\n const strategy = TABLE_RESPONSIVE[this.responsiveStrategy];\n \n if (this.responsiveStrategy === 'scroll') {\n return ['overflow-x-auto'];\n }\n \n if (this.responsiveStrategy === 'wrap') {\n return ['overflow-x-auto'];\n }\n \n if (this.responsiveStrategy === 'stack') {\n // Stack requiere lógica en el template, aquí solo el wrapper\n return [];\n }\n \n if (this.responsiveStrategy === 'collapse') {\n return ['overflow-x-auto'];\n }\n \n return ['overflow-auto'];\n }\n\n private getVariantWrapperClasses(): string[] {\n if (this.variant === 'interactive') {\n return ['rounded-xl', 'border', 'border-border', 'bg-background'];\n }\n \n if (this.variant === 'data') {\n return ['rounded-md', 'border', 'border-border', 'bg-background'];\n }\n \n return [];\n }\n\n private getVariantTableClasses(): string[] {\n if (this.variant === 'data') {\n return [\n 'border-collapse',\n 'text-foreground',\n '[&_thead_tr]:border-b',\n '[&_thead_tr]:border-border',\n '[&_tbody_tr]:border-b',\n '[&_tbody_tr]:border-border',\n '[&_tbody_tr:last-child]:border-b-0',\n '[&_th]:h-10',\n '[&_th]:px-2',\n '[&_th]:text-left',\n '[&_th]:align-middle',\n '[&_th]:font-medium',\n '[&_td]:p-2',\n '[&_td]:align-middle'\n ];\n }\n \n if (this.variant === 'interactive') {\n return [\n 'text-foreground',\n '[&_thead]:sticky',\n '[&_thead]:top-0',\n '[&_thead]:z-10',\n '[&_thead]:bg-muted/70',\n '[&_thead_tr]:border-b',\n '[&_thead_tr]:border-border',\n '[&_th]:h-12',\n '[&_th]:px-4',\n '[&_th]:text-left',\n '[&_th]:align-middle',\n '[&_th]:text-sm',\n '[&_th]:font-medium',\n '[&_tbody_tr]:border-b',\n '[&_tbody_tr]:border-border',\n '[&_tbody_tr]:transition-colors',\n '[&_tbody_tr:hover]:bg-muted/50',\n '[&_tbody_tr:last-child]:border-b-0',\n '[&_td]:h-14',\n '[&_td]:px-4',\n '[&_td]:align-middle',\n '[&_td]:text-sm',\n '[&_svg]:text-muted-foreground'\n ];\n }\n \n return [];\n }\n\n private getCellClasses(): string[] {\n // Manejo responsive de whitespace\n if (this.responsiveStrategy === 'scroll') {\n // En scroll, permitir wrap en mobile, nowrap en desktop\n return ['[&_td]:whitespace-normal', '[&_th]:whitespace-normal', 'sm:[&_td]:whitespace-nowrap', 'sm:[&_th]:whitespace-nowrap'];\n }\n \n if (this.responsiveStrategy === 'wrap') {\n // En wrap, siempre permitir wrap\n return ['[&_td]:whitespace-normal', '[&_td]:break-words', '[&_th]:whitespace-normal'];\n }\n \n // Default: nowrap (comportamiento anterior para backward compatibility)\n return [];\n }\n}\n","<div [ngClass]=\"wrapperClasses\" [attr.data-slot]=\"variant === 'interactive' ? 'table-container' : null\">\n <table #tableElement [ngClass]=\"tableClasses\" [attr.data-slot]=\"variant === 'interactive' ? 'table' : null\">\n <ng-content></ng-content>\n </table>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { TableResponsiveStrategy } from '../../utils/responsive';\n\n/**\n * DEPRECATED: Esta interfaz es para backward compatibility\n * Usar PdmDataTableColumn<T> con tipo genérico en su lugar\n */\nexport interface PdmDataTableRow {\n id: string;\n status: string;\n email: string;\n amount: string;\n selected?: boolean;\n}\n\n/**\n * Definición de columna para data-table genérico\n */\nexport interface PdmDataTableColumn<T = any> {\n /**\n * Key del campo en el objeto de datos\n * Usado para acceder al valor: row[key]\n */\n key: keyof T;\n \n /**\n * Label a mostrar en el header\n */\n label: string;\n \n /**\n * Ancho de la columna (CSS width)\n * Ej: '100px', '20%', 'auto'\n */\n width?: string;\n \n /**\n * Si la columna es sortable\n */\n sortable?: boolean;\n \n /**\n * Alineación del contenido\n */\n align?: 'left' | 'center' | 'right';\n \n /**\n * Función custom para renderizar el valor\n * Si no se provee, se usa toString() del valor\n */\n render?: (value: any, row: T) => string;\n \n /**\n * Template personalizado para la celda\n * Tiene prioridad sobre render()\n */\n cellTemplate?: TemplateRef<{ $implicit: T; value: any }>;\n \n /**\n * Si es true, la columna se oculta en mobile\n * Solo se muestra en breakpoint md+ (768px)\n */\n hideOnMobile?: boolean;\n \n /**\n * CSS classes adicionales para las celdas de esta columna\n */\n cellClass?: string;\n \n /**\n * CSS classes adicionales para el header de esta columna\n */\n headerClass?: string;\n}\n\n/**\n * Data-table genérico con paginación, filtrado y selección\n * \n * NUEVO: Ahora es genérico y configurable via columnas\n * \n * @example\n * // Definir columnas\n * columns: PdmDataTableColumn<User>[] = [\n * { key: 'name', label: 'Name', sortable: true },\n * { key: 'email', label: 'Email', sortable: true },\n * { key: 'role', label: 'Role', hideOnMobile: true },\n * { key: 'createdAt', label: 'Created', render: (val) => formatDate(val) }\n * ];\n * \n * // En el template\n * <pdm-data-table\n * [columns]=\"columns\"\n * [rows]=\"users\"\n * [selectable]=\"true\"\n * (selectionChange)=\"onSelect($event)\">\n * </pdm-data-table>\n */\n@Component({\n selector: 'pdm-data-table',\n templateUrl: './data-table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmDataTableComponent<T = any> {\n @Input() className = '';\n \n /**\n * Columnas a mostrar\n * Si no se provee, intenta inferir del primer row (legacy mode)\n */\n @Input() columns: PdmDataTableColumn<T>[] = [];\n \n /**\n * Estrategia responsive de la tabla\n */\n @Input() responsiveStrategy: TableResponsiveStrategy = 'scroll';\n \n /**\n * Si es true, muestra checkbox de selección en cada fila\n */\n @Input() selectable = false;\n \n /**\n * Si es true, muestra botón de acciones (tres puntos) en cada fila\n */\n @Input() showActions = false;\n \n /**\n * Si es true, muestra filtro de búsqueda\n */\n @Input() showFilter = true;\n \n /**\n * Si es true, muestra controles de paginación\n */\n @Input() showPagination = true;\n \n /**\n * Si es true, muestra selector de columnas\n */\n @Input() showColumnSelector = false;\n \n // Labels i18n\n @Input() filterPlaceholder = 'Filter...';\n @Input() columnsLabel = 'Columns';\n @Input() previousLabel = 'Previous';\n @Input() nextLabel = 'Next';\n @Input() emptyLabel = 'No results.';\n @Input() rowsSelectedLabel = 'row(s) selected';\n \n // DEPRECATED: Labels hardcodeados para backward compatibility\n /**\n * @deprecated Use columns configuration instead\n */\n @Input() statusLabel = 'Status';\n /**\n * @deprecated Use columns configuration instead\n */\n @Input() emailLabel = 'Email';\n /**\n * @deprecated Use columns configuration instead\n */\n @Input() amountLabel = 'Amount';\n \n /**\n * Datos a mostrar\n */\n @Input() rows: T[] = [];\n \n /**\n * Página actual (1-indexed)\n */\n @Input() page = 1;\n \n /**\n * Cantidad de filas por página\n */\n @Input() pageSize = 10;\n \n /**\n * Query de filtrado\n */\n @Input() query = '';\n \n /**\n * Función custom de filtrado\n * Si no se provee, busca en todos los campos string\n */\n @Input() filterFn?: (row: T, query: string) => boolean;\n\n @Output() queryChange = new EventEmitter<string>();\n @Output() rowAction = new EventEmitter<T>();\n @Output() pageChange = new EventEmitter<number>();\n @Output() selectionChange = new EventEmitter<{ row: T; selected: boolean }>();\n @Output() columnSort = new EventEmitter<{ column: PdmDataTableColumn<T>; direction: 'asc' | 'desc' }>();\n\n // Estado interno\n selectedRows = new Set<T>();\n sortColumn?: PdmDataTableColumn<T>;\n sortDirection: 'asc' | 'desc' = 'asc';\n\n /**\n * Backward compatibility: si no hay columnas definidas, inferir del primer row\n */\n get effectiveColumns(): PdmDataTableColumn<T>[] {\n if (this.columns.length > 0) {\n return this.columns;\n }\n \n // Legacy mode: inferir columnas del primer row (solo para PdmDataTableRow)\n if (this.rows.length > 0) {\n const firstRow = this.rows[0] as any;\n return Object.keys(firstRow)\n .filter(key => key !== 'selected')\n .map(key => ({\n key: key as keyof T,\n label: this.getLegacyLabel(key),\n align: key === 'amount' ? 'right' : 'left'\n }));\n }\n \n return [];\n }\n\n /**\n * LEGACY: mapeo de keys a labels hardcodeados\n */\n private getLegacyLabel(key: string): string {\n const map: Record<string, string> = {\n status: this.statusLabel,\n email: this.emailLabel,\n amount: this.amountLabel\n };\n return map[key] || key.charAt(0).toUpperCase() + key.slice(1);\n }\n\n get filteredRows(): T[] {\n const q = this.query.trim().toLowerCase();\n if (!q) return this.rows;\n \n if (this.filterFn) {\n return this.rows.filter(row => this.filterFn!(row, q));\n }\n \n // Filtrado default: buscar en todos los campos string\n return this.rows.filter(row => {\n return Object.values(row as any).some(val => \n typeof val === 'string' && val.toLowerCase().includes(q)\n );\n });\n }\n\n get pagedRows(): T[] {\n const start = (this.page - 1) * this.pageSize;\n return this.filteredRows.slice(start, start + this.pageSize);\n }\n\n get totalPages(): number {\n return Math.max(1, Math.ceil(this.filteredRows.length / this.pageSize));\n }\n\n get selectedCount(): number {\n return this.selectedRows.size;\n }\n\n onQueryInput(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.queryChange.emit(value);\n }\n\n onToggleRow(row: T, event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n \n if (checked) {\n this.selectedRows.add(row);\n } else {\n this.selectedRows.delete(row);\n }\n \n this.selectionChange.emit({ row, selected: checked });\n }\n\n onToggleAll(event: Event): void {\n const checked = (event.target as HTMLInputElement).checked;\n \n if (checked) {\n this.pagedRows.forEach(row => this.selectedRows.add(row));\n } else {\n this.pagedRows.forEach(row => this.selectedRows.delete(row));\n }\n }\n\n isSelected(row: T): boolean {\n return this.selectedRows.has(row);\n }\n\n previous(): void {\n if (this.page <= 1) return;\n this.pageChange.emit(this.page - 1);\n }\n\n next(): void {\n if (this.page >= this.totalPages) return;\n this.pageChange.emit(this.page + 1);\n }\n\n onAction(row: T): void {\n this.rowAction.emit(row);\n }\n\n onSort(column: PdmDataTableColumn<T>): void {\n if (!column.sortable) return;\n \n if (this.sortColumn === column) {\n this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';\n } else {\n this.sortColumn = column;\n this.sortDirection = 'asc';\n }\n \n this.columnSort.emit({ column, direction: this.sortDirection });\n }\n\n getCellValue(row: T, column: PdmDataTableColumn<T>): any {\n const value = row[column.key];\n \n if (column.render) {\n return column.render(value, row);\n }\n \n return value != null ? String(value) : '';\n }\n\n getCellClass(column: PdmDataTableColumn<T>): string {\n const classes = ['px-2', 'py-2'];\n \n if (column.align === 'center') classes.push('text-center');\n if (column.align === 'right') classes.push('text-right');\n if (column.hideOnMobile) classes.push('hidden', 'md:table-cell');\n if (column.cellClass) classes.push(column.cellClass);\n \n return classes.join(' ');\n }\n\n getHeaderClass(column: PdmDataTableColumn<T>): string {\n const classes = ['px-2', 'py-2', 'text-left', 'font-medium'];\n \n if (column.hideOnMobile) classes.push('hidden', 'md:table-cell');\n if (column.headerClass) classes.push(column.headerClass);\n \n return classes.join(' ');\n }\n\n getColumnStyle(column: PdmDataTableColumn<T>): any {\n return column.width ? { width: column.width } : {};\n }\n}\n","<section [ngClass]=\"['flex w-full flex-col', className]\">\n <!-- Toolbar: Filtro + Selector de columnas -->\n <div *ngIf=\"showFilter || showColumnSelector\" class=\"flex w-full items-center justify-between gap-2 py-4\">\n <input\n *ngIf=\"showFilter\"\n type=\"text\"\n [placeholder]=\"filterPlaceholder\"\n [value]=\"query\"\n (input)=\"onQueryInput($event)\"\n class=\"h-9 flex-1 rounded-md border border-input bg-transparent px-3 py-1 text-sm text-foreground shadow-sm placeholder:text-muted-foreground outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\"\n />\n\n <button \n *ngIf=\"showColumnSelector\"\n type=\"button\" \n class=\"inline-flex h-9 appearance-none items-center gap-2 rounded-md border border-input bg-background px-3 py-2 text-sm font-medium text-foreground shadow-sm whitespace-nowrap\">\n <span>{{ columnsLabel }}</span>\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4 text-foreground\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7 10L12 15L17 10\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n </div>\n\n <!-- Tabla con responsive -->\n <pdm-table \n variant=\"data\"\n [responsiveStrategy]=\"responsiveStrategy\"\n [fullBleed]=\"false\">\n <thead>\n <tr>\n <!-- Columna de selección -->\n <th *ngIf=\"selectable\" class=\"w-10 px-2 py-2 text-left font-medium\">\n <input \n type=\"checkbox\" \n (change)=\"onToggleAll($event)\"\n class=\"h-4 w-4 rounded-sm border border-input\" \n />\n </th>\n\n <!-- Columnas dinámicas -->\n <th \n *ngFor=\"let column of effectiveColumns\"\n [ngClass]=\"getHeaderClass(column)\"\n [ngStyle]=\"getColumnStyle(column)\">\n \n <!-- Header sortable -->\n <button \n *ngIf=\"column.sortable\"\n type=\"button\" \n (click)=\"onSort(column)\"\n class=\"inline-flex appearance-none items-center gap-1 rounded-sm border-0 bg-transparent px-3 py-2 text-sm hover:underline\">\n <span>{{ column.label }}</span>\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8 6L4 10L8 14M16 18L20 14L16 10\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </button>\n\n <!-- Header no sortable -->\n <span *ngIf=\"!column.sortable\">{{ column.label }}</span>\n </th>\n\n <!-- Columna de acciones -->\n <th *ngIf=\"showActions\" class=\"w-10 px-2 py-2\"></th>\n </tr>\n </thead>\n\n <tbody>\n <!-- Filas con datos -->\n <tr *ngFor=\"let row of pagedRows\">\n <!-- Celda de selección -->\n <td *ngIf=\"selectable\" class=\"px-2 py-2\">\n <input \n type=\"checkbox\" \n [checked]=\"isSelected(row)\" \n (change)=\"onToggleRow(row, $event)\" \n class=\"h-4 w-4 rounded-sm border border-input\" \n />\n </td>\n\n <!-- Celdas dinámicas -->\n <td \n *ngFor=\"let column of effectiveColumns\"\n [ngClass]=\"getCellClass(column)\">\n \n <!-- Template personalizado si existe -->\n <ng-container *ngIf=\"column.cellTemplate; else defaultCell\">\n <ng-container \n *ngTemplateOutlet=\"column.cellTemplate; context: { $implicit: row, value: row[column.key] }\">\n </ng-container>\n </ng-container>\n\n <!-- Renderizado default -->\n <ng-template #defaultCell>\n {{ getCellValue(row, column) }}\n </ng-template>\n </td>\n\n <!-- Celda de acciones -->\n <td *ngIf=\"showActions\" class=\"px-2 py-2\">\n <button \n type=\"button\" \n class=\"inline-flex h-8 w-8 appearance-none items-center justify-center border-0 bg-transparent p-0 hover:text-foreground\" \n (click)=\"onAction(row)\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"6\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"></circle>\n <circle cx=\"12\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"></circle>\n <circle cx=\"18\" cy=\"12\" r=\"1.5\" fill=\"currentColor\"></circle>\n </svg>\n </button>\n </td>\n </tr>\n\n <!-- Fila vacía -->\n <tr *ngIf=\"pagedRows.length === 0\">\n <td \n [attr.colspan]=\"effectiveColumns.length + (selectable ? 1 : 0) + (showActions ? 1 : 0)\" \n class=\"px-3 py-6 text-center text-sm text-muted-foreground\">\n {{ emptyLabel }}\n </td>\n </tr>\n </tbody>\n </pdm-table>\n\n <!-- Footer: Info + Paginación -->\n <div *ngIf=\"showPagination || selectable\" class=\"flex w-full items-center gap-2 py-4 flex-wrap sm:flex-nowrap\">\n <p *ngIf=\"selectable\" class=\"m-0 flex-1 pr-2 text-sm text-muted-foreground whitespace-nowrap\">\n {{ selectedCount }} of {{ rows.length }} {{ rowsSelectedLabel }}\n </p>\n\n <div *ngIf=\"showPagination\" class=\"flex items-center gap-2 ml-auto\">\n <span class=\"text-sm text-muted-foreground whitespace-nowrap\">\n Page {{ page }} of {{ totalPages }}\n </span>\n <button \n type=\"button\" \n class=\"h-9 appearance-none rounded-md border border-input bg-background px-4 text-sm font-medium text-foreground shadow-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed\" \n [disabled]=\"page <= 1\" \n (click)=\"previous()\">\n {{ previousLabel }}\n </button>\n <button \n type=\"button\" \n class=\"h-9 appearance-none rounded-md border border-input bg-background px-4 text-sm font-medium text-foreground shadow-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed\" \n [disabled]=\"page >= totalPages\" \n (click)=\"next()\">\n {{ nextLabel }}\n </button>\n </div>\n </div>\n</section>\n","import { PositionStrategy } from '@angular/cdk/overlay';\nimport { ElementRef } from '@angular/core';\nimport { Overlay } from '@angular/cdk/overlay';\n\n/**\n * Creates a flexible position strategy that automatically adjusts\n * to keep the overlay within the viewport edges.\n *\n * The strategy tries positions in this order:\n * 1. Bottom-left (origin bottom edge, aligns to left)\n * 2. Top-left (origin top edge, aligns to left)\n * 3. Bottom-right (origin bottom edge, aligns to right)\n * 4. Top-right (origin top edge, aligns to right)\n *\n * CDK Overlay will use the first position that fits within the viewport.\n */\nexport function createFlexiblePositionStrategy(\n overlay: Overlay,\n triggerElement: HTMLElement,\n offset: number = 4\n): PositionStrategy {\n return overlay\n .position()\n .flexibleConnectedTo(triggerElement)\n .withPositions([\n // Bottom-left (default) - opens downward from left edge\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: offset\n },\n // Top-left - opens upward from left edge\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -offset\n },\n // Bottom-right - opens downward from right edge\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: offset\n },\n // Top-right - opens upward from right edge\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -offset\n }\n ])\n .withFlexibleDimensions(false)\n .withPush(true);\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-label',\n templateUrl: './label.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmLabelComponent {\n @Input() forId = '';\n @Input() required = false;\n @Input() className = '';\n}\n","<label\n [attr.for]=\"forId\"\n [ngClass]=\"['text-sm font-medium leading-none text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70', className]\"\n>\n <ng-content></ng-content>\n <span *ngIf=\"required\" class=\"ml-1 text-destructive\">*</span>\n</label>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { format as formatDateFns } from 'date-fns';\nimport { PdmCalendarRange, PdmCalendarVariant } from '../calendar/calendar.component';\nimport { PdmOverlayOptions } from '../../overlay/pdm-overlay-options';\nimport { createFlexiblePositionStrategy } from '../../overlay/create-flexible-position-strategy';\n\nlet nextDatePickerId = 0;\n\n@Component({\n selector: 'pdm-date-picker',\n templateUrl: './date-picker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmDatePickerComponent implements OnDestroy {\n private _value: Date | null = null;\n private _rangeValue: PdmCalendarRange | null = null;\n private _open = false;\n\n private readonly instanceId = `pdm-date-picker-${++nextDatePickerId}`;\n private triggerFocused = false;\n\n private overlayRef: OverlayRef | null = null;\n private backdropSub: Subscription | null = null;\n\n @ViewChild('triggerEl') private triggerRef?: ElementRef<HTMLElement>;\n @ViewChild('panelTemplate') private panelTemplateRef!: any;\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n private readonly cdr: ChangeDetectorRef,\n private readonly overlay: Overlay,\n private readonly viewContainerRef: ViewContainerRef\n ) {}\n\n @Input() id = '';\n @Input() variant: PdmCalendarVariant | string = 'single';\n @Input() label = '';\n @Input() labelClassName = '';\n @Input() className = '';\n @Input() triggerClassName = '';\n /**\n * Additional CSS classes applied to the overlay panel.\n * Backward-compatible: mapped to `overlayOptions.panelClass` when `overlayOptions` is not set.\n * When both are supplied, `overlayOptions.panelClass` takes precedence.\n */\n @Input() panelClassName = '';\n /**\n * Optional CDK OverlayConfig overrides.\n * Shallow-merged on top of component defaults — consumer always wins.\n * Providing `positionStrategy` or `scrollStrategy` replaces the component default entirely.\n */\n @Input() overlayOptions?: PdmOverlayOptions;\n @Input() placeholder = 'Pick a date';\n @Input() rangePlaceholder = 'Pick a date range';\n @Input() format = 'MMM d, yyyy';\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() required = false;\n @Input() invalid = false;\n @Input() allowSameDayRange = true;\n @Input() closeOnSelect = true;\n @Input() minDate: Date | null = null;\n @Input() maxDate: Date | null = null;\n @Input() minYear: number | null = null;\n @Input() maxYear: number | null = null;\n @Input() disabledDates: Date[] = [];\n @Input() isDateDisabled: ((date: Date) => boolean) | null = null;\n\n @Output() valueChange = new EventEmitter<Date | null>();\n @Output() rangeValueChange = new EventEmitter<PdmCalendarRange | null>();\n @Output() openChange = new EventEmitter<boolean>();\n @Output() monthChange = new EventEmitter<Date>();\n\n @Input()\n set open(value: boolean) {\n if (this._open === !!value) return;\n if (!!value) {\n this.openPanel();\n } else {\n this.closePanel();\n }\n }\n get open(): boolean {\n return this._open;\n }\n\n @Input()\n set value(value: Date | null) {\n this._value = this.normalizeDate(value);\n this.cdr.markForCheck();\n }\n get value(): Date | null {\n return this._value;\n }\n\n @Input()\n set rangeValue(value: PdmCalendarRange | null) {\n this._rangeValue = value\n ? {\n start: this.normalizeDate(value.start),\n end: this.normalizeDate(value.end)\n }\n : null;\n this.cdr.markForCheck();\n }\n get rangeValue(): PdmCalendarRange | null {\n return this._rangeValue;\n }\n\n ngOnDestroy(): void {\n this.destroyOverlay();\n }\n\n get resolvedVariant(): PdmCalendarVariant {\n return this.variant === 'range' ? 'range' : 'single';\n }\n\n get triggerId(): string {\n return this.id || `${this.instanceId}-trigger`;\n }\n\n get panelId(): string {\n return `${this.id || this.instanceId}-panel`;\n }\n\n get hasSingleValue(): boolean {\n return this.resolvedVariant === 'single' && !!this._value;\n }\n\n get hasRangeValue(): boolean {\n return this.resolvedVariant === 'range' && !!this._rangeValue?.start;\n }\n\n get displayText(): string {\n if (this.resolvedVariant === 'single') {\n return this._value ? this.formatDate(this._value) : this.placeholder;\n }\n\n const start = this._rangeValue?.start ?? null;\n const end = this._rangeValue?.end ?? null;\n\n if (!start) {\n return this.rangePlaceholder;\n }\n\n if (!end) {\n return `${this.formatDate(start)} -`;\n }\n\n return `${this.formatDate(start)} - ${this.formatDate(end)}`;\n }\n\n get textClasses(): string[] {\n const hasValue = this.resolvedVariant === 'single' ? this.hasSingleValue : this.hasRangeValue;\n return [\n 'min-w-0 flex-1 truncate text-left text-sm leading-5',\n hasValue ? 'text-foreground' : 'text-muted-foreground'\n ];\n }\n\n get rootClasses(): string[] {\n return [\n 'grid gap-2',\n this.resolvedVariant === 'range' ? 'w-[280px]' : 'w-[197px]',\n this.className\n ];\n }\n\n get triggerClasses(): string[] {\n const focusStyle = this._open || this.triggerFocused;\n\n return [\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive relative flex w-full appearance-none items-center gap-2 overflow-hidden rounded-lg border bg-background px-3 py-[7.5px] text-left text-sm shadow-sm outline-none transition-colors',\n 'min-h-[36px] disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n focusStyle\n ? 'border-ring ring-2 ring-ring/50'\n : '',\n this.invalid ? 'border-destructive ring-destructive/20' : '',\n this.triggerClassName\n ];\n }\n\n toggleOpen(): void {\n if (this.disabled || this.readonly) {\n return;\n }\n\n this.setOpen(!this._open);\n }\n\n onTriggerFocus(): void {\n this.triggerFocused = true;\n this.cdr.markForCheck();\n }\n\n onTriggerBlur(): void {\n this.triggerFocused = false;\n this.cdr.markForCheck();\n }\n\n onCalendarValueChange(value: Date | null): void {\n this._value = this.normalizeDate(value);\n this.valueChange.emit(this._value ? this.cloneDate(this._value) : null);\n\n if (this.closeOnSelect && this._value) {\n this.setOpen(false);\n } else {\n this.cdr.markForCheck();\n }\n }\n\n onCalendarRangeValueChange(value: PdmCalendarRange | null): void {\n this._rangeValue = value\n ? {\n start: this.normalizeDate(value.start),\n end: this.normalizeDate(value.end)\n }\n : null;\n\n this.rangeValueChange.emit(\n this._rangeValue\n ? {\n start: this._rangeValue.start ? this.cloneDate(this._rangeValue.start) : null,\n end: this._rangeValue.end ? this.cloneDate(this._rangeValue.end) : null\n }\n : null\n );\n\n if (this.closeOnSelect && this._rangeValue?.start && this._rangeValue?.end) {\n this.setOpen(false);\n return;\n }\n\n this.cdr.markForCheck();\n }\n\n onCalendarMonthChange(month: Date): void {\n this.monthChange.emit(this.cloneDate(month));\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n if (this._open) {\n this.setOpen(false);\n }\n }\n\n private setOpen(nextOpen: boolean): void {\n if (this._open === nextOpen) {\n return;\n }\n\n if (nextOpen) {\n this.openPanel();\n } else {\n this.closePanel();\n }\n }\n\n private openPanel(): void {\n if (this.overlayRef) return;\n\n const triggerEl = this.triggerRef?.nativeElement;\n if (!triggerEl) return;\n\n this._open = true;\n this.openChange.emit(true);\n this.cdr.markForCheck();\n\n const positionStrategy = createFlexiblePositionStrategy(\n this.overlay,\n triggerEl,\n 8\n );\n\n // Resolve panelClass: overlayOptions.panelClass wins; otherwise map panelClassName.\n const resolvedPanelClass = this.overlayOptions?.panelClass\n ?? (this.panelClassName ? ['block', this.panelClassName] : ['block']);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n // Consumer overrides are spread last — they win over every default above.\n ...this.overlayOptions,\n // panelClass always overrides last: it already merges panelClassName + overlayOptions.\n panelClass: resolvedPanelClass\n });\n\n const portal = new TemplatePortal(this.panelTemplateRef, this.viewContainerRef);\n this.overlayRef.attach(portal);\n\n this.backdropSub = this.overlayRef.outsidePointerEvents().subscribe((event) => {\n const target = event.target as Node;\n if (!triggerEl.contains(target)) {\n this.closePanel();\n }\n });\n\n this.cdr.markForCheck();\n }\n\n private closePanel(): void {\n if (!this.overlayRef && !this._open) return;\n\n this._open = false;\n this.openChange.emit(false);\n this.destroyOverlay();\n this.cdr.markForCheck();\n }\n\n private destroyOverlay(): void {\n if (this.backdropSub) {\n this.backdropSub.unsubscribe();\n this.backdropSub = null;\n }\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n\n private formatDate(date: Date): string {\n try {\n return formatDateFns(date, this.format || 'MMM d, yyyy');\n } catch {\n return formatDateFns(date, 'MMM d, yyyy');\n }\n }\n\n private normalizeDate(value: Date | null | undefined): Date | null {\n if (!(value instanceof Date) || Number.isNaN(value.getTime())) {\n return null;\n }\n\n return new Date(value.getFullYear(), value.getMonth(), value.getDate());\n }\n\n private cloneDate(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n }\n}\n","<div [ngClass]=\"rootClasses\">\n <pdm-label *ngIf=\"label\" [forId]=\"triggerId\" [required]=\"required\" [className]=\"labelClassName\">\n {{ label }}\n </pdm-label>\n\n <button\n #triggerEl\n type=\"button\"\n [id]=\"triggerId\"\n [disabled]=\"disabled\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-controls]=\"panelId\"\n [attr.aria-haspopup]=\"'dialog'\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"triggerClasses\"\n [attr.title]=\"displayText\"\n (click)=\"toggleOpen()\"\n (focus)=\"onTriggerFocus()\"\n (blur)=\"onTriggerBlur()\"\n >\n <span class=\"flex h-5 w-5 shrink-0 items-center justify-center p-0.5 text-muted-foreground\" aria-hidden=\"true\">\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\">\n <path d=\"M8 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <path d=\"M16 2v4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n <rect x=\"3\" y=\"4.5\" width=\"18\" height=\"16.5\" rx=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></rect>\n <path d=\"M3 9.5h18\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n </span>\n\n <span [ngClass]=\"textClasses\">{{ displayText }}</span>\n </button>\n</div>\n\n<ng-template #panelTemplate>\n <div [id]=\"panelId\" role=\"dialog\" [attr.aria-labelledby]=\"label ? triggerId : null\">\n <pdm-calendar\n [variant]=\"resolvedVariant\"\n [value]=\"value\"\n [rangeValue]=\"rangeValue\"\n [readonly]=\"readonly\"\n [allowSameDayRange]=\"allowSameDayRange\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minYear]=\"minYear\"\n [maxYear]=\"maxYear\"\n [disabledDates]=\"disabledDates\"\n [isDateDisabled]=\"isDateDisabled\"\n (valueChange)=\"onCalendarValueChange($event)\"\n (rangeValueChange)=\"onCalendarRangeValueChange($event)\"\n (monthChange)=\"onCalendarMonthChange($event)\"\n ></pdm-calendar>\n </div>\n</ng-template>\n","/**\n * Z-Index Scale - Sistema centralizado de z-index\n * \n * JERARQUÍA (de menor a mayor):\n * 1. base (z-0) - Elementos normales del DOM\n * 2. dropdown (z-10) - Selects, combobox, date-pickers\n * 3. sticky (z-20) - Headers, navigation bars\n * 4. overlay (z-30) - Popovers, hover cards, context menus\n * 5. drawer (z-40) - Sidebar drawer, sheets laterales\n * 6. modal (z-50) - Dialogs, alert-dialogs\n * 7. modal-backdrop (z-40) - Backdrop de modals\n * 8. popover (z-60) - Tooltips, dropdowns DENTRO de modals\n * 9. toast (z-[100]) - Notificaciones que deben estar sobre TODO\n * \n * REGLA CRÍTICA: \n * - Componentes overlay (select options, dropdown menu, tooltip) SIEMPRE z-60 o mayor\n * - Esto permite que funcionen DENTRO de modals (z-50)\n * - Backdrop de modal debe ser z-40 para estar DEBAJO del contenido del modal (z-50)\n */\n\nexport const Z_INDEX = {\n /**\n * Base - contenido normal del DOM\n */\n base: 'z-0',\n \n /**\n * Dropdown - Selects, combobox, date-pickers\n * Debe estar SOBRE contenido normal pero BAJO modals\n */\n dropdown: 'z-10',\n \n /**\n * Sticky - Headers, navigation fija\n */\n sticky: 'z-20',\n \n /**\n * Overlay - Popovers, hover cards, context menus\n * Debe estar SOBRE sticky pero BAJO modals\n */\n overlay: 'z-30',\n \n /**\n * Drawer backdrop - Backdrop de sidebar drawer\n * Debe estar DEBAJO del drawer panel\n */\n drawerBackdrop: 'z-40',\n \n /**\n * Drawer - Sidebar drawer, sheets laterales\n * Debe estar SOBRE su backdrop pero BAJO modals\n */\n drawer: 'z-50',\n \n /**\n * Modal backdrop - Backdrop de dialogs\n * Debe estar SOBRE drawers pero DEBAJO del contenido del modal\n */\n modalBackdrop: 'z-50',\n \n /**\n * Modal - Dialogs, alert-dialogs, sheets\n * Debe estar SOBRE su backdrop\n */\n modal: 'z-[60]',\n \n /**\n * Popover - Tooltips, dropdowns, selects options DENTRO de modals\n * CRÍTICO: Debe ser MAYOR que modal (z-50) para aparecer sobre modals\n */\n popover: 'z-[70]',\n \n /**\n * Toast - Notificaciones globales\n * Debe estar sobre TODO\n */\n toast: 'z-[100]'\n} as const;\n\n/**\n * Helper para debugging z-index issues\n */\nexport function logZIndexStack(element: HTMLElement): void {\n if (typeof window === 'undefined') return;\n \n let current: HTMLElement | null = element;\n const stack: Array<{ element: string; zIndex: string; position: string }> = [];\n \n while (current && current !== document.body) {\n const computed = window.getComputedStyle(current);\n const zIndex = computed.zIndex;\n const position = computed.position;\n \n if (zIndex !== 'auto') {\n stack.push({\n element: current.tagName + (current.className ? `.${current.className.split(' ')[0]}` : ''),\n zIndex,\n position\n });\n }\n \n current = current.parentElement;\n }\n \n console.table(stack);\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { responsive } from '../../utils/responsive';\nimport { Z_INDEX } from '../../utils/z-index';\n\nexport type PdmDialogVariant = 'default' | 'custom-close';\n\n/**\n * @deprecated Use 'responsive' mode instead. Will be removed in v0.3.0\n */\nexport type PdmDialogSize = 'desktop' | 'mobile' | 'mobile-fullscreen' | 'sm' | 'md' | 'lg' | 'xl' | 'responsive';\n\nexport type PdmDialogFooterAlign = 'right' | 'full-width' | 'left';\n\n/**\n * Modal/Dialog component con soporte responsive\n * \n * MEJORADO en v0.2.0:\n * - Modo 'responsive' (default): fullscreen en mobile, modal en desktop\n * - Tamaños predefinidos: sm, md, lg, xl\n * - Mejor manejo de scroll en mobile\n * \n * @example\n * // Responsive (recomendado)\n * <pdm-dialog [open]=\"isOpen\" size=\"responsive\">\n * <p>Content</p>\n * </pdm-dialog>\n * \n * @example\n * // Tamaño fijo\n * <pdm-dialog [open]=\"isOpen\" size=\"lg\">\n * <p>Content</p>\n * </pdm-dialog>\n */\n@Component({\n selector: 'pdm-dialog',\n templateUrl: './dialog.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmDialogComponent {\n @Input() open = false;\n @Input() variant: PdmDialogVariant = 'default';\n \n /**\n * Tamaño del dialog\n * - responsive: fullscreen mobile, modal desktop (recomendado)\n * - sm: 400px max\n * - md: 500px max\n * - lg: 640px max (default)\n * - xl: 800px max\n * - desktop/mobile/mobile-fullscreen: legacy, deprecado\n */\n @Input() size: PdmDialogSize = 'responsive';\n \n @Input() title = 'Edit profile';\n @Input() description = '';\n @Input() closeOnBackdrop = true;\n @Input() closeOnEsc = true;\n @Input() showCloseButton = true;\n @Input() showHeader = true;\n @Input() showFooter = true;\n @Input() primaryActionText = 'Save changes';\n @Input() secondaryActionText = 'Cancel';\n @Input() alignFooter: PdmDialogFooterAlign = 'right';\n @Input() headerClassName = '';\n @Input() bodyClassName = '';\n @Input() footerClassName = '';\n @Input() className = '';\n\n @Output() openChange = new EventEmitter<boolean>();\n @Output() primaryAction = new EventEmitter<void>();\n @Output() secondaryAction = new EventEmitter<void>();\n\n @HostListener('document:keydown.escape')\n onEsc(): void {\n if (this.open && this.closeOnEsc) {\n this.close();\n }\n }\n\n close(): void {\n this.openChange.emit(false);\n }\n\n onPrimaryAction(): void {\n this.primaryAction.emit();\n }\n\n onSecondaryAction(): void {\n this.secondaryAction.emit();\n }\n\n onBackdropClick(): void {\n if (this.closeOnBackdrop) {\n this.close();\n }\n }\n\n get panelClassName(): string {\n // Legacy sizes (backward compatibility)\n if (this.size === 'desktop') {\n return this.buildClasses(['max-w-[640px]', 'max-h-[calc(100vh-2rem)]', 'rounded-[10px]']);\n }\n \n if (this.size === 'mobile') {\n return this.buildClasses(['max-w-[320px]', 'min-h-[240px]', 'rounded-[10px]']);\n }\n \n if (this.size === 'mobile-fullscreen') {\n return this.buildClasses(['max-w-[320px]', 'h-[min(100dvh,640px)]', 'rounded-none', 'sm:rounded-[10px]']);\n }\n\n // New responsive mode (recomendado)\n if (this.size === 'responsive') {\n return this.buildClasses([\n // Mobile: fullscreen con bordes redondeados solo arriba\n 'w-full',\n 'h-full',\n 'max-h-[100dvh]',\n 'rounded-t-[10px]',\n 'sm:rounded-[10px]',\n // Desktop: modal centrado\n 'sm:w-auto',\n 'sm:h-auto',\n 'sm:max-w-[640px]',\n 'sm:max-h-[calc(100vh-4rem)]'\n ]);\n }\n\n // New size options\n const sizeMap = {\n sm: 'sm:max-w-[400px]',\n md: 'sm:max-w-[500px]',\n lg: 'sm:max-w-[640px]',\n xl: 'sm:max-w-[800px]'\n };\n\n const maxWidth = sizeMap[this.size as keyof typeof sizeMap] || sizeMap.lg;\n\n return this.buildClasses([\n // Mobile: fullscreen\n 'w-full',\n 'h-full',\n 'max-h-[100dvh]',\n 'rounded-t-[10px]',\n // Desktop: modal\n 'sm:rounded-[10px]',\n 'sm:w-auto',\n 'sm:h-auto',\n maxWidth,\n 'sm:max-h-[calc(100vh-4rem)]'\n ]);\n }\n\n private buildClasses(sizeClasses: string[]): string {\n const base = [\n 'relative',\n Z_INDEX.modal, // z-[60] - debe estar sobre backdrop (z-50)\n 'flex',\n 'flex-col',\n 'border',\n 'border-border',\n 'bg-background',\n 'text-foreground',\n 'shadow-lg',\n 'overflow-hidden',\n ...sizeClasses,\n this.className\n ];\n\n return base.filter(Boolean).join(' ');\n }\n\n get bodyWrapperClassName(): string {\n const base = [\n 'flex-1',\n 'overflow-y-auto',\n 'px-4',\n 'py-6',\n 'sm:px-6',\n this.bodyClassName\n ];\n\n return base.filter(Boolean).join(' ');\n }\n\n get headerWrapperClassName(): string {\n const base = [\n 'flex',\n 'items-start',\n 'justify-between',\n 'gap-3',\n 'p-4',\n 'sm:p-6',\n 'border-b',\n 'border-border',\n this.headerClassName\n ];\n \n return base.filter(Boolean).join(' ');\n }\n\n get footerWrapperClassName(): string {\n const effectiveAlign =\n this.alignFooter === 'right' && this.variant === 'custom-close' ? 'left' : this.alignFooter;\n\n const base = [\n 'p-4',\n 'sm:p-6',\n 'border-t',\n 'border-border',\n // Mobile: siempre full-width\n 'flex',\n 'flex-col',\n 'gap-2',\n // Desktop: según alignFooter\n effectiveAlign === 'full-width'\n ? 'sm:flex-col'\n : 'sm:flex-row sm:items-center',\n effectiveAlign === 'left' ? 'sm:justify-start' : '',\n effectiveAlign === 'right' ? 'sm:justify-end' : '',\n this.footerClassName\n ];\n\n return base.filter(Boolean).join(' ');\n }\n\n get containerClassName(): string {\n // Container con backdrop z-50\n // Mobile: fullscreen desde el bottom\n // Desktop: centrado\n return responsive({\n default: `fixed inset-x-0 bottom-0 ${Z_INDEX.modalBackdrop} flex items-end justify-center`,\n sm: `fixed inset-0 ${Z_INDEX.modalBackdrop} flex items-center justify-center p-4`\n });\n }\n}\n","<div *ngIf=\"open\" [ngClass]=\"containerClassName\">\n <!-- Backdrop -->\n <div class=\"absolute inset-0 bg-foreground/30 backdrop-blur-sm\" (click)=\"onBackdropClick()\"></div>\n \n <!-- Dialog Panel -->\n <section role=\"dialog\" aria-modal=\"true\" [ngClass]=\"panelClassName\">\n <!-- Header -->\n <div *ngIf=\"showHeader\" [ngClass]=\"headerWrapperClassName\">\n <div class=\"min-w-0 flex-1\">\n <h2 class=\"m-0 text-lg font-semibold leading-none tracking-tight text-foreground\">{{ title }}</h2>\n <p *ngIf=\"description\" class=\"m-0 mt-2 text-sm text-muted-foreground\">{{ description }}</p>\n </div>\n <button\n *ngIf=\"showCloseButton\"\n type=\"button\"\n class=\"inline-flex h-6 w-6 flex-shrink-0 appearance-none items-center justify-center rounded-sm border-0 bg-transparent p-0 text-foreground opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\"\n (click)=\"close()\"\n aria-label=\"Close dialog\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 6L18 18M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n </button>\n </div>\n\n <!-- Body -->\n <div [ngClass]=\"bodyWrapperClassName\">\n <ng-content></ng-content>\n </div>\n\n <!-- Footer -->\n <div *ngIf=\"showFooter\" [ngClass]=\"footerWrapperClassName\">\n <ng-container *ngIf=\"variant === 'custom-close'; else defaultActions\">\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm sm:w-auto\"\n (click)=\"onSecondaryAction()\"\n >\n {{ secondaryActionText }}\n </button>\n </ng-container>\n\n <ng-template #defaultActions>\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm sm:w-auto\"\n (click)=\"onSecondaryAction()\"\n >\n {{ secondaryActionText }}\n </button>\n <button\n type=\"button\"\n class=\"inline-flex h-9 w-full appearance-none items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm sm:w-auto\"\n (click)=\"onPrimaryAction()\"\n >\n {{ primaryActionText }}\n </button>\n </ng-template>\n </div>\n </section>\n</div>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { PdmTableVariant } from '../table/table.component';\nimport { TableResponsiveStrategy } from '../../utils/responsive';\n\n/**\n * Tabla con funcionalidad de reordenamiento de filas mediante drag & drop\n * \n * Extiende pdm-table agregando la capacidad de reordenar filas.\n * Si no necesitás drag & drop, usá pdm-table directamente (más simple y liviano).\n * \n * @example\n * <pdm-draggable-table \n * variant=\"interactive\"\n * [reorderRows]=\"true\"\n * (rowOrderChange)=\"onOrderChange($event)\">\n * <tbody>\n * <tr data-row-id=\"1\"><td>Row 1</td></tr>\n * <tr data-row-id=\"2\"><td>Row 2</td></tr>\n * </tbody>\n * </pdm-draggable-table>\n * \n * IMPORTANTE: Cada <tr> debe tener un atributo data-row-id único\n */\n@Component({\n selector: 'pdm-draggable-table',\n templateUrl: './draggable-table.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmDraggableTableComponent implements AfterViewInit, OnChanges, OnDestroy {\n @Input() variant: PdmTableVariant = 'default';\n @Input() responsiveStrategy: TableResponsiveStrategy = 'scroll';\n @Input() className = '';\n @Input() fullBleed = false;\n \n /**\n * Habilita el reordenamiento de filas mediante drag & drop\n */\n @Input() reorderRows = false;\n \n /**\n * Selector CSS para identificar los handles de drag\n * Por defecto busca: [data-drag-handle], [data-slot=row-drag-handle], .row-drag-handle\n * Si no encuentra ninguno, inserta un handle automático\n */\n @Input() dragHandleSelector = '[data-drag-handle],[data-slot=row-drag-handle],.row-drag-handle,[data-auto-drag-handle]';\n \n /**\n * Emite el nuevo orden de las filas cuando el usuario termina de arrastrar\n * Array de data-row-id en el nuevo orden\n */\n @Output() rowOrderChange = new EventEmitter<string[]>();\n\n @ViewChild('tableElement') tableElement?: ElementRef<HTMLTableElement>;\n\n private cleanupListeners: Array<() => void> = [];\n private observer?: MutationObserver;\n private draggedRow: HTMLTableRowElement | null = null;\n\n constructor(private readonly renderer: Renderer2) {}\n\n ngAfterViewInit(): void {\n this.syncReorderBehavior();\n }\n\n // Getters para clases CSS (mismo comportamiento que pdm-table)\n get wrapperClasses(): string[] {\n const baseClasses = ['relative', 'w-full'];\n const strategyClasses = this.getResponsiveStrategyClasses();\n const variantClasses = this.getVariantWrapperClasses();\n \n if (this.fullBleed && this.responsiveStrategy === 'scroll') {\n baseClasses.push('-mx-4', 'px-4', 'sm:mx-0', 'sm:px-0');\n }\n \n return [\n ...baseClasses,\n ...strategyClasses,\n ...variantClasses,\n this.className\n ].filter(Boolean);\n }\n\n get tableClasses(): string[] {\n const baseClasses = ['w-full', 'caption-bottom', 'text-sm'];\n const variantClasses = this.getVariantTableClasses();\n const cellClasses = this.getCellClasses();\n \n return [...baseClasses, ...variantClasses, ...cellClasses].filter(Boolean);\n }\n\n private getResponsiveStrategyClasses(): string[] {\n if (this.responsiveStrategy === 'scroll' || this.responsiveStrategy === 'wrap' || this.responsiveStrategy === 'collapse') {\n return ['overflow-x-auto'];\n }\n return [];\n }\n\n private getVariantWrapperClasses(): string[] {\n if (this.variant === 'interactive') {\n return ['rounded-xl', 'border', 'border-border', 'bg-background'];\n }\n if (this.variant === 'data') {\n return ['rounded-md', 'border', 'border-border', 'bg-background'];\n }\n return [];\n }\n\n private getVariantTableClasses(): string[] {\n if (this.variant === 'data') {\n return [\n 'border-collapse', 'text-foreground',\n '[&_thead_tr]:border-b', '[&_thead_tr]:border-border',\n '[&_tbody_tr]:border-b', '[&_tbody_tr]:border-border',\n '[&_tbody_tr:last-child]:border-b-0',\n '[&_th]:h-10', '[&_th]:px-2', '[&_th]:text-left', '[&_th]:align-middle', '[&_th]:font-medium',\n '[&_td]:p-2', '[&_td]:align-middle'\n ];\n }\n \n if (this.variant === 'interactive') {\n return [\n 'text-foreground',\n '[&_thead]:sticky', '[&_thead]:top-0', '[&_thead]:z-10', '[&_thead]:bg-muted/70',\n '[&_thead_tr]:border-b', '[&_thead_tr]:border-border',\n '[&_th]:h-12', '[&_th]:px-4', '[&_th]:text-left', '[&_th]:align-middle', '[&_th]:text-sm', '[&_th]:font-medium',\n '[&_tbody_tr]:border-b', '[&_tbody_tr]:border-border',\n '[&_tbody_tr]:transition-colors', '[&_tbody_tr:hover]:bg-muted/50',\n '[&_tbody_tr:last-child]:border-b-0',\n '[&_td]:h-14', '[&_td]:px-4', '[&_td]:align-middle', '[&_td]:text-sm',\n '[&_svg]:text-muted-foreground'\n ];\n }\n \n return [];\n }\n\n private getCellClasses(): string[] {\n if (this.responsiveStrategy === 'scroll') {\n return ['[&_td]:whitespace-normal', '[&_th]:whitespace-normal', 'sm:[&_td]:whitespace-nowrap', 'sm:[&_th]:whitespace-nowrap'];\n }\n if (this.responsiveStrategy === 'wrap') {\n return ['[&_td]:whitespace-normal', '[&_td]:break-words', '[&_th]:whitespace-normal'];\n }\n return [];\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['reorderRows'] || changes['variant']) {\n this.syncReorderBehavior();\n }\n }\n\n ngOnDestroy(): void {\n this.cleanupReorderBehavior();\n }\n\n private syncReorderBehavior(): void {\n this.cleanupReorderBehavior();\n\n if (!this.reorderRows) {\n return;\n }\n\n const tbody = this.getTbody();\n if (!tbody) {\n return;\n }\n\n this.setRowsDraggable(tbody, true);\n\n this.cleanupListeners.push(\n this.renderer.listen(tbody, 'mousedown', (event: MouseEvent) => this.armDragFromHandle(event)),\n this.renderer.listen(tbody, 'dragstart', (event: DragEvent) => this.onDragStart(event)),\n this.renderer.listen(tbody, 'dragover', (event: DragEvent) => this.onDragOver(event, tbody)),\n this.renderer.listen(tbody, 'drop', (event: DragEvent) => this.onDrop(event)),\n this.renderer.listen(tbody, 'dragend', () => this.onDragEnd())\n );\n\n // Observer para detectar cambios en el DOM (filas agregadas/removidas)\n this.observer = new MutationObserver(() => this.setRowsDraggable(tbody, true));\n this.observer.observe(tbody, { childList: true });\n }\n\n private cleanupReorderBehavior(): void {\n this.cleanupListeners.forEach((dispose) => dispose());\n this.cleanupListeners = [];\n\n if (this.observer) {\n this.observer.disconnect();\n this.observer = undefined;\n }\n\n const tbody = this.getTbody();\n if (tbody) {\n this.setRowsDraggable(tbody, false);\n }\n\n this.draggedRow = null;\n }\n\n private getTbody(): HTMLTableSectionElement | null {\n return this.tableElement?.nativeElement.tBodies.item(0) ?? null;\n }\n\n private setRowsDraggable(tbody: HTMLTableSectionElement, enabled: boolean): void {\n const rows = Array.from(tbody.rows);\n rows.forEach((row) => {\n this.syncAutoDragHandle(row, enabled);\n row.draggable = false;\n if (!enabled) {\n delete row.dataset['dragging'];\n delete row.dataset['dragArmed'];\n }\n });\n }\n\n /**\n * Inserta un handle de drag automático si no existe uno custom\n */\n private syncAutoDragHandle(row: HTMLTableRowElement, enabled: boolean): void {\n const firstCell = row.cells.item(0);\n if (!firstCell) {\n return;\n }\n\n const existingAutoHandle = firstCell.querySelector('[data-auto-drag-handle]');\n if (!enabled) {\n existingAutoHandle?.remove();\n return;\n }\n\n const hasCustomHandle = !!firstCell.querySelector('[data-drag-handle],[data-slot=row-drag-handle],.row-drag-handle');\n if (hasCustomHandle || existingAutoHandle) {\n return;\n }\n\n // Crear handle automático\n const button = this.renderer.createElement('button') as HTMLButtonElement;\n this.renderer.setAttribute(button, 'type', 'button');\n this.renderer.setAttribute(button, 'aria-label', 'Drag row');\n this.renderer.setAttribute(button, 'data-auto-drag-handle', 'true');\n this.renderer.addClass(button, 'inline-flex');\n this.renderer.addClass(button, 'h-7');\n this.renderer.addClass(button, 'w-7');\n this.renderer.addClass(button, 'items-center');\n this.renderer.addClass(button, 'justify-center');\n this.renderer.addClass(button, 'cursor-grab');\n this.renderer.addClass(button, 'active:cursor-grabbing');\n this.renderer.addClass(button, 'text-muted-foreground');\n\n const dots = this.renderer.createElement('span');\n this.renderer.addClass(dots, 'text-sm');\n this.renderer.addClass(dots, 'leading-none');\n this.renderer.setProperty(dots, 'textContent', '⋮⋮');\n this.renderer.appendChild(button, dots);\n\n this.renderer.insertBefore(firstCell, button, firstCell.firstChild);\n }\n\n private onDragStart(event: DragEvent): void {\n const target = event.target as HTMLElement | null;\n const row = target?.closest('tr');\n if (!row) {\n return;\n }\n\n const handle = target?.closest(this.dragHandleSelector);\n const isArmed = row.dataset['dragArmed'] === 'true';\n if ((!handle || !row.contains(handle)) && !isArmed) {\n event.preventDefault();\n return;\n }\n\n this.draggedRow = row as HTMLTableRowElement;\n this.draggedRow.dataset['dragging'] = 'true';\n\n if (event.dataTransfer) {\n event.dataTransfer.effectAllowed = 'move';\n event.dataTransfer.setData('text/plain', '');\n }\n }\n\n private onDragOver(event: DragEvent, tbody: HTMLTableSectionElement): void {\n if (!this.draggedRow) {\n return;\n }\n\n event.preventDefault();\n const target = event.target as HTMLElement | null;\n const targetRow = target?.closest('tr') as HTMLTableRowElement | null;\n\n if (!targetRow || targetRow === this.draggedRow) {\n return;\n }\n\n const rect = targetRow.getBoundingClientRect();\n const shouldInsertBefore = event.clientY < rect.top + rect.height / 2;\n tbody.insertBefore(this.draggedRow, shouldInsertBefore ? targetRow : targetRow.nextSibling);\n }\n\n private onDrop(event: DragEvent): void {\n event.preventDefault();\n }\n\n private onDragEnd(): void {\n const tbody = this.getTbody();\n if (tbody) {\n Array.from(tbody.rows).forEach((row) => {\n row.draggable = false;\n delete row.dataset['dragArmed'];\n });\n }\n\n if (this.draggedRow) {\n delete this.draggedRow.dataset['dragging'];\n this.draggedRow = null;\n }\n\n if (!tbody) {\n return;\n }\n\n const order = Array.from(tbody.rows).map((row, index) => row.getAttribute('data-row-id') || String(index));\n this.rowOrderChange.emit(order);\n }\n\n private armDragFromHandle(event: MouseEvent): void {\n const target = event.target as HTMLElement | null;\n const handle = target?.closest(this.dragHandleSelector);\n if (!handle) {\n return;\n }\n\n const row = handle.closest('tr') as HTMLTableRowElement | null;\n if (!row) {\n return;\n }\n\n row.draggable = true;\n row.dataset['dragArmed'] = 'true';\n }\n}\n","<div [ngClass]=\"wrapperClasses\" [attr.data-slot]=\"variant === 'interactive' ? 'table-container' : null\">\n <table #tableElement [ngClass]=\"tableClasses\" [attr.data-slot]=\"variant === 'interactive' ? 'table' : null\">\n <ng-content></ng-content>\n </table>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { PdmOverlayOptions } from '../../overlay/pdm-overlay-options';\nimport { createFlexiblePositionStrategy } from '../../overlay/create-flexible-position-strategy';\nimport { Z_INDEX } from '../../utils/z-index';\n\nexport type PdmDropdownMenuVariant = 'default' | 'checkboxes' | 'radio-group';\n\nexport interface PdmMenuItem {\n type?: 'item' | 'label' | 'separator';\n label?: string;\n value?: string;\n shortcut?: string;\n disabled?: boolean;\n inset?: boolean;\n showChevron?: boolean;\n checked?: boolean;\n radioSelected?: boolean;\n}\n\n@Component({\n selector: 'pdm-dropdown-menu',\n templateUrl: './dropdown-menu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmDropdownMenuComponent implements OnDestroy {\n @Input() triggerText = 'Open';\n @Input() variant: PdmDropdownMenuVariant = 'default';\n @Input() items: PdmMenuItem[] = [];\n @Input() closeOnSelect = true;\n /**\n * Additional CSS classes applied to the trigger wrapper element.\n * Preserved for backward compatibility.\n */\n @Input() className = '';\n /**\n * Additional CSS classes applied to the overlay panel.\n * Backward-compatible: mapped to `overlayOptions.panelClass` when `overlayOptions` is not set.\n * When both are supplied, `overlayOptions.panelClass` takes precedence.\n */\n @Input() panelClassName = '';\n /**\n * Optional CDK OverlayConfig overrides.\n * Shallow-merged on top of component defaults — consumer always wins.\n * Providing `positionStrategy` or `scrollStrategy` replaces the component default entirely.\n */\n @Input() overlayOptions?: PdmOverlayOptions;\n\n @Output() itemSelect = new EventEmitter<string>();\n @Output() itemsChange = new EventEmitter<PdmMenuItem[]>();\n\n open = false;\n\n @ViewChild('triggerEl') private triggerRef?: ElementRef<HTMLElement>;\n @ViewChild('panelTemplate') private panelTemplateRef!: any;\n\n private overlayRef: OverlayRef | null = null;\n private backdropSub: Subscription | null = null;\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n private readonly cdr: ChangeDetectorRef,\n private readonly overlay: Overlay,\n private readonly viewContainerRef: ViewContainerRef\n ) {}\n\n ngOnDestroy(): void {\n this.destroyOverlay();\n }\n\n toggle(): void {\n if (this.open) {\n this.closePanel();\n } else {\n this.openPanel();\n }\n }\n\n get resolvedItems(): PdmMenuItem[] {\n if (this.items.length) {\n return this.items;\n }\n\n if (this.variant === 'checkboxes') {\n return [\n { type: 'label', label: 'Appearance' },\n { type: 'separator' },\n { type: 'item', label: 'Status Bar', value: 'status-bar', checked: true },\n { type: 'item', label: 'Activity Bar', value: 'activity-bar', checked: false },\n { type: 'item', label: 'Panel', value: 'panel', checked: false }\n ];\n }\n\n if (this.variant === 'radio-group') {\n return [\n { type: 'label', label: 'Panel Position' },\n { type: 'separator' },\n { type: 'item', label: 'Top', value: 'top', radioSelected: true },\n { type: 'item', label: 'Bottom', value: 'bottom', radioSelected: false },\n { type: 'item', label: 'Right', value: 'right', radioSelected: false }\n ];\n }\n\n return [\n { type: 'label', label: 'My Account', inset: true },\n { type: 'separator' },\n { type: 'item', label: 'Profile', value: 'profile', shortcut: '⇧⌘P' },\n { type: 'item', label: 'Billing', value: 'billing', shortcut: '⌘B' },\n { type: 'item', label: 'Settings', value: 'settings', shortcut: '⌘S' },\n { type: 'item', label: 'Keyboard shortcuts', value: 'shortcuts', shortcut: '⌘K' },\n { type: 'separator' },\n { type: 'item', label: 'Team', value: 'team' },\n { type: 'item', label: 'Invite users', value: 'invite', showChevron: true },\n { type: 'item', label: 'New Team', value: 'new-team', shortcut: '⌘+T' },\n { type: 'separator' },\n { type: 'item', label: 'GitHub', value: 'github' },\n { type: 'item', label: 'Support', value: 'support' },\n { type: 'item', label: 'API', value: 'api', disabled: true },\n { type: 'separator' },\n { type: 'item', label: 'Log out', value: 'logout', shortcut: '⇧⌘Q' }\n ];\n }\n\n select(item: PdmMenuItem): void {\n if (item.disabled || item.type === 'separator' || item.type === 'label' || !item.value) return;\n\n if (this.variant === 'checkboxes') {\n const updated = this.resolvedItems.map((entry) =>\n entry.value === item.value ? { ...entry, checked: !entry.checked } : entry\n );\n this.itemsChange.emit(updated);\n }\n\n if (this.variant === 'radio-group') {\n const updated = this.resolvedItems.map((entry) =>\n entry.type === 'item'\n ? { ...entry, radioSelected: entry.value === item.value }\n : entry\n );\n this.itemsChange.emit(updated);\n }\n\n this.itemSelect.emit(item.value);\n\n const shouldClose = this.variant === 'default' ? this.closeOnSelect : false;\n if (shouldClose) {\n this.closePanel();\n }\n }\n\n @HostListener('document:keydown.escape')\n onEsc(): void {\n if (this.open) {\n this.closePanel();\n }\n }\n\n private openPanel(): void {\n if (this.overlayRef) return;\n\n const triggerEl = this.triggerRef?.nativeElement;\n if (!triggerEl) return;\n\n this.open = true;\n this.cdr.markForCheck();\n\n const positionStrategy = createFlexiblePositionStrategy(\n this.overlay,\n triggerEl,\n 8\n );\n\n // Resolve panelClass: overlayOptions.panelClass wins; otherwise map panelClassName.\n const resolvedPanelClass = this.overlayOptions?.panelClass\n ?? (this.panelClassName ? [Z_INDEX.popover, this.panelClassName] : [Z_INDEX.popover]);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n // Consumer overrides are spread last — they win over every default above.\n ...this.overlayOptions,\n // panelClass always overrides last: it already merges panelClassName + overlayOptions.\n panelClass: resolvedPanelClass\n });\n\n const portal = new TemplatePortal(this.panelTemplateRef, this.viewContainerRef);\n this.overlayRef.attach(portal);\n\n this.backdropSub = this.overlayRef.outsidePointerEvents().subscribe((event) => {\n const target = event.target as Node;\n if (!triggerEl.contains(target)) {\n this.closePanel();\n }\n });\n\n this.cdr.markForCheck();\n }\n\n private closePanel(): void {\n if (!this.overlayRef) return;\n\n this.open = false;\n this.destroyOverlay();\n this.cdr.markForCheck();\n }\n\n private destroyOverlay(): void {\n if (this.backdropSub) {\n this.backdropSub.unsubscribe();\n this.backdropSub = null;\n }\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n}\n","<button\n #triggerEl\n type=\"button\"\n [ngClass]=\"[\n 'inline-flex h-9 appearance-none items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className\n ]\"\n [attr.aria-expanded]=\"open\"\n (click)=\"toggle()\"\n>\n {{ triggerText }}\n</button>\n\n<ng-template #panelTemplate>\n <div\n class=\"min-w-32 overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md\"\n >\n <ng-container *ngFor=\"let item of resolvedItems\">\n <div *ngIf=\"item.type === 'separator'\" class=\"-mx-1 my-1 h-px bg-muted\"></div>\n\n <div\n *ngIf=\"item.type === 'label'\"\n [ngClass]=\"['px-2 py-1.5 text-sm font-semibold text-foreground', item.inset ? 'pl-8' : '']\"\n >\n {{ item.label }}\n </div>\n\n <button\n *ngIf=\"!item.type || item.type === 'item'\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n [ngClass]=\"[\n 'relative flex w-full appearance-none cursor-default select-none items-center gap-2 rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm text-foreground outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground disabled:pointer-events-none disabled:opacity-50',\n item.inset ? 'pl-8' : ''\n ]\"\n (click)=\"select(item)\"\n >\n <span class=\"inline-flex h-4 w-4 shrink-0 items-center justify-center\">\n <svg\n *ngIf=\"item.checked\"\n viewBox=\"0 0 24 24\"\n class=\"h-3.5 w-3.5 text-foreground\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M5 12.5L9.2 16.7L19 7\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path>\n </svg>\n <span *ngIf=\"item.radioSelected\" class=\"h-2 w-2 rounded-full bg-foreground\"></span>\n </span>\n <span class=\"min-w-0 flex-1 truncate\">{{ item.label }}</span>\n <span *ngIf=\"item.shortcut\" class=\"text-xs text-muted-foreground\">{{ item.shortcut }}</span>\n <span *ngIf=\"item.showChevron\" class=\"text-sm text-muted-foreground\">›</span>\n </button>\n </ng-container>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { responsive } from '../../utils/responsive';\nimport { Z_INDEX } from '../../utils/z-index';\n\nexport type PdmDrawerPosition = 'bottom' | 'left' | 'right' | 'top';\nexport type PdmDrawerSize = 'sm' | 'md' | 'lg' | 'full';\n\n/**\n * @deprecated Use specific drawer types. Will be removed in v0.3.0\n */\nexport type PdmDrawerVariant = 'drawer' | 'responsive-dialog';\n\n/**\n * Drawer/Sheet component con soporte responsive\n * \n * MEJORADO en v0.2.0:\n * - Posicionamiento configurable (bottom, left, right, top)\n * - Tamaños predefinidos\n * - Responsive: bottom sheet en mobile, side panel en desktop\n * - Contenido genérico via ng-content\n * \n * @example\n * // Drawer simple desde el bottom\n * <pdm-drawer [open]=\"isOpen\" position=\"bottom\">\n * <h3>Title</h3>\n * <p>Content</p>\n * </pdm-drawer>\n * \n * @example\n * // Side panel desde la right\n * <pdm-drawer [open]=\"isOpen\" position=\"right\" size=\"md\">\n * <p>Content</p>\n * </pdm-drawer>\n */\n@Component({\n selector: 'pdm-drawer',\n templateUrl: './drawer.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmDrawerComponent {\n @Input() open = false;\n \n /**\n * Posición del drawer\n * - bottom: desde abajo (default, mejor para mobile)\n * - left: side panel desde izquierda\n * - right: side panel desde derecha\n * - top: desde arriba (poco común)\n */\n @Input() position: PdmDrawerPosition = 'bottom';\n \n /**\n * Tamaño del drawer\n * - sm: 400px (side) / 50vh (bottom/top)\n * - md: 500px (side) / 66vh (bottom/top) (default)\n * - lg: 640px (side) / 80vh (bottom/top)\n * - full: 100% ancho/alto\n */\n @Input() size: PdmDrawerSize = 'md';\n \n /**\n * @deprecated Use position=\"bottom\" instead\n */\n @Input() variant: PdmDrawerVariant = 'drawer';\n \n @Input() className = '';\n @Input() title = '';\n @Input() description = '';\n \n /**\n * Mostrar handle visual (línea para arrastrar)\n * Solo tiene sentido en position=\"bottom\"\n */\n @Input() showHandle = true;\n \n /**\n * Mostrar botón de cerrar\n */\n @Input() showCloseButton = true;\n \n @Input() closeOnEsc = true;\n @Input() closeOnBackdropClick = true;\n\n @Output() openChange = new EventEmitter<boolean>();\n\n // DEPRECATED: contenido específico que se movió a ng-content\n @Input() value: number | string = '';\n @Input() unit = '';\n @Input() decrementLabel = '-';\n @Input() incrementLabel = '+';\n @Input() primaryLabel = '';\n @Input() secondaryLabel = '';\n @Input() profileTitle = '';\n @Input() profileDescription = '';\n @Input() nameLabel = 'Name';\n @Input() nameValue = '';\n @Input() usernameLabel = 'Username';\n @Input() usernameValue = '';\n @Input() responsivePrimaryLabel = '';\n @Input() bars: number[] = [];\n @Output() primaryAction = new EventEmitter<void>();\n @Output() secondaryAction = new EventEmitter<void>();\n\n @HostListener('document:keydown.escape')\n onEsc(): void {\n if (this.open && this.closeOnEsc) {\n this.close();\n }\n }\n\n onBackdropClick(): void {\n if (this.closeOnBackdropClick) {\n this.close();\n }\n }\n\n close(): void {\n this.openChange.emit(false);\n }\n\n onPrimaryAction(): void {\n this.primaryAction.emit();\n }\n\n onSecondaryAction(): void {\n this.secondaryAction.emit();\n }\n\n get containerClassName(): string {\n return `fixed inset-0 ${Z_INDEX.drawer} ${this.className}`;\n }\n\n get panelClassName(): string {\n const base = [\n 'absolute',\n 'bg-background',\n 'border',\n 'border-border',\n 'shadow-lg',\n 'overflow-auto'\n ];\n\n // Posicionamiento\n const positionClasses = this.getPositionClasses();\n \n // Tamaño\n const sizeClasses = this.getSizeClasses();\n\n return [...base, ...positionClasses, ...sizeClasses].filter(Boolean).join(' ');\n }\n\n private getPositionClasses(): string[] {\n const map: Record<PdmDrawerPosition, string[]> = {\n bottom: ['inset-x-0', 'bottom-0', 'rounded-t-xl'],\n top: ['inset-x-0', 'top-0', 'rounded-b-xl'],\n left: ['inset-y-0', 'left-0', 'rounded-r-xl'],\n right: ['inset-y-0', 'right-0', 'rounded-l-xl']\n };\n\n return map[this.position] || map.bottom;\n }\n\n private getSizeClasses(): string[] {\n const isVertical = this.position === 'bottom' || this.position === 'top';\n \n if (this.size === 'full') {\n return ['w-full', 'h-full'];\n }\n\n const sizeMap = {\n sm: isVertical ? 'max-h-[50vh]' : 'max-w-[400px]',\n md: isVertical ? 'max-h-[66vh]' : 'max-w-[500px]',\n lg: isVertical ? 'max-h-[80vh]' : 'max-w-[640px]'\n };\n\n const maxDimension = sizeMap[this.size] || sizeMap.md;\n\n if (isVertical) {\n return ['w-full', maxDimension];\n } else {\n return ['h-full', maxDimension];\n }\n }\n\n get showLegacyContent(): boolean {\n // Mostrar contenido legacy si variant está siendo usado\n return this.variant === 'drawer' || this.variant === 'responsive-dialog';\n }\n}\n","<div *ngIf=\"open\" [ngClass]=\"containerClassName\">\n <!-- Backdrop -->\n <div class=\"absolute inset-0 bg-foreground/30 backdrop-blur-sm\" (click)=\"onBackdropClick()\"></div>\n\n <!-- Panel -->\n <section [ngClass]=\"panelClassName\">\n <!-- Handle visual (solo para bottom) -->\n <div \n *ngIf=\"showHandle && position === 'bottom'\" \n class=\"mx-auto mb-4 mt-2 h-1 w-10 rounded-full bg-border\">\n </div>\n\n <!-- Header (opcional) -->\n <div *ngIf=\"title || description || showCloseButton\" class=\"flex items-start justify-between gap-4 p-6 pb-4\">\n <div *ngIf=\"title || description\" class=\"flex-1 min-w-0\">\n <h3 *ngIf=\"title\" class=\"m-0 text-lg font-semibold leading-none tracking-tight text-foreground\">\n {{ title }}\n </h3>\n <p *ngIf=\"description\" class=\"m-0 mt-1 text-sm text-muted-foreground\">\n {{ description }}\n </p>\n </div>\n \n <button\n *ngIf=\"showCloseButton\"\n type=\"button\"\n class=\"inline-flex h-6 w-6 flex-shrink-0 appearance-none items-center justify-center rounded-sm border-0 bg-transparent p-0 text-foreground opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n (click)=\"close()\"\n aria-label=\"Close drawer\"\n >\n <svg viewBox=\"0 0 24 24\" class=\"h-4 w-4\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M6 6L18 18M18 6L6 18\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n </svg>\n </button>\n </div>\n\n <!-- Content -->\n <div class=\"px-6 pb-6\">\n <!-- Contenido genérico -->\n <ng-container *ngIf=\"!showLegacyContent\">\n <ng-content></ng-content>\n </ng-container>\n\n <!-- LEGACY: contenido específico hardcodeado (backward compatibility) -->\n <ng-container *ngIf=\"showLegacyContent\">\n <!-- Variant: drawer -->\n <div *ngIf=\"variant === 'drawer'\" class=\"mx-auto flex max-w-sm flex-col items-center\">\n <div *ngIf=\"value !== ''\" class=\"mt-3 flex w-full items-center justify-center gap-4\">\n <button type=\"button\" class=\"inline-flex h-6 w-6 appearance-none items-center justify-center rounded-full border border-border bg-transparent p-0 text-muted-foreground\">{{ decrementLabel }}</button>\n <div class=\"text-center\">\n <div class=\"text-5xl font-semibold leading-none text-foreground\">{{ value }}</div>\n <div *ngIf=\"unit\" class=\"mt-1 text-xs tracking-wide text-muted-foreground\">{{ unit }}</div>\n </div>\n <button type=\"button\" class=\"inline-flex h-6 w-6 appearance-none items-center justify-center rounded-full border border-border bg-transparent p-0 text-muted-foreground\">{{ incrementLabel }}</button>\n </div>\n\n <div *ngIf=\"bars.length\" class=\"mt-3 flex h-14 w-full items-end gap-1\">\n <div *ngFor=\"let bar of bars\" class=\"flex-1 bg-foreground\" [style.height.px]=\"bar\"></div>\n </div>\n\n <button *ngIf=\"primaryLabel\" type=\"button\" class=\"mt-3 h-9 w-full appearance-none rounded-md bg-primary text-sm font-medium text-primary-foreground\" (click)=\"onPrimaryAction()\">{{ primaryLabel }}</button>\n <button *ngIf=\"secondaryLabel\" type=\"button\" class=\"mt-2 h-9 w-full appearance-none rounded-md border border-input bg-background text-sm font-medium text-foreground\" (click)=\"onSecondaryAction()\">{{ secondaryLabel }}</button>\n </div>\n\n <!-- Variant: responsive-dialog -->\n <div *ngIf=\"variant === 'responsive-dialog'\" class=\"flex flex-col gap-3\">\n <div *ngIf=\"nameLabel && nameValue\">\n <label class=\"mb-1 block text-xs font-medium text-foreground\">{{ nameLabel }}</label>\n <div class=\"h-8 rounded-md border border-border bg-background px-2 py-1 text-xs text-foreground\">{{ nameValue }}</div>\n </div>\n <div *ngIf=\"usernameLabel && usernameValue\">\n <label class=\"mb-1 block text-xs font-medium text-foreground\">{{ usernameLabel }}</label>\n <div class=\"h-8 rounded-md border border-border bg-background px-2 py-1 text-xs text-foreground\">{{ usernameValue }}</div>\n </div>\n\n <button *ngIf=\"responsivePrimaryLabel\" type=\"button\" class=\"mt-3 h-8 w-full appearance-none rounded-md bg-primary text-xs font-medium text-primary-foreground\" (click)=\"onPrimaryAction()\">{{ responsivePrimaryLabel }}</button>\n </div>\n </ng-container>\n </div>\n </section>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmEmptyVariant = 'default' | 'outline' | 'background';\n\n@Component({\n selector: 'pdm-empty',\n templateUrl: './empty.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmEmptyComponent {\n @Input() variant: PdmEmptyVariant = 'default';\n @Input() title = 'No Projects Yet';\n @Input() description = \"You haven't created any projects yet. Get started by creating your first project.\";\n @Input() iconName = 'folder';\n @Input() primaryActionLabel = '';\n @Input() secondaryActionLabel = '';\n @Input() linkLabel = '';\n @Input() className = '';\n\n @Output() primaryAction = new EventEmitter<void>();\n @Output() secondaryAction = new EventEmitter<void>();\n @Output() linkAction = new EventEmitter<void>();\n\n get containerClass(): string {\n if (this.variant === 'outline') {\n return 'border border-dashed border-border rounded-[12px]';\n }\n\n if (this.variant === 'background') {\n return 'rounded-[12px] bg-muted';\n }\n\n return '';\n }\n}\n","<section [ngClass]=\"['flex flex-col items-center justify-center gap-4 px-6 py-10 text-center text-foreground', containerClass, className]\">\n <div class=\"flex h-10 w-10 items-center justify-center rounded-lg bg-muted text-muted-foreground\">\n <pdm-icon [name]=\"iconName\" [size]=\"20\"></pdm-icon>\n </div>\n\n <div class=\"space-y-2\">\n <h3 class=\"m-0 text-2xl font-semibold leading-none tracking-tight\">{{ title }}</h3>\n <p class=\"m-0 mx-auto max-w-md text-sm leading-relaxed text-muted-foreground\">\n {{ description }}\n </p>\n </div>\n\n <div *ngIf=\"primaryActionLabel || secondaryActionLabel\" class=\"mt-1 flex flex-wrap items-center justify-center gap-3\">\n <pdm-button *ngIf=\"primaryActionLabel\" variant=\"default\" (pressed)=\"primaryAction.emit()\">{{ primaryActionLabel }}</pdm-button>\n <pdm-button *ngIf=\"secondaryActionLabel\" variant=\"outline\" (pressed)=\"secondaryAction.emit()\">{{ secondaryActionLabel }}</pdm-button>\n </div>\n\n <button\n *ngIf=\"linkLabel\"\n type=\"button\"\n class=\"mt-1 inline-flex appearance-none items-center gap-2 border-0 bg-transparent p-0 text-sm font-medium text-muted-foreground underline-offset-4 hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n (click)=\"linkAction.emit()\"\n >\n <span>{{ linkLabel }}</span>\n <pdm-icon name=\"arrow-up-right\" [size]=\"16\"></pdm-icon>\n </button>\n\n <ng-content></ng-content>\n</section>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmFieldOrientation = 'vertical' | 'horizontal';\nexport type PdmFieldDescriptionPosition = 'before' | 'after';\n\n@Component({\n selector: 'pdm-field',\n templateUrl: './field.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmFieldComponent {\n @Input() id = '';\n @Input() label = '';\n @Input() description = '';\n @Input() error = '';\n @Input() required = false;\n @Input() disabled = false;\n @Input() invalid = false;\n @Input() orientation: PdmFieldOrientation = 'vertical';\n @Input() descriptionPosition: PdmFieldDescriptionPosition = 'after';\n @Input() className = '';\n @Input() labelClassName = '';\n @Input() controlClassName = '';\n\n get rootClass(): string {\n return this.orientation === 'horizontal'\n ? 'grid items-start gap-3 sm:grid-cols-[200px_minmax(0,1fr)] sm:gap-4'\n : 'grid w-full gap-3';\n }\n\n get isHorizontal(): boolean {\n return this.orientation === 'horizontal';\n }\n\n get showDescriptionBeforeControl(): boolean {\n return !this.isHorizontal && this.descriptionPosition === 'before' && !!this.description && !this.invalid;\n }\n\n get showDescriptionAfterControl(): boolean {\n return !this.isHorizontal && !this.showDescriptionBeforeControl && !!this.description && !this.invalid;\n }\n}\n","<div [ngClass]=\"[rootClass, className]\">\n <div [ngClass]=\"[isHorizontal ? 'grid gap-1.5' : 'grid gap-0']\">\n <label\n *ngIf=\"label\"\n [attr.for]=\"id\"\n [ngClass]=\"[\n 'text-sm font-medium leading-none',\n disabled ? 'opacity-70' : '',\n invalid ? 'text-destructive' : 'text-foreground',\n labelClassName\n ]\"\n >\n {{ label }}\n <span *ngIf=\"required\" class=\"text-destructive\">*</span>\n </label>\n\n <p *ngIf=\"isHorizontal && description && !invalid\" class=\"m-0 text-sm text-muted-foreground\">{{ description }}</p>\n <p *ngIf=\"isHorizontal && invalid && error\" class=\"m-0 text-sm text-destructive\">{{ error }}</p>\n </div>\n\n <div [ngClass]=\"['grid gap-3', controlClassName]\">\n <p *ngIf=\"showDescriptionBeforeControl\" class=\"m-0 text-sm text-muted-foreground\">{{ description }}</p>\n\n <ng-content></ng-content>\n <ng-content select=\"[pdmFieldControl]\"></ng-content>\n\n <p *ngIf=\"showDescriptionAfterControl\" class=\"m-0 text-sm text-muted-foreground\">{{ description }}</p>\n <p *ngIf=\"!isHorizontal && invalid && error\" class=\"m-0 text-sm text-destructive\">{{ error }}</p>\n <ng-content select=\"[pdmFieldDescription]\"></ng-content>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport type PdmHoverCardSide = 'top' | 'right' | 'bottom' | 'left';\nexport type PdmHoverCardAlign = 'start' | 'center' | 'end';\n\n@Component({\n selector: 'pdm-hover-card',\n templateUrl: './hover-card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmHoverCardComponent {\n @Input() className = '';\n @Input() panelClassName = '';\n @Input() side: PdmHoverCardSide = 'bottom';\n @Input() align: PdmHoverCardAlign = 'start';\n @Input() panelWidth = 304;\n\n open = false;\n\n get positionClass(): string {\n const sideClassMap: Record<PdmHoverCardSide, string> = {\n top: 'bottom-full mb-2',\n right: 'left-full ml-2',\n bottom: 'top-full mt-2',\n left: 'right-full mr-2'\n };\n\n const alignClassMap: Record<PdmHoverCardAlign, string> = {\n start: this.side === 'top' || this.side === 'bottom' ? 'left-0' : 'top-0',\n center: this.side === 'top' || this.side === 'bottom' ? 'left-1/2 -translate-x-1/2' : 'top-1/2 -translate-y-1/2',\n end: this.side === 'top' || this.side === 'bottom' ? 'right-0' : 'bottom-0'\n };\n\n return `${sideClassMap[this.side]} ${alignClassMap[this.align]}`;\n }\n}\n","<div\n class=\"relative inline-flex\"\n [ngClass]=\"className\"\n (mouseenter)=\"open = true\"\n (mouseleave)=\"open = false\"\n (focusin)=\"open = true\"\n (focusout)=\"open = false\"\n>\n <div>\n <ng-content select=\"[pdmHoverTrigger]\"></ng-content>\n </div>\n\n <section\n *ngIf=\"open\"\n [style.width.px]=\"panelWidth\"\n [ngClass]=\"[\n 'absolute z-[70] rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md',\n positionClass,\n panelClassName\n ]\"\n >\n <ng-content select=\"[pdmHoverContent]\"></ng-content>\n </section>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-item',\n templateUrl: './item.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmItemComponent {\n @Input() className = '';\n @Input() disabled = false;\n @Input() selected = false;\n}\n","<div\n [ngClass]=\"[\n 'relative flex w-full select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors',\n selected ? 'bg-accent text-accent-foreground' : 'text-foreground',\n disabled ? 'pointer-events-none opacity-50' : 'hover:bg-accent hover:text-accent-foreground',\n className\n ]\"\n>\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmInputSize = 'mini' | 'small' | 'regular' | 'large';\nexport type PdmInputRoundness = 'default' | 'round';\n\n@Component({\n selector: 'pdm-input',\n templateUrl: './input.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmInputComponent {\n @Input() id = '';\n @Input() type = 'text';\n @Input() value = '';\n @Input() placeholder = '';\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() required = false;\n @Input() invalid = false;\n @Input() size: PdmInputSize = 'regular';\n @Input() roundness: PdmInputRoundness = 'default';\n @Input() className = '';\n @Input() inputClassName = '';\n @Input() label = '';\n @Input() helperText = '';\n @Input() errorText = '';\n\n @Output() valueChange = new EventEmitter<string>();\n @Output() blurred = new EventEmitter<FocusEvent>();\n\n onInput(event: Event): void {\n this.valueChange.emit((event.target as HTMLInputElement).value);\n }\n\n onBlur(event: FocusEvent): void {\n this.blurred.emit(event);\n }\n}\n","<div [ngClass]=\"['grid w-full gap-3', className]\">\n <label\n *ngIf=\"label\"\n [attr.for]=\"id\"\n [ngClass]=\"[\n 'text-sm font-medium leading-none',\n invalid ? 'text-destructive' : 'text-foreground'\n ]\"\n >{{ label }}</label\n >\n <input\n [id]=\"id\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive aria-invalid:placeholder:text-destructive/70 placeholder:text-muted-foreground w-full min-w-0 rounded-lg border bg-transparent px-3 py-1 text-sm shadow-sm transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n size === 'large' ? 'h-10 px-4 text-sm' : '',\n size === 'regular' ? 'h-9 px-3 text-sm' : '',\n size === 'small' ? 'h-8 px-2 text-sm' : '',\n size === 'mini' ? 'h-6 px-1.5 text-xs' : '',\n roundness === 'round' ? 'rounded-full' : 'rounded-lg',\n type === 'file' ? 'text-sm' : 'text-foreground',\n inputClassName,\n ]\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n />\n <p *ngIf=\"!invalid && helperText\" class=\"m-0 text-sm text-muted-foreground\">\n {{ helperText }}\n </p>\n <p *ngIf=\"invalid && errorText\" class=\"m-0 text-sm text-destructive\">\n {{ errorText }}\n </p>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { PdmInputRoundness, PdmInputSize } from '../input/input.component';\n\n@Component({\n selector: 'pdm-input-password',\n templateUrl: './input-password.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmInputPasswordComponent {\n @Input() id = '';\n @Input() value = '';\n @Input() placeholder = '';\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() required = false;\n @Input() invalid = false;\n @Input() size: PdmInputSize = 'regular';\n @Input() roundness: PdmInputRoundness = 'default';\n @Input() className = '';\n @Input() inputClassName = '';\n @Input() label = '';\n @Input() helperText = '';\n @Input() errorText = '';\n\n @Output() valueChange = new EventEmitter<string>();\n @Output() blurred = new EventEmitter<FocusEvent>();\n\n showPassword = false;\n\n get inputType(): 'text' | 'password' {\n return this.showPassword ? 'text' : 'password';\n }\n\n onInput(event: Event): void {\n this.valueChange.emit((event.target as HTMLInputElement).value);\n }\n\n onBlur(event: FocusEvent): void {\n this.blurred.emit(event);\n }\n\n toggleVisibility(): void {\n if (this.disabled) {\n return;\n }\n\n this.showPassword = !this.showPassword;\n }\n}\n","<div [ngClass]=\"['grid w-full gap-3', className]\">\n <label\n *ngIf=\"label\"\n [attr.for]=\"id\"\n [ngClass]=\"[\n 'text-sm font-medium leading-none',\n invalid ? 'text-destructive' : 'text-foreground'\n ]\"\n >{{ label }}</label>\n <div class=\"relative\">\n <input\n [id]=\"id\"\n [type]=\"inputType\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive aria-invalid:placeholder:text-destructive/70 file:text-foreground placeholder:text-muted-foreground w-full min-w-0 rounded-lg border bg-transparent px-3 py-1 pr-10 text-sm shadow-sm transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50',\n size === 'large' ? 'h-10 px-4 text-sm' : '',\n size === 'regular' ? 'h-9 px-3 text-sm' : '',\n size === 'small' ? 'h-8 px-2 text-sm' : '',\n size === 'mini' ? 'h-6 px-1.5 text-xs' : '',\n roundness === 'round' ? 'rounded-full' : 'rounded-lg',\n 'text-foreground',\n inputClassName\n ]\"\n (input)=\"onInput($event)\"\n (blur)=\"onBlur($event)\"\n />\n <button\n type=\"button\"\n class=\"absolute right-2 top-1/2 inline-flex h-6 w-6 -translate-y-1/2 items-center justify-center rounded border-0 bg-transparent p-0 text-muted-foreground outline-none transition-colors hover:text-foreground focus:outline-none focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-60\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"showPassword ? 'Hide password' : 'Show password'\"\n (click)=\"toggleVisibility()\"\n >\n <svg\n *ngIf=\"!showPassword\"\n aria-hidden=\"true\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"h-4 w-4\"\n >\n <path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\"></path>\n <circle cx=\"12\" cy=\"12\" r=\"3\"></circle>\n </svg>\n <svg\n *ngIf=\"showPassword\"\n aria-hidden=\"true\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"h-4 w-4\"\n >\n <path d=\"M3 3l18 18\"></path>\n <path d=\"M10.58 10.58a2 2 0 1 0 2.83 2.83\"></path>\n <path d=\"M9.88 5.09A10.94 10.94 0 0 1 12 4.91c5.05 0 9.27 3.11 10.6 7.09a1 1 0 0 1 0 .64 11.9 11.9 0 0 1-1.84 3.2\"></path>\n <path d=\"M6.61 6.61A11.81 11.81 0 0 0 1.4 12a1 1 0 0 0 0 .64 11.83 11.83 0 0 0 8.79 7.54\"></path>\n </svg>\n </button>\n </div>\n <p *ngIf=\"!invalid && helperText\" class=\"m-0 text-sm text-muted-foreground\">{{ helperText }}</p>\n <p *ngIf=\"invalid && errorText\" class=\"m-0 text-sm text-destructive\">{{ errorText }}</p>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'pdm-input-group',\n templateUrl: './input-group.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmInputGroupComponent {\n @Input() id = '';\n @Input() type = 'text';\n @Input() value = '';\n @Input() placeholder = '';\n @Input() disabled = false;\n @Input() invalid = false;\n @Input() prefixText = '';\n @Input() suffixText = '';\n @Input() prefixIcon = '';\n @Input() suffixIcon = '';\n @Input() buttonText = '';\n @Input() className = '';\n\n @Output() valueChange = new EventEmitter<string>();\n @Output() buttonClick = new EventEmitter<MouseEvent>();\n\n onInput(event: Event): void {\n this.valueChange.emit((event.target as HTMLInputElement).value);\n }\n\n onButtonClick(event: MouseEvent): void {\n this.buttonClick.emit(event);\n }\n}\n","<div\n [ngClass]=\"[\n 'flex w-full items-center gap-2',\n disabled ? 'opacity-50' : '',\n className\n ]\"\n>\n <div\n [ngClass]=\"[\n 'flex h-9 min-w-0 flex-1 items-center overflow-hidden rounded-md border border-input bg-transparent px-3 py-1 text-sm text-foreground shadow-sm transition-colors focus-within:border-ring focus-within:ring-2 focus-within:ring-ring/50',\n invalid ? 'border-destructive focus-within:ring-destructive' : '',\n disabled ? 'cursor-not-allowed' : ''\n ]\"\n >\n <div\n *ngIf=\"prefixText || prefixIcon\"\n class=\"inline-flex h-full shrink-0 items-center gap-2 pr-2 text-sm text-muted-foreground\"\n >\n <pdm-icon *ngIf=\"prefixIcon\" [name]=\"prefixIcon\" [size]=\"16\"></pdm-icon>\n <span *ngIf=\"prefixText\">{{ prefixText }}</span>\n <ng-content select=\"[pdmInputGroupPrefix]\"></ng-content>\n </div>\n\n <input\n [id]=\"id\"\n [type]=\"type\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"[\n 'h-full min-w-0 flex-1 border-0 bg-transparent p-0 text-sm text-foreground outline-none placeholder:text-muted-foreground aria-invalid:placeholder:text-destructive/70',\n type === 'file' ? 'text-sm file:mr-2 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground' : ''\n ]\"\n (input)=\"onInput($event)\"\n />\n\n <div\n *ngIf=\"!buttonText && (suffixText || suffixIcon)\"\n class=\"inline-flex h-full shrink-0 items-center gap-2 pl-2 text-sm text-muted-foreground\"\n >\n <pdm-icon *ngIf=\"suffixIcon\" [name]=\"suffixIcon\" [size]=\"16\"></pdm-icon>\n <span *ngIf=\"suffixText\" class=\"font-medium\">{{ suffixText }}</span>\n <ng-content select=\"[pdmInputGroupSuffix]\"></ng-content>\n </div>\n </div>\n\n <button\n *ngIf=\"buttonText\"\n type=\"button\"\n [disabled]=\"disabled\"\n class=\"inline-flex h-9 shrink-0 appearance-none items-center justify-center rounded-md border border-input bg-background px-4 py-2 text-sm font-medium text-foreground shadow-sm outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring/50 disabled:cursor-not-allowed\"\n (click)=\"onButtonClick($event)\"\n >\n {{ buttonText }}\n </button>\n</div>\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, Input, Output, QueryList, ViewChildren } from '@angular/core';\n\n@Component({\n selector: 'pdm-input-otp',\n templateUrl: './input-otp.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmInputOtpComponent {\n @Input() length = 6;\n @Input() groupSize = 3;\n @Input() disabled = false;\n @Input() invalid = false;\n @Input() className = '';\n\n @Output() valueChange = new EventEmitter<string>();\n @Output() completed = new EventEmitter<string>();\n\n @ViewChildren('otpInput') private readonly inputs?: QueryList<ElementRef<HTMLInputElement>>;\n\n values: string[] = Array.from({ length: this.length }, () => '');\n\n ngOnChanges(): void {\n if (this.values.length !== this.length) {\n this.values = Array.from({ length: this.length }, (_, index) => this.values[index] ?? '');\n }\n }\n\n trackByIndex(index: number): number {\n return index;\n }\n\n onInput(index: number, event: Event): void {\n const input = event.target as HTMLInputElement;\n const char = (input.value || '').replace(/\\D+/g, '').slice(-1);\n\n this.values[index] = char;\n input.value = char;\n this.emit();\n\n if (char) {\n this.focusInput(index + 1, true);\n }\n }\n\n onKeyDown(index: number, event: KeyboardEvent): void {\n if (event.key === 'Backspace' && !this.values[index]) {\n this.focusInput(index - 1);\n return;\n }\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n this.focusInput(index - 1);\n return;\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n this.focusInput(index + 1);\n }\n }\n\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n\n const pastedText = (event.clipboardData?.getData('text') ?? '').replace(/\\D+/g, '').slice(0, this.length);\n\n if (!pastedText) {\n return;\n }\n\n this.values = Array.from({ length: this.length }, (_, index) => pastedText[index] ?? '');\n this.emit();\n\n const nextIndex = Math.min(pastedText.length, this.length - 1);\n this.focusInput(nextIndex);\n }\n\n getInputClasses(index: number): string {\n const classes = [\n 'h-9 w-9 appearance-none border bg-background text-center text-sm font-normal text-foreground outline-none transition focus:outline-none focus-visible:outline-none',\n 'shadow-sm',\n 'focus:border-input focus:ring-1 focus:ring-primary/30',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n ];\n\n if (this.invalid) {\n classes.push('border-destructive focus:border-destructive focus:ring-destructive');\n } else {\n classes.push('border-input');\n }\n\n if (this.isGroupStart(index)) {\n classes.push('rounded-l-md border-l');\n } else {\n classes.push('border-l-0');\n }\n\n if (this.isGroupEnd(index)) {\n classes.push('rounded-r-md');\n }\n\n return classes.join(' ');\n }\n\n shouldShowSeparator(index: number): boolean {\n return this.groupSize > 0 && (index + 1) % this.groupSize === 0 && index < this.length - 1;\n }\n\n private isGroupStart(index: number): boolean {\n return this.groupSize <= 0 || index % this.groupSize === 0;\n }\n\n private isGroupEnd(index: number): boolean {\n if (this.groupSize <= 0) {\n return index === this.length - 1;\n }\n return (index + 1) % this.groupSize === 0 || index === this.length - 1;\n }\n\n private emit(): void {\n const value = this.values.join('');\n this.valueChange.emit(value);\n\n if (value.length === this.length && !this.values.includes('')) {\n this.completed.emit(value);\n }\n }\n\n private focusInput(index: number, deferred = false): void {\n if (deferred) {\n requestAnimationFrame(() => this.focusInput(index, false));\n return;\n }\n\n if (!this.inputs || index < 0 || index >= this.length) {\n return;\n }\n\n const input = this.inputs.get(index)?.nativeElement;\n if (input) {\n input.focus();\n input.select();\n }\n }\n}\n","<div [ngClass]=\"['inline-flex items-center justify-center', className]\" (paste)=\"onPaste($event)\">\n <ng-container *ngFor=\"let value of values; let index = index; trackBy: trackByIndex\">\n <input\n #otpInput\n [class]=\"getInputClasses(index)\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n inputmode=\"numeric\"\n maxlength=\"1\"\n [attr.name]=\"'otp-digit-' + index\"\n autocomplete=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-label]=\"'OTP digit ' + (index + 1)\"\n (input)=\"onInput(index, $event)\"\n (keydown)=\"onKeyDown(index, $event)\"\n />\n <span\n *ngIf=\"shouldShowSeparator(index)\"\n class=\"mx-2 mt-[-1px] h-px w-6 bg-foreground opacity-80\"\n aria-hidden=\"true\"\n ></span>\n </ng-container>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-kbd',\n templateUrl: './kbd.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmKbdComponent {\n @Input() className = '';\n}\n","<kbd [ngClass]=\"['inline-flex h-6 min-w-6 items-center justify-center rounded-md border border-border bg-muted px-1.5 font-mono text-xs font-medium text-muted-foreground', className]\">\n <ng-content></ng-content>\n</kbd>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output\n} from '@angular/core';\nimport { PdmMenuItem } from '../dropdown-menu/dropdown-menu.component';\n\nexport interface PdmMenubarItem {\n label: string;\n items: PdmMenuItem[];\n}\n\n@Component({\n selector: 'pdm-menubar',\n templateUrl: './menubar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmMenubarComponent implements OnInit, OnDestroy {\n @Input() menus: PdmMenubarItem[] = [];\n @Input() className = '';\n @Output() itemSelect = new EventEmitter<string>();\n\n openIndex = -1;\n\n private boundPointerDown!: (event: PointerEvent) => void;\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n this.boundPointerDown = (event: PointerEvent) => this.onDocumentPointerDown(event);\n document.addEventListener('pointerdown', this.boundPointerDown, { capture: true });\n }\n\n ngOnDestroy(): void {\n if (this.boundPointerDown) {\n document.removeEventListener('pointerdown', this.boundPointerDown, { capture: true });\n }\n }\n\n @HostListener('document:keydown.escape')\n onEsc(): void {\n if (this.openIndex >= 0) {\n this.openIndex = -1;\n this.cdr.markForCheck();\n }\n }\n\n toggle(index: number): void {\n this.openIndex = this.openIndex === index ? -1 : index;\n }\n\n select(value: string): void {\n this.itemSelect.emit(value);\n this.openIndex = -1;\n }\n\n selectItem(item: PdmMenuItem): void {\n if (item.disabled || !item.value) {\n return;\n }\n\n this.select(item.value);\n }\n\n private onDocumentPointerDown(event: PointerEvent): void {\n if (this.openIndex < 0) return;\n\n const target = event.target as Node | null;\n if (!target) return;\n\n if (!this.elementRef.nativeElement.contains(target)) {\n this.openIndex = -1;\n this.cdr.markForCheck();\n }\n }\n}\n","<nav role=\"menubar\" [ngClass]=\"['inline-flex h-9 items-center gap-0.5 rounded-md border border-border bg-background p-1 shadow-sm', className]\">\n <div *ngFor=\"let menu of menus; let i = index\" class=\"relative\">\n <button type=\"button\" class=\"inline-flex h-7 appearance-none items-center rounded-sm border-0 bg-transparent px-3 text-sm text-foreground hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\" (click)=\"toggle(i)\">{{ menu.label }}</button>\n <div *ngIf=\"openIndex === i\" class=\"absolute left-0 top-full z-[70] mt-1 min-w-40 rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md sm:min-w-48\">\n <button\n *ngFor=\"let item of menu.items\"\n type=\"button\"\n [disabled]=\"item.disabled || !item.value\"\n class=\"relative flex w-full appearance-none cursor-default select-none items-center rounded-sm border-0 bg-transparent px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground disabled:pointer-events-none disabled:opacity-50\"\n (click)=\"selectItem(item)\"\n >\n {{ item.label }}\n </button>\n </div>\n </div>\n</nav>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface PdmNativeSelectOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'pdm-native-select',\n templateUrl: './native-select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmNativeSelectComponent {\n @Input() id = '';\n @Input() value = '';\n @Input() disabled = false;\n @Input() invalid = false;\n @Input() options: PdmNativeSelectOption[] = [];\n @Input() placeholder = 'Select an option';\n @Input() className = '';\n\n @Output() valueChange = new EventEmitter<string>();\n\n onChange(event: Event): void {\n this.valueChange.emit((event.target as HTMLSelectElement).value);\n }\n}\n","<div class=\"relative\" [ngClass]=\"className\">\n <select\n [id]=\"id\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n (change)=\"onChange($event)\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive aria-invalid:placeholder:text-destructive/70 flex h-9 w-full appearance-none rounded-md border bg-transparent px-3 py-2 pr-9 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50'\n ]\"\n >\n <option value=\"\" disabled>{{ placeholder }}</option>\n <option *ngFor=\"let option of options\" [value]=\"option.value\" [disabled]=\"option.disabled\">{{ option.label }}</option>\n </select>\n <pdm-icon className=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-muted-foreground\" name=\"chevron-down\" [size]=\"16\"></pdm-icon>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport interface PdmNavigationItem {\n label: string;\n href?: string;\n active?: boolean;\n}\n\nexport type PdmNavigationMobileMode = 'scroll' | 'compact';\n\n/**\n * Navigation Menu component - Navegación horizontal responsive\n * \n * MEJORAS en v0.2.0:\n * - Modo scroll: overflow-x-auto con scroll indicators en mobile\n * - Modo compact: items abreviados en mobile, completos en desktop\n * - Scroll smooth automático al item activo\n * \n * @example\n * <!-- Scroll horizontal (default) -->\n * <pdm-navigation-menu [items]=\"navItems\"></pdm-navigation-menu>\n * \n * <!-- Compact mode -->\n * <pdm-navigation-menu [items]=\"navItems\" mobileMode=\"compact\"></pdm-navigation-menu>\n */\n@Component({\n selector: 'pdm-navigation-menu',\n templateUrl: './navigation-menu.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmNavigationMenuComponent {\n @Input() items: PdmNavigationItem[] = [];\n @Input() className = '';\n \n /**\n * Mobile behavior: 'scroll' (horizontal scroll) o 'compact' (items reducidos)\n * @default 'scroll'\n */\n @Input() mobileMode: PdmNavigationMobileMode = 'scroll';\n}\n","<nav\n [ngClass]=\"[\n 'relative z-10 flex w-full items-center',\n mobileMode === 'scroll' ? 'overflow-x-auto scrollbar-thin' : '',\n className\n ]\"\n>\n <ul\n [ngClass]=\"[\n 'group flex list-none items-center gap-1',\n mobileMode === 'scroll' ? 'flex-nowrap' : 'flex-wrap justify-center'\n ]\"\n >\n <li *ngFor=\"let item of items\">\n <a\n [href]=\"item.href || '#'\"\n [ngClass]=\"[\n 'group inline-flex h-9 items-center justify-center rounded-md px-3 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 whitespace-nowrap',\n item.active ? 'bg-accent text-accent-foreground' : 'text-foreground'\n ]\"\n >\n {{ item.label }}\n </a>\n </li>\n </ul>\n</nav>\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n PLATFORM_ID\n} from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * Emits `(pdmOutsideClick)` whenever a `pointerdown` event fires outside the host element.\n *\n * Uses the CAPTURE phase so it intercepts clicks even when inner elements call\n * `stopPropagation()` (e.g. CDK overlay panels).\n *\n * SSR-safe: no listener is registered when running on the server.\n *\n * @example\n * ```html\n * <div [pdmOutsideClick]\n * (pdmOutsideClick)=\"close()\"\n * [pdmOutsideClickDisabled]=\"!open\">\n * </div>\n * ```\n */\n@Directive({\n selector: '[pdmOutsideClick]'\n})\nexport class PdmOutsideClickDirective implements OnInit, OnDestroy {\n /** When `true`, the outside-click listener is inactive. */\n @Input() pdmOutsideClickDisabled = false;\n\n /**\n * Additional elements to exclude from the \"outside\" check.\n * Useful when the trigger lives outside the host (e.g. a menubar button\n * that opens a floating panel bound to a different root element).\n */\n @Input() pdmOutsideClickExclude: Array<HTMLElement | ElementRef<HTMLElement>> = [];\n\n /** Fires when a `pointerdown` lands outside the host (and excluded elements). */\n @Output() readonly pdmOutsideClick = new EventEmitter<PointerEvent>();\n\n private readonly isBrowser: boolean;\n private boundHandler!: (event: PointerEvent) => void;\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(DOCUMENT) private readonly document: Document,\n @Inject(PLATFORM_ID) platformId: object\n ) {\n this.isBrowser = isPlatformBrowser(platformId);\n }\n\n ngOnInit(): void {\n if (!this.isBrowser) return;\n\n this.boundHandler = (event: PointerEvent) => this.onPointerDown(event);\n this.document.addEventListener('pointerdown', this.boundHandler, { capture: true });\n }\n\n ngOnDestroy(): void {\n if (!this.isBrowser || !this.boundHandler) return;\n this.document.removeEventListener('pointerdown', this.boundHandler, { capture: true });\n }\n\n private onPointerDown(event: PointerEvent): void {\n if (this.pdmOutsideClickDisabled) return;\n\n const target = event.target as Node | null;\n if (!target) return;\n\n // Check if click is inside the host element.\n if (this.elementRef.nativeElement.contains(target)) return;\n\n // Check if click is inside any excluded element.\n for (const excluded of this.pdmOutsideClickExclude) {\n const el = excluded instanceof ElementRef ? excluded.nativeElement : excluded;\n if (el && el.contains(target)) return;\n }\n\n this.pdmOutsideClick.emit(event);\n }\n}\n","import {\n AfterContentInit,\n Directive,\n ElementRef,\n Input\n} from '@angular/core';\n\n/**\n * Directive used to declare an option inside `<pdm-select>` via content projection.\n *\n * Usage:\n * ```html\n * <pdm-select [(value)]=\"val\">\n * <pdm-select-option value=\"a\">Option A</pdm-select-option>\n * <pdm-select-option value=\"b\" [disabled]=\"true\">Option B</pdm-select-option>\n * <pdm-select-option value=\"c\" label=\"Option C\"></pdm-select-option>\n * </pdm-select>\n * ```\n *\n * When `label` is not provided, the text content of the projected node is used.\n */\n@Directive({\n selector: 'pdm-select-option'\n})\nexport class PdmSelectOptionDirective implements AfterContentInit {\n /** The option value that will be emitted on selection. */\n @Input() value = '';\n\n /** When true, the option is rendered but cannot be selected. */\n @Input() disabled = false;\n\n /**\n * Explicit label for the option.\n * When omitted, the directive reads the element's `textContent` after content init.\n */\n @Input() label = '';\n\n constructor(private readonly el: ElementRef<HTMLElement>) {}\n\n ngAfterContentInit(): void {\n // If no explicit label, harvest text from the projected node.\n if (!this.label) {\n this.label = (this.el.nativeElement.textContent ?? '').trim();\n }\n }\n\n /** Resolved label string — always non-empty after ngAfterContentInit. */\n get resolvedLabel(): string {\n return this.label || this.value;\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Subscription } from 'rxjs';\nimport { PdmSelectOptionDirective } from './select-option.directive';\nimport { PdmOverlayOptions } from '../../overlay/pdm-overlay-options';\nimport { createFlexiblePositionStrategy } from '../../overlay/create-flexible-position-strategy';\nimport { Z_INDEX } from '../../utils/z-index';\n\nexport interface PdmSelectOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'pdm-select',\n templateUrl: './select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSelectComponent implements AfterContentInit, OnDestroy {\n @Input() id = '';\n @Input() value = '';\n @Input() options: PdmSelectOption[] = [];\n @Input() disabled = false;\n @Input() invalid = false;\n @Input() className = '';\n @Input() placeholder = 'Select an option';\n /**\n * Optional CDK OverlayConfig overrides.\n * Shallow-merged on top of component defaults — consumer always wins.\n * Providing `positionStrategy` or `scrollStrategy` replaces the component default entirely.\n */\n @Input() overlayOptions?: PdmOverlayOptions;\n\n open = false;\n\n @Output() valueChange = new EventEmitter<string>();\n\n @ViewChild('triggerEl') private triggerRef?: ElementRef<HTMLElement>;\n @ViewChild('panelTemplate') private panelTemplateRef!: any;\n\n /** Collects any `<pdm-select-option>` children projected into this component. */\n @ContentChildren(PdmSelectOptionDirective)\n private projectedOptions!: QueryList<PdmSelectOptionDirective>;\n\n private overlayRef: OverlayRef | null = null;\n private backdropSub: Subscription | null = null;\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n private readonly cdr: ChangeDetectorRef,\n private readonly overlay: Overlay,\n private readonly viewContainerRef: ViewContainerRef\n ) {}\n\n ngAfterContentInit(): void {\n // Re-render when projected options change (e.g. *ngFor on pdm-select-option).\n this.projectedOptions.changes.subscribe(() => this.cdr.markForCheck());\n }\n\n ngOnDestroy(): void {\n this.destroyOverlay();\n }\n\n /**\n * Returns the effective list of options.\n * Projected `<pdm-select-option>` children take priority over the `[options]` input.\n * Falls back to `[options]` when no children are projected.\n */\n get resolvedOptions(): PdmSelectOption[] {\n if (this.projectedOptions && this.projectedOptions.length > 0) {\n return this.projectedOptions.map((d) => ({\n label: d.resolvedLabel,\n value: d.value,\n disabled: d.disabled\n }));\n }\n return this.options;\n }\n\n get selectedOption(): PdmSelectOption | undefined {\n return this.resolvedOptions.find((option) => option.value === this.value);\n }\n\n get selectedLabel(): string {\n return this.selectedOption?.label || this.placeholder;\n }\n\n toggle(): void {\n if (this.disabled) return;\n if (this.open) {\n this.closePanel();\n } else {\n this.openPanel();\n }\n }\n\n onChange(event: Event): void {\n this.valueChange.emit((event.target as HTMLSelectElement).value);\n }\n\n selectOption(option: PdmSelectOption): void {\n if (option.disabled) return;\n this.valueChange.emit(option.value);\n this.closePanel();\n }\n\n @HostListener('document:keydown.escape')\n onEscape(): void {\n if (this.open) {\n this.closePanel();\n }\n }\n\n private openPanel(): void {\n if (this.overlayRef) return;\n\n const triggerEl = this.triggerRef?.nativeElement;\n if (!triggerEl) return;\n\n this.open = true;\n this.cdr.markForCheck();\n\n const positionStrategy = createFlexiblePositionStrategy(\n this.overlay,\n triggerEl,\n 4\n );\n\n this.overlayRef = this.overlay.create({\n // CRÍTICO: z-[70] para aparecer SOBRE modals (z-[60])\n // panelClass se aplica al cdk-overlay-pane wrapper\n panelClass: [Z_INDEX.popover],\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n width: triggerEl.offsetWidth,\n // Consumer overrides are spread last — they win over every default above.\n ...this.overlayOptions\n });\n\n const portal = new TemplatePortal(\n this.panelTemplateRef,\n this.viewContainerRef\n );\n this.overlayRef.attach(portal);\n\n this.backdropSub = this.overlayRef.outsidePointerEvents().subscribe((event) => {\n const target = event.target as Node;\n if (!triggerEl.contains(target)) {\n this.closePanel();\n }\n });\n\n this.cdr.markForCheck();\n }\n\n private closePanel(): void {\n if (!this.overlayRef) return;\n\n this.open = false;\n this.destroyOverlay();\n this.cdr.markForCheck();\n }\n\n private destroyOverlay(): void {\n if (this.backdropSub) {\n this.backdropSub.unsubscribe();\n this.backdropSub = null;\n }\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n}\n","<div [ngClass]=\"['relative', className || 'w-full']\">\n <button\n #triggerEl\n type=\"button\"\n [id]=\"id\"\n [disabled]=\"disabled\"\n [attr.aria-invalid]=\"invalid\"\n [attr.aria-expanded]=\"open\"\n [attr.data-state]=\"open ? 'open' : 'closed'\"\n aria-haspopup=\"listbox\"\n (click)=\"toggle()\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive flex h-9 w-full appearance-none items-center justify-between rounded-md border bg-background px-3 py-2 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50',\n ]\"\n >\n <span\n [ngClass]=\"[\n 'min-w-0 flex-1 truncate text-left leading-5',\n selectedOption\n ? 'font-medium text-foreground'\n : 'font-normal text-muted-foreground',\n ]\"\n >\n {{ selectedLabel }}\n </span>\n <pdm-icon\n name=\"chevron-down\"\n [size]=\"16\"\n className=\"shrink-0 text-muted-foreground\"\n ></pdm-icon>\n </button>\n\n <!-- Hidden native select kept for screen-reader / form fallback -->\n <select\n class=\"sr-only\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n [value]=\"value\"\n (change)=\"onChange($event)\"\n >\n <option\n *ngFor=\"let option of resolvedOptions\"\n [value]=\"option.value\"\n [disabled]=\"option.disabled\"\n >\n {{ option.label }}\n </option>\n </select>\n\n <!-- Slot for content-projected pdm-select-option elements (hidden from layout) -->\n <span class=\"hidden\">\n <ng-content select=\"pdm-select-option\"></ng-content>\n </span>\n</div>\n\n<ng-template #panelTemplate>\n <div\n role=\"listbox\"\n [attr.aria-labelledby]=\"id || null\"\n class=\"overflow-y-auto rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md max-h-96\"\n >\n <button\n *ngFor=\"let option of resolvedOptions\"\n type=\"button\"\n role=\"option\"\n [attr.aria-selected]=\"option.value === value\"\n [disabled]=\"option.disabled\"\n (click)=\"selectOption(option)\"\n [ngClass]=\"[\n 'flex w-full appearance-none items-center justify-between rounded-sm border-0 bg-transparent px-2 py-1.5 text-left text-sm outline-none transition-colors',\n option.disabled\n ? 'cursor-not-allowed opacity-50'\n : 'hover:bg-accent hover:text-accent-foreground focus-visible:bg-accent focus-visible:text-accent-foreground',\n option.value === value ? 'text-foreground' : '',\n ]\"\n >\n <span class=\"min-w-0 flex-1 truncate leading-5\">{{ option.label }}</span>\n <span\n *ngIf=\"option.value === value\"\n class=\"ml-2 flex shrink-0 items-center justify-end\"\n >\n <pdm-icon\n name=\"check\"\n [size]=\"16\"\n className=\"shrink-0 text-current\"\n ></pdm-icon>\n </span>\n </button>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport type { PdmNativeSelectOption } from '../native-select/native-select.component';\n\n@Component({\n selector: 'pdm-pagination',\n templateUrl: './pagination.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmPaginationComponent {\n @Input() page = 1;\n @Input() pageCount = 1;\n @Input() maxVisible = 4;\n @Input() className = '';\n @Input() rowsPerPageLabel = 'Rows per page';\n @Input() rowsPerPage = 10;\n @Input() rowsPerPageOptions: number[] = [10, 20, 30, 50];\n\n @Output() pageChange = new EventEmitter<number>();\n @Output() rowsPerPageChange = new EventEmitter<number>();\n\n get rowsPerPageSelectOptions(): PdmNativeSelectOption[] {\n return this.rowsPerPageOptions.map((value) => ({\n label: String(value),\n value: String(value)\n }));\n }\n\n get rowsPerPageValue(): string {\n return String(this.rowsPerPage);\n }\n\n get visiblePages(): Array<number | 'ellipsis'> {\n const total = Math.max(1, this.pageCount);\n if (total <= Math.max(1, this.maxVisible)) {\n return Array.from({ length: total }, (_, i) => i + 1);\n }\n\n return [1, 2, 'ellipsis', total];\n }\n\n setPage(next: number): void {\n if (next < 1 || next > this.pageCount || next === this.page) {\n return;\n }\n\n this.pageChange.emit(next);\n }\n\n onRowsPerPageChangeValue(value: string): void {\n const next = Number(value);\n if (!Number.isFinite(next) || next <= 0 || next === this.rowsPerPage) {\n return;\n }\n\n this.rowsPerPageChange.emit(next);\n }\n}\n","<nav\n aria-label=\"Pagination\"\n [ngClass]=\"[\n 'mx-auto flex w-full flex-wrap items-center justify-center gap-4',\n className,\n ]\"\n>\n <div class=\"flex items-center gap-3\" *ngIf=\"rowsPerPageOptions.length > 0\">\n <span class=\"text-sm font-medium text-foreground\">{{\n rowsPerPageLabel\n }}</span>\n <pdm-select\n [value]=\"rowsPerPageValue\"\n [options]=\"rowsPerPageSelectOptions\"\n [placeholder]=\"rowsPerPageValue\"\n className=\"w-[100px] sm:w-[120px]\"\n (valueChange)=\"onRowsPerPageChangeValue($event)\"\n ></pdm-select>\n </div>\n\n <ul class=\"m-0 flex list-none items-center gap-1 p-0\">\n <li>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none items-center justify-center gap-1 rounded-md border-0 bg-transparent px-2 text-sm text-foreground hover:bg-accent disabled:opacity-50 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n [disabled]=\"page <= 1\"\n (click)=\"setPage(page - 1)\"\n >\n <pdm-icon name=\"chevron-left\" [size]=\"14\"></pdm-icon>\n Previous\n </button>\n </li>\n <li *ngFor=\"let pageNumber of visiblePages\">\n <ng-container *ngIf=\"pageNumber === 'ellipsis'; else pageButton\">\n <span\n class=\"inline-flex h-9 min-w-9 items-center justify-center px-2 text-sm text-muted-foreground\"\n >...</span\n >\n </ng-container>\n <ng-template #pageButton>\n <button\n type=\"button\"\n [ngClass]=\"[\n 'inline-flex h-9 min-w-9 items-center justify-center rounded-md px-2 text-sm ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n pageNumber === page\n ? 'appearance-none border border-border bg-muted text-foreground shadow-sm'\n : 'appearance-none border-0 bg-transparent text-foreground hover:bg-accent hover:text-accent-foreground',\n ]\"\n (click)=\"setPage(+pageNumber)\"\n >\n {{ pageNumber }}\n </button>\n </ng-template>\n </li>\n <li>\n <button\n type=\"button\"\n class=\"inline-flex h-9 appearance-none items-center justify-center gap-1 rounded-md border-0 bg-transparent px-2 text-sm text-foreground hover:bg-accent disabled:opacity-50 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n [disabled]=\"page >= pageCount\"\n (click)=\"setPage(page + 1)\"\n >\n Next\n <pdm-icon name=\"chevron-right\" [size]=\"14\"></pdm-icon>\n </button>\n </li>\n </ul>\n</nav>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { Z_INDEX } from '../../utils/z-index';\n\n@Component({\n selector: 'pdm-popover',\n templateUrl: './popover.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmPopoverComponent implements OnInit, OnDestroy {\n private _open = false;\n @Input() triggerText = 'Open';\n @Input() className = '';\n @Input() panelClassName = '';\n @Input() showTrigger = true;\n @Output() openChange = new EventEmitter<boolean>();\n\n panelPlacement: 'top' | 'bottom' = 'bottom';\n\n @ViewChild('anchorEl') private anchorRef?: ElementRef<HTMLElement>;\n @ViewChild('triggerEl') private triggerRef?: ElementRef<HTMLElement>;\n @ViewChild('panelEl') private panelRef?: ElementRef<HTMLElement>;\n\n private boundPointerDown!: (event: PointerEvent) => void;\n\n constructor(\n private readonly elementRef: ElementRef<HTMLElement>,\n private readonly cdr: ChangeDetectorRef\n ) {}\n\n ngOnInit(): void {\n this.boundPointerDown = (event: PointerEvent) => this.onDocumentPointerDown(event);\n document.addEventListener('pointerdown', this.boundPointerDown, { capture: true });\n }\n\n ngOnDestroy(): void {\n if (this.boundPointerDown) {\n document.removeEventListener('pointerdown', this.boundPointerDown, { capture: true });\n }\n }\n\n @Input()\n set open(value: boolean) {\n this._open = !!value;\n if (this._open) {\n this.schedulePanelPlacementUpdate();\n } else {\n this.panelPlacement = 'bottom';\n }\n this.cdr.markForCheck();\n }\n get open(): boolean {\n return this._open;\n }\n\n get panelClasses(): string[] {\n const baseClasses = 'min-w-80 rounded-md border border-border bg-popover p-4 text-popover-foreground shadow-md';\n return [\n this.panelPlacement === 'top'\n ? `absolute bottom-full left-0 ${Z_INDEX.popover} mb-2 ${baseClasses}`\n : `absolute left-0 top-full ${Z_INDEX.popover} mt-2 ${baseClasses}`,\n this.panelClassName\n ];\n }\n\n toggle(): void {\n this.open = !this.open;\n this.openChange.emit(this.open);\n }\n\n @HostListener('document:keydown.escape')\n onEsc(): void {\n if (this.open) {\n this.open = false;\n this.openChange.emit(false);\n }\n }\n\n @HostListener('window:resize')\n @HostListener('window:scroll')\n onViewportChange(): void {\n this.updatePanelPlacement();\n }\n\n private onDocumentPointerDown(event: PointerEvent): void {\n if (!this.open) return;\n const target = event.target as Node | null;\n if (target && !this.elementRef.nativeElement.contains(target)) {\n this.open = false;\n this.openChange.emit(false);\n }\n }\n\n private schedulePanelPlacementUpdate(): void {\n setTimeout(() => this.updatePanelPlacement());\n }\n\n private updatePanelPlacement(): void {\n if (!this.open) return;\n\n const anchorEl = this.triggerRef?.nativeElement || this.anchorRef?.nativeElement;\n const panelEl = this.panelRef?.nativeElement;\n if (!anchorEl || !panelEl || typeof window === 'undefined') {\n return;\n }\n\n const viewportHeight = window.innerHeight;\n const gap = 8;\n const anchorRect = anchorEl.getBoundingClientRect();\n const panelHeight = panelEl.offsetHeight;\n const spaceBelow = Math.max(0, viewportHeight - anchorRect.bottom - gap);\n const spaceAbove = Math.max(0, anchorRect.top - gap);\n const nextPlacement: 'top' | 'bottom' =\n spaceBelow < panelHeight && spaceAbove > spaceBelow ? 'top' : 'bottom';\n\n if (this.panelPlacement !== nextPlacement) {\n this.panelPlacement = nextPlacement;\n this.cdr.markForCheck();\n }\n }\n}\n","<div #anchorEl class=\"relative inline-block\" [ngClass]=\"className\">\n <button #triggerEl *ngIf=\"showTrigger\" type=\"button\" class=\"inline-flex h-9 appearance-none items-center justify-center rounded-md border border-input bg-background px-3 text-sm font-medium text-foreground shadow-sm\" [attr.aria-expanded]=\"open\" (click)=\"toggle()\">{{ triggerText }}</button>\n <div #panelEl *ngIf=\"open || !showTrigger\" [ngClass]=\"panelClasses\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-progress',\n templateUrl: './progress.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmProgressComponent {\n @Input() value = 0;\n @Input() max = 100;\n @Input() indeterminate = false;\n @Input() className = '';\n\n get width(): string {\n if (this.indeterminate) return '100%';\n const safeMax = this.max > 0 ? this.max : 100;\n const pct = Math.min(100, Math.max(0, (this.value / safeMax) * 100));\n return pct + '%';\n }\n}\n","<div\n role=\"progressbar\"\n [attr.aria-valuemin]=\"0\"\n [attr.aria-valuemax]=\"max\"\n [attr.aria-valuenow]=\"indeterminate ? null : value\"\n [ngClass]=\"['relative h-1.5 w-full overflow-hidden rounded-full bg-muted', className]\"\n>\n <div [ngClass]=\"['h-full bg-foreground transition-all', indeterminate ? 'animate-pulse' : '']\" [style.width]=\"width\"></div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface PdmRadioOption {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'pdm-radio-group',\n templateUrl: './radio-group.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmRadioGroupComponent {\n @Input() name = 'pdm-radio-group';\n @Input() value = '';\n @Input() options: PdmRadioOption[] = [];\n @Input() direction: 'vertical' | 'horizontal' = 'vertical';\n @Input() className = '';\n\n @Output() valueChange = new EventEmitter<string>();\n\n optionId(option: PdmRadioOption): string {\n return `${this.name}-${option.value}`;\n }\n\n onChange(event: Event): void {\n this.valueChange.emit((event.target as HTMLInputElement).value);\n }\n}\n","<div\n role=\"radiogroup\"\n [ngClass]=\"[\n 'gap-2 text-sm',\n direction === 'horizontal' ? 'inline-flex items-center' : 'grid',\n className\n ]\"\n>\n <label *ngFor=\"let option of options\" [attr.for]=\"optionId(option)\" class=\"inline-flex cursor-pointer items-center gap-2\">\n <input\n [id]=\"optionId(option)\"\n type=\"radio\"\n [name]=\"name\"\n [value]=\"option.value\"\n [checked]=\"value === option.value\"\n [disabled]=\"option.disabled\"\n class=\"peer sr-only\"\n (change)=\"onChange($event)\"\n />\n <span class=\"relative block h-4 w-4 rounded-full border border-input bg-background peer-checked:border-primary peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-2 peer-focus-visible:ring-offset-background\">\n <span class=\"absolute left-1/2 top-1/2 hidden h-2 w-2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-primary peer-checked:block\"></span>\n </span>\n <span class=\"text-foreground\">{{ option.label }}</span>\n </label>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-scroll-area',\n templateUrl: './scroll-area.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmScrollAreaComponent {\n @Input() maxHeight = '16rem';\n @Input() className = '';\n}\n","<div [style.maxHeight]=\"maxHeight\" [ngClass]=\"['relative overflow-auto rounded-md border border-border', className]\">\n <div class=\"p-3\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-separator',\n templateUrl: './separator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSeparatorComponent {\n @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\n @Input() decorative = true;\n @Input() className = '';\n\n get orientationClass(): string {\n return this.orientation === 'vertical' ? 'h-full w-px' : 'h-px w-full';\n }\n}\n","<div\n [attr.role]=\"decorative ? 'none' : 'separator'\"\n [attr.aria-orientation]=\"orientation\"\n [ngClass]=\"['shrink-0 bg-border', orientationClass, className]\"\n></div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\n\nexport type PdmSheetSide = 'top' | 'right' | 'bottom' | 'left';\nexport type PdmSheetSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\n/**\n * Sheet/Side panel component con soporte responsive\n * \n * MEJORADO en v0.2.0:\n * - Tamaños configurables\n * - Mejor manejo de overflow\n * - Responsive sizes\n * \n * @example\n * <pdm-sheet [open]=\"isOpen\" side=\"right\" size=\"md\">\n * <h3>Settings</h3>\n * <p>Content here</p>\n * </pdm-sheet>\n */\n@Component({\n selector: 'pdm-sheet',\n templateUrl: './sheet.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSheetComponent {\n @Input() open = false;\n \n /**\n * Lado desde donde aparece el sheet\n */\n @Input() side: PdmSheetSide = 'right';\n \n /**\n * Tamaño del sheet\n * - sm: 320px (side) / 40vh (top/bottom)\n * - md: 400px (side) / 50vh (top/bottom) (default)\n * - lg: 500px (side) / 66vh (top/bottom)\n * - xl: 640px (side) / 80vh (top/bottom)\n * - full: 100%\n */\n @Input() size: PdmSheetSize = 'md';\n \n @Input() className = '';\n @Input() closeOnEsc = true;\n @Input() closeOnBackdropClick = true;\n\n @Output() openChange = new EventEmitter<boolean>();\n\n @HostListener('document:keydown.escape')\n onEsc(): void {\n if (this.open && this.closeOnEsc) {\n this.close();\n }\n }\n\n onBackdropClick(): void {\n if (this.closeOnBackdropClick) {\n this.close();\n }\n }\n\n close(): void {\n this.openChange.emit(false);\n }\n\n get panelClass(): string {\n const base = 'absolute bg-background border-border shadow-lg overflow-auto';\n const position = this.getPositionClass();\n const sizing = this.getSizingClass();\n \n return `${base} ${position} ${sizing} ${this.className}`.trim();\n }\n\n private getPositionClass(): string {\n const map: Record<PdmSheetSide, string> = {\n left: 'left-0 top-0 h-full border-r',\n right: 'right-0 top-0 h-full border-l',\n top: 'top-0 left-0 w-full border-b',\n bottom: 'bottom-0 left-0 w-full border-t'\n };\n \n return map[this.side];\n }\n\n private getSizingClass(): string {\n if (this.size === 'full') {\n return 'w-full h-full';\n }\n\n const isHorizontal = this.side === 'left' || this.side === 'right';\n \n if (isHorizontal) {\n const widthMap = {\n sm: 'w-full max-w-[320px] sm:max-w-[320px]',\n md: 'w-full max-w-[360px] sm:max-w-[400px]',\n lg: 'w-full max-w-[400px] sm:max-w-[500px]',\n xl: 'w-full max-w-[500px] sm:max-w-[640px]'\n };\n return widthMap[this.size] || widthMap.md;\n } else {\n const heightMap = {\n sm: 'max-h-[40vh]',\n md: 'max-h-[50vh]',\n lg: 'max-h-[66vh]',\n xl: 'max-h-[80vh]'\n };\n return heightMap[this.size] || heightMap.md;\n }\n }\n}\n","<div *ngIf=\"open\" class=\"fixed inset-0 z-50\">\n <button type=\"button\" class=\"absolute inset-0 appearance-none border-0 bg-foreground/80 p-0\" aria-label=\"Close sheet\" (click)=\"onBackdropClick()\"></button>\n\n <section [ngClass]=\"['absolute z-[60] border border-border bg-background p-6 shadow-lg', panelClass, className]\" role=\"dialog\" aria-modal=\"true\">\n <button type=\"button\" class=\"absolute right-3 top-3 appearance-none rounded-sm border-0 bg-transparent p-0 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\" (click)=\"close()\">\n <pdm-icon name=\"x\" [size]=\"16\"></pdm-icon>\n </button>\n <ng-content></ng-content>\n </section>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmSidebarMobileMode = 'drawer' | 'sidebar';\n\n/**\n * Sidebar component - Navegación lateral responsive\n * \n * MEJORAS en v0.2.0:\n * - Mobile drawer mode: overlay fullscreen en mobile, sidebar fijo en desktop\n * - Sidebar mode: sidebar persistente con widths responsive\n * - Backdrop automático en mobile drawer mode\n * \n * @example\n * <!-- Mobile drawer (default) -->\n * <pdm-sidebar [open]=\"sidebarOpen\" (openChange)=\"sidebarOpen = $event\">\n * <nav>Menu items...</nav>\n * </pdm-sidebar>\n * \n * <!-- Sidebar persistente -->\n * <pdm-sidebar mobileMode=\"sidebar\" [collapsed]=\"collapsed\">\n * <nav>Menu items...</nav>\n * </pdm-sidebar>\n */\n@Component({\n selector: 'pdm-sidebar',\n templateUrl: './sidebar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSidebarComponent {\n /**\n * Mobile behavior: 'drawer' (overlay) o 'sidebar' (persistente)\n * @default 'drawer'\n */\n @Input() mobileMode: PdmSidebarMobileMode = 'drawer';\n \n /**\n * Collapsed state (solo aplica en mobileMode=\"sidebar\")\n */\n @Input() collapsed = false;\n \n /**\n * Open state (solo aplica en mobileMode=\"drawer\")\n */\n @Input() open = false;\n \n @Input() className = '';\n \n /**\n * Emite cuando el drawer se cierra (solo en mobileMode=\"drawer\")\n */\n @Output() openChange = new EventEmitter<boolean>();\n \n onBackdropClick() {\n if (this.mobileMode === 'drawer') {\n this.open = false;\n this.openChange.emit(false);\n }\n }\n}\n","<!-- Mobile drawer mode -->\n<ng-container *ngIf=\"mobileMode === 'drawer'\">\n <!-- Backdrop -->\n <div\n *ngIf=\"open\"\n class=\"fixed inset-0 z-40 bg-black/50 lg:hidden\"\n (click)=\"onBackdropClick()\"\n ></div>\n \n <!-- Drawer -->\n <aside\n [ngClass]=\"[\n 'fixed inset-y-0 left-0 z-50 h-full w-64 transform border-r border-border bg-background transition-transform duration-300 lg:relative lg:z-auto lg:translate-x-0',\n open ? 'translate-x-0' : '-translate-x-full',\n className\n ]\"\n >\n <ng-content></ng-content>\n </aside>\n</ng-container>\n\n<!-- Sidebar persistente mode -->\n<aside\n *ngIf=\"mobileMode === 'sidebar'\"\n [ngClass]=\"[\n 'h-full border-r border-border bg-background transition-all',\n collapsed ? 'w-14 sm:w-14' : 'w-48 sm:w-56 lg:w-64',\n className\n ]\"\n>\n <ng-content></ng-content>\n</aside>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-skeleton',\n templateUrl: './skeleton.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSkeletonComponent {\n @Input() className = '';\n}\n","<div [ngClass]=\"['animate-pulse rounded-md bg-muted', className]\"></div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'pdm-slider',\n templateUrl: './slider.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSliderComponent {\n @Input() min = 0;\n @Input() max = 100;\n @Input() step = 1;\n @Input() value = 0;\n @Input() disabled = false;\n @Input() className = '';\n\n @Output() valueChange = new EventEmitter<number>();\n\n get percentage(): number {\n const safeRange = this.max - this.min;\n if (safeRange <= 0) {\n return 0;\n }\n\n const bounded = Math.min(this.max, Math.max(this.min, this.value));\n return ((bounded - this.min) / safeRange) * 100;\n }\n\n onInput(event: Event): void {\n this.valueChange.emit(Number((event.target as HTMLInputElement).value));\n }\n}\n","<div [ngClass]=\"['relative h-5 w-full', className]\">\n <div class=\"absolute left-0 right-0 top-1/2 h-1 -translate-y-1/2 rounded-full bg-muted\"></div>\n <div class=\"absolute left-0 top-1/2 h-1 -translate-y-1/2 rounded-full bg-foreground\" [style.width.%]=\"percentage\"></div>\n <div class=\"absolute top-1/2 h-4 w-4 -translate-x-1/2 -translate-y-1/2 rounded-full border border-foreground bg-background shadow-sm\" [style.left.%]=\"percentage\"></div>\n <input\n type=\"range\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n class=\"absolute inset-0 h-full w-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n (input)=\"onInput($event)\"\n />\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmToastTone = 'default' | 'success' | 'error' | 'warning';\n\n@Component({\n selector: 'pdm-sonner',\n templateUrl: './sonner.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSonnerComponent {\n @Input() title = '';\n @Input() description = '';\n @Input() tone: PdmToastTone = 'default';\n @Input() className = '';\n\n @Output() dismissed = new EventEmitter<void>();\n\n get toneClass(): string {\n if (this.tone === 'success') return 'border-emerald-200 bg-emerald-50 text-emerald-900';\n if (this.tone === 'error') return 'border-red-200 bg-red-50 text-red-900';\n if (this.tone === 'warning') return 'border-amber-200 bg-amber-50 text-amber-900';\n\n return 'border-border bg-background text-foreground';\n }\n}\n","<div [ngClass]=\"['flex w-full max-w-sm items-start gap-3 rounded-lg border p-4 shadow-lg', toneClass, className]\" role=\"status\" aria-live=\"polite\">\n <div class=\"grid gap-0.5\">\n <p *ngIf=\"title\" class=\"m-0 text-sm font-semibold\">{{ title }}</p>\n <p *ngIf=\"description\" class=\"m-0 text-sm opacity-90\">{{ description }}</p>\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"ml-auto appearance-none rounded-sm border-0 bg-transparent p-0 opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\" (click)=\"dismissed.emit()\" aria-label=\"Dismiss\">\n <pdm-icon name=\"x\" [size]=\"14\"></pdm-icon>\n </button>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-spinner',\n templateUrl: './spinner.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSpinnerComponent {\n @Input() size = 16;\n @Input() className = '';\n}\n","<span\n [style.width.px]=\"size\"\n [style.height.px]=\"size\"\n [ngClass]=\"['inline-block animate-spin rounded-full border-2 border-current border-r-transparent', className]\"\n aria-hidden=\"true\"\n></span>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmSwitchSize = 'default' | 'sm';\n\n@Component({\n selector: 'pdm-switch',\n templateUrl: './switch.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmSwitchComponent {\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n @Input() id = '';\n @Input() checked = false;\n @Input() disabled = false;\n @Input() label = '';\n @Input() className = '';\n @Input() size: PdmSwitchSize = 'default';\n\n @Output() checkedChange = new EventEmitter<boolean>();\n\n get rootClasses(): string[] {\n return [\n 'peer relative inline-flex appearance-none shrink-0 items-center rounded-full border border-transparent outline-none transition-all focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50',\n this.size === 'sm' ? 'h-[14px] w-[24px]' : 'h-[18.4px] w-[32px]',\n this.checked ? 'bg-primary' : 'bg-input dark:bg-input/80'\n ];\n }\n\n get thumbClasses(): string[] {\n return [\n 'pointer-events-none block rounded-full bg-background ring-0 transition-transform',\n this.size === 'sm' ? 'size-3' : 'size-4',\n this.checked ? 'translate-x-[calc(100%-2px)]' : 'translate-x-0'\n ];\n }\n\n onToggle(): void {\n if (this.disabled) return;\n const next = !this.checked;\n this.checked = next;\n this.checkedChange.emit(next);\n this.cdr.markForCheck();\n }\n}\n","<div [ngClass]=\"['flex items-center space-x-2', className]\">\n <button\n type=\"button\"\n role=\"switch\"\n [attr.aria-checked]=\"checked\"\n [attr.aria-disabled]=\"disabled\"\n [attr.data-state]=\"checked ? 'checked' : 'unchecked'\"\n [attr.data-disabled]=\"disabled ? 'true' : 'false'\"\n [attr.data-size]=\"size\"\n [attr.data-slot]=\"'switch'\"\n [attr.value]=\"checked ? 'on' : 'off'\"\n [id]=\"id\"\n [disabled]=\"disabled\"\n [ngClass]=\"rootClasses\"\n (click)=\"onToggle()\"\n >\n <span\n [attr.data-state]=\"checked ? 'checked' : 'unchecked'\"\n [attr.data-slot]=\"'switch-thumb'\"\n [ngClass]=\"thumbClasses\"\n ></span>\n </button>\n <label\n *ngIf=\"label\"\n [attr.for]=\"id\"\n [attr.data-slot]=\"'label'\"\n class=\"flex cursor-pointer items-center gap-2 text-sm leading-none font-medium select-none peer-disabled:cursor-not-allowed peer-disabled:opacity-50\"\n (click)=\"onToggle()\"\n >\n {{ label }}\n </label>\n</div>\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface PdmTabItem {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'pdm-tabs',\n templateUrl: './tabs.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmTabsComponent {\n constructor(private readonly cdr: ChangeDetectorRef) {}\n\n @Input() items: PdmTabItem[] = [];\n @Input() value = '';\n @Input() className = '';\n\n @Output() valueChange = new EventEmitter<string>();\n\n select(item: PdmTabItem): void {\n if (!item.disabled) {\n this.value = item.value;\n this.valueChange.emit(item.value);\n this.cdr.markForCheck();\n }\n }\n}\n","<div [ngClass]=\"['w-full', className]\">\n <div\n role=\"tablist\"\n class=\"inline-flex h-8 w-full items-center overflow-x-auto scrollbar-thin rounded-lg bg-muted p-[3px] text-muted-foreground md:w-fit\"\n >\n <button\n *ngFor=\"let item of items\"\n role=\"tab\"\n [attr.aria-selected]=\"value === item.value\"\n [disabled]=\"item.disabled\"\n [ngClass]=\"[\n 'relative inline-flex h-[calc(100%-1px)] appearance-none flex-1 items-center justify-center gap-1.5 whitespace-nowrap rounded-md border border-transparent px-3 py-0.5 text-sm font-medium transition-all focus-visible:border-ring focus-visible:outline-none focus-visible:outline-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 md:flex-initial md:px-4',\n value === item.value ? 'bg-background text-foreground shadow-sm' : 'bg-transparent text-muted-foreground'\n ]\"\n (click)=\"select(item)\"\n type=\"button\"\n >\n {{ item.label }}\n </button>\n </div>\n <div class=\"mt-4\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'pdm-textarea',\n templateUrl: './textarea.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmTextareaComponent {\n @Input() id = '';\n @Input() value = '';\n @Input() placeholder = '';\n @Input() rows = 4;\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() required = false;\n @Input() invalid = false;\n @Input() className = '';\n @Input() textareaClassName = '';\n @Input() label = '';\n @Input() helperText = '';\n @Input() errorText = '';\n\n @Output() valueChange = new EventEmitter<string>();\n\n onInput(event: Event): void {\n this.valueChange.emit((event.target as HTMLTextAreaElement).value);\n }\n}\n","<div [ngClass]=\"['grid w-full gap-2', className]\">\n <label\n *ngIf=\"label\"\n [attr.for]=\"id\"\n [ngClass]=\"[\n 'text-sm font-medium leading-none',\n invalid ? 'text-destructive' : 'text-foreground'\n ]\"\n >{{ label }}</label>\n <textarea\n [id]=\"id\"\n [rows]=\"rows\"\n [value]=\"value\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [attr.aria-invalid]=\"invalid\"\n [ngClass]=\"[\n 'border-input focus-visible:border-ring focus-visible:ring-2 focus-visible:ring-ring/50 aria-invalid:ring-2 aria-invalid:ring-destructive aria-invalid:border-destructive aria-invalid:placeholder:text-destructive/70 placeholder:text-muted-foreground flex min-h-20 w-full rounded-md border bg-transparent px-3 py-2 text-sm shadow-sm outline-none disabled:cursor-not-allowed disabled:opacity-50',\n textareaClassName\n ]\"\n (input)=\"onInput($event)\"\n ></textarea>\n <p *ngIf=\"!invalid && helperText\" class=\"m-0 text-sm text-muted-foreground\">{{ helperText }}</p>\n <p *ngIf=\"invalid && errorText\" class=\"m-0 text-sm text-destructive\">{{ errorText }}</p>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type PdmToggleSize = 'sm' | 'default' | 'lg';\n\n@Component({\n selector: 'pdm-toggle',\n templateUrl: './toggle.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmToggleComponent {\n @Input() pressed = false;\n @Input() disabled = false;\n @Input() size: PdmToggleSize = 'default';\n @Input() className = '';\n\n @Output() pressedChange = new EventEmitter<boolean>();\n\n toggle(): void {\n if (!this.disabled) {\n this.pressedChange.emit(!this.pressed);\n }\n }\n\n get sizeClass(): string {\n if (this.size === 'sm') return 'h-8 px-2.5 min-w-[32px]';\n if (this.size === 'lg') return 'h-10 px-4 min-w-[40px]';\n return 'h-9 px-3 min-w-[36px]';\n }\n}\n","<button\n type=\"button\"\n [disabled]=\"disabled\"\n [attr.aria-pressed]=\"pressed\"\n [ngClass]=\"[\n 'inline-flex appearance-none items-center justify-center gap-2 rounded-md border-0 text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50',\n 'ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n sizeClass,\n pressed\n ? 'bg-accent text-accent-foreground'\n : 'bg-transparent text-foreground hover:bg-accent hover:text-accent-foreground',\n className\n ]\"\n (click)=\"toggle()\"\n>\n <ng-content></ng-content>\n</button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface PdmToggleGroupItem {\n label: string;\n value: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'pdm-toggle-group',\n templateUrl: './toggle-group.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmToggleGroupComponent {\n @Input() items: PdmToggleGroupItem[] = [];\n @Input() value = '';\n @Input() className = '';\n\n @Output() valueChange = new EventEmitter<string>();\n\n onSelect(next: string, disabled?: boolean): void {\n if (!disabled && next !== this.value) {\n this.valueChange.emit(next);\n }\n }\n}\n","<div [ngClass]=\"['inline-flex items-center rounded-md border border-border p-1', className]\" role=\"group\">\n <button\n *ngFor=\"let item of items\"\n type=\"button\"\n [disabled]=\"item.disabled\"\n [attr.aria-pressed]=\"item.value === value\"\n [ngClass]=\"[\n 'inline-flex h-8 appearance-none items-center justify-center rounded-sm border-0 bg-transparent px-2.5 text-sm font-medium transition-colors disabled:pointer-events-none disabled:opacity-50 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n item.value === value\n ? 'bg-accent text-accent-foreground'\n : 'text-foreground hover:bg-accent hover:text-accent-foreground'\n ]\"\n (click)=\"onSelect(item.value, item.disabled)\"\n >\n {{ item.label }}\n </button>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'pdm-tooltip',\n templateUrl: './tooltip.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PdmTooltipComponent {\n @Input() text = '';\n @Input() side: 'top' | 'right' | 'bottom' | 'left' = 'top';\n @Input() className = '';\n open = false;\n\n get positionClass(): string {\n if (this.side === 'bottom') return 'top-full left-1/2 -translate-x-1/2 mt-2';\n if (this.side === 'left') return 'right-full top-1/2 -translate-y-1/2 mr-2';\n if (this.side === 'right') return 'left-full top-1/2 -translate-y-1/2 ml-2';\n return 'bottom-full left-1/2 -translate-x-1/2 mb-2';\n }\n}\n","<span class=\"relative inline-flex\" [ngClass]=\"className\" (mouseenter)=\"open = true\" (mouseleave)=\"open = false\" (focusin)=\"open = true\" (focusout)=\"open = false\">\n <ng-content></ng-content>\n <span *ngIf=\"open\" [ngClass]=\"['pointer-events-none absolute z-[70] overflow-hidden rounded-md bg-foreground px-3 py-1.5 text-xs text-background animate-in fade-in-0 zoom-in-95', positionClass]\">\n {{ text }}\n </span>\n</span>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PdmAccordionComponent } from './components/accordion/accordion.component';\nimport { PdmAlertComponent } from './components/alert/alert.component';\nimport { PdmAlertDialogComponent } from './components/alert-dialog/alert-dialog.component';\nimport { PdmAspectRatioComponent } from './components/aspect-ratio/aspect-ratio.component';\nimport { PdmAvatarComponent } from './components/avatar/avatar.component';\nimport { PdmBadgeComponent } from './components/badge/badge.component';\nimport { PdmBreadcrumbComponent } from './components/breadcrumb/breadcrumb.component';\nimport { PdmButtonGroupComponent } from './components/button-group/button-group.component';\nimport { PdmButtonComponent } from './components/button/button.component';\nimport { PdmCalendarComponent } from './components/calendar/calendar.component';\nimport { PdmCarouselComponent } from './components/carousel/carousel.component';\nimport { PdmCardComponent } from './components/card/card.component';\nimport { PdmChartComponent } from './components/chart/chart.component';\nimport { PdmCheckboxComponent } from './components/checkbox/checkbox.component';\nimport { PdmCollapsibleComponent } from './components/collapsible/collapsible.component';\nimport { PdmComboboxComponent } from './components/combobox/combobox.component';\nimport { PdmCommandComponent } from './components/command/command.component';\nimport { PdmContextMenuComponent } from './components/context-menu/context-menu.component';\nimport { PdmDataTableComponent } from './components/data-table/data-table.component';\nimport { PdmDatePickerComponent } from './components/date-picker/date-picker.component';\nimport { PdmDialogComponent } from './components/dialog/dialog.component';\nimport { PdmDraggableTableComponent } from './components/draggable-table/draggable-table.component';\nimport { PdmDropdownMenuComponent } from './components/dropdown-menu/dropdown-menu.component';\nimport { PdmDrawerComponent } from './components/drawer/drawer.component';\nimport { PdmEmptyComponent } from './components/empty/empty.component';\nimport { PdmFieldComponent } from './components/field/field.component';\nimport { PdmHoverCardComponent } from './components/hover-card/hover-card.component';\nimport { PdmIconComponent } from './components/icon/icon.component';\nimport { PdmItemComponent } from './components/item/item.component';\nimport { PdmInputComponent } from './components/input/input.component';\nimport { PdmInputPasswordComponent } from './components/input-password/input-password.component';\nimport { PdmInputGroupComponent } from './components/input-group/input-group.component';\nimport { PdmInputOtpComponent } from './components/input-otp/input-otp.component';\nimport { PdmKbdComponent } from './components/kbd/kbd.component';\nimport { PdmLabelComponent } from './components/label/label.component';\nimport { PdmMenubarComponent } from './components/menubar/menubar.component';\nimport { PdmNativeSelectComponent } from './components/native-select/native-select.component';\nimport { PdmNavigationMenuComponent } from './components/navigation-menu/navigation-menu.component';\nimport { PdmOutsideClickDirective } from './overlay/pdm-outside-click.directive';\nimport { PdmPaginationComponent } from './components/pagination/pagination.component';\nimport { PdmPopoverComponent } from './components/popover/popover.component';\nimport { PdmProgressComponent } from './components/progress/progress.component';\nimport { PdmRadioGroupComponent } from './components/radio-group/radio-group.component';\nimport { PdmScrollAreaComponent } from './components/scroll-area/scroll-area.component';\nimport { PdmSelectComponent } from './components/select/select.component';\nimport { PdmSelectOptionDirective } from './components/select/select-option.directive';\nimport { PdmSeparatorComponent } from './components/separator/separator.component';\nimport { PdmSheetComponent } from './components/sheet/sheet.component';\nimport { PdmSidebarComponent } from './components/sidebar/sidebar.component';\nimport { PdmSkeletonComponent } from './components/skeleton/skeleton.component';\nimport { PdmSliderComponent } from './components/slider/slider.component';\nimport { PdmSonnerComponent } from './components/sonner/sonner.component';\nimport { PdmSpinnerComponent } from './components/spinner/spinner.component';\nimport { PdmSwitchComponent } from './components/switch/switch.component';\nimport { PdmTableComponent } from './components/table/table.component';\nimport { PdmTabsComponent } from './components/tabs/tabs.component';\nimport { PdmTextareaComponent } from './components/textarea/textarea.component';\nimport { PdmToggleComponent } from './components/toggle/toggle.component';\nimport { PdmToggleGroupComponent } from './components/toggle-group/toggle-group.component';\nimport { PdmTooltipComponent } from './components/tooltip/tooltip.component';\n\nconst COMPONENTS = [\n PdmAccordionComponent,\n PdmAlertComponent,\n PdmAlertDialogComponent,\n PdmAspectRatioComponent,\n PdmAvatarComponent,\n PdmBadgeComponent,\n PdmBreadcrumbComponent,\n PdmButtonGroupComponent,\n PdmButtonComponent,\n PdmCalendarComponent,\n PdmCarouselComponent,\n PdmCardComponent,\n PdmChartComponent,\n PdmCheckboxComponent,\n PdmCollapsibleComponent,\n PdmComboboxComponent,\n PdmCommandComponent,\n PdmContextMenuComponent,\n PdmDataTableComponent,\n PdmDatePickerComponent,\n PdmDialogComponent,\n PdmDraggableTableComponent,\n PdmDropdownMenuComponent,\n PdmDrawerComponent,\n PdmEmptyComponent,\n PdmFieldComponent,\n PdmHoverCardComponent,\n PdmIconComponent,\n PdmItemComponent,\n PdmInputComponent,\n PdmInputPasswordComponent,\n PdmInputGroupComponent,\n PdmInputOtpComponent,\n PdmKbdComponent,\n PdmLabelComponent,\n PdmMenubarComponent,\n PdmNativeSelectComponent,\n PdmNavigationMenuComponent,\n PdmOutsideClickDirective,\n PdmPaginationComponent,\n PdmPopoverComponent,\n PdmProgressComponent,\n PdmRadioGroupComponent,\n PdmScrollAreaComponent,\n PdmSelectComponent,\n PdmSelectOptionDirective,\n PdmSeparatorComponent,\n PdmSheetComponent,\n PdmSidebarComponent,\n PdmSkeletonComponent,\n PdmSliderComponent,\n PdmSonnerComponent,\n PdmSpinnerComponent,\n PdmSwitchComponent,\n PdmTableComponent,\n PdmTabsComponent,\n PdmTextareaComponent,\n PdmToggleComponent,\n PdmToggleGroupComponent,\n PdmTooltipComponent\n];\n\n@NgModule({\n imports: [CommonModule, OverlayModule],\n declarations: COMPONENTS,\n exports: COMPONENTS\n})\nexport class PdmUiKitModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i2.PdmIconComponent","i2.PdmTableComponent","formatDateFns","i3.PdmCalendarComponent","i4.PdmLabelComponent","i2.PdmButtonComponent","i3.PdmIconComponent","i3.PdmSelectComponent"],"mappings":"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"}
|