@cdevhub/ngx-tw 0.2.0 → 0.3.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 (144) hide show
  1. package/README.md +264 -49
  2. package/fesm2022/cdevhub-ngx-tw-accordion.mjs +11 -7
  3. package/fesm2022/cdevhub-ngx-tw-accordion.mjs.map +1 -1
  4. package/fesm2022/cdevhub-ngx-tw-alert.mjs +43 -29
  5. package/fesm2022/cdevhub-ngx-tw-alert.mjs.map +1 -1
  6. package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs +103 -0
  7. package/fesm2022/cdevhub-ngx-tw-aspect-ratio.mjs.map +1 -0
  8. package/fesm2022/cdevhub-ngx-tw-avatar.mjs +56 -31
  9. package/fesm2022/cdevhub-ngx-tw-avatar.mjs.map +1 -1
  10. package/fesm2022/cdevhub-ngx-tw-badge.mjs +61 -35
  11. package/fesm2022/cdevhub-ngx-tw-badge.mjs.map +1 -1
  12. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs +154 -93
  13. package/fesm2022/cdevhub-ngx-tw-breadcrumbs.mjs.map +1 -1
  14. package/fesm2022/cdevhub-ngx-tw-button.mjs +35 -22
  15. package/fesm2022/cdevhub-ngx-tw-button.mjs.map +1 -1
  16. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs +3 -3
  17. package/fesm2022/cdevhub-ngx-tw-calendar-luxon.mjs.map +1 -1
  18. package/fesm2022/cdevhub-ngx-tw-calendar.mjs +416 -216
  19. package/fesm2022/cdevhub-ngx-tw-calendar.mjs.map +1 -1
  20. package/fesm2022/cdevhub-ngx-tw-card.mjs +33 -24
  21. package/fesm2022/cdevhub-ngx-tw-card.mjs.map +1 -1
  22. package/fesm2022/cdevhub-ngx-tw-carousel.mjs +152 -81
  23. package/fesm2022/cdevhub-ngx-tw-carousel.mjs.map +1 -1
  24. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs +99 -47
  25. package/fesm2022/cdevhub-ngx-tw-checkbox.mjs.map +1 -1
  26. package/fesm2022/cdevhub-ngx-tw-code-block.mjs +42 -29
  27. package/fesm2022/cdevhub-ngx-tw-code-block.mjs.map +1 -1
  28. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs +46 -29
  29. package/fesm2022/cdevhub-ngx-tw-collapsible.mjs.map +1 -1
  30. package/fesm2022/cdevhub-ngx-tw-combobox.mjs +205 -110
  31. package/fesm2022/cdevhub-ngx-tw-combobox.mjs.map +1 -1
  32. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs +141 -74
  33. package/fesm2022/cdevhub-ngx-tw-command-palette.mjs.map +1 -1
  34. package/fesm2022/cdevhub-ngx-tw-core.mjs +16 -11
  35. package/fesm2022/cdevhub-ngx-tw-core.mjs.map +1 -1
  36. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs +395 -149
  37. package/fesm2022/cdevhub-ngx-tw-date-picker.mjs.map +1 -1
  38. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs +305 -150
  39. package/fesm2022/cdevhub-ngx-tw-date-range-picker.mjs.map +1 -1
  40. package/fesm2022/cdevhub-ngx-tw-dialog.mjs +56 -43
  41. package/fesm2022/cdevhub-ngx-tw-dialog.mjs.map +1 -1
  42. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs +51 -33
  43. package/fesm2022/cdevhub-ngx-tw-empty-state.mjs.map +1 -1
  44. package/fesm2022/cdevhub-ngx-tw-file-upload.mjs +905 -0
  45. package/fesm2022/cdevhub-ngx-tw-file-upload.mjs.map +1 -0
  46. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs +49 -26
  47. package/fesm2022/cdevhub-ngx-tw-flip-card.mjs.map +1 -1
  48. package/fesm2022/cdevhub-ngx-tw-form-field.mjs +133 -74
  49. package/fesm2022/cdevhub-ngx-tw-form-field.mjs.map +1 -1
  50. package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs +2 -2
  51. package/fesm2022/cdevhub-ngx-tw-icon-lucide.mjs.map +1 -1
  52. package/fesm2022/cdevhub-ngx-tw-icon.mjs +28 -17
  53. package/fesm2022/cdevhub-ngx-tw-icon.mjs.map +1 -1
  54. package/fesm2022/cdevhub-ngx-tw-input.mjs +37 -21
  55. package/fesm2022/cdevhub-ngx-tw-input.mjs.map +1 -1
  56. package/fesm2022/cdevhub-ngx-tw-item.mjs +33 -24
  57. package/fesm2022/cdevhub-ngx-tw-item.mjs.map +1 -1
  58. package/fesm2022/cdevhub-ngx-tw-menu.mjs +63 -48
  59. package/fesm2022/cdevhub-ngx-tw-menu.mjs.map +1 -1
  60. package/fesm2022/cdevhub-ngx-tw-number-input.mjs +622 -0
  61. package/fesm2022/cdevhub-ngx-tw-number-input.mjs.map +1 -0
  62. package/fesm2022/cdevhub-ngx-tw-paginator.mjs +142 -72
  63. package/fesm2022/cdevhub-ngx-tw-paginator.mjs.map +1 -1
  64. package/fesm2022/cdevhub-ngx-tw-popover.mjs +101 -46
  65. package/fesm2022/cdevhub-ngx-tw-popover.mjs.map +1 -1
  66. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs +57 -30
  67. package/fesm2022/cdevhub-ngx-tw-progress-bar.mjs.map +1 -1
  68. package/fesm2022/cdevhub-ngx-tw-radio.mjs +108 -57
  69. package/fesm2022/cdevhub-ngx-tw-radio.mjs.map +1 -1
  70. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs +46 -26
  71. package/fesm2022/cdevhub-ngx-tw-segmented-control.mjs.map +1 -1
  72. package/fesm2022/cdevhub-ngx-tw-select.mjs +227 -122
  73. package/fesm2022/cdevhub-ngx-tw-select.mjs.map +1 -1
  74. package/fesm2022/cdevhub-ngx-tw-separator.mjs +21 -12
  75. package/fesm2022/cdevhub-ngx-tw-separator.mjs.map +1 -1
  76. package/fesm2022/cdevhub-ngx-tw-sheet.mjs +58 -44
  77. package/fesm2022/cdevhub-ngx-tw-sheet.mjs.map +1 -1
  78. package/fesm2022/cdevhub-ngx-tw-skeleton.mjs +25 -14
  79. package/fesm2022/cdevhub-ngx-tw-skeleton.mjs.map +1 -1
  80. package/fesm2022/cdevhub-ngx-tw-slider.mjs +155 -79
  81. package/fesm2022/cdevhub-ngx-tw-slider.mjs.map +1 -1
  82. package/fesm2022/cdevhub-ngx-tw-sort.mjs +47 -25
  83. package/fesm2022/cdevhub-ngx-tw-sort.mjs.map +1 -1
  84. package/fesm2022/cdevhub-ngx-tw-spinner.mjs +29 -16
  85. package/fesm2022/cdevhub-ngx-tw-spinner.mjs.map +1 -1
  86. package/fesm2022/cdevhub-ngx-tw-split.mjs +72 -42
  87. package/fesm2022/cdevhub-ngx-tw-split.mjs.map +1 -1
  88. package/fesm2022/cdevhub-ngx-tw-stat.mjs +107 -64
  89. package/fesm2022/cdevhub-ngx-tw-stat.mjs.map +1 -1
  90. package/fesm2022/cdevhub-ngx-tw-stepper.mjs +113 -47
  91. package/fesm2022/cdevhub-ngx-tw-stepper.mjs.map +1 -1
  92. package/fesm2022/cdevhub-ngx-tw-switch.mjs +61 -32
  93. package/fesm2022/cdevhub-ngx-tw-switch.mjs.map +1 -1
  94. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs +88 -42
  95. package/fesm2022/cdevhub-ngx-tw-tab-nav.mjs.map +1 -1
  96. package/fesm2022/cdevhub-ngx-tw-table.mjs +266 -118
  97. package/fesm2022/cdevhub-ngx-tw-table.mjs.map +1 -1
  98. package/fesm2022/cdevhub-ngx-tw-tabs.mjs +102 -52
  99. package/fesm2022/cdevhub-ngx-tw-tabs.mjs.map +1 -1
  100. package/fesm2022/cdevhub-ngx-tw-tags-input.mjs +798 -0
  101. package/fesm2022/cdevhub-ngx-tw-tags-input.mjs.map +1 -0
  102. package/fesm2022/cdevhub-ngx-tw-textarea.mjs +16 -8
  103. package/fesm2022/cdevhub-ngx-tw-textarea.mjs.map +1 -1
  104. package/fesm2022/cdevhub-ngx-tw-theme.mjs +22 -14
  105. package/fesm2022/cdevhub-ngx-tw-theme.mjs.map +1 -1
  106. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs +243 -95
  107. package/fesm2022/cdevhub-ngx-tw-time-picker.mjs.map +1 -1
  108. package/fesm2022/cdevhub-ngx-tw-timeline.mjs +149 -82
  109. package/fesm2022/cdevhub-ngx-tw-timeline.mjs.map +1 -1
  110. package/fesm2022/cdevhub-ngx-tw-toast.mjs +100 -55
  111. package/fesm2022/cdevhub-ngx-tw-toast.mjs.map +1 -1
  112. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs +50 -28
  113. package/fesm2022/cdevhub-ngx-tw-tooltip.mjs.map +1 -1
  114. package/fesm2022/cdevhub-ngx-tw-transfer.mjs +1129 -0
  115. package/fesm2022/cdevhub-ngx-tw-transfer.mjs.map +1 -0
  116. package/fesm2022/cdevhub-ngx-tw-tree.mjs +554 -0
  117. package/fesm2022/cdevhub-ngx-tw-tree.mjs.map +1 -0
  118. package/fesm2022/cdevhub-ngx-tw.mjs +7 -0
  119. package/fesm2022/cdevhub-ngx-tw.mjs.map +1 -1
  120. package/package.json +45 -17
  121. package/theme/_dark.css +16 -12
  122. package/theme/_semantic.css +3 -2
  123. package/theme/index.css +10 -2
  124. package/types/cdevhub-ngx-tw-aspect-ratio.d.ts +40 -0
  125. package/types/cdevhub-ngx-tw-calendar.d.ts +39 -8
  126. package/types/cdevhub-ngx-tw-code-block.d.ts +8 -7
  127. package/types/cdevhub-ngx-tw-command-palette.d.ts +7 -0
  128. package/types/cdevhub-ngx-tw-date-picker.d.ts +36 -10
  129. package/types/cdevhub-ngx-tw-file-upload.d.ts +250 -0
  130. package/types/cdevhub-ngx-tw-form-field.d.ts +22 -3
  131. package/types/cdevhub-ngx-tw-icon-lucide.d.ts +21 -3
  132. package/types/cdevhub-ngx-tw-number-input.d.ts +130 -0
  133. package/types/cdevhub-ngx-tw-popover.d.ts +8 -0
  134. package/types/cdevhub-ngx-tw-select.d.ts +1 -1
  135. package/types/cdevhub-ngx-tw-stepper.d.ts +30 -2
  136. package/types/cdevhub-ngx-tw-tab-nav.d.ts +8 -0
  137. package/types/cdevhub-ngx-tw-table.d.ts +30 -1
  138. package/types/cdevhub-ngx-tw-tabs.d.ts +8 -0
  139. package/types/cdevhub-ngx-tw-tags-input.d.ts +217 -0
  140. package/types/cdevhub-ngx-tw-time-picker.d.ts +31 -6
  141. package/types/cdevhub-ngx-tw-toast.d.ts +1 -1
  142. package/types/cdevhub-ngx-tw-transfer.d.ts +330 -0
  143. package/types/cdevhub-ngx-tw-tree.d.ts +189 -0
  144. package/types/cdevhub-ngx-tw.d.ts +7 -0
