ngx-com 0.0.21 → 0.1.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.
Files changed (114) hide show
  1. package/README.md +137 -33
  2. package/fesm2022/ngx-com-components-alert.mjs +21 -11
  3. package/fesm2022/ngx-com-components-alert.mjs.map +1 -1
  4. package/fesm2022/ngx-com-components-avatar.mjs +9 -7
  5. package/fesm2022/ngx-com-components-avatar.mjs.map +1 -1
  6. package/fesm2022/ngx-com-components-button.mjs +1 -1
  7. package/fesm2022/ngx-com-components-button.mjs.map +1 -1
  8. package/fesm2022/ngx-com-components-calendar.mjs +27 -3112
  9. package/fesm2022/ngx-com-components-calendar.mjs.map +1 -1
  10. package/fesm2022/ngx-com-components-card.mjs +8 -8
  11. package/fesm2022/ngx-com-components-card.mjs.map +1 -1
  12. package/fesm2022/ngx-com-components-carousel.mjs +16 -4
  13. package/fesm2022/ngx-com-components-carousel.mjs.map +1 -1
  14. package/fesm2022/ngx-com-components-checkbox.mjs +1 -1
  15. package/fesm2022/ngx-com-components-checkbox.mjs.map +1 -1
  16. package/fesm2022/ngx-com-components-code-block.mjs +9 -9
  17. package/fesm2022/ngx-com-components-code-block.mjs.map +1 -1
  18. package/fesm2022/ngx-com-components-collapsible.mjs +15 -13
  19. package/fesm2022/ngx-com-components-collapsible.mjs.map +1 -1
  20. package/fesm2022/ngx-com-components-confirm.mjs +4 -4
  21. package/fesm2022/ngx-com-components-confirm.mjs.map +1 -1
  22. package/fesm2022/ngx-com-components-datepicker.mjs +2334 -0
  23. package/fesm2022/ngx-com-components-datepicker.mjs.map +1 -0
  24. package/fesm2022/ngx-com-components-dialog.mjs +47 -45
  25. package/fesm2022/ngx-com-components-dialog.mjs.map +1 -1
  26. package/fesm2022/ngx-com-components-dropdown.mjs +446 -340
  27. package/fesm2022/ngx-com-components-dropdown.mjs.map +1 -1
  28. package/fesm2022/ngx-com-components-empty-state.mjs +5 -3
  29. package/fesm2022/ngx-com-components-empty-state.mjs.map +1 -1
  30. package/fesm2022/ngx-com-components-form-field.mjs +11 -6
  31. package/fesm2022/ngx-com-components-form-field.mjs.map +1 -1
  32. package/fesm2022/ngx-com-components-icon-lucide.mjs +41 -0
  33. package/fesm2022/ngx-com-components-icon-lucide.mjs.map +1 -0
  34. package/fesm2022/ngx-com-components-icon.mjs +89 -61
  35. package/fesm2022/ngx-com-components-icon.mjs.map +1 -1
  36. package/fesm2022/ngx-com-components-item.mjs +14 -4
  37. package/fesm2022/ngx-com-components-item.mjs.map +1 -1
  38. package/fesm2022/ngx-com-components-menu.mjs +61 -69
  39. package/fesm2022/ngx-com-components-menu.mjs.map +1 -1
  40. package/fesm2022/ngx-com-components-native-control.mjs +170 -0
  41. package/fesm2022/ngx-com-components-native-control.mjs.map +1 -0
  42. package/fesm2022/ngx-com-components-paginator.mjs +11 -3
  43. package/fesm2022/ngx-com-components-paginator.mjs.map +1 -1
  44. package/fesm2022/ngx-com-components-popover.mjs +58 -33
  45. package/fesm2022/ngx-com-components-popover.mjs.map +1 -1
  46. package/fesm2022/ngx-com-components-radio.mjs +4 -4
  47. package/fesm2022/ngx-com-components-radio.mjs.map +1 -1
  48. package/fesm2022/ngx-com-components-segmented-control.mjs +6 -4
  49. package/fesm2022/ngx-com-components-segmented-control.mjs.map +1 -1
  50. package/fesm2022/ngx-com-components-sort.mjs +63 -57
  51. package/fesm2022/ngx-com-components-sort.mjs.map +1 -1
  52. package/fesm2022/ngx-com-components-spinner.mjs +6 -6
  53. package/fesm2022/ngx-com-components-spinner.mjs.map +1 -1
  54. package/fesm2022/ngx-com-components-switch.mjs +18 -9
  55. package/fesm2022/ngx-com-components-switch.mjs.map +1 -1
  56. package/fesm2022/ngx-com-components-table.mjs +23 -9
  57. package/fesm2022/ngx-com-components-table.mjs.map +1 -1
  58. package/fesm2022/ngx-com-components-tabs.mjs +81 -58
  59. package/fesm2022/ngx-com-components-tabs.mjs.map +1 -1
  60. package/fesm2022/ngx-com-components-timepicker.mjs +1048 -0
  61. package/fesm2022/ngx-com-components-timepicker.mjs.map +1 -0
  62. package/fesm2022/ngx-com-components-toast.mjs +18 -14
  63. package/fesm2022/ngx-com-components-toast.mjs.map +1 -1
  64. package/fesm2022/ngx-com-components-tooltip.mjs +5 -5
  65. package/fesm2022/ngx-com-components-tooltip.mjs.map +1 -1
  66. package/fesm2022/ngx-com-components.mjs +0 -13
  67. package/fesm2022/ngx-com-components.mjs.map +1 -1
  68. package/fesm2022/ngx-com-tokens.mjs +0 -8
  69. package/fesm2022/ngx-com-tokens.mjs.map +1 -1
  70. package/fesm2022/ngx-com-utils.mjs +13 -1
  71. package/fesm2022/ngx-com-utils.mjs.map +1 -1
  72. package/fesm2022/ngx-com.mjs +1 -1
  73. package/fesm2022/ngx-com.mjs.map +1 -1
  74. package/package.json +51 -8
  75. package/styles/animations.css +38 -0
  76. package/styles/candy.css +121 -0
  77. package/styles/dark.css +159 -0
  78. package/styles/forest.css +117 -0
  79. package/styles/ocean.css +117 -0
  80. package/styles/themes.css +7 -0
  81. package/styles/tokens.css +277 -0
  82. package/styles/utilities.css +16 -0
  83. package/types/ngx-com-components-alert.d.ts +14 -4
  84. package/types/ngx-com-components-avatar.d.ts +2 -0
  85. package/types/ngx-com-components-calendar.d.ts +3 -747
  86. package/types/ngx-com-components-card.d.ts +2 -2
  87. package/types/ngx-com-components-carousel.d.ts +11 -1
  88. package/types/ngx-com-components-code-block.d.ts +4 -4
  89. package/types/ngx-com-components-collapsible.d.ts +10 -2
  90. package/types/ngx-com-components-confirm.d.ts +2 -2
  91. package/types/ngx-com-components-datepicker.d.ts +623 -0
  92. package/types/ngx-com-components-dialog.d.ts +5 -2
  93. package/types/ngx-com-components-dropdown.d.ts +22 -4
  94. package/types/ngx-com-components-empty-state.d.ts +2 -0
  95. package/types/ngx-com-components-form-field.d.ts +4 -1
  96. package/types/ngx-com-components-icon-lucide.d.ts +32 -0
  97. package/types/ngx-com-components-icon.d.ts +49 -35
  98. package/types/ngx-com-components-item.d.ts +12 -2
  99. package/types/ngx-com-components-menu.d.ts +38 -38
  100. package/types/ngx-com-components-native-control.d.ts +99 -0
  101. package/types/ngx-com-components-paginator.d.ts +2 -0
  102. package/types/ngx-com-components-popover.d.ts +19 -12
  103. package/types/ngx-com-components-segmented-control.d.ts +3 -1
  104. package/types/ngx-com-components-sort.d.ts +13 -10
  105. package/types/ngx-com-components-switch.d.ts +7 -2
  106. package/types/ngx-com-components-table.d.ts +16 -2
  107. package/types/ngx-com-components-tabs.d.ts +46 -34
  108. package/types/ngx-com-components-timepicker.d.ts +273 -0
  109. package/types/ngx-com-components-toast.d.ts +4 -2
  110. package/types/ngx-com-components-tooltip.d.ts +1 -1
  111. package/types/ngx-com-components.d.ts +6 -7
  112. package/types/ngx-com-tokens.d.ts +5 -3
  113. package/types/ngx-com-utils.d.ts +11 -1
  114. package/types/ngx-com.d.ts +1 -1
