@cqa-lib/cqa-ui 0.1.2 → 1.0.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/esm2020/lib/action-menu/action-menu.component.mjs +42 -0
- package/esm2020/lib/assets/images/image-assets.constants.mjs +28 -0
- package/esm2020/lib/badge/badge.component.mjs +141 -0
- package/esm2020/lib/button/button.component.mjs +42 -67
- package/esm2020/lib/column-visibility/column-visibility.component.mjs +69 -0
- package/esm2020/lib/dashboards/chart-card/chart-card.component.mjs +22 -0
- package/esm2020/lib/dashboards/coverage-module-card/coverage-module-card.component.mjs +104 -0
- package/esm2020/lib/dashboards/dashboard-header/dashboard-header.component.mjs +82 -0
- package/esm2020/lib/dashboards/failed-test-cases-card/failed-test-cases-card.component.mjs +60 -0
- package/esm2020/lib/dashboards/heat-error-map-cell/heat-error-map-cell.component.mjs +45 -0
- package/esm2020/lib/dashboards/insight-card/insight-card.component.mjs +201 -0
- package/esm2020/lib/dashboards/metrics-card/metrics-block.component.mjs +41 -0
- package/esm2020/lib/dashboards/metrics-card/metrics-card-item.interface.mjs +2 -0
- package/esm2020/lib/dashboards/metrics-card/metrics-card.component.mjs +62 -0
- package/esm2020/lib/dashboards/progress-text-card/progress-text-card.component.mjs +46 -0
- package/esm2020/lib/dashboards/test-distribution-card/test-distribution-card.component.mjs +35 -0
- package/esm2020/lib/dialog/dialog.component.mjs +4 -4
- package/esm2020/lib/dropdown-button/dropdown-button.component.mjs +189 -0
- package/esm2020/lib/dynamic-select/dynamic-select-field.component.mjs +160 -0
- package/esm2020/lib/empty-state/empty-state.component.mjs +37 -0
- package/esm2020/lib/filters/dynamic-filter/dynamic-filter.component.mjs +239 -0
- package/esm2020/lib/full-table-loader/full-table-loader.component.mjs +16 -0
- package/esm2020/lib/inline-sort/inline-sort.component.mjs +58 -0
- package/esm2020/lib/other-button/other-button.component.mjs +76 -0
- package/esm2020/lib/pagination/pagination.component.mjs +102 -0
- package/esm2020/lib/search-bar/search-bar.component.mjs +3 -3
- package/esm2020/lib/segment-control/segment-control.component.mjs +3 -3
- package/esm2020/lib/selected-filters/selected-filters.component.mjs +27 -0
- package/esm2020/lib/table/dynamic-table/dynamic-cell.directive.mjs +35 -0
- package/esm2020/lib/table/dynamic-table/dynamic-table.component.mjs +258 -0
- package/esm2020/lib/table-action-toolbar/table-action-toolbar.component.mjs +52 -0
- package/esm2020/lib/table-data-loader/table-data-loader.component.mjs +19 -0
- package/esm2020/lib/templates/table-template.component.mjs +365 -0
- package/esm2020/lib/ui-kit.module.mjs +196 -17
- package/esm2020/lib/utils/metadata-colors.util.mjs +100 -0
- package/esm2020/lib/utils/tw-overlay-container.mjs +22 -0
- package/esm2020/public-api.mjs +29 -1
- package/fesm2015/cqa-lib-cqa-ui.mjs +2899 -133
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +2867 -133
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/action-menu/action-menu.component.d.ts +17 -0
- package/lib/assets/images/image-assets.constants.d.ts +20 -0
- package/lib/badge/badge.component.d.ts +25 -0
- package/lib/button/button.component.d.ts +6 -5
- package/lib/column-visibility/column-visibility.component.d.ts +33 -0
- package/lib/dashboards/chart-card/chart-card.component.d.ts +8 -0
- package/lib/dashboards/coverage-module-card/coverage-module-card.component.d.ts +44 -0
- package/lib/dashboards/dashboard-header/dashboard-header.component.d.ts +30 -0
- package/lib/dashboards/failed-test-cases-card/failed-test-cases-card.component.d.ts +28 -0
- package/lib/dashboards/heat-error-map-cell/heat-error-map-cell.component.d.ts +14 -0
- package/lib/dashboards/insight-card/insight-card.component.d.ts +73 -0
- package/lib/dashboards/metrics-card/metrics-block.component.d.ts +12 -0
- package/lib/dashboards/metrics-card/metrics-card-item.interface.d.ts +12 -0
- package/lib/dashboards/metrics-card/metrics-card.component.d.ts +17 -0
- package/lib/dashboards/progress-text-card/progress-text-card.component.d.ts +13 -0
- package/lib/dashboards/test-distribution-card/test-distribution-card.component.d.ts +29 -0
- package/lib/dropdown-button/dropdown-button.component.d.ts +32 -0
- package/lib/dynamic-select/dynamic-select-field.component.d.ts +43 -0
- package/lib/empty-state/empty-state.component.d.ts +20 -0
- package/lib/filters/dynamic-filter/dynamic-filter.component.d.ts +56 -0
- package/lib/full-table-loader/full-table-loader.component.d.ts +6 -0
- package/lib/inline-sort/inline-sort.component.d.ts +12 -0
- package/lib/other-button/other-button.component.d.ts +37 -0
- package/lib/pagination/pagination.component.d.ts +37 -0
- package/lib/selected-filters/selected-filters.component.d.ts +17 -0
- package/lib/table/dynamic-table/dynamic-cell.directive.d.ts +16 -0
- package/lib/table/dynamic-table/dynamic-table.component.d.ts +72 -0
- package/lib/table-action-toolbar/table-action-toolbar.component.d.ts +34 -0
- package/lib/table-data-loader/table-data-loader.component.d.ts +7 -0
- package/lib/templates/table-template.component.d.ts +90 -0
- package/lib/ui-kit.module.d.ts +43 -6
- package/lib/utils/metadata-colors.util.d.ts +50 -0
- package/lib/utils/tw-overlay-container.d.ts +12 -0
- package/package.json +1 -1
- package/public-api.d.ts +28 -0
- package/src/lib/assets/images/.gitkeep +0 -0
- package/src/lib/assets/images/DashboardIcon.png +0 -0
- package/src/lib/assets/images/FilesIcon.png +0 -0
- package/src/lib/assets/images/README.md +66 -0
- package/src/lib/assets/images/ReportsIcon.png +0 -0
- package/src/lib/assets/images/SearchIcon.png +0 -0
- package/src/lib/assets/images/StepsIcon.png +0 -0
- package/src/lib/assets/images/TestCaseIcon.png +0 -0
- package/src/lib/assets/images/analytics-chart-icon.svg +11 -0
- package/src/lib/assets/images/checklist-add-icon.svg +10 -0
- package/src/lib/assets/images/document-gear-icon.svg +9 -0
- package/src/lib/assets/images/empty-state-default-icon.svg +8 -0
- package/src/lib/assets/images/image-assets.constants.ts +38 -0
- package/src/lib/assets/images/search-debug-icon.svg +8 -0
- package/src/lib/assets/images/test-case-icon.svg +9 -0
- package/src/lib/assets/images/upload-folder-icon.svg +7 -0
- package/src/lib/utils/metadata-colors.constants.js +33 -0
- package/storybook-static/assets/images/README.md +66 -0
- package/styles.css +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cqa-lib-cqa-ui.mjs","sources":["../../../src/lib/button/button.component.ts","../../../src/lib/button/button.component.html","../../../src/lib/search-bar/search-bar.component.ts","../../../src/lib/search-bar/search-bar.component.html","../../../src/lib/segment-control/segment-control.component.ts","../../../src/lib/segment-control/segment-control.component.html","../../../src/lib/dialog/dialog.component.ts","../../../src/lib/dialog/dialog.component.html","../../../src/lib/ui-kit.module.ts","../../../src/lib/dialog/dialog-ref.ts","../../../src/lib/dialog/dialog.tokens.ts","../../../src/lib/dialog/dialog.service.ts","../../../src/cqa-lib-cqa-ui.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, HostListener } from '@angular/core';\n\nexport type ButtonVariant = 'filled' | 'outlined' | 'text' | 'elevated' | 'tonal';\n\n@Component({\n selector: 'cqa-button',\n templateUrl: './button.component.html',\n styleUrls: []\n})\nexport class ButtonComponent {\n\n @Input() variant: ButtonVariant = 'filled';\n @Input() disabled: boolean = false;\n @Input() icon?: string;\n @Input() iconPosition: 'start' | 'end' = 'start';\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n // Internal state tracking\n isHovered: boolean = false;\n isFocused: boolean = false;\n isPressed: boolean = false;\n\n get hasIcon(): boolean {\n return !!this.icon;\n }\n\n get buttonClasses(): string {\n const baseClasses = [\n 'cqa-flex',\n 'cqa-flex-col',\n 'cqa-justify-center',\n 'cqa-items-center',\n 'cqa-p-0',\n 'cqa-gap-2',\n 'cqa-rounded-lg',\n 'cqa-cursor-pointer',\n 'cqa-font-inter',\n 'cqa-font-semibold',\n 'cqa-text-sm',\n 'cqa-leading-[14px]',\n 'cqa-transition-all',\n 'cqa-duration-200',\n 'cqa-outline-none'\n ];\n\n if (this.disabled) {\n baseClasses.push('cqa-cursor-not-allowed');\n }\n\n // Add variant and state specific classes\n const variantClasses = this.getVariantClasses();\n \n return [...baseClasses, ...variantClasses].join(' ');\n }\n\n get stateLayerClasses(): string {\n const classes = [\n 'cqa-flex',\n 'cqa-flex-row',\n 'cqa-justify-center',\n 'cqa-items-center',\n 'cqa-gap-2',\n 'cqa-w-full',\n 'cqa-h-full',\n 'cqa-py-[10px]',\n 'cqa-px-6',\n ];\n\n return classes.join(' ');\n }\n\n get labelClasses(): string {\n const classes = [\n 'cqa-flex',\n 'cqa-items-center',\n 'cqa-text-center',\n 'cqa-font-inter',\n 'cqa-font-semibold',\n 'cqa-text-sm',\n 'cqa-leading-[14px]',\n 'cqa-flex-none',\n this.textClass,\n ];\n\n if (this.disabled) {\n classes.push('cqa-opacity-[0.38]');\n }\n\n return classes.join(' ');\n }\n\n get iconClasses(): string {\n const classes = [\n 'cqa-flex',\n 'cqa-items-center',\n 'cqa-justify-center',\n 'cqa-w-[14px]',\n 'cqa-h-[14px]',\n 'cqa-shrink-0',\n 'cqa-flex-none'\n ];\n if (this.disabled) {\n classes.push('cqa-opacity-[0.38]');\n }\n return classes.join(' ');\n }\n\n private getVariantClasses(): string[] {\n const classes: string[] = [];\n\n if (this.variant === 'filled') {\n if (this.disabled) {\n classes.push('cqa-bg-primary-muted');\n } else {\n classes.push('cqa-bg-primary');\n if (this.isHovered) {\n classes.push('cqa-shadow-[0px_1px_2px_rgba(0,0,0,0.3),0px_1px_3px_1px_rgba(0,0,0,0.15)]');\n }\n }\n } else if (this.variant === 'outlined') {\n if (this.disabled) {\n classes.push('cqa-bg-transparent', 'cqa-border', 'cqa-border-primary-muted');\n } else {\n if (this.isFocused) {\n classes.push('cqa-bg-primary-surface-alt', 'cqa-border', 'cqa-border-primary-hover', 'cqa-shadow-[0px_4px_4px_rgba(0,0,0,0.25)]');\n } else if (this.isHovered || this.isPressed) {\n classes.push('cqa-bg-primary-surface', 'cqa-border', 'cqa-border-primary');\n } else {\n classes.push('cqa-bg-transparent', 'cqa-border', 'cqa-border-slate');\n }\n }\n } else if (this.variant === 'text') {\n if (this.disabled) {\n classes.push('cqa-bg-transparent');\n } else {\n classes.push('cqa-bg-transparent');\n if (this.isHovered || this.isFocused || this.isPressed) {\n classes.push('cqa-bg-primary-surface');\n }\n }\n } else if (this.variant === 'elevated') {\n if (this.disabled) {\n classes.push('cqa-bg-primary-muted', 'cqa-shadow-none');\n } else {\n if (this.isFocused) {\n classes.push('cqa-bg-primary-surface-alt', 'cqa-shadow-[0px_4px_4px_rgba(0,0,0,0.25)]');\n } else if (this.isPressed) {\n classes.push('cqa-bg-primary-surface', 'cqa-shadow-[0px_1px_2px_rgba(0,0,0,0.3),0px_1px_3px_1px_rgba(0,0,0,0.15)]');\n } else if (this.isHovered) {\n classes.push('cqa-bg-primary-surface-alt', 'cqa-shadow-[0px_1px_2px_rgba(0,0,0,0.3),0px_2px_6px_2px_rgba(0,0,0,0.15)]');\n } else {\n classes.push('cqa-bg-primary-surface', 'cqa-shadow-[0px_1px_2px_rgba(0,0,0,0.3),0px_1px_3px_1px_rgba(0,0,0,0.15)]');\n }\n }\n } else if (this.variant === 'tonal') {\n if (this.disabled) {\n classes.push('cqa-bg-primary-muted');\n } else {\n if (this.isHovered) {\n classes.push('cqa-bg-tonal-hover', 'cqa-shadow-[0px_1px_2px_rgba(0,0,0,0.3),0px_1px_3px_1px_rgba(0,0,0,0.15)]');\n } else {\n classes.push('cqa-bg-primary-surface-alt');\n }\n }\n }\n\n return classes;\n }\n\n get textClass(): string {\n if (this.disabled) {\n if (this.variant === 'outlined' || this.variant === 'text') {\n return 'cqa-text-ink';\n }\n return 'cqa-text-ink-muted';\n }\n\n switch (this.variant) {\n case 'filled':\n return 'cqa-text-surface-default';\n case 'outlined':\n if (this.isFocused || this.isHovered || this.isPressed) {\n return 'cqa-text-primary-hover';\n }\n return 'cqa-text-slate';\n case 'text':\n case 'elevated':\n return 'cqa-text-primary-hover';\n case 'tonal':\n return 'cqa-text-ink';\n default:\n return '';\n }\n }\n\n @HostListener('mouseenter')\n onMouseEnter() {\n if (!this.disabled) {\n this.isHovered = true;\n }\n }\n\n @HostListener('mouseleave')\n onMouseLeave() {\n this.isHovered = false;\n this.isPressed = false;\n }\n\n @HostListener('mousedown')\n onMouseDown() {\n if (!this.disabled) {\n this.isPressed = true;\n }\n }\n\n @HostListener('mouseup')\n onMouseUp() {\n this.isPressed = false;\n }\n\n @HostListener('focus')\n onFocus() {\n if (!this.disabled) {\n this.isFocused = true;\n }\n }\n\n @HostListener('blur')\n onBlur() {\n this.isFocused = false;\n this.isPressed = false;\n }\n\n onClick(event: MouseEvent) {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n}\n\n","<div id=\"cqa-ui-root\" style=\"display: inline-block; width: auto;\">\n <button\n [type]=\"type\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n [class]=\"buttonClasses\"\n (click)=\"onClick($event)\"\n >\n <span [class]=\"stateLayerClasses\">\n <span *ngIf=\"icon && iconPosition === 'start'\" [class]=\"iconClasses\" [ngClass]=\"textClass\">\n <mat-icon class=\"cqa-text-[18px] cqa-leading-[18px] cqa-w-[18px] cqa-h-[18px]\">\n {{ icon }}\n </mat-icon>\n </span>\n <span [class]=\"labelClasses\" [ngClass]=\"textClass\">\n <ng-content></ng-content>\n </span>\n <span *ngIf=\"icon && iconPosition === 'end'\" [class]=\"iconClasses\" [ngClass]=\"textClass\">\n <mat-icon class=\"cqa-text-[18px] cqa-leading-[18px] cqa-w-[18px] cqa-h-[18px]\">\n {{ icon }}\n </mat-icon>\n </span>\n </span>\n </button>\n</div>\n\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\n\ntype SearchBarSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'cqa-search-bar',\n templateUrl: './search-bar.component.html',\n styleUrls: []\n})\nexport class SearchBarComponent implements OnChanges {\n\n /** Placeholder text for the input */\n @Input() placeholder = 'Search';\n\n /** Initial value or externally controlled value */\n @Input() value = '';\n\n /** Disable interactions */\n @Input() disabled = false;\n\n /** Whether the clear button should be visible when there is text */\n @Input() showClear = true;\n\n /** Accessible label for the input */\n @Input() ariaLabel = 'Search';\n\n /** Automatically focus the input when rendered */\n @Input() autoFocus = false;\n\n /** Search bar size */\n @Input() size: SearchBarSize = 'md';\n\n /** Stretch to fill container width */\n @Input() fullWidth = false;\n\n /** Emit on value changes (e.g. for two-way binding) */\n @Output() valueChange = new EventEmitter<string>();\n\n /** Emit when user submits search (Enter key or form submit) */\n @Output() search = new EventEmitter<string>();\n\n /** Emit when the value is cleared via the clear button */\n @Output() cleared = new EventEmitter<void>();\n\n inputValue = '';\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value'] && changes['value'].currentValue !== undefined) {\n const newValue = changes['value'].currentValue ?? '';\n if (newValue !== this.inputValue) {\n this.inputValue = newValue;\n }\n }\n }\n\n readonly widthClasses: Record<SearchBarSize, string> = {\n sm: 'cqa-w-[295px]',\n md: 'cqa-w-[395px]',\n lg: 'cqa-w-[495px]',\n };\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement | null;\n const nextValue = target?.value ?? '';\n this.inputValue = nextValue;\n this.valueChange.emit(this.inputValue);\n }\n\n onSubmit(event: Event): void {\n event.preventDefault();\n if (this.disabled) {\n return;\n }\n\n this.search.emit(this.inputValue.trim());\n }\n\n clear(): void {\n if (this.disabled || this.inputValue === '') {\n return;\n }\n\n this.inputValue = '';\n this.valueChange.emit('');\n this.cleared.emit();\n }\n}\n","<div id=\"cqa-ui-root\" [style.display]=\"fullWidth ? 'block' : 'inline-block'\" [style.width]=\"fullWidth ? '100%' : 'auto'\">\n <form\n class=\"cqa-inline-flex cqa-items-center cqa-gap-2 cqa-px-6 cqa-py-3 cqa-text-[14px] cqa-border cqa-border-gray-200 cqa-rounded-md cqa-bg-white cqa-shadow-sm cqa-transition-colors\"\n [ngClass]=\"fullWidth ? 'cqa-w-full' : widthClasses[size]\"\n (submit)=\"onSubmit($event)\"\n >\n <span\n class=\"cqa-flex-none cqa-flex cqa-items-center cqa-justify-center cqa-text-gray-400 cqa-w-4 cqa-h-4\"\n [ngClass]=\"{ 'cqa-opacity-[0.38]': disabled }\"\n >\n <mat-icon\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-leading-none cqa-p-0\"\n [style.width.px]=\"16\"\n [style.height.px]=\"16\"\n [style.fontSize.px]=\"16\"\n >\n search\n </mat-icon>\n </span>\n\n <input\n type=\"text\"\n class=\"cqa-flex-1 cqa-min-w-[180px] cqa-border-none cqa-outline-none cqa-bg-transparent placeholder:cqa-text-gray-400 disabled:cqa-text-gray-400 disabled:cqa-cursor-not-allowed cqa-font-['SF_Pro_Text'] cqa-font-normal cqa-text-[12.3px] cqa-leading-none cqa-tracking-normal cqa-align-middle cqa-text-[#99999E]\"\n style=\"font-family: 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; letter-spacing: 0;\"\n [placeholder]=\"placeholder\"\n [value]=\"inputValue\"\n (input)=\"onInput($event)\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"ariaLabel\"\n autocomplete=\"off\"\n autocapitalize=\"none\"\n spellcheck=\"false\"\n [attr.autofocus]=\"autoFocus ? '' : null\"\n />\n\n <button\n *ngIf=\"showClear && inputValue\"\n type=\"button\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-p-0 cqa-w-4 cqa-h-4 cqa-border-0 cqa-bg-transparent cqa-cursor-pointer cqa-text-gray-500 cqa-hover:cqa-text-gray-700 disabled:cqa-text-gray-300 cqa-transition-colors cqa-leading-none\"\n (click)=\"clear()\"\n [disabled]=\"disabled\"\n aria-label=\"Clear search\"\n >\n <mat-icon\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-leading-none cqa-p-0\"\n [style.width.px]=\"16\"\n [style.height.px]=\"16\"\n [style.fontSize.px]=\"16\"\n [ngClass]=\"{ 'cqa-opacity-[0.38]': disabled }\"\n >\n close\n </mat-icon>\n </button>\n </form>\n</div>\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\ntype SegmentOption = {\n label: string;\n value: string;\n disabled?: boolean;\n};\n\n@Component({\n selector: 'cqa-segment-control',\n templateUrl: './segment-control.component.html',\n styleUrls: [],\n})\nexport class SegmentControlComponent implements OnChanges, AfterViewInit, OnDestroy {\n\n @Input() segments: SegmentOption[] = [\n { label: 'Tab Group', value: 'tab-group-1' },\n { label: 'Tab Group', value: 'tab-group-2' },\n ];\n\n @Input() value?: string;\n @Input() disabled = false;\n\n @Output() valueChange = new EventEmitter<string>();\n\n @ViewChildren('segmentButton') segmentButtons!: QueryList<ElementRef<HTMLButtonElement>>;\n @ViewChild('segmentContainer') segmentContainer?: ElementRef<HTMLDivElement>;\n\n indicatorStyle: Record<string, string> = {};\n indicatorVisible = false;\n private buttonChangesSub?: Subscription;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['segments'] || changes['value']) {\n this.ensureSelectedValue();\n }\n }\n\n ngAfterViewInit(): void {\n this.buttonChangesSub = this.segmentButtons.changes.subscribe(() => this.updateIndicator());\n this.ensureSelectedValue();\n this.updateIndicator();\n }\n\n ngOnDestroy(): void {\n this.buttonChangesSub?.unsubscribe?.();\n }\n\n trackByValue(_index: number, option: SegmentOption): string {\n return option.value;\n }\n\n isSelected(option: SegmentOption): boolean {\n return option.value === this.value;\n }\n\n select(option: SegmentOption, index: number): void {\n if (this.disabled || option.disabled) {\n return;\n }\n\n const nextValue = option.value;\n if (nextValue !== this.value) {\n this.value = nextValue;\n this.valueChange.emit(nextValue);\n }\n\n this.focusButton(index);\n this.updateIndicator();\n }\n\n onKeyDown(event: KeyboardEvent, currentIndex: number): void {\n if (this.disabled) {\n return;\n }\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n event.preventDefault();\n this.moveSelection(1, currentIndex);\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n event.preventDefault();\n this.moveSelection(-1, currentIndex);\n break;\n case 'Home':\n event.preventDefault();\n this.selectFirstEnabled();\n break;\n case 'End':\n event.preventDefault();\n this.selectLastEnabled();\n break;\n case ' ':\n case 'Enter':\n event.preventDefault();\n this.select(this.segments[currentIndex], currentIndex);\n break;\n default:\n break;\n }\n }\n\n private moveSelection(step: 1 | -1, startIndex: number): void {\n const enabledIndexes = this.getEnabledIndexes();\n if (enabledIndexes.length === 0) {\n return;\n }\n\n const currentEnabledIndex = enabledIndexes.indexOf(startIndex);\n const fallbackIndex = this.getSelectedIndex(enabledIndexes);\n const baseIndex = currentEnabledIndex >= 0 ? currentEnabledIndex : fallbackIndex;\n const nextPosition = (baseIndex + step + enabledIndexes.length) % enabledIndexes.length;\n const targetIndex = enabledIndexes[nextPosition];\n\n this.select(this.segments[targetIndex], targetIndex);\n }\n\n private selectFirstEnabled(): void {\n const enabledIndexes = this.getEnabledIndexes();\n if (enabledIndexes.length > 0) {\n const index = enabledIndexes[0];\n this.select(this.segments[index], index);\n this.updateIndicator();\n }\n }\n\n private selectLastEnabled(): void {\n const enabledIndexes = this.getEnabledIndexes();\n if (enabledIndexes.length > 0) {\n const index = enabledIndexes[enabledIndexes.length - 1];\n this.select(this.segments[index], index);\n this.updateIndicator();\n }\n }\n\n private getEnabledIndexes(): number[] {\n return this.segments\n .map((option, index) => ({ option, index }))\n .filter(({ option }) => !option.disabled)\n .map(({ index }) => index);\n }\n\n private getSelectedIndex(enabledIndexes: number[]): number {\n const current = this.segments.findIndex((option) => option.value === this.value && !option.disabled);\n if (current >= 0) {\n return enabledIndexes.indexOf(current);\n }\n\n return 0;\n }\n\n private ensureSelectedValue(): void {\n const enabled = this.segments.filter((option) => !option.disabled);\n if (enabled.length === 0) {\n this.value = undefined;\n return;\n }\n\n if (!this.value || !this.segments.some((option) => option.value === this.value)) {\n this.value = enabled[0].value;\n this.valueChange.emit(this.value);\n const index = this.segments.indexOf(enabled[0]);\n this.focusButton(index);\n this.updateIndicator(index);\n return;\n }\n\n const selected = this.segments.find((option) => option.value === this.value);\n if (selected?.disabled) {\n this.value = enabled[0].value;\n this.valueChange.emit(this.value);\n const index = this.segments.indexOf(enabled[0]);\n this.focusButton(index);\n this.updateIndicator(index);\n }\n this.updateIndicator();\n }\n\n private focusButton(index: number): void {\n queueMicrotask(() => {\n const button = this.segmentButtons?.get(index)?.nativeElement;\n button?.focus();\n });\n }\n\n private updateIndicator(preferredIndex?: number): void {\n queueMicrotask(() => {\n const container = this.segmentContainer?.nativeElement;\n const buttons = this.segmentButtons?.toArray() ?? [];\n if (!container || buttons.length === 0) {\n this.indicatorVisible = false;\n this.indicatorStyle = {};\n return;\n }\n\n const index = preferredIndex ?? buttons.findIndex((button, idx) => this.segments[idx]?.value === this.value);\n if (index === -1) {\n this.indicatorVisible = false;\n this.indicatorStyle = {};\n return;\n }\n\n const buttonEl = buttons[index]?.nativeElement;\n if (!buttonEl) {\n this.indicatorVisible = false;\n this.indicatorStyle = {};\n return;\n }\n\n const containerRect = container.getBoundingClientRect();\n const buttonRect = buttonEl.getBoundingClientRect();\n const offsetLeft = buttonEl.offsetLeft;\n const offsetTop = buttonEl.offsetTop;\n const width = buttonEl.offsetWidth;\n const height = buttonEl.offsetHeight;\n\n const isDisabled = this.disabled || this.segments[index]?.disabled;\n this.indicatorStyle = {\n width: `${width}px`,\n height: `${height}px`,\n left: `${offsetLeft}px`,\n top: `${offsetTop}px`,\n backgroundColor: isDisabled ? '#9BA0F4' : '#3F43EE',\n };\n this.indicatorVisible = true;\n });\n }\n\n get isIndicatorVisible(): boolean {\n return this.indicatorVisible;\n }\n}\n","<div id=\"cqa-ui-root\" style=\"display: inline-block;\">\n <div\n #segmentContainer\n class=\"cqa-relative cqa-inline-flex cqa-flex-row cqa-items-start cqa-p-[3.5px] cqa-h-[31.5px] cqa-bg-[#F5F5F5] cqa-rounded-[8px]\"\n role=\"tablist\"\n [attr.aria-disabled]=\"disabled || null\"\n >\n <div\n class=\"cqa-absolute cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-pointer-events-none\"\n [class.cqa-opacity-0]=\"!isIndicatorVisible\"\n [ngStyle]=\"indicatorStyle\"\n aria-hidden=\"true\"\n ></div>\n\n <button\n *ngFor=\"let segment of segments; index as index; trackBy: trackByValue\"\n #segmentButton\n type=\"button\"\n role=\"tab\"\n class=\"cqa-relative cqa-z-10 cqa-flex cqa-flex-col cqa-justify-center cqa-items-center cqa-px-[14px] cqa-py-[3.5px] cqa-h-[25px] cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-whitespace-nowrap cqa-text-center focus:cqa-outline-none focus-visible:cqa-outline-none focus-visible:cqa-ring-0 focus-visible:cqa-ring-offset-0 cqa-flex-none\"\n [ngClass]=\"{\n 'cqa-text-white cqa-font-medium': isSelected(segment),\n 'cqa-text-[#99999E]': !isSelected(segment) && !(disabled || segment.disabled),\n 'cqa-cursor-not-allowed': disabled || segment.disabled,\n 'cqa-text-[#C7C7C7]': (disabled || segment.disabled) && !isSelected(segment),\n 'cqa-hover:cqa-text-black': !isSelected(segment) && !disabled && !segment.disabled\n }\"\n [disabled]=\"disabled || segment.disabled\"\n [attr.aria-selected]=\"isSelected(segment)\"\n [attr.tabindex]=\"!disabled && !segment.disabled ? (isSelected(segment) ? 0 : -1) : -1\"\n (click)=\"select(segment, index)\"\n (keydown)=\"onKeyDown($event, index)\"\n >\n <span class=\"cqa-flex cqa-items-center cqa-justify-center cqa-h-[18px] cqa-font-['Inter'] cqa-font-normal cqa-text-[12px] cqa-leading-[12px] cqa-text-center cqa-align-middle\">\n {{ segment.label }}\n </span>\n </button>\n </div>\n</div>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { DialogButtonAlignment, DialogButtonConfig, DialogConfig, DialogContentConfig } from './dialog.models';\nimport { ButtonVariant } from '../button/button.component';\nimport { DialogRef } from './dialog-ref';\n\n@Component({\n selector: 'cqa-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogComponent<TResult = unknown> {\n\n @ViewChild(CdkPortalOutlet, { static: true }) portalOutlet?: CdkPortalOutlet;\n\n config!: DialogConfig<DialogContentConfig, TResult>;\n dialogRef!: DialogRef<TResult>;\n\n contentAttached = false;\n\n constructor(private readonly viewContainerRef: ViewContainerRef, private readonly cdr: ChangeDetectorRef) {}\n\n attachTemplate(template: TemplateRef<unknown>, context?: Record<string, unknown>): void {\n if (!this.portalOutlet) {\n return;\n }\n\n const templateContext =\n context ??\n {\n $implicit: this.config?.data,\n data: this.config?.data,\n };\n const portal = new TemplatePortal(template, this.viewContainerRef, templateContext);\n this.portalOutlet.attachTemplatePortal(portal);\n this.markContentAttached();\n }\n\n attachComponent(component: ComponentPortal<unknown>): ComponentRef<unknown> | undefined {\n if (!this.portalOutlet) {\n return undefined;\n }\n\n const componentRef = this.portalOutlet.attachComponentPortal(component);\n this.markContentAttached();\n return componentRef;\n }\n\n async onButtonClick(button: DialogButtonConfig<TResult>): Promise<void> {\n const closeOnClick = button.closeOnClick ?? true;\n let handlerResult: TResult | false | void | Promise<TResult | false | void> = undefined;\n\n if (button.handler) {\n handlerResult = button.handler(this.dialogRef);\n }\n\n const resolved = handlerResult instanceof Promise ? await handlerResult : handlerResult;\n\n if (!closeOnClick || resolved === false) {\n return;\n }\n\n this.dialogRef.close(resolved as TResult | undefined);\n }\n\n get buttonAlignmentClass(): string {\n const alignment = this.config?.buttonAlignment ?? 'right';\n return this.mapAlignmentToClass(alignment);\n }\n\n get panelClassList(): string[] {\n const baseClasses = [\n 'cqa-relative',\n 'cqa-w-full',\n 'cqa-bg-white',\n 'cqa-rounded-2xl',\n 'cqa-shadow-md',\n 'cqa-border',\n 'cqa-border-[#E5E7EB]',\n 'cqa-p-6',\n 'cqa-text-left',\n ];\n\n const custom = this.config?.panelClass;\n\n if (!custom) {\n return baseClasses;\n }\n\n return Array.isArray(custom) ? [...baseClasses, ...custom] : [...baseClasses, custom];\n }\n\n get panelStyles(): Record<string, string | undefined> {\n return {\n width: this.config?.width,\n maxWidth: this.config?.maxWidth ?? '480px',\n };\n }\n\n buttonVariant(button: DialogButtonConfig<TResult>): ButtonVariant {\n const role = this.normalizeRole(button.role);\n\n switch (role) {\n case 'secondary':\n return 'outlined';\n case 'text':\n return 'text';\n case 'tonal':\n return 'tonal';\n case 'elevated':\n return 'elevated';\n case 'filled':\n case 'primary':\n case 'warn':\n default:\n return 'filled';\n }\n }\n\n buttonHostClasses(button: DialogButtonConfig<TResult>): string[] {\n const role = this.normalizeRole(button.role);\n\n if (role === 'warn') {\n return ['cqa-dialog-btn-warn'];\n }\n\n return [];\n }\n\n private mapAlignmentToClass(alignment: DialogButtonAlignment): string {\n switch (alignment) {\n case 'left':\n return 'cqa-justify-start';\n case 'center':\n return 'cqa-justify-center';\n case 'right':\n default:\n return 'cqa-justify-end';\n }\n }\n\n private markContentAttached(): void {\n this.contentAttached = true;\n this.cdr.markForCheck();\n }\n\n private normalizeRole(role: string | undefined): string {\n return (role ?? 'secondary').trim().split(/\\s+/)[0];\n }\n}\n\n\n","<div id=\"cqa-ui-root\" style=\"display: block;\">\n <div class=\"cqa-flex cqa-w-full cqa-justify-center cqa-px-4 sm:cqa-px-6\">\n <div [ngClass]=\"panelClassList\" [ngStyle]=\"panelStyles\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-5\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-text-lg cqa-font-semibold cqa-text-[#111827]\">\n {{ config.title }}\n </h2>\n\n <p *ngIf=\"config.description\" class=\"cqa-text-sm cqa-leading-6 cqa-text-[#4B5563]\">\n {{ config.description }}\n </p>\n\n <div\n *ngIf=\"config.warning\"\n class=\"cqa-rounded-xl cqa-border cqa-border-red-200 cqa-bg-red-50 cqa-px-4 cqa-py-3 cqa-text-sm cqa-leading-5 cqa-text-red-700\"\n >\n {{ config.warning }}\n </div>\n </div>\n\n <div class=\"cqa-text-sm cqa-text-[#111827]\" [class.hidden]=\"!contentAttached\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n <div class=\"cqa-mt-4 cqa-flex cqa-flex-wrap cqa-gap-3\" [ngClass]=\"buttonAlignmentClass\">\n <cqa-button\n *ngFor=\"let button of config.buttons\"\n type=\"button\"\n [variant]=\"buttonVariant(button)\"\n [ngClass]=\"buttonHostClasses(button)\"\n (clicked)=\"onButtonClick(button)\"\n >\n {{ button.label }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { ButtonComponent } from './button/button.component';\nimport { SearchBarComponent } from './search-bar/search-bar.component';\nimport { SegmentControlComponent } from './segment-control/segment-control.component';\nimport { DialogComponent } from './dialog/dialog.component';\n// import { RootWrapperComponent } from './root-wrapper/root-wrapper.component';\n// import { CardComponent } from './card/card.component';\n// import { InputComponent } from './input/input.component';\n// import { IconButtonComponent } from './icon-button/icon-button.component';\n\n@NgModule({\n declarations: [\n ButtonComponent,\n SearchBarComponent,\n SegmentControlComponent,\n DialogComponent,\n // RootWrapperComponent,\n // CardComponent,\n // InputComponent,\n // IconButtonComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n MatIconModule,\n OverlayModule,\n PortalModule\n ],\n exports: [\n ButtonComponent,\n SearchBarComponent,\n SegmentControlComponent,\n DialogComponent,\n // RootWrapperComponent,\n // CardComponent,\n // InputComponent,\n // IconButtonComponent\n ]\n})\nexport class UiKitModule { }\n\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\n\nexport class DialogRef<TResult = unknown> {\n private readonly closed$ = new Subject<TResult | undefined>();\n private isClosed = false;\n private componentInstance?: unknown;\n\n constructor(private readonly overlayRef: OverlayRef) {\n this.overlayRef.detachments().subscribe(() => {\n this.finishClose(undefined);\n });\n }\n\n close(result?: TResult): void {\n if (this.isClosed) {\n return;\n }\n\n this.finishClose(result);\n this.overlayRef.dispose();\n }\n\n afterClosed(): Observable<TResult | undefined> {\n return this.closed$.asObservable();\n }\n\n setComponentInstance(instance: unknown): void {\n this.componentInstance = instance;\n }\n\n getComponentInstance<TComponent>(): TComponent | undefined {\n return this.componentInstance as TComponent | undefined;\n }\n\n private finishClose(result: TResult | undefined): void {\n if (this.isClosed) {\n return;\n }\n\n this.isClosed = true;\n this.closed$.next(result);\n this.closed$.complete();\n }\n}\n\n\n","import { InjectionToken } from '@angular/core';\nimport { DialogRef } from './dialog-ref';\n\nexport const DIALOG_REF = new InjectionToken<DialogRef<any>>('CQA_DIALOG_REF');\nexport const DIALOG_DATA = new InjectionToken<any>('CQA_DIALOG_DATA');\n\n\n","import { Injectable, Injector } from '@angular/core';\nimport { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { filter } from 'rxjs/operators';\nimport { DialogConfig, DialogContentConfig } from './dialog.models';\nimport { DialogRef } from './dialog-ref';\nimport { DialogComponent } from './dialog.component';\nimport { DIALOG_DATA, DIALOG_REF } from './dialog.tokens';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\n constructor(private readonly overlay: Overlay, private readonly injector: Injector) {}\n\n open<TContent extends DialogContentConfig = DialogContentConfig, TResult = unknown>(\n config: DialogConfig<TContent, TResult>\n ): DialogRef<TResult> {\n this.assertValidConfig(config);\n\n const overlayRef = this.overlay.create(this.buildOverlayConfig(config));\n const dialogRef = new DialogRef<TResult>(overlayRef);\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: DIALOG_REF, useValue: dialogRef },\n { provide: DIALOG_DATA, useValue: config.data },\n ],\n });\n\n const containerPortal = new ComponentPortal(DialogComponent, undefined, injector);\n const containerRef = overlayRef.attach(containerPortal);\n const containerInstance = containerRef.instance as DialogComponent<TResult>;\n\n containerInstance.config = config;\n containerInstance.dialogRef = dialogRef;\n\n if (config.content?.type === 'template') {\n containerInstance.attachTemplate(\n config.content.template,\n config.content.context ?? {\n $implicit: config.data,\n data: config.data,\n }\n );\n }\n\n if (config.content?.type === 'component') {\n const componentPortal = new ComponentPortal(\n config.content.component,\n undefined,\n Injector.create({\n parent: injector,\n providers: [\n { provide: DIALOG_REF, useValue: dialogRef },\n { provide: DIALOG_DATA, useValue: config.data },\n ],\n })\n );\n\n const componentRef = containerInstance.attachComponent(componentPortal);\n\n if (componentRef && config.content.inputs) {\n Object.entries(config.content.inputs).forEach(([key, value]) => {\n (componentRef.instance as Record<string, unknown>)[key] = value;\n });\n componentRef.changeDetectorRef.markForCheck();\n }\n\n if (componentRef) {\n dialogRef.setComponentInstance(componentRef.instance);\n }\n }\n\n containerRef.changeDetectorRef.markForCheck();\n\n if (!config.disableClose) {\n overlayRef.backdropClick().subscribe(() => dialogRef.close());\n overlayRef\n .keydownEvents()\n .pipe(\n filter((event): event is KeyboardEvent => {\n return (event as KeyboardEvent).key === 'Escape' || (event as KeyboardEvent).key === 'Esc';\n })\n )\n .subscribe(() => dialogRef.close());\n }\n\n return dialogRef;\n }\n\n private assertValidConfig<TContent extends DialogContentConfig, TResult>(\n config: DialogConfig<TContent, TResult>\n ): void {\n if (!config.title) {\n throw new Error('Dialog title is required.');\n }\n\n if (!config.buttons || config.buttons.length < 2) {\n throw new Error('Dialog requires at least two buttons to be provided.');\n }\n }\n\n private buildOverlayConfig<TContent extends DialogContentConfig, TResult>(\n config: DialogConfig<TContent, TResult>\n ): OverlayConfig {\n const panelClass = Array.isArray(config.panelClass)\n ? config.panelClass\n : config.panelClass\n ? [config.panelClass]\n : [];\n\n return new OverlayConfig({\n hasBackdrop: true,\n backdropClass: ['cdk-overlay-dark-backdrop', 'cqa-dialog-backdrop'],\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n width: config.width,\n maxWidth: config.maxWidth ?? '90vw',\n panelClass: ['cqa-dialog-panel', ...panelClass],\n });\n }\n}\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1","i1.ButtonComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cqa-lib-cqa-ui.mjs","sources":["../../../src/lib/button/button.component.ts","../../../src/lib/button/button.component.html","../../../src/lib/search-bar/search-bar.component.ts","../../../src/lib/search-bar/search-bar.component.html","../../../src/lib/segment-control/segment-control.component.ts","../../../src/lib/segment-control/segment-control.component.html","../../../src/lib/dialog/dialog.component.ts","../../../src/lib/dialog/dialog.component.html","../../../src/lib/table/dynamic-table/dynamic-cell.directive.ts","../../../src/lib/full-table-loader/full-table-loader.component.ts","../../../src/lib/full-table-loader/full-table-loader.component.html","../../../src/lib/table-data-loader/table-data-loader.component.ts","../../../src/lib/table-data-loader/table-data-loader.component.html","../../../src/lib/table/dynamic-table/dynamic-table.component.ts","../../../src/lib/table/dynamic-table/dynamic-table.component.html","../../../src/lib/inline-sort/inline-sort.component.ts","../../../src/lib/pagination/pagination.component.ts","../../../src/lib/pagination/pagination.component.html","../../../src/lib/action-menu/action-menu.component.ts","../../../src/lib/action-menu/action-menu.component.html","../../../src/lib/other-button/other-button.component.ts","../../../src/lib/other-button/other-button.component.html","../../../src/lib/dynamic-select/dynamic-select-field.component.ts","../../../src/lib/dynamic-select/dynamic-select-field.component.html","../../../src/lib/filters/dynamic-filter/dynamic-filter.component.ts","../../../src/lib/filters/dynamic-filter/dynamic-filter.component.html","../../../src/lib/column-visibility/column-visibility.component.ts","../../../src/lib/column-visibility/column-visibility.component.html","../../../src/lib/table-action-toolbar/table-action-toolbar.component.ts","../../../src/lib/table-action-toolbar/table-action-toolbar.component.html","../../../src/lib/dashboards/metrics-card/metrics-block.component.ts","../../../src/lib/dashboards/metrics-card/metrics-block.component.html","../../../src/lib/dashboards/metrics-card/metrics-card.component.ts","../../../src/lib/dashboards/metrics-card/metrics-card.component.html","../../../src/lib/dashboards/chart-card/chart-card.component.ts","../../../src/lib/dashboards/chart-card/chart-card.component.html","../../../src/lib/dashboards/progress-text-card/progress-text-card.component.ts","../../../src/lib/dashboards/progress-text-card/progress-text-card.component.html","../../../src/lib/dashboards/dashboard-header/dashboard-header.component.ts","../../../src/lib/dashboards/dashboard-header/dashboard-header.component.html","../../../src/lib/dashboards/coverage-module-card/coverage-module-card.component.ts","../../../src/lib/dashboards/coverage-module-card/coverage-module-card.component.html","../../../src/lib/dashboards/test-distribution-card/test-distribution-card.component.ts","../../../src/lib/dashboards/test-distribution-card/test-distribution-card.component.html","../../../src/lib/dashboards/failed-test-cases-card/failed-test-cases-card.component.ts","../../../src/lib/dashboards/failed-test-cases-card/failed-test-cases-card.component.html","../../../src/lib/selected-filters/selected-filters.component.ts","../../../src/lib/selected-filters/selected-filters.component.html","../../../src/lib/utils/metadata-colors.util.ts","../../../src/lib/badge/badge.component.ts","../../../src/lib/badge/badge.component.html","../../../src/lib/dashboards/insight-card/insight-card.component.ts","../../../src/lib/dashboards/insight-card/insight-card.component.html","../../../src/lib/dropdown-button/dropdown-button.component.ts","../../../src/lib/dropdown-button/dropdown-button.component.html","../../../src/lib/dashboards/heat-error-map-cell/heat-error-map-cell.component.ts","../../../src/lib/dashboards/heat-error-map-cell/heat-error-map-cell.component.html","../../../src/lib/empty-state/empty-state.component.ts","../../../src/lib/empty-state/empty-state.component.html","../../../src/lib/assets/images/image-assets.constants.ts","../../../src/lib/templates/table-template.component.ts","../../../src/lib/templates/table-template.component.html","../../../src/lib/utils/tw-overlay-container.ts","../../../src/lib/ui-kit.module.ts","../../../src/lib/dialog/dialog-ref.ts","../../../src/lib/dialog/dialog.tokens.ts","../../../src/lib/dialog/dialog.service.ts","../../../src/cqa-lib-cqa-ui.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, HostListener } from '@angular/core';\n\nexport type ButtonVariant = 'filled' | 'outlined' | 'text' | 'elevated' | 'tonal' | 'grey-solid';\n\n@Component({\n selector: 'cqa-button',\n templateUrl: './button.component.html',\n styleUrls: []\n})\nexport class ButtonComponent {\n @Input() variant: ButtonVariant = 'filled';\n @Input() disabled: boolean = false;\n @Input() icon?: string;\n @Input() iconPosition: 'start' | 'end' = 'start';\n @Input() fullWidth: boolean = false;\n @Input() iconColor?: string;\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n @Input() text?: string;\n @Input() customClass?: string;\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n // Internal state tracking\n isHovered: boolean = false;\n isFocused: boolean = false;\n isPressed: boolean = false;\n\n get hasIcon(): boolean {\n return !!this.icon;\n }\n\n get buttonClasses(): string {\n const baseClasses = [\n 'cqa-inline-flex',\n 'cqa-items-center',\n 'cqa-justify-center',\n 'cqa-gap-2',\n 'cqa-py-[10px]',\n 'cqa-rounded-[8px]',\n 'cqa-text-[12.3px]',\n 'cqa-leading-[17.5px]',\n 'cqa-font-medium',\n 'cqa-border',\n ];\n\n if (this.disabled) {\n baseClasses.push('cqa-cursor-not-allowed');\n }\n\n if (this.fullWidth) {\n baseClasses.push('cqa-w-full');\n }\n\n // Add variant and state specific classes\n const variantClasses = this.getVariantClasses();\n \n return [...baseClasses, ...variantClasses, ...(this.customClass ? [this.customClass] : [])].join(' ');\n }\n\n private getVariantClasses(): string[] {\n const classes: string[] = [];\n\n if (this.variant === 'filled') {\n if (this.disabled) {\n classes.push('cqa-bg-primary-muted');\n } else {\n classes.push('cqa-bg-primary cqa-text-white');\n if (this.isHovered) {\n classes.push('cqa-bg-primary-hover');\n }\n }\n } else if (this.variant === 'grey-solid') {\n // Neutral grey solid style\n if (this.disabled) {\n classes.push('cqa-bg-grey-400', 'cqa-border', 'cqa-border-primary-muted');\n } else {\n classes.push('cqa-bg-grey-400', 'cqa-border', 'cqa-border-primary-muted');\n if (this.isHovered) {\n classes.push('cqa-bg-grey-200');\n }\n }\n } else if (this.variant === 'outlined') {\n if (this.disabled) {\n classes.push('cqa-bg-transparent', 'cqa-border', 'cqa-border-primary-muted');\n } else {\n if (this.isFocused) {\n classes.push('cqa-bg-primary-surface-alt', 'cqa-border', 'cqa-border-primary-hover', 'cqa-shadow-[0px_4px_4px_rgba(0,0,0,0.25)]');\n } else if (this.isHovered || this.isPressed) {\n classes.push('cqa-bg-primary-surface', 'cqa-border', 'cqa-border-primary');\n } else {\n classes.push('cqa-bg-transparent', 'cqa-border', 'cqa-border-slate');\n }\n }\n } else if (this.variant === 'text') {\n if (this.disabled) {\n classes.push('cqa-bg-transparent', 'cqa-border-none');\n } else {\n classes.push('cqa-bg-transparent', 'cqa-border-none');\n if (this.isHovered || this.isFocused || this.isPressed) {\n classes.push('cqa-bg-primary-surface');\n }\n }\n } else if (this.variant === 'elevated') {\n if (this.disabled) {\n classes.push('cqa-bg-primary-muted', 'cqa-shadow-none');\n } else {\n if (this.isFocused) {\n classes.push('cqa-bg-primary-surface-alt', 'cqa-shadow-[0px_4px_4px_rgba(0,0,0,0.25)]');\n } else if (this.isPressed) {\n classes.push('cqa-bg-primary-surface', 'cqa-shadow-[0px_1px_2px_rgba(0,0,0,0.3),0px_1px_3px_1px_rgba(0,0,0,0.15)]');\n } else if (this.isHovered) {\n classes.push('cqa-bg-primary-surface-alt', 'cqa-shadow-[0px_1px_2px_rgba(0,0,0,0.3),0px_2px_6px_2px_rgba(0,0,0,0.15)]');\n } else {\n classes.push('cqa-bg-primary-surface', 'cqa-shadow-[0px_1px_2px_rgba(0,0,0,0.3),0px_1px_3px_1px_rgba(0,0,0,0.15)]');\n }\n }\n } else if (this.variant === 'tonal') {\n if (this.disabled) {\n classes.push('cqa-bg-primary-muted');\n } else {\n if (this.isHovered) {\n classes.push('cqa-bg-tonal-hover', 'cqa-shadow-[0px_1px_2px_rgba(0,0,0,0.3),0px_1px_3px_1px_rgba(0,0,0,0.15)]');\n } else {\n classes.push('cqa-bg-primary-surface-alt');\n }\n }\n }\n\n return classes;\n }\n\n get textClass(): string {\n if (this.disabled) {\n if (this.variant === 'outlined' || this.variant === 'text') {\n return 'cqa-text-ink';\n }\n return 'cqa-text-ink-muted';\n }\n\n switch (this.variant) {\n case 'filled':\n return 'cqa-text-surface-default';\n case 'grey-solid':\n return 'cqa-text-black-100';\n case 'outlined':\n if (this.isFocused || this.isHovered || this.isPressed) {\n return 'cqa-text-primary-hover';\n }\n return 'cqa-text-slate';\n case 'text':\n case 'elevated':\n return 'cqa-text-primary-hover';\n case 'tonal':\n return 'cqa-text-ink';\n default:\n return '';\n }\n }\n\n @HostListener('mouseenter')\n onMouseEnter() {\n if (!this.disabled) {\n this.isHovered = true;\n }\n }\n\n @HostListener('mouseleave')\n onMouseLeave() {\n this.isHovered = false;\n this.isPressed = false;\n }\n\n @HostListener('mousedown')\n onMouseDown() {\n if (!this.disabled) {\n this.isPressed = true;\n }\n }\n\n @HostListener('mouseup')\n onMouseUp() {\n this.isPressed = false;\n }\n\n @HostListener('focus')\n onFocus() {\n if (!this.disabled) {\n this.isFocused = true;\n }\n }\n\n @HostListener('blur')\n onBlur() {\n this.isFocused = false;\n this.isPressed = false;\n }\n\n onClick(event: MouseEvent) {\n if (!this.disabled) {\n this.clicked.emit(event);\n }\n }\n}\n\n","<div id=\"cqa-ui-root\">\n <button\n [ngClass]=\"\n text && icon && iconPosition === 'start' ? 'cqa-pr-[24px] cqa-pl-[16px]' :\n text && icon && iconPosition === 'end' ? 'cqa-pl-[24px] cqa-pr-[16px]' :\n text && !icon ? 'cqa-px-[24px]' : !text && icon ? 'cqa-px-[12px]' : 'cqa-px-[24px]'\"\n [type]=\"type\"\n [disabled]=\"disabled\"\n [attr.aria-disabled]=\"disabled\"\n [class]=\"buttonClasses\"\n (click)=\"onClick($event)\"\n >\n\n <mat-icon *ngIf=\"icon && iconPosition === 'start'\" class=\"!cqa-w-[18px] !cqa-h-[18px] !cqa-text-[18px]\" [style.color]=\"iconColor\">\n {{ icon }}\n </mat-icon>\n\n <!-- Dynamic text support -->\n <span *ngIf=\"text\">{{text}}</span>\n\n <ng-content *ngIf=\"!text\" ></ng-content>\n\n <mat-icon *ngIf=\"icon && iconPosition === 'end'\" class=\"!cqa-w-[18px] !cqa-h-[18px] !cqa-text-[18px]\" [style.color]=\"iconColor\">\n {{ icon }}\n </mat-icon>\n\n </button>\n</div>","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\n\ntype SearchBarSize = 'sm' | 'md' | 'lg';\n\n@Component({\n selector: 'cqa-search-bar',\n templateUrl: './search-bar.component.html',\n styleUrls: []\n})\nexport class SearchBarComponent implements OnChanges {\n\n /** Placeholder text for the input */\n @Input() placeholder = 'Search';\n\n /** Initial value or externally controlled value */\n @Input() value = '';\n\n /** Disable interactions */\n @Input() disabled = false;\n\n /** Whether the clear button should be visible when there is text */\n @Input() showClear = true;\n\n /** Accessible label for the input */\n @Input() ariaLabel = 'Search';\n\n /** Automatically focus the input when rendered */\n @Input() autoFocus = false;\n\n /** Search bar size */\n @Input() size: SearchBarSize = 'md';\n\n /** Stretch to fill container width */\n @Input() fullWidth = false;\n\n /** Emit on value changes (e.g. for two-way binding) */\n @Output() valueChange = new EventEmitter<string>();\n\n /** Emit when user submits search (Enter key or form submit) */\n @Output() search = new EventEmitter<string>();\n\n /** Emit when the value is cleared via the clear button */\n @Output() cleared = new EventEmitter<void>();\n\n inputValue = '';\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['value'] && changes['value'].currentValue !== undefined) {\n const newValue = changes['value'].currentValue ?? '';\n if (newValue !== this.inputValue) {\n this.inputValue = newValue;\n }\n }\n }\n\n readonly widthClasses: Record<SearchBarSize, string> = {\n sm: 'cqa-w-[295px]',\n md: 'cqa-w-[395px]',\n lg: 'cqa-w-[495px]',\n };\n\n onInput(event: Event): void {\n const target = event.target as HTMLInputElement | null;\n const nextValue = target?.value ?? '';\n this.inputValue = nextValue;\n this.valueChange.emit(this.inputValue);\n }\n\n onSubmit(event: Event): void {\n event.preventDefault();\n if (this.disabled) {\n return;\n }\n\n this.search.emit(this.inputValue.trim());\n }\n\n clear(): void {\n if (this.disabled || this.inputValue === '') {\n return;\n }\n\n this.inputValue = '';\n this.valueChange.emit('');\n this.cleared.emit();\n }\n}\n","<div id=\"cqa-ui-root\" [style.display]=\"fullWidth ? 'block' : 'inline-block'\"\n [style.width]=\"fullWidth ? '100%' : 'auto'\">\n <form\n class=\"cqa-inline-flex cqa-items-center cqa-gap-2 cqa-px-6 cqa-py-3 cqa-text-[14px] cqa-border cqa-border-gray-200 cqa-rounded-md cqa-bg-white cqa-shadow-sm cqa-transition-colors\"\n [ngClass]=\"fullWidth ? 'cqa-w-full' : widthClasses[size]\" (submit)=\"onSubmit($event)\">\n <span class=\"cqa-flex-none cqa-flex cqa-items-center cqa-justify-center cqa-text-gray-400 cqa-w-4 cqa-h-4\"\n [ngClass]=\"{ 'cqa-opacity-[0.38]': disabled }\">\n <mat-icon class=\"cqa-flex cqa-items-center cqa-justify-center cqa-leading-none cqa-p-0\" [style.width.px]=\"16\"\n [style.height.px]=\"16\" [style.fontSize.px]=\"16\">\n search\n </mat-icon>\n </span>\n\n <input\n type=\"text\"\n class=\"cqa-flex-1 cqa-min-w-[180px] cqa-border-none cqa-outline-none cqa-bg-transparent placeholder:cqa-text-gray-400 disabled:cqa-text-gray-400 disabled:cqa-cursor-not-allowed cqa-font-['SF_Pro_Text'] cqa-font-normal cqa-text-[12.3px] cqa-leading-none cqa-tracking-normal cqa-align-middle cqa-text-muted\"\n [placeholder]=\"placeholder\"\n [value]=\"inputValue\"\n (input)=\"onInput($event)\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"ariaLabel\"\n autocomplete=\"off\"\n autocapitalize=\"none\"\n spellcheck=\"false\"\n [attr.autofocus]=\"autoFocus ? '' : null\"\n />\n\n <button *ngIf=\"showClear && inputValue\" type=\"button\"\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-p-0 cqa-w-4 cqa-h-4 cqa-border-0 cqa-bg-transparent cqa-cursor-pointer cqa-text-gray-500 cqa-hover:cqa-text-gray-700 disabled:cqa-text-gray-300 cqa-transition-colors cqa-leading-none\"\n (click)=\"clear()\" [disabled]=\"disabled\" aria-label=\"Clear search\">\n <mat-icon class=\"cqa-flex cqa-items-center cqa-justify-center cqa-leading-none cqa-p-0\" [style.width.px]=\"16\"\n [style.height.px]=\"16\" [style.fontSize.px]=\"16\" [ngClass]=\"{ 'cqa-opacity-[0.38]': disabled }\">\n close\n </mat-icon>\n </button>\n </form>\n</div>","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\ntype SegmentOption = {\n label: string;\n value: string;\n disabled?: boolean;\n};\n\n@Component({\n selector: 'cqa-segment-control',\n templateUrl: './segment-control.component.html',\n styleUrls: [],\n})\nexport class SegmentControlComponent implements OnChanges, AfterViewInit, OnDestroy {\n\n @Input() segments: SegmentOption[] = [\n { label: 'Tab Group', value: 'tab-group-1' },\n { label: 'Tab Group', value: 'tab-group-2' },\n ];\n\n @Input() value?: string;\n @Input() disabled = false;\n\n @Output() valueChange = new EventEmitter<string>();\n\n @ViewChildren('segmentButton') segmentButtons!: QueryList<ElementRef<HTMLButtonElement>>;\n @ViewChild('segmentContainer') segmentContainer?: ElementRef<HTMLDivElement>;\n\n indicatorStyle: Record<string, string> = {};\n indicatorVisible = false;\n private buttonChangesSub?: Subscription;\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['segments'] || changes['value']) {\n this.ensureSelectedValue();\n }\n }\n\n ngAfterViewInit(): void {\n this.buttonChangesSub = this.segmentButtons.changes.subscribe(() => this.updateIndicator());\n this.ensureSelectedValue();\n this.updateIndicator();\n }\n\n ngOnDestroy(): void {\n this.buttonChangesSub?.unsubscribe?.();\n }\n\n trackByValue(_index: number, option: SegmentOption): string {\n return option.value;\n }\n\n isSelected(option: SegmentOption): boolean {\n return option.value === this.value;\n }\n\n select(option: SegmentOption, index: number): void {\n if (this.disabled || option.disabled) {\n return;\n }\n\n const nextValue = option.value;\n if (nextValue !== this.value) {\n this.value = nextValue;\n this.valueChange.emit(nextValue);\n }\n\n this.focusButton(index);\n this.updateIndicator();\n }\n\n onKeyDown(event: KeyboardEvent, currentIndex: number): void {\n if (this.disabled) {\n return;\n }\n\n switch (event.key) {\n case 'ArrowRight':\n case 'ArrowDown':\n event.preventDefault();\n this.moveSelection(1, currentIndex);\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n event.preventDefault();\n this.moveSelection(-1, currentIndex);\n break;\n case 'Home':\n event.preventDefault();\n this.selectFirstEnabled();\n break;\n case 'End':\n event.preventDefault();\n this.selectLastEnabled();\n break;\n case ' ':\n case 'Enter':\n event.preventDefault();\n this.select(this.segments[currentIndex], currentIndex);\n break;\n default:\n break;\n }\n }\n\n private moveSelection(step: 1 | -1, startIndex: number): void {\n const enabledIndexes = this.getEnabledIndexes();\n if (enabledIndexes.length === 0) {\n return;\n }\n\n const currentEnabledIndex = enabledIndexes.indexOf(startIndex);\n const fallbackIndex = this.getSelectedIndex(enabledIndexes);\n const baseIndex = currentEnabledIndex >= 0 ? currentEnabledIndex : fallbackIndex;\n const nextPosition = (baseIndex + step + enabledIndexes.length) % enabledIndexes.length;\n const targetIndex = enabledIndexes[nextPosition];\n\n this.select(this.segments[targetIndex], targetIndex);\n }\n\n private selectFirstEnabled(): void {\n const enabledIndexes = this.getEnabledIndexes();\n if (enabledIndexes.length > 0) {\n const index = enabledIndexes[0];\n this.select(this.segments[index], index);\n this.updateIndicator();\n }\n }\n\n private selectLastEnabled(): void {\n const enabledIndexes = this.getEnabledIndexes();\n if (enabledIndexes.length > 0) {\n const index = enabledIndexes[enabledIndexes.length - 1];\n this.select(this.segments[index], index);\n this.updateIndicator();\n }\n }\n\n private getEnabledIndexes(): number[] {\n return this.segments\n .map((option, index) => ({ option, index }))\n .filter(({ option }) => !option.disabled)\n .map(({ index }) => index);\n }\n\n private getSelectedIndex(enabledIndexes: number[]): number {\n const current = this.segments.findIndex((option) => option.value === this.value && !option.disabled);\n if (current >= 0) {\n return enabledIndexes.indexOf(current);\n }\n\n return 0;\n }\n\n private ensureSelectedValue(): void {\n const enabled = this.segments.filter((option) => !option.disabled);\n if (enabled.length === 0) {\n this.value = undefined;\n return;\n }\n\n if (!this.value || !this.segments.some((option) => option.value === this.value)) {\n this.value = enabled[0].value;\n this.valueChange.emit(this.value);\n const index = this.segments.indexOf(enabled[0]);\n this.focusButton(index);\n this.updateIndicator(index);\n return;\n }\n\n const selected = this.segments.find((option) => option.value === this.value);\n if (selected?.disabled) {\n this.value = enabled[0].value;\n this.valueChange.emit(this.value);\n const index = this.segments.indexOf(enabled[0]);\n this.focusButton(index);\n this.updateIndicator(index);\n }\n this.updateIndicator();\n }\n\n private focusButton(index: number): void {\n queueMicrotask(() => {\n const button = this.segmentButtons?.get(index)?.nativeElement;\n button?.focus();\n });\n }\n\n private updateIndicator(preferredIndex?: number): void {\n queueMicrotask(() => {\n const container = this.segmentContainer?.nativeElement;\n const buttons = this.segmentButtons?.toArray() ?? [];\n if (!container || buttons.length === 0) {\n this.indicatorVisible = false;\n this.indicatorStyle = {};\n return;\n }\n\n const index = preferredIndex ?? buttons.findIndex((button, idx) => this.segments[idx]?.value === this.value);\n if (index === -1) {\n this.indicatorVisible = false;\n this.indicatorStyle = {};\n return;\n }\n\n const buttonEl = buttons[index]?.nativeElement;\n if (!buttonEl) {\n this.indicatorVisible = false;\n this.indicatorStyle = {};\n return;\n }\n\n const containerRect = container.getBoundingClientRect();\n const buttonRect = buttonEl.getBoundingClientRect();\n const offsetLeft = buttonEl.offsetLeft;\n const offsetTop = buttonEl.offsetTop;\n const width = buttonEl.offsetWidth;\n const height = buttonEl.offsetHeight;\n\n const isDisabled = this.disabled || this.segments[index]?.disabled;\n this.indicatorStyle = {\n width: `${width}px`,\n height: `${height}px`,\n left: `${offsetLeft}px`,\n top: `${offsetTop}px`,\n backgroundColor: isDisabled ? '#9BA0F4' : '#3F43EE',\n };\n this.indicatorVisible = true;\n });\n }\n\n get isIndicatorVisible(): boolean {\n return this.indicatorVisible;\n }\n}\n","<div id=\"cqa-ui-root\" style=\"display: inline-block;\">\n <div\n #segmentContainer\n class=\"cqa-relative cqa-inline-flex cqa-flex-row cqa-items-start cqa-p-[3.5px] cqa-h-[31.5px] cqa-bg-surface-light cqa-rounded-[8px]\"\n role=\"tablist\"\n [attr.aria-disabled]=\"disabled || null\"\n >\n <div\n class=\"cqa-absolute cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-pointer-events-none\"\n [class.cqa-opacity-0]=\"!isIndicatorVisible\" [ngStyle]=\"indicatorStyle\" aria-hidden=\"true\"></div>\n\n <button *ngFor=\"let segment of segments; index as index; trackBy: trackByValue\" #segmentButton type=\"button\"\n role=\"tab\"\n class=\"cqa-relative cqa-z-10 cqa-flex cqa-flex-col cqa-justify-center cqa-items-center cqa-px-[14px] cqa-py-[3.5px] cqa-h-[25px] cqa-rounded-[8px] cqa-transition-all cqa-duration-200 cqa-ease-in-out cqa-whitespace-nowrap cqa-text-center focus:cqa-outline-none focus-visible:cqa-outline-none focus-visible:cqa-ring-0 focus-visible:cqa-ring-offset-0 cqa-flex-none\"\n [ngClass]=\"{\n 'cqa-text-white cqa-font-medium': isSelected(segment),\n 'cqa-text-muted': !isSelected(segment) && !(disabled || segment.disabled),\n 'cqa-cursor-not-allowed': disabled || segment.disabled,\n 'cqa-text-disabled': (disabled || segment.disabled) && !isSelected(segment),\n 'cqa-hover:cqa-text-black': !isSelected(segment) && !disabled && !segment.disabled\n }\" [disabled]=\"disabled || segment.disabled\" [attr.aria-selected]=\"isSelected(segment)\"\n [attr.tabindex]=\"!disabled && !segment.disabled ? (isSelected(segment) ? 0 : -1) : -1\"\n (click)=\"select(segment, index)\" (keydown)=\"onKeyDown($event, index)\">\n <span\n class=\"cqa-flex cqa-items-center cqa-justify-center cqa-h-[18px] cqa-font-['Inter'] cqa-font-normal cqa-text-[12px] cqa-leading-[12px] cqa-text-center cqa-align-middle\">\n {{ segment.label }}\n </span>\n </button>\n </div>\n</div>","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { DialogButtonAlignment, DialogButtonConfig, DialogConfig, DialogContentConfig } from './dialog.models';\nimport { ButtonVariant } from '../button/button.component';\nimport { DialogRef } from './dialog-ref';\n\n@Component({\n selector: 'cqa-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DialogComponent<TResult = unknown> {\n\n @ViewChild(CdkPortalOutlet, { static: true }) portalOutlet?: CdkPortalOutlet;\n\n config!: DialogConfig<DialogContentConfig, TResult>;\n dialogRef!: DialogRef<TResult>;\n\n contentAttached = false;\n\n constructor(private readonly viewContainerRef: ViewContainerRef, private readonly cdr: ChangeDetectorRef) {}\n\n attachTemplate(template: TemplateRef<unknown>, context?: Record<string, unknown>): void {\n if (!this.portalOutlet) {\n return;\n }\n\n const templateContext =\n context ??\n {\n $implicit: this.config?.data,\n data: this.config?.data,\n };\n const portal = new TemplatePortal(template, this.viewContainerRef, templateContext);\n this.portalOutlet.attachTemplatePortal(portal);\n this.markContentAttached();\n }\n\n attachComponent(component: ComponentPortal<unknown>): ComponentRef<unknown> | undefined {\n if (!this.portalOutlet) {\n return undefined;\n }\n\n const componentRef = this.portalOutlet.attachComponentPortal(component);\n this.markContentAttached();\n return componentRef;\n }\n\n async onButtonClick(button: DialogButtonConfig<TResult>): Promise<void> {\n const closeOnClick = button.closeOnClick ?? true;\n let handlerResult: TResult | false | void | Promise<TResult | false | void> = undefined;\n\n if (button.handler) {\n handlerResult = button.handler(this.dialogRef);\n }\n\n const resolved = handlerResult instanceof Promise ? await handlerResult : handlerResult;\n\n if (!closeOnClick || resolved === false) {\n return;\n }\n\n this.dialogRef.close(resolved as TResult | undefined);\n }\n\n get buttonAlignmentClass(): string {\n const alignment = this.config?.buttonAlignment ?? 'right';\n return this.mapAlignmentToClass(alignment);\n }\n\n get panelClassList(): string[] {\n const baseClasses = [\n 'cqa-relative',\n 'cqa-w-full',\n 'cqa-bg-white',\n 'cqa-rounded-2xl',\n 'cqa-shadow-md',\n 'cqa-border',\n 'cqa-border-border-default',\n 'cqa-p-6',\n 'cqa-text-left',\n ];\n\n const custom = this.config?.panelClass;\n\n if (!custom) {\n return baseClasses;\n }\n\n return Array.isArray(custom) ? [...baseClasses, ...custom] : [...baseClasses, custom];\n }\n\n get panelStyles(): Record<string, string | undefined> {\n return {\n width: this.config?.width,\n maxWidth: this.config?.maxWidth ?? '480px',\n };\n }\n\n buttonVariant(button: DialogButtonConfig<TResult>): ButtonVariant {\n const role = this.normalizeRole(button.role);\n\n switch (role) {\n case 'secondary':\n return 'outlined';\n case 'text':\n return 'text';\n case 'tonal':\n return 'tonal';\n case 'elevated':\n return 'elevated';\n case 'filled':\n case 'primary':\n case 'warn':\n default:\n return 'filled';\n }\n }\n\n buttonHostClasses(button: DialogButtonConfig<TResult>): string[] {\n const role = this.normalizeRole(button.role);\n\n if (role === 'warn') {\n return ['cqa-dialog-btn-warn'];\n }\n\n return [];\n }\n\n private mapAlignmentToClass(alignment: DialogButtonAlignment): string {\n switch (alignment) {\n case 'left':\n return 'cqa-justify-start';\n case 'center':\n return 'cqa-justify-center';\n case 'right':\n default:\n return 'cqa-justify-end';\n }\n }\n\n private markContentAttached(): void {\n this.contentAttached = true;\n this.cdr.markForCheck();\n }\n\n private normalizeRole(role: string | undefined): string {\n return (role ?? 'secondary').trim().split(/\\s+/)[0];\n }\n}\n\n\n","<div id=\"cqa-ui-root\">\n <div class=\"cqa-flex cqa-w-full cqa-justify-center cqa-px-4 sm:cqa-px-6\">\n <div [ngClass]=\"panelClassList\" [ngStyle]=\"panelStyles\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-5\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-text-lg cqa-font-semibold cqa-text-dialog\">\n {{ config.title }}\n </h2>\n\n <p *ngIf=\"config.description\" class=\"cqa-text-sm cqa-leading-6 cqa-text-dialog-secondary\">\n {{ config.description }}\n </p>\n\n <div *ngIf=\"config.warning\"\n class=\"cqa-rounded-xl cqa-border cqa-border-red-200 cqa-bg-red-50 cqa-px-4 cqa-py-3 cqa-text-sm cqa-leading-5 cqa-text-red-700\">\n {{ config.warning }}\n </div>\n </div>\n\n <div class=\"cqa-text-sm cqa-text-dialog\" [class.hidden]=\"!contentAttached\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n\n <div class=\"cqa-mt-4 cqa-flex cqa-flex-wrap cqa-gap-3\" [ngClass]=\"buttonAlignmentClass\">\n <cqa-button *ngFor=\"let button of config.buttons\" type=\"button\" [variant]=\"buttonVariant(button)\"\n [ngClass]=\"buttonHostClasses(button)\" (clicked)=\"onButtonClick(button)\">\n {{ button.label }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n</div>","import { Directive, Input, TemplateRef } from \"@angular/core\";\n\n@Directive({\n selector: \"ng-template[dynamicCell]\"\n})\nexport class DynamicCellTemplateDirective {\n @Input(\"dynamicCell\") name!: string;\n constructor(public template: TemplateRef<any>) {}\n}\n\n@Directive({\n selector: \"ng-template[dynamicHeader]\"\n})\nexport class DynamicHeaderTemplateDirective {\n @Input(\"dynamicHeader\") name!: string;\n constructor(public template: TemplateRef<any>) {}\n}\n\n\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'cqa-full-table-loader',\n templateUrl: './full-table-loader.component.html',\n styleUrls: []\n})\nexport class FullTableLoaderComponent {\n @Input() label: string = 'Loading...';\n}\n\n\n","<div\n class=\"table-loading-overlay cqa-absolute cqa-top-0 cqa-bottom-0 cqa-left-0 cqa-right-0 cqa-w-full cqa-h-full cqa-flex cqa-items-center cqa-justify-center cqa-z-[1000]\">\n <div\n class=\"blur-backdrop cqa-absolute cqa-top-0 cqa-bottom-0 cqa-left-0 cqa-right-0 cqa-bg-white/70 cqa-backdrop-blur-[4px] cqa-z-[1]\">\n </div>\n <div\n class=\"loading-spinner cqa-flex cqa-flex-row cqa-items-center cqa-justify-center cqa-gap-3 cqa-text-center cqa-relative cqa-z-20 cqa-bg-white cqa-py-4 cqa-px-6 cqa-rounded-xl cqa-shadow-lg\">\n <svg class=\"cqa-animate-spin cqa-text-primary\" width=\"32\" height=\"32\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\"\n viewBox=\"0 0 24 24\">\n <circle class=\"cqa-opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"cqa-opacity-75\" fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\">\n </path>\n </svg>\n <span class=\"cqa-text-primary\">{{ label }}</span>\n </div>\n</div>\n\n\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'cqa-table-data-loader',\n templateUrl: './table-data-loader.component.html',\n styleUrls: []\n})\nexport class TableDataLoaderComponent {\n @Input() label: string = 'Loading...';\n @Input() size: number = 24;\n}\n\n\n","<div class=\"loading-spinner-simple cqa-py-2 cqa-flex cqa-flex-row cqa-items-center cqa-justify-center cqa-gap-3 cqa-text-center\">\n <svg class=\"cqa-animate-spin cqa-text-primary\" [attr.width]=\"size\" [attr.height]=\"size\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle class=\"cqa-opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\n <path class=\"cqa-opacity-75\" fill=\"currentColor\" d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"></path>\n </svg>\n <span class=\"cqa-text-primary\">{{ label }}</span>\n </div>\n\n\n","import { Component, ContentChild, ContentChildren, Input, QueryList, TemplateRef, EventEmitter, Output } from \"@angular/core\";\nimport { DynamicCellTemplateDirective, DynamicHeaderTemplateDirective } from \"./dynamic-cell.directive\";\n\nexport interface DynamicTableColumn {\n fieldId: string;\n fieldName?: string;\n fieldValue?: string;\n isDefault?: boolean;\n sortable?: boolean;\n isShow?: boolean;\n // New configuration fields to unify layout logic\n weight?: number; // relative weight for dynamic share\n fixedPx?: number; // fixed width in px (e.g. checkbox/actions)\n responsive?: { xs?: boolean; sm?: boolean; md?: boolean }; // hide at specific breakpoints\n}\n\n@Component({\n selector: \"app-dynamic-table\",\n templateUrl: \"./dynamic-table.component.html\",\n styleUrls: []\n})\nexport class DynamicTableComponent {\n @Input() data: any[] = [];\n @Input() columns: DynamicTableColumn[] = [];\n /**\n * Optional configuration object used when no custom empty template is provided.\n */\n @Input() emptyState?: { title?: string; description?: string; imageUrl?: string; actions?: any[] };\n // Optional override; if omitted we compute from columns\n @Input() gridTemplateColumns?: string;\n // Breakpoint-aware sizing; provide from parent to avoid extra listeners\n @Input() screenWidth?: number;\n // Enable built-in select-all behavior for a 'checkbox' column\n @Input() enableSelectAll: boolean = true;\n // Enable simple client-side sorting when clicking sortable headers (no custom header)\n @Input() enableLocalSort: boolean = true;\n // Backward-compat loading flag (applies to both loaders if specific flags not provided)\n \n // New: controls the full table overlay loader\n @Input() isTableLoading?: boolean;\n // New: controls the inline data loader above the table\n @Input() isTableDataLoading?: boolean;\n // Emit sort changes so parent can perform server-side sort if desired\n @Output() sortChange = new EventEmitter<{ fieldId: string; fieldValue?: string; direction: 'asc' | 'desc' | null }>();\n\n @ContentChildren(DynamicCellTemplateDirective) cellTemplates!: QueryList<DynamicCellTemplateDirective>;\n @ContentChildren(DynamicHeaderTemplateDirective) headerTemplates!: QueryList<DynamicHeaderTemplateDirective>;\n // Allow consumers to project a custom empty-state template using a template ref name\n // e.g. <ng-template #emptyTableTpl>Custom empty UI</ng-template>\n @ContentChild('emptyTableTpl', { read: TemplateRef }) emptyTableTpl?: TemplateRef<any>;\n\n private get isXs(): boolean {\n const w = this.screenWidth || window.innerWidth;\n return w <= 480;\n }\n private get isSm(): boolean {\n const w = this.screenWidth || window.innerWidth;\n return w <= 768;\n }\n private get isMd(): boolean {\n const w = this.screenWidth || window.innerWidth;\n return w <= 992;\n }\n\n get visibleColumns(): DynamicTableColumn[] {\n const responsiveFilter = (c: DynamicTableColumn) => {\n const r = c?.responsive || {};\n if (r.xs && this.isXs) return false;\n if (r.sm && this.isSm) return false;\n if (r.md && this.isMd) return false;\n return true;\n };\n return (this.columns || []).filter(c => c.isShow !== false).filter(responsiveFilter);\n }\n\n getHeaderTemplate(colId: string): TemplateRef<any> | null {\n const tpl = this.headerTemplates?.find(t => t.name === colId);\n return tpl ? tpl.template : null;\n }\n\n getCellTemplate(colId: string): TemplateRef<any> | null {\n const tpl = this.cellTemplates?.find(t => t.name === colId);\n return tpl ? tpl.template : null;\n }\n\n getCellValue(row: any, path?: string): any {\n if (!row || !path) return \"\";\n const parts = path.split(\".\");\n let current = row;\n for (const part of parts) {\n if (current == null) return \"\";\n current = current[part];\n }\n return current ?? \"\";\n }\n\n trackByIndex(index: number): number {\n return index;\n }\n\n // Compute grid-template-columns string from column config\n get computedGridTemplate(): string {\n if (this.gridTemplateColumns) {\n return this.gridTemplateColumns;\n }\n const cols = this.visibleColumns;\n if (!cols?.length) return '';\n const fixedPx = cols.reduce((sum, c) => sum + (c.fixedPx || 0), 0);\n const dynamicCols = cols.filter(c => !c.fixedPx);\n const totalWeight = dynamicCols.reduce((sum, c) => sum + (c.weight || 1), 0) || 1;\n const parts = cols.map(c => {\n if (c.fixedPx && c.fixedPx > 0) {\n return `${c.fixedPx}px`;\n }\n const share = (c.weight || 1) / totalWeight;\n return `calc((100% - ${fixedPx}px) * ${share.toFixed(4)})`;\n });\n return parts.join(' ');\n }\n\n // Compute per-column widths for use with <colgroup>\n get computedColumnWidths(): string[] {\n const cols = this.visibleColumns;\n if (!cols?.length) return [];\n const fixedPx = cols.reduce((sum, c) => sum + (c.fixedPx || 0), 0);\n const dynamicCols = cols.filter(c => !c.fixedPx);\n const totalWeight = dynamicCols.reduce((sum, c) => sum + (c.weight || 1), 0) || 1;\n return cols.map(c => {\n if (c.fixedPx && c.fixedPx > 0) {\n return `${c.fixedPx}px`;\n }\n const share = (c.weight || 1) / totalWeight;\n return `calc((100% - ${fixedPx}px) * ${share.toFixed(4)})`;\n });\n }\n\n // Selection helpers\n get allSelected(): boolean {\n const rows = this.data || [];\n if (!rows.length) return false;\n return rows.every(r => !!r?.isSelected);\n }\n\n get someSelected(): boolean {\n const rows = this.data || [];\n if (!rows.length) return false;\n const anySelected = rows.some(r => !!r?.isSelected);\n return anySelected && !this.allSelected;\n }\n\n onSelectAllChange(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.toggleSelectAll(target.checked);\n }\n\n onRowSelectChange(event: Event, row: any): void {\n const target = event.target as HTMLInputElement;\n row.isSelected = target.checked;\n }\n\n toggleSelectAll(checked: boolean): void {\n const rows = this.data || [];\n for (const row of rows) {\n if (row) {\n row.isSelected = checked;\n }\n }\n }\n\n // ===== Sorting support =====\n private _sortActive?: string;\n private _sortDirection: 'asc' | 'desc' | null = null;\n\n get computedData(): any[] {\n const source = this.data || [];\n if (!this.enableLocalSort || !this._sortActive || !this._sortDirection) {\n return source;\n }\n const col = this.visibleColumns.find(c => c.fieldId === this._sortActive);\n if (!col || !col.fieldValue) {\n return source;\n }\n const dir = this._sortDirection === 'asc' ? 1 : -1;\n const fieldPath = col.fieldValue;\n const out = [...source];\n out.sort((a, b) => dir * this.compareValues(this.getCellValue(a, fieldPath), this.getCellValue(b, fieldPath)));\n return out;\n }\n\n // Computed loading flags to support backward compatibility\n get showTableLoading(): boolean {\n return this.isTableLoading ?? false;\n }\n\n get showTableDataLoading(): boolean {\n return this.isTableDataLoading ?? false;\n }\n\n // True when table has no data and is not currently loading — used to show an empty state\n get isEmpty(): boolean {\n const anyLoading = this.showTableLoading || this.showTableDataLoading;\n return !anyLoading && (!(this.data && this.data.length) || this.data.length === 0);\n }\n\n isSortedAsc(colId: string): boolean {\n return this._sortActive === colId && this._sortDirection === 'asc';\n }\n\n isSortedDesc(colId: string): boolean {\n return this._sortActive === colId && this._sortDirection === 'desc';\n }\n\n toggleSort(col: DynamicTableColumn): void {\n if (!col?.sortable) return;\n const colId = col.fieldId;\n if (this._sortActive !== colId) {\n this._sortActive = colId;\n this._sortDirection = 'asc';\n } else {\n // cycle asc -> desc -> null -> asc\n if (this._sortDirection === 'asc') this._sortDirection = 'desc';\n else if (this._sortDirection === 'desc') this._sortDirection = null;\n else this._sortDirection = 'asc';\n }\n this.sortChange.emit({ fieldId: this._sortActive, fieldValue: col.fieldValue, direction: this._sortDirection });\n }\n\n private compareValues(a: any, b: any): number {\n if (a == null && b == null) return 0;\n if (a == null) return 1; // nulls last in asc (handled by dir multiplier)\n if (b == null) return -1;\n\n const numA = typeof a === 'number' ? a : Number(a);\n const numB = typeof b === 'number' ? b : Number(b);\n const aIsNum = !isNaN(numA) && a !== '' && a !== null && a !== false;\n const bIsNum = !isNaN(numB) && b !== '' && b !== null && b !== false;\n if (aIsNum && bIsNum) {\n if (numA < numB) return -1;\n if (numA > numB) return 1;\n return 0;\n }\n\n // Date detection: attempt parse when both values are strings and parseable\n if (typeof a === 'string' && typeof b === 'string') {\n const tsA = Date.parse(a);\n const tsB = Date.parse(b);\n if (!isNaN(tsA) && !isNaN(tsB)) {\n if (tsA < tsB) return -1;\n if (tsA > tsB) return 1;\n return 0;\n }\n // localeCompare, case-insensitive\n return a.localeCompare(b, undefined, { sensitivity: 'base', numeric: true });\n }\n\n // Fallback to string comparison\n const sa = String(a);\n const sb = String(b);\n return sa.localeCompare(sb, undefined, { sensitivity: 'base', numeric: true });\n }\n}\n\n\n","<div id=\"cqa-ui-root\">\n <div class=\"cqa-relative\">\n <cqa-full-table-loader *ngIf=\"showTableLoading\"></cqa-full-table-loader>\n <cqa-table-data-loader *ngIf=\"showTableDataLoading\"></cqa-table-data-loader>\n <table class=\"table-inner cqa-w-full\" [class.is-loading]=\"true\">\n <colgroup>\n <ng-container *ngFor=\"let width of computedColumnWidths; trackBy: trackByIndex\">\n <col [style.width]=\"width\" />\n </ng-container>\n </colgroup>\n\n <thead *ngIf=\"data?.length\">\n <tr class=\"table-header cqa-items-center\">\n <ng-container *ngFor=\"let col of visibleColumns; trackBy: trackByIndex\">\n <th\n class=\"header-cell cqa-py-[13.25px] cqa-px-[10.5px] cqa-text-xs cqa-font-semibold cqa-text-left cqa-text-[#374151] cqa-bg-[#eff0f7]\"\n [ngClass]=\"col.fieldId + '-cell'\">\n <!-- Built-in select-all for checkbox column when enabled and no custom header template -->\n <ng-container\n *ngIf=\"col.fieldId === 'checkbox' && enableSelectAll && !getHeaderTemplate(col.fieldId); else headerTplOrDefault\">\n <div class=\"custom-checkbox\">\n <input type=\"checkbox\" id=\"checkbox\" aria-label=\"Select all rows\" [checked]=\"allSelected\"\n [indeterminate]=\"someSelected\" (change)=\"onSelectAllChange($event)\" class=\"hidden-checkbox\" />\n <label for=\"checkbox\" class=\"custom-checkbox-label\"></label>\n </div>\n </ng-container>\n <ng-template #headerTplOrDefault>\n <ng-container *ngIf=\"getHeaderTemplate(col.fieldId) as headerTpl; else defaultHeader\">\n <ng-container *ngTemplateOutlet=\"headerTpl\"></ng-container>\n </ng-container>\n <ng-template #defaultHeader>\n <ng-container *ngIf=\"col.sortable; else plainHeader\">\n <button type=\"button\" class=\"header-text cqa-inline-flex cqa-items-center cqa-gap-1\"\n (click)=\"toggleSort(col)\" [attr.aria-label]=\"'Sort by ' + (col.fieldName || col.fieldId)\">\n <span class=\"cqa-text-[12.3px] cqa-leading-[17.5px] cqa-text-[#0A0A0A] cqa-font-medium\">{{\n col.fieldName }}</span>\n <span *ngIf=\"isSortedAsc(col.fieldId)\">▲</span>\n <span *ngIf=\"isSortedDesc(col.fieldId)\">▼</span>\n </button>\n </ng-container>\n <ng-template #plainHeader>\n <span class=\"header-text\">{{ col.fieldName }}</span>\n </ng-template>\n </ng-template>\n </ng-template>\n </th>\n </ng-container>\n </tr>\n </thead>\n\n <tbody class=\"table-body cqa-w-full\">\n <tr class=\"table-row cqa-bg-surface-default hover:cqa-bg-surface-hover\" *ngFor=\"let row of computedData; let rowIndex = index; trackBy: trackByIndex\"\n [class.selected]=\"row?.isSelected\">\n <ng-container *ngFor=\"let col of visibleColumns; trackBy: trackByIndex\">\n <td class=\"cell cqa-px-[10.5px] cqa-py-[11px]\" [ngClass]=\"col.fieldId + '-cell'\">\n <!-- Built-in checkbox cell when no custom template is provided -->\n <ng-container *ngIf=\"col.fieldId === 'checkbox' && !getCellTemplate(col.fieldId); else regularCell\">\n <div class=\"custom-checkbox\">\n <input\n type=\"checkbox\"\n class=\"hidden-checkbox\"\n [attr.id]=\"'row-checkbox-' + rowIndex\"\n aria-label=\"Select row\"\n [checked]=\"row?.isSelected\"\n (change)=\"onRowSelectChange($event, row)\" />\n <label\n class=\"custom-checkbox-label\"\n [attr.for]=\"'row-checkbox-' + rowIndex\">\n </label>\n </div>\n </ng-container>\n <ng-template #regularCell>\n <ng-container *ngIf=\"getCellTemplate(col.fieldId) as cellTpl; else defaultCell\">\n <ng-container\n *ngTemplateOutlet=\"cellTpl; context: {$implicit: row, row: row, value: getCellValue(row, col.fieldValue)}\"></ng-container>\n </ng-container>\n <ng-template #defaultCell>\n <span class=\"cqa-text-xs cqa-text-[#374151]\">{{ getCellValue(row, col.fieldValue) }}</span>\n </ng-template>\n </ng-template>\n </td>\n </ng-container>\n </tr>\n </tbody>\n </table>\n </div>\n</div>","import {Component, Input, ViewChild} from '@angular/core';\nimport {MatTooltip} from \"@angular/material/tooltip\";\n\n@Component({\n selector: 'app-inline-sort, cqa-inline-sort',\n template: `\n <div #tooltipDiv=\"matTooltip\"\n class=\"w-fit-content sort-header\"\n [matTooltip]=\"getToolTip\"\n [matTooltipPosition]=\"'after'\">\n <span>{{ heading }}</span>\n <span *ngIf=\"ascending\" class='fa-down-sort'></span>\n <span *ngIf=\"ascending==false\" class='fa-up-sort'></span>\n <span *ngIf=\"ascending==undefined\" class='fa-down-sort opaque-50'></span>\n </div>\n `,\n styles: [\n ]\n})\nexport class InlineSortComponent{\n @Input() ascending?: boolean;\n @Input() heading?: string;\n @ViewChild('tooltipDiv')tooltipDiv?: MatTooltip;\n toolTip: any;\n\n get getToolTip(){\n if(this.ascending==true)\n return this.heading?.includes('created_at')?'message.common.sort_by.old':'message.common.sort_by.ascending';\n else if(this.ascending==false)\n return this.heading?.includes('created_at')?'message.common.sort_by.new':'message.common.sort_by.descending';\n else\n return 'message.common.sort';\n }\n\n ngOnChanges(): void {\n if(this.ascending!=undefined) {\n this.tooltipDiv?.hide()\n this.tooltipDiv?.show(200);\n }\n }\n\n}\n\n\n\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface PaginationChange {\n pageIndex: number;\n pageSize: number;\n}\n\n@Component({\n selector: 'cqa-pagination',\n templateUrl: './pagination.component.html',\n styleUrls: []\n})\nexport class PaginationComponent {\n @Input() totalElements: number = 0;\n @Input() totalPages?: number | null;\n @Input() pageIndex: number = 0; // 0-based\n @Input() pageSize: number = 10;\n @Input() pageItemCount: number = 0; // number of items currently rendered on this page\n @Input() pageSizeOptions: number[] = [10, 20, 40, 60, 80];\n\n @Output() pageIndexChange = new EventEmitter<number>();\n @Output() pageSizeChange = new EventEmitter<number>();\n @Output() paginate = new EventEmitter<PaginationChange>();\n\n // Local UI state for custom page-size dropdown\n pageSizeOpen = false;\n\n pagesOption = {\n placeholder: 'Choose page',\n disabled: false,\n multiple: false,\n searchable: false,\n options: [\n { id: 1, name: '10' },\n { id: 2, name: '20' },\n { id: 3, name: '30' },\n { id: 4, name: '40' },\n ],\n }\n \n\n get computedTotalPages(): number {\n if (this.totalPages != null && this.totalPages > 0) {\n return this.totalPages;\n }\n if (this.pageSize > 0 && this.totalElements >= 0) {\n return Math.max(1, Math.ceil(this.totalElements / this.pageSize));\n }\n return 0;\n }\n\n getStartItem(): number {\n if (!this.totalElements) {\n return 0;\n }\n return this.pageIndex * this.pageSize + 1;\n }\n\n getEndItem(): number {\n const end = this.getStartItem() + this.pageItemCount - 1;\n if (end < 0) {\n return 0;\n }\n return Math.min(end, this.totalElements);\n }\n\n togglePageSizeMenu(): void {\n this.pageSizeOpen = !this.pageSizeOpen;\n }\n\n selectPageSize(size: number): void {\n if (this.pageSize !== size) {\n this.pageSize = size;\n this.onPageSizeChange();\n }\n this.pageSizeOpen = false;\n }\n\n onPageSizeChange(): void {\n this.pageIndex = 0;\n this.pageSizeChange.emit(this.pageSize);\n this.pageIndexChange.emit(this.pageIndex);\n this.paginate.emit({ pageIndex: this.pageIndex, pageSize: this.pageSize });\n }\n\n goToPage(index: number): void {\n const lastIndex = Math.max(0, this.computedTotalPages - 1);\n const next = Math.max(0, Math.min(index, lastIndex));\n if (next === this.pageIndex) {\n return;\n }\n this.pageIndex = next;\n this.pageIndexChange.emit(this.pageIndex);\n this.paginate.emit({ pageIndex: this.pageIndex, pageSize: this.pageSize });\n }\n}\n\n\n","<!-- Bottom Pagination -->\n<div id=\"cqa-ui-root\" >\n <div class=\"table-footer-pagination cqa-text-grey-300 cqa-text-[12.3px] cqa-leading-[17.5px] cqa-flex cqa-items-center cqa-justify-between cqa-gap-2 cqa-flex-wrap cqa-bg-surface-default cqa-px-[21px] cqa-py-[15px]\" *ngIf=\"pageItemCount && totalElements\">\n <div class=\"pagination-info cqa-flex cqa-items-center cqa-gap-[7px] cqa-relative\">\n <span class=\"rows-label\">Rows per page</span>\n <div class=\"cqa-relative\">\n <!-- Custom Select Trigger -->\n <button\n type=\"button\"\n class=\"cqa-inline-flex cqa-items-center cqa-gap-[19px] cqa-bg-white cqa-text-black-100 cqa-rounded-[5px] cqa-px-[11.5px] cqa-py-[6.75px]\"\n (click)=\"togglePageSizeMenu()\"\n [attr.aria-expanded]=\"pageSizeOpen\"\n aria-haspopup=\"listbox\"\n >\n {{ pageSize }}\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g opacity=\"0.5\"><path d=\"M3.5 5.25L7 8.75L10.5 5.25\" stroke=\"#717182\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></g></svg>\n </button>\n <!-- Dropdown Menu -->\n <div\n *ngIf=\"pageSizeOpen\"\n class=\"cqa-absolute cqa-z-[100] cqa-bottom-[calc(100%+8px)] cqa-left-0 cqa-w-[75px] cqa-max-h-[170px] cqa-overflow-auto cqa-rounded-lg cqa-border cqa-border-[#E5E7EB] cqa-bg-white cqa-shadow-[0px_4px_6px_-1px_rgba(0,0,0,0.1)] cqa-p-[5px]\"\n role=\"listbox\"\n [attr.aria-activedescendant]=\"'pagesize-' + pageSize\"\n >\n <button\n *ngFor=\"let size of pageSizeOptions\"\n type=\"button\"\n class=\"cqa-w-full cqa-px-2 cqa-py-[6px] hover:cqa-bg-[#F7F8FA] cqa-text-left cqa-rounded-md cqa-text-black-100\"\n [attr.id]=\"'pagesize-' + size\"\n role=\"option\"\n [attr.aria-selected]=\"pageSize === size\"\n (click)=\"selectPageSize(size)\"\n >\n {{ size }}\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"pagination-right cqa-flex cqa-items-center cqa-gap-[21px]\">\n <div class=\"pagination-range\">\n {{ getStartItem() }}–{{ getEndItem() }} of {{ totalElements }}\n </div>\n <div class=\"pagination-controls cqa-flex cqa-items-stretch cqa-gap-[3.5px]\">\n <button class=\"pagination-btn cqa-w-[28px] cqa-h-[28px] cqa-min-w-[28px] cqa-rounded-[5px] cqa-border cqa-border-[#E5E7EB] cqa-bg-[#F7F8FA] cqa-flex cqa-items-center cqa-justify-center\" [disabled]=\"pageIndex === 0\" (click)=\"goToPage(pageIndex - 1)\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M8.75 10.5L5.25 7L8.75 3.5\" stroke=\"#838384\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n <button class=\"pagination-btn cqa-w-[28px] cqa-h-[28px] cqa-min-w-[28px] cqa-rounded-[5px] cqa-border cqa-border-[#E5E7EB] cqa-bg-[#F7F8FA] cqa-flex cqa-items-center cqa-justify-center\" [disabled]=\"pageIndex >= computedTotalPages - 1\" (click)=\"goToPage(pageIndex + 1)\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M5.25 10.5L8.75 7L5.25 3.5\" stroke=\"#838384\" stroke-width=\"1.16667\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n </div>\n </div>\n </div>\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface ActionMenuRow {\n id: number | string;\n [key: string]: any;\n}\n\n@Component({\n selector: 'cqa-action-menu-button',\n templateUrl: './action-menu.component.html',\n styleUrls: []\n})\nexport class ActionMenuButtonComponent {\n @Input() row?: ActionMenuRow;\n\n @Output() view = new EventEmitter<number | string>();\n @Output() edit = new EventEmitter<ActionMenuRow>();\n @Output() delete = new EventEmitter<ActionMenuRow>();\n\n navigateToTestCase(id?: number | string): void {\n if (id === undefined || id === null) return;\n this.view.emit(id);\n }\n\n editTestCase(row?: ActionMenuRow): void {\n if (!row) return;\n this.edit.emit(row);\n }\n\n deleteTestCase(row?: ActionMenuRow): void {\n if (!row) return;\n this.delete.emit(row);\n }\n}\n\n\n","<div id=\"cqa-ui-root\">\n <button class=\"action-menu-btn\" [matMenuTriggerFor]=\"actionMenu\" (click)=\"$event.stopPropagation()\" mat-icon-button\n type=\"button\" aria-label=\"More actions\">\n <mat-icon>more_horiz</mat-icon>\n </button>\n\n <mat-menu #actionMenu=\"matMenu\" class=\"action-menu\" xPosition=\"after\" yPosition=\"below\" hasBackdrop=\"true\">\n <button mat-menu-item (click)=\"navigateToTestCase(row?.id)\">\n <mat-icon>visibility</mat-icon>\n <span>View</span>\n </button>\n <button mat-menu-item (click)=\"editTestCase(row)\">\n <mat-icon>edit_square</mat-icon>\n <span>Edit</span>\n </button>\n <button mat-menu-item (click)=\"deleteTestCase(row)\" class=\"delete-menu-item\">\n <mat-icon>delete</mat-icon>\n <span>Delete</span>\n </button>\n </mat-menu>\n</div>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface OtherButtonItem {\n label: string;\n icon?: string;\n classes?: string | string[] | Record<string, boolean>;\n colorClass?: string | string[] | Record<string, boolean>;\n disabled?: boolean;\n type?: 'button' | 'submit' | 'reset';\n value?: any;\n}\n\n@Component({\n selector: 'cqa-other-button',\n templateUrl: './other-button.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OtherButtonComponent {\n // Single button API (backwards compatible)\n @Input() icon: string = '';\n @Input() label: string = '';\n @Input() classes: string | string[] | Record<string, boolean> = '';\n @Input() colorClass: string | string[] | Record<string, boolean> = '';\n @Input() buttonClass: string = '';\n @Input() disabled: boolean = false;\n @Input() type: 'button' | 'submit' | 'reset' = 'button';\n\n // Group buttons API (new)\n @Input() buttons: OtherButtonItem[] | null = null;\n /** Extra classes for the button group container */\n @Input() groupClass: string | string[] | Record<string, boolean> = '';\n /** Gap utility class; defaults to Tailwind spacing applied in template */\n @Input() gapClass: string = 'cqa-gap-2';\n /** When true, allows wrapping to next line on smaller screens */\n @Input() wrap: boolean = true;\n\n @Output() clicked = new EventEmitter<MouseEvent>();\n /** Emits the config of the clicked button in a group, along with the event */\n @Output() buttonClick = new EventEmitter<{ event: MouseEvent; item: OtherButtonItem }>();\n\n onClick(event: MouseEvent): void {\n if (this.disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.clicked.emit(event);\n }\n\n onItemClick(event: MouseEvent, item: OtherButtonItem): void {\n if (item?.disabled) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.buttonClick.emit({ event, item });\n }\n}\n\n","<div id=\"cqa-ui-root\" >\n <!-- Group rendering if buttons are provided -->\n <ng-container *ngIf=\"buttons?.length; else singleButton\">\n <div class=\"cqa-inline-flex cqa-items-center\" [ngClass]=\"[wrap ? 'cqa-flex-wrap' : '', gapClass, groupClass]\">\n <button *ngFor=\"let b of buttons\"\n [type]=\"b.type || 'button'\"\n class=\"cqa-inline-flex cqa-items-center cqa-gap-1 cqa-py-[5.75px] cqa-px-[11.5px] cqa-rounded-[5px] cqa-text-[12.3px] cqa-leading-[17.5px] cqa-font-medium cqa-border\"\n [ngClass]=\"[b.classes || classes, buttonClass, b.colorClass || colorClass]\"\n [disabled]=\"b.disabled\"\n (click)=\"onItemClick($event, b)\">\n <mat-icon *ngIf=\"b.icon || icon\" class=\"!cqa-w-[16px] !cqa-h-[16px] !cqa-text-[16px]\">{{ b.icon || icon }}</mat-icon>\n <span>{{ b.label }}</span>\n </button>\n </div>\n </ng-container>\n\n <!-- Single button (backwards compatible) -->\n <ng-template #singleButton>\n <button [type]=\"type\"\n class=\"cqa-inline-flex cqa-items-center cqa-gap-1 cqa-py-[5.75px] cqa-px-[11.5px] cqa-rounded-[5px] cqa-text-[12.3px] cqa-leading-[17.5px] cqa-font-medium cqa-border\"\n [ngClass]=\"[classes, buttonClass, colorClass]\" [disabled]=\"disabled\" (click)=\"onClick($event)\">\n <mat-icon *ngIf=\"icon\" class=\"!cqa-w-[16px] !cqa-h-[16px] !cqa-text-[16px]\">{{ icon }}</mat-icon>\n <span>{{ label }}</span>\n </button>\n </ng-template>\n</div>","import { ChangeDetectionStrategy, Component, Input, OnInit, OnChanges, SimpleChanges, ViewChild, ElementRef, HostListener } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { MatSelect } from '@angular/material/select';\n\n// Local option model (previously imported from removed cqa-select component)\nexport interface SelectOption {\n id?: any;\n value?: any;\n name?: string;\n label?: string;\n}\n\nexport interface DynamicSelectFieldConfig {\n key: string;\n label?: string;\n placeholder?: string;\n disabled?: boolean;\n multiple?: boolean;\n searchable?: boolean;\n /** If true, close the panel when an option is selected (useful for multi-select in headers). */\n closeOnSelect?: boolean;\n options: SelectOption[];\n}\n\n@Component({\n selector: 'cqa-dynamic-select',\n templateUrl: './dynamic-select-field.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DynamicSelectFieldComponent implements OnInit, OnChanges {\n @Input() form!: FormGroup;\n @Input() config!: DynamicSelectFieldConfig;\n\n @ViewChild('selectRef', { static: false }) selectRef?: MatSelect;\n @ViewChild('host', { static: false, read: ElementRef }) hostEl?: ElementRef<HTMLElement>;\n\n // Must be public for template access in Angular's strict template checking mode\n searchTextByKey: Record<string, string> = {};\n private outsideCleanup?: () => void;\n\n ngOnInit(): void {\n if (!this.config || !this.config.key) {\n throw new Error('cqa-dynamic-select: input \"config.key\" is required.');\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('config' in changes) {\n // When config changes (including toggling multiple), ensure control value shape matches\n this.syncControlValueForMultipleMode();\n }\n }\n\n get panelClass(): string {\n return `ctc-select-panel ${this.isMultiple ? 'multiple' : ''}`.trim();\n }\n\n get isMultiple(): boolean {\n return this.toBoolean(this.config?.multiple);\n }\n\n get isDisabled(): boolean {\n return this.toBoolean(this.config?.disabled);\n }\n\n private toBoolean(value: unknown): boolean {\n if (typeof value === 'string') {\n const v = value.trim().toLowerCase();\n if (v === 'true' || v === '1') return true;\n if (v === 'false' || v === '0' || v === '') return false;\n return true; // any other non-empty string treated as truthy\n }\n if (typeof value === 'number') {\n return value !== 0;\n }\n return !!value;\n }\n\n private syncControlValueForMultipleMode(): void {\n const key = this.config?.key;\n if (!key || !this.form) return;\n const control = this.form.get(key);\n if (!control) return;\n const currentValue = control.value;\n if (this.isMultiple) {\n if (currentValue == null) return;\n if (Array.isArray(currentValue)) return;\n control.setValue([currentValue], { emitEvent: false });\n } else {\n if (!Array.isArray(currentValue)) return;\n control.setValue(currentValue.length ? currentValue[0] : null, { emitEvent: false });\n }\n }\n\n onSelectOpenedChange(opened: boolean, _select: MatSelect): void {\n if (!opened) {\n // Reset search text on close so the next open shows full list\n if (this.config?.key) {\n this.searchTextByKey[this.config.key] = '';\n }\n // Ensure any previous custom listeners are cleared (legacy compatibility)\n if (this.outsideCleanup) {\n this.outsideCleanup();\n this.outsideCleanup = undefined;\n }\n return;\n }\n\n // Focus the search box if enabled\n if (this.config?.searchable) {\n setTimeout(() => {\n const input = document.querySelector<HTMLInputElement>('.ts-select-search-input');\n input?.focus();\n }, 0);\n }\n }\n\n onSearch(key: string, value: string): void {\n this.searchTextByKey[key] = value ?? '';\n }\n\n filteredOptions(c: DynamicSelectFieldConfig): SelectOption[] {\n const t = (this.searchTextByKey[c.key] || '').toLowerCase().trim();\n if (!t) return c.options || [];\n return (c.options || []).filter((opt) => {\n const text = String(opt.name ?? opt.label ?? opt.value ?? '').toLowerCase();\n return text.includes(t);\n });\n }\n\n // Close when an option is selected if requested. Always close for single-select.\n onOptionSelected(select: MatSelect): void {\n // Let Angular Material auto-close for single-select.\n // For multi-select, close only if explicitly requested.\n const shouldClose = this.isMultiple ? !!this.config?.closeOnSelect : false;\n if (shouldClose) {\n try {\n select.close();\n } catch {}\n }\n // If searchable, clear the search after selection so reopening works predictably\n if (this.config?.searchable && this.config?.key) {\n this.searchTextByKey[this.config.key] = '';\n }\n }\n\n @HostListener('document:click', ['$event'])\n handleDocumentClick(event: MouseEvent): void {\n // Close when clicking outside of the trigger and outside of the open panel\n if (!this.selectRef?.panelOpen) {\n return;\n }\n const target = event.target as HTMLElement | null;\n if (!target) return;\n // If click is inside the component host, ignore\n if (this.hostEl?.nativeElement && this.hostEl.nativeElement.contains(target)) {\n return;\n }\n // If click is inside any open mat-select panel, ignore\n const panelEls = Array.from(document.querySelectorAll('.mat-select-panel')) as HTMLElement[];\n const clickInsidePanel = panelEls.some((el) => el.contains(target));\n if (clickInsidePanel) {\n return;\n }\n try {\n this.selectRef.close();\n } catch {}\n }\n}\n\n\n","<div id=\"cqa-ui-root\">\n <ng-container [formGroup]=\"form\">\n <label *ngIf=\"config.label\"\n class=\"form-label cqa-text-[#374151] cqa-text-[14px] cqa-font-medium cqa-block cqa-leading-[1.4] cqa-mb-2\">{{\n config.label }}</label>\n <mat-form-field #host class=\"mat-select-custom cqa-w-full\" appearance=\"fill\">\n <mat-select #selectRef=\"matSelect\" [placeholder]=\"config.placeholder\" [disabled]=\"isDisabled\" [multiple]=\"isMultiple\"\n disableOptionCentering [panelClass]=\"panelClass\" [formControlName]=\"config.key\"\n (openedChange)=\"onSelectOpenedChange($event, selectRef)\" (selectionChange)=\"onOptionSelected(selectRef)\">\n\n <mat-option *ngIf=\"config.searchable\" class=\"ts-select-search\" disabled>\n <input class=\"ts-select-search-input\" type=\"text\" [value]=\"searchTextByKey[config.key] || ''\"\n (click)=\"$event.stopPropagation()\" (mousedown)=\"$event.stopPropagation()\"\n (keydown)=\"$event.stopPropagation()\" (input)=\"onSearch(config.key, $any($event.target).value)\"\n placeholder=\"Search...\" />\n </mat-option>\n\n <mat-option *ngFor=\"let opt of filteredOptions(config)\" [value]=\"opt.id ?? opt.value\"\n [textContent]=\"opt.name ?? opt.label ?? opt.value\">\n {{ opt.name ?? opt.label ?? opt.value }}\n </mat-option>\n </mat-select>\n\n <div>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4 6L8 10L12 6\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n </mat-form-field>\n </ng-container>\n</div>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport { DynamicSelectFieldConfig } from '../../dynamic-select/dynamic-select-field.component';\n\ntype FilterType = 'select' | 'date-range';\n\nexport interface DynamicFilterOption {\n id?: number | string;\n name?: string;\n value?: any;\n label?: string;\n}\n\nexport interface DynamicFilterItem {\n label: string;\n placeholder?: string;\n type: FilterType;\n key: string;\n options?: DynamicFilterOption[];\n multiple?: boolean;\n disabled?: boolean;\n hidden?: boolean;\n searchable?: boolean;\n}\n\nexport interface DynamicFilterValues {\n [key: string]: any;\n}\n\n@Component({\n selector: 'cqa-dynamic-filter',\n templateUrl: './dynamic-filter.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DynamicFilterComponent implements OnChanges {\n @Input() config: DynamicFilterItem[] = [];\n @Input() model: DynamicFilterValues = {};\n @Input() showFilterPanel: boolean = true;\n @Output() filtersApplied = new EventEmitter<DynamicFilterValues>();\n @Output() filtersChanged = new EventEmitter<DynamicFilterValues>();\n @Output() resetAction = new EventEmitter<void>();\n\n form: FormGroup = this.fb.group({});\n maxDate = new Date();\n searchTextByKey: Record<string, string> = {};\n private selectOutsideCleanup = new Map<any, () => void>();\n\n constructor(private readonly fb: FormBuilder) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['config'] || changes['model']) {\n this.buildForm();\n }\n }\n\n onDateChange(event: any, key: string) {\n const formGroup = this.getDateGroup(key);\n const start = formGroup.get('start')?.value;\n const end = formGroup.get('end')?.value;\n\n // When both dates are selected, auto-apply\n // if (start && end) {\n // this.applyDateRange(key, { start, end });\n // }\n }\n\n private buildForm(): void {\n const ctrls: Record<string, any> = {};\n (this.config || []).forEach(c => {\n if (c.hidden) return;\n if (c.type === 'date-range') {\n ctrls[c.key] = this.fb.group({ start: new FormControl(), end: new FormControl() });\n } else {\n const initial = this.model?.[c.key];\n if (c.multiple) {\n const value = Array.isArray(initial) ? initial : (initial != null ? [initial] : []);\n ctrls[c.key] = new FormControl(value);\n } else {\n ctrls[c.key] = new FormControl(Array.isArray(initial) ? (initial.length ? initial[0] : undefined) : initial);\n }\n }\n });\n this.form = this.fb.group(ctrls);\n this.form.valueChanges.subscribe(() => this.filtersChanged.emit(this.serialize()));\n }\n\n onSelectOpenedChange(opened: boolean, select: any): void {\n if (opened) {\n setTimeout(() => {\n const onDocDown = (e: MouseEvent) => {\n const panel = document.querySelector('.cdk-overlay-pane .mat-select-panel') as HTMLElement | null;\n const target = e.target as Node | null;\n const originEl = (select?._elementRef?.nativeElement as HTMLElement) || null;\n const insidePanel = !!(panel && target && panel.contains(target));\n const insideOrigin = !!(originEl && target && originEl.contains(target));\n if (!insidePanel && !insideOrigin) {\n select.close();\n }\n };\n document.addEventListener('mousedown', onDocDown, true);\n this.selectOutsideCleanup.set(select, () => document.removeEventListener('mousedown', onDocDown, true));\n }, 0);\n } else {\n const cleanup = this.selectOutsideCleanup.get(select);\n if (cleanup) cleanup();\n this.selectOutsideCleanup.delete(select);\n }\n }\n\n onSearch(key: string, text: string): void {\n this.searchTextByKey[key] = (text || '').toLowerCase();\n }\n\n filteredOptions(item: DynamicFilterItem): DynamicFilterOption[] {\n const options = item?.options || [];\n const q = (this.searchTextByKey[item.key] || '').trim();\n if (!q) return options;\n return options.filter(opt => {\n const name = (opt.name ?? opt.label ?? String(opt.value ?? '')).toLowerCase();\n return name.includes(q);\n });\n }\n\n getDateGroup(key: string): FormGroup {\n return this.form.get(key) as FormGroup;\n }\n\n getSelectConfig(item: DynamicFilterItem): DynamicSelectFieldConfig {\n return {\n key: item.key,\n label: item.label,\n placeholder: item.placeholder,\n disabled: item.disabled,\n multiple: item.multiple,\n searchable: item.searchable,\n options: item.options || []\n };\n }\n\n apply(): void {\n this.filtersApplied.emit(this.serialize());\n }\n\n reset(): void {\n Object.keys(this.form.controls).forEach(key => {\n const ctrl = this.form.get(key);\n if (ctrl instanceof FormGroup) {\n ctrl.get('start')?.setValue(undefined);\n ctrl.get('end')?.setValue(undefined);\n } else {\n ctrl?.setValue(undefined);\n }\n });\n this.resetAction.emit();\n this.filtersChanged.emit(this.serialize());\n }\n\n private serialize(): DynamicFilterValues {\n const result: DynamicFilterValues = {};\n (this.config || []).forEach(c => {\n const ctrl = this.form.get(c.key);\n if (!ctrl) return;\n let val: any = ctrl instanceof FormGroup ? (ctrl as FormGroup).getRawValue() : ctrl.value;\n if (c.type === 'date-range') {\n const start = val?.start; const end = val?.end;\n if (start || end) result[c.key] = { start, end };\n } else {\n if (val !== undefined && val !== null && (Array.isArray(val) ? val.length > 0 : val !== '')) {\n result[c.key] = val;\n }\n }\n });\n return result;\n }\n\n // Mat date range picker overlay preset helpers\n applyPresetToGroup(key: string, presetKey: 'today' | 'last7days' | 'last30days' | 'last90days' | 'thismonth' | 'lastmonth'): void {\n const dateGroup = this.getDateGroup(key);\n if (!dateGroup) return;\n const { start, end } = this.getPresetDates(presetKey);\n dateGroup.patchValue({ start, end });\n this.filtersChanged.emit(this.serialize());\n }\n\n private getPresetDates(presetKey: 'today' | 'last7days' | 'last30days' | 'last90days' | 'thismonth' | 'lastmonth'): { start: Date; end: Date } {\n const today = new Date();\n const clampToEndOfToday = (d: Date) => { const nd = new Date(d); nd.setHours(23,59,59,999); return nd; };\n switch (presetKey) {\n case 'today':\n return { start: today, end: today };\n case 'last7days': {\n const start = new Date(); start.setDate(start.getDate() - 6);\n return { start, end: today };\n }\n case 'last30days': {\n const start = new Date(); start.setDate(start.getDate() - 29);\n return { start, end: today };\n }\n case 'last90days': {\n const start = new Date(); start.setDate(start.getDate() - 89);\n return { start, end: today };\n }\n case 'thismonth': {\n const start = new Date(today.getFullYear(), today.getMonth(), 1);\n return { start, end: today };\n }\n case 'lastmonth': {\n const start = new Date(today.getFullYear(), today.getMonth() - 1, 1);\n const end = new Date(today.getFullYear(), today.getMonth(), 0);\n return { start, end: clampToEndOfToday(end) };\n }\n }\n }\n getDateValidationError(key: string): string | null {\n const dateGroup = this.getDateGroup(key);\n if (!dateGroup) return null;\n\n const startCtrl = dateGroup.controls['start'];\n const endCtrl = dateGroup.controls['end'];\n const startVal = startCtrl?.value;\n const endVal = endCtrl?.value;\n const startParseErr = startCtrl?.errors?.['matDatepickerParse']?.text;\n const endParseErr = endCtrl?.errors?.['matDatepickerParse']?.text;\n\n if (!startVal && !endVal && !startParseErr && !endParseErr) return null;\n\n if (startParseErr) return `Invalid start date format`;\n if (endParseErr) return `Invalid end date format`;\n\n if (startVal && !endVal) return `Please select an end date`;\n if (!startVal && endVal) return `Please select a start date`;\n\n if (dateGroup.hasError('matStartDateInvalid')) return `Start date must be before end date`;\n if (dateGroup.hasError('matEndDateInvalid')) return `End date must be after start date`;\n\n if (dateGroup.invalid) {\n const config = this.config?.find(c => c.key === key);\n return config ? `${config.label} is invalid` : 'Date range is invalid';\n }\n\n return null;\n }\n // Dynamic Date Picker Integration Methods removed (component no longer used)\n}\n\n\n","<div id=\"cqa-ui-root\">\n <div class=\"cqa-filter cqa-mb-[28px]\" *ngIf=\"showFilterPanel\">\n <form class=\"ts-form cqa-grid lg:cqa-grid-cols-4 md:cqa-grid-cols-2 cqa-gap-4\" [formGroup]=\"form\"\n (keydown.enter)=\"(false)\" novalidate=\"novalidate\">\n <ng-container *ngFor=\"let c of config\">\n <ng-container *ngIf=\"!c.hidden\">\n <div class=\"form-group cqa-flex cqa-flex-col cqa-gap-2\">\n <!-- Select -->\n <ng-container *ngIf=\"c.type === 'select'\">\n <cqa-dynamic-select [form]=\"form\" [config]=\"getSelectConfig(c)\"></cqa-dynamic-select>\n </ng-container>\n\n <!-- Date Range --> \n <ng-container *ngIf=\"c.type === 'date-range'\">\n <label\n class=\"form-label cqa-text-[#374151] cqa-text-[14px] cqa-font-medium cqa-block cqa-leading-[1.4]\">{{\n c.label }}</label>\n <mat-form-field class=\"mat-date-custom\" appearance=\"fill\">\n <mat-date-range-input [rangePicker]=\"picker\" [formGroup]=\"getDateGroup(c.key)\" [max]=\"maxDate\">\n <input matStartDate formControlName=\"start\" placeholder=\"Start date\" [max]=\"maxDate\" required\n [readonly]=\"true\" (focus)=\"picker.open()\" (click)=\"picker.open()\" />\n <input matEndDate formControlName=\"end\" placeholder=\"End date\" [max]=\"maxDate\" required\n [readonly]=\"true\" (focus)=\"picker.open()\" (click)=\"picker.open()\" />\n </mat-date-range-input>\n <mat-date-range-picker #picker (dateChange)=\"onDateChange($event, c.key)\"\n [panelClass]=\"'ctc-date-range-panel'\">\n <mat-datepicker-actions>\n <div class=\"ctc-date-presets\">\n <div class=\"cqa-mb-2 cqa-font-medium\">Quick Presets</div>\n <div class=\"btn-group\">\n <button type=\"button\" class=\"preset-btn today\"\n (click)=\"applyPresetToGroup(c.key, 'today'); picker.close()\">Today</button>\n <button type=\"button\" class=\"preset-btn last7days\"\n (click)=\"applyPresetToGroup(c.key, 'last7days'); picker.close()\">Last 7 days</button>\n <button type=\"button\" class=\"preset-btn last30days\"\n (click)=\"applyPresetToGroup(c.key, 'last30days'); picker.close()\">Last 30 days</button>\n <button type=\"button\" class=\"preset-btn last90days\"\n (click)=\"applyPresetToGroup(c.key, 'last90days'); picker.close()\">Last 90 days</button>\n <button type=\"button\" class=\"preset-btn thismonth\"\n (click)=\"applyPresetToGroup(c.key, 'thismonth'); picker.close()\">This month</button>\n <button type=\"button\" class=\"preset-btn lastmonth\"\n (click)=\"applyPresetToGroup(c.key, 'lastmonth'); picker.close()\">Last month</button>\n </div>\n </div>\n <div class=\"cqa-font-medium cqa-mb-2 cqa-mt-[10px] cqa-w-full\">Custom Range</div>\n <button\n class=\"cqa-font-medium !cqa-mb-2 !cqa-mt-[10px] cqa-w-[calc(100%-32px)] !cqa-absolute cqa-bottom-[2px]\"\n mat-flat-button color=\"primary\" matDatepickerApply>Apply</button>\n </mat-datepicker-actions>\n </mat-date-range-picker>\n <div (click)=\"picker.open()\" class=\"cqa-cursor-pointer\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5.33398 1.33203V3.9987\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M10.666 1.33203V3.9987\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path\n d=\"M12.6667 2.66797H3.33333C2.59695 2.66797 2 3.26492 2 4.0013V13.3346C2 14.071 2.59695 14.668 3.33333 14.668H12.6667C13.403 14.668 14 14.071 14 13.3346V4.0013C14 3.26492 13.403 2.66797 12.6667 2.66797Z\"\n stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\n <path d=\"M2 6.66797H14\" stroke=\"#0A0A0A\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </div>\n </mat-form-field>\n <!-- Specific validation messages -->\n <mat-error *ngIf=\"getDateValidationError(c.key) && !picker.opened\">\n {{ getDateValidationError(c.key) }}\n </mat-error>\n\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </form>\n\n <div class=\"cqa-flex cqa-justify-end cqa-items-stretch cqa-gap-2 cqa-mt-4\">\n <button type=\"button\"\n class=\"cqa-text-[13.33px] cqa-leading-[1] cqa-flex cqa-flex-row cqa-justify-center cqa-items-center cqa-px-[11px] cqa-py-[1px] cqa-gap-[14px] cqa-h-8 cqa-border cqa-border-[#0B0B0C] cqa-shadow-[0_1px_2px_rgba(0,0,0,0.05)] cqa-rounded-lg cqa-text-[#0B0B0C]\"\n (click)=\"reset()\">Reset</button>\n <button type=\"button\"\n class=\"cqa-text-[13.33px] cqa-leading-[1] cqa-flex cqa-flex-row cqa-justify-center cqa-items-center cqa-px-[11px] cqa-py-[1px] cqa-gap-[14px] cqa-h-8 cqa-bg-[#0B0B0C] cqa-border cqa-border-[#E5E5E5] cqa-shadow-[0_1px_2px_rgba(0,0,0,0.05)] cqa-rounded-lg cqa-text-white\"\n (click)=\"apply()\">Apply Filter</button>\n </div>\n </div>\n</div>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\n\nexport interface ColumnVisibilityConfig {\n type?: boolean;\n priority?: boolean;\n result?: boolean;\n status?: boolean;\n labels?: boolean;\n createdBy?: boolean;\n createdAt?: boolean;\n updatedAt?: boolean;\n lastRun?: boolean;\n // Allow additional keys\n [key: string]: any;\n}\n\n@Component({\n selector: 'cqa-column-visibility',\n templateUrl: './column-visibility.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ColumnVisibilityComponent implements OnChanges {\n @Input() isStepGroup: boolean = false;\n // Dynamic columns (preferred). Each item defines the id used as key and the label to render.\n @Input() columns: Array<{ id: string; label: string }> = [];\n // Start with an empty visibility map; keys will be added from 'columns'\n @Input() columnVisibility: ColumnVisibilityConfig = {};\n @Input() selectedAutoRefreshInterval: number = 0; // 0 = Off\n\n @Output() columnVisibilityChange = new EventEmitter<ColumnVisibilityConfig>();\n @Output() autoRefreshChange = new EventEmitter<number>();\n\n ngOnChanges(changes: SimpleChanges): void {\n // When dynamic columns change, ensure we have keys in the visibility map\n if (changes['columns'] && Array.isArray(this.columns) && this.columns.length) {\n for (const col of this.columns) {\n if (this.columnVisibility[col.id] === undefined) {\n this.columnVisibility[col.id] = true;\n }\n }\n }\n }\n\n get areAllColumnsSelected(): boolean {\n const keys = this.getTogglableKeys();\n return keys.every(k => !!this.columnVisibility[k]);\n }\n\n toggleAllColumns(checked: boolean): void {\n const keys = this.getTogglableKeys();\n for (const k of keys) {\n this.columnVisibility[k] = checked;\n }\n this.saveColumnPreferences();\n }\n\n saveColumnPreferences(): void {\n this.columnVisibilityChange.emit({ ...this.columnVisibility });\n }\n\n onAutoRefreshChange(): void {\n this.autoRefreshChange.emit(this.selectedAutoRefreshInterval);\n }\n\n private getTogglableKeys(): string[] {\n return Array.isArray(this.columns) ? this.columns.map(c => c.id) : [];\n }\n}\n\n\n","<div id=\"cqa-ui-root\">\n <cqa-button variant=\"grey-solid\" icon=\"settings\" [matMenuTriggerFor]=\"settingsMenu\" aria-label=\"Settings\">\n </cqa-button>\n\n <mat-menu #settingsMenu=\"matMenu\" class=\"table-settings-menu\">\n <div class=\"settings-menu-content cqa-p-[17px]\" (click)=\"$event.stopPropagation()\">\n <div class=\"settings-section cqa-mb-3\">\n <h4 class=\"settings-title cqa-font-bold cqa-text-[14px] cqa-leading-[20px] cqa-mb-2\">Show Columns</h4>\n <div class=\"settings-options cqa-flex cqa-flex-col cqa-gap-2 cqa-text-[14px] cqa-leading-[20px]\">\n <mat-checkbox [checked]=\"areAllColumnsSelected\" (change)=\"toggleAllColumns($event.checked)\"\n class=\"select-all-checkbox\">\n {{ areAllColumnsSelected ? 'Unselect All' : 'Select All' }}\n </mat-checkbox>\n <!-- Dynamic column list -->\n <ng-container *ngIf=\"columns?.length\">\n <mat-checkbox *ngFor=\"let col of columns\" [(ngModel)]=\"columnVisibility[col.id]\"\n (change)=\"saveColumnPreferences()\">\n {{ col.label }}\n </mat-checkbox>\n </ng-container>\n </div>\n </div>\n\n <div class=\"settings-section\">\n <h4 class=\"settings-title cqa-font-bold cqa-text-[14px] cqa-leading-[20px] cqa-mb-2\">Auto refresh every</h4>\n <div class=\"refresh-options\">\n <mat-radio-group [(ngModel)]=\"selectedAutoRefreshInterval\" (change)=\"onAutoRefreshChange()\"\n class=\"cqa-flex cqa-flex-col cqa-gap-2 cqa-text-[14px] cqa-leading-[20px]\">\n <label><mat-radio-button [value]=\"10000\">10 Seconds</mat-radio-button></label>\n <label><mat-radio-button [value]=\"20000\">20 Seconds</mat-radio-button></label>\n <label><mat-radio-button [value]=\"30000\">30 Seconds</mat-radio-button></label>\n <label><mat-radio-button [value]=\"0\">Off</mat-radio-button></label>\n </mat-radio-group>\n </div>\n </div>\n </div>\n </mat-menu>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface TableAction {\n id: string;\n label: string;\n icon: string;\n tooltip?: string;\n show?: (context: { selected: any[] }) => boolean;\n disabled?: (context: { selected: any[] }) => boolean;\n onClick?: (context: { id: string; selected: any[] }) => void;\n}\n\n@Component({\n selector: 'cqa-table-action-toolbar',\n templateUrl: './table-action-toolbar.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TableActionToolbarComponent {\n @Input() selectedItems: any[] = [];\n @Input() actions: TableAction[] = [];\n\n @Output() actionClick = new EventEmitter<{ id: string; selected: any[] }>();\n\n get hasSelection(): boolean {\n return (this.selectedItems?.length || 0) > 0;\n }\n\n get isSingleSelection(): boolean {\n return this.selectedItems?.length === 1;\n }\n\n get selectionLabel(): string {\n const n = this.selectedItems?.length || 0;\n return n === 1 ? '1 selected' : `${n} selected`;\n }\n\n visibleActions(): TableAction[] {\n const ctx = { selected: this.selectedItems || [] };\n return (this.actions || []).filter(a => (a.show ? a.show(ctx) : true));\n }\n\n isDisabled(action: TableAction): boolean {\n const ctx = { selected: this.selectedItems || [] };\n return action.disabled ? !!action.disabled(ctx) : false;\n }\n\n onAction(action: TableAction): void {\n if (this.isDisabled(action)) {\n return;\n }\n const context = { id: action.id, selected: this.selectedItems || [] };\n if (action.onClick) {\n action.onClick(context);\n }\n this.actionClick.emit(context);\n }\n}\n\n\n","<div id=\"cqa-ui-root\">\n <div\n class=\"action-toolbar cqa-flex cqa-items-center cqa-justify-between cqa-gap-2 cqa-flex-wrap cqa-py-[15.5px] sm:cqa-px-[34px] cqa-px-[20px] cqa-bg-primary cqa-text-white cqa-rounded-[7px]\"\n *ngIf=\"hasSelection\">\n <div class=\"action-toolbar-left cqa-text-[14px] cqa-leading-[21px] cqa-font-medium\">\n {{ selectionLabel }}\n </div>\n <div class=\"action-toolbar-right cqa-flex cqa-items-center cqa-gap-[7px]\">\n <ng-container *ngFor=\"let action of visibleActions()\">\n <div [attr.aria-disabled]=\"isDisabled(action)\" [class.cqa-opacity-50]=\"isDisabled(action)\" [class.cqa-cursor-not-allowed]=\"isDisabled(action)\" (click)=\"!isDisabled(action) && onAction(action)\"\n class=\"cqa-flex cqa-items-center cqa-gap-[8.75px] cqa-py-[5px] cqa-px-[8.75px] cqa-cursor-pointer cqa-text-[12.3px] cqa-leading-[17.5px] cqa-font-medium\">\n <mat-icon class=\"!cqa-w-[16px] !cqa-h-[16px] !cqa-text-[16px]\">{{ action.icon }}</mat-icon>\n <span class=\"md:cqa-flex cqa-hidden\">{{ action.label }}</span>\n </div>\n </ng-container>\n </div>\n <!-- Forwards clicks inside toolbar without affecting outer selections -->\n </div>\n</div>","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { MetricsCardItem } from './metrics-card-item.interface';\n\n@Component({\n selector: 'cqa-metrics-block',\n templateUrl: './metrics-block.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MetricsBlockComponent {\n @Input() item!: MetricsCardItem;\n @Input() progress: string = '0%';\n @Input() layout: string = '1';\n @Input() itemslength: string = '0';\n\n formatPercent(value?: number): string {\n if (value === undefined || value === null || Number.isNaN(value)) return '';\n const sign = value > 0 ? '+' : value < 0 ? '' : '';\n return `${sign}${value}%`;\n }\n\n percentClass(value?: number): string {\n if (value === undefined || value === null || Number.isNaN(value)) return 'cqa-text-[#6B7280]';\n if (value > 0) return 'cqa-text-[#10B981]';\n if (value < 0) return 'cqa-text-[#EF4444]';\n return 'cqa-text-[#6B7280]';\n }\n}\n\n\n","<div id=\"cqa-ui-root\">\n <div\n [ngClass]=\"[layout === '1'\n ? 'cqa-flex cqa-justify-center cqa-items-center cqa-py-3 md:cqa-pt-1 md:cqa-pb-0.5 cqa-px-5 cqa-gap-3 cqa-w-full md:cqa-h-[62px] cqa-border-b-0 cqa-border-[#E5E7EB]'\n : 'cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-py-3 md:cqa-py-1 lg:cqa-px-5 cqa-px-2 cqa-w-full md:cqa-h-[53px]', itemslength == item.id ? 'cqa-border-l md:cqa-border-l-0 md:cqa-border-l' : '' , item.id == '1' && layout === '1' ? 'cqa-border-l md:cqa-border-r' : '']\">\n <ng-container *ngIf=\"layout === '1'; else layout2\">\n <!-- [ngClass]=\"{ 'border-l md:border-l-0': itemslength == item.id }\" -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-center cqa-w-10 cqa-h-10 cqa-min-w-[40px] cqa-rounded-[10px]\"\n [ngClass]=\"item.accentBgClass || 'cqa-bg-[#EEF2FF]'\">\n <mat-icon class=\"!cqa-w-5 !cqa-h-5 !cqa-text-[20px]\" [ngClass]=\"item.iconColorClass || 'cqa-text-[#3F43EE]'\"\n *ngIf=\"item.icon\">{{ item.icon }}</mat-icon>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-items-start cqa-gap-0.5 cqa-w-full cqa-h-auto cqa-flex-1 cqa-truncate\">\n <div class=\"cqa-w-full cqa-h-4 cqa-text-[12px] cqa-leading-4 cqa-font-medium cqa-text-[#6A7282]\">{{ item.label\n }}</div>\n <div class=\"cqa-w-full cqa-h-7 cqa-gap-2 cqa-flex\"\n [ngClass]=\"item.subtext ? 'cqa-justify-between cqa-items-center' : 'cqa-justify-start cqa-items-center'\">\n <div\n class=\"cqa-text-[20px] cqa-leading-[28px] cqa-font-semibold cqa-tracking-[-0.449219px] cqa-text-[#101828]\">\n {{ item.value | number }}</div>\n <div *ngIf=\"item.subtext\"\n class=\"cqa-text-[12px] cqa-leading-4 cqa-text-[#6A7282] cqa-truncate cqa-hidden sm:cqa-block\">{{\n item.subtext }}</div>\n </div>\n <div class=\"cqa-w-full cqa-h-1 cqa-rounded-full cqa-bg-[#F3F4F6] cqa-overflow-hidden\">\n <div class=\"cqa-h-full cqa-rounded-full\" [ngClass]=\"item.colorClass || 'cqa-bg-[#3F43EE]'\"\n [style.width]=\"progress\"></div>\n </div>\n </div>\n </ng-container>\n <ng-template #layout2>\n <div class=\"cqa-flex cqa-items-center cqa-gap-1\">\n <mat-icon class=\"!cqa-w-5 !cqa-h-5 !cqa-text-[16px]\" [ngClass]=\"item.iconColorClass || 'cqa-text-[#3F43EE]'\"\n *ngIf=\"item.icon\">{{ item.icon }}</mat-icon>\n <span class=\"cqa-text-[12px] cqa-leading-4 cqa-text-[#6B7280]\">{{ item.label }}</span>\n </div>\n <div class=\"cqa-flex cqa-items-center cqa-gap-1.5 cqa-w-full cqa-justify-between\">\n <h6 class=\"cqa-text-[16px] cqa-leading-7 cqa-tracking-[-0.45px] cqa-text-[#111827]\">{{ item.value | number }}\n </h6>\n <span *ngIf=\"item.percent !== undefined\" class=\"cqa-text-[10px] cqa-leading-4\"\n [ngClass]=\"percentClass(item.percent)\">{{ formatPercent(item.percent) }}</span>\n </div>\n </ng-template>\n </div>\n</div>","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { MetricsCardItem } from './metrics-card-item.interface';\n\n@Component({\n selector: 'cqa-metrics-card',\n templateUrl: './metrics-card.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MetricsCardComponent {\n @Input() icon: string = 'text_snippet';\n @Input() title: string = 'Total Test Cases';\n @Input() total: number | string = 0;\n @Input() items: MetricsCardItem[] = [];\n @Input() cardClass: string = '';\n @Input() layout: string = '1';\n @Input() totalPercent?: number; // Optional overall percent delta for layout 2\n\n progressWidth(item: MetricsCardItem): string {\n const max = item.max ?? this.inferMax();\n if (!max || max <= 0) return '0%';\n const pct = Math.max(0, Math.min(100, (item.value / max) * 100));\n return pct.toFixed(1) + '%';\n }\n\n private inferMax(): number {\n const maxFromItems = this.items.reduce((m, it) => Math.max(m, it.value), 0);\n return maxFromItems || 1;\n }\n\n formatPercent(value?: number): string {\n if (value === undefined || value === null || Number.isNaN(value)) return '';\n const sign = value > 0 ? '+' : value < 0 ? '' : '';\n return `${sign}${value}%`;\n }\n\n percentClass(value?: number): string {\n if (value === undefined || value === null || Number.isNaN(value)) return 'cqa-text-[#6B7280]';\n if (value > 0) return 'cqa-text-[#10B981]'; // green\n if (value < 0) return 'cqa-text-[#EF4444]'; // red\n return 'cqa-text-[#6B7280]'; // neutral\n }\n}\n\n\n","<div id=\"cqa-ui-root\">\n <div *ngIf=\"layout === '1'\"\n class=\"cqa-w-full cqa-box-border cqa-flex cqa-flex-col cqa-items-start cqa-px-px cqa-pb-px md:cqa-h-[63px] cqa-bg-white cqa-border-t-2 cqa-border-r cqa-border-b-0 cqa-border-l cqa-border-solid cqa-border-[#3F43EE] cqa-rounded-[10px] cqa-flex-none cqa-order-0 cqa-self-stretch cqa-grow-0\"\n [ngClass]=\"cardClass\">\n <!-- Metric blocks -->\n <div\n class=\"cqa-flex-1 cqa-w-full cqa-grid cqa-grid-cols-2 md:cqa-gap-0 cqa-gap-y-2 cqa-py-1 md:cqa-p-0 sm:cqa-grid-cols-2 md:cqa-grid-cols-4 sm:cqa-border-r cqa-border-[#E5E7EB]\">\n <!-- Left total block -->\n <div\n class=\"cqa-flex cqa-flex-col cqa-justify-center cqa-items-start cqa-py-3 md:cqa-pt-1 md:cqa-pb-0.5 cqa-px-6 cqa-gap-1 cqa-w-full sm:cqa-w-[100%] md:cqa-w-[180px] lg:cqa-w-[290px] md:cqa-h-[61px] cqa-border-b-1 sm:cqa-border-b-0 md:cqa-border-b-0 cqa-border-[#E5E7EB]\">\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-medium cqa-text-[#6A7282]\"> {{ title }} </span>\n <h3 class=\"cqa-text-[30px] cqa-leading-[36px] cqa-font-bold cqa-tracking-[0.395508px] cqa-text-[#101828]\"> {{\n total | number }} </h3>\n </div>\n <cqa-metrics-block *ngFor=\"let it of items;\" [item]=\"it\" [itemslength]=\"items.length.toString()\"\n [progress]=\"progressWidth(it)\">\n </cqa-metrics-block>\n </div>\n </div>\n\n <div *ngIf=\"layout === '2'\"\n class=\"cqa-w-full cqa-box-border cqa-flex cqa-flex-col cqa-items-start cqa-px-px cqa-pb-px md:cqa-h-[63px] cqa-bg-white cqa-flex-none cqa-order-0 cqa-self-stretch cqa-grow-0\"\n [ngClass]=\"cardClass\">\n <div\n class=\"cqa-flex cqa-flex-col md:cqa-flex-row cqa-flex-wrap cqa-items-stretch cqa-w-full cqa-min-h-[53px] cqa-rounded-none cqa-flex-none cqa-order-0 cqa-self-stretch cqa-grow-0 cqa-gap-4\">\n <!-- Left total block -->\n <div\n class=\"cqa-flex cqa-flex-col cqa-justify-center cqa-items-start cqa-py-3 md:cqa-py-1 cqa-px-4 sm:cqa-px-6 cqa-gap-1 cqa-w-full sm:cqa-w-[100%] md:cqa-w-[240px] lg:cqa-w-[290px] md:cqa-h-[61px] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-relative cqa-overflow-hidden before:cqa-content-[''] before:cqa-bg-[#4C4C51] before:cqa-h-[2px] before:cqa-w-full before:cqa-absolute before:cqa-top-0 before:cqa-left-0\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-justify-between cqa-w-full\">\n <mat-icon class=\"!cqa-w-4 !cqa-h-4 !cqa-text-[16px] cqa-text-[#6B7280]\">{{ icon }}</mat-icon>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-4\">{{ title }}</span>\n <div class=\"cqa-flex cqa-items-end cqa-gap-2 cqa-ml-auto\">\n <h4 class=\"cqa-text-[28px] cqa-leading-7 cqa-tracking-[-0.45px] cqa-text-[#111827]\">{{ total | number }}\n </h4>\n <span *ngIf=\"totalPercent !== undefined\" class=\"cqa-text-[10px] cqa-leading-4\"\n [ngClass]=\"percentClass(totalPercent)\">{{ formatPercent(totalPercent) }}</span>\n </div>\n </div>\n\n </div>\n <!-- Metric blocks -->\n <div\n class=\"cqa-flex-1 cqa-w-full cqa-grid cqa-grid-cols-2 md:cqa-grid-cols-3 cqa-items-center cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-relative cqa-overflow-hidden\">\n <span class=\"cqa-h-[2px] cqa-w-full cqa-absolute cqa-top-0 cqa-left-0\"\n [style.background]=\"'linear-gradient(90deg, #3B82F6 0%, rgba(0, 0, 0, 0) 100%)'\"></span>\n <cqa-metrics-block *ngFor=\"let it of items; let i = index\" [item]=\"it\" [layout]=\"layout\">\n </cqa-metrics-block>\n </div>\n </div>\n </div>\n</div>","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'cqa-chart-card',\n templateUrl: './chart-card.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartCardComponent {\n @Input() title: string = 'Chart';\n @Input() subtitle?: string;\n @Input() cardClass: string = '';\n}\n\n\n","<div id=\"cqa-ui-root\">\n <div\n class=\"cqa-w-full cqa-box-border cqa-flex cqa-flex-col cqa-bg-white cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-rounded-[10px]\"\n [ngClass]=\"cardClass\">\n <!-- Header -->\n <div\n class=\"cqa-flex cqa-items-center cqa-justify-between cqa-px-4 sm:cqa-px-6 cqa-py-3 cqa-border-b cqa-border-[#E5E7EB]\">\n <div class=\"cqa-flex cqa-flex-col\">\n <div class=\"cqa-text-[14px] cqa-leading-5 cqa-font-semibold cqa-text-[#101828]\">{{ title }}</div>\n <div *ngIf=\"subtitle\" class=\"cqa-text-[12px] cqa-leading-4 cqa-text-[#6A7282] cqa-mt-0.5\">{{ subtitle }}</div>\n </div>\n <!-- Right-side actions slot -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <ng-content select=\"[chart-actions]\"></ng-content>\n </div>\n </div>\n\n <!-- Chart/content area -->\n <div class=\"cqa-p-3 sm:cqa-p-4\">\n <div class=\"cqa-w-full cqa-min-h-[220px]\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n</div>","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'cqa-progress-text-card',\n templateUrl: './progress-text-card.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ProgressTextCardComponent {\n @Input() value: number = 0; // 0 - 100\n @Input() label: string = 'Test Success Rate';\n @Input() deltaPercent?: number; // e.g., +8\n @Input() deltaSuffix: string = 'since last run';\n @Input() cardClass: string = '';\n\n get percentText(): string {\n const v = Math.max(0, Math.min(100, Number(this.value) || 0));\n return `${v}%`;\n }\n\n get fillWidth(): string {\n const v = Math.max(0, Math.min(100, Number(this.value) || 0));\n return v + '%';\n }\n\n deltaClass(): string {\n if (this.deltaPercent === undefined || this.deltaPercent === null || Number.isNaN(this.deltaPercent)) {\n return 'text-[#6B7280]';\n }\n if (this.deltaPercent > 0) return 'text-[#10B981]';\n if (this.deltaPercent < 0) return 'text-[#EF4444]';\n return 'text-[#6B7280]';\n }\n}\n\n\n","<div id=\"cqa-ui-root\">\n <div\n class=\"cqa-w-full cqa-box-border cqa-flex cqa-flex-col cqa-bg-white cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-rounded-[10px] cqa-p-4 sm:cqa-p-5\"\n [ngClass]=\"cardClass\">\n <div class=\"cqa-flex cqa-items-baseline cqa-gap-2\">\n <div\n class=\"cqa-text-[28px] sm:cqa-text-[32px] cqa-leading-[36px] cqa-font-bold cqa-tracking-[-0.3px] cqa-text-[#111827]\">\n {{ percentText }}</div>\n <div class=\"cqa-text-[18px] sm:cqa-text-[20px] cqa-leading-[28px] cqa-text-[#111827]\">{{ label }}</div>\n </div>\n <div class=\"cqa-mt-4 cqa-w-full cqa-h-[14px] cqa-bg-[#E5E7EB] cqa-rounded-full cqa-overflow-hidden\">\n <div class=\"cqa-h-full cqa-rounded-full\" [style.width]=\"fillWidth\"\n [style.background]=\"'linear-gradient(90deg, #DD5A38 0%, #F59E0B 40%, #10B981 100%)'\">\n </div>\n </div>\n <div class=\"cqa-mt-2 cqa-text-[14px] cqa-leading-5\" [ngClass]=\"deltaClass()\" *ngIf=\"deltaPercent !== undefined\">\n {{ deltaPercent > 0 ? '+' : ''}}{{ deltaPercent }}% {{ deltaSuffix }}\n </div>\n </div>\n</div>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { DynamicSelectFieldConfig } from '../../dynamic-select/dynamic-select-field.component';\n\nexport interface HeaderSelectOption {\n id?: any;\n value?: any;\n name?: string;\n label?: string;\n}\n\n@Component({\n selector: 'cqa-dashboard-header',\n templateUrl: './dashboard-header.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DashboardHeaderComponent {\n @Input() title: string = '';\n @Input() badgeText?: string;\n @Input() badgeClass: string = 'bg-[#D1FAE5] text-[#065F46]';\n @Input() headerClass: string = '';\n\n // Optional workspace select on the right\n @Input() workspaceOptions: HeaderSelectOption[] = [];\n @Input() workspacePlaceholder: string = 'Workspace';\n @Input() workspaceDisabled: boolean = false;\n @Input() workspaceValue?: any;\n @Input() workspaceMultiple: boolean = true;\n @Input() workspaceSearchable: boolean = false;\n @Output() workspaceValueChange = new EventEmitter<any>();\n\n workspaceForm: FormGroup = new FormGroup({\n workspace: new FormControl(),\n });\n\n ngOnInit(): void {\n this.syncFormFromInput();\n this.workspaceForm.get('workspace')?.valueChanges.subscribe((v) => {\n this.workspaceValue = v;\n this.workspaceValueChange.emit(v);\n });\n }\n\n ngOnChanges(_changes: SimpleChanges): void {\n this.syncFormFromInput();\n }\n\n get workspaceConfig(): DynamicSelectFieldConfig {\n return {\n key: 'workspace',\n placeholder: this.workspacePlaceholder,\n disabled: this.workspaceDisabled,\n multiple: this.workspaceMultiple,\n searchable: this.workspaceSearchable,\n options: this.workspaceOptions,\n };\n }\n\n private syncFormFromInput(): void {\n const ctrl = this.workspaceForm.get('workspace');\n if (!ctrl) return;\n const val = this.workspaceValue;\n const normalized = this.workspaceMultiple\n ? Array.isArray(val) ? val : (val != null ? [val] : [])\n : (Array.isArray(val) ? (val.length ? val[0] : undefined) : val);\n ctrl.setValue(normalized, { emitEvent: false });\n }\n}\n\n\n","<div id=\"cqa-ui-root\">\n <div\n class=\"cqa-w-full cqa-flex cqa-items-end cqa-justify-between cqa-bg-white cqa-pr-6 cqa-pl-2 lg:cqa-px-6 lg:cqa-py-[6px] cqa-py-2 cqa-border-b cqa-border-default cqa-shadow-header\"\n [ngClass]=\"headerClass\">\n <!-- Left branding block -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-min-w-0\">\n <div class=\"cqa-pr-4 lg:cqa-hidden cqa-gap-2 md:cqa-flex\">\n <cqa-button variant=\"filled\" icon=\"\" [customClass]=\"'!cqa-rounded-[10px] !cqa-p-[7px] !cqa-min-w-[47px]'\">\n <svg width=\"31\" height=\"22\" viewBox=\"0 0 31 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5.16675 11H25.8334\" stroke=\"white\" stroke-width=\"1.83333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M5.16675 16.5H25.8334\" stroke=\"white\" stroke-width=\"1.83333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M5.16675 5.5H25.8334\" stroke=\"white\" stroke-width=\"1.83333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </cqa-button>\n <span class=\"cqa-border-l cqa-border-primary-surface cqa-hidden md:cqa-flex\"></span>\n <cqa-button variant=\"filled\" icon=\"\" class=\"cqa-hidden md:cqa-flex\" [customClass]=\"'!cqa-rounded-[10px] !cqa-p-[7px] !cqa-min-w-[47px]'\">\n <svg width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.58337 11H17.4167\" stroke=\"white\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M11 4.58301V17.4163\" stroke=\"white\" stroke-width=\"1.33333\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </cqa-button>\n </div>\n <!-- Optional projected logo -->\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <rect x=\"0.5\" y=\"0.5\" width=\"31\" height=\"31\" rx=\"15.5\" fill=\"url(#pattern0_6303_22035)\" />\n <rect x=\"0.5\" y=\"0.5\" width=\"31\" height=\"31\" rx=\"15.5\" stroke=\"#D8D9FC\" />\n <defs>\n <pattern id=\"pattern0_6303_22035\" patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <use xlink:href=\"#image0_6303_22035\" transform=\"scale(0.005)\" />\n </pattern>\n <image id=\"image0_6303_22035\" width=\"200\" height=\"200\" preserveAspectRatio=\"none\"\n xlink:href=\"data:image/jpeg;base64,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\" />\n </defs>\n </svg>\n\n <!-- Title + optional badge -->\n <div class=\"cqa-items-end cqa-gap-3 cqa-min-w-0 cqa-hidden md:cqa-flex\">\n <div\n class=\"cqa-truncate cqa-text-[#22223B] cqa-font-extrabold cqa-text-[32px] cqa-font-nunito-sans cqa-leading-[1]\">\n {{ title }}</div>\n <span *ngIf=\"badgeText\"\n class=\"cqa-px-2 cqa-py-[2px] cqa-rounded-lg cqa-text-[12px] cqa-font-medium cqa-leading-4 cqa-whitespace-nowrap cqa-text-[#007A55] cqa-bg-[#D0FAE5] cqa-border cqa-border-[#A4F4CF]\"\n [ngClass]=\"badgeClass\">{{ badgeText }}</span>\n </div>\n </div>\n\n <!-- Right controls/actions -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-flex-1\">\n <!-- Optional workspace select -->\n <div *ngIf=\"workspaceOptions?.length\" class=\"cqa-w-full cqa-max-w-[199px] cqa-ml-auto header-dropdown\">\n <cqa-dynamic-select [form]=\"workspaceForm\" [config]=\"workspaceConfig\">\n </cqa-dynamic-select>\n </div>\n\n <ng-content></ng-content>\n </div>\n </div>\n</div>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport type CoverageStatus = 'success' | 'error' | 'neutral';\n\nexport interface CoverageItem {\n /** Row label, e.g. \"Input Validation\" */\n label: string;\n /** Value in percent (0-100) */\n percent: number;\n /** Visual status to colorize the bar/text */\n status?: CoverageStatus;\n}\n\n@Component({\n selector: 'cqa-coverage-module-card',\n templateUrl: './coverage-module-card.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CoverageModuleCardComponent {\n /** Card title, e.g. \"AI Ask\" */\n @Input() title: string = 'Coverage';\n /** Number of issues to display next to title */\n @Input() issues: number = 0;\n /** Optional \"View\" action visibility */\n @Input() showViewAction: boolean = true;\n /** Middle metrics: left group */\n @Input() positiveCount: number = 0;\n @Input() negativeCount: number = 0;\n @Input() edgeCaseCount: number = 0;\n @Input() positiveLabel: string = 'Positive';\n @Input() negativeLabel: string = 'Negative';\n @Input() edgeCaseLabel: string = 'Edge Case';\n /** Middle metrics: right group */\n @Input() aiCount: number = 0;\n @Input() humanCount: number = 0;\n @Input() aiLabel: string = 'AI';\n @Input() humanLabel: string = 'Human';\n /** Rows of coverage with percentage bars */\n @Input() items: CoverageItem[] = [];\n /** CTA button label */\n @Input() ctaText: string = 'AI Coverage';\n /** Disable CTA */\n @Input() ctaDisabled: boolean = false;\n\n @Output() view = new EventEmitter<void>();\n @Output() ctaClicked = new EventEmitter<void>();\n\n statusColorClass(item: CoverageItem): string {\n const status = item.status ?? 'neutral';\n switch (status) {\n case 'success':\n return 'cqa-bg-[#10B981]'; // green\n case 'error':\n return 'cqa-bg-[#EF4444]'; // red\n default:\n return 'cqa-bg-[#3B82F6]'; // blue\n }\n }\n\n textColorClass(item: CoverageItem): string {\n const status = item.status ?? 'neutral';\n switch (status) {\n case 'success':\n return 'cqa-text-[#10B981]';\n case 'error':\n return 'cqa-text-[#EF4444]';\n default:\n return 'cqa-text-[#374151]';\n }\n }\n\n formatPercent(pct: number): string {\n if (pct === undefined || pct === null || Number.isNaN(pct)) return '0%';\n const clamped = Math.max(0, Math.min(100, pct));\n return `${clamped}%`;\n }\n}\n\n\n","<div id=\"cqa-ui-root\">\n <div class=\"cqa-w-full cqa-bg-white cqa-rounded-[8px] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-py-[10px] cqa-px-[17px] cqa-shadow-card\">\n <!-- Header -->\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-mb-3\">\n <h3 class=\"cqa-text-[18px] cqa-leading-[28px] cqa-font-bold cqa-text-dialog\">{{ title }}</h3>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span\n class=\"cqa-px-[10px] cqa-py-[4px] cqa-text-[12px] cqa-leading-[16px] cqa-flex cqa-items-center cqa-gap-1 cqa-rounded-full cqa-bg-warning-light cqa-text-danger\">\n {{ issues }} {{ issues === 1 ? 'issue' : 'issues' }}\n </span>\n <button type=\"button\"\n class=\"cqa-text-[14px] cqa-leading-[20px] cqa-text-primary cqa-flex cqa-items-center cqa-gap-1\"\n *ngIf=\"showViewAction\" (click)=\"view.emit()\">\n View\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M6 12L10 8L6 4\" stroke=\"#4F46E5\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n </button>\n </div>\n </div>\n\n <!-- Middle metrics row -->\n <div class=\"cqa-flex cqa-items-stretch cqa-justify-between cqa-gap-6 cqa-mb-4\">\n <!-- Left: Positive / Negative / Edge Case -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-6\">\n <div class=\"cqa-flex cqa-flex-col cqa-items-start\">\n <span class=\"cqa-text-[18px] cqa-leading-6 cqa-font-semibold cqa-text-[#10B981]\">{{ positiveCount }}</span>\n <span class=\"cqa-text-[12px] cqa-leading-4 cqa-text-danger\">{{ positiveLabel }}</span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-items-start\">\n <span class=\"cqa-text-[18px] cqa-leading-6 cqa-font-semibold cqa-text-[#EF4444]\">{{ negativeCount }}</span>\n <span class=\"cqa-text-[12px] cqa-leading-4 cqa-text-danger\">{{ negativeLabel }}</span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-items-start\">\n <span class=\"cqa-text-[18px] cqa-leading-6 cqa-font-semibold cqa-text-[#F59E0B]\">{{ edgeCaseCount }}</span>\n <span class=\"cqa-text-[12px] cqa-leading-4 cqa-text-danger\">{{ edgeCaseLabel }}</span>\n </div>\n </div>\n\n <!-- Divider -->\n <div class=\"cqa-w-px cqa-bg-[#E5E7EB]\"></div>\n\n <!-- Right: AI / Human -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-6\">\n <div class=\"cqa-flex cqa-flex-col cqa-items-start\">\n <span class=\"cqa-text-[18px] cqa-leading-6 cqa-font-semibold cqa-text-dialog\">{{ aiCount }}</span>\n <span class=\"cqa-text-[12px] cqa-leading-4 cqa-text-danger\">{{ aiLabel }}</span>\n </div>\n <div class=\"cqa-flex cqa-flex-col cqa-items-start\">\n <span class=\"cqa-text-[18px] cqa-leading-6 cqa-font-semibold cqa-text-dialog\">{{ humanCount }}</span>\n <span class=\"cqa-text-[12px] cqa-leading-4 cqa-text-danger\">{{ humanLabel }}</span>\n </div>\n </div>\n </div>\n\n <!-- Body -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <div *ngFor=\"let it of items\" class=\"cqa-flex cqa-items-center cqa-gap-3\">\n <span class=\"cqa-min-w-[120px] cqa-text-[12px] cqa-leading-4 cqa-text-[#374151]\">{{ it.label }}</span>\n <div class=\"cqa-flex-1 cqa-h-[8px] cqa-rounded-full cqa-bg-[#F3F4F6] cqa-overflow-hidden\">\n <div class=\"cqa-h-full cqa-rounded-full\" [ngClass]=\"statusColorClass(it)\"\n [style.width]=\"formatPercent(it.percent)\"></div>\n </div>\n <span class=\"cqa-w-[40px] cqa-text-right cqa-text-[12px] cqa-leading-4\" [ngClass]=\"textColorClass(it)\">{{\n formatPercent(it.percent) }}</span>\n </div>\n </div>\n\n <!-- Footer -->\n <div class=\"cqa-mt-4\">\n <button type=\"button\"\n class=\"cqa-w-full cqa-h-[40px] cqa-rounded-[8px] cqa-bg-[#4338CA] cqa-text-white cqa-text-[14px] cqa-leading-[20px] hover:cqa-bg-[#3730A3] disabled:cqa-opacity-50 disabled:cqa-cursor-not-allowed\"\n [disabled]=\"ctaDisabled\" (click)=\"ctaClicked.emit()\">\n ✨ {{ ctaText }}\n </button>\n </div>\n </div>\n</div>","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\nexport interface DistributionSegment {\n label: string;\n value: number;\n /** Tailwind-like class or hex bg color */\n colorClass?: string;\n}\n\nexport interface DistributionChildItem {\n label: string;\n value: number;\n colorClass?: string;\n}\n\nexport interface DistributionItem {\n icon?: string;\n label: string;\n value: number;\n colorClass?: string; // used for icon/accent if desired\n children?: DistributionChildItem[];\n}\n\n@Component({\n selector: 'cqa-test-distribution-card',\n templateUrl: './test-distribution-card.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TestDistributionCardComponent {\n @Input() title: string = 'Test Distribution';\n @Input() segments: DistributionSegment[] = [];\n @Input() items: DistributionItem[] = [];\n\n totalSegments(): number {\n return this.segments.reduce((sum, s) => sum + (s.value || 0), 0) || 1;\n }\n\n segmentWidth(segment: DistributionSegment): string {\n const total = this.totalSegments();\n const pct = Math.max(0, Math.min(100, (segment.value / total) * 100));\n return pct + '%';\n }\n\n segmentColor(segment: DistributionSegment, fallback: string): string {\n return segment.colorClass || fallback;\n }\n}\n\n\n","<div id=\"cqa-ui-root\">\n <div class=\"cqa-w-full cqa-bg-white cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-p-4\">\n <!-- Title -->\n <h3 class=\"cqa-text-[16px] cqa-leading-6 cqa-font-medium cqa-text-[#111827] cqa-mb-3\">{{ title }}</h3>\n\n <!-- Stacked segments pill -->\n <div class=\"cqa-w-full cqa-h-[28px] cqa-rounded-full cqa-bg-[#F3F4F6] cqa-overflow-hidden cqa-flex cqa-mb-3\">\n <ng-container *ngFor=\"let s of segments; let i = index; let last = last\">\n <div\n class=\"cqa-h-full cqa-flex cqa-items-center cqa-justify-center cqa-text-white cqa-text-[12px] cqa-leading-[12px]\"\n [ngClass]=\"[\n segmentColor(s, i === 0 ? 'cqa-bg-[#4F46E5]' : i === segments.length - 1 ? 'cqa-bg-[#10B981]' : 'cqa-bg-[#8B5CF6]'),\n i === 0 ? 'cqa-rounded-l-full' : '',\n last ? 'cqa-rounded-r-full' : ''\n ]\" [style.width]=\"segmentWidth(s)\">\n {{ s.label }}\n </div>\n </ng-container>\n </div>\n\n <!-- Items list -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div *ngFor=\"let it of items\" class=\"cqa-flex cqa-flex-col\">\n <!-- Parent row -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between cqa-py-1\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <mat-icon class=\"cqa-text-[#6B7280]\" [style.width.px]=\"16\" [style.height.px]=\"16\" [style.fontSize.px]=\"16\"\n *ngIf=\"it.icon\">{{ it.icon }}</mat-icon>\n <span class=\"cqa-text-[14px] cqa-leading-5 cqa-text-[#111827]\">{{ it.label }}</span>\n </div>\n <div class=\"cqa-text-[14px] cqa-leading-5 cqa-font-semibold cqa-text-[#111827]\">{{ it.value | number }}</div>\n </div>\n\n <!-- Children rows -->\n <div *ngIf=\"it.children?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-2\">\n <div *ngFor=\"let ch of it.children\"\n class=\"cqa-flex cqa-items-center cqa-justify-between cqa-px-2 cqa-py-1 cqa-rounded-md cqa-bg-[#F9FAFB] cqa-text-[#6B7280]\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <span class=\"cqa-w-[6px] cqa-h-[14px] cqa-rounded-full\"\n [ngClass]=\"ch.colorClass || 'cqa-bg-[#8B5CF6]'\"></span>\n <span class=\"cqa-text-[12px] cqa-leading-5\">\n {{ ch.label }}\n <span class=\"cqa-font-semibold cqa-text-[#111827]\">{{ ch.value }}</span>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\n\n@Component({\n selector: 'cqa-failed-test-cases-card',\n templateUrl: './failed-test-cases-card.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FailedTestCasesCardComponent {\n /** E.g., \"C-62: Upload Content\" */\n @Input() title: string = 'Failed Test Case';\n /** Number of failures to display in the pill */\n @Input() failures: number = 0;\n /** Pill label (e.g., \"failures\") */\n @Input() failuresLabel: string = 'failures';\n /** Optional custom class for the pill background */\n @Input() pillClass: string = 'bg-[#EF4444] text-white';\n /** Root cause text; when empty, show a default message */\n @Input() rootCause?: string;\n /** Root cause label (left part, emphasized) */\n @Input() rootCauseLabel: string = 'Root cause';\n /** If false, hide the root cause row */\n @Input() showRootCause: boolean = true;\n /** Last failed text (e.g., \"2 hours ago\") */\n @Input() lastFailed?: string;\n /** Label for timestamp */\n @Input() lastFailedLabel: string = 'Last failed';\n /** Optional extra class for the outer card */\n @Input() cardClass: string = '';\n /** Left border accent class */\n @Input() leftAccentClass: string = 'border-l-[4px] border-[#EF4444]';\n\n get rootCauseDisplay(): string {\n return this.rootCause && this.rootCause.trim().length\n ? this.rootCause\n : 'No root cause available';\n }\n}\n\n\n","<div id=\"cqa-ui-root\">\n <div class=\"cqa-w-full cqa-bg-white cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-p-4\"\n [ngClass]=\"[leftAccentClass, cardClass]\">\n <div class=\"cqa-flex cqa-items-start cqa-justify-between cqa-gap-2\">\n <!-- Title -->\n <h3 class=\"cqa-text-[16px] cqa-leading-6 cqa-font-semibold cqa-text-[#111827]\">{{ title }}</h3>\n\n <!-- Failures pill -->\n <span class=\"cqa-px-2.5 cqa-py-1 cqa-rounded-full cqa-text-[12px] cqa-leading-4 cqa-font-medium\"\n [ngClass]=\"pillClass\">\n {{ failures | number }} {{ failuresLabel }}\n </span>\n </div>\n\n <!-- Root cause -->\n <div *ngIf=\"showRootCause\" class=\"cqa-mt-2 cqa-text-[14px] cqa-leading-5\">\n <span class=\"cqa-font-semibold cqa-text-[#EF4444]\">{{ rootCauseLabel }}:</span>\n <span class=\"cqa-text-[#EF4444]\">{{ rootCauseDisplay }}</span>\n </div>\n\n <!-- Timestamp -->\n <div *ngIf=\"lastFailed\"\n class=\"cqa-mt-1 cqa-flex cqa-items-center cqa-gap-2 cqa-text-[12px] cqa-leading-5 cqa-text-[#6B7280]\">\n <mat-icon class=\"!cqa-w-4 !cqa-h-4 !cqa-text-[16px]\">schedule</mat-icon>\n <span>{{ lastFailedLabel }}: {{ lastFailed }}</span>\n </div>\n </div>\n</div>","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface SelectedFilterChip {\n key?: string;\n label?: string;\n text: string;\n fullText?: string;\n hasMore?: boolean;\n}\n\n@Component({\n selector: 'cqa-selected-filters',\n templateUrl: './selected-filters.component.html',\n styleUrls: [],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SelectedFiltersComponent {\n @Input() filterApplied = false;\n @Input() chips: SelectedFilterChip[] = [];\n\n @Output() removeChip = new EventEmitter<SelectedFilterChip>();\n @Output() clearAll = new EventEmitter<void>();\n}\n\n\n","<div id=\"cqa-ui-root\">\n <div class=\"cqa-w-full cqa-flex cqa-flex-wrap cqa-justify-end cqa-gap-2 cqa-mb-3\"\n *ngIf=\"filterApplied && (chips?.length || 0)\">\n <div\n class=\"cqa-inline-flex cqa-items-center cqa-gap-2 cqa-px-2 cqa-py-1 cqa-rounded-full cqa-border cqa-border-success-100 cqa-bg-primary-surface\"\n *ngFor=\"let chip of chips\" [matTooltip]=\"chip.hasMore ? chip.fullText : ''\" [matTooltipDisabled]=\"!chip.hasMore\"\n matTooltipPosition=\"above\">\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-medium cqa-text-primary\">{{ chip.label || chip.key\n }}:</span>\n <span class=\"cqa-text-[12px] cqa-leading-[16px]\">{{ chip.text }}</span>\n <button type=\"button\"\n class=\"cqa-ml-1 cqa-inline-flex cqa-items-center cqa-justify-center cqa-rounded-full cqa-border cqa-border-transparent hover:cqa-bg-[#EEF2FF]\"\n (click)=\"removeChip.emit(chip)\" aria-label=\"Remove filter\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 12 11\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M8.625 2.875L3.375 8.125\" stroke=\"#3F43EE\" stroke-width=\"0.875\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n <path d=\"M3.375 2.875L8.625 8.125\" stroke=\"#3F43EE\" stroke-width=\"0.875\" stroke-linecap=\"round\"\n stroke-linejoin=\"round\" />\n </svg>\n </button>\n </div>\n\n <button type=\"button\" class=\"cqa-text-[12px] cqa-leading-[16px] cqa-text-grey-300 hover:cqa-underline\"\n (click)=\"clearAll.emit()\">\n Clear All\n </button>\n </div>\n</div>","/**\n * Utility for getting consistent colors for metadata values\n * Used across Status, Priority, and Result fields\n * \n * Colors are defined here and also exported in metadata-colors.constants.js for tailwind.config.js\n */\n\n// Color constants (also exported in metadata-colors.constants.js for Tailwind)\nconst PRIORITY_COLOR_VALUES = {\n critical: '#DC2626', // Red - danger color\n major: '#C10007', // Dark red\n medium: '#CA8A04', // Yellow-600\n minor: '#2563EB', // Blue-600\n 'not-set': '#101828', // Default dark\n};\n\nconst RESULT_COLOR_VALUES = {\n passed: '#16A34A', // Green-600\n failed: '#DC2626', // Red - danger color\n aborted: '#EA580C', // Orange-600\n 'in-review': '#2563EB', // Blue-600\n 'not-executed': '#101828', // Default dark\n};\n\nconst STATUS_COLOR_VALUES = {\n active: '#16A34A', // Green-600\n inactive: '#6B7280', // Gray-500\n pending: '#CA8A04', // Yellow-600\n completed: '#16A34A', // Green-600\n};\n\nconst DEFAULT_METADATA_COLOR_VALUE = '#101828';\n\nexport type MetadataKey = 'priority' | 'result' | 'status';\n\nexport interface MetadataColorMap {\n [key: string]: string;\n}\n\n/**\n * Color mappings for Priority values\n */\nexport const PRIORITY_COLORS: MetadataColorMap = {\n 'critical': PRIORITY_COLOR_VALUES.critical,\n 'major': PRIORITY_COLOR_VALUES.major,\n 'medium': PRIORITY_COLOR_VALUES.medium,\n 'minor': PRIORITY_COLOR_VALUES.minor,\n 'not set': PRIORITY_COLOR_VALUES['not-set'],\n};\n\n/**\n * Color mappings for Result values\n */\nexport const RESULT_COLORS: MetadataColorMap = {\n 'passed': RESULT_COLOR_VALUES.passed,\n 'failed': RESULT_COLOR_VALUES.failed,\n 'aborted': RESULT_COLOR_VALUES.aborted,\n 'in review': RESULT_COLOR_VALUES['in-review'],\n 'not executed': RESULT_COLOR_VALUES['not-executed'],\n};\n\n/**\n * Color mappings for Status values\n */\nexport const STATUS_COLORS: MetadataColorMap = {\n 'active': STATUS_COLOR_VALUES.active,\n 'inactive': STATUS_COLOR_VALUES.inactive,\n 'pending': STATUS_COLOR_VALUES.pending,\n 'completed': STATUS_COLOR_VALUES.completed,\n};\n\n/**\n * Default color for metadata values\n */\nexport const DEFAULT_METADATA_COLOR = DEFAULT_METADATA_COLOR_VALUE;\n\n/**\n * Gets the color for a metadata value based on its key and value\n * @param key - The metadata key (priority, result, or status)\n * @param value - The metadata value (string or object with value property)\n * @returns Color hex code as a string\n */\nexport function getMetadataColor(\n key: string,\n value: string | { label: string; value: string; highlight?: boolean }\n): string {\n // Extract the actual value\n const actualValue = typeof value === 'string' ? value : value.value;\n const normalizedValue = actualValue.toLowerCase().trim();\n const normalizedKey = key.toLowerCase().trim();\n\n // Get color based on key\n let colorMap: MetadataColorMap | undefined;\n\n switch (normalizedKey) {\n case 'priority':\n colorMap = PRIORITY_COLORS;\n break;\n case 'result':\n colorMap = RESULT_COLORS;\n break;\n case 'status':\n colorMap = STATUS_COLORS;\n break;\n default:\n return DEFAULT_METADATA_COLOR;\n }\n\n // Return color for the value, or default if not found\n return colorMap[normalizedValue] || DEFAULT_METADATA_COLOR;\n}\n\n/**\n * Gets inline style object for metadata value color\n * @param key - The metadata key\n * @param value - The metadata value\n * @returns Style object with color property\n */\nexport function getMetadataValueStyle(\n key: string,\n value: string | { label: string; value: string; highlight?: boolean }\n): { [key: string]: string } {\n return { color: getMetadataColor(key, value) };\n}\n\n","import { Component, Input } from '@angular/core';\n\nexport type BadgeVariant = 'warning' | 'error' | 'info' | 'success' | 'default' | 'outline';\n\n@Component({\n selector: 'cqa-badge',\n templateUrl: './badge.component.html',\n styleUrls: []\n})\nexport class BadgeComponent {\n @Input() label: string = '';\n @Input() icon?: string;\n @Input() variant: BadgeVariant = 'default';\n @Input() backgroundColor?: string;\n @Input() textColor?: string;\n @Input() iconBackgroundColor?: string;\n @Input() iconColor?: string;\n\n get badgeClasses(): string {\n const baseClasses = [\n 'cqa-inline-flex',\n 'cqa-items-center',\n 'cqa-justify-center',\n 'cqa-rounded-[6px]',\n 'cqa-font-normal',\n 'cqa-leading-[17px]'\n ];\n \n // Only apply variant-specific Tailwind classes if custom colors are not provided\n if (!this.backgroundColor && !this.textColor) {\n switch (this.variant) {\n case 'error':\n return [...baseClasses, 'cqa-bg-red-100', 'cqa-text-red-800'].join(' ');\n case 'warning':\n return [...baseClasses, 'cqa-bg-yellow-100', 'cqa-text-yellow-800'].join(' ');\n case 'info':\n return [...baseClasses, 'cqa-bg-blue-100', 'cqa-text-blue-800'].join(' ');\n case 'success':\n return [...baseClasses, 'cqa-bg-green-100', 'cqa-text-green-800'].join(' ');\n case 'outline':\n return [...baseClasses, 'cqa-bg-transparent', 'cqa-text-gray-800'].join(' ');\n default:\n return [...baseClasses, 'cqa-bg-gray-100', 'cqa-text-gray-800'].join(' ');\n }\n }\n \n // If custom colors are provided, only return base classes\n return baseClasses.join(' ');\n }\n\n get badgeStyles(): { [key: string]: string } {\n const styles: { [key: string]: string } = {};\n \n if (this.backgroundColor) {\n styles['background-color'] = this.backgroundColor;\n } else if (this.variant === 'outline') {\n styles['background-color'] = 'transparent';\n }\n \n if (this.textColor) {\n styles['color'] = this.textColor;\n }\n \n return styles;\n }\n\n get iconContainerClasses(): string {\n const baseClasses = [\n 'cqa-inline-flex',\n 'cqa-items-center',\n 'cqa-justify-center',\n 'cqa-flex-shrink-0',\n 'cqa-mr-1.5'\n ];\n \n // No circular background for any variant - just return base classes\n return baseClasses.join(' ');\n }\n\n get iconContainerStyles(): { [key: string]: string } {\n const styles: { [key: string]: string } = {\n 'display': 'inline-flex',\n 'align-items': 'center',\n 'justify-content': 'center'\n };\n \n // No circular background - only apply custom icon background color if explicitly provided\n if (this.iconBackgroundColor) {\n styles['background-color'] = this.iconBackgroundColor;\n // If custom background is provided, add circle dimensions\n styles['width'] = '16px';\n styles['height'] = '16px';\n styles['min-width'] = '16px';\n styles['min-height'] = '16px';\n styles['border-radius'] = '50%';\n }\n \n return styles;\n }\n\n get iconClasses(): string {\n const baseClasses: string[] = [];\n \n // Only apply white text class if custom icon color is not provided\n if (!this.iconColor) {\n return [...baseClasses, 'cqa-text-white'].join(' ');\n }\n \n return baseClasses.join(' ');\n }\n\n get iconStyles(): { [key: string]: string } {\n const styles: { [key: string]: string } = {\n 'font-size': '14px',\n 'width': '14px',\n 'height': '14px',\n 'line-height': '14px'\n };\n \n if (this.iconColor) {\n styles['color'] = this.iconColor;\n } else {\n // Use variant-specific text color for icon (no white background anymore)\n switch (this.variant) {\n case 'error':\n styles['color'] = '#991B1B'; // red-800\n break;\n case 'warning':\n styles['color'] = '#854D0E'; // yellow-800\n break;\n case 'info':\n styles['color'] = '#1E40AF'; // blue-800\n break;\n case 'success':\n styles['color'] = '#166534'; // green-800\n break;\n default:\n styles['color'] = this.textColor || '#374151'; // gray-700 default\n }\n }\n \n return styles;\n }\n}\n\n","<div id=\"cqa-ui-root\" style=\"display: inline-block;\">\n <span \n [ngClass]=\"badgeClasses\" \n [ngStyle]=\"badgeStyles\"\n class=\"cqa-font-inter cqa-font-normal cqa-text-sm cqa-leading-[17px] cqa-py-[4px] cqa-px-3\">\n <span \n *ngIf=\"icon\" \n [ngClass]=\"iconContainerClasses\"\n [ngStyle]=\"iconContainerStyles\">\n <mat-icon \n [ngClass]=\"iconClasses\"\n [ngStyle]=\"iconStyles\">{{ icon }}</mat-icon>\n </span>\n {{ label }}\n </span>\n</div>\n\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { getMetadataValueStyle as getMetadataColorStyle } from '../../utils/metadata-colors.util';\nimport { BadgeComponent } from '../../badge/badge.component';\n\n// Use BadgeComponent inputs directly instead of a separate interface\nexport type InsightBadge = Pick<BadgeComponent, 'label' | 'icon' | 'variant'>;\n\nexport interface InsightMetadata {\n [key: string]: string | { label: string; value: string; highlight?: boolean };\n}\n\ninterface InternalInsightSection {\n id: string;\n title: string;\n variant: 'warning' | 'error' | 'default';\n reason: string;\n actionButtonLabel: string;\n expanded?: boolean;\n}\n\n@Component({\n selector: 'cqa-insight-card',\n templateUrl: './insight-card.component.html',\n styleUrls: []\n})\nexport class InsightCardComponent {\n @Input() title: string = '';\n @Input() description: string = '';\n private _badges: InsightBadge[] = [];\n @Input()\n set badges(value: InsightBadge[]) {\n this._badges = value;\n }\n get badges(): InsightBadge[] {\n return this._badges;\n }\n @Input() metadata?: InsightMetadata;\n @Input() prerequisiteSection?: string;\n @Input() testDataSection?: string;\n @Input() metadataExpanded: boolean = true;\n @Input() isPrerequisiteMissing: boolean = false;\n @Input() isTestDataMissing: boolean = false;\n\n // Track expanded state for sections\n private sectionExpandedState: Map<string, boolean> = new Map();\n \n // Loading state for main action\n isApplying: boolean = false;\n\n @Output() metadataToggle = new EventEmitter<boolean>();\n @Output() sectionToggle = new EventEmitter<{ id: string; expanded: boolean }>();\n @Output() sectionActionClick = new EventEmitter<string>();\n @Output() onApplySuggestionClick = new EventEmitter<void>();\n @Output() onAttachPrerequisitesClick = new EventEmitter<void>();\n @Output() onImportTestDataClick = new EventEmitter<void>();\n\n toggleMetadata(): void {\n this.metadataExpanded = !this.metadataExpanded;\n this.metadataToggle.emit(this.metadataExpanded);\n }\n\n toggleSection(section: InternalInsightSection): void {\n const currentState = this.sectionExpandedState.get(section.id) ?? (section.expanded ?? true);\n const newState = !currentState;\n this.sectionExpandedState.set(section.id, newState);\n \n this.sectionToggle.emit({ id: section.id, expanded: newState });\n }\n\n onSectionAction(sectionId: string): void {\n this.sectionActionClick.emit(sectionId);\n \n // Emit specific events for known actions\n if (sectionId === 'prerequisite') {\n this.onAttachPrerequisitesClick.emit();\n } else if (sectionId === 'test-data') {\n this.onImportTestDataClick.emit();\n }\n }\n\n get visibleBadges(): InsightBadge[] {\n const visible: InsightBadge[] = [];\n if (this.isPrerequisiteMissing) {\n visible.push({ label: 'Prerequisite Missing', variant: 'warning' });\n }\n if (this.isTestDataMissing) {\n visible.push({ label: 'Test Data Missing', variant: 'error' });\n }\n // Also include any custom badges\n if (this.badges) {\n visible.push(...this.badges);\n }\n return visible;\n }\n\n get visibleSections(): InternalInsightSection[] {\n const visible: InternalInsightSection[] = [];\n \n if (this.isPrerequisiteMissing && this.prerequisiteSection) {\n // Use stored state if available, otherwise default to true\n const expanded = this.sectionExpandedState.has('prerequisite') \n ? this.sectionExpandedState.get('prerequisite')!\n : true;\n \n visible.push({\n id: 'prerequisite',\n title: 'Prerequisite Missing',\n variant: 'warning',\n reason: this.prerequisiteSection,\n actionButtonLabel: 'Attach Prerequisites',\n expanded: expanded,\n });\n }\n \n if (this.isTestDataMissing && this.testDataSection) {\n // Use stored state if available, otherwise default to true\n const expanded = this.sectionExpandedState.has('test-data')\n ? this.sectionExpandedState.get('test-data')!\n : true;\n \n visible.push({\n id: 'test-data',\n title: 'Test Data Missing',\n variant: 'error',\n reason: this.testDataSection,\n actionButtonLabel: 'Import Test Data',\n expanded: expanded,\n });\n }\n \n return visible;\n }\n\n async onMainAction(): Promise<void> {\n if (this.isApplying) {\n return; // Prevent multiple clicks\n }\n \n this.isApplying = true;\n \n try {\n this.onApplySuggestionClick.emit();\n } finally {\n // Reset loading state after action completes\n // If you need to keep the loading state longer, call resetApplyingState() manually\n // after your async operation completes\n this.isApplying = false;\n }\n }\n\n // Method to reset loading state (can be called externally if needed)\n resetApplyingState(): void {\n this.isApplying = false;\n }\n\n // Removed getBadgeClasses - now using BadgeComponent\n\n getSectionBorderClass(section: InternalInsightSection): string {\n switch (section.variant) {\n case 'warning':\n return 'cqa-border-l-4 cqa-border-l-yellow-500';\n case 'error':\n return 'cqa-border-l-4 cqa-border-l-red-500';\n default:\n return 'cqa-border-l-4 cqa-border-l-gray-500';\n }\n }\n\n getMetadataValueClasses(key: string, value: string | { label: string; value: string; highlight?: boolean }): string {\n // Base classes for all values (font-size: 14px, line-height: 18px, font-weight: 400)\n return 'cqa-font-normal cqa-leading-[18px] cqa-tracking-normal';\n }\n\n getMetadataValue(value: string | { label: string; value: string; highlight?: boolean }): string {\n if (typeof value === 'string') {\n return value;\n }\n return value.value;\n }\n\n getMetadataValueStyle(key: string, value: string | { label: string; value: string; highlight?: boolean }): { [key: string]: string } {\n // Use the shared utility function for consistent colors\n return getMetadataColorStyle(key, value);\n }\n\n getSectionTitleClasses(section: InternalInsightSection): string {\n const baseClasses = ['cqa-text-sm', 'cqa-font-bold'];\n \n switch (section.variant) {\n case 'warning':\n return [...baseClasses, 'cqa-text-yellow-800'].join(' ');\n case 'error':\n return [...baseClasses, 'cqa-text-red-600'].join(' ');\n\n default:\n return [...baseClasses, 'cqa-text-ink'].join(' ');\n }\n }\n\n getSectionIconColor(section: InternalInsightSection): string {\n switch (section.variant) {\n case 'warning':\n return 'cqa-text-yellow-800';\n case 'error':\n return 'cqa-text-red-600';\n default:\n return 'cqa-text-gray-400';\n }\n }\n}\n\n\n","<div id=\"cqa-ui-root\" style=\"background-color: white; border-radius: 0.5rem; border: 1px solid #E5E7EB; box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-4 cqa-px-[21px] cqa-py-3 cqa-border cqa-border-gray-200 cqa-rounded-2xl\">\n <!-- Section 1: Badges -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\" *ngIf=\"visibleBadges.length > 0\">\n <mat-icon *ngIf=\"isPrerequisiteMissing || isTestDataMissing\"\n class=\"cqa-text-yellow-500 cqa-w-6 cqa-h-6\">warning</mat-icon>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge \n *ngFor=\"let badge of visibleBadges\" \n [label]=\"badge.label\"\n [icon]=\"badge.icon\"\n [variant]=\"badge.variant || 'default'\"\n ></cqa-badge>\n </div>\n </div>\n\n <!-- Section 2: Title & Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-font-medium cqa-text-lg cqa-text-title\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-base cqa-font-normal cqa-text-description\">\n {{ description }}\n </p>\n </div>\n\n <!-- Section 3: Metadata Section (always visible) -->\n <div *ngIf=\"metadata\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div class=\"cqa-bg-surface-default cqa-rounded-xl cqa-border cqa-border-border-light cqa-px-4 cqa-py-3 cqa-border-t-2 cqa-border-t-primary-surface\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-3\">\n <ng-container *ngFor=\"let item of metadata | keyvalue; let last = last\">\n <div class=\"cqa-flex cqa-items-baseline cqa-gap-2\">\n <span class=\"cqa-text-xs cqa-font-normal cqa-tracking-normal cqa-font-inter cqa-text-metadata-key\">\n {{ item.key }}:\n </span>\n <span \n [ngClass]=\"getMetadataValueClasses(item.key, item.value)\" \n [ngStyle]=\"getMetadataValueStyle(item.key, item.value)\"\n class=\"cqa-font-normal cqa-leading-[18px] cqa-tracking-normal cqa-font-inter cqa-text-sm\">\n {{ getMetadataValue(item.value) }}\n </span>\n </div>\n <div *ngIf=\"!last\" class=\"cqa-h-4 cqa-w-px cqa-bg-gray-200\"></div>\n </ng-container>\n </div>\n </div>\n\n <!-- Section 4: Metadata toggle -->\n <button *ngIf=\"metadata && (isPrerequisiteMissing || isTestDataMissing)\" type=\"button\"\n class=\"cqa-text-sm cqa-text-primary-hover cqa-font-medium cqa-inline-flex cqa-items-center cqa-gap-1 cqa-cursor-pointer cqa-bg-transparent cqa-border-0 cqa-p-0 cqa-hover:cqa-text-primary cqa-transition-colors\"\n (click)=\"toggleMetadata()\">\n <span>{{ metadataExpanded ? 'Hide details' : 'Show details' }}</span>\n <mat-icon class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px]\">\n {{ metadataExpanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n\n <!-- Section 5: Sections (toggle visibility) -->\n <div *ngIf=\"metadataExpanded && visibleSections?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div\n *ngFor=\"let section of visibleSections\"\n class=\"cqa-border cqa-border-gray-200 cqa-rounded-md cqa-bg-white cqa-overflow-hidden\"\n [ngClass]=\"getSectionBorderClass(section)\"\n >\n <div class=\"cqa-p-4 cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Section Title with Inline Collapse Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <h3 [ngClass]=\"getSectionTitleClasses(section)\" class=\"cqa-m-0\">\n {{ section.title }}\n </h3>\n <button\n type=\"button\"\n class=\"cqa-ml-auto cqa-inline-flex cqa-items-center cqa-justify-center cqa-cursor-pointer cqa-bg-transparent cqa-border-0 cqa-p-1 cqa-rounded-full cqa-hover:cqa-bg-gray-100 cqa-transition-colors\"\n (click)=\"toggleSection(section)\"\n [attr.aria-label]=\"section.expanded !== false ? 'Collapse section' : 'Expand section'\"\n >\n <mat-icon [ngClass]=\"getSectionIconColor(section)\" class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px]\">\n {{ section.expanded !== false ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n </div>\n\n <!-- Collapsible Content: Reason and Action Button -->\n <div *ngIf=\"section.expanded !== false\" class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Reason -->\n <p class=\"cqa-text-sm cqa-font-normal cqa-leading-4 cqa-text-neutral-600\">\n <strong>Reason:</strong> {{ section.reason }}\n </p>\n \n <!-- Action Button -->\n <div>\n <cqa-button\n variant=\"outlined\"\n (clicked)=\"onSectionAction(section.id)\"\n >\n {{ section.actionButtonLabel }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <cqa-button\n variant=\"filled\"\n [icon]=\"isApplying ? 'hourglass_empty' : 'auto_awesome'\"\n iconPosition=\"start\"\n (clicked)=\"onMainAction()\"\n [fullWidth]=\"true\"\n [disabled]=\"isApplying\"\n [iconColor]=\"isApplying ? '#EAB308' : undefined\"\n >\n {{ isApplying ? 'Applying suggestion' : 'Apply suggestion' }}\n </cqa-button>\n </div>\n</div>\n \n","import { Component, Input, Output, EventEmitter, HostListener, ElementRef, ViewChild } from '@angular/core';\n\nexport interface DropdownOption {\n label: string;\n value: any;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'cqa-dropdown-button',\n templateUrl: './dropdown-button.component.html',\n styleUrls: []\n})\nexport class DropdownButtonComponent {\n @Input() label: string = 'Select an option';\n @Input() options: DropdownOption[] = [];\n @Input() selectedValue?: any;\n @Input() disabled: boolean = false;\n @Input() placeholder?: string;\n \n @Output() selectionChange = new EventEmitter<any>();\n @Output() opened = new EventEmitter<void>();\n @Output() closed = new EventEmitter<void>();\n\n @ViewChild('dropdownContainer', { static: false }) dropdownContainer?: ElementRef;\n @ViewChild('buttonElement', { static: false }) buttonElement?: ElementRef;\n\n isOpen: boolean = false;\n private clickInside: boolean = false;\n\n get displayLabel(): string {\n if (this.selectedValue !== undefined && this.selectedValue !== null) {\n const selectedOption = this.options.find(opt => opt.value === this.selectedValue);\n return selectedOption ? selectedOption.label : this.label;\n }\n return this.placeholder || this.label;\n }\n\n get buttonClasses(): string {\n const baseClasses = [\n 'cqa-h-9',\n 'cqa-px-3',\n 'cqa-py-2',\n 'cqa-bg-gray-100',\n 'cqa-rounded-[5px]',\n 'cqa-outline',\n 'cqa-outline-1',\n 'cqa-outline-offset-[-1px]',\n 'cqa-outline-gray-200',\n 'cqa-inline-flex',\n 'cqa-justify-center',\n 'cqa-items-center',\n 'cqa-gap-1',\n 'cqa-cursor-pointer',\n 'cqa-transition-colors'\n ];\n\n if (this.disabled) {\n baseClasses.push('cqa-opacity-50', 'cqa-cursor-not-allowed');\n } else {\n baseClasses.push('cqa-hover:cqa-bg-gray-200');\n }\n\n if (this.isOpen) {\n baseClasses.push('cqa-bg-gray-200');\n }\n\n return baseClasses.join(' ');\n }\n\n get labelClasses(): string {\n return [\n 'cqa-text-center',\n 'cqa-justify-center',\n 'cqa-text-gray-950',\n 'cqa-text-xs',\n 'cqa-font-medium',\n 'cqa-leading-4'\n ].join(' ');\n }\n\n get arrowClasses(): string {\n const baseClasses = [\n 'cqa-w-4',\n 'cqa-h-4',\n 'cqa-relative',\n 'cqa-transition-transform'\n ];\n\n if (this.isOpen) {\n baseClasses.push('cqa-rotate-180');\n }\n\n return baseClasses.join(' ');\n }\n\n toggleDropdown(event?: MouseEvent): void {\n if (this.disabled) return;\n \n if (event) {\n event.stopPropagation();\n event.preventDefault();\n this.clickInside = true;\n }\n \n this.isOpen = !this.isOpen;\n \n // Reset clickInside flag after a short delay\n setTimeout(() => {\n this.clickInside = false;\n if (this.isOpen) {\n this.opened.emit();\n } else {\n this.closed.emit();\n }\n }, 100);\n }\n\n selectOption(option: DropdownOption, event?: MouseEvent): void {\n if (option.disabled) return;\n \n if (event) {\n event.stopPropagation();\n this.clickInside = true;\n }\n \n this.selectedValue = option.value;\n this.isOpen = false;\n this.selectionChange.emit(option.value);\n this.closed.emit();\n \n // Reset flag after selection\n setTimeout(() => {\n this.clickInside = false;\n }, 100);\n }\n\n getButtonWidth(): number {\n if (this.buttonElement?.nativeElement) {\n const width = this.buttonElement.nativeElement.offsetWidth;\n return width > 0 ? width : 150; // Fallback to 150px if width is 0\n }\n return 150; // Default fallback width\n }\n\n getOptionClasses(option: DropdownOption): string {\n const baseClasses = [\n 'cqa-p-1.5',\n 'cqa-rounded-md',\n 'cqa-inline-flex',\n 'cqa-justify-start',\n 'cqa-items-center',\n 'cqa-cursor-pointer',\n 'cqa-transition-colors'\n ];\n\n if (option.disabled) {\n baseClasses.push('cqa-opacity-50', 'cqa-cursor-not-allowed');\n } else {\n baseClasses.push('cqa-hover:cqa-bg-gray-50');\n }\n\n if (this.selectedValue === option.value) {\n baseClasses.push('cqa-bg-primary-surface');\n }\n\n return baseClasses.join(' ');\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n // Ignore if click was inside the component (button click)\n if (this.clickInside) {\n return;\n }\n \n // Use a longer delay to ensure dropdown has time to render\n setTimeout(() => {\n if (!this.isOpen) return;\n \n const target = event.target as HTMLElement;\n \n // Check if click is inside the component container\n if (this.dropdownContainer?.nativeElement?.contains(target)) {\n return;\n }\n \n // Close dropdown if click is outside\n this.isOpen = false;\n this.closed.emit();\n }, 200);\n }\n}\n\n","<div id=\"cqa-ui-root\" #dropdownContainer style=\"position: relative; display: inline-block; width: auto;\">\n <button\n #buttonElement\n type=\"button\"\n [class]=\"buttonClasses\"\n [disabled]=\"disabled\"\n (click)=\"toggleDropdown($event)\"\n [attr.aria-expanded]=\"isOpen\"\n [attr.aria-haspopup]=\"true\"\n >\n <div [class]=\"labelClasses\">\n {{ displayLabel }}\n </div>\n <div [class]=\"arrowClasses\">\n <svg\n class=\"cqa-w-2 cqa-h-1 cqa-absolute cqa-left-[4px] cqa-top-[6px]\"\n viewBox=\"0 0 8 4\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M0 0L4 4L8 0\"\n stroke=\"#0B0B0C\"\n stroke-width=\"1.33\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </div>\n </button>\n\n <!-- Dropdown Menu -->\n <div\n *ngIf=\"isOpen && options && options.length > 0\"\n class=\"cqa-absolute cqa-top-full cqa-left-0 cqa-mt-1 cqa-p-1.5 cqa-bg-white cqa-rounded-lg cqa-shadow-[0px_2px_4px_-2px_rgba(0,0,0,0.10)] cqa-shadow-md cqa-outline cqa-outline-1 cqa-outline-offset-[-1px] cqa-outline-gray-200 cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-z-[9999] cqa-w-auto cqa-max-w-[350px]\"\n >\n <div class=\"cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-0.5 cqa-w-full\">\n <div\n *ngFor=\"let option of options\"\n (click)=\"selectOption(option, $event)\"\n [class]=\"getOptionClasses(option)\"\n class=\"cqa-w-full cqa-whitespace-nowrap\"\n >\n <div class=\"cqa-w-6 cqa-h-4 cqa-pr-2 cqa-inline-flex cqa-flex-col cqa-justify-center cqa-items-center\">\n <mat-icon\n *ngIf=\"selectedValue === option.value\"\n class=\"cqa-w-4 cqa-h-4 cqa-text-primary cqa-text-base cqa-leading-4\"\n >check</mat-icon>\n </div>\n <div class=\"cqa-flex-1 cqa-inline-flex cqa-flex-col cqa-justify-start cqa-items-start\">\n <div class=\"cqa-justify-center cqa-text-gray-950 cqa-text-sm cqa-font-normal cqa-leading-5 cqa-font-geist\">\n {{ option.label }}\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n","import { Component, Input } from '@angular/core';\n\nexport type HeatErrorMapCellType = 'smoke' | 'sanity' | 'regression' | 'revisit';\n\n@Component({\n selector: 'cqa-heat-error-map-cell',\n templateUrl: './heat-error-map-cell.component.html',\n styleUrls: []\n})\nexport class HeatErrorMapCellComponent {\n @Input() type: HeatErrorMapCellType = 'smoke';\n @Input() cases: number = 0;\n @Input() defects: number = 0;\n @Input() progress: number = 0; // Progress value from 0 to 100\n\n get backgroundColorStyle(): { [key: string]: string } {\n switch (this.type) {\n case 'smoke':\n return { 'background-color': '#FDBA74' }; // orange-300\n case 'sanity':\n return { 'background-color': '#FCD34D' }; // amber-300\n case 'regression':\n return { 'background-color': '#A7F3D0' }; // emerald-200\n case 'revisit':\n return { 'background-color': '#F4F4F5' }; // zinc-100\n default:\n return { 'background-color': '#FDBA74' }; // orange-300\n }\n }\n\n get progressWidth(): string {\n // Clamp progress between 0 and 100\n const clampedProgress = Math.max(0, Math.min(100, this.progress));\n return `${clampedProgress}%`;\n }\n}\n\n\n","<div id=\"cqa-ui-root\" style=\"width: 14rem; height: 6rem; display: inline-flex; justify-content: space-between; align-items: flex-start;\">\n <div class=\"min-w-56 min-h-24 cqa-self-stretch cqa-flex cqa-flex-col cqa-rounded-2xl cqa-justify-start cqa-items-start cqa-gap-4 cqa-p-4\" [ngStyle]=\"backgroundColorStyle\">\n <!-- section 1 -->\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start cqa-gap-px\">\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start\">\n <div class=\"cqa-self-stretch cqa-justify-center cqa-text-gray-900 cqa-text-base cqa-font-bold cqa-leading-5 cqa-font-geist\">\n {{ cases }} cases\n </div>\n </div>\n <div class=\"cqa-self-stretch cqa-flex cqa-flex-col cqa-justify-start cqa-items-start\">\n <div class=\"cqa-self-stretch cqa-justify-center cqa-text-gray-900 cqa-text-xs cqa-font-normal cqa-leading-4 cqa-font-geist\">\n {{ defects }} defects\n </div>\n </div>\n </div>\n <!-- section 2 -->\n <div class=\"cqa-self-stretch cqa-h-1 cqa-relative cqa-rounded-full cqa-overflow-hidden cqa-bg-white/70\">\n <div \n class=\"cqa-h-1 cqa-left-0 cqa-top-0 cqa-absolute cqa-bg-red-500 cqa-rounded-full\"\n [style.width]=\"progressWidth\"\n ></div>\n </div>\n </div>\n</div>\n\n\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\n\nexport interface EmptyStateAction {\n label: string;\n variant?: 'filled' | 'outlined' | 'text' | 'elevated' | 'tonal';\n icon?: string;\n iconPosition?: 'start' | 'end';\n disabled?: boolean;\n onClick?: () => void;\n}\n\n@Component({\n selector: 'cqa-empty-state',\n templateUrl: './empty-state.component.html',\n styleUrls: []\n})\nexport class EmptyStateComponent {\n @Input() imageUrl?: string; // URL for image\n @Input() title: string = '';\n @Input() description: string = '';\n @Input() actions: EmptyStateAction[] = [];\n\n @Output() actionClick = new EventEmitter<EmptyStateAction>();\n\n onActionClick(action: EmptyStateAction, event: MouseEvent) {\n if (!action.disabled) {\n if (action.onClick) {\n action.onClick();\n }\n this.actionClick.emit(action);\n }\n }\n}\n\n","<div id=\"cqa-ui-root\" style=\"background-color: white; border-radius: 14px; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 84.63px 33px 84.62px 33px;\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[62px] cqa-items-center\">\n <!-- Icon Container -->\n <div *ngIf=\"imageUrl\" class=\"cqa-relative cqa-shrink-0 cqa-w-32 cqa-h-32\">\n <!-- Main Icon Container with Gradient Background and Shadow -->\n <div class=\"cqa-relative cqa-rounded-3xl cqa-w-32 cqa-h-32 cqa-shadow-sm\">\n <div class=\"cqa-absolute cqa-inset-0 cqa-bg-gradient-to-br cqa-from-indigo-500 cqa-to-violet-950 cqa-rounded-3xl cqa-opacity-10\"></div>\n <!-- Icon/Image centered inside on top layer - fully opaque -->\n <div class=\"cqa-absolute cqa-inset-0 cqa-flex cqa-items-center cqa-justify-center cqa-rounded-3xl\">\n <div class=\"cqa-w-20 cqa-h-20 cqa-flex cqa-items-center cqa-justify-center cqa-relative\">\n <img [src]=\"imageUrl\" alt=\"\" width=\"80px\" height=\"80px\" class=\"cqa-block cqa-max-w-none cqa-w-20 cqa-h-20 cqa-object-contain\" />\n </div>\n </div>\n </div>\n <!-- Decorative Dots -->\n <div class=\"cqa-absolute cqa-rounded-full cqa-bg-primary-300 cqa-opacity-[0.815]\" style=\"left: 120.79px; top: -9.21px; width: 18.416px; height: 18.416px; z-index: 20;\"></div>\n <div class=\"cqa-absolute cqa-rounded-full cqa-bg-primary-300 cqa-opacity-[0.695]\" style=\"left: -9.02px; top: 124.98px; width: 14.044px; height: 14.044px; z-index: 20;\"></div>\n </div>\n\n <!-- Content Container -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-9 cqa-items-center\">\n <!-- Title and Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3 cqa-items-center cqa-w-full\">\n <!-- Title -->\n <div *ngIf=\"title\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-w-full\">\n <h3 class=\"cqa-font-inter cqa-text-lg cqa-font-medium cqa-leading-[18px] cqa-text-center cqa-text-neutral-900\">\n {{ title }}\n </h3>\n </div>\n <!-- Description -->\n <div *ngIf=\"description\" class=\"cqa-flex cqa-flex-col cqa-items-center cqa-w-full\">\n <p class=\"cqa-font-inter cqa-font-medium cqa-text-sm cqa-leading-[14px] cqa-text-center cqa-text-neutral-500\">\n {{ description }}\n </p>\n </div>\n </div>\n\n <!-- Action Buttons -->\n <div\n *ngIf=\"actions && actions.length > 0\"\n class=\"cqa-flex cqa-items-center cqa-justify-center\"\n [ngClass]=\"actions.length > 1 ? 'cqa-flex-row cqa-flex-wrap cqa-gap-4' : 'cqa-flex-col cqa-gap-2'\"\n >\n <cqa-button\n *ngFor=\"let action of actions\"\n [variant]=\"action.variant || 'filled'\"\n [icon]=\"action.icon\"\n [iconPosition]=\"action.iconPosition || 'start'\"\n [disabled]=\"action.disabled\"\n (clicked)=\"onActionClick(action, $event)\"\n >\n {{ action.label }}\n </cqa-button>\n </div>\n </div>\n </div>\n</div>\n\n","/**\n * Image assets constants for the UI library\n * \n * Place your image files in src/lib/assets/images/ and reference them here\n * \n * Usage in components:\n * import { EMPTY_STATE_IMAGES } from '../assets/images/image-assets.constants';\n * imageUrl: EMPTY_STATE_IMAGES.TEST_CASE\n */\n\nexport const EMPTY_STATE_IMAGES = {\n // Test Case icon (document with gear)\n TEST_CASE: 'assets/images/TestCaseIcon.png',\n \n // Search/Debug icon (magnifying glass with question mark)\n SEARCH_DEBUG: 'assets/images/SearchIcon.png',\n \n // Upload/Folder icon (folder with upload arrow and plus)\n UPLOAD_FOLDER: 'assets/images/FilesIcon.png',\n\n // Dashboard overview\n DASHBOARD: 'assets/images/DashboardIcon.png',\n \n // Checklist/Add icon (clipboard with plus)\n CHECKLIST_ADD: 'assets/images/StepsIcon.png',\n \n // Document/Gear icon (document with gear overlay)\n DOCUMENT_GEAR: 'assets/images/document-gear-icon.svg',\n \n // Analytics/Chart icon (bar chart)\n ANALYTICS_CHART: 'assets/images/ReportsIcon.png',\n \n // Default empty state icon\n DEFAULT: 'assets/images/SearchIcon.png',\n} as const;\n\nexport type EmptyStateImageKey = keyof typeof EMPTY_STATE_IMAGES;\n\n","import {\n Component,\n Input,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { DynamicFilterItem } from '../filters/dynamic-filter/dynamic-filter.component';\nimport { DynamicTableColumn } from '../table/dynamic-table/dynamic-table.component';\nimport { ColumnVisibilityConfig } from '../column-visibility/column-visibility.component';\nimport { TableAction } from '../table-action-toolbar/table-action-toolbar.component';\nimport { EmptyStateAction } from '../empty-state/empty-state.component';\nimport { EMPTY_STATE_IMAGES } from '../assets/images/image-assets.constants';\n\nexport interface EmptyStateConfig {\n title: string;\n description: string;\n imageUrl: string;\n actions: EmptyStateAction[];\n}\n\n@Component({\n selector: 'cqa-table-template',\n templateUrl: './table-template.component.html',\n styleUrls: [],\n})\nexport class TableTemplateComponent implements OnInit, OnChanges {\n // Search bar inputs\n @Input() searchPlaceholder: string = 'Search components';\n @Input() searchValue: string = '';\n @Input() showClear: boolean = true;\n @Input() showSearchBar: boolean = true;\n\n // Filter inputs\n @Input() filterConfig: DynamicFilterItem[] = [];\n @Input() showFilterPanel: boolean = false;\n @Input() showFilterButton: boolean = true;\n\n // Other button input\n @Input() otherButtonLabel: string = 'Other Button';\n @Input() otherButtonVariant: 'filled' | 'outlined' | 'text' | 'elevated' | 'tonal' | 'grey-solid' = 'filled';\n @Input() showOtherButton: boolean = true;\n \n // Action menu button (three-dot menu in table rows)\n @Input() showActionButton: boolean = true;\n\n // Settings and refresh buttons\n @Input() showSettingsButton: boolean = true;\n @Input() showAutoRefreshButton: boolean = true;\n\n // Data input\n @Input() data: any[] = [];\n\n // Empty state inputs\n @Input() isEmptyState: boolean = false;\n @Input() emptyStateConfig: EmptyStateConfig = {\n title: 'No Data Available Yet',\n description: 'Run or upload your first test to see your analytics and trends here. Watch your quality metrics come to life with real-time insights.',\n imageUrl: EMPTY_STATE_IMAGES.DASHBOARD,\n actions: [{ label: 'Run Test Suite', variant: 'filled' }],\n };\n\n // Action bar inputs\n @Input() actions: TableAction[] = [\n { \n id: 'delete', \n label: 'Delete', \n icon: 'delete', \n tooltip: 'Delete selected',\n onClick: (context) => {\n console.log('Delete action clicked:', context);\n }\n },\n { \n id: 'edit', \n label: 'Edit', \n icon: 'edit', \n tooltip: 'Edit selected',\n onClick: (context) => {\n console.log('Edit action clicked:', context);\n }\n },\n { \n id: 'add-tag', \n label: 'Add Tag', \n icon: 'local_offer', \n tooltip: 'Add tags',\n onClick: (context) => {\n console.log('Add tag action clicked:', context);\n }\n },\n { \n id: 'remove-tag', \n label: 'Remove Tag', \n icon: 'label_off', \n tooltip: 'Remove tags',\n onClick: (context) => {\n console.log('Remove tag action clicked:', context);\n }\n },\n ];\n\n // Chips inputs\n @Input() chips: Array<{ key?: string; label?: string; text: string; fullText?: string; hasMore?: boolean }> = [];\n @Input() filterApplied: boolean = false;\n\n // Table inputs\n @Input() columns: DynamicTableColumn[] = [];\n @Input() selectedAutoRefreshInterval: number = 0;\n @Input() pageIndex: number = 0;\n @Input() pageSize: number = 10;\n // Loader controls (passed down to dynamic table)\n @Input() isTableLoading?: boolean;\n @Input() isTableDataLoading?: boolean;\n // Backward-compatibility flag; if provided, dynamic table will use it when specific flags are undefined\n\n // Internal state for column visibility\n private _columnVisibility: ColumnVisibilityConfig = {};\n private _cachedVisibilityColumns: Array<{ id: string; label: string }> = [];\n filteredRows: any[] = [];\n pagedRows: any[] = [];\n\n // Derived columns with visibility applied. Avoid mutating @Input() columns so parent bindings aren't overridden.\n get computedColumns(): DynamicTableColumn[] {\n const visibility = this._columnVisibility || {};\n const source = this.columns || [];\n return source.map(col => {\n if (['checkbox', 'actions'].includes(col.fieldId)) {\n return col;\n }\n const show = visibility[col.fieldId];\n return { ...col, isShow: show !== false };\n });\n }\n\n // Auto-generated visibility columns from columns input (excludes default columns and checkbox/actions)\n // Cached to avoid creating new arrays on every change detection cycle\n get visibilityColumns(): Array<{ id: string; label: string }> {\n return this._cachedVisibilityColumns;\n }\n\n // Internal column visibility state\n get columnVisibility(): ColumnVisibilityConfig {\n return this._columnVisibility;\n }\n ngOnInit(): void {\n this.initializeComponent();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['data'] || changes['isEmptyState']) {\n this.initializeComponent();\n }\n if (changes['columns']) {\n this.initializeColumnVisibility();\n }\n }\n\n private initializeComponent(): void {\n if (this.isEmptyState) {\n this.filteredRows = [];\n this.pagedRows = [];\n return;\n }\n\n this.filteredRows = [...this.data];\n this.applyPagination();\n this.initializeColumnVisibility();\n }\n\n private initializeColumnVisibility(): void {\n // Cache visibility columns to avoid creating new arrays on every change detection\n this._cachedVisibilityColumns = this.mapVisibilityColumns();\n // Initialize visibility state for all visibility columns (default to true)\n for (const col of this._cachedVisibilityColumns) {\n if (this._columnVisibility[col.id] === undefined) {\n this._columnVisibility[col.id] = true;\n }\n }\n }\n\n get anyRowSelected(): boolean {\n return !!(this.pagedRows && this.pagedRows.some(r => !!(r as any).isSelected));\n }\n\n get currentSelectedItems(): any[] {\n return (this.pagedRows || []).filter(r => !!(r as any).isSelected);\n }\n\n actionClick(data: any) {\n console.log('action toolbar', data);\n }\n\n view(id: number | string): void {\n console.log('View', id);\n }\n\n edit(row: any): void {\n console.log('Edit', row);\n }\n\n delete(row: any): void {\n console.log('Delete', row);\n }\n\n onRowCheckboxChange(event: Event, row: any): void {\n const input = event.target as HTMLInputElement | null;\n const checked = !!input?.checked;\n row.isSelected = checked;\n }\n\n toggleFilter(): void {\n this.showFilterPanel = !this.showFilterPanel;\n }\n\n onColumnVisibilityChange(cfg: ColumnVisibilityConfig): void {\n this._columnVisibility = { ...cfg };\n // Do not mutate this.columns; computedColumns getter will reflect changes\n }\n\n onAutoRefreshChange(intervalMs: number): void {\n this.selectedAutoRefreshInterval = intervalMs;\n console.log('Auto refresh interval', intervalMs);\n }\n\n valueChange(value: string): void {\n console.log('Value changed', value);\n }\n\n search(value: string): void {\n console.log('Search', value);\n }\n\n cleared(): void {\n console.log('Cleared');\n }\n\n resultBadgeClass(result?: string | null): string {\n const value = (result || '').toUpperCase();\n if (value === 'SUCCESS') return 'cqa-bg-green-100 cqa-text-green-700';\n if (value === 'FAILURE' || value === 'ABORTED') return 'cqa-bg-red-100 cqa-text-red-700';\n if (value === 'QUEUED' || value === 'NOT_EXECUTED' || value === 'STOPPED') return 'cqa-bg-gray-100 cqa-text-gray-700';\n return 'cqa-bg-gray-100 cqa-text-gray-700';\n }\n\n onEmptyAction(action: any) {\n if (action?.label === 'Show filters') {\n this.toggleFilter();\n }\n }\n\n onFiltersChanged(current: any): void {\n this.filteredRows = this.data.filter(r => this.passFilters(current, r));\n this.pageIndex = 0;\n this.applyPagination();\n const chips: Array<{ key?: string; label?: string; text: string; fullText?: string; hasMore?: boolean }> = [];\n if (current) {\n for (const key of Object.keys(current)) {\n const value = current[key];\n if (value == null || value === '' || (Array.isArray(value) && value.length === 0)) continue;\n let text = '';\n if (Array.isArray(value)) {\n text = value.map((v: any) => (v?.name ?? v?.label ?? v?.value ?? v)).join(', ');\n } else if (typeof value === 'object') {\n if ('start' in value || 'end' in value) {\n const s = value.start ? new Date(value.start).toLocaleDateString() : '';\n const e = value.end ? new Date(value.end).toLocaleDateString() : '';\n text = [s, e].filter(Boolean).join(' - ');\n } else {\n text = (value?.name ?? value?.label ?? value?.value ?? JSON.stringify(value));\n }\n } else {\n text = String(value);\n }\n chips.push({ key, text, fullText: text, hasMore: text.length > 30 });\n }\n }\n this.chips = chips;\n this.filterApplied = this.chips.length > 0;\n }\n\n onFiltersApplied(_: any): void {\n // handled in onFiltersChanged for this demo\n }\n\n onPaginate(e: { pageIndex: number; pageSize: number }): void {\n this.pageIndex = e.pageIndex;\n this.pageSize = e.pageSize;\n this.applyPagination();\n }\n\n onPageSizeChange(size: number): void {\n this.pageSize = size;\n this.pageIndex = 0;\n this.applyPagination();\n }\n\n onRemoveChip(chip: any): void {\n this.chips = this.chips.filter(c => c !== chip);\n this.filterApplied = this.chips.length > 0;\n }\n\n onClearAllChips(): void {\n this.chips = [];\n this.filterApplied = false;\n }\n\n private applyPagination(): void {\n const start = this.pageIndex * this.pageSize;\n const end = start + this.pageSize;\n this.pagedRows = this.filteredRows.slice(start, end);\n }\n\n private mapVisibilityColumns(): Array<{ id: string; label: string }> {\n return (this.columns || [])\n .filter(c => c.isDefault === false)\n .map(c => ({ id: c.fieldId, label: c.fieldName || c.fieldId }));\n }\n\n private normalizeDate(d: any): number | null {\n if (!d) return null;\n const ts = Date.parse(d);\n return isNaN(ts) ? null : ts;\n }\n\n private passFilters(filters: any, row: any): boolean {\n if (!filters) return true;\n if (filters.status && Array.isArray(filters.status) && filters.status.length) {\n if (!filters.status.includes(row.status)) return false;\n }\n if (filters.priority && Array.isArray(filters.priority) && filters.priority.length) {\n if (!filters.priority.includes(row.priorityName)) return false;\n }\n if (filters.testType && Array.isArray(filters.testType) && filters.testType.length) {\n if (!filters.testType.includes(row.testType)) return false;\n }\n if (filters.created_date && (filters.created_date.start || filters.created_date.end)) {\n const startTs = this.normalizeDate(filters.created_date.start);\n const endTs = this.normalizeDate(filters.created_date.end);\n const rowTs = this.normalizeDate(row.createdAt);\n if (rowTs != null) {\n if (startTs != null && rowTs < startTs) return false;\n if (endTs != null && rowTs > endTs) return false;\n }\n }\n return true;\n }\n}\n","<div id=\"cqa-ui-root\">\n <div class=\"cqa-w-full cqa-flex cqa-flex-col cqa-relative\">\n <div class=\"cqa-w-full cqa-flex cqa-items-center cqa-justify-between cqa-gap-3 cqa-flex-wrap cqa-mb-3\">\n <cqa-search-bar\n *ngIf=\"showSearchBar\"\n [placeholder]=\"searchPlaceholder\"\n [value]=\"searchValue\"\n [showClear]=\"showClear\"\n (valueChange)=\"valueChange($event)\"\n (search)=\"search($event)\"\n (cleared)=\"cleared()\"\n ></cqa-search-bar>\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-flex-wrap\">\n <cqa-button\n *ngIf=\"showFilterButton\"\n variant=\"grey-solid\"\n icon=\"add\"\n [text]=\"'Filter'\"\n (clicked)=\"toggleFilter()\"\n >\n <span>Filter</span>\n </cqa-button>\n <cqa-column-visibility\n *ngIf=\"showSettingsButton\"\n [columns]=\"visibilityColumns\"\n [columnVisibility]=\"columnVisibility\"\n [selectedAutoRefreshInterval]=\"selectedAutoRefreshInterval\"\n (columnVisibilityChange)=\"onColumnVisibilityChange($event)\"\n (autoRefreshChange)=\"onAutoRefreshChange($event)\"\n ></cqa-column-visibility>\n <cqa-button *ngIf=\"showAutoRefreshButton\" variant=\"grey-solid\" icon=\"refresh\"></cqa-button>\n <cqa-button *ngIf=\"showOtherButton\" [variant]=\"otherButtonVariant\" [text]=\"otherButtonLabel\"></cqa-button>\n </div>\n </div>\n\n <cqa-selected-filters \n *ngIf=\"showFilterPanel\"\n [filterApplied]=\"filterApplied\"\n [chips]=\"chips\"\n (removeChip)=\"onRemoveChip($event)\"\n (clearAll)=\"onClearAllChips()\"\n >\n </cqa-selected-filters>\n\n <cqa-dynamic-filter\n *ngIf=\"showFilterPanel\"\n [config]=\"filterConfig\"\n [showFilterPanel]=\"showFilterPanel\"\n (filtersChanged)=\"onFiltersChanged($event)\"\n (filtersApplied)=\"onFiltersApplied($event)\"\n >\n </cqa-dynamic-filter>\n\n <div class=\"cqa-rounded-[7px] cqa-overflow-hidden cqa-border-t cqa-border-l cqa-border-r cqa-border-grey-200 cqa-relative\">\n <ng-container *ngIf=\"!isEmptyState && pagedRows && pagedRows.length > 0; else storyEmptyTpl\">\n <app-dynamic-table\n [columns]=\"computedColumns\"\n [data]=\"pagedRows\"\n [isTableLoading]=\"isTableLoading\"\n [isTableDataLoading]=\"isTableDataLoading\">\n <ng-template dynamicCell=\"checkbox\" let-row=\"row\">\n <div class=\"custom-checkbox\">\n <input\n type=\"checkbox\"\n class=\"hidden-checkbox\"\n [attr.id]=\"'row-checkbox-' + row.id\"\n [checked]=\"row.isSelected\"\n aria-label=\"Select row\"\n (change)=\"onRowCheckboxChange($event, row)\" />\n <label\n class=\"custom-checkbox-label\"\n [attr.for]=\"'row-checkbox-' + row.id\">\n </label>\n </div>\n </ng-template>\n\n <ng-template dynamicCell=\"testCases\" let-row=\"row\" let-value=\"value\">\n <div class=\"cqa-flex cqa-flex-col cqa-gap-1 cqa-text-[12.3px] cqa-leading-[17.5px] cqa-font-medium\">\n <div class=\"cqa-text-[#3F43EE] cqa-truncate\">\n #{{ row.id }}\n </div>\n <div class=\"cqa-text-[#0A0A0A]\">{{ value }}</div>\n </div>\n </ng-template>\n\n <ng-template dynamicCell=\"type\" let-row=\"row\" let-value=\"value\">\n <div class=\"cqa-text-xs cqa-text-[#111827] cqa-truncate\">{{ value }}</div>\n </ng-template>\n\n <ng-template dynamicCell=\"priority\" let-row=\"row\" let-value=\"value\">\n <span\n class=\"cqa-inline-flex cqa-items-center cqa-px-2 cqa-py-0.5 cqa-rounded cqa-text-xs\"\n [ngClass]=\"{\n 'cqa-bg-red-100 cqa-text-red-700': value === 'Critical' || value === 'Major',\n 'cqa-bg-yellow-100 cqa-text-yellow-700': value === 'Medium',\n 'cqa-bg-blue-100 cqa-text-blue-700': value === 'Minor',\n 'cqa-bg-gray-100 cqa-text-gray-700': !value || value === 'Not Set'\n }\"\n >{{ value || 'Not Set' }}</span\n >\n </ng-template>\n\n <ng-template dynamicCell=\"result\" let-row=\"row\" let-value=\"value\">\n <span class=\"cqa-inline-flex cqa-items-center cqa-px-2 cqa-py-0.5 cqa-rounded cqa-text-xs\" [ngClass]=\"resultBadgeClass(value)\">\n {{ value || 'NOT_EXECUTED' }}\n </span>\n </ng-template>\n\n <ng-template dynamicCell=\"status\" let-row=\"row\" let-value=\"value\">\n <span class=\"cqa-text-xs\">{{ value }}</span>\n </ng-template>\n\n <ng-template dynamicCell=\"labels\" let-row=\"row\" let-value=\"value\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-1\">\n <span *ngFor=\"let tag of (row.tags || []) | slice: 0:3\" class=\"cqa-px-2 cqa-py-0.5 cqa-rounded cqa-bg-gray-100 cqa-text-gray-700 cqa-text-xs\">\n {{ tag }}\n </span>\n <span *ngIf=\"(row.tags?.length || 0) > 3\" class=\"cqa-px-2 cqa-py-0.5 cqa-rounded cqa-bg-gray-100 cqa-text-gray-700 cqa-text-xs\">\n +{{ (row.tags?.length || 0) - 3 }} more\n </span>\n </div>\n </ng-template>\n\n <ng-template dynamicCell=\"createdBy\" let-row=\"row\" let-value=\"value\">\n <span class=\"cqa-text-xs\">{{ value }}</span>\n </ng-template>\n\n <ng-template dynamicCell=\"createdAt\" let-row=\"row\" let-value=\"value\">\n <span class=\"cqa-text-xs cqa-text-gray-700\">{{ value | date: 'medium' }}</span>\n </ng-template>\n\n <ng-template dynamicCell=\"updatedAt\" let-row=\"row\" let-value=\"value\">\n <span class=\"cqa-text-xs cqa-text-gray-700\">{{ value | date: 'medium' }}</span>\n </ng-template>\n\n <ng-template dynamicCell=\"lastRun\" let-row=\"row\">\n <div class=\"cqa-flex cqa-flex-col\">\n <span class=\"cqa-text-xs cqa-text-[#111827]\">{{ row.lastRun?.startTime | date: 'medium' }}</span>\n </div>\n </ng-template>\n\n <ng-template dynamicCell=\"actions\" let-row=\"row\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\" *ngIf=\"showActionButton\">\n <cqa-action-menu-button\n [row]=\"row\"\n (view)=\"view($event)\"\n (edit)=\"edit($event)\"\n (delete)=\"delete($event)\"\n ></cqa-action-menu-button>\n </div>\n </ng-template>\n\n <ng-template #emptyTableTpl>\n <div class=\"cqa-flex cqa-flex-col cqa-items-center cqa-justify-center cqa-py-8\">\n <img src=\"/assets/illustrations/empty-state.svg\" alt=\"No data\" class=\"cqa-w-32 cqa-h-32 cqa-mb-4\" />\n <h3 class=\"cqa-text-lg cqa-font-semibold cqa-mb-2\">No test cases</h3>\n <p class=\"cqa-text-sm cqa-text-neutral-500 cqa-mb-4\">Try adjusting filters or create a new test case.</p>\n <cqa-button variant=\"filled\" (clicked)=\"toggleFilter()\">Show Filters</cqa-button>\n </div>\n </ng-template>\n </app-dynamic-table>\n </ng-container>\n\n <ng-template #storyEmptyTpl>\n <div class=\"cqa-p-6 cqa-flex cqa-flex-col cqa-items-center cqa-justify-center\">\n <cqa-empty-state\n *ngIf=\"isEmptyState\"\n [title]=\"emptyStateConfig.title\"\n [description]=\"emptyStateConfig.description\"\n [imageUrl]=\"emptyStateConfig.imageUrl\"\n [actions]=\"emptyStateConfig.actions\"\n (actionClick)=\"onEmptyAction($event)\"\n >\n </cqa-empty-state>\n </div>\n </ng-template>\n\n </div>\n\n <cqa-pagination\n [totalElements]=\"filteredRows.length\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pageItemCount]=\"pagedRows.length\"\n (paginate)=\"onPaginate($event)\"\n (pageSizeChange)=\"onPageSizeChange($event)\"\n >\n </cqa-pagination>\n\n <div *ngIf=\"anyRowSelected\" class=\"cqa-absolute cqa-bottom-[18.75px] cqa-left-[50%] cqa-translate-x-[-50%] cqa-w-full lg:cqa-max-w-[68%] cqa-sm:max-w-[75%] cqa-max-w-[90%] cqa-z-[1]\" >\n <cqa-table-action-toolbar\n [selectedItems]=\"currentSelectedItems\"\n [actions]=\"actions\"\n (actionClick)=\"actionClick($event)\"\n ></cqa-table-action-toolbar>\n </div>\n \n </div>\n</div>\n\n","import { Injectable } from '@angular/core';\nimport { OverlayContainer } from '@angular/cdk/overlay';\n\n/**\n * Ensures Angular CDK overlay content (e.g., MatSelect, Datepicker panels)\n * is nested under an element with id=\"cqa-ui-root\" so Tailwind utilities\n * configured with important: '#cqa-ui-root' are applied inside overlays.\n */\n@Injectable()\nexport class TailwindOverlayContainer extends OverlayContainer {\n protected override _createContainer(): void {\n super._createContainer();\n if (this._containerElement) {\n this._containerElement.id = 'cqa-ui-root';\n }\n }\n}\n\n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatOptionModule } from '@angular/material/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatNativeDateModule } from '@angular/material/core';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { OverlayModule, OverlayContainer } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ButtonComponent } from './button/button.component';\nimport { SearchBarComponent } from './search-bar/search-bar.component';\nimport { SegmentControlComponent } from './segment-control/segment-control.component';\nimport { DialogComponent } from './dialog/dialog.component';\nimport { DynamicTableComponent } from './table/dynamic-table/dynamic-table.component';\nimport { DynamicCellTemplateDirective, DynamicHeaderTemplateDirective } from './table/dynamic-table/dynamic-cell.directive';\nimport { InlineSortComponent } from './inline-sort/inline-sort.component';\nimport { PaginationComponent } from './pagination/pagination.component';\nimport { ActionMenuButtonComponent } from './action-menu/action-menu.component';\nimport { OtherButtonComponent } from './other-button/other-button.component';\nimport { DynamicFilterComponent } from './filters/dynamic-filter/dynamic-filter.component';\nimport { ColumnVisibilityComponent } from './column-visibility/column-visibility.component';\nimport { TableActionToolbarComponent } from './table-action-toolbar/table-action-toolbar.component';\nimport { MetricsCardComponent } from './dashboards/metrics-card/metrics-card.component';\nimport { MetricsBlockComponent } from './dashboards/metrics-card/metrics-block.component';\nimport { ChartCardComponent } from './dashboards/chart-card/chart-card.component';\nimport { ProgressTextCardComponent } from './dashboards/progress-text-card/progress-text-card.component';\nimport { DashboardHeaderComponent } from './dashboards/dashboard-header/dashboard-header.component';\nimport { CoverageModuleCardComponent } from './dashboards/coverage-module-card/coverage-module-card.component';\nimport { TestDistributionCardComponent } from './dashboards/test-distribution-card/test-distribution-card.component';\nimport { FailedTestCasesCardComponent } from './dashboards/failed-test-cases-card/failed-test-cases-card.component';\nimport { DynamicSelectFieldComponent } from './dynamic-select/dynamic-select-field.component';\nimport { SelectedFiltersComponent } from './selected-filters/selected-filters.component';\nimport { InsightCardComponent } from './dashboards/insight-card/insight-card.component';\nimport { BadgeComponent } from './badge/badge.component';\nimport { DropdownButtonComponent } from './dropdown-button/dropdown-button.component';\nimport { HeatErrorMapCellComponent } from './dashboards/heat-error-map-cell/heat-error-map-cell.component';\nimport { EmptyStateComponent } from './empty-state/empty-state.component';\nimport { TableTemplateComponent } from './templates/table-template.component';\nimport { TailwindOverlayContainer } from './utils/tw-overlay-container';\nimport { FullTableLoaderComponent } from './full-table-loader/full-table-loader.component';\nimport { TableDataLoaderComponent } from './table-data-loader/table-data-loader.component';\n\n@NgModule({\n declarations: [\n ButtonComponent,\n SearchBarComponent,\n SegmentControlComponent,\n DialogComponent,\n DynamicTableComponent,\n DynamicCellTemplateDirective,\n DynamicHeaderTemplateDirective,\n InlineSortComponent,\n PaginationComponent,\n ActionMenuButtonComponent,\n OtherButtonComponent,\n DynamicFilterComponent,\n ColumnVisibilityComponent,\n TableActionToolbarComponent,\n MetricsCardComponent,\n MetricsBlockComponent,\n ChartCardComponent,\n ProgressTextCardComponent,\n DashboardHeaderComponent,\n CoverageModuleCardComponent,\n TestDistributionCardComponent,\n FailedTestCasesCardComponent,\n DynamicSelectFieldComponent,\n SelectedFiltersComponent,\n InsightCardComponent,\n BadgeComponent,\n DropdownButtonComponent,\n HeatErrorMapCellComponent,\n EmptyStateComponent,\n TableTemplateComponent,\n FullTableLoaderComponent,\n TableDataLoaderComponent\n ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatIconModule,\n MatTooltipModule,\n MatMenuModule,\n MatButtonModule,\n MatFormFieldModule,\n MatSelectModule,\n MatOptionModule,\n MatCheckboxModule,\n MatRadioModule,\n MatDatepickerModule,\n MatNativeDateModule,\n MatProgressSpinnerModule,\n OverlayModule,\n PortalModule\n ],\n exports: [\n ButtonComponent,\n SearchBarComponent,\n SegmentControlComponent,\n DialogComponent,\n DynamicTableComponent,\n DynamicCellTemplateDirective,\n DynamicHeaderTemplateDirective,\n InlineSortComponent,\n PaginationComponent,\n ActionMenuButtonComponent,\n OtherButtonComponent,\n DynamicFilterComponent,\n ColumnVisibilityComponent,\n TableActionToolbarComponent,\n MetricsCardComponent,\n ChartCardComponent,\n ProgressTextCardComponent,\n DashboardHeaderComponent,\n CoverageModuleCardComponent,\n TestDistributionCardComponent,\n FailedTestCasesCardComponent,\n DynamicSelectFieldComponent,\n SelectedFiltersComponent,\n InsightCardComponent,\n BadgeComponent,\n DropdownButtonComponent,\n HeatErrorMapCellComponent,\n EmptyStateComponent,\n TableTemplateComponent,\n FullTableLoaderComponent,\n TableDataLoaderComponent\n ],\n providers: [\n { provide: OverlayContainer, useClass: TailwindOverlayContainer }\n ]\n})\nexport class UiKitModule { }\n\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\n\nexport class DialogRef<TResult = unknown> {\n private readonly closed$ = new Subject<TResult | undefined>();\n private isClosed = false;\n private componentInstance?: unknown;\n\n constructor(private readonly overlayRef: OverlayRef) {\n this.overlayRef.detachments().subscribe(() => {\n this.finishClose(undefined);\n });\n }\n\n close(result?: TResult): void {\n if (this.isClosed) {\n return;\n }\n\n this.finishClose(result);\n this.overlayRef.dispose();\n }\n\n afterClosed(): Observable<TResult | undefined> {\n return this.closed$.asObservable();\n }\n\n setComponentInstance(instance: unknown): void {\n this.componentInstance = instance;\n }\n\n getComponentInstance<TComponent>(): TComponent | undefined {\n return this.componentInstance as TComponent | undefined;\n }\n\n private finishClose(result: TResult | undefined): void {\n if (this.isClosed) {\n return;\n }\n\n this.isClosed = true;\n this.closed$.next(result);\n this.closed$.complete();\n }\n}\n\n\n","import { InjectionToken } from '@angular/core';\nimport { DialogRef } from './dialog-ref';\n\nexport const DIALOG_REF = new InjectionToken<DialogRef<any>>('CQA_DIALOG_REF');\nexport const DIALOG_DATA = new InjectionToken<any>('CQA_DIALOG_DATA');\n\n\n","import { Injectable, Injector } from '@angular/core';\nimport { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { filter } from 'rxjs/operators';\nimport { DialogConfig, DialogContentConfig } from './dialog.models';\nimport { DialogRef } from './dialog-ref';\nimport { DialogComponent } from './dialog.component';\nimport { DIALOG_DATA, DIALOG_REF } from './dialog.tokens';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DialogService {\n constructor(private readonly overlay: Overlay, private readonly injector: Injector) {}\n\n open<TContent extends DialogContentConfig = DialogContentConfig, TResult = unknown>(\n config: DialogConfig<TContent, TResult>\n ): DialogRef<TResult> {\n this.assertValidConfig(config);\n\n const overlayRef = this.overlay.create(this.buildOverlayConfig(config));\n const dialogRef = new DialogRef<TResult>(overlayRef);\n\n const injector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: DIALOG_REF, useValue: dialogRef },\n { provide: DIALOG_DATA, useValue: config.data },\n ],\n });\n\n const containerPortal = new ComponentPortal(DialogComponent, undefined, injector);\n const containerRef = overlayRef.attach(containerPortal);\n const containerInstance = containerRef.instance as DialogComponent<TResult>;\n\n containerInstance.config = config;\n containerInstance.dialogRef = dialogRef;\n\n if (config.content?.type === 'template') {\n containerInstance.attachTemplate(\n config.content.template,\n config.content.context ?? {\n $implicit: config.data,\n data: config.data,\n }\n );\n }\n\n if (config.content?.type === 'component') {\n const componentPortal = new ComponentPortal(\n config.content.component,\n undefined,\n Injector.create({\n parent: injector,\n providers: [\n { provide: DIALOG_REF, useValue: dialogRef },\n { provide: DIALOG_DATA, useValue: config.data },\n ],\n })\n );\n\n const componentRef = containerInstance.attachComponent(componentPortal);\n\n if (componentRef && config.content.inputs) {\n Object.entries(config.content.inputs).forEach(([key, value]) => {\n (componentRef.instance as Record<string, unknown>)[key] = value;\n });\n componentRef.changeDetectorRef.markForCheck();\n }\n\n if (componentRef) {\n dialogRef.setComponentInstance(componentRef.instance);\n }\n }\n\n containerRef.changeDetectorRef.markForCheck();\n\n if (!config.disableClose) {\n overlayRef.backdropClick().subscribe(() => dialogRef.close());\n overlayRef\n .keydownEvents()\n .pipe(\n filter((event): event is KeyboardEvent => {\n return (event as KeyboardEvent).key === 'Escape' || (event as KeyboardEvent).key === 'Esc';\n })\n )\n .subscribe(() => dialogRef.close());\n }\n\n return dialogRef;\n }\n\n private assertValidConfig<TContent extends DialogContentConfig, TResult>(\n config: DialogConfig<TContent, TResult>\n ): void {\n if (!config.title) {\n throw new Error('Dialog title is required.');\n }\n\n if (!config.buttons || config.buttons.length < 2) {\n throw new Error('Dialog requires at least two buttons to be provided.');\n }\n }\n\n private buildOverlayConfig<TContent extends DialogContentConfig, TResult>(\n config: DialogConfig<TContent, TResult>\n ): OverlayConfig {\n const panelClass = Array.isArray(config.panelClass)\n ? config.panelClass\n : config.panelClass\n ? [config.panelClass]\n : [];\n\n return new OverlayConfig({\n hasBackdrop: true,\n backdropClass: ['cdk-overlay-dark-backdrop', 'cqa-dialog-backdrop'],\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n width: config.width,\n maxWidth: config.maxWidth ?? '90vw',\n panelClass: ['cqa-dialog-panel', ...panelClass],\n });\n }\n}\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i3","i1","i1.ButtonComponent","i1.FullTableLoaderComponent","i2.TableDataLoaderComponent","i4","i5","i2.DynamicSelectFieldComponent","i6","i1.MetricsBlockComponent","getMetadataColorStyle","i2.BadgeComponent","i3.ButtonComponent","i1.SearchBarComponent","i2.ButtonComponent","i3.ColumnVisibilityComponent","i4.SelectedFiltersComponent","i5.DynamicFilterComponent","i6.DynamicTableComponent","i7.ActionMenuButtonComponent","i8.EmptyStateComponent","i9.PaginationComponent","i10.TableActionToolbarComponent","i11","i12.DynamicCellTemplateDirective"],"mappings":"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"}
|