@tekus/design-system 5.31.0 → 5.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/tekus-design-system-components-color-picker.mjs +1028 -0
- package/fesm2022/tekus-design-system-components-color-picker.mjs.map +1 -0
- package/fesm2022/tekus-design-system-components-date-picker.mjs +269 -204
- package/fesm2022/tekus-design-system-components-date-picker.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-icon.mjs +119 -7
- package/fesm2022/tekus-design-system-components-icon.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-table.mjs +38 -6
- package/fesm2022/tekus-design-system-components-table.mjs.map +1 -1
- package/fesm2022/tekus-design-system-components-time-picker.mjs +443 -0
- package/fesm2022/tekus-design-system-components-time-picker.mjs.map +1 -0
- package/fesm2022/tekus-design-system-utils-wcag-contrast.mjs +97 -0
- package/fesm2022/tekus-design-system-utils-wcag-contrast.mjs.map +1 -0
- package/package.json +13 -1
- package/types/tekus-design-system-components-color-picker.d.ts +356 -0
- package/types/tekus-design-system-components-date-picker.d.ts +191 -141
- package/types/tekus-design-system-components-icon.d.ts +10 -1
- package/types/tekus-design-system-components-table.d.ts +26 -1
- package/types/tekus-design-system-components-time-picker.d.ts +203 -0
- package/types/tekus-design-system-utils-wcag-contrast.d.ts +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tekus-design-system-components-color-picker.mjs","sources":["../../../projects/design-system/components/color-picker/src/sections/spectrum-canvas.component.ts","../../../projects/design-system/components/color-picker/src/sections/swatch-grid.component.ts","../../../projects/design-system/components/color-picker/src/color-picker.component.ts","../../../projects/design-system/components/color-picker/src/color-picker.component.html","../../../projects/design-system/components/color-picker/tekus-design-system-components-color-picker.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n computed,\n inject,\n input,\n output,\n} from '@angular/core';\n\n/**\n * @component ColorPickerSpectrumComponent\n * @description\n * Internal saturation/brightness canvas of `tk-color-picker` (NOT public API).\n * A hue-colored area with white→transparent (saturation) and\n * transparent→black (brightness) CSS overlays. Supports pointer dragging\n * (tracked on `document` so the drag can leave the area) and full keyboard\n * operation via a 2D slider pattern (arrow keys, Shift for 10% steps).\n */\n@Component({\n selector: 'tk-color-picker-spectrum',\n template: `\n <div\n class=\"tk-color-picker-spectrum__area\"\n role=\"slider\"\n tabindex=\"0\"\n [style.background]=\"hueBackground()\"\n [attr.aria-label]=\"ariaLabel()\"\n [attr.aria-valuetext]=\"valueText()\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [attr.aria-valuenow]=\"Math.round(saturation() * 100)\"\n (pointerdown)=\"onPointerDown($event)\"\n (keydown)=\"onKeydown($event)\"\n >\n <div\n class=\"tk-color-picker-spectrum__cursor\"\n [style.left.%]=\"saturation() * 100\"\n [style.top.%]=\"(1 - brightness()) * 100\"\n [style.background]=\"color()\"\n ></div>\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n\n .tk-color-picker-spectrum__area {\n width: 100%;\n height: 6.5rem;\n border-radius: var(--tk-borderRadius-s, 0.25rem);\n position: relative;\n overflow: hidden;\n cursor: crosshair;\n touch-action: none;\n user-select: none;\n outline: none;\n }\n\n .tk-color-picker-spectrum__area::before {\n content: '';\n position: absolute;\n inset: 0;\n background: linear-gradient(to right, #fff, transparent);\n }\n\n .tk-color-picker-spectrum__area::after {\n content: '';\n position: absolute;\n inset: 0;\n background: linear-gradient(to bottom, transparent, #000);\n }\n\n .tk-color-picker-spectrum__area:focus-visible {\n box-shadow: inset 0 0 0 2px var(--tk-color-border-focus, #16006f);\n }\n\n .tk-color-picker-spectrum__cursor {\n position: absolute;\n width: 0.875rem;\n height: 0.875rem;\n border-radius: var(--tk-borderRadius-full, 50%);\n border: 2px solid var(--tk-color-background-default, #ffffff);\n box-shadow: 0 0 0 1px var(--tk-color-border-strong, #424243);\n transform: translate(-50%, -50%);\n pointer-events: none;\n z-index: 2;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColorPickerSpectrumComponent {\n /** Current hue (0–360) painting the base background. */\n hue = input<number>(0);\n\n /** Current saturation (0–1) → horizontal cursor position. */\n saturation = input<number>(1);\n\n /** Current brightness/value (0–1) → vertical cursor position (inverted). */\n brightness = input<number>(1);\n\n /** Current color painted inside the cursor. */\n color = input<string>('');\n\n /** Accessible label of the 2D slider. */\n ariaLabel = input<string>('Saturation and brightness');\n\n /** Emits on every pointer/keyboard change with the new saturation/brightness pair. */\n changed = output<{ saturation: number; brightness: number }>();\n\n protected readonly Math = Math;\n protected readonly hueBackground = computed(() => `hsl(${this.hue()}, 100%, 50%)`);\n protected readonly valueText = computed(\n () =>\n `${this.ariaLabel()}: ${Math.round(this.saturation() * 100)}%, ${Math.round(this.brightness() * 100)}%`,\n );\n\n private readonly elementRef = inject(ElementRef<HTMLElement>);\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly onDragMove = (e: PointerEvent) => this.applyPointer(e);\n private readonly onDragEnd = () => this.removeDragListeners();\n\n constructor() {\n this.destroyRef.onDestroy(() => this.removeDragListeners());\n }\n\n protected onPointerDown(event: PointerEvent): void {\n event.preventDefault();\n (event.currentTarget as HTMLElement).focus();\n this.applyPointer(event);\n document.addEventListener('pointermove', this.onDragMove);\n document.addEventListener('pointerup', this.onDragEnd);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n const step = event.shiftKey ? 0.1 : 0.01;\n let saturation = this.saturation();\n let brightness = this.brightness();\n\n switch (event.key) {\n case 'ArrowRight':\n saturation += step;\n break;\n case 'ArrowLeft':\n saturation -= step;\n break;\n case 'ArrowUp':\n brightness += step;\n break;\n case 'ArrowDown':\n brightness -= step;\n break;\n default:\n return;\n }\n event.preventDefault();\n this.emitClamped(saturation, brightness);\n }\n\n private applyPointer(event: PointerEvent): void {\n const area = this.elementRef.nativeElement.querySelector(\n '.tk-color-picker-spectrum__area',\n ) as HTMLElement | null;\n if (!area) {\n return;\n }\n const rect = area.getBoundingClientRect();\n this.emitClamped(\n (event.clientX - rect.left) / rect.width,\n 1 - (event.clientY - rect.top) / rect.height,\n );\n }\n\n private emitClamped(saturation: number, brightness: number): void {\n this.changed.emit({\n saturation: Math.max(0, Math.min(1, saturation)),\n brightness: Math.max(0, Math.min(1, brightness)),\n });\n }\n\n private removeDragListeners(): void {\n document.removeEventListener('pointermove', this.onDragMove);\n document.removeEventListener('pointerup', this.onDragEnd);\n }\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\n\n/**\n * @component ColorPickerSwatchGridComponent\n * @description\n * Internal grid of color swatches of `tk-color-picker` (NOT public API).\n * Used by both the predefined palette and the custom colors sections.\n * Each swatch is a real button labelled with its hex value;\n * the currently selected color is marked with `aria-pressed`.\n */\n@Component({\n selector: 'tk-color-picker-swatch-grid',\n template: `\n <div class=\"tk-color-picker-swatch-grid__grid\" role=\"group\" [attr.aria-label]=\"ariaLabel()\">\n @for (color of colors(); track color) {\n <button\n type=\"button\"\n class=\"tk-color-picker-swatch-grid__swatch\"\n [class.tk-color-picker-swatch-grid__swatch--selected]=\"isSelected(color)\"\n [style.background-color]=\"color\"\n [attr.aria-label]=\"color\"\n [attr.aria-pressed]=\"isSelected(color)\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"picked.emit(color)\"\n ></button>\n }\n <ng-content></ng-content>\n </div>\n `,\n styles: `\n :host {\n display: block;\n }\n\n .tk-color-picker-swatch-grid__grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(1.25rem, 1fr));\n gap: var(--tk-spacing-gap-xs, 0.25rem);\n }\n\n .tk-color-picker-swatch-grid__swatch {\n appearance: none;\n padding: 0;\n width: 100%;\n aspect-ratio: 1;\n border: 1px solid var(--tk-color-border-subtle, #e4e4e4);\n border-radius: var(--tk-borderRadius-xs, 0.125rem);\n cursor: pointer;\n transition: transform 120ms ease, box-shadow 120ms ease;\n }\n\n .tk-color-picker-swatch-grid__swatch:hover {\n transform: scale(1.12);\n }\n\n .tk-color-picker-swatch-grid__swatch:focus-visible {\n outline: 2px solid var(--tk-color-border-focus, #16006f);\n outline-offset: 1px;\n }\n\n .tk-color-picker-swatch-grid__swatch--selected {\n box-shadow: 0 0 0 2px var(--tk-color-background-default, #ffffff),\n 0 0 0 4px var(--tk-color-accent-default, #6ad0bc);\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColorPickerSwatchGridComponent {\n /** Hex colors to render as swatches. */\n colors = input<string[]>([]);\n\n /** Currently selected hex (normalized lowercase) to highlight. */\n selected = input<string>('');\n\n /** Accessible label of the swatch group. */\n ariaLabel = input<string>('');\n\n /** Emits the picked hex color. */\n picked = output<string>();\n\n protected isSelected(color: string): boolean {\n return color.toLowerCase() === this.selected().toLowerCase();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n ElementRef,\n computed,\n effect,\n inject,\n input,\n model,\n output,\n signal,\n untracked,\n viewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { MessageModule } from 'primeng/message';\nimport { Popover, PopoverModule } from 'primeng/popover';\nimport { Subject, debounceTime } from 'rxjs';\nimport { ButtonComponent } from '@tekus/design-system/components/button';\nimport { IconComponent } from '@tekus/design-system/components/icon';\nimport { InputTextComponent } from '@tekus/design-system/components/input-text';\nimport {\n ContrastResult,\n getContrastResult,\n getContrastTextColor,\n} from '@tekus/design-system/utils/wcag-contrast';\nimport {\n ColorPickerCloseReason,\n ColorPickerSections,\n ColorPickerTexts,\n ColorPickerVariant,\n} from './color-picker.types';\nimport { ColorPickerSpectrumComponent } from './sections/spectrum-canvas.component';\nimport { ColorPickerSwatchGridComponent } from './sections/swatch-grid.component';\n\nconst HEX_REGEX = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;\n\nconst DEFAULT_PRESET_COLORS: string[] = [\n '#ffffff', // white\n '#000000', // black\n '#929292', // gray\n '#ffea00', // yellow\n '#fff9ab', // light yellow\n '#0c5dbc', // blue\n '#6aa7f0', // light blue\n '#ff0000', // red\n '#ff95a2', // pink\n '#ff9f00', // orange\n '#417505', // dark green\n '#7ed321', // light green\n '#7300d9', // purple\n '#d4a4ff', // lilac\n '#50e3c2', // turquoise\n];\n\nconst DEFAULT_TEXTS: Required<ColorPickerTexts> = {\n swatchesLabel: 'Colores',\n customColorsLabel: 'Colores personalizados',\n hexLabel: 'HEX',\n contrastLabel: 'Contraste',\n contrastSampleText: 'Aa',\n contrastSampleLabel: 'Texto sobre fondo',\n contrastLowLabel: 'Bajo',\n invalidHexError: 'Hexadecimal inválido',\n requiredError: 'Este color es requerido',\n eyedropperLabel: 'Selecciona un color de la pantalla',\n addCustomColorLabel: 'Agregar color actual a colores personalizados',\n removeCustomColorLabel: 'Remover color de colores personalizados',\n openPickerLabel: 'Abrir selector de color',\n spectrumLabel: 'Saturación y brillo',\n hueLabel: 'Matiz',\n dialogLabel: 'Selector de color',\n};\n\nconst DEFAULT_SECTIONS: Required<ColorPickerSections> = {\n swatches: true,\n customColors: true,\n spectrum: true,\n hue: true,\n hex: true,\n eyedropper: true,\n contrast: true,\n};\n\ninterface EyeDropperLike {\n open(): Promise<{ sRGBHex: string }>;\n}\n\n/**\n * @component ColorPickerComponent\n * @description\n * Configurable color picker of the Tekus Design System. Renders a trigger\n * (`input` variant with editable HEX, or compact `swatch` variant) that opens\n * a PrimeNG `p-popover` composed of independently toggleable sections:\n * predefined swatches, custom colors, saturation/brightness spectrum, hue bar,\n * HEX field with EyeDropper support, WCAG contrast preview and a\n * Cancel/Accept action bar with temporary selection state.\n * Implements `ControlValueAccessor` for Reactive Forms integration.\n *\n * @usage\n * ```html\n * <tk-color-picker\n * label=\"Color\"\n * [(value)]=\"color\"\n * [contrastColor]=\"'#ffffff'\"\n * (colorChange)=\"onColor($event)\">\n * </tk-color-picker>\n * ```\n */\n@Component({\n selector: 'tk-color-picker',\n imports: [\n ButtonModule,\n InputTextModule,\n MessageModule,\n PopoverModule,\n ButtonComponent,\n IconComponent,\n InputTextComponent,\n ColorPickerSpectrumComponent,\n ColorPickerSwatchGridComponent,\n ],\n templateUrl: './color-picker.component.html',\n styleUrl: './color-picker.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColorPickerComponent implements ControlValueAccessor {\n readonly ngControl = inject(NgControl, { self: true, optional: true });\n private readonly destroyRef = inject(DestroyRef);\n private readonly el = inject(ElementRef);\n\n private readonly init = (() => {\n if (this.ngControl) {\n this.ngControl.valueAccessor = this;\n }\n })();\n\n /**\n * @property {ColorPickerVariant} variant\n * @description\n * Trigger appearance: `input` shows swatch + editable HEX + chevron,\n * `swatch` shows only swatch + chevron.\n * @default `'input'`\n */\n variant = input<ColorPickerVariant>('input');\n\n /**\n * @property {string} label\n * @description\n * Label displayed above the trigger.\n * @default `''`\n */\n label = input<string>('');\n\n /**\n * @property {string} hint\n * @description\n * Hint text displayed below the trigger (hidden while an error is shown).\n * @default `''`\n */\n hint = input<string>('');\n\n /**\n * @property {boolean} disabled\n * @description\n * Disables the trigger and the popover. Also controlled by Reactive Forms\n * via `setDisabledState`.\n * @default `false`\n */\n disabled = input<boolean>(false);\n\n /**\n * @property {boolean} required\n * @description\n * When `true`, an empty HEX field shows the required error on blur.\n * @default `false`\n */\n required = input<boolean>(false);\n\n /**\n * @property {ColorPickerSections} sections\n * @description\n * Enables/disables each popover section. Missing flags default to `true`.\n * Disabling `actionBar` switches the picker to live mode (every valid\n * change is emitted immediately).\n * @default `{}` (all sections enabled)\n */\n sections = input<ColorPickerSections>({});\n\n /**\n * @property {string[]} presetColors\n * @description\n * Colors of the predefined palette section.\n * @default Design System base palette\n */\n presetColors = input<string[]>(DEFAULT_PRESET_COLORS);\n\n /**\n * @property {string | null} contrastColor\n * @description\n * Optional override of the text color used for the WCAG contrast pair.\n * When `null` (default) the text color is resolved automatically from the\n * picked background luminance (ITU-R BT.601): black over light colors,\n * white over dark ones.\n * @default `null`\n */\n contrastColor = input<string | null>(null);\n\n /**\n * @property {number} maxCustomColors\n * @description\n * Maximum number of custom color slots. Once the list is at capacity, the\n * oldest slot is replaced using a circular buffer — the \"+\" button stays\n * visible at all times.\n * @default `18`\n */\n maxCustomColors = input<number>(18);\n\n /**\n * @property {'top' | 'bottom'} placement\n * @description\n * Preferred position of the popover relative to the trigger.\n * @default `'bottom'`\n */\n placement = input<'top' | 'bottom'>('bottom');\n\n /**\n * @property {string} errorMessage\n * @description\n * External error message that overrides the internal validation messages.\n * @default `''`\n */\n errorMessage = input<string>('');\n\n /**\n * @property {ColorPickerTexts} texts\n * @description\n * UI texts (section labels, buttons, errors). Defaults are in English so\n * consumers can localize with their own i18n solution.\n * @default `{}` (English defaults)\n */\n texts = input<ColorPickerTexts>({});\n\n /**\n * @property {ModelSignal<string>} value\n * @description\n * Confirmed color as a normalized lowercase 6-digit hex with `#`.\n * Two-way bindable.\n * @default `''`\n */\n value = model<string>('');\n\n /**\n * @property {ModelSignal<string[]>} customColors\n * @description\n * User-saved custom colors. Two-way bindable so the consumer decides\n * where to persist them.\n * @default `[]`\n */\n customColors = model<string[]>([]);\n\n /**\n * @event colorChange\n * @description\n * Emits the confirmed background hex color: on Accept (action bar mode) or\n * on every valid change (live mode / trigger HEX edit while closed). Never\n * emits invalid values, on hydration, or while disabled.\n */\n colorChange = output<string>();\n\n /**\n * @event textColorChange\n * @description\n * Emits together with `colorChange`: the ideal text color over the\n * confirmed background (`#000000` on light colors, `#ffffff` on dark ones,\n * or the `contrastColor` override when provided).\n */\n textColorChange = output<string>();\n\n /**\n * @event validChange\n * @description\n * Emits only when the validity of the HEX value changes.\n */\n validChange = output<boolean>();\n\n /**\n * @event opened\n * @description\n * Emits when the picker popover opens.\n */\n opened = output<void>();\n\n /**\n * @event closed\n * @description\n * Emits when the popover closes, with the close reason\n * (`accept` confirmed, `cancel` discarded/restored).\n */\n closed = output<ColorPickerCloseReason>();\n\n popover = viewChild<Popover>('op');\n private swatchBtnRef = viewChild('swatchBtn', { read: ElementRef });\n private inputTriggerRef = viewChild('inputTrigger', { read: ElementRef });\n private panelHexInput = viewChild('panelHexInput', { read: ElementRef });\n\n /**\n * Internal FormControl handed to the `tk-input-text` trigger so the\n * disabled state propagates through the Design System input.\n */\n protected readonly triggerControl = new FormControl('');\n\n protected readonly isOpen = signal(false);\n protected readonly hue = signal(0);\n protected readonly saturation = signal(1);\n protected readonly brightness = signal(1);\n protected readonly draftHex = signal('');\n protected readonly displayHexNoHash = signal('');\n protected readonly isValid = signal(true);\n protected readonly errorType = signal<'invalid' | 'required'>('invalid');\n private readonly cvaDisabled = signal(false);\n\n protected readonly isDisabled = computed(() => this.disabled() || this.cvaDisabled());\n\n protected readonly resolvedSections = computed<Required<ColorPickerSections>>(() => ({\n ...DEFAULT_SECTIONS,\n ...this.sections(),\n }));\n\n protected readonly t = computed<Required<ColorPickerTexts>>(() => ({\n ...DEFAULT_TEXTS,\n ...this.texts(),\n }));\n\n /** Valid draft hex to paint swatches, or null → neutral fallback via CSS. */\n protected readonly swatchColor = computed(() => {\n const color = this.isOpen() ? this.draftHex() : this.value();\n return this.isValidHex(color) ? color : null;\n });\n\n /**\n * Text color of the contrast pair: the `contrastColor` override when valid,\n * otherwise resolved automatically from the draft background luminance.\n */\n protected readonly contrastTextColor = computed(() => {\n const override = this.contrastColor();\n if (override) {\n const norm = this.normalizeHex(override);\n if (this.isValidHex(norm)) {\n return norm;\n }\n }\n const bg = this.draftHex();\n return getContrastTextColor(this.isValidHex(bg) ? bg : '#ffffff');\n });\n\n protected readonly contrastResult = computed<ContrastResult | null>(() => {\n const bg = this.draftHex();\n if (!this.isValidHex(bg)) {\n return null;\n }\n return getContrastResult(bg, this.contrastTextColor());\n });\n\n protected readonly showContrast = computed(\n () => this.resolvedSections().contrast && this.contrastResult() !== null,\n );\n\n protected readonly eyeDropperSupported =\n typeof globalThis !== 'undefined' && 'EyeDropper' in globalThis;\n\n protected readonly showEyedropper = computed(\n () =>\n this.resolvedSections().hex &&\n this.resolvedSections().eyedropper &&\n this.eyeDropperSupported,\n );\n\n protected readonly canAddCustom = computed(() => this.isValidHex(this.draftHex()));\n\n protected readonly errorText = computed(() => {\n if (this.errorMessage()) {\n return this.errorMessage();\n }\n return this.errorType() === 'required'\n ? this.t().requiredError\n : this.t().invalidHexError;\n });\n\n protected readonly fieldId: string;\n protected readonly panelFieldId: string;\n protected readonly errorId: string;\n\n private static instanceCount = 0;\n\n private originalValue = '';\n // Circular buffer pointer: tracks the oldest slot index to replace when customColors is at capacity.\n // Starts at 0 (correct for both empty lists and backend-loaded full arrays, assuming oldest-first order).\n // Limitation: not reset when customColors is rebound externally at runtime without destroying the component.\n private readonly customColorWritePtr = signal(0);\n private readonly hexInput$ = new Subject<string>();\n\n onChange: (value: string) => void = () => {};\n onTouched: () => void = () => {};\n\n constructor() {\n ColorPickerComponent.instanceCount++;\n this.fieldId = `tk-color-picker-${ColorPickerComponent.instanceCount}`;\n this.panelFieldId = `${this.fieldId}-panel`;\n this.errorId = `${this.fieldId}-error`;\n\n effect(() => {\n const incoming = this.value();\n untracked(() => this.syncFromValue(incoming));\n });\n\n effect(() => {\n if (this.isDisabled() && this.isOpen()) {\n this.popover()?.hide();\n }\n });\n\n effect(() => {\n if (this.isDisabled()) {\n this.triggerControl.disable({ emitEvent: false });\n } else {\n this.triggerControl.enable({ emitEvent: false });\n }\n });\n\n // Sync triggerControl validity so tk-input-text shows errors natively.\n effect(() => {\n const valid = this.isValid();\n untracked(() => {\n if (valid) {\n this.triggerControl.setErrors(null);\n } else {\n this.triggerControl.setErrors({ hex: true });\n }\n });\n });\n\n this.hexInput$\n .pipe(debounceTime(200), takeUntilDestroyed(this.destroyRef))\n .subscribe((v) => this.processHexInput(v, false));\n }\n\n // ── ControlValueAccessor ────────────────────────────────────────────────\n\n /**\n * @method writeValue\n * @description Hydrates the picker from the form model without emitting.\n */\n writeValue(value: string): void {\n this.value.set(value || '');\n }\n\n /**\n * @method registerOnChange\n * @description Registers the Reactive Forms change callback.\n */\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n /**\n * @method registerOnTouched\n * @description Registers the Reactive Forms touched callback.\n */\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n /**\n * @method setDisabledState\n * @description Syncs the disabled state from Reactive Forms.\n */\n setDisabledState(isDisabled: boolean): void {\n this.cvaDisabled.set(isDisabled);\n }\n\n // ── Popover lifecycle ───────────────────────────────────────────────────\n\n protected onTriggerClick(event: Event): void {\n if (this.isDisabled()) {\n return;\n }\n this.popover()?.toggle(event as MouseEvent, this.getAnchorEl() ?? this.el.nativeElement);\n }\n\n /** Returns the precise anchor element for popover positioning.\n * For the input variant we target the `p-floatlabel` child instead of the\n * full `tk-input-text` host. The host includes a bottom section with\n * `min-height: 1.25rem + margin-top: 0.25rem` that is invisible when empty\n * but would push the panel ~1.5rem below the visible input field.\n *\n * Coupling note: `p-floatlabel` is PrimeNG's float-label host element selector.\n * If PrimeNG renames it in a future major, the `?? host` fallback keeps\n * positioning functional (panel opens ~1.5rem lower than ideal). */\n private getAnchorEl(): HTMLElement | undefined {\n if (this.variant() === 'swatch') {\n return this.swatchBtnRef()?.nativeElement;\n }\n const host = this.inputTriggerRef()?.nativeElement as HTMLElement | undefined;\n return (host?.querySelector('p-floatlabel') as HTMLElement | null) ?? host;\n }\n\n protected onPopoverShow(): void {\n this.isOpen.set(true);\n this.originalValue = this.value();\n // Sync draft from current value\n this.syncFromValue(this.value());\n this.opened.emit();\n // PrimeNG's absolutePosition flips the panel to \"above\" when it doesn't fit\n // below, but clamps to scrollTop when there's no space above either — panel\n // ends up covering the trigger. We override the position after PrimeNG runs.\n setTimeout(() => this.fixPanelPosition(), 0);\n }\n\n private fixPanelPosition(): void {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const container = (this.popover() as any)?.container as HTMLElement | undefined;\n if (!container) return;\n\n const anchor = this.getAnchorEl();\n if (!anchor) return;\n\n const anchorRect: DOMRect = anchor.getBoundingClientRect();\n const panelH = container.offsetHeight;\n const panelW = container.offsetWidth;\n const vH = window.innerHeight;\n const vW = window.innerWidth;\n const scrollY = window.scrollY;\n const scrollX = window.scrollX;\n\n const spaceBelow = vH - anchorRect.bottom;\n const spaceAbove = anchorRect.top;\n\n let top: number;\n if (spaceBelow >= panelH) {\n // Preferred: open below trigger\n top = anchorRect.bottom + scrollY;\n } else if (spaceAbove >= panelH) {\n // Fallback: open above trigger\n top = anchorRect.top + scrollY - panelH;\n } else {\n // Neither side fits: prefer below (scroll context), clamp to viewport edges.\n // Anchor to trigger bottom and push up only as much as needed so the panel\n // stays close to the trigger rather than jumping to the top of the page.\n const idealBelow = anchorRect.bottom + scrollY;\n const maxTop = scrollY + vH - panelH - 8;\n const minTop = scrollY + 8;\n top = Math.max(minTop, Math.min(idealBelow, maxTop));\n }\n\n let left = anchorRect.left + scrollX;\n if (left + panelW > scrollX + vW - 8) {\n left = scrollX + vW - panelW - 8;\n }\n left = Math.max(scrollX + 8, left);\n\n // Zero out PrimeNG's arrow margin so the panel sits flush with the trigger.\n container.style.margin = '0';\n container.style.top = `${top}px`;\n container.style.insetInlineStart = `${left}px`;\n }\n\n protected onPopoverHide(): void {\n this.isOpen.set(false);\n this.onTouched();\n this.triggerControl.markAsTouched();\n this.closed.emit('accept');\n }\n\n protected onPanelEnter(event: Event): void {\n this.confirmAndClose();\n (event as KeyboardEvent).preventDefault();\n event.stopPropagation();\n }\n\n private confirmAndClose(): void {\n if (!this.isValidHex(this.draftHex())) {\n return;\n }\n this.commitDraft();\n this.popover()?.hide();\n }\n\n\n // ── Draft state updates ─────────────────────────────────────────────────\n\n protected onSpectrumChange(change: { saturation: number; brightness: number }): void {\n this.saturation.set(change.saturation);\n this.brightness.set(change.brightness);\n this.applyHsv();\n }\n\n protected onHueChange(event: Event): void {\n this.hue.set(Number((event.target as HTMLInputElement).value));\n this.applyHsv();\n }\n\n protected onSwatchPick(color: string): void {\n const hex = this.normalizeHex(color);\n if (this.isValidHex(hex)) {\n this.setFromHex(hex, true);\n }\n }\n\n protected addCustomColor(): void {\n const hex = this.draftHex();\n if (!this.isValidHex(hex)) return;\n const list = this.customColors();\n if (list.some((c) => c.toLowerCase() === hex)) return;\n if (list.length >= this.maxCustomColors()) {\n // Circular buffer: replace the oldest slot (writePtr) and advance the\n // pointer. Only one cell changes per add — no grid shift.\n // Both signal mutations are kept outside update() to avoid side effects\n // inside a state-transition callback.\n const ptr = this.customColorWritePtr();\n const next = [...list];\n next[ptr] = hex;\n this.customColors.set(next);\n this.customColorWritePtr.set((ptr + 1) % this.maxCustomColors());\n } else {\n this.customColors.update((l) => [...l, hex]);\n }\n }\n\n protected isCustomColorSelected(): boolean {\n const selected = this.draftHex().toLowerCase();\n return this.customColors().some((c) => c.toLowerCase() === selected);\n }\n\n protected removeCustomColor(): void {\n const hex = this.draftHex().toLowerCase();\n this.customColors.update((list) => list.filter((c) => c.toLowerCase() !== hex));\n }\n\n protected openEyeDropper(): void {\n const ctor = (globalThis as unknown as { EyeDropper?: new () => EyeDropperLike })\n .EyeDropper;\n if (!ctor) {\n return;\n }\n new ctor()\n .open()\n .then((result) => {\n const hex = this.normalizeHex(result.sRGBHex);\n if (this.isValidHex(hex)) {\n this.setFromHex(hex, true);\n // Focus HEX input so Enter closes modal without opening eyedropper again\n setTimeout(() => {\n const inputEl = this.panelHexInput();\n if (inputEl) {\n const hexInput = inputEl.nativeElement.querySelector('input');\n if (hexInput) {\n hexInput.focus();\n }\n }\n }, 0);\n }\n })\n .catch(() => {\n // The user dismissed the eyedropper — nothing to do.\n });\n }\n\n // ── HEX input pipeline ──────────────────────────────────────────────────\n\n protected onHexInput(clean: string): void {\n this.displayHexNoHash.set(clean);\n this.hexInput$.next('#' + clean);\n }\n\n /**\n * Sanitizes typing inside a `tk-input-text` hex field (trigger or popover):\n * strips non-hex characters at the DOM level (keeping the caret behavior of\n * the native input) and feeds the shared validation pipeline.\n */\n protected onHexNativeInput(event: Event): void {\n const target = event.target as HTMLInputElement | null;\n if (!target || target.tagName !== 'INPUT') {\n return;\n }\n const clean = target.value.replace(/[^A-Fa-f0-9]/g, '').toUpperCase().slice(0, 6);\n if (clean !== target.value) {\n target.value = clean;\n }\n this.onHexInput(clean);\n }\n\n /** Blocks non-hex keypresses and enforces 6-char max before char enters the DOM. Enter confirms selection. */\n protected onHexKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n\n const hex = this.draftHex();\n if (this.isValidHex(hex)) {\n this.commitDraft();\n }\n\n // Close popover\n const pop = this.popover();\n if (pop) {\n pop.hide();\n }\n return;\n }\n\n if (event.ctrlKey || event.metaKey || event.altKey) {\n return;\n }\n const navigationKeys = [\n 'Backspace', 'Delete', 'Tab',\n 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown',\n 'Home', 'End',\n ];\n if (navigationKeys.includes(event.key)) {\n return;\n }\n if (!/^[A-Fa-f0-9]$/.test(event.key)) {\n event.preventDefault();\n return;\n }\n // Enforce 6-char max: block if no selection to replace and already full\n const target = event.target as HTMLInputElement | null;\n if (target && target.tagName === 'INPUT') {\n const selectionLength = (target.selectionEnd ?? 0) - (target.selectionStart ?? 0);\n if (target.value.length >= 6 && selectionLength === 0) {\n event.preventDefault();\n }\n }\n }\n\n /** Strips non-hex chars from pasted text before it reaches the input model. */\n protected onHexPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const text = event.clipboardData?.getData('text/plain') ?? '';\n const clean = text.replace(/[^A-Fa-f0-9]/g, '').toUpperCase();\n const target = event.target as HTMLInputElement | null;\n if (!target || target.tagName !== 'INPUT') {\n return;\n }\n const start = target.selectionStart ?? 0;\n const end = target.selectionEnd ?? 0;\n const merged = (target.value.slice(0, start) + clean + target.value.slice(end)).slice(0, 6);\n target.value = merged;\n this.onHexInput(merged);\n }\n\n protected onHexBlur(): void {\n this.processHexInput('#' + this.displayHexNoHash(), true);\n this.onTouched();\n }\n\n private processHexInput(raw: string, forceNormalize: boolean): void {\n const hex = this.parseHex(raw);\n if (hex === null) {\n return;\n }\n if (this.isValidHex(hex)) {\n this.applyValidHex(hex, forceNormalize);\n } else {\n this.applyInvalidHex(hex.slice(1), forceNormalize);\n }\n }\n\n private parseHex(raw: string): string | null {\n const text = raw?.trim() ?? '';\n const body = (text.startsWith('#') ? text.slice(1) : text).trim();\n if (body.length === 0) {\n if (this.required()) {\n this.errorType.set('required');\n this.setValid(false);\n } else {\n this.setValid(true);\n }\n return null;\n }\n return ('#' + body).toLowerCase();\n }\n\n private applyValidHex(hex: string, forceNormalize: boolean): void {\n if (hex.length === 4 && !forceNormalize) {\n this.setValid(true);\n return;\n }\n const norm = this.normalizeHex(hex);\n this.setValid(true);\n if (norm !== this.draftHex()) {\n this.setFromHex(norm, true);\n } else {\n this.displayHexNoHash.set(norm.slice(1).toUpperCase());\n }\n }\n\n private applyInvalidHex(rawText: string, forceNormalize: boolean): void {\n this.errorType.set('invalid');\n const partial =\n !forceNormalize && /^[A-Fa-f0-9]*$/.test(rawText) && rawText.length <= 6;\n this.setValid(partial);\n }\n\n private setValid(value: boolean): void {\n if (this.isValid() === value) {\n return;\n }\n this.isValid.set(value);\n this.validChange.emit(value);\n }\n\n // ── Internal state helpers ──────────────────────────────────────────────\n\n private syncFromValue(incoming: string, restoring = false): void {\n if (!incoming) {\n if (restoring) {\n this.draftHex.set('');\n this.displayHexNoHash.set('');\n }\n // Validate empty color (fails if required)\n this.parseHex('');\n return;\n }\n const hex = this.normalizeHex(incoming);\n if (this.isValidHex(hex) && hex !== this.draftHex()) {\n this.setFromHex(hex, false);\n }\n }\n\n private setFromHex(hex: string, interactive: boolean): void {\n this.draftHex.set(hex);\n this.displayHexNoHash.set(hex.slice(1).toUpperCase());\n this.setValid(true);\n const hsv = this.hexToHsv(hex);\n this.hue.set(hsv.h);\n this.saturation.set(hsv.s);\n this.brightness.set(hsv.v);\n if (interactive) {\n this.maybeCommit();\n }\n }\n\n private applyHsv(): void {\n const hex = this.hsvToHex(this.hue(), this.saturation(), this.brightness());\n this.draftHex.set(hex);\n this.displayHexNoHash.set(hex.slice(1).toUpperCase());\n this.setValid(true);\n this.maybeCommit();\n }\n\n /**\n * Commits the draft color immediately (live mode).\n */\n private maybeCommit(): void {\n this.commitDraft();\n }\n\n private commitDraft(): void {\n const hex = this.draftHex();\n if (!this.isValidHex(hex) || this.isDisabled()) {\n return;\n }\n this.value.set(hex);\n this.onChange(hex);\n this.colorChange.emit(hex);\n this.textColorChange.emit(this.contrastTextColor());\n }\n\n // ── Color math ──────────────────────────────────────────────────────────\n\n private normalizeHex(value: string): string {\n if (!value?.trim()) {\n return '';\n }\n let v = value.trim();\n v = v.startsWith('#') ? v : '#' + v;\n if (/^#[A-Fa-f0-9]{3}$/.test(v)) {\n v = '#' + v[1] + v[1] + v[2] + v[2] + v[3] + v[3];\n }\n return v.toLowerCase();\n }\n\n private isValidHex(value: string): boolean {\n return HEX_REGEX.test(value);\n }\n\n private hexToHsv(hex: string): { h: number; s: number; v: number } {\n const r = Number.parseInt(hex.slice(1, 3), 16) / 255;\n const g = Number.parseInt(hex.slice(3, 5), 16) / 255;\n const b = Number.parseInt(hex.slice(5, 7), 16) / 255;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const delta = max - min;\n let h = 0;\n if (delta !== 0) {\n if (max === r) {\n h = ((g - b) / delta) % 6;\n } else if (max === g) {\n h = (b - r) / delta + 2;\n } else {\n h = (r - g) / delta + 4;\n }\n h = Math.round(h * 60);\n if (h < 0) {\n h += 360;\n }\n }\n return { h, s: max === 0 ? 0 : delta / max, v: max };\n }\n\n private hsvToHex(h: number, s: number, v: number): string {\n const c = v * s;\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n const m = v - c;\n let r = 0;\n let g = 0;\n let b = 0;\n if (h < 60) {\n r = c;\n g = x;\n } else if (h < 120) {\n r = x;\n g = c;\n } else if (h < 180) {\n g = c;\n b = x;\n } else if (h < 240) {\n g = x;\n b = c;\n } else if (h < 300) {\n r = x;\n b = c;\n } else {\n r = c;\n b = x;\n }\n const toHex = (n: number) =>\n Math.round((n + m) * 255)\n .toString(16)\n .padStart(2, '0');\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`;\n }\n}\n","<div\n class=\"tk-color-picker\"\n [class.tk-color-picker--disabled]=\"isDisabled()\"\n [class.tk-color-picker--open]=\"isOpen()\"\n [class.tk-color-picker--invalid]=\"!isValid()\">\n @if (variant() === 'swatch') {\n @if (label()) {\n <span class=\"tk-color-picker__label\">{{ label() }}</span>\n }\n <button\n #swatchBtn\n type=\"button\"\n class=\"tk-color-picker__trigger tk-color-picker__trigger--swatch\"\n [disabled]=\"isDisabled()\"\n aria-haspopup=\"dialog\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-label]=\"t().openPickerLabel + (label() ? ': ' + label() : '')\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"onTriggerClick($event)\">\n <span\n class=\"tk-color-picker__swatch\"\n [class.tk-color-picker__swatch--fallback]=\"!swatchColor()\"\n [style.background-color]=\"swatchColor()\"\n aria-hidden=\"true\"></span>\n <tk-icon\n class=\"tk-color-picker__chevron\"\n [class.tk-color-picker__chevron--open]=\"isOpen()\"\n icon=\"chevron-down\"\n styleIcon=\"regular\"\n size=\"xs\"></tk-icon>\n </button>\n } @else {\n <div\n #inputTrigger\n class=\"tk-color-picker__trigger-input\"\n [class.tk-color-picker__trigger-input--invalid]=\"!isValid()\">\n @if (label()) {\n <label\n class=\"tk-color-picker__input-label\"\n [for]=\"fieldId\"\n [title]=\"label()\"\n >{{ label() }}</label\n >\n }\n <div class=\"tk-color-picker__input-wrap\">\n <button\n type=\"button\"\n class=\"tk-color-picker__input-swatch\"\n [class.tk-color-picker__input-swatch--fallback]=\"!swatchColor()\"\n [style.background-color]=\"swatchColor() ?? null\"\n [disabled]=\"isDisabled()\"\n [attr.aria-label]=\"t().openPickerLabel\"\n (mousedown)=\"$event.preventDefault()\"\n (click)=\"onTriggerClick($event)\"></button>\n <span class=\"tk-color-picker__input-prefix\" aria-hidden=\"true\">#</span>\n <input\n pInputText\n [id]=\"fieldId\"\n [value]=\"displayHexNoHash()\"\n [disabled]=\"isDisabled()\"\n [class.ng-invalid]=\"triggerControl.invalid\"\n [class.ng-dirty]=\"triggerControl.dirty\"\n [class.ng-touched]=\"triggerControl.touched\"\n [attr.aria-describedby]=\"!isValid() ? errorId : null\"\n [attr.aria-invalid]=\"!isValid()\"\n autocomplete=\"off\"\n (input)=\"onHexNativeInput($event)\"\n (keydown)=\"onHexKeydown($event)\"\n (paste)=\"onHexPaste($event)\"\n (blur)=\"onHexBlur()\" />\n </div>\n <div class=\"tk-color-picker__input-bottom\">\n @if (!isValid()) {\n <p-message\n severity=\"error\"\n size=\"small\"\n variant=\"simple\"\n [id]=\"errorId\"\n >{{ errorText() }}</p-message\n >\n } @else if (hint()) {\n <p-message severity=\"secondary\" size=\"small\" variant=\"simple\">{{\n hint()\n }}</p-message>\n }\n </div>\n </div>\n }\n\n @if (variant() === 'swatch') {\n @if (!isValid()) {\n <span\n [id]=\"errorId\"\n class=\"tk-color-picker__error\"\n role=\"alert\"\n aria-live=\"polite\">\n {{ errorText() }}\n </span>\n } @else if (hint()) {\n <span class=\"tk-color-picker__hint\">{{ hint() }}</span>\n }\n }\n</div>\n\n<p-popover\n #op\n [styleClass]=\"\n 'tk-color-picker-popover' +\n (variant() === 'input' ? ' tk-color-picker-popover--input' : '')\n \"\n position=\"bottom\"\n appendTo=\"body\"\n (onShow)=\"onPopoverShow()\"\n (onHide)=\"onPopoverHide()\">\n <div\n class=\"tk-color-picker__panel\"\n role=\"group\"\n [attr.aria-label]=\"t().dialogLabel\"\n tabindex=\"-1\"\n autofocus\n (keydown.enter)=\"onPanelEnter($event)\">\n @if (resolvedSections().swatches && presetColors().length) {\n <section class=\"tk-color-picker__section\">\n <span class=\"tk-color-picker__section-label\">{{\n t().swatchesLabel\n }}</span>\n <tk-color-picker-swatch-grid\n [colors]=\"presetColors()\"\n [selected]=\"draftHex()\"\n [ariaLabel]=\"t().swatchesLabel\"\n (picked)=\"onSwatchPick($event)\" />\n </section>\n }\n\n @if (resolvedSections().customColors) {\n <section class=\"tk-color-picker__section\">\n <span class=\"tk-color-picker__section-label\">{{\n t().customColorsLabel\n }}</span>\n <tk-color-picker-swatch-grid\n [colors]=\"customColors()\"\n [selected]=\"draftHex()\"\n [ariaLabel]=\"t().customColorsLabel\"\n (picked)=\"onSwatchPick($event)\">\n @if (canAddCustom()) {\n <button\n type=\"button\"\n class=\"tk-color-picker__add-custom\"\n [attr.aria-label]=\"t().addCustomColorLabel\"\n (click)=\"addCustomColor()\">\n <tk-icon icon=\"plus\" styleIcon=\"regular\" size=\"xs\"></tk-icon>\n </button>\n }\n @if (isCustomColorSelected()) {\n <button\n type=\"button\"\n class=\"tk-color-picker__remove-custom\"\n [attr.aria-label]=\"t().removeCustomColorLabel\"\n (click)=\"removeCustomColor()\">\n −\n </button>\n }\n </tk-color-picker-swatch-grid>\n </section>\n }\n\n @if (\n resolvedSections().customColors &&\n (resolvedSections().spectrum ||\n resolvedSections().hue ||\n resolvedSections().hex)\n ) {\n <div class=\"tk-color-picker__divider\" role=\"separator\"></div>\n }\n\n @if (resolvedSections().spectrum) {\n <tk-color-picker-spectrum\n [hue]=\"hue()\"\n [saturation]=\"saturation()\"\n [brightness]=\"brightness()\"\n [color]=\"swatchColor() ?? ''\"\n [ariaLabel]=\"t().spectrumLabel\"\n (changed)=\"onSpectrumChange($event)\" />\n }\n\n @if (resolvedSections().hue) {\n <input\n class=\"tk-color-picker__hue\"\n type=\"range\"\n min=\"0\"\n max=\"360\"\n [value]=\"hue()\"\n [attr.aria-label]=\"t().hueLabel\"\n (input)=\"onHueChange($event)\" />\n }\n\n @if (\n (resolvedSections().spectrum || resolvedSections().hue) &&\n resolvedSections().hex\n ) {\n <div class=\"tk-color-picker__divider\" role=\"separator\"></div>\n }\n\n @if (resolvedSections().hex) {\n <section class=\"tk-color-picker__section tk-color-picker__hex-row\">\n <span\n class=\"tk-color-picker__swatch tk-color-picker__swatch--large\"\n [class.tk-color-picker__swatch--fallback]=\"!swatchColor()\"\n [style.background-color]=\"swatchColor()\"\n aria-hidden=\"true\"></span>\n <tk-input-text\n #panelHexInput\n class=\"tk-color-picker__panel-hex\"\n [class.tk-color-picker__trigger-input--invalid]=\"!isValid()\"\n [label]=\"t().hexLabel\"\n [id]=\"panelFieldId\"\n [value]=\"displayHexNoHash()\"\n prefixText=\"#\"\n (input)=\"onHexNativeInput($event)\"\n (keydown)=\"onHexKeydown($event)\"\n (paste)=\"onHexPaste($event)\"\n (focusout)=\"onHexBlur()\" />\n @if (showEyedropper()) {\n <tk-button\n class=\"tk-color-picker__eyedropper\"\n tabindex=\"-1\"\n severity=\"secondary\"\n variant=\"outlined\"\n icon=\"eye-dropper\"\n styleIcon=\"regular\"\n [attr.aria-label]=\"t().eyedropperLabel\"\n (clicked)=\"openEyeDropper()\">\n </tk-button>\n }\n </section>\n }\n\n @if (resolvedSections().hex && showContrast()) {\n <div class=\"tk-color-picker__divider\" role=\"separator\"></div>\n }\n\n @if (showContrast()) {\n <section class=\"tk-color-picker__section tk-color-picker__contrast\">\n <span class=\"tk-color-picker__section-label\">{{\n t().contrastLabel\n }}</span>\n <div class=\"tk-color-picker__contrast-row\">\n <span\n class=\"tk-color-picker__contrast-pill\"\n [style.background-color]=\"draftHex()\"\n [attr.aria-label]=\"t().contrastSampleLabel\">\n <span\n class=\"tk-color-picker__contrast-sample\"\n [style.color]=\"contrastTextColor()\">\n {{ t().contrastSampleText }}\n </span>\n </span>\n <div class=\"tk-color-picker__contrast-info\">\n <span class=\"tk-color-picker__contrast-label\">{{\n t().contrastSampleLabel\n }}</span>\n <span class=\"tk-color-picker__contrast-ratio\"\n >{{ contrastResult()!.ratio }}:1</span\n >\n </div>\n @switch (contrastResult()!.level) {\n @case ('AAA') {\n <span\n class=\"tk-color-picker__contrast-badge tk-color-picker__contrast-badge--aaa\"\n >AAA</span\n >\n }\n @case ('AA') {\n <span\n class=\"tk-color-picker__contrast-badge tk-color-picker__contrast-badge--aa\"\n >AA</span\n >\n }\n @case ('fail') {\n <span\n class=\"tk-color-picker__contrast-badge tk-color-picker__contrast-badge--fail\">\n {{ t().contrastLowLabel }}\n </span>\n }\n }\n </div>\n </section>\n }\n </div>\n</p-popover>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|