@@ -11,6 +11,9 @@ import { tv } from 'tailwind-variants';
11
11
  * Per-call configuration for {@link ToastService} methods. Also used as the
12
12
  * payload of {@link TW_TOAST_DEFAULT_OPTIONS} for app-wide defaults.
13
13
  */
14
+ // `R` is a phantom result-type kept for parity with `ToastRef<D, R>` / service
15
+ // generics — consumers pass it through `ToastConfig<D, R>` so the resulting
16
+ // `ToastRef.afterClosed()` is correctly typed.
14
17
  class ToastConfig {
15
18
  /** Severity of the toast. Defaults to `'info'`. */
16
19
  severity = 'info';
@@ -119,10 +122,10 @@ class ToastIconDirective {
119
122
  toast = inject(ToastComponent);
120
123
  /** @internal */
121
124
  classes = this.toast.iconClasses;
122
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
123
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: ToastIconDirective, isStandalone: true, selector: "[twToastIcon]", host: { attributes: { "aria-hidden": "true" }, properties: { "class": "classes()" } }, ngImport: i0 });
125
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
126
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: ToastIconDirective, isStandalone: true, selector: "[twToastIcon]", host: { attributes: { "aria-hidden": "true" }, properties: { "class": "classes()" } }, ngImport: i0 });
124
127
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastIconDirective, decorators: [{
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastIconDirective, decorators: [{
126
129
  type: Directive,
127
130
  args: [{
128
131
  selector: '[twToastIcon]',
@@ -137,10 +140,10 @@ class ToastTitleDirective {
137
140
  toast = inject(ToastComponent);
138
141
  /** @internal */
139
142
  classes = this.toast.titleClasses;
140
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
141
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: ToastTitleDirective, isStandalone: true, selector: "[twToastTitle]", host: { properties: { "class": "classes()" } }, ngImport: i0 });
143
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
144
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: ToastTitleDirective, isStandalone: true, selector: "[twToastTitle]", host: { properties: { "class": "classes()" } }, ngImport: i0 });
142
145
  }
143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastTitleDirective, decorators: [{
146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastTitleDirective, decorators: [{
144
147
  type: Directive,
145
148
  args: [{
146
149
  selector: '[twToastTitle]',
@@ -154,10 +157,10 @@ class ToastDescriptionDirective {
154
157
  toast = inject(ToastComponent);
155
158
  /** @internal */
156
159
  classes = this.toast.descriptionClasses;
157
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastDescriptionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
158
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: ToastDescriptionDirective, isStandalone: true, selector: "[twToastDescription]", host: { properties: { "class": "classes()" } }, ngImport: i0 });
160
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastDescriptionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
161
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: ToastDescriptionDirective, isStandalone: true, selector: "[twToastDescription]", host: { properties: { "class": "classes()" } }, ngImport: i0 });
159
162
  }
160
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastDescriptionDirective, decorators: [{
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastDescriptionDirective, decorators: [{
161
164
  type: Directive,
162
165
  args: [{
163
166
  selector: '[twToastDescription]',
@@ -175,10 +178,10 @@ class ToastActionDirective {
175
178
  onClick() {
176
179
  this.toast.actionClicked.emit();
177
180
  }
178
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastActionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
179
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.14", type: ToastActionDirective, isStandalone: true, selector: "[twToastAction]", host: { attributes: { "type": "button" }, listeners: { "click": "onClick()" }, properties: { "class": "classes()" } }, ngImport: i0 });
181
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastActionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
182
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: ToastActionDirective, isStandalone: true, selector: "[twToastAction]", host: { attributes: { "type": "button" }, listeners: { "click": "onClick()" }, properties: { "class": "classes()" } }, ngImport: i0 });
180
183
  }
181
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastActionDirective, decorators: [{
184
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastActionDirective, decorators: [{
182
185
  type: Directive,
183
186
  args: [{
184
187
  selector: '[twToastAction]',
@@ -196,11 +199,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
196
199
  */
197
200
  class ToastComponent {
198
201
  /** Severity variant. Drives color palette, default icon, and ARIA role / live politeness. Defaults to `'info'`. */
199
- severity = input('info', ...(ngDevMode ? [{ debugName: "severity" }] : /* istanbul ignore next */ []));
202
+ severity = input('info', /* @ts-ignore */
203
+ ...(ngDevMode ? [{ debugName: "severity" }] : /* istanbul ignore next */ []));
200
204
  // Default true: mirrors `ToastConfig.dismissible` — toasts must offer an escape
201
205
  // hatch by default; opt-out only for ephemeral progress markers paired with `duration`.
202
206
  /** Whether to render the close button. Defaults to `true`. */
203
- dismissible = input(true, ...(ngDevMode ? [{ debugName: "dismissible" }] : /* istanbul ignore next */ []));
207
+ dismissible = input(true, /* @ts-ignore */
208
+ ...(ngDevMode ? [{ debugName: "dismissible" }] : /* istanbul ignore next */ []));
204
209
  /**
205
210
  * Icon override. Pass a string to render as text inside the icon slot, or
206
211
  * `false` to hide the built-in severity icon. Ignored when a `[twToastIcon]`
@@ -208,41 +213,55 @@ class ToastComponent {
208
213
  *
209
214
  * For arbitrary icon markup, project a `[twToastIcon]` child instead.
210
215
  */
211
- icon = input(undefined, ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
216
+ icon = input(undefined, /* @ts-ignore */
217
+ ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
212
218
  /** Explicit aria-label for the toast wrapper. When omitted, text content is used by assistive tech. */
213
- ariaLabel = input(undefined, ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
219
+ ariaLabel = input(undefined, /* @ts-ignore */
220
+ ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
214
221
  /** Fires when the close button is clicked. */
215
222
  dismissed = output();
216
223
  /** Fires when a `[twToastAction]` button is clicked. */
217
224
  actionClicked = output();
218
225
  /** @internal */
219
- projectedIcon = contentChild(ToastIconDirective, ...(ngDevMode ? [{ debugName: "projectedIcon" }] : /* istanbul ignore next */ []));
226
+ projectedIcon = contentChild(ToastIconDirective, /* @ts-ignore */
227
+ ...(ngDevMode ? [{ debugName: "projectedIcon" }] : /* istanbul ignore next */ []));
220
228
  /** @internal */
221
- hasProjectedIcon = computed(() => !!this.projectedIcon(), ...(ngDevMode ? [{ debugName: "hasProjectedIcon" }] : /* istanbul ignore next */ []));
222
- variantResult = computed(() => toastVariants({ severity: this.severity() }), ...(ngDevMode ? [{ debugName: "variantResult" }] : /* istanbul ignore next */ []));
229
+ hasProjectedIcon = computed(() => !!this.projectedIcon(), /* @ts-ignore */
230
+ ...(ngDevMode ? [{ debugName: "hasProjectedIcon" }] : /* istanbul ignore next */ []));
231
+ variantResult = computed(() => toastVariants({ severity: this.severity() }), /* @ts-ignore */
232
+ ...(ngDevMode ? [{ debugName: "variantResult" }] : /* istanbul ignore next */ []));
223
233
  /** @internal */
224
234
  rootClasses = computed(() => {
225
235
  const base = this.variantResult().root();
226
236
  return this.dismissible() ? `${base} pr-10` : base;
227
- }, ...(ngDevMode ? [{ debugName: "rootClasses" }] : /* istanbul ignore next */ []));
237
+ }, /* @ts-ignore */
238
+ ...(ngDevMode ? [{ debugName: "rootClasses" }] : /* istanbul ignore next */ []));
228
239
  /** @internal */
229
- iconClasses = computed(() => this.variantResult().icon(), ...(ngDevMode ? [{ debugName: "iconClasses" }] : /* istanbul ignore next */ []));
240
+ iconClasses = computed(() => this.variantResult().icon(), /* @ts-ignore */
241
+ ...(ngDevMode ? [{ debugName: "iconClasses" }] : /* istanbul ignore next */ []));
230
242
  /** @internal */
231
- titleClasses = computed(() => this.variantResult().title(), ...(ngDevMode ? [{ debugName: "titleClasses" }] : /* istanbul ignore next */ []));
243
+ titleClasses = computed(() => this.variantResult().title(), /* @ts-ignore */
244
+ ...(ngDevMode ? [{ debugName: "titleClasses" }] : /* istanbul ignore next */ []));
232
245
  /** @internal */
233
- descriptionClasses = computed(() => this.variantResult().description(), ...(ngDevMode ? [{ debugName: "descriptionClasses" }] : /* istanbul ignore next */ []));
246
+ descriptionClasses = computed(() => this.variantResult().description(), /* @ts-ignore */
247
+ ...(ngDevMode ? [{ debugName: "descriptionClasses" }] : /* istanbul ignore next */ []));
234
248
  /** @internal */
235
- contentClasses = computed(() => this.variantResult().content(), ...(ngDevMode ? [{ debugName: "contentClasses" }] : /* istanbul ignore next */ []));
249
+ contentClasses = computed(() => this.variantResult().content(), /* @ts-ignore */
250
+ ...(ngDevMode ? [{ debugName: "contentClasses" }] : /* istanbul ignore next */ []));
236
251
  /** @internal */
237
- actionClasses = computed(() => this.variantResult().action(), ...(ngDevMode ? [{ debugName: "actionClasses" }] : /* istanbul ignore next */ []));
252
+ actionClasses = computed(() => this.variantResult().action(), /* @ts-ignore */
253
+ ...(ngDevMode ? [{ debugName: "actionClasses" }] : /* istanbul ignore next */ []));
238
254
  /** @internal */
239
- dismissClasses = computed(() => this.variantResult().dismiss(), ...(ngDevMode ? [{ debugName: "dismissClasses" }] : /* istanbul ignore next */ []));
255
+ dismissClasses = computed(() => this.variantResult().dismiss(), /* @ts-ignore */
256
+ ...(ngDevMode ? [{ debugName: "dismissClasses" }] : /* istanbul ignore next */ []));
240
257
  /** @internal */
241
- roleAttr = computed(() => this.severity() === 'error' ? 'alert' : 'status', ...(ngDevMode ? [{ debugName: "roleAttr" }] : /* istanbul ignore next */ []));
258
+ roleAttr = computed(() => this.severity() === 'error' ? 'alert' : 'status', /* @ts-ignore */
259
+ ...(ngDevMode ? [{ debugName: "roleAttr" }] : /* istanbul ignore next */ []));
242
260
  /** @internal */
243
- ariaLiveAttr = computed(() => this.severity() === 'error' ? 'assertive' : 'polite', ...(ngDevMode ? [{ debugName: "ariaLiveAttr" }] : /* istanbul ignore next */ []));
244
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
245
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: ToastComponent, isStandalone: true, selector: "tw-toast", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, dismissible: { classPropertyName: "dismissible", publicName: "dismissible", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dismissed: "dismissed", actionClicked: "actionClicked" }, host: { attributes: { "aria-atomic": "true" }, properties: { "class": "rootClasses()", "attr.role": "roleAttr()", "attr.aria-live": "ariaLiveAttr()", "attr.aria-label": "ariaLabel() || null", "attr.data-severity": "severity()" } }, queries: [{ propertyName: "projectedIcon", first: true, predicate: ToastIconDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
261
+ ariaLiveAttr = computed(() => this.severity() === 'error' ? 'assertive' : 'polite', /* @ts-ignore */
262
+ ...(ngDevMode ? [{ debugName: "ariaLiveAttr" }] : /* istanbul ignore next */ []));
263
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
264
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: ToastComponent, isStandalone: true, selector: "tw-toast", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, dismissible: { classPropertyName: "dismissible", publicName: "dismissible", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dismissed: "dismissed", actionClicked: "actionClicked" }, host: { attributes: { "aria-atomic": "true" }, properties: { "class": "rootClasses()", "attr.role": "roleAttr()", "attr.aria-live": "ariaLiveAttr()", "attr.aria-label": "ariaLabel() || null", "attr.data-severity": "severity()" } }, queries: [{ propertyName: "projectedIcon", first: true, predicate: ToastIconDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
246
265
  @if (hasProjectedIcon()) {
247
266
  <ng-content select="[twToastIcon]" />
248
267
  } @else if (icon() !== false) {
@@ -296,7 +315,7 @@ class ToastComponent {
296
315
  }
297
316
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
298
317
  }
299
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastComponent, decorators: [{
318
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastComponent, decorators: [{
300
319
  type: Component,
301
320
  args: [{
302
321
  selector: 'tw-toast',
@@ -400,14 +419,17 @@ const SWIPE_MAX_OPACITY_FADE = 0.6;
400
419
  */
401
420
  class ToastContainerComponent {
402
421
  /** Per-position stacking anchor. Mutated from {@link ToastService} via `.instance.position.set(...)`. */
403
- position = signal('bottom-right', ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
422
+ position = signal('bottom-right', /* @ts-ignore */
423
+ ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
404
424
  /** Accessible label applied to the `role="region"` host. Mutated from the service on init. */
405
- regionLabel = signal('Notifications', ...(ngDevMode ? [{ debugName: "regionLabel" }] : /* istanbul ignore next */ []));
425
+ regionLabel = signal('Notifications', /* @ts-ignore */
426
+ ...(ngDevMode ? [{ debugName: "regionLabel" }] : /* istanbul ignore next */ []));
406
427
  /**
407
428
  * Toasts currently assigned to this container. The service pushes toasts
408
429
  * into this signal; the container filters by state to drive `animate.leave`.
409
430
  */
410
- visibleRefs = signal([], ...(ngDevMode ? [{ debugName: "visibleRefs" }] : /* istanbul ignore next */ []));
431
+ visibleRefs = signal([], /* @ts-ignore */
432
+ ...(ngDevMode ? [{ debugName: "visibleRefs" }] : /* istanbul ignore next */ []));
411
433
  injector = inject(Injector);
412
434
  liveAnnouncer = inject(LiveAnnouncer);
413
435
  host = inject((ElementRef));
@@ -427,16 +449,19 @@ class ToastContainerComponent {
427
449
  enterClass: enter,
428
450
  leaveClass: leave,
429
451
  }));
430
- }, ...(ngDevMode ? [{ debugName: "entries" }] : /* istanbul ignore next */ []));
452
+ }, /* @ts-ignore */
453
+ ...(ngDevMode ? [{ debugName: "entries" }] : /* istanbul ignore next */ []));
431
454
  orderedEntries = computed(() => {
432
455
  const list = this.entries();
433
456
  return POSITION_ORDER_REVERSED[this.position()] ? [...list].reverse() : list;
434
- }, ...(ngDevMode ? [{ debugName: "orderedEntries" }] : /* istanbul ignore next */ []));
457
+ }, /* @ts-ignore */
458
+ ...(ngDevMode ? [{ debugName: "orderedEntries" }] : /* istanbul ignore next */ []));
435
459
  hostClasses = computed(() => {
436
460
  const base = 'flex flex-col gap-2 w-full max-w-sm';
437
461
  const align = POSITION_HOST_CLASSES[this.position()];
438
462
  return `${base} ${align}`;
439
- }, ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
463
+ }, /* @ts-ignore */
464
+ ...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
440
465
  /** @internal Called by the service right after attaching a new toast. Runs `LiveAnnouncer`. */
441
466
  _announceOpen(ref) {
442
467
  const politeness = this.resolvePoliteness(ref);
@@ -595,9 +620,13 @@ class ToastContainerComponent {
595
620
  return host.textContent?.trim() ?? '';
596
621
  return this.host.nativeElement.textContent?.trim() ?? '';
597
622
  }
598
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
599
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: ToastContainerComponent, isStandalone: true, selector: "tw-toast-container", host: { attributes: { "role": "region" }, properties: { "class": "hostClasses()", "attr.aria-label": "regionLabel()", "attr.data-position": "position()" } }, ngImport: i0, template: `
623
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
624
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: ToastContainerComponent, isStandalone: true, selector: "tw-toast-container", host: { attributes: { "role": "region" }, properties: { "class": "hostClasses()", "attr.aria-label": "regionLabel()", "attr.data-position": "position()" } }, ngImport: i0, template: `
600
625
  @for (entry of orderedEntries(); track entry.ref.id) {
626
+ <!-- Toast entry wrapper; the projected <tw-toast> is the focusable affordance.
627
+ This element only forwards pointer/focus events so the container can
628
+ pause auto-dismiss while the user is interacting. -->
629
+ <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->
601
630
  <div
602
631
  class="pointer-events-auto w-full max-w-sm"
603
632
  [attr.data-toast-id]="entry.ref.id"
@@ -661,7 +690,7 @@ class ToastContainerComponent {
661
690
  }
662
691
  `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: ToastComponent, selector: "tw-toast", inputs: ["severity", "dismissible", "icon", "ariaLabel"], outputs: ["dismissed", "actionClicked"] }, { kind: "directive", type: ToastActionDirective, selector: "[twToastAction]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
663
692
  }
664
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastContainerComponent, decorators: [{
693
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastContainerComponent, decorators: [{
665
694
  type: Component,
666
695
  args: [{
667
696
  selector: 'tw-toast-container',
@@ -676,6 +705,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
676
705
  },
677
706
  template: `
678
707
  @for (entry of orderedEntries(); track entry.ref.id) {
708
+ <!-- Toast entry wrapper; the projected <tw-toast> is the focusable affordance.
709
+ This element only forwards pointer/focus events so the container can
710
+ pause auto-dismiss while the user is interacting. -->
711
+ <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->
679
712
  <div
680
713
  class="pointer-events-auto w-full max-w-sm"
681
714
  [attr.data-toast-id]="entry.ref.id"
@@ -784,11 +817,14 @@ class ToastRef {
784
817
  /** Reactive data payload — re-read by the container to update `TW_TOAST_DATA`. */
785
818
  data;
786
819
  /** @internal Reactive "transient" class applied by swipe gestures (e.g. `translate3d(...)`). */
787
- swipeTransform = signal(null, ...(ngDevMode ? [{ debugName: "swipeTransform" }] : /* istanbul ignore next */ []));
820
+ swipeTransform = signal(null, /* @ts-ignore */
821
+ ...(ngDevMode ? [{ debugName: "swipeTransform" }] : /* istanbul ignore next */ []));
788
822
  /** @internal Reactive opacity applied during swipe gestures. */
789
- swipeOpacity = signal(null, ...(ngDevMode ? [{ debugName: "swipeOpacity" }] : /* istanbul ignore next */ []));
823
+ swipeOpacity = signal(null, /* @ts-ignore */
824
+ ...(ngDevMode ? [{ debugName: "swipeOpacity" }] : /* istanbul ignore next */ []));
790
825
  /** @internal Leave-animation class override. When non-null, container uses this instead of the position default. */
791
- leaveAnimationOverride = signal(null, ...(ngDevMode ? [{ debugName: "leaveAnimationOverride" }] : /* istanbul ignore next */ []));
826
+ leaveAnimationOverride = signal(null, /* @ts-ignore */
827
+ ...(ngDevMode ? [{ debugName: "leaveAnimationOverride" }] : /* istanbul ignore next */ []));
792
828
  /** @internal Portal for component-class content. Set by the service; null for string / template content. */
793
829
  _portal = null;
794
830
  /** @internal True while the pointer hovers this toast. */
@@ -797,7 +833,8 @@ class ToastRef {
797
833
  _focused = false;
798
834
  /** @internal Set by the service so the ref can reach the CDK-owned OverlayRef if it needs to. */
799
835
  _overlayPanelElement = null;
800
- stateSignal = signal('entering', ...(ngDevMode ? [{ debugName: "stateSignal" }] : /* istanbul ignore next */ []));
836
+ stateSignal = signal('entering', /* @ts-ignore */
837
+ ...(ngDevMode ? [{ debugName: "stateSignal" }] : /* istanbul ignore next */ []));
801
838
  severitySignal;
802
839
  dismissibleSignal;
803
840
  iconSignal;
@@ -821,13 +858,20 @@ class ToastRef {
821
858
  this.dismissCallback = dismissCallback;
822
859
  this.id = id;
823
860
  this.config = config;
824
- this.severitySignal = signal(config.severity ?? 'info', ...(ngDevMode ? [{ debugName: "severitySignal" }] : /* istanbul ignore next */ []));
825
- this.dismissibleSignal = signal(config.dismissible ?? true, ...(ngDevMode ? [{ debugName: "dismissibleSignal" }] : /* istanbul ignore next */ []));
826
- this.iconSignal = signal(typeof config.icon === 'string' || config.icon === false ? config.icon : undefined, ...(ngDevMode ? [{ debugName: "iconSignal" }] : /* istanbul ignore next */ []));
827
- this.contentSignal = signal(content, ...(ngDevMode ? [{ debugName: "contentSignal" }] : /* istanbul ignore next */ []));
828
- this.actionSignal = signal(config.action, ...(ngDevMode ? [{ debugName: "actionSignal" }] : /* istanbul ignore next */ []));
829
- this.ariaLabelSignal = signal(config.ariaLabel, ...(ngDevMode ? [{ debugName: "ariaLabelSignal" }] : /* istanbul ignore next */ []));
830
- this.dataSignal = signal(config.data ?? null, ...(ngDevMode ? [{ debugName: "dataSignal" }] : /* istanbul ignore next */ []));
861
+ this.severitySignal = signal(config.severity ?? 'info', /* @ts-ignore */
862
+ ...(ngDevMode ? [{ debugName: "severitySignal" }] : /* istanbul ignore next */ []));
863
+ this.dismissibleSignal = signal(config.dismissible ?? true, /* @ts-ignore */
864
+ ...(ngDevMode ? [{ debugName: "dismissibleSignal" }] : /* istanbul ignore next */ []));
865
+ this.iconSignal = signal(typeof config.icon === 'string' || config.icon === false ? config.icon : undefined, /* @ts-ignore */
866
+ ...(ngDevMode ? [{ debugName: "iconSignal" }] : /* istanbul ignore next */ []));
867
+ this.contentSignal = signal(content, /* @ts-ignore */
868
+ ...(ngDevMode ? [{ debugName: "contentSignal" }] : /* istanbul ignore next */ []));
869
+ this.actionSignal = signal(config.action, /* @ts-ignore */
870
+ ...(ngDevMode ? [{ debugName: "actionSignal" }] : /* istanbul ignore next */ []));
871
+ this.ariaLabelSignal = signal(config.ariaLabel, /* @ts-ignore */
872
+ ...(ngDevMode ? [{ debugName: "ariaLabelSignal" }] : /* istanbul ignore next */ []));
873
+ this.dataSignal = signal(config.data ?? null, /* @ts-ignore */
874
+ ...(ngDevMode ? [{ debugName: "dataSignal" }] : /* istanbul ignore next */ []));
831
875
  this.state = this.stateSignal.asReadonly();
832
876
  this.severity = this.severitySignal.asReadonly();
833
877
  this.dismissible = this.dismissibleSignal.asReadonly();
@@ -1044,7 +1088,8 @@ class ToastService {
1044
1088
  defaultOptions = inject(TW_TOAST_DEFAULT_OPTIONS, { optional: true }) ?? {};
1045
1089
  parent = inject(ToastService, { optional: true, skipSelf: true });
1046
1090
  positionOverlays = new Map();
1047
- activeRefsAtThisLevel = signal([], ...(ngDevMode ? [{ debugName: "activeRefsAtThisLevel" }] : /* istanbul ignore next */ []));
1091
+ activeRefsAtThisLevel = signal([], /* @ts-ignore */
1092
+ ...(ngDevMode ? [{ debugName: "activeRefsAtThisLevel" }] : /* istanbul ignore next */ []));
1048
1093
  afterOpenedSubject = new Subject();
1049
1094
  afterAllDismissedSubject = new Subject();
1050
1095
  /** Reactive list of every toast that has not yet fully dismissed. */
@@ -1269,10 +1314,10 @@ class ToastService {
1269
1314
  getAfterAllDismissedSource() {
1270
1315
  return this.parent ? this.parent.getAfterAllDismissedSource() : this.afterAllDismissedSubject;
1271
1316
  }
1272
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1273
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastService });
1317
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1318
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastService });
1274
1319
  }
1275
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: ToastService, decorators: [{
1320
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: ToastService, decorators: [{
1276
1321
  type: Injectable
1277
1322
  }] });
1278
1323
  function isComponentConstructor(value) {