@wdcoders/ui-ng 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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wdcoders-ui-ng.mjs","sources":["../../../projects/wdc/src/lib/components/spinner/spinner.component.ts","../../../projects/wdc/src/lib/components/spinner/spinner.component.html","../../../projects/wdc/src/lib/components/button/button.component.ts","../../../projects/wdc/src/lib/components/button/button.component.html","../../../projects/wdc/src/lib/components/icons/icons.component.ts","../../../projects/wdc/src/lib/components/icons/icons.component.html","../../../projects/wdc/src/lib/components/card/card.component.ts","../../../projects/wdc/src/lib/components/card/card.component.html","../../../projects/wdc/src/lib/components/stat-card/stat-card.component.ts","../../../projects/wdc/src/lib/components/stat-card/stat-card.component.html","../../../projects/wdc/src/lib/components/avatar/avatar.component.ts","../../../projects/wdc/src/lib/components/avatar/avatar.component.html","../../../projects/wdc/src/lib/components/badge/badge.component.ts","../../../projects/wdc/src/lib/components/badge/badge.component.html","../../../projects/wdc/src/lib/components/modal/modal.component.ts","../../../projects/wdc/src/lib/components/modal/modal.component.html","../../../projects/wdc/src/lib/components/navbar/navbar.component.ts","../../../projects/wdc/src/lib/components/navbar/navbar.component.html","../../../projects/wdc/src/lib/components/progress-bar/progress-bar.component.ts","../../../projects/wdc/src/lib/components/progress-bar/progress-bar.component.html","../../../projects/wdc/src/lib/components/tabs/tab.component.ts","../../../projects/wdc/src/lib/components/tabs/tabs.component.ts","../../../projects/wdc/src/lib/components/tabs/tabs.component.html","../../../projects/wdc/src/lib/components/toast/toast.service.ts","../../../projects/wdc/src/lib/components/toast/toast.component.ts","../../../projects/wdc/src/lib/components/toast/toast.component.html","../../../projects/wdc/src/lib/components/table/table.component.ts","../../../projects/wdc/src/lib/components/table/table.component.html","../../../projects/wdc/src/lib/components/chart/chart.component.ts","../../../projects/wdc/src/lib/components/chart/chart.component.html","../../../projects/wdc/src/lib/components/upload/upload.component.ts","../../../projects/wdc/src/lib/components/upload/upload.component.html","../../../projects/wdc/src/lib/components/wizard/wizard.component.ts","../../../projects/wdc/src/lib/components/wizard/wizard.component.html","../../../projects/wdc/src/lib/components/drawer/drawer.component.ts","../../../projects/wdc/src/lib/components/drawer/drawer.component.html","../../../projects/wdc/src/lib/components/carousel/carousel.component.ts","../../../projects/wdc/src/lib/components/carousel/carousel.component.html","../../../projects/wdc/src/lib/components/confirm-dialog/confirm.service.ts","../../../projects/wdc/src/lib/components/confirm-dialog/confirm-dialog.component.ts","../../../projects/wdc/src/lib/components/confirm-dialog/confirm-dialog.component.html","../../../projects/wdc/src/lib/components/page-loader/page-loader.component.ts","../../../projects/wdc/src/lib/components/page-loader/page-loader.component.html","../../../projects/wdc/src/wdcoders-ui-ng.ts"],"sourcesContent":["import { Component, input, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'wdc-spinner',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './spinner.component.html',\r\n})\r\nexport class SpinnerComponent {\r\n size = input<'sm' | 'md' | 'lg'>('md');\r\n color = input<'current' | 'primary' | 'white'>('current');\r\n\r\n classes = computed(() => {\r\n let sizeClass = 'w-5 h-5';\r\n switch (this.size()) {\r\n case 'sm':\r\n sizeClass = 'w-4 h-4';\r\n break;\r\n case 'md':\r\n sizeClass = 'w-5 h-5';\r\n break;\r\n case 'lg':\r\n sizeClass = 'w-8 h-8';\r\n break;\r\n }\r\n\r\n let colorClass = 'text-current';\r\n switch (this.color()) {\r\n case 'primary':\r\n colorClass = 'text-blue-600';\r\n break;\r\n case 'white':\r\n colorClass = 'text-white';\r\n break;\r\n }\r\n\r\n return `${sizeClass} ${colorClass} animate-spin`;\r\n });\r\n}\r\n","<svg [class]=\"classes()\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\r\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\"></circle>\r\n <path\r\n class=\"opacity-75\"\r\n fill=\"currentColor\"\r\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\"\r\n ></path>\r\n</svg>\r\n","import { Component, input, computed, TemplateRef, output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SpinnerComponent } from '../spinner/spinner.component';\r\n\r\nexport type ButtonVariant =\r\n | 'primary'\r\n | 'secondary'\r\n | 'success'\r\n | 'danger'\r\n | 'warning'\r\n | 'info'\r\n | 'light'\r\n | 'dark'\r\n | 'link';\r\nexport type ButtonSize = 'sm' | 'md' | 'lg';\r\nexport type ButtonType = 'button' | 'submit' | 'reset';\r\n\r\n@Component({\r\n selector: 'wdc-button',\r\n imports: [CommonModule, SpinnerComponent],\r\n templateUrl: './button.component.html',\r\n})\r\nexport class ButtonComponent {\r\n variant = input<ButtonVariant>('primary');\r\n size = input<ButtonSize>('md');\r\n block = input<boolean>(false);\r\n outline = input<boolean>(false);\r\n loading = input<boolean>(false);\r\n rounded = input<boolean>(false);\r\n iconOnly = input<boolean>(false);\r\n disabled = input<boolean>(false);\r\n type = input<ButtonType>('button');\r\n icon = input<string | TemplateRef<any> | undefined>(undefined);\r\n\r\n clicked = output<MouseEvent>();\r\n\r\n classes = computed(() => {\r\n const baseClasses =\r\n 'inline-flex cursor-pointer items-center justify-center font-medium transition-all focus:outline-none disabled:opacity-50 disabled:pointer-events-none gap-2';\r\n\r\n let sizeClasses = '';\r\n if (this.variant() !== 'link') {\r\n switch (this.size()) {\r\n case 'sm':\r\n sizeClasses = this.iconOnly() ? 'h-8 w-8 p-0 text-xs' : 'h-8 px-3 text-xs';\r\n break;\r\n case 'md':\r\n sizeClasses = this.iconOnly() ? 'h-10 w-10 p-0 text-sm' : 'h-10 px-4 py-2 text-sm';\r\n break;\r\n case 'lg':\r\n sizeClasses = this.iconOnly() ? 'h-12 w-12 p-0 text-lg' : 'h-12 px-6 text-lg';\r\n break;\r\n }\r\n } else {\r\n switch (this.size()) {\r\n case 'sm':\r\n sizeClasses = 'text-xs';\r\n break;\r\n case 'md':\r\n sizeClasses = 'text-sm';\r\n break;\r\n case 'lg':\r\n sizeClasses = 'text-lg';\r\n break;\r\n }\r\n }\r\n\r\n const solidVariants: Record<ButtonVariant, string> = {\r\n primary: 'bg-primary text-white hover:bg-primary-hover',\r\n secondary: 'bg-secondary text-white hover:bg-secondary-hover',\r\n danger: 'bg-danger text-white hover:bg-danger-hover',\r\n success: 'bg-success text-white hover:bg-success-hover',\r\n warning: 'bg-warning text-white hover:bg-warning-hover',\r\n info: 'bg-info text-white hover:bg-info-hover',\r\n light: 'bg-light text-slate-800 hover:bg-light-hover',\r\n dark: 'bg-dark text-white hover:bg-dark-hover',\r\n link: 'text-blue-600 underline-offset-4 hover:underline px-0 h-auto min-w-0',\r\n };\r\n\r\n const outlineVariants: Record<ButtonVariant, string> = {\r\n primary: 'border border-primary text-primary hover:text-primary-light hover:bg-primary',\r\n secondary:\r\n 'border border-secondary text-secondary hover:text-secondary-light hover:bg-secondary',\r\n danger: 'border border-danger text-danger hover:text-danger-light hover:bg-danger',\r\n success: 'border border-success text-success hover:text-success-light hover:bg-success',\r\n warning: 'border border-warning text-warning hover:text-warning-light hover:bg-warning',\r\n info: 'border border-info text-info hover:text-info-light hover:bg-info',\r\n light: 'border border-slate-200 text-slate-700 hover:bg-light',\r\n dark: 'border border-slate-800 text-slate-800 hover:text-dark-light hover:bg-dark',\r\n link: 'text-primary underline-offset-4 hover:underline px-0 h-auto min-w-0',\r\n };\r\n\r\n // let variantClasses = '';\r\n // switch (this.variant()) {\r\n // case 'primary':\r\n // variantClasses = 'bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500';\r\n // break;\r\n // case 'secondary':\r\n // variantClasses = 'bg-slate-600 text-white hover:bg-slate-700 focus:ring-slate-500';\r\n // break;\r\n // case 'danger':\r\n // variantClasses = 'bg-red-600 text-white hover:bg-red-700 focus:ring-red-500';\r\n // break;\r\n // case 'success':\r\n // variantClasses = 'bg-green-600 text-white hover:bg-green-700 focus:ring-green-500';\r\n // break;\r\n // case 'warning':\r\n // variantClasses = 'bg-yellow-500 text-white hover:bg-yellow-600 focus:ring-yellow-500';\r\n // break;\r\n // case 'info':\r\n // variantClasses = 'bg-cyan-500 text-white hover:bg-cyan-600 focus:ring-cyan-500';\r\n // break;\r\n // case 'link':\r\n // variantClasses =\r\n // 'text-blue-600 underline-offset-4 hover:underline focus:ring-blue-500 px-0 h-auto min-w-0';\r\n // break;\r\n // }\r\n\r\n const variantClasses = this.outline()\r\n ? outlineVariants[this.variant()]\r\n : solidVariants[this.variant()];\r\n\r\n const roundedClass = this.rounded()\r\n ? 'rounded-full'\r\n : this.variant() === 'link'\r\n ? ''\r\n : 'rounded-lg';\r\n\r\n return `${baseClasses} ${variantClasses} ${sizeClasses} ${roundedClass}`;\r\n });\r\n\r\n isIconString = computed(() => {\r\n return typeof this.icon() === 'string';\r\n });\r\n\r\n iconTemplate = computed(() => {\r\n const icon = this.icon();\r\n return icon instanceof TemplateRef ? icon : null;\r\n });\r\n}\r\n","<!-- <button [class]=\"classes()\" [disabled]=\"disabled() || loading()\">\r\n @if (loading()) {\r\n <wdc-spinner\r\n [size]=\"size() === 'lg' ? 'md' : 'sm'\"\r\n [color]=\"variant() === 'outline' || variant() === 'ghost' ? 'primary' : 'white'\"\r\n ></wdc-spinner>\r\n }\r\n @if (!loading() && icon()) {\r\n @if (isIconString()) {\r\n <span [innerHTML]=\"icon()\"></span>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"iconTemplate()\"></ng-container>\r\n }\r\n }\r\n\r\n <ng-content></ng-content>\r\n</button> -->\r\n\r\n<button [class]=\"classes()\" [disabled]=\"disabled() || loading()\">\r\n @if (loading()) {\r\n <wdc-spinner\r\n [size]=\"size() === 'lg' ? 'md' : 'sm'\"\r\n [color]=\"outline() ? 'primary' : 'white'\"\r\n ></wdc-spinner>\r\n }\r\n @if (!loading() && icon()) {\r\n @if (isIconString()) {\r\n <span [innerHTML]=\"icon()\"></span>\r\n } @else {\r\n <ng-container *ngTemplateOutlet=\"iconTemplate()\"></ng-container>\r\n }\r\n }\r\n\r\n <ng-content></ng-content>\r\n</button>\r\n","import { Component, input } from '@angular/core';\r\nimport { IconName } from './icons.type';\r\n\r\n@Component({\r\n selector: 'wdc-icons',\r\n imports: [],\r\n templateUrl: './icons.component.html',\r\n styleUrls: ['./icons.component.css'],\r\n})\r\nexport class IconsComponent {\r\n name = input.required<IconName>();\r\n class = input<string>('');\r\n size = input<'10' | '12' | '14' | '16' | '18' | '20' | '22' | '24' | '40' | '48' | '56'>('16');\r\n\r\n get sizeClass() {\r\n switch (this.size()) {\r\n case '10':\r\n return 'icon-10';\r\n case '12':\r\n return 'icon-12';\r\n case '14':\r\n return 'icon-14';\r\n case '16':\r\n return 'icon-16';\r\n case '18':\r\n return 'icon-18';\r\n case '20':\r\n return 'icon-20';\r\n case '22':\r\n return 'icon-22';\r\n case '24':\r\n return 'icon-24';\r\n case '40':\r\n return 'icon-40';\r\n case '48':\r\n return 'icon-48';\r\n case '56':\r\n return 'icon-56';\r\n default:\r\n return 'w-8 h-8';\r\n }\r\n }\r\n}\r\n","<span class=\"flex\">\r\n <span [class]=\"`material-symbols-outlined ${class} ${sizeClass}`\">{{ name() }}</span>\r\n</span>\r\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\r\n@Component({\r\n selector: 'wdc-card',\r\n imports: [],\r\n standalone: true,\r\n templateUrl: './card.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CardComponent {\r\n title = input<string>('');\r\n subtitle = input<string>('');\r\n footer = input<boolean>(false);\r\n header = input<boolean>(false);\r\n noBodyPadding = input<boolean>(false);\r\n}\r\n","<!-- <div class=\"bg-white rounded-xl shadow-sm border border-gray-100 flex flex-col h-full\">\r\n @if (title()) {\r\n <div\r\n class=\"px-6 py-4 border-b border-gray-50 flex justify-between items-center rounded-t-xl bg-white shrink-0\"\r\n >\r\n <div>\r\n <h3 class=\"text-lg font-semibold text-gray-800\">{{ title() }}</h3>\r\n @if (subtitle()) {\r\n <p class=\"text-sm text-gray-500 mt-1\">{{ subtitle() }}</p>\r\n }\r\n </div>\r\n <ng-content select=\"[header-actions]\"></ng-content>\r\n </div>\r\n }\r\n <div class=\"p-6 flex-1 min-h-0\">\r\n <ng-content select=\"[card-body]\"></ng-content>\r\n </div>\r\n @if (footer()) {\r\n <div class=\"px-6 py-4 border-t border-gray-50\">\r\n <ng-content select=\"[footer]\"></ng-content>\r\n </div>\r\n }\r\n</div> -->\r\n\r\n<div class=\"bg-white rounded-xl shadow-sm flex flex-col h-full\">\r\n @if (header()) {\r\n <div\r\n class=\"px-6 py-4 flex justify-between items-center border-b border-gray-100 rounded-t-xl bg-white shrink-0\"\r\n >\r\n @if (title()) {\r\n <div class=\"leading-none\">\r\n <h3 class=\"text-lg font-bold text-gray-800\">{{ title() }}</h3>\r\n @if (subtitle()) {\r\n <p class=\"text-sm text-gray-500\">{{ subtitle() }}</p>\r\n }\r\n </div>\r\n }\r\n <div class=\"\">\r\n @if (!title()) {\r\n <ng-content select=\"[card-header]\"></ng-content>\r\n }\r\n <ng-content select=\"[card-actions]\"></ng-content>\r\n </div>\r\n </div>\r\n }\r\n <div [class]=\"noBodyPadding() ? 'flex-1' : 'p-6 flex-1'\">\r\n <ng-content select=\"[card-body]\"></ng-content>\r\n </div>\r\n @if (footer()) {\r\n <div class=\"px-6 py-4 border-t border-gray-100\">\r\n <ng-content select=\"[card-footer]\"></ng-content>\r\n </div>\r\n }\r\n</div>\r\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\nimport { IconName } from '../icons/icons.type';\nimport { IconsComponent } from '../icons/icons.component';\n\n@Component({\n selector: 'wdc-stat-card',\n imports: [IconsComponent],\n standalone: true,\n templateUrl: './stat-card.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'block h-full',\n },\n})\nexport class StatCardComponent {\n label = input.required<string>();\n value = input.required<string | number>();\n trend = input<number>(0);\n // trend > 0 is up, < 0 is down\n trendLabel = input<string>('');\n iconName = input<IconName>('chart_data');\n}\n","<div\n class=\"bg-white p-6 rounded-xl shadow-sm border border-gray-100 flex items-start justify-between h-full\"\n>\n <div class=\"flex flex-col w-full\">\n <div class=\"flex items-start justify-between\">\n <div>\n <p class=\"text-sm font-medium text-gray-500 mb-1\">{{ label() }}</p>\n <h4 class=\"text-2xl font-bold text-gray-900\">{{ value() }}</h4>\n </div>\n <div class=\"p-3 bg-indigo-50 rounded-lg text-indigo-600\">\n <wdc-icons [name]=\"iconName()\" size=\"22\"></wdc-icons>\n </div>\n </div>\n\n @if (trend() !== 0) {\n <div class=\"flex items-center mt-2 text-sm\">\n @if (trend() > 0) {\n <span\n class=\"text-emerald-600 bg-emerald-50 px-1.5 py-0.5 rounded flex items-center gap-1 font-medium\"\n >\n <svg class=\"w-3 h-3\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M13 7h8m0 0v8m0-8l-8 8-4-4-6 6\"\n ></path>\n </svg>\n {{ trend() }}%\n </span>\n } @else {\n <span\n class=\"text-rose-600 bg-rose-50 px-1.5 py-0.5 rounded flex items-center gap-1 font-medium\"\n >\n <svg class=\"w-3 h-3\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M13 17h8m0 0V9m0 8l-8-8-4 4-6-6\"\n ></path>\n </svg>\n {{ trend() }}%\n </span>\n }\n <span class=\"text-gray-400 ml-2\">{{ trendLabel() }}</span>\n </div>\n }\n </div>\n</div>\n","import { Component, Input, signal } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'wdc-avatar',\r\n imports: [CommonModule],\r\n templateUrl: './avatar.component.html',\r\n})\r\nexport class AvatarComponent {\r\n @Input() src: string | undefined;\r\n @Input() alt: string = '';\r\n @Input() size: 'sm' | 'md' | 'lg' | 'xl' = 'md';\r\n @Input() shape: 'circle' | 'square' = 'circle';\r\n @Input() fallback: string = '';\r\n\r\n imageError = signal(false);\r\n\r\n get containerClasses(): string {\r\n let sizeClass = 'w-10 h-10 text-sm';\r\n switch (this.size) {\r\n case 'sm':\r\n sizeClass = 'w-8 h-8 text-xs';\r\n break;\r\n case 'md':\r\n sizeClass = 'w-10 h-10 text-sm';\r\n break;\r\n case 'lg':\r\n sizeClass = 'w-12 h-12 text-base';\r\n break;\r\n case 'xl':\r\n sizeClass = 'w-16 h-16 text-lg';\r\n break;\r\n }\r\n\r\n const shapeClass = this.shape === 'circle' ? 'rounded-full' : 'rounded-md';\r\n return `relative flex items-center justify-center overflow-hidden bg-slate-100 text-slate-600 dark:bg-slate-800 dark:text-slate-300 font-medium ${sizeClass} ${shapeClass}`;\r\n }\r\n\r\n handleError() {\r\n this.imageError.set(true);\r\n }\r\n}\r\n","<div [class]=\"containerClasses\">\r\n <img\r\n *ngIf=\"src && !imageError()\"\r\n [src]=\"src\"\r\n [alt]=\"alt\"\r\n class=\"h-full w-full object-cover\"\r\n (error)=\"handleError()\"\r\n />\r\n <span *ngIf=\"!src || imageError()\">{{ fallback }}</span>\r\n</div>\r\n","import { Component, input, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n@Component({\r\n selector: 'wdc-badge',\r\n imports: [CommonModule],\r\n templateUrl: './badge.component.html',\r\n})\r\nexport class BadgeComponent {\r\n value = input<string | number | undefined>(undefined);\r\n variant = input<'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info'>('primary');\r\n size = input<'sm' | 'md' | 'lg'>('md');\r\n rounded = input<boolean>(false);\r\n\r\n classes = computed(() => {\r\n const base =\r\n 'inline-flex items-center justify-center font-medium transition-colors ring-1 ring-inset';\r\n\r\n let variantClasses = '';\r\n switch (this.variant()) {\r\n case 'primary':\r\n variantClasses =\r\n 'bg-blue-50 text-blue-700 ring-blue-700/10 dark:bg-blue-400/10 dark:text-blue-400 dark:ring-blue-400/30';\r\n break;\r\n case 'secondary':\r\n variantClasses =\r\n 'bg-slate-50 text-slate-600 ring-slate-500/10 dark:bg-slate-400/10 dark:text-slate-400 dark:ring-slate-400/20';\r\n break;\r\n case 'success':\r\n variantClasses =\r\n 'bg-green-50 text-green-700 ring-green-600/20 dark:bg-green-500/10 dark:text-green-400 dark:ring-green-500/20';\r\n break;\r\n case 'danger':\r\n variantClasses =\r\n 'bg-red-50 text-red-700 ring-red-600/10 dark:bg-red-400/10 dark:text-red-400 dark:ring-red-400/20';\r\n break;\r\n case 'warning':\r\n variantClasses =\r\n 'bg-yellow-50 text-yellow-800 ring-yellow-600/20 dark:bg-yellow-400/10 dark:text-yellow-500 dark:ring-yellow-400/20';\r\n break;\r\n case 'info':\r\n variantClasses =\r\n 'bg-indigo-50 text-indigo-700 ring-indigo-700/10 dark:bg-indigo-400/10 dark:text-indigo-400 dark:ring-indigo-400/30';\r\n break;\r\n }\r\n\r\n let sizeClasses = '';\r\n switch (this.size()) {\r\n case 'sm':\r\n sizeClasses = 'text-xs px-2 py-1';\r\n break;\r\n case 'md':\r\n sizeClasses = 'text-sm px-2.5 py-0.5';\r\n break;\r\n case 'lg':\r\n sizeClasses = 'text-base px-3 py-1';\r\n break;\r\n }\r\n\r\n const roundedClass = this.rounded() ? 'rounded-full' : 'rounded-md';\r\n\r\n return `${base} ${variantClasses} ${sizeClasses} ${roundedClass}`;\r\n });\r\n}\r\n","<span [class]=\"classes()\">\r\n <ng-content></ng-content>\r\n @if (value()) {\r\n <span>{{ value() }}</span>\r\n }\r\n</span>\r\n","import { Component, input, model, computed, output } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n// import { trigger, transition, style, animate } from '@angular/animations';\r\n\r\n@Component({\r\n selector: 'wdc-modal',\r\n imports: [],\r\n templateUrl: './modal.component.html',\r\n})\r\nexport class ModalComponent {\r\n title = input<string>('');\r\n size = input<'sm' | 'md' | 'lg' | 'xl' | 'full'>('md');\r\n isOpen = model<boolean>(false);\r\n closeOnBackdropClick = input<boolean>(true);\r\n\r\n onClose = output<void>();\r\n\r\n closeModal() {\r\n this.isOpen.set(false);\r\n this.onClose.emit();\r\n }\r\n\r\n onBackdropClick() {\r\n if (this.closeOnBackdropClick()) {\r\n this.closeModal();\r\n }\r\n }\r\n\r\n sizeClasses = computed(() => {\r\n switch (this.size()) {\r\n case 'sm':\r\n return 'sm:max-w-sm';\r\n case 'md':\r\n return 'sm:max-w-md';\r\n case 'lg':\r\n return 'sm:max-w-lg';\r\n case 'xl':\r\n return 'sm:max-w-xl';\r\n case 'full':\r\n return 'sm:max-w-full sm:m-4';\r\n default:\r\n return 'sm:max-w-md';\r\n }\r\n });\r\n}\r\n","@if (isOpen()) {\r\n <div class=\"relative z-50\" aria-labelledby=\"modal-title\" role=\"dialog\" aria-modal=\"true\">\r\n <!-- Backdrop -->\r\n <div\r\n [@fadeAnimation]\r\n class=\"fixed inset-0 bg-slate-900/40 backdrop-blur-sm transition-opacity\"\r\n (click)=\"onBackdropClick()\"\r\n ></div>\r\n\r\n <!-- Panel -->\r\n <div class=\"fixed inset-0 z-10 overflow-y-auto w-screen overflow-x-hidden\">\r\n <div class=\"flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0\">\r\n <div\r\n [@modalAnimation]\r\n class=\"relative transform overflow-hidden rounded-lg bg-white dark:bg-slate-900 px-4 pb-4 pt-5 text-left shadow-xl sm:my-8 w-full sm:p-6\"\r\n [class]=\"sizeClasses()\"\r\n >\r\n <!-- Header -->\r\n @if (title()) {\r\n <div class=\"mb-4 sm:flex sm:items-start justify-between\">\r\n <h3\r\n class=\"text-lg font-semibold leading-6 text-slate-900 dark:text-white\"\r\n id=\"modal-title\"\r\n >\r\n {{ title() }}\r\n </h3>\r\n <button\r\n type=\"button\"\r\n class=\"rounded-md bg-white dark:bg-slate-900 text-slate-400 hover:text-slate-500 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-2 dark:focus:ring-offset-slate-900\"\r\n (click)=\"closeModal()\"\r\n >\r\n <span class=\"sr-only\">Close</span>\r\n <svg\r\n class=\"h-6 w-6\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke-width=\"1.5\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\"\r\n >\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n }\r\n\r\n <!-- Body -->\r\n <div class=\"mt-2\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'wdc-navbar',\r\n imports: [],\r\n templateUrl: './navbar.component.html',\r\n})\r\nexport class NavbarComponent {}\r\n","<p>navbar works!</p>\r\n","import { Component, input, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'wdc-progress-bar',\r\n imports: [CommonModule],\r\n templateUrl: './progress-bar.component.html',\r\n})\r\nexport class ProgressBarComponent {\r\n value = input<number>(0);\r\n showValue = input<boolean>(false);\r\n variant = input<'primary' | 'success' | 'warning' | 'danger' | 'info'>('primary');\r\n\r\n colorClass = computed(() => {\r\n switch (this.variant()) {\r\n case 'primary':\r\n return 'bg-blue-600 dark:bg-blue-500';\r\n case 'success':\r\n return 'bg-green-600 dark:bg-green-500';\r\n case 'warning':\r\n return 'bg-yellow-500 dark:bg-yellow-400';\r\n case 'danger':\r\n return 'bg-red-600 dark:bg-red-500';\r\n case 'info':\r\n return 'bg-cyan-500 dark:bg-cyan-400';\r\n default:\r\n return 'bg-blue-600 dark:bg-blue-500';\r\n }\r\n });\r\n}\r\n","<div class=\"w-full bg-slate-200 dark:bg-slate-700 rounded-full h-2.5 overflow-hidden\">\r\n <div\r\n class=\"h-2.5 rounded-full transition-all duration-300 ease-out\"\r\n [class]=\"colorClass()\"\r\n [style.width.%]=\"value()\"\r\n ></div>\r\n</div>\r\n@if (showValue()) {\r\n <div class=\"text-xs text-slate-500 dark:text-slate-400 mt-1 text-right\">{{ value() }}%</div>\r\n}\r\n","import { Component, input, signal, TemplateRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\ntype TabOrientation = 'horizontal' | 'vertical';\r\n\r\n@Component({\r\n selector: 'wdc-tab',\r\n standalone: true,\r\n imports: [CommonModule],\r\n template: ``,\r\n})\r\nexport class TabComponent {\r\n label = input<string>();\r\n disabled = input(false);\r\n active = input(false);\r\n headerTemplate = input<TemplateRef<any> | null>(null);\r\n contentTemplate = input<TemplateRef<any> | null>(null);\r\n}\r\n","import { Component, contentChildren, effect, output, input, signal } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TabComponent } from './tab.component';\r\n\r\nexport type TabVariant = 'underline' | 'pills';\r\nexport type TabOrientation = 'horizontal' | 'vertical';\r\n\r\n@Component({\r\n selector: 'wdc-tabs',\r\n imports: [CommonModule],\r\n templateUrl: './tabs.component.html',\r\n})\r\nexport class TabsComponent {\r\n variant = input<TabVariant>('underline');\r\n orientation = input<TabOrientation>('horizontal');\r\n activeTab = signal<TabComponent | null>(null);\r\n tabs = contentChildren(TabComponent);\r\n\r\n constructor() {\r\n effect(() => {\r\n const allTabs = this.tabs();\r\n if (allTabs.length === 0) return;\r\n ``;\r\n let activeTab = allTabs.find((tab) => tab.active());\r\n this.activeTab.set(activeTab || allTabs[0]);\r\n });\r\n }\r\n\r\n selectTab(tab: TabComponent) {\r\n if (!tab.disabled()) this.activeTab.set(tab);\r\n }\r\n}\r\n","<!-- <div [class]=\"containerClasses\">\r\n <div role=\"tablist\" [class]=\"listClasses\">\r\n @for (tab of tabs(); track tab.label()) {\r\n <button\r\n type=\"button\"\r\n role=\"tab\"\r\n [attr.aria-selected]=\"tab.active()\"\r\n (click)=\"selectTab(tab)\"\r\n [disabled]=\"tab.disabled()\"\r\n [class]=\"getTabStyle(tab)\"\r\n [class.border-indigo-500]=\"activeTab() === tab.label()\"\r\n [class.text-indigo-600]=\"activeTab() === tab.label()\"\r\n [class.border-transparent]=\"activeTab() !== tab.label()\"\r\n [class.text-gray-500]=\"activeTab() !== tab.label()\"\r\n class=\"group flex items-center gap-2 px-4 py-2 text-sm font-medium transition-all duration-200 outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 disabled:opacity-50 disabled:cursor-not-allowed whitespace-nowrap\"\r\n >\r\n {{ tab.label() }}\r\n </button>\r\n }\r\n </div>\r\n\r\n <div class=\"flex-1 p-1\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div> -->\r\n\r\n<div\r\n [class]=\"\r\n `w-full flex bg-white p-4 rounded-lg border border-gray-100 ${orientation() === 'vertical' ? 'flex-row gap-6' : 'flex-col'}`\r\n \"\r\n>\r\n <div\r\n [class]=\"\r\n `flex flex-shrink-0 border-gray-200 ${orientation() === 'vertical' ? 'border-r w-42 flex-col' : 'border-b'}`\r\n \"\r\n >\r\n <nav\r\n [class]=\"\r\n `flex ${orientation() === 'vertical' ? 'flex-col -mr-px flex-shrink-0' : '-mb-px space-x-8'}`\r\n \"\r\n >\r\n @for (item of tabs(); track $index; let i = $index) {\r\n <button\r\n (click)=\"selectTab(item)\"\r\n [class.border-indigo-500]=\"activeTab() === item\"\r\n [class.text-indigo-600]=\"activeTab() === item\"\r\n [class.border-transparent]=\"activeTab() !== item\"\r\n [class.text-gray-500]=\"activeTab() !== item\"\r\n [class.hover:text-gray-700]=\"activeTab() !== item\"\r\n [class.hover:border-gray-300]=\"activeTab() !== item\"\r\n [class]=\"\r\n `whitespace-nowrap flex cursor-pointer py-4 px-1 font-medium text-sm transition-all focus:outline-none ${\r\n orientation() === 'vertical' ? 'border-r-2' : 'border-b-2'\r\n }`\r\n \"\r\n >\r\n @if (item.headerTemplate()) {\r\n <ng-container *ngTemplateOutlet=\"item.headerTemplate()\"></ng-container>\r\n } @else {\r\n {{ item.label() }}\r\n }\r\n </button>\r\n }\r\n </nav>\r\n </div>\r\n\r\n @if (activeTab(); as active) {\r\n <div [class]=\"`${orientation() === 'vertical' ? 'flex-1 h-full overflow-y-auto' : 'mt-4'}`\">\r\n <ng-container *ngTemplateOutlet=\"active.contentTemplate()\"></ng-container>\r\n </div>\r\n }\r\n</div>\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\nexport type ToastType = 'success' | 'error' | 'warning' | 'info';\r\n\r\nexport interface Toast {\r\n id: number;\r\n message: string;\r\n type: ToastType;\r\n duration?: number;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ToastService {\r\n toasts = signal<Toast[]>([]);\r\n private nextId = 0;\r\n\r\n show(message: string, type: ToastType = 'info', duration: number = 3000) {\r\n const id = this.nextId++;\r\n const toast: Toast = { id, message, type, duration };\r\n\r\n this.toasts.update((current) => [...current, toast]);\r\n\r\n if (duration > 0) {\r\n setTimeout(() => {\r\n this.remove(id);\r\n }, duration);\r\n }\r\n }\r\n\r\n remove(id: number) {\r\n this.toasts.update((current) => current.filter((t) => t.id !== id));\r\n }\r\n\r\n success(message: string, duration?: number) {\r\n this.show(message, 'success', duration);\r\n }\r\n\r\n error(message: string, duration?: number) {\r\n this.show(message, 'error', duration);\r\n }\r\n\r\n warning(message: string, duration?: number) {\r\n this.show(message, 'warning', duration);\r\n }\r\n\r\n info(message: string, duration?: number) {\r\n this.show(message, 'info', duration);\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ToastService, Toast, ToastType } from './toast.service';\r\n\r\n@Component({\r\n selector: 'wdc-toast',\r\n standalone: true,\r\n imports: [CommonModule],\r\n templateUrl: './toast.component.html',\r\n})\r\nexport class ToastComponent {\r\n constructor(public toastService: ToastService) {}\r\n\r\n getIcon(type: ToastType): string {\r\n switch (type) {\r\n case 'success':\r\n return 'check_circle';\r\n case 'error':\r\n return 'error';\r\n case 'warning':\r\n return 'warning';\r\n case 'info':\r\n return 'info';\r\n }\r\n }\r\n\r\n getClasses(type: ToastType): string {\r\n switch (type) {\r\n case 'success':\r\n return 'bg-green-50 text-green-800 border-green-200 dark:bg-green-900/30 dark:text-green-300 dark:border-green-800';\r\n case 'error':\r\n return 'bg-red-50 text-red-800 border-red-200 dark:bg-red-900/30 dark:text-red-300 dark:border-red-800';\r\n case 'warning':\r\n return 'bg-yellow-50 text-yellow-800 border-yellow-200 dark:bg-yellow-900/30 dark:text-yellow-300 dark:border-yellow-800';\r\n case 'info':\r\n return 'bg-blue-50 text-blue-800 border-blue-200 dark:bg-blue-900/30 dark:text-blue-300 dark:border-blue-800';\r\n }\r\n }\r\n}\r\n","<div class=\"fixed top-4 right-4 z-[100] flex flex-col gap-2 pointer-events-none\">\r\n <div\r\n *ngFor=\"let toast of toastService.toasts()\"\r\n class=\"pointer-events-auto flex items-center w-full max-w-xs p-4 rounded-lg shadow-lg border animate-in slide-in-from-right fade-in duration-300\"\r\n [class]=\"getClasses(toast.type)\"\r\n role=\"alert\"\r\n >\r\n <div class=\"inline-flex items-center justify-center flex-shrink-0 w-8 h-8\">\r\n <span class=\"material-icons-outlined text-xl\">{{ getIcon(toast.type) }}</span>\r\n </div>\r\n <div class=\"ml-3 text-sm font-normal\">{{ toast.message }}</div>\r\n <button\r\n type=\"button\"\r\n class=\"ml-auto -mx-1.5 -my-1.5 rounded-lg focus:ring-2 p-1.5 hover:bg-black/5 dark:hover:bg-white/10 inline-flex items-center justify-center h-8 w-8 transition-colors\"\r\n aria-label=\"Close\"\r\n (click)=\"toastService.remove(toast.id)\"\r\n [class]=\"\r\n 'text-' +\r\n (toast.type === 'info'\r\n ? 'blue'\r\n : toast.type === 'error'\r\n ? 'red'\r\n : toast.type === 'success'\r\n ? 'green'\r\n : 'yellow') +\r\n '-500'\r\n \"\r\n >\r\n <span class=\"sr-only\">Close</span>\r\n <svg\r\n class=\"w-3 h-3\"\r\n aria-hidden=\"true\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 14 14\"\r\n >\r\n <path\r\n stroke=\"currentColor\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"m1 1 6 6m0 0 6 6M7 7l6-6M7 7l-6 6\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n</div>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'wdc-table',\r\n imports: [],\r\n templateUrl: './table.component.html',\r\n})\r\nexport class TableComponent {}\r\n","<p>table works!</p>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'wdc-chart',\r\n imports: [],\r\n templateUrl: './chart.component.html',\r\n})\r\nexport class ChartComponent {}\r\n","<p>chart works!</p>\r\n","import { Component, input, output, signal } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'wdc-upload',\r\n imports: [CommonModule],\r\n templateUrl: './upload.component.html',\r\n})\r\nexport class UploadComponent {\r\n accept = input<string>('*/*');\r\n maxSize = input<number>(10000000); // 10MB default\r\n multiple = input<boolean>(false);\r\n\r\n onSelect = output<File[]>();\r\n onUpload = output<File[]>(); // If manual upload\r\n\r\n files = signal<File[]>([]);\r\n isDragging = signal(false);\r\n\r\n onDragOver(event: DragEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDragging.set(true);\r\n }\r\n\r\n onDragLeave(event: DragEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDragging.set(false);\r\n }\r\n\r\n onDrop(event: DragEvent) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.isDragging.set(false);\r\n\r\n if (event.dataTransfer?.files) {\r\n this.handleFiles(Array.from(event.dataTransfer.files));\r\n }\r\n }\r\n\r\n onFileSelect(event: any) {\r\n if (event.target.files) {\r\n this.handleFiles(Array.from(event.target.files));\r\n }\r\n }\r\n\r\n private handleFiles(newFiles: File[]) {\r\n const validFiles = newFiles.filter((file) => {\r\n // Check size\r\n if (file.size > this.maxSize()) {\r\n console.warn(`File ${file.name} exceeds max size`);\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n if (this.multiple()) {\r\n this.files.update((current) => [...current, ...validFiles]);\r\n } else {\r\n if (validFiles.length > 0) {\r\n this.files.set([validFiles[0]]);\r\n }\r\n }\r\n\r\n this.onSelect.emit(this.files());\r\n }\r\n\r\n removeFile(index: number, event: Event) {\r\n event.stopPropagation();\r\n this.files.update((files) => files.filter((_, i) => i !== index));\r\n this.onSelect.emit(this.files());\r\n }\r\n\r\n upload() {\r\n this.onUpload.emit(this.files());\r\n // Clear after upload? keeping for now.\r\n }\r\n\r\n formatBytes(bytes: number, decimals = 2) {\r\n if (!+bytes) return '0 Bytes';\r\n const k = 1024;\r\n const dm = decimals < 0 ? 0 : decimals;\r\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\r\n }\r\n}\r\n","<div class=\"w-full\">\r\n <!-- Drop Zone -->\r\n <div\r\n class=\"border-2 border-dashed rounded-xl p-8 text-center transition-colors cursor-pointer flex flex-col items-center justify-center gap-4 bg-slate-50 dark:bg-slate-900/50\"\r\n [class.border-indigo-500]=\"isDragging()\"\r\n [class.bg-indigo-50]=\"isDragging()\"\r\n [class.dark:bg-indigo-500/10]=\"isDragging()\"\r\n [class.border-slate-300]=\"!isDragging()\"\r\n [class.dark:border-slate-700]=\"!isDragging()\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n (click)=\"fileInput.click()\"\r\n >\r\n <input\r\n #fileInput\r\n type=\"file\"\r\n [accept]=\"accept()\"\r\n [multiple]=\"multiple()\"\r\n class=\"hidden\"\r\n (change)=\"onFileSelect($event)\"\r\n />\r\n\r\n <div\r\n class=\"h-12 w-12 rounded-full bg-slate-100 dark:bg-slate-800 flex items-center justify-center mb-2\"\r\n >\r\n <svg\r\n class=\"w-6 h-6 text-slate-500 dark:text-slate-400\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"></path>\r\n <polyline points=\"17 8 12 3 7 8\"></polyline>\r\n <line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\"></line>\r\n </svg>\r\n </div>\r\n\r\n <div class=\"space-y-1\">\r\n <p class=\"text-sm font-medium text-slate-900 dark:text-white\">\r\n Drag & drop files here, or\r\n <span class=\"text-indigo-600 dark:text-indigo-400 hover:text-indigo-500\">browse</span>\r\n </p>\r\n <p class=\"text-xs text-slate-500 dark:text-slate-400\">\r\n Supports: {{ accept() === '*/*' ? 'All files' : accept() }} (Max\r\n {{ formatBytes(maxSize()) }})\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <!-- File List -->\r\n @if (files().length > 0) {\r\n <div class=\"mt-4 space-y-2\">\r\n @for (file of files(); track file.name) {\r\n <div\r\n class=\"flex items-center justify-between p-3 bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-800 rounded-lg shadow-sm\"\r\n >\r\n <div class=\"flex items-center gap-3 overflow-hidden\">\r\n <div\r\n class=\"h-10 w-10 flex-shrink-0 bg-indigo-50 dark:bg-indigo-500/10 rounded-lg flex items-center justify-center text-indigo-600 dark:text-indigo-400 font-bold text-xs uppercase\"\r\n >\r\n {{ file.name.split('.').pop() || 'FILE' }}\r\n </div>\r\n <div class=\"min-w-0\">\r\n <p class=\"text-sm font-medium text-slate-900 dark:text-white truncate\">\r\n {{ file.name }}\r\n </p>\r\n <p class=\"text-xs text-slate-500 dark:text-slate-400\">{{ formatBytes(file.size) }}</p>\r\n </div>\r\n </div>\r\n\r\n <button\r\n (click)=\"removeFile($index, $event)\"\r\n type=\"button\"\r\n class=\"p-1.5 text-slate-400 hover:text-red-500 hover:bg-red-50 dark:hover:bg-red-500/10 rounded-lg transition-colors\"\r\n >\r\n <svg\r\n class=\"w-5 h-5\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <path d=\"M18 6L6 18M6 6l12 12\"></path>\r\n </svg>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'wdc-wizard',\r\n imports: [],\r\n templateUrl: './wizard.component.html',\r\n})\r\nexport class WizardComponent {}\r\n","<p>wizard works!</p>\r\n","import { Component, input, model } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'wdc-drawer',\r\n imports: [CommonModule],\r\n templateUrl: './drawer.component.html',\r\n})\r\nexport class DrawerComponent {\r\n isOpen = model<boolean>(false);\r\n position = input<'left' | 'right'>('right');\r\n\r\n close() {\r\n this.isOpen.set(false);\r\n }\r\n\r\n get transformParams() {\r\n return {\r\n value: this.isOpen(),\r\n params: {\r\n transform: this.position() === 'right' ? 'translateX(100%)' : 'translateX(-100%)',\r\n },\r\n };\r\n }\r\n}\r\n","@if (isOpen()) {\r\n <div class=\"relative z-50\" aria-labelledby=\"slide-over-title\" role=\"dialog\" aria-modal=\"true\">\r\n <!-- Backdrop -->\r\n <div\r\n [@fadeAnimation]\r\n class=\"fixed inset-0 bg-slate-900/40 backdrop-blur-sm transition-opacity\"\r\n (click)=\"close()\"\r\n ></div>\r\n\r\n <!-- Panel -->\r\n <div class=\"fixed inset-0 overflow-hidden pointer-events-none\">\r\n <div class=\"absolute inset-0 overflow-hidden\">\r\n <div\r\n class=\"pointer-events-auto fixed inset-y-0 flex max-w-full\"\r\n [class.right-0]=\"position() === 'right'\"\r\n [class.left-0]=\"position() === 'left'\"\r\n [class.pl-10]=\"position() === 'right'\"\r\n [class.sm:pl-16]=\"position() === 'right'\"\r\n [class.pr-10]=\"position() === 'left'\"\r\n [class.sm:pr-16]=\"position() === 'left'\"\r\n >\r\n <div\r\n [@drawerAnimation]=\"transformParams\"\r\n class=\"flex w-screen max-w-md flex-col overflow-y-scroll bg-white dark:bg-slate-900 py-6 shadow-2xl\"\r\n >\r\n <div class=\"px-4 sm:px-6 flex items-center justify-between\">\r\n <h2\r\n class=\"text-base font-semibold leading-6 text-slate-900 dark:text-white\"\r\n id=\"slide-over-title\"\r\n >\r\n <ng-content select=\"[header]\"></ng-content>\r\n </h2>\r\n <button\r\n type=\"button\"\r\n class=\"rounded-md text-slate-400 hover:text-slate-500 focus:outline-none focus:ring-2 focus:ring-indigo-500\"\r\n (click)=\"close()\"\r\n >\r\n <span class=\"sr-only\">Close panel</span>\r\n <svg\r\n class=\"h-6 w-6\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke-width=\"1.5\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\"\r\n >\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n <div class=\"relative mt-6 flex-1 px-4 sm:px-6 text-slate-600 dark:text-slate-400\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'wdc-carousel',\r\n imports: [],\r\n templateUrl: './carousel.component.html',\r\n})\r\nexport class CarouselComponent {}\r\n","<p>carousel works!</p>\r\n","import { Injectable, signal } from '@angular/core';\r\n\r\nexport interface Confirmation {\r\n message?: string;\r\n header?: string;\r\n icon?: string;\r\n acceptLabel?: string;\r\n rejectLabel?: string;\r\n accept?: () => void;\r\n reject?: () => void;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfirmService {\r\n private _state = signal<Confirmation | null>(null);\r\n\r\n state = this._state.asReadonly();\r\n\r\n confirm(confirmation: Confirmation) {\r\n this._state.set(confirmation);\r\n }\r\n\r\n close() {\r\n this._state.set(null);\r\n }\r\n}\r\n","import { Component, inject } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ConfirmService } from './confirm.service';\r\nimport { ButtonComponent } from '../button/button.component';\r\nimport { ModalComponent } from '../modal/modal.component';\r\n\r\n@Component({\r\n selector: 'wdc-confirm-dialog',\r\n imports: [CommonModule, ButtonComponent, ModalComponent],\r\n templateUrl: './confirm-dialog.component.html',\r\n})\r\nexport class ConfirmDialogComponent {\r\n private confirmService = inject(ConfirmService);\r\n state = this.confirmService.state;\r\n\r\n onClose() {\r\n this.confirmService.close();\r\n }\r\n\r\n onAccept() {\r\n this.state()?.accept?.();\r\n this.confirmService.close();\r\n }\r\n\r\n onReject() {\r\n this.state()?.reject?.();\r\n this.confirmService.close();\r\n }\r\n}\r\n","<wdc-modal\r\n [isOpen]=\"!!state()\"\r\n (isOpenChange)=\"!$event && onClose()\"\r\n [title]=\"state()?.header || 'Confirmation'\"\r\n size=\"sm\"\r\n>\r\n <div class=\"flex items-start gap-4\">\r\n @if (state()?.icon) {\r\n <div class=\"flex-shrink-0 text-amber-500\">\r\n <i [class]=\"state()?.icon\" class=\"text-2xl\"></i>\r\n </div>\r\n }\r\n <div class=\"text-slate-600 dark:text-slate-400\">\r\n {{ state()?.message }}\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-6 flex justify-end gap-3\">\r\n <wdc-button variant=\"light\" (click)=\"onReject()\">\r\n {{ state()?.rejectLabel || 'Cancel' }}\r\n </wdc-button>\r\n <wdc-button (click)=\"onAccept()\">\r\n {{ state()?.acceptLabel || 'Confirm' }}\r\n </wdc-button>\r\n </div>\r\n</wdc-modal>\r\n","import { Component, input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SpinnerComponent } from '../spinner/spinner.component';\r\n\r\n@Component({\r\n selector: 'wdc-page-loader',\r\n imports: [CommonModule, SpinnerComponent],\r\n templateUrl: './page-loader.component.html',\r\n})\r\nexport class PageLoaderComponent {\r\n message = input<string>('');\r\n fullScreen = input<boolean>(true);\r\n}\r\n","<div\r\n class=\"fixed inset-0 z-50 flex flex-col items-center justify-center bg-white/80 dark:bg-slate-900/80 backdrop-blur-md transition-all duration-300\"\r\n [class.absolute]=\"!fullScreen()\"\r\n [class.fixed]=\"fullScreen()\"\r\n>\r\n <wdc-spinner size=\"lg\" color=\"primary\"></wdc-spinner>\r\n @if (message()) {\r\n <p class=\"mt-4 text-sm font-medium text-slate-600 dark:text-slate-400 animate-pulse\">\r\n {{ message() }}\r\n </p>\r\n }\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ToastService","i2"],"mappings":";;;;;MASa,gBAAgB,CAAA;AAC3B,IAAA,IAAI,GAAG,KAAK,CAAqB,IAAI,gDAAC;AACtC,IAAA,KAAK,GAAG,KAAK,CAAkC,SAAS,iDAAC;AAEzD,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;QACtB,IAAI,SAAS,GAAG,SAAS;AACzB,QAAA,QAAQ,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,KAAK,IAAI;gBACP,SAAS,GAAG,SAAS;gBACrB;AACF,YAAA,KAAK,IAAI;gBACP,SAAS,GAAG,SAAS;gBACrB;AACF,YAAA,KAAK,IAAI;gBACP,SAAS,GAAG,SAAS;gBACrB;;QAGJ,IAAI,UAAU,GAAG,cAAc;AAC/B,QAAA,QAAQ,IAAI,CAAC,KAAK,EAAE;AAClB,YAAA,KAAK,SAAS;gBACZ,UAAU,GAAG,eAAe;gBAC5B;AACF,YAAA,KAAK,OAAO;gBACV,UAAU,GAAG,YAAY;gBACzB;;AAGJ,QAAA,OAAO,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,UAAU,eAAe;AAClD,IAAA,CAAC,mDAAC;uGA7BS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECT7B,ubAQA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDFY,YAAY,EAAA,CAAA,EAAA,CAAA;;2FAGX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAAA,UAAA,EACX,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,ubAAA,EAAA;;;MEgBZ,eAAe,CAAA;AAC1B,IAAA,OAAO,GAAG,KAAK,CAAgB,SAAS,mDAAC;AACzC,IAAA,IAAI,GAAG,KAAK,CAAa,IAAI,gDAAC;AAC9B,IAAA,KAAK,GAAG,KAAK,CAAU,KAAK,iDAAC;AAC7B,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;AAC/B,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;AAC/B,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;AAC/B,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;AAChC,IAAA,IAAI,GAAG,KAAK,CAAa,QAAQ,gDAAC;AAClC,IAAA,IAAI,GAAG,KAAK,CAAwC,SAAS,gDAAC;IAE9D,OAAO,GAAG,MAAM,EAAc;AAE9B,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;QACtB,MAAM,WAAW,GACf,6JAA6J;QAE/J,IAAI,WAAW,GAAG,EAAE;AACpB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE;AAC7B,YAAA,QAAQ,IAAI,CAAC,IAAI,EAAE;AACjB,gBAAA,KAAK,IAAI;AACP,oBAAA,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,qBAAqB,GAAG,kBAAkB;oBAC1E;AACF,gBAAA,KAAK,IAAI;AACP,oBAAA,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,uBAAuB,GAAG,wBAAwB;oBAClF;AACF,gBAAA,KAAK,IAAI;AACP,oBAAA,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,uBAAuB,GAAG,mBAAmB;oBAC7E;;QAEN;aAAO;AACL,YAAA,QAAQ,IAAI,CAAC,IAAI,EAAE;AACjB,gBAAA,KAAK,IAAI;oBACP,WAAW,GAAG,SAAS;oBACvB;AACF,gBAAA,KAAK,IAAI;oBACP,WAAW,GAAG,SAAS;oBACvB;AACF,gBAAA,KAAK,IAAI;oBACP,WAAW,GAAG,SAAS;oBACvB;;QAEN;AAEA,QAAA,MAAM,aAAa,GAAkC;AACnD,YAAA,OAAO,EAAE,8CAA8C;AACvD,YAAA,SAAS,EAAE,kDAAkD;AAC7D,YAAA,MAAM,EAAE,4CAA4C;AACpD,YAAA,OAAO,EAAE,8CAA8C;AACvD,YAAA,OAAO,EAAE,8CAA8C;AACvD,YAAA,IAAI,EAAE,wCAAwC;AAC9C,YAAA,KAAK,EAAE,8CAA8C;AACrD,YAAA,IAAI,EAAE,wCAAwC;AAC9C,YAAA,IAAI,EAAE,sEAAsE;SAC7E;AAED,QAAA,MAAM,eAAe,GAAkC;AACrD,YAAA,OAAO,EAAE,8EAA8E;AACvF,YAAA,SAAS,EACP,sFAAsF;AACxF,YAAA,MAAM,EAAE,0EAA0E;AAClF,YAAA,OAAO,EAAE,8EAA8E;AACvF,YAAA,OAAO,EAAE,8EAA8E;AACvF,YAAA,IAAI,EAAE,kEAAkE;AACxE,YAAA,KAAK,EAAE,uDAAuD;AAC9D,YAAA,IAAI,EAAE,4EAA4E;AAClF,YAAA,IAAI,EAAE,qEAAqE;SAC5E;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BD,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO;AACjC,cAAE,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE;cAC9B,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAEjC,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO;AAC/B,cAAE;AACF,cAAE,IAAI,CAAC,OAAO,EAAE,KAAK;AACnB,kBAAE;kBACA,YAAY;QAElB,OAAO,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,cAAc,IAAI,WAAW,CAAA,CAAA,EAAI,YAAY,CAAA,CAAE;AAC1E,IAAA,CAAC,mDAAC;AAEF,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC3B,QAAA,OAAO,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ;AACxC,IAAA,CAAC,wDAAC;AAEF,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC3B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;QACxB,OAAO,IAAI,YAAY,WAAW,GAAG,IAAI,GAAG,IAAI;AAClD,IAAA,CAAC,wDAAC;uGApHS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB5B,8jCAmCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDhBY,YAAY,sMAAE,gBAAgB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAG7B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAAA,OAAA,EACb,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,8jCAAA,EAAA;;;MEV9B,cAAc,CAAA;AACzB,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,+CAAY;AACjC,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;AACzB,IAAA,IAAI,GAAG,KAAK,CAA6E,IAAI,gDAAC;AAE9F,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,QAAQ,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,SAAS;AAClB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,SAAS;AAClB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,SAAS;AAClB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,SAAS;AAClB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,SAAS;AAClB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,SAAS;AAClB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,SAAS;AAClB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,SAAS;AAClB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,SAAS;AAClB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,SAAS;AAClB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,SAAS;AAClB,YAAA;AACE,gBAAA,OAAO,SAAS;;IAEtB;uGAhCW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,kbCT3B,mIAGA,EAAA,MAAA,EAAA,CAAA,osBAAA,CAAA,EAAA,CAAA;;2FDMa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,EAAE,EAAA,QAAA,EAAA,mIAAA,EAAA,MAAA,EAAA,CAAA,osBAAA,CAAA,EAAA;;;MEGA,aAAa,CAAA;AACxB,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;AACzB,IAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,oDAAC;AAC5B,IAAA,MAAM,GAAG,KAAK,CAAU,KAAK,kDAAC;AAC9B,IAAA,MAAM,GAAG,KAAK,CAAU,KAAK,kDAAC;AAC9B,IAAA,aAAa,GAAG,KAAK,CAAU,KAAK,yDAAC;uGAL1B,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,+sBCR1B,s3DAsDA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FD9Ca,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,WACX,EAAE,EAAA,UAAA,EACC,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,s3DAAA,EAAA;;;MEQpC,iBAAiB,CAAA;AAC5B,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAU;AAChC,IAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,gDAAmB;AACzC,IAAA,KAAK,GAAG,KAAK,CAAS,CAAC,iDAAC;;AAExB,IAAA,UAAU,GAAG,KAAK,CAAS,EAAE,sDAAC;AAC9B,IAAA,QAAQ,GAAG,KAAK,CAAW,YAAY,oDAAC;uGAN7B,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd9B,8zDAkDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED5CY,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAQb,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAV7B,SAAS;+BACE,eAAe,EAAA,OAAA,EAChB,CAAC,cAAc,CAAC,EAAA,UAAA,EACb,IAAI,EAAA,eAAA,EAEC,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC;AACJ,wBAAA,KAAK,EAAE,cAAc;AACtB,qBAAA,EAAA,QAAA,EAAA,8zDAAA,EAAA;;;MEJU,eAAe,CAAA;AACjB,IAAA,GAAG;IACH,GAAG,GAAW,EAAE;IAChB,IAAI,GAA8B,IAAI;IACtC,KAAK,GAAwB,QAAQ;IACrC,QAAQ,GAAW,EAAE;AAE9B,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;AAE1B,IAAA,IAAI,gBAAgB,GAAA;QAClB,IAAI,SAAS,GAAG,mBAAmB;AACnC,QAAA,QAAQ,IAAI,CAAC,IAAI;AACf,YAAA,KAAK,IAAI;gBACP,SAAS,GAAG,iBAAiB;gBAC7B;AACF,YAAA,KAAK,IAAI;gBACP,SAAS,GAAG,mBAAmB;gBAC/B;AACF,YAAA,KAAK,IAAI;gBACP,SAAS,GAAG,qBAAqB;gBACjC;AACF,YAAA,KAAK,IAAI;gBACP,SAAS,GAAG,mBAAmB;gBAC/B;;AAGJ,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,KAAK,QAAQ,GAAG,cAAc,GAAG,YAAY;AAC1E,QAAA,OAAO,CAAA,wIAAA,EAA2I,SAAS,CAAA,CAAA,EAAI,UAAU,EAAE;IAC7K;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;IAC3B;uGAhCW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECR5B,iSAUA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,YAAY,EAAA,OAAA,EACb,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,iSAAA,EAAA;;sBAItB;;sBACA;;sBACA;;sBACA;;sBACA;;;MENU,cAAc,CAAA;AACzB,IAAA,KAAK,GAAG,KAAK,CAA8B,SAAS,iDAAC;AACrD,IAAA,OAAO,GAAG,KAAK,CAAsE,SAAS,mDAAC;AAC/F,IAAA,IAAI,GAAG,KAAK,CAAqB,IAAI,gDAAC;AACtC,IAAA,OAAO,GAAG,KAAK,CAAU,KAAK,mDAAC;AAE/B,IAAA,OAAO,GAAG,QAAQ,CAAC,MAAK;QACtB,MAAM,IAAI,GACR,yFAAyF;QAE3F,IAAI,cAAc,GAAG,EAAE;AACvB,QAAA,QAAQ,IAAI,CAAC,OAAO,EAAE;AACpB,YAAA,KAAK,SAAS;gBACZ,cAAc;AACZ,oBAAA,wGAAwG;gBAC1G;AACF,YAAA,KAAK,WAAW;gBACd,cAAc;AACZ,oBAAA,8GAA8G;gBAChH;AACF,YAAA,KAAK,SAAS;gBACZ,cAAc;AACZ,oBAAA,8GAA8G;gBAChH;AACF,YAAA,KAAK,QAAQ;gBACX,cAAc;AACZ,oBAAA,kGAAkG;gBACpG;AACF,YAAA,KAAK,SAAS;gBACZ,cAAc;AACZ,oBAAA,oHAAoH;gBACtH;AACF,YAAA,KAAK,MAAM;gBACT,cAAc;AACZ,oBAAA,oHAAoH;gBACtH;;QAGJ,IAAI,WAAW,GAAG,EAAE;AACpB,QAAA,QAAQ,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,KAAK,IAAI;gBACP,WAAW,GAAG,mBAAmB;gBACjC;AACF,YAAA,KAAK,IAAI;gBACP,WAAW,GAAG,uBAAuB;gBACrC;AACF,YAAA,KAAK,IAAI;gBACP,WAAW,GAAG,qBAAqB;gBACnC;;AAGJ,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,cAAc,GAAG,YAAY;QAEnE,OAAO,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,cAAc,IAAI,WAAW,CAAA,CAAA,EAAI,YAAY,CAAA,CAAE;AACnE,IAAA,CAAC,mDAAC;uGAtDS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECP3B,0IAMA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDFY,YAAY,EAAA,CAAA,EAAA,CAAA;;2FAGX,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;+BACE,WAAW,EAAA,OAAA,EACZ,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,0IAAA,EAAA;;;AEFzB;MAOa,cAAc,CAAA;AACzB,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;AACzB,IAAA,IAAI,GAAG,KAAK,CAAqC,IAAI,gDAAC;AACtD,IAAA,MAAM,GAAG,KAAK,CAAU,KAAK,kDAAC;AAC9B,IAAA,oBAAoB,GAAG,KAAK,CAAU,IAAI,gEAAC;IAE3C,OAAO,GAAG,MAAM,EAAQ;IAExB,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACrB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;YAC/B,IAAI,CAAC,UAAU,EAAE;QACnB;IACF;AAEA,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC1B,QAAA,QAAQ,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,aAAa;AACtB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,aAAa;AACtB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,aAAa;AACtB,YAAA,KAAK,IAAI;AACP,gBAAA,OAAO,aAAa;AACtB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,sBAAsB;AAC/B,YAAA;AACE,gBAAA,OAAO,aAAa;;AAE1B,IAAA,CAAC,uDAAC;uGAlCS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,upBCT3B,+qEAuDA,EAAA,CAAA;;2FD9Ca,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,EAAE,EAAA,QAAA,EAAA,+qEAAA,EAAA;;;MECA,eAAe,CAAA;uGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,sECP5B,0BACA,EAAA,CAAA;;2FDMa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,WACb,EAAE,EAAA,QAAA,EAAA,0BAAA,EAAA;;;MEIA,oBAAoB,CAAA;AAC/B,IAAA,KAAK,GAAG,KAAK,CAAS,CAAC,iDAAC;AACxB,IAAA,SAAS,GAAG,KAAK,CAAU,KAAK,qDAAC;AACjC,IAAA,OAAO,GAAG,KAAK,CAAwD,SAAS,mDAAC;AAEjF,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,QAAA,QAAQ,IAAI,CAAC,OAAO,EAAE;AACpB,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,8BAA8B;AACvC,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,gCAAgC;AACzC,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,kCAAkC;AAC3C,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,4BAA4B;AACrC,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,8BAA8B;AACvC,YAAA;AACE,gBAAA,OAAO,8BAA8B;;AAE3C,IAAA,CAAC,sDAAC;uGApBS,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECRjC,2YAUA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLY,YAAY,EAAA,CAAA,EAAA,CAAA;;2FAGX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,kBAAkB,EAAA,OAAA,EACnB,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,2YAAA,EAAA;;;MEMZ,YAAY,CAAA;IACvB,KAAK,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACvB,IAAA,QAAQ,GAAG,KAAK,CAAC,KAAK,oDAAC;AACvB,IAAA,MAAM,GAAG,KAAK,CAAC,KAAK,kDAAC;AACrB,IAAA,cAAc,GAAG,KAAK,CAA0B,IAAI,0DAAC;AACrD,IAAA,eAAe,GAAG,KAAK,CAA0B,IAAI,2DAAC;uGAL3C,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAFb,CAAA,CAAE,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EADF,YAAY,EAAA,CAAA,EAAA,CAAA;;2FAGX,YAAY,EAAA,UAAA,EAAA,CAAA;kBANxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,QAAQ,EAAE,CAAA,CAAE;AACb,iBAAA;;;MCEY,aAAa,CAAA;AACxB,IAAA,OAAO,GAAG,KAAK,CAAa,WAAW,mDAAC;AACxC,IAAA,WAAW,GAAG,KAAK,CAAiB,YAAY,uDAAC;AACjD,IAAA,SAAS,GAAG,MAAM,CAAsB,IAAI,qDAAC;AAC7C,IAAA,IAAI,GAAG,eAAe,CAAC,YAAY,gDAAC;AAEpC,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAC3B,YAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE;AAC1B,YAAA,CAAA,CAAE;AACF,YAAA,IAAI,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC;AACnD,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7C,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,SAAS,CAAC,GAAiB,EAAA;AACzB,QAAA,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;AAAE,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;IAC9C;uGAlBW,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAb,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAID,YAAY,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChBrC,i0FAwEA,2CD/DY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGX,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,SAAS;+BACE,UAAU,EAAA,OAAA,EACX,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,i0FAAA,EAAA;0TAOA,YAAY,CAAA,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;MEFxB,YAAY,CAAA;AACvB,IAAA,MAAM,GAAG,MAAM,CAAU,EAAE,kDAAC;IACpB,MAAM,GAAG,CAAC;AAElB,IAAA,IAAI,CAAC,OAAe,EAAE,OAAkB,MAAM,EAAE,WAAmB,IAAI,EAAA;AACrE,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;QACxB,MAAM,KAAK,GAAU,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE;AAEpD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC;AAEpD,QAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;YAChB,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,CAAC,EAAE,QAAQ,CAAC;QACd;IACF;AAEA,IAAA,MAAM,CAAC,EAAU,EAAA;QACf,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE;IAEA,OAAO,CAAC,OAAe,EAAE,QAAiB,EAAA;QACxC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;IACzC;IAEA,KAAK,CAAC,OAAe,EAAE,QAAiB,EAAA;QACtC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;IACvC;IAEA,OAAO,CAAC,OAAe,EAAE,QAAiB,EAAA;QACxC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;IACzC;IAEA,IAAI,CAAC,OAAe,EAAE,QAAiB,EAAA;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;IACtC;uGAnCW,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAZ,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA;;2FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCHY,cAAc,CAAA;AACN,IAAA,YAAA;AAAnB,IAAA,WAAA,CAAmB,YAA0B,EAAA;QAA1B,IAAA,CAAA,YAAY,GAAZ,YAAY;IAAiB;AAEhD,IAAA,OAAO,CAAC,IAAe,EAAA;QACrB,QAAQ,IAAI;AACV,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,cAAc;AACvB,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,OAAO;AAChB,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,SAAS;AAClB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,MAAM;;IAEnB;AAEA,IAAA,UAAU,CAAC,IAAe,EAAA;QACxB,QAAQ,IAAI;AACV,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,4GAA4G;AACrH,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,gGAAgG;AACzG,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,kHAAkH;AAC3H,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,sGAAsG;;IAEnH;uGA3BW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECV3B,guDA+CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxCY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAGX,cAAc,EAAA,UAAA,EAAA,CAAA;kBAN1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EAAA,UAAA,EACT,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,guDAAA,EAAA;;;MEAZ,cAAc,CAAA;uGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,qECP3B,yBACA,EAAA,CAAA;;2FDMa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,EAAE,EAAA,QAAA,EAAA,yBAAA,EAAA;;;MEGA,cAAc,CAAA;uGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,qECP3B,yBACA,EAAA,CAAA;;2FDMa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,WACZ,EAAE,EAAA,QAAA,EAAA,yBAAA,EAAA;;;MEIA,eAAe,CAAA;AAC1B,IAAA,MAAM,GAAG,KAAK,CAAS,KAAK,kDAAC;AAC7B,IAAA,OAAO,GAAG,KAAK,CAAS,QAAQ,EAAA,IAAA,SAAA,GAAA,CAAA,EAAA,SAAA,EAAA,SAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAC,CAAC;AAClC,IAAA,QAAQ,GAAG,KAAK,CAAU,KAAK,oDAAC;IAEhC,QAAQ,GAAG,MAAM,EAAU;AAC3B,IAAA,QAAQ,GAAG,MAAM,EAAU,CAAC;AAE5B,IAAA,KAAK,GAAG,MAAM,CAAS,EAAE,iDAAC;AAC1B,IAAA,UAAU,GAAG,MAAM,CAAC,KAAK,sDAAC;AAE1B,IAAA,UAAU,CAAC,KAAgB,EAAA;QACzB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;IAC3B;AAEA,IAAA,WAAW,CAAC,KAAgB,EAAA;QAC1B,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;IAC5B;AAEA,IAAA,MAAM,CAAC,KAAgB,EAAA;QACrB,KAAK,CAAC,cAAc,EAAE;QACtB,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;AAE1B,QAAA,IAAI,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACxD;IACF;AAEA,IAAA,YAAY,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;AACtB,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClD;IACF;AAEQ,IAAA,WAAW,CAAC,QAAgB,EAAA;QAClC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,KAAI;;YAE1C,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE;gBAC9B,OAAO,CAAC,IAAI,CAAC,CAAA,KAAA,EAAQ,IAAI,CAAC,IAAI,CAAA,iBAAA,CAAmB,CAAC;AAClD,gBAAA,OAAO,KAAK;YACd;AACA,YAAA,OAAO,IAAI;AACb,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACnB,YAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC;QAC7D;aAAO;AACL,YAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC;QACF;QAEA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAClC;IAEA,UAAU,CAAC,KAAa,EAAE,KAAY,EAAA;QACpC,KAAK,CAAC,eAAe,EAAE;QACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IAClC;IAEA,MAAM,GAAA;QACJ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;;IAElC;AAEA,IAAA,WAAW,CAAC,KAAa,EAAE,QAAQ,GAAG,CAAC,EAAA;QACrC,IAAI,CAAC,CAAC,KAAK;AAAE,YAAA,OAAO,SAAS;QAC7B,MAAM,CAAC,GAAG,IAAI;AACd,QAAA,MAAM,EAAE,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ;AACtC,QAAA,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnD,OAAO,CAAA,EAAG,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA,CAAA,EAAI,KAAK,CAAC,CAAC,CAAC,CAAA,CAAE;IAC1E;uGA9EW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECR5B,0rHAgGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED3FY,YAAY,EAAA,CAAA,EAAA,CAAA;;2FAGX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,YAAY,EAAA,OAAA,EACb,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,0rHAAA,EAAA;;;MEEZ,eAAe,CAAA;uGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,sECP5B,0BACA,EAAA,CAAA;;2FDMa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,WACb,EAAE,EAAA,QAAA,EAAA,0BAAA,EAAA;;;MEIA,eAAe,CAAA;AAC1B,IAAA,MAAM,GAAG,KAAK,CAAU,KAAK,kDAAC;AAC9B,IAAA,QAAQ,GAAG,KAAK,CAAmB,OAAO,oDAAC;IAE3C,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;IACxB;AAEA,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE;AACpB,YAAA,MAAM,EAAE;AACN,gBAAA,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,OAAO,GAAG,kBAAkB,GAAG,mBAAmB;AAClF,aAAA;SACF;IACH;uGAfW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECR5B,+7EA2DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtDY,YAAY,EAAA,CAAA,EAAA,CAAA;;2FAGX,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,YAAY,EAAA,OAAA,EACb,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,+7EAAA,EAAA;;;MEEZ,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,wECP9B,4BACA,EAAA,CAAA;;2FDMa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,WACf,EAAE,EAAA,QAAA,EAAA,4BAAA,EAAA;;;MEWA,cAAc,CAAA;AACf,IAAA,MAAM,GAAG,MAAM,CAAsB,IAAI,kDAAC;AAElD,IAAA,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAEhC,IAAA,OAAO,CAAC,YAA0B,EAAA;AAC9B,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;IACjC;IAEA,KAAK,GAAA;AACD,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;IACzB;uGAXS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFX,MAAM,EAAA,CAAA;;2FAET,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCHY,sBAAsB,CAAA;AACzB,IAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AAC/C,IAAA,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK;IAEjC,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;IAC7B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,IAAI;AACxB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;IAC7B;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,EAAE,EAAE,MAAM,IAAI;AACxB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;IAC7B;uGAhBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,8ECXnC,kzBA0BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDlBY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,4LAAE,cAAc,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAG5C,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,WACrB,CAAC,YAAY,EAAE,eAAe,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,kzBAAA,EAAA;;;MEC7C,mBAAmB,CAAA;AAC9B,IAAA,OAAO,GAAG,KAAK,CAAS,EAAE,mDAAC;AAC3B,IAAA,UAAU,GAAG,KAAK,CAAU,IAAI,sDAAC;uGAFtB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAnB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECThC,geAYA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDNY,YAAY,+BAAE,gBAAgB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA;;2FAG7B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,OAAA,EAClB,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,geAAA,EAAA;;;AEN3C;;AAEG;;;;"}
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@wdcoders/ui-ng",
3
+ "version": "1.0.0",
4
+ "peerDependencies": {
5
+ "@angular/common": "^21.0.0",
6
+ "@angular/core": "^21.0.0",
7
+ "@angular/animations": "^21.0.0"
8
+ },
9
+ "publishConfig": {
10
+ "access": "public"
11
+ },
12
+ "dependencies": {
13
+ "@angular/animations": "^21.0.0",
14
+ "tslib": "^2.3.0"
15
+ },
16
+ "sideEffects": false,
17
+ "module": "fesm2022/wdcoders-ui-ng.mjs",
18
+ "typings": "types/wdcoders-ui-ng.d.ts",
19
+ "exports": {
20
+ "./package.json": {
21
+ "default": "./package.json"
22
+ },
23
+ ".": {
24
+ "types": "./types/wdcoders-ui-ng.d.ts",
25
+ "default": "./fesm2022/wdcoders-ui-ng.mjs"
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,258 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { TemplateRef } from '@angular/core';
3
+ import * as _wdcoders_ui_ng from '@wdcoders/ui-ng';
4
+
5
+ type ButtonVariant = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'light' | 'dark' | 'link';
6
+ type ButtonSize = 'sm' | 'md' | 'lg';
7
+ type ButtonType = 'button' | 'submit' | 'reset';
8
+ declare class ButtonComponent {
9
+ variant: _angular_core.InputSignal<ButtonVariant>;
10
+ size: _angular_core.InputSignal<ButtonSize>;
11
+ block: _angular_core.InputSignal<boolean>;
12
+ outline: _angular_core.InputSignal<boolean>;
13
+ loading: _angular_core.InputSignal<boolean>;
14
+ rounded: _angular_core.InputSignal<boolean>;
15
+ iconOnly: _angular_core.InputSignal<boolean>;
16
+ disabled: _angular_core.InputSignal<boolean>;
17
+ type: _angular_core.InputSignal<ButtonType>;
18
+ icon: _angular_core.InputSignal<string | TemplateRef<any> | undefined>;
19
+ clicked: _angular_core.OutputEmitterRef<MouseEvent>;
20
+ classes: _angular_core.Signal<string>;
21
+ isIconString: _angular_core.Signal<boolean>;
22
+ iconTemplate: _angular_core.Signal<TemplateRef<any> | null>;
23
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ButtonComponent, never>;
24
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ButtonComponent, "wdc-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "block": { "alias": "block"; "required": false; "isSignal": true; }; "outline": { "alias": "outline"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; "iconOnly": { "alias": "iconOnly"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, { "clicked": "clicked"; }, never, ["*"], true, never>;
25
+ }
26
+
27
+ type IconName = 'content_copy' | 'home' | 'settings' | 'search' | 'menu' | 'close' | 'arrow_back' | 'arrow_forward' | 'check_circle' | 'error' | 'info' | 'warning' | 'favorite' | 'share' | 'download' | 'upload' | 'edit' | 'delete' | 'add' | 'remove' | 'lock' | 'unlock' | 'visibility' | 'visibility_off' | 'person' | 'person_add' | 'person_remove' | 'person_edit' | 'person_delete' | 'person_lock' | 'person_unlock' | 'person_visibility' | 'person_visibility_off' | 'person_search' | 'person_add_alt' | 'person_remove_alt' | 'person_edit_alt' | 'person_delete_alt' | 'person_lock_alt' | 'person_unlock_alt' | 'person_visibility_alt' | 'person_visibility_off_alt' | 'content_paste' | 'content_cut' | 'content_save' | 'content_print' | 'content_refresh' | 'content_undo' | 'content_redo' | 'content_copy_alt' | 'content_cut_alt' | 'content_save_alt' | 'content_print_alt' | 'content_refresh_alt' | 'content_undo_alt' | 'content_redo_alt' | 'done' | 'close_circle' | 'error_outline' | 'info_outline' | 'warning_outline' | 'favorite_border' | 'share_alt' | 'download_alt' | 'upload_alt' | 'edit_alt' | 'delete_alt' | 'add_alt' | 'remove_alt' | 'lock_alt' | 'unlock_alt' | 'visibility_alt' | 'visibility_off_alt' | 'favorite' | 'star' | 'star_border' | 'star_half' | 'heart' | 'heart_border' | 'heart_half' | 'add' | 'money_bag' | 'chart_data' | 'group';
28
+
29
+ declare class IconsComponent {
30
+ name: _angular_core.InputSignal<IconName>;
31
+ class: _angular_core.InputSignal<string>;
32
+ size: _angular_core.InputSignal<"10" | "12" | "14" | "16" | "18" | "20" | "22" | "24" | "40" | "48" | "56">;
33
+ get sizeClass(): "w-8 h-8" | "icon-10" | "icon-12" | "icon-14" | "icon-16" | "icon-18" | "icon-20" | "icon-22" | "icon-24" | "icon-40" | "icon-48" | "icon-56";
34
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IconsComponent, never>;
35
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<IconsComponent, "wdc-icons", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
36
+ }
37
+
38
+ declare class CardComponent {
39
+ title: _angular_core.InputSignal<string>;
40
+ subtitle: _angular_core.InputSignal<string>;
41
+ footer: _angular_core.InputSignal<boolean>;
42
+ header: _angular_core.InputSignal<boolean>;
43
+ noBodyPadding: _angular_core.InputSignal<boolean>;
44
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CardComponent, never>;
45
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CardComponent, "wdc-card", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "footer": { "alias": "footer"; "required": false; "isSignal": true; }; "header": { "alias": "header"; "required": false; "isSignal": true; }; "noBodyPadding": { "alias": "noBodyPadding"; "required": false; "isSignal": true; }; }, {}, never, ["[card-header]", "[card-actions]", "[card-body]", "[card-footer]"], true, never>;
46
+ }
47
+
48
+ declare class SpinnerComponent {
49
+ size: _angular_core.InputSignal<"sm" | "md" | "lg">;
50
+ color: _angular_core.InputSignal<"current" | "primary" | "white">;
51
+ classes: _angular_core.Signal<string>;
52
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpinnerComponent, never>;
53
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SpinnerComponent, "wdc-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
54
+ }
55
+
56
+ declare class StatCardComponent {
57
+ label: _angular_core.InputSignal<string>;
58
+ value: _angular_core.InputSignal<string | number>;
59
+ trend: _angular_core.InputSignal<number>;
60
+ trendLabel: _angular_core.InputSignal<string>;
61
+ iconName: _angular_core.InputSignal<IconName>;
62
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<StatCardComponent, never>;
63
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<StatCardComponent, "wdc-stat-card", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "trend": { "alias": "trend"; "required": false; "isSignal": true; }; "trendLabel": { "alias": "trendLabel"; "required": false; "isSignal": true; }; "iconName": { "alias": "iconName"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
64
+ }
65
+
66
+ declare class AvatarComponent {
67
+ src: string | undefined;
68
+ alt: string;
69
+ size: 'sm' | 'md' | 'lg' | 'xl';
70
+ shape: 'circle' | 'square';
71
+ fallback: string;
72
+ imageError: _angular_core.WritableSignal<boolean>;
73
+ get containerClasses(): string;
74
+ handleError(): void;
75
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AvatarComponent, never>;
76
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AvatarComponent, "wdc-avatar", never, { "src": { "alias": "src"; "required": false; }; "alt": { "alias": "alt"; "required": false; }; "size": { "alias": "size"; "required": false; }; "shape": { "alias": "shape"; "required": false; }; "fallback": { "alias": "fallback"; "required": false; }; }, {}, never, never, true, never>;
77
+ }
78
+
79
+ declare class BadgeComponent {
80
+ value: _angular_core.InputSignal<string | number | undefined>;
81
+ variant: _angular_core.InputSignal<"primary" | "secondary" | "success" | "danger" | "warning" | "info">;
82
+ size: _angular_core.InputSignal<"sm" | "md" | "lg">;
83
+ rounded: _angular_core.InputSignal<boolean>;
84
+ classes: _angular_core.Signal<string>;
85
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BadgeComponent, never>;
86
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BadgeComponent, "wdc-badge", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
87
+ }
88
+
89
+ declare class ModalComponent {
90
+ title: _angular_core.InputSignal<string>;
91
+ size: _angular_core.InputSignal<"sm" | "md" | "lg" | "xl" | "full">;
92
+ isOpen: _angular_core.ModelSignal<boolean>;
93
+ closeOnBackdropClick: _angular_core.InputSignal<boolean>;
94
+ onClose: _angular_core.OutputEmitterRef<void>;
95
+ closeModal(): void;
96
+ onBackdropClick(): void;
97
+ sizeClasses: _angular_core.Signal<"sm:max-w-sm" | "sm:max-w-md" | "sm:max-w-lg" | "sm:max-w-xl" | "sm:max-w-full sm:m-4">;
98
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ModalComponent, never>;
99
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ModalComponent, "wdc-modal", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "closeOnBackdropClick": { "alias": "closeOnBackdropClick"; "required": false; "isSignal": true; }; }, { "isOpen": "isOpenChange"; "onClose": "onClose"; }, never, ["*"], true, never>;
100
+ }
101
+
102
+ declare class NavbarComponent {
103
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavbarComponent, never>;
104
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavbarComponent, "wdc-navbar", never, {}, {}, never, never, true, never>;
105
+ }
106
+
107
+ declare class ProgressBarComponent {
108
+ value: _angular_core.InputSignal<number>;
109
+ showValue: _angular_core.InputSignal<boolean>;
110
+ variant: _angular_core.InputSignal<"primary" | "success" | "danger" | "warning" | "info">;
111
+ colorClass: _angular_core.Signal<"bg-blue-600 dark:bg-blue-500" | "bg-green-600 dark:bg-green-500" | "bg-yellow-500 dark:bg-yellow-400" | "bg-red-600 dark:bg-red-500" | "bg-cyan-500 dark:bg-cyan-400">;
112
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ProgressBarComponent, never>;
113
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ProgressBarComponent, "wdc-progress-bar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
114
+ }
115
+
116
+ declare class TabComponent {
117
+ label: _angular_core.InputSignal<string | undefined>;
118
+ disabled: _angular_core.InputSignal<boolean>;
119
+ active: _angular_core.InputSignal<boolean>;
120
+ headerTemplate: _angular_core.InputSignal<TemplateRef<any> | null>;
121
+ contentTemplate: _angular_core.InputSignal<TemplateRef<any> | null>;
122
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabComponent, never>;
123
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabComponent, "wdc-tab", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "headerTemplate": { "alias": "headerTemplate"; "required": false; "isSignal": true; }; "contentTemplate": { "alias": "contentTemplate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
124
+ }
125
+
126
+ type TabVariant = 'underline' | 'pills';
127
+ type TabOrientation = 'horizontal' | 'vertical';
128
+ declare class TabsComponent {
129
+ variant: _angular_core.InputSignal<TabVariant>;
130
+ orientation: _angular_core.InputSignal<TabOrientation>;
131
+ activeTab: _angular_core.WritableSignal<TabComponent | null>;
132
+ tabs: _angular_core.Signal<readonly TabComponent[]>;
133
+ constructor();
134
+ selectTab(tab: TabComponent): void;
135
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabsComponent, never>;
136
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabsComponent, "wdc-tabs", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, {}, ["tabs"], never, true, never>;
137
+ }
138
+
139
+ type ToastType = 'success' | 'error' | 'warning' | 'info';
140
+ interface Toast {
141
+ id: number;
142
+ message: string;
143
+ type: ToastType;
144
+ duration?: number;
145
+ }
146
+ declare class ToastService {
147
+ toasts: _angular_core.WritableSignal<Toast[]>;
148
+ private nextId;
149
+ show(message: string, type?: ToastType, duration?: number): void;
150
+ remove(id: number): void;
151
+ success(message: string, duration?: number): void;
152
+ error(message: string, duration?: number): void;
153
+ warning(message: string, duration?: number): void;
154
+ info(message: string, duration?: number): void;
155
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastService, never>;
156
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ToastService>;
157
+ }
158
+
159
+ declare class ToastComponent {
160
+ toastService: ToastService;
161
+ constructor(toastService: ToastService);
162
+ getIcon(type: ToastType): string;
163
+ getClasses(type: ToastType): string;
164
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastComponent, never>;
165
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ToastComponent, "wdc-toast", never, {}, {}, never, never, true, never>;
166
+ }
167
+
168
+ declare class TableComponent {
169
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<TableComponent, never>;
170
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<TableComponent, "wdc-table", never, {}, {}, never, never, true, never>;
171
+ }
172
+
173
+ declare class ChartComponent {
174
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ChartComponent, never>;
175
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ChartComponent, "wdc-chart", never, {}, {}, never, never, true, never>;
176
+ }
177
+
178
+ declare class UploadComponent {
179
+ accept: _angular_core.InputSignal<string>;
180
+ maxSize: _angular_core.InputSignal<number>;
181
+ multiple: _angular_core.InputSignal<boolean>;
182
+ onSelect: _angular_core.OutputEmitterRef<File[]>;
183
+ onUpload: _angular_core.OutputEmitterRef<File[]>;
184
+ files: _angular_core.WritableSignal<File[]>;
185
+ isDragging: _angular_core.WritableSignal<boolean>;
186
+ onDragOver(event: DragEvent): void;
187
+ onDragLeave(event: DragEvent): void;
188
+ onDrop(event: DragEvent): void;
189
+ onFileSelect(event: any): void;
190
+ private handleFiles;
191
+ removeFile(index: number, event: Event): void;
192
+ upload(): void;
193
+ formatBytes(bytes: number, decimals?: number): string;
194
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UploadComponent, never>;
195
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UploadComponent, "wdc-upload", never, { "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxSize": { "alias": "maxSize"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "onUpload": "onUpload"; }, never, never, true, never>;
196
+ }
197
+
198
+ declare class WizardComponent {
199
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<WizardComponent, never>;
200
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<WizardComponent, "wdc-wizard", never, {}, {}, never, never, true, never>;
201
+ }
202
+
203
+ declare class DrawerComponent {
204
+ isOpen: _angular_core.ModelSignal<boolean>;
205
+ position: _angular_core.InputSignal<"left" | "right">;
206
+ close(): void;
207
+ get transformParams(): {
208
+ value: boolean;
209
+ params: {
210
+ transform: string;
211
+ };
212
+ };
213
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DrawerComponent, never>;
214
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DrawerComponent, "wdc-drawer", never, { "isOpen": { "alias": "isOpen"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; }, { "isOpen": "isOpenChange"; }, never, ["[header]", "*"], true, never>;
215
+ }
216
+
217
+ declare class CarouselComponent {
218
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CarouselComponent, never>;
219
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CarouselComponent, "wdc-carousel", never, {}, {}, never, never, true, never>;
220
+ }
221
+
222
+ declare class ConfirmDialogComponent {
223
+ private confirmService;
224
+ state: _angular_core.Signal<_wdcoders_ui_ng.Confirmation | null>;
225
+ onClose(): void;
226
+ onAccept(): void;
227
+ onReject(): void;
228
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfirmDialogComponent, never>;
229
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ConfirmDialogComponent, "wdc-confirm-dialog", never, {}, {}, never, never, true, never>;
230
+ }
231
+
232
+ declare class PageLoaderComponent {
233
+ message: _angular_core.InputSignal<string>;
234
+ fullScreen: _angular_core.InputSignal<boolean>;
235
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageLoaderComponent, never>;
236
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageLoaderComponent, "wdc-page-loader", never, { "message": { "alias": "message"; "required": false; "isSignal": true; }; "fullScreen": { "alias": "fullScreen"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
237
+ }
238
+
239
+ interface Confirmation {
240
+ message?: string;
241
+ header?: string;
242
+ icon?: string;
243
+ acceptLabel?: string;
244
+ rejectLabel?: string;
245
+ accept?: () => void;
246
+ reject?: () => void;
247
+ }
248
+ declare class ConfirmService {
249
+ private _state;
250
+ state: _angular_core.Signal<Confirmation | null>;
251
+ confirm(confirmation: Confirmation): void;
252
+ close(): void;
253
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ConfirmService, never>;
254
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ConfirmService>;
255
+ }
256
+
257
+ export { AvatarComponent, BadgeComponent, ButtonComponent, CardComponent, CarouselComponent, ChartComponent, ConfirmDialogComponent, ConfirmService, DrawerComponent, IconsComponent, ModalComponent, NavbarComponent, PageLoaderComponent, ProgressBarComponent, SpinnerComponent, StatCardComponent, TabComponent, TableComponent, TabsComponent, ToastComponent, ToastService, UploadComponent, WizardComponent };
258
+ export type { ButtonSize, ButtonType, ButtonVariant, Confirmation, TabOrientation, TabVariant, Toast, ToastType };