@@ -0,0 +1 @@
1
+ {"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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"}
@@ -56,7 +56,7 @@ class ComToastRef {
56
56
  * `--color-warn`, `--color-warn-foreground`,
57
57
  * `--color-warn-subtle`, `--color-warn-subtle-foreground`,
58
58
  * `--color-primary-subtle`, `--color-primary-subtle-foreground`,
59
- * `--color-border`, `--shadow-lg`, `--radius-card`
59
+ * `--color-border`, `--shadow-overlay`, `--radius-card`
60
60
  */
61
61
  const toastVariants = cva([
62
62
  'flex',
@@ -67,7 +67,7 @@ const toastVariants = cva([
67
67
  'rounded-card',
68
68
  'border',
69
69
  'p-4',
70
- 'shadow-lg',
70
+ 'shadow-overlay',
71
71
  'pointer-events-auto',
72
72
  'relative',
73
73
  'overflow-hidden',
@@ -116,14 +116,14 @@ const toastProgressVariants = cva([
116
116
  'bottom-0',
117
117
  'left-0',
118
118
  'h-0.5',
119
- 'rounded-full',
119
+ 'rounded-pill',
120
120
  ], {
121
121
  variants: {
122
122
  type: {
123
- success: 'bg-success-foreground/30',
124
- warn: 'bg-warn-subtle-foreground/30',
125
- error: 'bg-warn-foreground/30',
126
- info: 'bg-primary-subtle-foreground/30',
123
+ success: 'bg-success-foreground-track',
124
+ warn: 'bg-warn-subtle-foreground-track',
125
+ error: 'bg-warn-foreground-track',
126
+ info: 'bg-primary-subtle-foreground-track',
127
127
  },
128
128
  },
129
129
  defaultVariants: {
@@ -133,7 +133,9 @@ const toastProgressVariants = cva([
133
133
  /**
134
134
  * CVA variants for the toast close button.
135
135
  *
136
- * @tokens `--color-ring`, `--radius-card`
136
+ * @tokens `--color-ring`, `--radius-card`,
137
+ * `--color-success-foreground-muted`, `--color-warn-subtle-foreground-muted`,
138
+ * `--color-warn-foreground-muted`, `--color-primary-subtle-foreground-muted`
137
139
  */
138
140
  const toastCloseButtonVariants = cva([
139
141
  'shrink-0',
@@ -147,10 +149,10 @@ const toastCloseButtonVariants = cva([
147
149
  ], {
148
150
  variants: {
149
151
  type: {
150
- success: 'text-success-foreground/70 hover:text-success-foreground',
151
- warn: 'text-warn-subtle-foreground/70 hover:text-warn-subtle-foreground',
152
- error: 'text-warn-foreground/70 hover:text-warn-foreground',
153
- info: 'text-primary-subtle-foreground/70 hover:text-primary-subtle-foreground',
152
+ success: 'text-success-foreground-muted hover:text-success-foreground',
153
+ warn: 'text-warn-subtle-foreground-muted hover:text-warn-subtle-foreground',
154
+ error: 'text-warn-foreground-muted hover:text-warn-foreground',
155
+ info: 'text-primary-subtle-foreground-muted hover:text-primary-subtle-foreground',
154
156
  },
155
157
  },
156
158
  defaultVariants: {
@@ -182,14 +184,16 @@ const DEFAULT_TOAST_ICONS = {
182
184
  * `--color-warn`, `--color-warn-foreground`,
183
185
  * `--color-warn-subtle`, `--color-warn-subtle-foreground`,
184
186
  * `--color-primary-subtle`, `--color-primary-subtle-foreground`,
185
- * `--color-border`, `--shadow-lg`, `--radius-card`, `--color-ring`
187
+ * `--color-border`, `--shadow-overlay`, `--radius-card`, `--color-ring`
186
188
  */
187
189
  class ComToastComponent {
188
190
  /** The toast state, set by the container. */
189
191
  state = input.required(...(ngDevMode ? [{ debugName: "state" }] : []));
190
192
  /** Emitted when the toast should be dismissed. */
193
+ // eslint-disable-next-line @angular-eslint/no-output-on-prefix -- intentional API naming for toast event delegation
191
194
  onDismiss = output();
192
195
  /** Emitted when the action button is clicked. */
196
+ // eslint-disable-next-line @angular-eslint/no-output-on-prefix -- intentional API naming for toast event delegation
193
197
  onAction = output();
194
198
  /** Emitted when the mouse enters the toast. */
195
199
  mouseEnter = output();
@@ -382,7 +386,7 @@ function provideComToastConfig(config) {
382
386
  * `--color-warn`, `--color-warn-foreground`,
383
387
  * `--color-warn-subtle`, `--color-warn-subtle-foreground`,
384
388
  * `--color-primary-subtle`, `--color-primary-subtle-foreground`,
385
- * `--color-border`, `--shadow-lg`, `--radius-card`
389
+ * `--color-border`, `--shadow-overlay`, `--radius-card`
386
390
  */
387
391
  class ComToastContainerComponent {
388
392
  containerData = inject(COM_TOAST_CONTAINER_DATA);
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-com-components-toast.mjs","sources":["../../../projects/com/components/toast/toast.ref.ts","../../../projects/com/components/toast/toast.variants.ts","../../../projects/com/components/toast/toast.utils.ts","../../../projects/com/components/toast/toast.component.ts","../../../projects/com/components/toast/toast.providers.ts","../../../projects/com/components/toast/toast-container.component.ts","../../../projects/com/components/toast/toast.service.ts","../../../projects/com/components/toast/index.ts","../../../projects/com/components/toast/ngx-com-components-toast.ts"],"sourcesContent":["import { Observable, Subject } from 'rxjs';\nimport type { ComToastDismissEvent } from './toast.models';\n\n/**\n * Reference to an active toast notification.\n * Returned by `ComToastService` methods for programmatic control.\n */\nexport class ComToastRef {\n private readonly dismissSubject = new Subject<ComToastDismissEvent>();\n private readonly actionSubject = new Subject<void>();\n private readonly dismissFn: () => void;\n private dismissed = false;\n\n constructor(dismissFn: () => void) {\n this.dismissFn = dismissFn;\n }\n\n /** Programmatically dismiss the toast. */\n dismiss(): void {\n if (!this.dismissed) {\n this.dismissFn();\n }\n }\n\n /** Emits once when the toast is dismissed (for any reason). */\n afterDismissed(): Observable<ComToastDismissEvent> {\n return this.dismissSubject.asObservable();\n }\n\n /** Emits when the action button is clicked. */\n afterAction(): Observable<void> {\n return this.actionSubject.asObservable();\n }\n\n /** @internal */\n _notifyDismissed(event: ComToastDismissEvent): void {\n if (this.dismissed) return;\n this.dismissed = true;\n this.dismissSubject.next(event);\n this.dismissSubject.complete();\n this.actionSubject.complete();\n }\n\n /** @internal */\n _notifyAction(): void {\n this.actionSubject.next();\n }\n}\n","import { cva } from 'class-variance-authority';\nimport type { ComToastType, ComToastPosition } from './toast.models';\n\n/**\n * CVA variants for an individual toast card.\n *\n * @tokens `--color-success`, `--color-success-foreground`,\n * `--color-warn`, `--color-warn-foreground`,\n * `--color-warn-subtle`, `--color-warn-subtle-foreground`,\n * `--color-primary-subtle`, `--color-primary-subtle-foreground`,\n * `--color-border`, `--shadow-lg`, `--radius-card`\n */\nexport const toastVariants: (props?: {\n type?: ComToastType;\n}) => string = cva(\n [\n 'flex',\n 'w-full',\n 'max-w-sm',\n 'items-start',\n 'gap-3',\n 'rounded-card',\n 'border',\n 'p-4',\n 'shadow-lg',\n 'pointer-events-auto',\n 'relative',\n 'overflow-hidden',\n ],\n {\n variants: {\n type: {\n success: 'bg-success text-success-foreground border-success',\n warn: 'bg-warn-subtle text-warn-subtle-foreground border-warn',\n error: 'bg-warn text-warn-foreground border-warn',\n info: 'bg-primary-subtle text-primary-subtle-foreground border-primary',\n },\n },\n defaultVariants: {\n type: 'info',\n },\n },\n);\n\n/**\n * CVA variants for the toast container positioning.\n */\nexport const toastContainerVariants: (props?: {\n position?: ComToastPosition;\n}) => string = cva(\n [\n 'flex',\n 'gap-3',\n 'pointer-events-none',\n 'max-h-screen',\n 'p-4',\n ],\n {\n variants: {\n position: {\n 'top-right': 'flex-col items-end',\n 'top-left': 'flex-col items-start',\n 'top-center': 'flex-col items-center',\n 'bottom-right': 'flex-col-reverse items-end',\n 'bottom-left': 'flex-col-reverse items-start',\n 'bottom-center': 'flex-col-reverse items-center',\n },\n },\n defaultVariants: {\n position: 'bottom-right',\n },\n },\n);\n\n/**\n * CVA variants for the toast progress bar.\n */\nexport const toastProgressVariants: (props?: {\n type?: ComToastType;\n}) => string = cva(\n [\n 'absolute',\n 'bottom-0',\n 'left-0',\n 'h-0.5',\n 'rounded-full',\n ],\n {\n variants: {\n type: {\n success: 'bg-success-foreground/30',\n warn: 'bg-warn-subtle-foreground/30',\n error: 'bg-warn-foreground/30',\n info: 'bg-primary-subtle-foreground/30',\n },\n },\n defaultVariants: {\n type: 'info',\n },\n },\n);\n\n/**\n * CVA variants for the toast close button.\n *\n * @tokens `--color-ring`, `--radius-card`\n */\nexport const toastCloseButtonVariants: (props?: {\n type?: ComToastType;\n}) => string = cva(\n [\n 'shrink-0',\n 'rounded-card',\n 'p-0.5',\n 'transition-colors',\n 'outline-none',\n 'focus-visible:outline-2',\n 'focus-visible:outline-offset-2',\n 'focus-visible:outline-[--color-ring]',\n ],\n {\n variants: {\n type: {\n success: 'text-success-foreground/70 hover:text-success-foreground',\n warn: 'text-warn-subtle-foreground/70 hover:text-warn-subtle-foreground',\n error: 'text-warn-foreground/70 hover:text-warn-foreground',\n info: 'text-primary-subtle-foreground/70 hover:text-primary-subtle-foreground',\n },\n },\n defaultVariants: {\n type: 'info',\n },\n },\n);\n","export { mergeClasses } from 'ngx-com/utils';\n\nlet toastIdCounter = 0;\n\n/**\n * Generate a unique ID for a toast notification.\n */\nexport function generateToastId(): number {\n return ++toastIdCounter;\n}\n\n/** Default Lucide icon names per toast type. */\nexport const DEFAULT_TOAST_ICONS: Record<string, string> = {\n success: 'circle-check',\n warn: 'triangle-alert',\n error: 'circle-x',\n info: 'info',\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n} from '@angular/core';\nimport type { InputSignal, OutputEmitterRef, Signal } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ComIcon } from 'ngx-com/components/icon';\nimport {\n toastVariants,\n toastProgressVariants,\n toastCloseButtonVariants,\n} from './toast.variants';\nimport { mergeClasses, DEFAULT_TOAST_ICONS } from './toast.utils';\nimport type { ComToastState, ComToastTemplateContext } from './toast.models';\n\n/**\n * Internal toast notification component rendered inside the container.\n *\n * @internal Not exported in public API\n *\n * @tokens `--color-success`, `--color-success-foreground`,\n * `--color-warn`, `--color-warn-foreground`,\n * `--color-warn-subtle`, `--color-warn-subtle-foreground`,\n * `--color-primary-subtle`, `--color-primary-subtle-foreground`,\n * `--color-border`, `--shadow-lg`, `--radius-card`, `--color-ring`\n */\n@Component({\n selector: 'com-toast',\n template: `\n <div\n [class]=\"toastClasses()\"\n [attr.role]=\"ariaRole()\"\n [attr.aria-live]=\"ariaLive()\"\n [attr.data-state]=\"state().visible ? 'open' : 'closed'\"\n (animationend)=\"onAnimationEnd()\"\n >\n @if (state().data.customTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"state().data.customTemplate!\"\n [ngTemplateOutletContext]=\"templateContext()\"\n />\n } @else {\n <com-icon\n [name]=\"resolvedIcon()\"\n size=\"md\"\n class=\"mt-0.5 shrink-0\"\n aria-hidden=\"true\"\n />\n <div class=\"flex-1 min-w-0\">\n @if (state().data.title) {\n <p class=\"text-sm font-semibold\">{{ state().data.title }}</p>\n }\n <p class=\"text-sm\" [class.mt-1]=\"state().data.title\">\n {{ state().data.message }}\n </p>\n @if (state().data.action) {\n <button\n type=\"button\"\n class=\"mt-2 text-sm font-medium underline underline-offset-4\n outline-none\n focus-visible:outline-2\n focus-visible:outline-offset-2\n focus-visible:outline-[--color-ring]\"\n (click)=\"onAction.emit(state().id)\"\n >\n {{ state().data.action!.label }}\n </button>\n }\n </div>\n @if (state().showClose) {\n <button\n type=\"button\"\n [class]=\"closeButtonClasses()\"\n aria-label=\"Dismiss notification\"\n (click)=\"onDismiss.emit(state().id)\"\n >\n <com-icon name=\"x\" size=\"sm\" aria-hidden=\"true\" />\n </button>\n }\n }\n @if (state().showProgress && state().duration > 0) {\n <div\n [class]=\"progressClasses()\"\n [style.width.%]=\"state().remainingPercent\"\n ></div>\n }\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n\n [data-state='open'] {\n --tw-enter-opacity: 0;\n --tw-enter-translate-x: 0;\n --tw-enter-translate-y: 0;\n }\n\n [data-state='closed'] {\n --tw-exit-opacity: 0;\n --tw-exit-translate-x: 0;\n --tw-exit-translate-y: 0;\n }\n\n @media (prefers-reduced-motion: reduce) {\n [data-state='open'],\n [data-state='closed'] {\n animation: none;\n }\n }\n `,\n imports: [NgTemplateOutlet, ComIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ComToastComponent {\n /** The toast state, set by the container. */\n readonly state: InputSignal<ComToastState> = input.required<ComToastState>();\n\n /** Emitted when the toast should be dismissed. */\n readonly onDismiss: OutputEmitterRef<number> = output<number>();\n\n /** Emitted when the action button is clicked. */\n readonly onAction: OutputEmitterRef<number> = output<number>();\n\n /** Emitted when the mouse enters the toast. */\n readonly mouseEnter: OutputEmitterRef<void> = output<void>();\n\n /** Emitted when the mouse leaves the toast. */\n readonly mouseLeave: OutputEmitterRef<void> = output<void>();\n\n /** Emitted when the exit animation completes. */\n readonly animationDone: OutputEmitterRef<number> = output<number>();\n\n /** Resolved icon name. */\n protected readonly resolvedIcon: Signal<string> = computed(\n () => this.state().data.icon ?? DEFAULT_TOAST_ICONS[this.state().type] ?? 'info',\n );\n\n /** ARIA role based on toast type. */\n protected readonly ariaRole: Signal<string> = computed(() =>\n this.state().type === 'error' ? 'alert' : 'status',\n );\n\n /** ARIA live region politeness. */\n protected readonly ariaLive: Signal<string> = computed(() =>\n this.state().type === 'error' ? 'assertive' : 'polite',\n );\n\n /** Computed toast card classes. */\n protected readonly toastClasses: Signal<string> = computed(() =>\n mergeClasses(\n toastVariants({ type: this.state().type }),\n this.state().visible\n ? 'animate-in fade-in-0 slide-in-from-bottom-2'\n : 'animate-out fade-out-0 slide-out-to-right-full',\n ),\n );\n\n /** Computed progress bar classes. */\n protected readonly progressClasses: Signal<string> = computed(() =>\n mergeClasses(toastProgressVariants({ type: this.state().type })),\n );\n\n /** Computed close button classes. */\n protected readonly closeButtonClasses: Signal<string> = computed(() =>\n mergeClasses(toastCloseButtonVariants({ type: this.state().type })),\n );\n\n /** Template context for custom templates. */\n protected readonly templateContext: Signal<ComToastTemplateContext> = computed(() => ({\n $implicit: this.state().data,\n dismiss: () => this.onDismiss.emit(this.state().id),\n action: () => this.onAction.emit(this.state().id),\n }));\n\n protected onAnimationEnd(): void {\n if (!this.state().visible) {\n this.animationDone.emit(this.state().id);\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport type { Provider } from '@angular/core';\nimport type { ComToastConfig, ComToastContainerData } from './toast.models';\n\n/**\n * Injection token for global toast configuration.\n */\nexport const COM_TOAST_CONFIG: InjectionToken<ComToastConfig> =\n new InjectionToken<ComToastConfig>('COM_TOAST_CONFIG');\n\n/**\n * Injection token for internal container communication.\n * @internal\n */\nexport const COM_TOAST_CONTAINER_DATA: InjectionToken<ComToastContainerData> =\n new InjectionToken<ComToastContainerData>('COM_TOAST_CONTAINER_DATA');\n\n/**\n * Provides global toast configuration.\n *\n * @example\n * ```typescript\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideComToastConfig({ position: 'top-center', duration: 3000 }),\n * ],\n * });\n * ```\n */\nexport function provideComToastConfig(config: ComToastConfig): Provider {\n return { provide: COM_TOAST_CONFIG, useValue: config };\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n} from '@angular/core';\nimport type { Signal } from '@angular/core';\nimport { ComToastComponent } from './toast.component';\nimport { toastContainerVariants } from './toast.variants';\nimport { mergeClasses } from './toast.utils';\nimport { COM_TOAST_CONTAINER_DATA } from './toast.providers';\nimport type { ComToastContainerData, ComToastState } from './toast.models';\n\n/**\n * Internal toast container component that manages positioning and stacking.\n *\n * @internal Not exported in public API\n *\n * @tokens `--color-success`, `--color-success-foreground`,\n * `--color-warn`, `--color-warn-foreground`,\n * `--color-warn-subtle`, `--color-warn-subtle-foreground`,\n * `--color-primary-subtle`, `--color-primary-subtle-foreground`,\n * `--color-border`, `--shadow-lg`, `--radius-card`\n */\n@Component({\n selector: 'com-toast-container',\n host: {\n '(keydown.escape)': 'onEscapeKey()',\n tabindex: '-1',\n },\n template: `\n <div\n [class]=\"containerClasses()\"\n role=\"region\"\n aria-label=\"Notifications\"\n >\n @for (toast of toasts(); track toast.id) {\n <com-toast\n [state]=\"toast\"\n (onDismiss)=\"containerData.onDismiss($event)\"\n (onAction)=\"containerData.onAction($event)\"\n (mouseEnter)=\"containerData.onMouseEnter(toast.id)\"\n (mouseLeave)=\"containerData.onMouseLeave(toast.id)\"\n (animationDone)=\"containerData.onAnimationDone($event)\"\n />\n }\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n imports: [ComToastComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ComToastContainerComponent {\n protected readonly containerData: ComToastContainerData = inject(COM_TOAST_CONTAINER_DATA);\n\n /** Active toast states, read from the service's signal. */\n protected readonly toasts: Signal<ComToastState[]> = computed(() => this.containerData.toasts());\n\n /** Computed container positioning classes. */\n protected readonly containerClasses: Signal<string> = computed(() =>\n mergeClasses(toastContainerVariants({ position: this.containerData.position() })),\n );\n\n protected onEscapeKey(): void {\n this.containerData.onDismissLatest();\n }\n}\n","import {\n DestroyRef,\n inject,\n Injectable,\n Injector,\n PLATFORM_ID,\n signal,\n} from '@angular/core';\nimport type { WritableSignal } from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { Overlay } from '@angular/cdk/overlay';\nimport type { GlobalPositionStrategy, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComToastRef } from './toast.ref';\nimport { ComToastContainerComponent } from './toast-container.component';\nimport { COM_TOAST_CONFIG, COM_TOAST_CONTAINER_DATA } from './toast.providers';\nimport { generateToastId } from './toast.utils';\nimport type {\n ComToastConfig,\n ComToastContainerData,\n ComToastData,\n ComToastDismissReason,\n ComToastPosition,\n ComToastState,\n ComToastTimerState,\n ComToastType,\n} from './toast.models';\n\n/** Default durations by toast type. */\nconst DEFAULT_DURATION: Record<ComToastType, number> = {\n success: 5000,\n warn: 5000,\n error: 0,\n info: 5000,\n};\n\n/** Fallback timeout for exit animation removal when animationend doesn't fire. */\nconst ANIMATION_FALLBACK_MS = 200;\n\n/**\n * Service for creating toast notifications imperatively.\n *\n * @example\n * ```typescript\n * const toast = inject(ComToastService);\n * toast.success('File uploaded successfully.');\n * toast.error('Failed to save.', 'Error');\n *\n * const ref = toast.show({ type: 'info', message: 'Item deleted.', action: { label: 'Undo' } });\n * ref.afterAction().subscribe(() => undoDelete());\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class ComToastService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly document = inject(DOCUMENT);\n private readonly globalConfig = inject(COM_TOAST_CONFIG, { optional: true });\n\n private overlayRef: OverlayRef | null = null;\n private readonly toasts: WritableSignal<ComToastState[]> = signal([]);\n private readonly position: WritableSignal<ComToastPosition>;\n private readonly timers = new Map<number, ComToastTimerState>();\n private readonly refs = new Map<number, ComToastRef>();\n private readonly animationFallbacks = new Map<number, ReturnType<typeof setTimeout>>();\n private readonly dismissReasons = new Map<number, ComToastDismissReason>();\n private rafHandle: number | null = null;\n\n private readonly config: Required<ComToastConfig>;\n\n constructor() {\n this.config = {\n position: 'bottom-right',\n duration: 5000,\n maxVisible: 5,\n pauseOnHover: true,\n showProgress: true,\n showClose: true,\n ...this.globalConfig,\n };\n this.position = signal(this.config.position);\n this.destroyRef.onDestroy(() => this.dispose());\n }\n\n /**\n * Show a toast notification with full configuration.\n */\n show(data: ComToastData): ComToastRef {\n this.ensureContainer();\n\n const id = generateToastId();\n const type: ComToastType = data.type ?? 'info';\n const duration = data.duration ?? DEFAULT_DURATION[type] ?? this.config.duration;\n const showProgress = data.showProgress ?? this.config.showProgress;\n const showClose = data.showClose ?? this.config.showClose;\n\n const ref = new ComToastRef(() => this.dismiss(id, 'manual'));\n this.refs.set(id, ref);\n\n const state: ComToastState = {\n id,\n data,\n type,\n duration,\n showProgress,\n showClose,\n visible: true,\n remainingPercent: 100,\n };\n\n this.toasts.update((list) => [...list, state]);\n this.enforceMaxVisible();\n\n if (duration > 0) {\n this.startTimer(id, duration);\n }\n\n return ref;\n }\n\n /** Show a success toast. */\n success(message: string, title?: string): ComToastRef {\n return this.showByType('success', message, title);\n }\n\n /** Show a warning toast. */\n warn(message: string, title?: string): ComToastRef {\n return this.showByType('warn', message, title);\n }\n\n /** Show an error toast. */\n error(message: string, title?: string): ComToastRef {\n return this.showByType('error', message, title);\n }\n\n /** Show an info toast. */\n info(message: string, title?: string): ComToastRef {\n return this.showByType('info', message, title);\n }\n\n /** Dismiss all active toasts. */\n dismissAll(): void {\n for (const toast of this.toasts()) {\n this.dismiss(toast.id, 'manual');\n }\n }\n\n // ─── Private ───\n\n private showByType(type: ComToastType, message: string, title?: string): ComToastRef {\n const data: ComToastData = { type, message };\n if (title !== undefined) data.title = title;\n return this.show(data);\n }\n\n private ensureContainer(): void {\n if (this.overlayRef || !isPlatformBrowser(this.platformId)) return;\n\n const positionStrategy = this.buildPositionStrategy(this.config.position);\n\n const containerData: ComToastContainerData = {\n toasts: this.toasts.asReadonly(),\n position: this.position.asReadonly(),\n onMouseEnter: (id: number) => this.pauseTimer(id),\n onMouseLeave: (id: number) => this.resumeTimer(id),\n onDismiss: (id: number) => this.dismiss(id, 'manual'),\n onAction: (id: number) => this.handleAction(id),\n onDismissLatest: () => this.dismissLatest(),\n onAnimationDone: (id: number) => this.removeToast(id),\n };\n\n const containerInjector = Injector.create({\n providers: [{ provide: COM_TOAST_CONTAINER_DATA, useValue: containerData }],\n parent: this.injector,\n });\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n hasBackdrop: false,\n panelClass: 'com-toast-overlay',\n disposeOnNavigation: false,\n });\n\n const portal = new ComponentPortal(ComToastContainerComponent, null, containerInjector);\n this.overlayRef.attach(portal);\n }\n\n private buildPositionStrategy(position: ComToastPosition): GlobalPositionStrategy {\n const strategy = this.overlay.position().global();\n\n switch (position) {\n case 'top-right':\n return strategy.top('0').right('0');\n case 'top-left':\n return strategy.top('0').left('0');\n case 'top-center':\n return strategy.top('0').centerHorizontally();\n case 'bottom-right':\n return strategy.bottom('0').right('0');\n case 'bottom-left':\n return strategy.bottom('0').left('0');\n case 'bottom-center':\n return strategy.bottom('0').centerHorizontally();\n }\n }\n\n private dismiss(id: number, reason: ComToastDismissReason): void {\n this.clearTimer(id);\n this.dismissReasons.set(id, reason);\n\n // Trigger exit animation\n this.updateToast(id, { visible: false });\n\n // Set fallback timeout in case animationend doesn't fire\n const fallback = setTimeout(() => this.removeToast(id), ANIMATION_FALLBACK_MS);\n this.animationFallbacks.set(id, fallback);\n }\n\n private removeToast(id: number): void {\n // Clear animation fallback\n const fallback = this.animationFallbacks.get(id);\n if (fallback) {\n clearTimeout(fallback);\n this.animationFallbacks.delete(id);\n }\n\n // Check if toast still exists (may have been removed already)\n if (!this.toasts().some((t) => t.id === id)) return;\n\n this.toasts.update((list) => list.filter((t) => t.id !== id));\n\n const reason = this.dismissReasons.get(id) ?? 'auto';\n this.dismissReasons.delete(id);\n\n const ref = this.refs.get(id);\n if (ref) {\n ref._notifyDismissed({ reason });\n this.refs.delete(id);\n }\n\n if (this.toasts().length === 0) {\n this.disposeOverlay();\n }\n }\n\n private handleAction(id: number): void {\n const ref = this.refs.get(id);\n if (ref) {\n ref._notifyAction();\n }\n this.dismiss(id, 'action');\n }\n\n private dismissLatest(): void {\n const visible = this.toasts().filter((t) => t.visible);\n const latest = visible[visible.length - 1];\n if (latest) {\n this.dismiss(latest.id, 'manual');\n }\n }\n\n private enforceMaxVisible(): void {\n const currentToasts = this.toasts();\n const visibleCount = currentToasts.filter((t) => t.visible).length;\n\n if (visibleCount > this.config.maxVisible) {\n const oldest = currentToasts.find((t) => t.visible);\n if (oldest) {\n this.dismiss(oldest.id, 'limit');\n }\n }\n }\n\n // ─── Timer (rAF) ───\n\n private startTimer(id: number, duration: number): void {\n const now = this.now();\n this.timers.set(id, {\n startTime: now,\n elapsed: 0,\n duration,\n paused: false,\n pausedAt: 0,\n });\n\n this.ensureRafLoop();\n }\n\n private ensureRafLoop(): void {\n if (this.rafHandle !== null) return;\n\n const win = this.document.defaultView;\n if (!win) return;\n\n const tick = (): void => {\n const now = this.now();\n let needsUpdate = false;\n\n for (const [id, timer] of this.timers) {\n if (timer.paused) continue;\n\n const elapsed = timer.elapsed + (now - timer.startTime);\n const remaining = Math.max(0, 100 - (elapsed / timer.duration) * 100);\n const rounded = Math.round(remaining);\n\n // Find current state to compare\n const toast = this.toasts().find((t) => t.id === id);\n if (!toast || !toast.visible) {\n this.clearTimer(id);\n continue;\n }\n\n if (Math.round(toast.remainingPercent) !== rounded) {\n needsUpdate = true;\n }\n\n if (remaining <= 0) {\n this.clearTimer(id);\n this.dismiss(id, 'auto');\n needsUpdate = true;\n }\n }\n\n // Batch-update all progress values in a single signal write\n if (needsUpdate) {\n const now2 = this.now();\n this.toasts.update((list) =>\n list.map((t) => {\n const timer = this.timers.get(t.id);\n if (!timer || timer.paused) return t;\n\n const elapsed = timer.elapsed + (now2 - timer.startTime);\n const remaining = Math.max(0, 100 - (elapsed / timer.duration) * 100);\n return { ...t, remainingPercent: remaining };\n }),\n );\n }\n\n // Continue loop if there are active timers\n if (this.timers.size > 0) {\n this.rafHandle = win.requestAnimationFrame(tick);\n } else {\n this.rafHandle = null;\n }\n };\n\n this.rafHandle = win.requestAnimationFrame(tick);\n }\n\n private pauseTimer(id: number): void {\n if (!this.config.pauseOnHover) return;\n\n const timer = this.timers.get(id);\n if (!timer || timer.paused) return;\n\n const now = this.now();\n timer.elapsed += now - timer.startTime;\n timer.paused = true;\n timer.pausedAt = now;\n }\n\n private resumeTimer(id: number): void {\n if (!this.config.pauseOnHover) return;\n\n const timer = this.timers.get(id);\n if (!timer || !timer.paused) return;\n\n timer.paused = false;\n timer.startTime = this.now();\n }\n\n private clearTimer(id: number): void {\n this.timers.delete(id);\n }\n\n private now(): number {\n return this.document.defaultView?.performance.now() ?? Date.now();\n }\n\n // ─── Helpers ───\n\n private updateToast(id: number, patch: Partial<ComToastState>): void {\n this.toasts.update((list) =>\n list.map((t) => (t.id === id ? { ...t, ...patch } : t)),\n );\n }\n\n private disposeOverlay(): void {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n\n const win = this.document.defaultView;\n if (this.rafHandle !== null && win) {\n win.cancelAnimationFrame(this.rafHandle);\n this.rafHandle = null;\n }\n }\n\n private dispose(): void {\n for (const id of this.timers.keys()) {\n this.clearTimer(id);\n }\n for (const [, fallback] of this.animationFallbacks) {\n clearTimeout(fallback);\n }\n this.animationFallbacks.clear();\n this.dismissReasons.clear();\n this.refs.clear();\n this.disposeOverlay();\n }\n}\n","// Public API for the toast notification system\n\n// Service\nexport { ComToastService } from './toast.service';\n\n// Ref\nexport { ComToastRef } from './toast.ref';\n\n// Types and interfaces\nexport type {\n ComToastConfig,\n ComToastData,\n ComToastType,\n ComToastPosition,\n ComToastDismissEvent,\n ComToastDismissReason,\n ComToastTemplateContext,\n} from './toast.models';\n\n// Providers\nexport { provideComToastConfig, COM_TOAST_CONFIG } from './toast.providers';\n\n// Variants (for advanced customization)\nexport {\n toastVariants,\n toastContainerVariants,\n toastProgressVariants,\n toastCloseButtonVariants,\n} from './toast.variants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-com-components-toast.mjs","sources":["../../../projects/com/components/toast/toast.ref.ts","../../../projects/com/components/toast/toast.variants.ts","../../../projects/com/components/toast/toast.utils.ts","../../../projects/com/components/toast/toast.component.ts","../../../projects/com/components/toast/toast.providers.ts","../../../projects/com/components/toast/toast-container.component.ts","../../../projects/com/components/toast/toast.service.ts","../../../projects/com/components/toast/index.ts","../../../projects/com/components/toast/ngx-com-components-toast.ts"],"sourcesContent":["import { Observable, Subject } from 'rxjs';\nimport type { ComToastDismissEvent } from './toast.models';\n\n/**\n * Reference to an active toast notification.\n * Returned by `ComToastService` methods for programmatic control.\n */\nexport class ComToastRef {\n private readonly dismissSubject = new Subject<ComToastDismissEvent>();\n private readonly actionSubject = new Subject<void>();\n private readonly dismissFn: () => void;\n private dismissed = false;\n\n constructor(dismissFn: () => void) {\n this.dismissFn = dismissFn;\n }\n\n /** Programmatically dismiss the toast. */\n dismiss(): void {\n if (!this.dismissed) {\n this.dismissFn();\n }\n }\n\n /** Emits once when the toast is dismissed (for any reason). */\n afterDismissed(): Observable<ComToastDismissEvent> {\n return this.dismissSubject.asObservable();\n }\n\n /** Emits when the action button is clicked. */\n afterAction(): Observable<void> {\n return this.actionSubject.asObservable();\n }\n\n /** @internal */\n _notifyDismissed(event: ComToastDismissEvent): void {\n if (this.dismissed) return;\n this.dismissed = true;\n this.dismissSubject.next(event);\n this.dismissSubject.complete();\n this.actionSubject.complete();\n }\n\n /** @internal */\n _notifyAction(): void {\n this.actionSubject.next();\n }\n}\n","import { cva } from 'class-variance-authority';\nimport type { ComToastType, ComToastPosition } from './toast.models';\n\n/**\n * CVA variants for an individual toast card.\n *\n * @tokens `--color-success`, `--color-success-foreground`,\n * `--color-warn`, `--color-warn-foreground`,\n * `--color-warn-subtle`, `--color-warn-subtle-foreground`,\n * `--color-primary-subtle`, `--color-primary-subtle-foreground`,\n * `--color-border`, `--shadow-overlay`, `--radius-card`\n */\nexport const toastVariants: (props?: {\n type?: ComToastType;\n}) => string = cva(\n [\n 'flex',\n 'w-full',\n 'max-w-sm',\n 'items-start',\n 'gap-3',\n 'rounded-card',\n 'border',\n 'p-4',\n 'shadow-overlay',\n 'pointer-events-auto',\n 'relative',\n 'overflow-hidden',\n ],\n {\n variants: {\n type: {\n success: 'bg-success text-success-foreground border-success',\n warn: 'bg-warn-subtle text-warn-subtle-foreground border-warn',\n error: 'bg-warn text-warn-foreground border-warn',\n info: 'bg-primary-subtle text-primary-subtle-foreground border-primary',\n },\n },\n defaultVariants: {\n type: 'info',\n },\n },\n);\n\n/**\n * CVA variants for the toast container positioning.\n */\nexport const toastContainerVariants: (props?: {\n position?: ComToastPosition;\n}) => string = cva(\n [\n 'flex',\n 'gap-3',\n 'pointer-events-none',\n 'max-h-screen',\n 'p-4',\n ],\n {\n variants: {\n position: {\n 'top-right': 'flex-col items-end',\n 'top-left': 'flex-col items-start',\n 'top-center': 'flex-col items-center',\n 'bottom-right': 'flex-col-reverse items-end',\n 'bottom-left': 'flex-col-reverse items-start',\n 'bottom-center': 'flex-col-reverse items-center',\n },\n },\n defaultVariants: {\n position: 'bottom-right',\n },\n },\n);\n\n/**\n * CVA variants for the toast progress bar.\n */\nexport const toastProgressVariants: (props?: {\n type?: ComToastType;\n}) => string = cva(\n [\n 'absolute',\n 'bottom-0',\n 'left-0',\n 'h-0.5',\n 'rounded-pill',\n ],\n {\n variants: {\n type: {\n success: 'bg-success-foreground-track',\n warn: 'bg-warn-subtle-foreground-track',\n error: 'bg-warn-foreground-track',\n info: 'bg-primary-subtle-foreground-track',\n },\n },\n defaultVariants: {\n type: 'info',\n },\n },\n);\n\n/**\n * CVA variants for the toast close button.\n *\n * @tokens `--color-ring`, `--radius-card`,\n * `--color-success-foreground-muted`, `--color-warn-subtle-foreground-muted`,\n * `--color-warn-foreground-muted`, `--color-primary-subtle-foreground-muted`\n */\nexport const toastCloseButtonVariants: (props?: {\n type?: ComToastType;\n}) => string = cva(\n [\n 'shrink-0',\n 'rounded-card',\n 'p-0.5',\n 'transition-colors',\n 'outline-none',\n 'focus-visible:outline-2',\n 'focus-visible:outline-offset-2',\n 'focus-visible:outline-[--color-ring]',\n ],\n {\n variants: {\n type: {\n success: 'text-success-foreground-muted hover:text-success-foreground',\n warn: 'text-warn-subtle-foreground-muted hover:text-warn-subtle-foreground',\n error: 'text-warn-foreground-muted hover:text-warn-foreground',\n info: 'text-primary-subtle-foreground-muted hover:text-primary-subtle-foreground',\n },\n },\n defaultVariants: {\n type: 'info',\n },\n },\n);\n","export { mergeClasses } from 'ngx-com/utils';\n\nlet toastIdCounter = 0;\n\n/**\n * Generate a unique ID for a toast notification.\n */\nexport function generateToastId(): number {\n return ++toastIdCounter;\n}\n\n/** Default Lucide icon names per toast type. */\nexport const DEFAULT_TOAST_ICONS: Record<string, string> = {\n success: 'circle-check',\n warn: 'triangle-alert',\n error: 'circle-x',\n info: 'info',\n};\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n input,\n output,\n} from '@angular/core';\nimport type { InputSignal, OutputEmitterRef, Signal } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ComIcon } from 'ngx-com/components/icon';\nimport {\n toastVariants,\n toastProgressVariants,\n toastCloseButtonVariants,\n} from './toast.variants';\nimport { mergeClasses, DEFAULT_TOAST_ICONS } from './toast.utils';\nimport type { ComToastState, ComToastTemplateContext } from './toast.models';\n\n/**\n * Internal toast notification component rendered inside the container.\n *\n * @internal Not exported in public API\n *\n * @tokens `--color-success`, `--color-success-foreground`,\n * `--color-warn`, `--color-warn-foreground`,\n * `--color-warn-subtle`, `--color-warn-subtle-foreground`,\n * `--color-primary-subtle`, `--color-primary-subtle-foreground`,\n * `--color-border`, `--shadow-overlay`, `--radius-card`, `--color-ring`\n */\n@Component({\n selector: 'com-toast',\n template: `\n <div\n [class]=\"toastClasses()\"\n [attr.role]=\"ariaRole()\"\n [attr.aria-live]=\"ariaLive()\"\n [attr.data-state]=\"state().visible ? 'open' : 'closed'\"\n (animationend)=\"onAnimationEnd()\"\n >\n @if (state().data.customTemplate) {\n <ng-container\n [ngTemplateOutlet]=\"state().data.customTemplate!\"\n [ngTemplateOutletContext]=\"templateContext()\"\n />\n } @else {\n <com-icon\n [name]=\"resolvedIcon()\"\n size=\"md\"\n class=\"mt-0.5 shrink-0\"\n aria-hidden=\"true\"\n />\n <div class=\"flex-1 min-w-0\">\n @if (state().data.title) {\n <p class=\"text-sm font-semibold\">{{ state().data.title }}</p>\n }\n <p class=\"text-sm\" [class.mt-1]=\"state().data.title\">\n {{ state().data.message }}\n </p>\n @if (state().data.action) {\n <button\n type=\"button\"\n class=\"mt-2 text-sm font-medium underline underline-offset-4\n outline-none\n focus-visible:outline-2\n focus-visible:outline-offset-2\n focus-visible:outline-[--color-ring]\"\n (click)=\"onAction.emit(state().id)\"\n >\n {{ state().data.action!.label }}\n </button>\n }\n </div>\n @if (state().showClose) {\n <button\n type=\"button\"\n [class]=\"closeButtonClasses()\"\n aria-label=\"Dismiss notification\"\n (click)=\"onDismiss.emit(state().id)\"\n >\n <com-icon name=\"x\" size=\"sm\" aria-hidden=\"true\" />\n </button>\n }\n }\n @if (state().showProgress && state().duration > 0) {\n <div\n [class]=\"progressClasses()\"\n [style.width.%]=\"state().remainingPercent\"\n ></div>\n }\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n\n [data-state='open'] {\n --tw-enter-opacity: 0;\n --tw-enter-translate-x: 0;\n --tw-enter-translate-y: 0;\n }\n\n [data-state='closed'] {\n --tw-exit-opacity: 0;\n --tw-exit-translate-x: 0;\n --tw-exit-translate-y: 0;\n }\n\n @media (prefers-reduced-motion: reduce) {\n [data-state='open'],\n [data-state='closed'] {\n animation: none;\n }\n }\n `,\n imports: [NgTemplateOutlet, ComIcon],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ComToastComponent {\n /** The toast state, set by the container. */\n readonly state: InputSignal<ComToastState> = input.required<ComToastState>();\n\n /** Emitted when the toast should be dismissed. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix -- intentional API naming for toast event delegation\n readonly onDismiss: OutputEmitterRef<number> = output<number>();\n\n /** Emitted when the action button is clicked. */\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix -- intentional API naming for toast event delegation\n readonly onAction: OutputEmitterRef<number> = output<number>();\n\n /** Emitted when the mouse enters the toast. */\n readonly mouseEnter: OutputEmitterRef<void> = output<void>();\n\n /** Emitted when the mouse leaves the toast. */\n readonly mouseLeave: OutputEmitterRef<void> = output<void>();\n\n /** Emitted when the exit animation completes. */\n readonly animationDone: OutputEmitterRef<number> = output<number>();\n\n /** Resolved icon name. */\n protected readonly resolvedIcon: Signal<string> = computed(\n () => this.state().data.icon ?? DEFAULT_TOAST_ICONS[this.state().type] ?? 'info',\n );\n\n /** ARIA role based on toast type. */\n protected readonly ariaRole: Signal<string> = computed(() =>\n this.state().type === 'error' ? 'alert' : 'status',\n );\n\n /** ARIA live region politeness. */\n protected readonly ariaLive: Signal<string> = computed(() =>\n this.state().type === 'error' ? 'assertive' : 'polite',\n );\n\n /** Computed toast card classes. */\n protected readonly toastClasses: Signal<string> = computed(() =>\n mergeClasses(\n toastVariants({ type: this.state().type }),\n this.state().visible\n ? 'animate-in fade-in-0 slide-in-from-bottom-2'\n : 'animate-out fade-out-0 slide-out-to-right-full',\n ),\n );\n\n /** Computed progress bar classes. */\n protected readonly progressClasses: Signal<string> = computed(() =>\n mergeClasses(toastProgressVariants({ type: this.state().type })),\n );\n\n /** Computed close button classes. */\n protected readonly closeButtonClasses: Signal<string> = computed(() =>\n mergeClasses(toastCloseButtonVariants({ type: this.state().type })),\n );\n\n /** Template context for custom templates. */\n protected readonly templateContext: Signal<ComToastTemplateContext> = computed(() => ({\n $implicit: this.state().data,\n dismiss: () => this.onDismiss.emit(this.state().id),\n action: () => this.onAction.emit(this.state().id),\n }));\n\n protected onAnimationEnd(): void {\n if (!this.state().visible) {\n this.animationDone.emit(this.state().id);\n }\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport type { Provider } from '@angular/core';\nimport type { ComToastConfig, ComToastContainerData } from './toast.models';\n\n/**\n * Injection token for global toast configuration.\n */\nexport const COM_TOAST_CONFIG: InjectionToken<ComToastConfig> =\n new InjectionToken<ComToastConfig>('COM_TOAST_CONFIG');\n\n/**\n * Injection token for internal container communication.\n * @internal\n */\nexport const COM_TOAST_CONTAINER_DATA: InjectionToken<ComToastContainerData> =\n new InjectionToken<ComToastContainerData>('COM_TOAST_CONTAINER_DATA');\n\n/**\n * Provides global toast configuration.\n *\n * @example\n * ```typescript\n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideComToastConfig({ position: 'top-center', duration: 3000 }),\n * ],\n * });\n * ```\n */\nexport function provideComToastConfig(config: ComToastConfig): Provider {\n return { provide: COM_TOAST_CONFIG, useValue: config };\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n} from '@angular/core';\nimport type { Signal } from '@angular/core';\nimport { ComToastComponent } from './toast.component';\nimport { toastContainerVariants } from './toast.variants';\nimport { mergeClasses } from './toast.utils';\nimport { COM_TOAST_CONTAINER_DATA } from './toast.providers';\nimport type { ComToastContainerData, ComToastState } from './toast.models';\n\n/**\n * Internal toast container component that manages positioning and stacking.\n *\n * @internal Not exported in public API\n *\n * @tokens `--color-success`, `--color-success-foreground`,\n * `--color-warn`, `--color-warn-foreground`,\n * `--color-warn-subtle`, `--color-warn-subtle-foreground`,\n * `--color-primary-subtle`, `--color-primary-subtle-foreground`,\n * `--color-border`, `--shadow-overlay`, `--radius-card`\n */\n@Component({\n selector: 'com-toast-container',\n host: {\n '(keydown.escape)': 'onEscapeKey()',\n tabindex: '-1',\n },\n template: `\n <div\n [class]=\"containerClasses()\"\n role=\"region\"\n aria-label=\"Notifications\"\n >\n @for (toast of toasts(); track toast.id) {\n <com-toast\n [state]=\"toast\"\n (onDismiss)=\"containerData.onDismiss($event)\"\n (onAction)=\"containerData.onAction($event)\"\n (mouseEnter)=\"containerData.onMouseEnter(toast.id)\"\n (mouseLeave)=\"containerData.onMouseLeave(toast.id)\"\n (animationDone)=\"containerData.onAnimationDone($event)\"\n />\n }\n </div>\n `,\n styles: `\n :host {\n display: contents;\n }\n `,\n imports: [ComToastComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ComToastContainerComponent {\n protected readonly containerData: ComToastContainerData = inject(COM_TOAST_CONTAINER_DATA);\n\n /** Active toast states, read from the service's signal. */\n protected readonly toasts: Signal<ComToastState[]> = computed(() => this.containerData.toasts());\n\n /** Computed container positioning classes. */\n protected readonly containerClasses: Signal<string> = computed(() =>\n mergeClasses(toastContainerVariants({ position: this.containerData.position() })),\n );\n\n protected onEscapeKey(): void {\n this.containerData.onDismissLatest();\n }\n}\n","import {\n DestroyRef,\n inject,\n Injectable,\n Injector,\n PLATFORM_ID,\n signal,\n} from '@angular/core';\nimport type { WritableSignal } from '@angular/core';\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { Overlay } from '@angular/cdk/overlay';\nimport type { GlobalPositionStrategy, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComToastRef } from './toast.ref';\nimport { ComToastContainerComponent } from './toast-container.component';\nimport { COM_TOAST_CONFIG, COM_TOAST_CONTAINER_DATA } from './toast.providers';\nimport { generateToastId } from './toast.utils';\nimport type {\n ComToastConfig,\n ComToastContainerData,\n ComToastData,\n ComToastDismissReason,\n ComToastPosition,\n ComToastState,\n ComToastTimerState,\n ComToastType,\n} from './toast.models';\n\n/** Default durations by toast type. */\nconst DEFAULT_DURATION: Record<ComToastType, number> = {\n success: 5000,\n warn: 5000,\n error: 0,\n info: 5000,\n};\n\n/** Fallback timeout for exit animation removal when animationend doesn't fire. */\nconst ANIMATION_FALLBACK_MS = 200;\n\n/**\n * Service for creating toast notifications imperatively.\n *\n * @example\n * ```typescript\n * const toast = inject(ComToastService);\n * toast.success('File uploaded successfully.');\n * toast.error('Failed to save.', 'Error');\n *\n * const ref = toast.show({ type: 'info', message: 'Item deleted.', action: { label: 'Undo' } });\n * ref.afterAction().subscribe(() => undoDelete());\n * ```\n */\n@Injectable({ providedIn: 'root' })\nexport class ComToastService {\n private readonly overlay = inject(Overlay);\n private readonly injector = inject(Injector);\n private readonly destroyRef = inject(DestroyRef);\n private readonly platformId = inject(PLATFORM_ID);\n private readonly document = inject(DOCUMENT);\n private readonly globalConfig = inject(COM_TOAST_CONFIG, { optional: true });\n\n private overlayRef: OverlayRef | null = null;\n private readonly toasts: WritableSignal<ComToastState[]> = signal([]);\n private readonly position: WritableSignal<ComToastPosition>;\n private readonly timers = new Map<number, ComToastTimerState>();\n private readonly refs = new Map<number, ComToastRef>();\n private readonly animationFallbacks = new Map<number, ReturnType<typeof setTimeout>>();\n private readonly dismissReasons = new Map<number, ComToastDismissReason>();\n private rafHandle: number | null = null;\n\n private readonly config: Required<ComToastConfig>;\n\n constructor() {\n this.config = {\n position: 'bottom-right',\n duration: 5000,\n maxVisible: 5,\n pauseOnHover: true,\n showProgress: true,\n showClose: true,\n ...this.globalConfig,\n };\n this.position = signal(this.config.position);\n this.destroyRef.onDestroy(() => this.dispose());\n }\n\n /**\n * Show a toast notification with full configuration.\n */\n show(data: ComToastData): ComToastRef {\n this.ensureContainer();\n\n const id = generateToastId();\n const type: ComToastType = data.type ?? 'info';\n const duration = data.duration ?? DEFAULT_DURATION[type] ?? this.config.duration;\n const showProgress = data.showProgress ?? this.config.showProgress;\n const showClose = data.showClose ?? this.config.showClose;\n\n const ref = new ComToastRef(() => this.dismiss(id, 'manual'));\n this.refs.set(id, ref);\n\n const state: ComToastState = {\n id,\n data,\n type,\n duration,\n showProgress,\n showClose,\n visible: true,\n remainingPercent: 100,\n };\n\n this.toasts.update((list) => [...list, state]);\n this.enforceMaxVisible();\n\n if (duration > 0) {\n this.startTimer(id, duration);\n }\n\n return ref;\n }\n\n /** Show a success toast. */\n success(message: string, title?: string): ComToastRef {\n return this.showByType('success', message, title);\n }\n\n /** Show a warning toast. */\n warn(message: string, title?: string): ComToastRef {\n return this.showByType('warn', message, title);\n }\n\n /** Show an error toast. */\n error(message: string, title?: string): ComToastRef {\n return this.showByType('error', message, title);\n }\n\n /** Show an info toast. */\n info(message: string, title?: string): ComToastRef {\n return this.showByType('info', message, title);\n }\n\n /** Dismiss all active toasts. */\n dismissAll(): void {\n for (const toast of this.toasts()) {\n this.dismiss(toast.id, 'manual');\n }\n }\n\n // ─── Private ───\n\n private showByType(type: ComToastType, message: string, title?: string): ComToastRef {\n const data: ComToastData = { type, message };\n if (title !== undefined) data.title = title;\n return this.show(data);\n }\n\n private ensureContainer(): void {\n if (this.overlayRef || !isPlatformBrowser(this.platformId)) return;\n\n const positionStrategy = this.buildPositionStrategy(this.config.position);\n\n const containerData: ComToastContainerData = {\n toasts: this.toasts.asReadonly(),\n position: this.position.asReadonly(),\n onMouseEnter: (id: number) => this.pauseTimer(id),\n onMouseLeave: (id: number) => this.resumeTimer(id),\n onDismiss: (id: number) => this.dismiss(id, 'manual'),\n onAction: (id: number) => this.handleAction(id),\n onDismissLatest: () => this.dismissLatest(),\n onAnimationDone: (id: number) => this.removeToast(id),\n };\n\n const containerInjector = Injector.create({\n providers: [{ provide: COM_TOAST_CONTAINER_DATA, useValue: containerData }],\n parent: this.injector,\n });\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n hasBackdrop: false,\n panelClass: 'com-toast-overlay',\n disposeOnNavigation: false,\n });\n\n const portal = new ComponentPortal(ComToastContainerComponent, null, containerInjector);\n this.overlayRef.attach(portal);\n }\n\n private buildPositionStrategy(position: ComToastPosition): GlobalPositionStrategy {\n const strategy = this.overlay.position().global();\n\n switch (position) {\n case 'top-right':\n return strategy.top('0').right('0');\n case 'top-left':\n return strategy.top('0').left('0');\n case 'top-center':\n return strategy.top('0').centerHorizontally();\n case 'bottom-right':\n return strategy.bottom('0').right('0');\n case 'bottom-left':\n return strategy.bottom('0').left('0');\n case 'bottom-center':\n return strategy.bottom('0').centerHorizontally();\n }\n }\n\n private dismiss(id: number, reason: ComToastDismissReason): void {\n this.clearTimer(id);\n this.dismissReasons.set(id, reason);\n\n // Trigger exit animation\n this.updateToast(id, { visible: false });\n\n // Set fallback timeout in case animationend doesn't fire\n const fallback = setTimeout(() => this.removeToast(id), ANIMATION_FALLBACK_MS);\n this.animationFallbacks.set(id, fallback);\n }\n\n private removeToast(id: number): void {\n // Clear animation fallback\n const fallback = this.animationFallbacks.get(id);\n if (fallback) {\n clearTimeout(fallback);\n this.animationFallbacks.delete(id);\n }\n\n // Check if toast still exists (may have been removed already)\n if (!this.toasts().some((t) => t.id === id)) return;\n\n this.toasts.update((list) => list.filter((t) => t.id !== id));\n\n const reason = this.dismissReasons.get(id) ?? 'auto';\n this.dismissReasons.delete(id);\n\n const ref = this.refs.get(id);\n if (ref) {\n ref._notifyDismissed({ reason });\n this.refs.delete(id);\n }\n\n if (this.toasts().length === 0) {\n this.disposeOverlay();\n }\n }\n\n private handleAction(id: number): void {\n const ref = this.refs.get(id);\n if (ref) {\n ref._notifyAction();\n }\n this.dismiss(id, 'action');\n }\n\n private dismissLatest(): void {\n const visible = this.toasts().filter((t) => t.visible);\n const latest = visible[visible.length - 1];\n if (latest) {\n this.dismiss(latest.id, 'manual');\n }\n }\n\n private enforceMaxVisible(): void {\n const currentToasts = this.toasts();\n const visibleCount = currentToasts.filter((t) => t.visible).length;\n\n if (visibleCount > this.config.maxVisible) {\n const oldest = currentToasts.find((t) => t.visible);\n if (oldest) {\n this.dismiss(oldest.id, 'limit');\n }\n }\n }\n\n // ─── Timer (rAF) ───\n\n private startTimer(id: number, duration: number): void {\n const now = this.now();\n this.timers.set(id, {\n startTime: now,\n elapsed: 0,\n duration,\n paused: false,\n pausedAt: 0,\n });\n\n this.ensureRafLoop();\n }\n\n private ensureRafLoop(): void {\n if (this.rafHandle !== null) return;\n\n const win = this.document.defaultView;\n if (!win) return;\n\n const tick = (): void => {\n const now = this.now();\n let needsUpdate = false;\n\n for (const [id, timer] of this.timers) {\n if (timer.paused) continue;\n\n const elapsed = timer.elapsed + (now - timer.startTime);\n const remaining = Math.max(0, 100 - (elapsed / timer.duration) * 100);\n const rounded = Math.round(remaining);\n\n // Find current state to compare\n const toast = this.toasts().find((t) => t.id === id);\n if (!toast || !toast.visible) {\n this.clearTimer(id);\n continue;\n }\n\n if (Math.round(toast.remainingPercent) !== rounded) {\n needsUpdate = true;\n }\n\n if (remaining <= 0) {\n this.clearTimer(id);\n this.dismiss(id, 'auto');\n needsUpdate = true;\n }\n }\n\n // Batch-update all progress values in a single signal write\n if (needsUpdate) {\n const now2 = this.now();\n this.toasts.update((list) =>\n list.map((t) => {\n const timer = this.timers.get(t.id);\n if (!timer || timer.paused) return t;\n\n const elapsed = timer.elapsed + (now2 - timer.startTime);\n const remaining = Math.max(0, 100 - (elapsed / timer.duration) * 100);\n return { ...t, remainingPercent: remaining };\n }),\n );\n }\n\n // Continue loop if there are active timers\n if (this.timers.size > 0) {\n this.rafHandle = win.requestAnimationFrame(tick);\n } else {\n this.rafHandle = null;\n }\n };\n\n this.rafHandle = win.requestAnimationFrame(tick);\n }\n\n private pauseTimer(id: number): void {\n if (!this.config.pauseOnHover) return;\n\n const timer = this.timers.get(id);\n if (!timer || timer.paused) return;\n\n const now = this.now();\n timer.elapsed += now - timer.startTime;\n timer.paused = true;\n timer.pausedAt = now;\n }\n\n private resumeTimer(id: number): void {\n if (!this.config.pauseOnHover) return;\n\n const timer = this.timers.get(id);\n if (!timer || !timer.paused) return;\n\n timer.paused = false;\n timer.startTime = this.now();\n }\n\n private clearTimer(id: number): void {\n this.timers.delete(id);\n }\n\n private now(): number {\n return this.document.defaultView?.performance.now() ?? Date.now();\n }\n\n // ─── Helpers ───\n\n private updateToast(id: number, patch: Partial<ComToastState>): void {\n this.toasts.update((list) =>\n list.map((t) => (t.id === id ? { ...t, ...patch } : t)),\n );\n }\n\n private disposeOverlay(): void {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n\n const win = this.document.defaultView;\n if (this.rafHandle !== null && win) {\n win.cancelAnimationFrame(this.rafHandle);\n this.rafHandle = null;\n }\n }\n\n private dispose(): void {\n for (const id of this.timers.keys()) {\n this.clearTimer(id);\n }\n for (const [, fallback] of this.animationFallbacks) {\n clearTimeout(fallback);\n }\n this.animationFallbacks.clear();\n this.dismissReasons.clear();\n this.refs.clear();\n this.disposeOverlay();\n }\n}\n","// Public API for the toast notification system\n\n// Service\nexport { ComToastService } from './toast.service';\n\n// Ref\nexport { ComToastRef } from './toast.ref';\n\n// Types and interfaces\nexport type {\n ComToastConfig,\n ComToastData,\n ComToastType,\n ComToastPosition,\n ComToastDismissEvent,\n ComToastDismissReason,\n ComToastTemplateContext,\n} from './toast.models';\n\n// Providers\nexport { provideComToastConfig, COM_TOAST_CONFIG } from './toast.providers';\n\n// Variants (for advanced customization)\nexport {\n toastVariants,\n toastContainerVariants,\n toastProgressVariants,\n toastCloseButtonVariants,\n} from './toast.variants';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -27,12 +27,12 @@ const tooltipPanelVariants = cva([
27
27
  primary: 'bg-primary text-primary-foreground',
28
28
  accent: 'bg-accent text-accent-foreground',
29
29
  warn: 'bg-warn text-warn-foreground',
30
- invert: 'bg-popover text-popover-foreground border border-border shadow-md',
30
+ invert: 'bg-popover text-popover-foreground border border-border shadow-overlay',
31
31
  },
32
32
  size: {
33
- sm: 'px-2 py-1 text-xs max-w-48 rounded-md',
34
- md: 'px-3 py-1.5 text-sm max-w-64 rounded-lg',
35
- lg: 'px-4 py-2.5 text-sm max-w-80 rounded-xl',
33
+ sm: 'px-2 py-1 text-xs max-w-48 rounded-popover',
34
+ md: 'px-3 py-1.5 text-sm max-w-64 rounded-popover',
35
+ lg: 'px-4 py-2.5 text-sm max-w-80 rounded-popover',
36
36
  },
37
37
  },
38
38
  defaultVariants: {
@@ -406,7 +406,7 @@ class ComTooltip {
406
406
  this.hide();
407
407
  }
408
408
  }
409
- onTouchStart(event) {
409
+ onTouchStart(_event) {
410
410
  const touchMode = this.comTooltipTouchGestures();
411
411
  if (touchMode === 'off' || this.comTooltipDisabled())
412
412
  return;