{"version":3,"file":"ngx-com-components-timepicker.mjs","sources":["../../../projects/com/components/timepicker/timepicker.types.ts","../../../projects/com/components/timepicker/timepicker.variants.ts","../../../projects/com/components/timepicker/timepicker.component.ts","../../../projects/com/components/timepicker/index.ts","../../../projects/com/components/timepicker/ngx-com-components-timepicker.ts"],"sourcesContent":["/**\n * Types and interfaces for the TimePicker component.\n */\n\n/** Value type for the standalone time picker */\nexport interface ComTimeValue {\n  /** Hours (0-23, always stored in 24h format internally) */\n  hours: number;\n  /** Minutes (0-59) */\n  minutes: number;\n  /** Seconds (0-59) */\n  seconds: number;\n}\n\n/** Creates a ComTimeValue */\nexport function createTimeValue(\n  hours: number = 0,\n  minutes: number = 0,\n  seconds: number = 0,\n): ComTimeValue {\n  return { hours, minutes, seconds };\n}\n\n/**\n * Compares two ComTimeValue objects.\n * @returns negative if a < b, 0 if equal, positive if a > b\n */\nexport function compareTime(a: ComTimeValue, b: ComTimeValue): number {\n  const diff = a.hours * 3600 + a.minutes * 60 + a.seconds - (b.hours * 3600 + b.minutes * 60 + b.seconds);\n  return diff;\n}\n\n/** Generates a unique ID for time picker instances */\nlet timePickerIdCounter = 0;\nexport function generateTimePickerId(): string {\n  return `com-time-picker-${timePickerIdCounter++}`;\n}\n\n/** Size variants for time picker */\nexport type TimePickerSize = 'sm' | 'default' | 'lg';\n\n/** Visual variant */\nexport type TimePickerVariant = 'standalone' | 'embedded' | 'naked';\n\n/** Validation state */\nexport type TimePickerState = 'default' | 'error' | 'success';\n\n/** Period for 12-hour format */\nexport type TimePeriod = 'AM' | 'PM';\n\n/** Segment type */\nexport type TimeSegment = 'hours' | 'minutes' | 'seconds';\n","import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport type { TimePickerSize, TimePickerVariant, TimePickerState } from './timepicker.types';\n\n/**\n * CVA variants for the time picker container.\n *\n * @tokens `--color-input-background`, `--color-input-foreground`, `--color-input-border`,\n *         `--color-ring`, `--color-warn`, `--color-success`, `--radius-input`\n */\nexport const timepickerContainerVariants: (props?: {\n  variant?: TimePickerVariant;\n  size?: TimePickerSize;\n  state?: TimePickerState;\n}) => string = cva(\n  [\n    'inline-flex',\n    'items-center',\n    'gap-1',\n    'rounded-input',\n    'transition-colors',\n    'duration-normal',\n  ],\n  {\n    variants: {\n      variant: {\n        standalone: [\n          'border',\n          'border-input-border',\n          'bg-input-background',\n          'text-input-foreground',\n          'focus-within:outline-1',\n          'focus-within:outline-offset-2',\n          'focus-within:outline-ring',\n        ],\n        embedded: [\n          'border-transparent',\n          'bg-transparent',\n          'text-foreground',\n        ],\n        naked: [\n          'border-transparent',\n          'bg-transparent',\n          'shadow-none',\n          'focus-within:outline-none',\n          'rounded-none',\n        ],\n      },\n      size: {\n        sm: ['h-8', 'px-2', 'text-xs', 'gap-0.5'],\n        default: ['h-10', 'px-3', 'text-sm', 'gap-1'],\n        lg: ['h-12', 'px-4', 'text-base', 'gap-1.5'],\n      },\n      state: {\n        default: [],\n        error: [\n          'border-warn',\n          'focus-within:outline-warn',\n        ],\n        success: [\n          'border-success',\n          'focus-within:outline-success',\n        ],\n      },\n    },\n    compoundVariants: [\n      {\n        variant: 'embedded',\n        state: 'error',\n        class: [],\n      },\n      {\n        variant: 'embedded',\n        state: 'success',\n        class: [],\n      },\n      // Naked variant should not show ring (form-field provides focus styling)\n      {\n        variant: 'naked',\n        state: 'error',\n        class: ['border-transparent', 'focus-within:outline-none'],\n      },\n      {\n        variant: 'naked',\n        state: 'success',\n        class: ['border-transparent', 'focus-within:outline-none'],\n      },\n    ],\n    defaultVariants: {\n      variant: 'standalone',\n      size: 'default',\n      state: 'default',\n    },\n  },\n);\n\nexport type TimepickerContainerVariants = VariantProps<typeof timepickerContainerVariants>;\n\n/**\n * CVA variants for the disabled state of time picker.\n *\n * @tokens `--color-disabled`, `--color-disabled-foreground`\n */\nexport const timepickerDisabledVariants: () => string = cva([\n  'cursor-not-allowed',\n  'bg-disabled',\n  'text-disabled-foreground',\n  'pointer-events-none',\n]);\n\nexport type TimepickerDisabledVariants = VariantProps<typeof timepickerDisabledVariants>;\n\n/**\n * CVA variants for each time segment input.\n *\n * @tokens `--color-primary-subtle`, `--color-primary-subtle-foreground`, `--radius-interactive-sm`\n */\nexport const timepickerSegmentVariants: (props?: {\n  size?: TimePickerSize;\n}) => string = cva(\n  [\n    'bg-transparent',\n    'outline-none',\n    'text-center',\n    'font-mono',\n    'tabular-nums',\n    'select-all',\n    'focus-visible:bg-primary-subtle',\n    'focus-visible:text-primary-subtle-foreground',\n    'focus-visible:rounded-interactive-sm',\n  ],\n  {\n    variants: {\n      size: {\n        sm: ['w-5', 'text-xs'],\n        default: ['w-7', 'text-sm'],\n        lg: ['w-9', 'text-base'],\n      },\n    },\n    defaultVariants: {\n      size: 'default',\n    },\n  },\n);\n\nexport type TimepickerSegmentVariants = VariantProps<typeof timepickerSegmentVariants>;\n\n/**\n * CVA variants for the colon separator.\n *\n * @tokens `--color-muted-foreground`\n */\nexport const timepickerSeparatorVariants: (props?: {\n  size?: TimePickerSize;\n}) => string = cva(\n  [\n    'text-muted-foreground',\n    'select-none',\n    'font-mono',\n  ],\n  {\n    variants: {\n      size: {\n        sm: ['text-xs'],\n        default: ['text-sm'],\n        lg: ['text-base'],\n      },\n    },\n    defaultVariants: {\n      size: 'default',\n    },\n  },\n);\n\nexport type TimepickerSeparatorVariants = VariantProps<typeof timepickerSeparatorVariants>;\n\n/**\n * CVA variants for the AM/PM toggle button.\n *\n * @tokens `--color-muted`, `--color-muted-foreground`, `--color-muted-hover`, `--color-ring`,\n *         `--radius-control-sm`\n */\nexport const timepickerPeriodVariants: (props?: {\n  size?: TimePickerSize;\n}) => string = cva(\n  [\n    'inline-flex',\n    'items-center',\n    'justify-center',\n    'rounded-control-sm',\n    'font-medium',\n    'transition-colors',\n    'select-none',\n    'outline-none',\n    'bg-muted',\n    'text-muted-foreground',\n    'hover:bg-muted-hover',\n    'focus-visible:outline-1',\n    'focus-visible:outline-offset-2',\n    'focus-visible:outline-ring',\n  ],\n  {\n    variants: {\n      size: {\n        sm: ['h-5', 'px-1', 'text-xs', 'ml-0.5'],\n        default: ['h-6', 'px-1.5', 'text-xs', 'ml-1'],\n        lg: ['h-7', 'px-2', 'text-sm', 'ml-1.5'],\n      },\n    },\n    defaultVariants: {\n      size: 'default',\n    },\n  },\n);\n\nexport type TimepickerPeriodVariants = VariantProps<typeof timepickerPeriodVariants>;\n\n/**\n * CVA variants for the time section divider in datepicker panel.\n *\n * @tokens `--color-border-subtle`\n */\nexport const timepickerSectionVariants: (props?: {\n  size?: TimePickerSize;\n}) => string = cva(\n  [\n    'flex',\n    'items-center',\n    'justify-center',\n    'border-t',\n    'border-border-subtle',\n  ],\n  {\n    variants: {\n      size: {\n        sm: ['pt-2', 'mt-2'],\n        default: ['pt-3', 'mt-3'],\n        lg: ['pt-4', 'mt-4'],\n      },\n    },\n    defaultVariants: {\n      size: 'default',\n    },\n  },\n);\n\nexport type TimepickerSectionVariants = VariantProps<typeof timepickerSectionVariants>;\n\n/**\n * CVA variants for time labels in date range picker.\n *\n * @tokens `--color-muted-foreground`\n */\nexport const timepickerLabelVariants: (props?: {\n  size?: TimePickerSize;\n}) => string = cva(\n  [\n    'text-muted-foreground',\n    'font-medium',\n  ],\n  {\n    variants: {\n      size: {\n        sm: ['text-xs'],\n        default: ['text-xs'],\n        lg: ['text-sm'],\n      },\n    },\n    defaultVariants: {\n      size: 'default',\n    },\n  },\n);\n\nexport type TimepickerLabelVariants = VariantProps<typeof timepickerLabelVariants>;\n","import {\n  ChangeDetectionStrategy,\n  Component,\n  computed,\n  forwardRef,\n  inject,\n  input,\n  LOCALE_ID,\n  linkedSignal,\n  model,\n  output,\n  signal,\n  viewChild,\n} from '@angular/core';\nimport type {\n  ElementRef,\n  InputSignal,\n  ModelSignal,\n  OutputEmitterRef,\n  Signal,\n  WritableSignal,\n} from '@angular/core';\nimport { NgControl, FormGroupDirective, NgForm } from '@angular/forms';\nimport type { ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';\nimport { FormFieldControl } from 'ngx-com/components/form-field';\nimport { ErrorStateMatcher } from 'ngx-com/components/form-field';\nimport type { FormFieldAppearance } from 'ngx-com/components/form-field';\n\nimport { mergeClasses } from 'ngx-com/utils';\nimport {\n  timepickerContainerVariants,\n  timepickerDisabledVariants,\n  timepickerSegmentVariants,\n  timepickerSeparatorVariants,\n  timepickerPeriodVariants,\n} from './timepicker.variants';\nimport type {\n  ComTimeValue,\n  TimePickerSize,\n  TimePickerVariant,\n  TimePickerState,\n  TimePeriod,\n  TimeSegment,\n} from './timepicker.types';\nimport { compareTime, generateTimePickerId } from './timepicker.types';\n\n/**\n * Time picker component with segmented numeric input fields.\n * Supports standalone usage with ControlValueAccessor and embedded usage\n * within datepicker/date-range-picker panels.\n *\n * Visual layout: `[HH] : [MM] : [SS] [AM|PM]`\n *\n * @tokens `--color-input-background`, `--color-input-foreground`, `--color-input-border`,\n *         `--color-ring`, `--color-primary-subtle`, `--color-primary-subtle-foreground`,\n *         `--color-muted`, `--color-muted-foreground`, `--color-muted-hover`,\n *         `--color-disabled`, `--color-disabled-foreground`,\n *         `--color-warn`, `--color-success`, `--color-border`\n *\n * @example\n * ```html\n * <!-- Standalone with reactive forms -->\n * <com-time-picker formControlName=\"startTime\" />\n *\n * <!-- 12-hour format with seconds -->\n * <com-time-picker formControlName=\"alarm\" [use12HourFormat]=\"true\" [showSeconds]=\"true\" />\n *\n * <!-- 15-minute steps -->\n * <com-time-picker formControlName=\"meeting\" [minuteStep]=\"15\" />\n *\n * <!-- Embedded inside datepicker panel -->\n * <com-time-picker variant=\"embedded\" [value]=\"time\" (timeChange)=\"onTime($event)\" />\n * ```\n */\n@Component({\n  selector: 'com-time-picker',\n  exportAs: 'comTimePicker',\n  template: `\n    <div [class]=\"containerClasses()\">\n      <!-- Hours -->\n      <input\n        #hoursInput\n        type=\"text\"\n        inputmode=\"numeric\"\n        role=\"spinbutton\"\n        [class]=\"segmentClasses()\"\n        [attr.id]=\"id()\"\n        [attr.aria-label]=\"'Hours'\"\n        [attr.aria-describedby]=\"effectiveAriaDescribedBy() || null\"\n        [attr.aria-valuenow]=\"displayHours()\"\n        [attr.aria-valuemin]=\"is12Hour() ? 1 : 0\"\n        [attr.aria-valuemax]=\"is12Hour() ? 12 : 23\"\n        [value]=\"formattedHours()\"\n        [placeholder]=\"placeholder()\"\n        [disabled]=\"disabled()\"\n        maxlength=\"2\"\n        (keydown)=\"onSegmentKeydown($event, 'hours')\"\n        (input)=\"onSegmentInput($event, 'hours')\"\n        (focus)=\"onSegmentFocus('hours')\"\n        (blur)=\"onSegmentBlur('hours')\"\n      />\n\n      <span [class]=\"separatorClasses()\" aria-hidden=\"true\">:</span>\n\n      <!-- Minutes -->\n      <input\n        #minutesInput\n        type=\"text\"\n        inputmode=\"numeric\"\n        role=\"spinbutton\"\n        [class]=\"segmentClasses()\"\n        [attr.aria-label]=\"'Minutes'\"\n        [attr.aria-valuenow]=\"internalValue()?.minutes ?? null\"\n        [attr.aria-valuemin]=\"0\"\n        [attr.aria-valuemax]=\"59\"\n        [value]=\"formattedMinutes()\"\n        [placeholder]=\"placeholder()\"\n        [disabled]=\"disabled()\"\n        maxlength=\"2\"\n        (keydown)=\"onSegmentKeydown($event, 'minutes')\"\n        (input)=\"onSegmentInput($event, 'minutes')\"\n        (focus)=\"onSegmentFocus('minutes')\"\n        (blur)=\"onSegmentBlur('minutes')\"\n      />\n\n      @if (showSeconds()) {\n        <span [class]=\"separatorClasses()\" aria-hidden=\"true\">:</span>\n\n        <!-- Seconds -->\n        <input\n          #secondsInput\n          type=\"text\"\n          inputmode=\"numeric\"\n          role=\"spinbutton\"\n          [class]=\"segmentClasses()\"\n          [attr.aria-label]=\"'Seconds'\"\n          [attr.aria-valuenow]=\"internalValue()?.seconds ?? null\"\n          [attr.aria-valuemin]=\"0\"\n          [attr.aria-valuemax]=\"59\"\n          [value]=\"formattedSeconds()\"\n          [placeholder]=\"placeholder()\"\n          [disabled]=\"disabled()\"\n          maxlength=\"2\"\n          (keydown)=\"onSegmentKeydown($event, 'seconds')\"\n          (input)=\"onSegmentInput($event, 'seconds')\"\n          (focus)=\"onSegmentFocus('seconds')\"\n          (blur)=\"onSegmentBlur('seconds')\"\n        />\n      }\n\n      @if (is12Hour()) {\n        <button\n          #periodButton\n          type=\"button\"\n          [class]=\"periodClasses()\"\n          [attr.aria-label]=\"'Toggle AM/PM, currently ' + period()\"\n          [disabled]=\"disabled()\"\n          (click)=\"togglePeriod()\"\n          (keydown)=\"onPeriodKeydown($event)\"\n        >\n          {{ period() }}\n        </button>\n      }\n    </div>\n\n    <div class=\"sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n      {{ liveAnnouncement() }}\n    </div>\n  `,\n  styles: `\n    .sr-only {\n      position: absolute;\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(0, 0, 0, 0);\n      white-space: nowrap;\n      border: 0;\n    }\n  `,\n  providers: [{ provide: FormFieldControl, useExisting: forwardRef(() => ComTimePicker) }],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: {\n    class: 'com-time-picker-host inline-block',\n    '[class.com-time-picker-disabled]': 'disabled()',\n    '[attr.role]': '\"group\"',\n    '[attr.aria-label]': 'ariaLabel() || \"Time picker\"',\n    '[attr.aria-disabled]': 'disabled() || null',\n  },\n})\nexport class ComTimePicker implements ControlValueAccessor, FormFieldControl<ComTimeValue | null>, Validator {\n  private readonly localeId: string = inject(LOCALE_ID);\n  readonly ngControl: NgControl | null = inject(NgControl, { optional: true, self: true });\n  private readonly defaultErrorStateMatcher = inject(ErrorStateMatcher);\n  private readonly parentForm = inject(NgForm, { optional: true });\n  private readonly parentFormGroup = inject(FormGroupDirective, { optional: true });\n  private readonly timepickerId: string = generateTimePickerId();\n\n  private readonly hoursInputRef: Signal<ElementRef<HTMLInputElement> | undefined> =\n    viewChild<ElementRef<HTMLInputElement>>('hoursInput');\n  private readonly minutesInputRef: Signal<ElementRef<HTMLInputElement> | undefined> =\n    viewChild<ElementRef<HTMLInputElement>>('minutesInput');\n  private readonly secondsInputRef: Signal<ElementRef<HTMLInputElement> | undefined> =\n    viewChild<ElementRef<HTMLInputElement>>('secondsInput');\n  private readonly periodButtonRef: Signal<ElementRef<HTMLButtonElement> | undefined> =\n    viewChild<ElementRef<HTMLButtonElement>>('periodButton');\n\n  // ============ INPUTS ============\n\n  /** Current time value. */\n  readonly value: ModelSignal<ComTimeValue | null> = model<ComTimeValue | null>(null);\n\n  /** Whether the time picker is disabled. */\n  readonly disabled: ModelSignal<boolean> = model<boolean>(false);\n\n  /** Whether the time picker is required. */\n  readonly required: InputSignal<boolean> = input<boolean>(false);\n\n  /** Whether to show the seconds segment. */\n  readonly showSeconds: InputSignal<boolean> = input<boolean>(false);\n\n  /** 12h vs 24h format. `null` = auto-detect from locale. */\n  readonly use12HourFormat: InputSignal<boolean | null> = input<boolean | null>(null);\n\n  /** Step interval for minutes. */\n  readonly minuteStep: InputSignal<number> = input<number>(1);\n\n  /** Step interval for seconds. */\n  readonly secondStep: InputSignal<number> = input<number>(1);\n\n  /** Minimum selectable time. */\n  readonly minTime: InputSignal<ComTimeValue | null> = input<ComTimeValue | null>(null);\n\n  /** Maximum selectable time. */\n  readonly maxTime: InputSignal<ComTimeValue | null> = input<ComTimeValue | null>(null);\n\n  /** Visual variant. */\n  readonly variant: InputSignal<TimePickerVariant> = input<TimePickerVariant>('standalone');\n\n  /** Size variant. */\n  readonly size: InputSignal<TimePickerSize> = input<TimePickerSize>('default');\n\n  /** Validation state. */\n  readonly state: InputSignal<TimePickerState> = input<TimePickerState>('default');\n\n  /** Accessible label for the group. */\n  readonly ariaLabel: InputSignal<string | null> = input<string | null>(null);\n\n  /** Additional CSS classes. */\n  readonly userClass: InputSignal<string> = input<string>('', { alias: 'class' });\n\n  /** Placeholder text for empty segments. */\n  readonly placeholder: InputSignal<string> = input<string>('--');\n\n  /** Custom error state matcher for determining when to show errors. */\n  readonly errorStateMatcher: InputSignal<ErrorStateMatcher | undefined> = input<ErrorStateMatcher>();\n\n  // Signal Forms inputs — set automatically by [formField] via setInputOnDirectives\n  readonly touched: ModelSignal<boolean> = model<boolean>(false);\n  readonly invalid: InputSignal<boolean> = input<boolean>(false);\n  readonly sfErrors: InputSignal<readonly unknown[]> = input<readonly unknown[]>([], { alias: 'errors' });\n\n  // ============ OUTPUTS ============\n\n  /** Emitted when time value changes. */\n  readonly timeChange: OutputEmitterRef<ComTimeValue | null> = output<ComTimeValue | null>();\n\n  // ============ INTERNAL STATE ============\n\n  /** Internal value state. */\n  readonly internalValue: WritableSignal<ComTimeValue | null> = linkedSignal<ComTimeValue | null>(\n    () => this.value() ?? null,\n  );\n\n  /** Which segment is currently focused. */\n  readonly activeSegment: WritableSignal<TimeSegment | 'period' | null> = signal(null);\n\n  /** Pending typed digits for auto-advance. */\n  readonly pendingDigits: WritableSignal<string> = signal('');\n\n  /** Live announcements for screen readers. */\n  readonly liveAnnouncement: WritableSignal<string> = signal('');\n\n  /** IDs for aria-describedby (set by form-field). */\n  private readonly _describedByIds: WritableSignal<string> = signal('');\n\n  /** Form field appearance (set by form-field). */\n  private readonly _appearance: WritableSignal<FormFieldAppearance> = signal<FormFieldAppearance>('outline');\n\n  // ============ FormFieldControl SIGNALS ============\n\n  /** Whether the time picker is focused. Implements FormFieldControl. */\n  readonly focused: Signal<boolean> = computed(() => this.activeSegment() !== null);\n\n  /** Whether the label should float. */\n  readonly shouldLabelFloat: Signal<boolean> = computed(() => this.focused() || this.internalValue() !== null);\n\n  /** Whether the control is in an error state. Implements FormFieldControl. */\n  readonly errorState: Signal<boolean> = computed(() => {\n    if (!this.ngControl) {\n      return this.invalid() && this.touched();\n    }\n    const matcher = this.errorStateMatcher() ?? this.defaultErrorStateMatcher;\n    const form = this.parentFormGroup ?? this.parentForm;\n    return matcher.isErrorState(this.ngControl.control ?? null, form);\n  });\n\n  /** Structured validation errors from Signal Forms. */\n  readonly errors: Signal<readonly unknown[] | null> = computed(() =>\n    !this.ngControl ? this.sfErrors() : null\n  );\n\n  /** Unique ID for the control (maps to hours input). Implements FormFieldControl. */\n  readonly id: Signal<string> = computed(() => `${this.timepickerId}-hours`);\n\n  /**\n   * Effective state combining manual state with automatic error detection.\n   */\n  readonly effectiveState: Signal<TimePickerState> = computed(() => {\n    const manualState = this.state();\n    if (manualState !== 'default') return manualState;\n    return this.errorState() ? 'error' : 'default';\n  });\n\n  /** Combined aria-describedby from form-field. */\n  readonly effectiveAriaDescribedBy: Signal<string | null> = computed(() =>\n    this._describedByIds() || null\n  );\n\n  // ============ COMPUTED STATE ============\n\n  /** Whether to use 12-hour format. */\n  readonly is12Hour: Signal<boolean> = computed(() => {\n    const explicit = this.use12HourFormat();\n    if (explicit !== null) return explicit;\n    try {\n      const options = new Intl.DateTimeFormat(this.localeId, { hour: 'numeric' }).resolvedOptions();\n      return options.hour12 === true;\n    } catch {\n      return false;\n    }\n  });\n\n  /** Current period (AM/PM). */\n  readonly period: Signal<TimePeriod> = computed(() => {\n    const value = this.internalValue();\n    if (!value) return 'AM';\n    return value.hours >= 12 ? 'PM' : 'AM';\n  });\n\n  /** Display hours (converted from 24h to 12h when needed). */\n  readonly displayHours: Signal<number | null> = computed(() => {\n    const value = this.internalValue();\n    if (!value) return null;\n    if (!this.is12Hour()) return value.hours;\n    const h = value.hours % 12;\n    return h === 0 ? 12 : h;\n  });\n\n  /** Formatted hours string. */\n  readonly formattedHours: Signal<string> = computed(() => {\n    const h = this.displayHours();\n    if (h === null) return '';\n    return h.toString().padStart(2, '0');\n  });\n\n  /** Formatted minutes string. */\n  readonly formattedMinutes: Signal<string> = computed(() => {\n    const value = this.internalValue();\n    if (!value) return '';\n    return value.minutes.toString().padStart(2, '0');\n  });\n\n  /** Formatted seconds string. */\n  readonly formattedSeconds: Signal<string> = computed(() => {\n    const value = this.internalValue();\n    if (!value) return '';\n    return value.seconds.toString().padStart(2, '0');\n  });\n\n  /** Container classes. */\n  readonly containerClasses: Signal<string> = computed(() => {\n    const base = timepickerContainerVariants({\n      variant: this.variant(),\n      size: this.size(),\n      state: this.effectiveState(),\n    });\n    const disabled = this.disabled() ? timepickerDisabledVariants() : '';\n\n    // For naked variant, add padding based on form-field appearance\n    let paddingClasses = '';\n    if (this.variant() === 'naked') {\n      paddingClasses = this._appearance() === 'fill' ? 'pt-5 pb-1.5 px-3' : 'py-2.5 px-3';\n    }\n\n    return mergeClasses(base, disabled, paddingClasses, this.userClass());\n  });\n\n  /** Segment input classes. */\n  readonly segmentClasses: Signal<string> = computed(() => {\n    return timepickerSegmentVariants({ size: this.size() });\n  });\n\n  /** Separator classes. */\n  readonly separatorClasses: Signal<string> = computed(() => {\n    return timepickerSeparatorVariants({ size: this.size() });\n  });\n\n  /** Period button classes. */\n  readonly periodClasses: Signal<string> = computed(() => {\n    return timepickerPeriodVariants({ size: this.size() });\n  });\n\n  // ============ CVA CALLBACKS ============\n\n  private onChange: (value: ComTimeValue | null) => void = () => {};\n  private onTouched: () => void = () => {};\n  private onValidatorChange: () => void = () => {};\n\n  constructor() {\n    if (this.ngControl) {\n      this.ngControl.valueAccessor = this;\n    }\n  }\n\n  // ============ CVA IMPLEMENTATION ============\n\n  writeValue(value: ComTimeValue | null): void {\n    this.internalValue.set(value);\n  }\n\n  registerOnChange(fn: (value: ComTimeValue | null) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled.set(isDisabled);\n  }\n\n  // ============ VALIDATOR IMPLEMENTATION ============\n\n  validate(): ValidationErrors | null {\n    const value = this.internalValue();\n\n    if (this.required() && !value) {\n      return { required: true };\n    }\n\n    if (value) {\n      const minTime = this.minTime();\n      if (minTime && compareTime(value, minTime) < 0) {\n        return { minTime: { min: minTime, actual: value } };\n      }\n\n      const maxTime = this.maxTime();\n      if (maxTime && compareTime(value, maxTime) > 0) {\n        return { maxTime: { max: maxTime, actual: value } };\n      }\n    }\n\n    return null;\n  }\n\n  registerOnValidatorChange(fn: () => void): void {\n    this.onValidatorChange = fn;\n  }\n\n  // ============ EVENT HANDLERS ============\n\n  protected onSegmentFocus(segment: TimeSegment): void {\n    this.activeSegment.set(segment);\n    this.pendingDigits.set('');\n  }\n\n  protected onSegmentBlur(segment: TimeSegment): void {\n    this.activeSegment.set(null);\n    this.pendingDigits.set('');\n    this.snapToStep(segment);\n    this.onTouched();\n    this.touched.set(true);\n  }\n\n  protected onSegmentInput(event: Event, segment: TimeSegment): void {\n    // Prevent default browser input handling — we manage value via keydown\n    const input = event.target as HTMLInputElement;\n    // Restore the formatted value to prevent browser from changing display\n    if (segment === 'hours') {\n      input.value = this.formattedHours();\n    } else if (segment === 'minutes') {\n      input.value = this.formattedMinutes();\n    } else {\n      input.value = this.formattedSeconds();\n    }\n  }\n\n  protected onSegmentKeydown(event: KeyboardEvent, segment: TimeSegment): void {\n    switch (event.key) {\n      case 'ArrowUp':\n        event.preventDefault();\n        this.incrementSegment(segment, 1);\n        break;\n      case 'ArrowDown':\n        event.preventDefault();\n        this.incrementSegment(segment, -1);\n        break;\n      case 'ArrowRight':\n        event.preventDefault();\n        this.focusNextSegment(segment);\n        break;\n      case 'ArrowLeft':\n        event.preventDefault();\n        this.focusPrevSegment(segment);\n        break;\n      case 'Home':\n        event.preventDefault();\n        this.setSegmentToMin(segment);\n        break;\n      case 'End':\n        event.preventDefault();\n        this.setSegmentToMax(segment);\n        break;\n      case 'Backspace':\n      case 'Delete':\n        event.preventDefault();\n        this.pendingDigits.set('');\n        break;\n      default:\n        if (/^[0-9]$/.test(event.key)) {\n          event.preventDefault();\n          this.handleDigitInput(event.key, segment);\n        }\n        break;\n    }\n  }\n\n  protected onPeriodKeydown(event: KeyboardEvent): void {\n    switch (event.key) {\n      case 'ArrowUp':\n      case 'ArrowDown':\n        event.preventDefault();\n        this.togglePeriod();\n        break;\n      case 'ArrowLeft':\n        event.preventDefault();\n        this.focusPrevSegment('period');\n        break;\n      case 'a':\n      case 'A':\n        event.preventDefault();\n        this.setPeriod('AM');\n        break;\n      case 'p':\n      case 'P':\n        event.preventDefault();\n        this.setPeriod('PM');\n        break;\n    }\n  }\n\n  protected togglePeriod(): void {\n    const value = this.internalValue();\n    if (!value) {\n      this.updateValue({ hours: 12, minutes: 0, seconds: 0 });\n      return;\n    }\n\n    const newHours = value.hours >= 12 ? value.hours - 12 : value.hours + 12;\n    this.updateValue({ ...value, hours: newHours });\n  }\n\n  // ============ FormFieldControl IMPLEMENTATION ============\n\n  /**\n   * Called when the form field container is clicked.\n   * Implements FormFieldControl.\n   */\n  onContainerClick(_event: MouseEvent): void {\n    if (!this.disabled()) {\n      this.hoursInputRef()?.nativeElement.focus();\n    }\n  }\n\n  /**\n   * Sets the describedBy IDs from the form field.\n   * Called by the parent form field component.\n   */\n  setDescribedByIds(ids: string): void {\n    this._describedByIds.set(ids);\n  }\n\n  /**\n   * Sets the appearance for styling.\n   * Called by the parent form field component.\n   */\n  setAppearance(appearance: FormFieldAppearance): void {\n    this._appearance.set(appearance);\n  }\n\n  // ============ PRIVATE METHODS ============\n\n  private setPeriod(period: TimePeriod): void {\n    const value = this.internalValue();\n    if (!value) {\n      const hours = period === 'AM' ? 0 : 12;\n      this.updateValue({ hours, minutes: 0, seconds: 0 });\n      return;\n    }\n\n    const currentPeriod = this.period();\n    if (currentPeriod === period) return;\n\n    const newHours = period === 'AM' ? value.hours - 12 : value.hours + 12;\n    this.updateValue({ ...value, hours: newHours });\n  }\n\n  private incrementSegment(segment: TimeSegment, direction: 1 | -1): void {\n    const value = this.internalValue() ?? { hours: 0, minutes: 0, seconds: 0 };\n    const step = segment === 'minutes' ? this.minuteStep() : segment === 'seconds' ? this.secondStep() : 1;\n    const delta = step * direction;\n\n    let newValue: ComTimeValue;\n\n    switch (segment) {\n      case 'hours': {\n        const max = this.is12Hour() ? 12 : 23;\n        const min = this.is12Hour() ? 1 : 0;\n        let h = this.is12Hour() ? (this.displayHours() ?? min) : value.hours;\n        h += delta;\n        // Wrap\n        if (this.is12Hour()) {\n          if (h > max) h = min;\n          if (h < min) h = max;\n          // Convert back to 24h\n          const isPM = this.period() === 'PM';\n          let h24 = h === 12 ? 0 : h;\n          if (isPM) h24 += 12;\n          newValue = { ...value, hours: h24 };\n        } else {\n          if (h > 23) h = 0;\n          if (h < 0) h = 23;\n          newValue = { ...value, hours: h };\n        }\n        break;\n      }\n      case 'minutes': {\n        let m = value.minutes + delta;\n        if (m > 59) m = 0;\n        if (m < 0) m = 59;\n        newValue = { ...value, minutes: m };\n        break;\n      }\n      case 'seconds': {\n        let s = value.seconds + delta;\n        if (s > 59) s = 0;\n        if (s < 0) s = 59;\n        newValue = { ...value, seconds: s };\n        break;\n      }\n    }\n\n    this.updateValue(newValue);\n  }\n\n  private handleDigitInput(digit: string, segment: TimeSegment): void {\n    const pending = this.pendingDigits() + digit;\n\n    const value = this.internalValue() ?? { hours: 0, minutes: 0, seconds: 0 };\n    let parsed = parseInt(pending, 10);\n\n    switch (segment) {\n      case 'hours': {\n        const max = this.is12Hour() ? 12 : 23;\n        const min = this.is12Hour() ? 1 : 0;\n        if (parsed > max) parsed = parseInt(digit, 10);\n        if (parsed < min && pending.length >= 2) parsed = min;\n        // Convert to 24h if 12h mode\n        let h24 = parsed;\n        if (this.is12Hour()) {\n          const isPM = this.period() === 'PM';\n          h24 = parsed === 12 ? 0 : parsed;\n          if (isPM) h24 += 12;\n        }\n        this.updateValue({ ...value, hours: h24 });\n        break;\n      }\n      case 'minutes': {\n        if (parsed > 59) parsed = parseInt(digit, 10);\n        this.updateValue({ ...value, minutes: parsed });\n        break;\n      }\n      case 'seconds': {\n        if (parsed > 59) parsed = parseInt(digit, 10);\n        this.updateValue({ ...value, seconds: parsed });\n        break;\n      }\n    }\n\n    // Auto-advance after 2 digits\n    if (pending.length >= 2) {\n      this.pendingDigits.set('');\n      this.focusNextSegment(segment);\n    } else {\n      this.pendingDigits.set(pending);\n    }\n  }\n\n  private snapToStep(segment: TimeSegment): void {\n    const value = this.internalValue();\n    if (!value) return;\n\n    if (segment === 'minutes' && this.minuteStep() > 1) {\n      const step = this.minuteStep();\n      const snapped = Math.round(value.minutes / step) * step;\n      const clamped = Math.min(snapped, 59);\n      if (clamped !== value.minutes) {\n        this.updateValue({ ...value, minutes: clamped });\n      }\n    }\n\n    if (segment === 'seconds' && this.secondStep() > 1) {\n      const step = this.secondStep();\n      const snapped = Math.round(value.seconds / step) * step;\n      const clamped = Math.min(snapped, 59);\n      if (clamped !== value.seconds) {\n        this.updateValue({ ...value, seconds: clamped });\n      }\n    }\n  }\n\n  private setSegmentToMin(segment: TimeSegment): void {\n    const value = this.internalValue() ?? { hours: 0, minutes: 0, seconds: 0 };\n    switch (segment) {\n      case 'hours': {\n        if (this.is12Hour()) {\n          // Min display is 1; convert to 24h\n          const isPM = this.period() === 'PM';\n          const h24 = isPM ? 13 : 1;\n          this.updateValue({ ...value, hours: h24 });\n        } else {\n          this.updateValue({ ...value, hours: 0 });\n        }\n        break;\n      }\n      case 'minutes':\n        this.updateValue({ ...value, minutes: 0 });\n        break;\n      case 'seconds':\n        this.updateValue({ ...value, seconds: 0 });\n        break;\n    }\n  }\n\n  private setSegmentToMax(segment: TimeSegment): void {\n    const value = this.internalValue() ?? { hours: 0, minutes: 0, seconds: 0 };\n    switch (segment) {\n      case 'hours': {\n        if (this.is12Hour()) {\n          // Max display is 12; 12 in 12h = 0 in 24h (for AM) or 12 (for PM)\n          const isPM = this.period() === 'PM';\n          const h24 = isPM ? 12 : 0;\n          this.updateValue({ ...value, hours: h24 });\n        } else {\n          this.updateValue({ ...value, hours: 23 });\n        }\n        break;\n      }\n      case 'minutes':\n        this.updateValue({ ...value, minutes: 59 });\n        break;\n      case 'seconds':\n        this.updateValue({ ...value, seconds: 59 });\n        break;\n    }\n  }\n\n  private focusNextSegment(current: TimeSegment | 'period'): void {\n    switch (current) {\n      case 'hours':\n        this.minutesInputRef()?.nativeElement.focus();\n        break;\n      case 'minutes':\n        if (this.showSeconds()) {\n          this.secondsInputRef()?.nativeElement.focus();\n        } else if (this.is12Hour()) {\n          this.periodButtonRef()?.nativeElement.focus();\n        }\n        break;\n      case 'seconds':\n        if (this.is12Hour()) {\n          this.periodButtonRef()?.nativeElement.focus();\n        }\n        break;\n    }\n  }\n\n  private focusPrevSegment(current: TimeSegment | 'period'): void {\n    switch (current) {\n      case 'minutes':\n        this.hoursInputRef()?.nativeElement.focus();\n        break;\n      case 'seconds':\n        this.minutesInputRef()?.nativeElement.focus();\n        break;\n      case 'period':\n        if (this.showSeconds()) {\n          this.secondsInputRef()?.nativeElement.focus();\n        } else {\n          this.minutesInputRef()?.nativeElement.focus();\n        }\n        break;\n    }\n  }\n\n  private updateValue(value: ComTimeValue | null): void {\n    this.value.set(value);\n    this.onChange(value);\n    this.timeChange.emit(value);\n    this.onValidatorChange();\n\n    if (value) {\n      const h = this.is12Hour()\n        ? `${(value.hours % 12 || 12)}:${value.minutes.toString().padStart(2, '0')}${this.showSeconds() ? ':' + value.seconds.toString().padStart(2, '0') : ''} ${value.hours >= 12 ? 'PM' : 'AM'}`\n        : `${value.hours.toString().padStart(2, '0')}:${value.minutes.toString().padStart(2, '0')}${this.showSeconds() ? ':' + value.seconds.toString().padStart(2, '0') : ''}`;\n      this.liveAnnouncement.set(`Time set to ${h}`);\n    }\n  }\n}\n","/**\n * TimePicker component public API.\n */\n\n// Types\nexport type {\n  ComTimeValue,\n  TimePickerSize,\n  TimePickerVariant,\n  TimePickerState,\n  TimePeriod,\n  TimeSegment,\n} from './timepicker.types';\n\nexport {\n  createTimeValue,\n  compareTime,\n  generateTimePickerId,\n} from './timepicker.types';\n\n// Variants\nexport {\n  timepickerContainerVariants,\n  timepickerDisabledVariants,\n  timepickerSegmentVariants,\n  timepickerSeparatorVariants,\n  timepickerPeriodVariants,\n  timepickerSectionVariants,\n  timepickerLabelVariants,\n} from './timepicker.variants';\n\nexport type {\n  TimepickerContainerVariants,\n  TimepickerDisabledVariants,\n  TimepickerSegmentVariants,\n  TimepickerSeparatorVariants,\n  TimepickerPeriodVariants,\n  TimepickerSectionVariants,\n  TimepickerLabelVariants,\n} from './timepicker.variants';\n\n// Component\nexport { ComTimePicker } from './timepicker.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}