@weeehaoooz/talos-ui 0.1.0 → 0.1.2

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 (187) hide show
  1. package/README.md +2 -0
  2. package/fesm2022/{weeehaoooz-talos-ui-button-button-group.mjs → weeehaoooz-talos-ui-button.mjs} +115 -18
  3. package/fesm2022/weeehaoooz-talos-ui-button.mjs.map +1 -0
  4. package/fesm2022/weeehaoooz-talos-ui-data-display.mjs +3110 -0
  5. package/fesm2022/weeehaoooz-talos-ui-data-display.mjs.map +1 -0
  6. package/fesm2022/weeehaoooz-talos-ui-data-viz.mjs +2414 -0
  7. package/fesm2022/weeehaoooz-talos-ui-data-viz.mjs.map +1 -0
  8. package/fesm2022/weeehaoooz-talos-ui-dropdown.mjs +1039 -0
  9. package/fesm2022/weeehaoooz-talos-ui-dropdown.mjs.map +1 -0
  10. package/fesm2022/weeehaoooz-talos-ui-feedback.mjs +2885 -0
  11. package/fesm2022/weeehaoooz-talos-ui-feedback.mjs.map +1 -0
  12. package/fesm2022/weeehaoooz-talos-ui-form.mjs +10799 -0
  13. package/fesm2022/weeehaoooz-talos-ui-form.mjs.map +1 -0
  14. package/fesm2022/weeehaoooz-talos-ui-layout.mjs +1320 -11
  15. package/fesm2022/weeehaoooz-talos-ui-layout.mjs.map +1 -1
  16. package/fesm2022/weeehaoooz-talos-ui-nav.mjs +119 -72
  17. package/fesm2022/weeehaoooz-talos-ui-nav.mjs.map +1 -1
  18. package/fesm2022/weeehaoooz-talos-ui.mjs +22190 -15213
  19. package/fesm2022/weeehaoooz-talos-ui.mjs.map +1 -1
  20. package/package.json +20 -135
  21. package/styles/_breadcrumb.scss +16 -0
  22. package/styles/_button-group.scss +156 -7
  23. package/styles/_buttons.scss +156 -8
  24. package/styles/_dropdown.scss +438 -0
  25. package/styles/_form-controls.scss +13 -0
  26. package/styles/_progress-bar.scss +43 -0
  27. package/styles/_skeleton.scss +176 -0
  28. package/styles/_spinner.scss +58 -0
  29. package/styles/_variables.scss +37 -0
  30. package/styles/index.scss +6 -1
  31. package/types/weeehaoooz-talos-ui-button.d.ts +92 -0
  32. package/types/weeehaoooz-talos-ui-button.d.ts.map +1 -0
  33. package/types/weeehaoooz-talos-ui-data-display.d.ts +1018 -0
  34. package/types/weeehaoooz-talos-ui-data-display.d.ts.map +1 -0
  35. package/types/weeehaoooz-talos-ui-data-viz.d.ts +839 -0
  36. package/types/weeehaoooz-talos-ui-data-viz.d.ts.map +1 -0
  37. package/types/weeehaoooz-talos-ui-dropdown.d.ts +187 -0
  38. package/types/weeehaoooz-talos-ui-dropdown.d.ts.map +1 -0
  39. package/types/weeehaoooz-talos-ui-feedback.d.ts +1495 -0
  40. package/types/weeehaoooz-talos-ui-feedback.d.ts.map +1 -0
  41. package/types/weeehaoooz-talos-ui-form.d.ts +2639 -0
  42. package/types/weeehaoooz-talos-ui-form.d.ts.map +1 -0
  43. package/types/weeehaoooz-talos-ui-layout.d.ts +851 -3
  44. package/types/weeehaoooz-talos-ui-layout.d.ts.map +1 -1
  45. package/types/weeehaoooz-talos-ui-nav.d.ts +36 -10
  46. package/types/weeehaoooz-talos-ui-nav.d.ts.map +1 -1
  47. package/types/weeehaoooz-talos-ui.d.ts +6949 -4137
  48. package/types/weeehaoooz-talos-ui.d.ts.map +1 -1
  49. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs.map +0 -1
  50. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs +0 -93
  51. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs.map +0 -1
  52. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs +0 -233
  53. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs.map +0 -1
  54. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs +0 -361
  55. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs.map +0 -1
  56. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs +0 -312
  57. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs.map +0 -1
  58. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs +0 -235
  59. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs.map +0 -1
  60. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs +0 -462
  61. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs.map +0 -1
  62. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs +0 -805
  63. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs.map +0 -1
  64. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs +0 -267
  65. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs.map +0 -1
  66. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs +0 -351
  67. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs.map +0 -1
  68. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs +0 -566
  69. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs.map +0 -1
  70. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs +0 -534
  71. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs.map +0 -1
  72. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs +0 -446
  73. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs.map +0 -1
  74. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs +0 -376
  75. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs.map +0 -1
  76. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs +0 -147
  77. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs.map +0 -1
  78. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs +0 -242
  79. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs.map +0 -1
  80. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs +0 -514
  81. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs.map +0 -1
  82. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs +0 -548
  83. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs.map +0 -1
  84. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs +0 -692
  85. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs.map +0 -1
  86. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs +0 -761
  87. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs.map +0 -1
  88. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs +0 -896
  89. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs.map +0 -1
  90. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs +0 -872
  91. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs.map +0 -1
  92. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs +0 -119
  93. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs.map +0 -1
  94. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs +0 -135
  95. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs.map +0 -1
  96. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs +0 -666
  97. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs.map +0 -1
  98. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs +0 -147
  99. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs.map +0 -1
  100. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs +0 -33
  101. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs.map +0 -1
  102. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs +0 -455
  103. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs.map +0 -1
  104. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs +0 -379
  105. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs.map +0 -1
  106. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs +0 -297
  107. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs.map +0 -1
  108. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs +0 -661
  109. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs.map +0 -1
  110. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs +0 -346
  111. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs.map +0 -1
  112. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs +0 -896
  113. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs.map +0 -1
  114. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs +0 -252
  115. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs.map +0 -1
  116. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs +0 -916
  117. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs.map +0 -1
  118. package/types/weeehaoooz-talos-ui-button-button-group.d.ts +0 -59
  119. package/types/weeehaoooz-talos-ui-button-button-group.d.ts.map +0 -1
  120. package/types/weeehaoooz-talos-ui-button-button.d.ts +0 -38
  121. package/types/weeehaoooz-talos-ui-button-button.d.ts.map +0 -1
  122. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts +0 -119
  123. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts.map +0 -1
  124. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts +0 -135
  125. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts.map +0 -1
  126. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts +0 -144
  127. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts.map +0 -1
  128. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts +0 -83
  129. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts.map +0 -1
  130. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts +0 -255
  131. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts.map +0 -1
  132. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts +0 -204
  133. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts.map +0 -1
  134. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts +0 -101
  135. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts.map +0 -1
  136. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts +0 -138
  137. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts.map +0 -1
  138. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts +0 -161
  139. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts.map +0 -1
  140. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts +0 -212
  141. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts.map +0 -1
  142. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts +0 -259
  143. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts.map +0 -1
  144. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts +0 -147
  145. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts.map +0 -1
  146. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts +0 -32
  147. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts.map +0 -1
  148. package/types/weeehaoooz-talos-ui-form-affix.d.ts +0 -88
  149. package/types/weeehaoooz-talos-ui-form-affix.d.ts.map +0 -1
  150. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts +0 -113
  151. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts.map +0 -1
  152. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts +0 -165
  153. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts.map +0 -1
  154. package/types/weeehaoooz-talos-ui-form-chips.d.ts +0 -152
  155. package/types/weeehaoooz-talos-ui-form-chips.d.ts.map +0 -1
  156. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts +0 -144
  157. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts.map +0 -1
  158. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts +0 -138
  159. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts.map +0 -1
  160. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts +0 -148
  161. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts.map +0 -1
  162. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts +0 -44
  163. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts.map +0 -1
  164. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts +0 -48
  165. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts.map +0 -1
  166. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts +0 -227
  167. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts.map +0 -1
  168. package/types/weeehaoooz-talos-ui-form-form-field.d.ts +0 -42
  169. package/types/weeehaoooz-talos-ui-form-form-field.d.ts.map +0 -1
  170. package/types/weeehaoooz-talos-ui-form-input.d.ts +0 -15
  171. package/types/weeehaoooz-talos-ui-form-input.d.ts.map +0 -1
  172. package/types/weeehaoooz-talos-ui-form-otp.d.ts +0 -111
  173. package/types/weeehaoooz-talos-ui-form-otp.d.ts.map +0 -1
  174. package/types/weeehaoooz-talos-ui-form-password-input.d.ts +0 -145
  175. package/types/weeehaoooz-talos-ui-form-password-input.d.ts.map +0 -1
  176. package/types/weeehaoooz-talos-ui-form-radio.d.ts +0 -84
  177. package/types/weeehaoooz-talos-ui-form-radio.d.ts.map +0 -1
  178. package/types/weeehaoooz-talos-ui-form-range-input.d.ts +0 -181
  179. package/types/weeehaoooz-talos-ui-form-range-input.d.ts.map +0 -1
  180. package/types/weeehaoooz-talos-ui-form-rating.d.ts +0 -110
  181. package/types/weeehaoooz-talos-ui-form-rating.d.ts.map +0 -1
  182. package/types/weeehaoooz-talos-ui-form-select-input.d.ts +0 -195
  183. package/types/weeehaoooz-talos-ui-form-select-input.d.ts.map +0 -1
  184. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts +0 -79
  185. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts.map +0 -1
  186. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts +0 -192
  187. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts.map +0 -1
@@ -1,534 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { signal, TemplateRef, Injectable, Directive, input, output, computed, Component, inject, NgModule } from '@angular/core';
3
- import { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';
4
- import { LucideInfo, LucideCheckCircle2, LucideAlertTriangle, LucideCircleAlert, LucideAlertOctagon, LucideShieldAlert, LucideX } from '@lucide/angular';
5
-
6
- class TalosAlertService {
7
- /** Reactive list of currently active programmatic alerts */
8
- alerts = signal([], /* @ts-ignore */
9
- ...(ngDevMode ? [{ debugName: "alerts" }] : /* istanbul ignore next */ []));
10
- /** Reactive list of currently active top-level banner alerts */
11
- bannerAlerts = signal([], /* @ts-ignore */
12
- ...(ngDevMode ? [{ debugName: "bannerAlerts" }] : /* istanbul ignore next */ []));
13
- idCounter = 0;
14
- /** Default global configurations */
15
- defaultConfig = {
16
- severity: 'success',
17
- appearance: 'subtle',
18
- size: 'md',
19
- showIcon: true,
20
- dismissible: true
21
- };
22
- /**
23
- * Override default global configurations.
24
- */
25
- setDefaultConfig(config) {
26
- this.defaultConfig = { ...this.defaultConfig, ...config };
27
- }
28
- /**
29
- * Main entry point to create a programmatic alert instance.
30
- */
31
- show(messageOrConfig, configOverrides = {}) {
32
- let fullConfig;
33
- if (typeof messageOrConfig === 'string' ||
34
- messageOrConfig instanceof TemplateRef) {
35
- fullConfig = {
36
- message: messageOrConfig,
37
- ...configOverrides
38
- };
39
- }
40
- else {
41
- fullConfig = {
42
- ...messageOrConfig,
43
- ...configOverrides
44
- };
45
- }
46
- const instance = {
47
- id: fullConfig.id || `talos-alert-${++this.idCounter}-${Date.now()}`,
48
- severity: fullConfig.severity ?? this.defaultConfig.severity ?? 'success',
49
- variant: fullConfig.variant,
50
- appearance: fullConfig.appearance ?? this.defaultConfig.appearance ?? 'subtle',
51
- size: fullConfig.size ?? this.defaultConfig.size ?? 'md',
52
- showIcon: fullConfig.showIcon ?? this.defaultConfig.showIcon ?? true,
53
- icon: fullConfig.icon,
54
- showSeverityBadge: fullConfig.showSeverityBadge ?? false,
55
- dismissible: fullConfig.dismissible ?? this.defaultConfig.dismissible ?? true,
56
- title: fullConfig.title,
57
- message: fullConfig.message,
58
- actionLabel: fullConfig.actionLabel,
59
- onAction: fullConfig.onAction,
60
- onDismiss: fullConfig.onDismiss,
61
- customClass: fullConfig.customClass,
62
- bordered: fullConfig.bordered,
63
- duration: fullConfig.duration,
64
- data: fullConfig.data,
65
- createdAt: Date.now()
66
- };
67
- this.alerts.update((current) => [...current, instance]);
68
- if (instance.duration && instance.duration > 0) {
69
- setTimeout(() => {
70
- this.dismiss(instance.id);
71
- }, instance.duration);
72
- }
73
- return {
74
- id: instance.id,
75
- dismiss: () => this.dismiss(instance.id)
76
- };
77
- }
78
- /**
79
- * Display a high-visibility global banner alert.
80
- */
81
- banner(messageOrConfig, configOverrides = {}) {
82
- let fullConfig;
83
- if (typeof messageOrConfig === 'string' ||
84
- messageOrConfig instanceof TemplateRef) {
85
- fullConfig = {
86
- message: messageOrConfig,
87
- appearance: 'filled',
88
- severity: 'info',
89
- ...configOverrides
90
- };
91
- }
92
- else {
93
- fullConfig = {
94
- appearance: 'filled',
95
- severity: 'info',
96
- ...messageOrConfig,
97
- ...configOverrides
98
- };
99
- }
100
- const instance = {
101
- id: fullConfig.id || `talos-banner-alert-${++this.idCounter}-${Date.now()}`,
102
- severity: fullConfig.severity ?? 'info',
103
- variant: fullConfig.variant,
104
- appearance: fullConfig.appearance ?? 'filled',
105
- size: fullConfig.size ?? 'md',
106
- showIcon: fullConfig.showIcon ?? true,
107
- icon: fullConfig.icon,
108
- showSeverityBadge: fullConfig.showSeverityBadge ?? false,
109
- dismissible: fullConfig.dismissible ?? true,
110
- title: fullConfig.title,
111
- message: fullConfig.message,
112
- actionLabel: fullConfig.actionLabel,
113
- onAction: fullConfig.onAction,
114
- onDismiss: fullConfig.onDismiss,
115
- customClass: fullConfig.customClass,
116
- bordered: fullConfig.bordered,
117
- duration: fullConfig.duration,
118
- data: fullConfig.data,
119
- createdAt: Date.now()
120
- };
121
- this.bannerAlerts.update((current) => [...current, instance]);
122
- if (instance.duration && instance.duration > 0) {
123
- setTimeout(() => {
124
- this.dismissBanner(instance.id);
125
- }, instance.duration);
126
- }
127
- return {
128
- id: instance.id,
129
- dismiss: () => this.dismissBanner(instance.id)
130
- };
131
- }
132
- /** Convenience method for Success alerts (Default severity) */
133
- success(message, config) {
134
- return this.show(message, { ...config, severity: 'success' });
135
- }
136
- /** Convenience method for Info alerts */
137
- info(message, config) {
138
- return this.show(message, { ...config, severity: 'info' });
139
- }
140
- /** Convenience method for Warning alerts */
141
- warning(message, config) {
142
- return this.show(message, { ...config, severity: 'warning' });
143
- }
144
- /** Convenience method for Error alerts */
145
- error(message, config) {
146
- return this.show(message, { ...config, severity: 'error' });
147
- }
148
- /**
149
- * Dismiss a specific programmatic alert by ID, or the oldest if no ID is provided.
150
- */
151
- dismiss(id) {
152
- if (!id) {
153
- const current = this.alerts();
154
- if (current.length === 0)
155
- return;
156
- id = current[0].id;
157
- }
158
- const target = this.alerts().find((a) => a.id === id);
159
- if (target?.onDismiss) {
160
- target.onDismiss();
161
- }
162
- this.alerts.update((current) => current.filter((item) => item.id !== id));
163
- }
164
- /**
165
- * Dismiss a banner alert by ID.
166
- */
167
- dismissBanner(id) {
168
- if (!id) {
169
- const current = this.bannerAlerts();
170
- if (current.length === 0)
171
- return;
172
- id = current[0].id;
173
- }
174
- const target = this.bannerAlerts().find((a) => a.id === id);
175
- if (target?.onDismiss) {
176
- target.onDismiss();
177
- }
178
- this.bannerAlerts.update((current) => current.filter((item) => item.id !== id));
179
- }
180
- /**
181
- * Dismiss all currently active alerts and banners.
182
- */
183
- dismissAll() {
184
- this.alerts().forEach((a) => a.onDismiss?.());
185
- this.bannerAlerts().forEach((b) => b.onDismiss?.());
186
- this.alerts.set([]);
187
- this.bannerAlerts.set([]);
188
- }
189
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
190
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertService, providedIn: 'root' });
191
- }
192
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertService, decorators: [{
193
- type: Injectable,
194
- args: [{
195
- providedIn: 'root'
196
- }]
197
- }] });
198
-
199
- /**
200
- * Structural / Slot directive for alert title projection.
201
- *
202
- * Usage:
203
- * ```html
204
- * <talos-alert>
205
- * <div talosAlertTitle>System Maintenance</div>
206
- * <div talosAlertDescription>All services will undergo updates tonight.</div>
207
- * </talos-alert>
208
- * ```
209
- */
210
- class TalosAlertTitleDirective {
211
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
212
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.1", type: TalosAlertTitleDirective, isStandalone: true, selector: "[talosAlertTitle], talos-alert-title", host: { classAttribute: "talos-alert-title-directive" }, ngImport: i0 });
213
- }
214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertTitleDirective, decorators: [{
215
- type: Directive,
216
- args: [{
217
- selector: '[talosAlertTitle], talos-alert-title',
218
- host: {
219
- 'class': 'talos-alert-title-directive'
220
- }
221
- }]
222
- }] });
223
- /**
224
- * Slot directive for alert description / message body.
225
- */
226
- class TalosAlertDescriptionDirective {
227
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertDescriptionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
228
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.1", type: TalosAlertDescriptionDirective, isStandalone: true, selector: "[talosAlertDescription], talos-alert-description", host: { classAttribute: "talos-alert-description-directive" }, ngImport: i0 });
229
- }
230
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertDescriptionDirective, decorators: [{
231
- type: Directive,
232
- args: [{
233
- selector: '[talosAlertDescription], talos-alert-description',
234
- host: {
235
- 'class': 'talos-alert-description-directive'
236
- }
237
- }]
238
- }] });
239
- /**
240
- * Slot directive for custom alert actions / button group.
241
- */
242
- class TalosAlertActionsDirective {
243
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertActionsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
244
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.1", type: TalosAlertActionsDirective, isStandalone: true, selector: "[talosAlertActions], talos-alert-actions", host: { classAttribute: "talos-alert-actions-directive" }, ngImport: i0 });
245
- }
246
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertActionsDirective, decorators: [{
247
- type: Directive,
248
- args: [{
249
- selector: '[talosAlertActions], talos-alert-actions',
250
- host: {
251
- 'class': 'talos-alert-actions-directive'
252
- }
253
- }]
254
- }] });
255
- /**
256
- * Slot directive for custom alert icon.
257
- */
258
- class TalosAlertIconDirective {
259
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertIconDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
260
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.1", type: TalosAlertIconDirective, isStandalone: true, selector: "[talosAlertIcon], talos-alert-icon", host: { classAttribute: "talos-alert-icon-directive" }, ngImport: i0 });
261
- }
262
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertIconDirective, decorators: [{
263
- type: Directive,
264
- args: [{
265
- selector: '[talosAlertIcon], talos-alert-icon',
266
- host: {
267
- 'class': 'talos-alert-icon-directive'
268
- }
269
- }]
270
- }] });
271
-
272
- class TalosAlertComponent {
273
- /** Alert severity state: 'success' (default), 'info', 'warning', 'error' */
274
- severity = input('success', /* @ts-ignore */
275
- ...(ngDevMode ? [{ debugName: "severity" }] : /* istanbul ignore next */ []));
276
- /** Visual variant theme fallback */
277
- variant = input(undefined, /* @ts-ignore */
278
- ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
279
- /** Visual surface appearance style */
280
- appearance = input('subtle', /* @ts-ignore */
281
- ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
282
- /** Sizing of padding and typography */
283
- size = input('md', /* @ts-ignore */
284
- ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
285
- /** Header title text or custom TemplateRef */
286
- title = input(undefined, /* @ts-ignore */
287
- ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
288
- /** Main message content or custom TemplateRef */
289
- message = input(undefined, /* @ts-ignore */
290
- ...(ngDevMode ? [{ debugName: "message" }] : /* istanbul ignore next */ []));
291
- /** Whether to display the icon */
292
- showIcon = input(true, /* @ts-ignore */
293
- ...(ngDevMode ? [{ debugName: "showIcon" }] : /* istanbul ignore next */ []));
294
- /** Custom Lucide icon component, TemplateRef, or boolean */
295
- icon = input(null, /* @ts-ignore */
296
- ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
297
- /** Whether to display a dedicated severity pill badge */
298
- showSeverityBadge = input(false, /* @ts-ignore */
299
- ...(ngDevMode ? [{ debugName: "showSeverityBadge" }] : /* istanbul ignore next */ []));
300
- /** Whether the alert can be dismissed */
301
- dismissible = input(false, /* @ts-ignore */
302
- ...(ngDevMode ? [{ debugName: "dismissible" }] : /* istanbul ignore next */ []));
303
- /** Action button text label */
304
- actionLabel = input(undefined, /* @ts-ignore */
305
- ...(ngDevMode ? [{ debugName: "actionLabel" }] : /* istanbul ignore next */ []));
306
- /** Optional explicit border outline */
307
- bordered = input(false, /* @ts-ignore */
308
- ...(ngDevMode ? [{ debugName: "bordered" }] : /* istanbul ignore next */ []));
309
- /** Additional CSS class */
310
- customClass = input('', /* @ts-ignore */
311
- ...(ngDevMode ? [{ debugName: "customClass" }] : /* istanbul ignore next */ []));
312
- /** Emitted when dismiss close button is clicked */
313
- dismiss = output();
314
- /** Emitted when action button is clicked */
315
- action = output();
316
- /** Emitted when dismiss animation has finished and alert is removed */
317
- closed = output();
318
- isDismissing = signal(false, /* @ts-ignore */
319
- ...(ngDevMode ? [{ debugName: "isDismissing" }] : /* istanbul ignore next */ []));
320
- isDismissed = signal(false, /* @ts-ignore */
321
- ...(ngDevMode ? [{ debugName: "isDismissed" }] : /* istanbul ignore next */ []));
322
- /** Resolved visual variant considering severity */
323
- resolvedVariant = computed(() => {
324
- const sev = this.severity();
325
- if (sev) {
326
- return sev;
327
- }
328
- return this.variant() ?? 'success';
329
- }, /* @ts-ignore */
330
- ...(ngDevMode ? [{ debugName: "resolvedVariant" }] : /* istanbul ignore next */ []));
331
- /** Severity display label for badge */
332
- severityLabel = computed(() => {
333
- const sev = this.severity();
334
- if (sev)
335
- return sev.toUpperCase();
336
- return '';
337
- }, /* @ts-ignore */
338
- ...(ngDevMode ? [{ debugName: "severityLabel" }] : /* istanbul ignore next */ []));
339
- isTitleTemplate = computed(() => this.title() instanceof TemplateRef, /* @ts-ignore */
340
- ...(ngDevMode ? [{ debugName: "isTitleTemplate" }] : /* istanbul ignore next */ []));
341
- titleTemplate = computed(() => this.title(), /* @ts-ignore */
342
- ...(ngDevMode ? [{ debugName: "titleTemplate" }] : /* istanbul ignore next */ []));
343
- isMessageTemplate = computed(() => this.message() instanceof TemplateRef, /* @ts-ignore */
344
- ...(ngDevMode ? [{ debugName: "isMessageTemplate" }] : /* istanbul ignore next */ []));
345
- messageTemplate = computed(() => this.message(), /* @ts-ignore */
346
- ...(ngDevMode ? [{ debugName: "messageTemplate" }] : /* istanbul ignore next */ []));
347
- isIconTemplate = computed(() => this.icon() instanceof TemplateRef, /* @ts-ignore */
348
- ...(ngDevMode ? [{ debugName: "isIconTemplate" }] : /* istanbul ignore next */ []));
349
- iconTemplate = computed(() => this.icon(), /* @ts-ignore */
350
- ...(ngDevMode ? [{ debugName: "iconTemplate" }] : /* istanbul ignore next */ []));
351
- customIconComponent = computed(() => {
352
- const ic = this.icon();
353
- return typeof ic === 'function' ? ic : null;
354
- }, /* @ts-ignore */
355
- ...(ngDevMode ? [{ debugName: "customIconComponent" }] : /* istanbul ignore next */ []));
356
- ariaRole = computed(() => {
357
- const v = this.resolvedVariant();
358
- return v === 'error' || v === 'warning' || v === 'critical' ? 'alert' : 'status';
359
- }, /* @ts-ignore */
360
- ...(ngDevMode ? [{ debugName: "ariaRole" }] : /* istanbul ignore next */ []));
361
- ariaLive = computed(() => {
362
- const v = this.resolvedVariant();
363
- return v === 'error' || v === 'critical' ? 'assertive' : 'polite';
364
- }, /* @ts-ignore */
365
- ...(ngDevMode ? [{ debugName: "ariaLive" }] : /* istanbul ignore next */ []));
366
- onActionClick() {
367
- this.action.emit();
368
- }
369
- onCloseClick() {
370
- if (this.isDismissing() || this.isDismissed())
371
- return;
372
- this.isDismissing.set(true);
373
- this.dismiss.emit();
374
- setTimeout(() => {
375
- this.isDismissed.set(true);
376
- this.closed.emit();
377
- }, 200);
378
- }
379
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
380
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: TalosAlertComponent, isStandalone: true, selector: "talos-alert", inputs: { severity: { classPropertyName: "severity", publicName: "severity", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, showIcon: { classPropertyName: "showIcon", publicName: "showIcon", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, showSeverityBadge: { classPropertyName: "showSeverityBadge", publicName: "showSeverityBadge", isSignal: true, isRequired: false, transformFunction: null }, dismissible: { classPropertyName: "dismissible", publicName: "dismissible", isSignal: true, isRequired: false, transformFunction: null }, actionLabel: { classPropertyName: "actionLabel", publicName: "actionLabel", isSignal: true, isRequired: false, transformFunction: null }, bordered: { classPropertyName: "bordered", publicName: "bordered", isSignal: true, isRequired: false, transformFunction: null }, customClass: { classPropertyName: "customClass", publicName: "customClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dismiss: "dismiss", action: "action", closed: "closed" }, host: { properties: { "class.talos-alert-host": "true", "class.is-dismissing": "isDismissing()", "class.is-dismissed": "isDismissed()" } }, ngImport: i0, template: "@if (!isDismissed()) {\n<div\n class=\"talos-alert\"\n [class.variant-default]=\"resolvedVariant() === 'default'\"\n [class.variant-info]=\"resolvedVariant() === 'info'\"\n [class.variant-success]=\"resolvedVariant() === 'success'\"\n [class.variant-warning]=\"resolvedVariant() === 'warning'\"\n [class.variant-error]=\"resolvedVariant() === 'error'\"\n [class.variant-primary]=\"resolvedVariant() === 'primary'\"\n [class.variant-critical]=\"resolvedVariant() === 'critical'\"\n [class.appearance-subtle]=\"appearance() === 'subtle'\"\n [class.appearance-outline]=\"appearance() === 'outline'\"\n [class.appearance-filled]=\"appearance() === 'filled'\"\n [class.appearance-accent]=\"appearance() === 'accent'\"\n [class.appearance-left-border]=\"appearance() === 'left-border'\"\n [class.size-sm]=\"size() === 'sm'\"\n [class.size-md]=\"size() === 'md'\"\n [class.size-lg]=\"size() === 'lg'\"\n [class.is-bordered]=\"bordered()\"\n [class.is-dismissing]=\"isDismissing()\"\n [class]=\"customClass()\"\n [attr.role]=\"ariaRole()\"\n [attr.aria-live]=\"ariaLive()\"\n>\n <!-- Icon Section -->\n @if (showIcon() && icon() !== false) {\n <div class=\"talos-alert-icon\" aria-hidden=\"true\">\n @if (isIconTemplate()) {\n <ng-container *ngTemplateOutlet=\"iconTemplate()\"></ng-container>\n } @else if (customIconComponent()) {\n <ng-container *ngComponentOutlet=\"customIconComponent()\"></ng-container>\n } @else {\n <ng-content select=\"[talosAlertIcon], talos-alert-icon\"></ng-content>\n @switch (resolvedVariant()) {\n @case ('critical') {\n <svg lucideAlertOctagon [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n @case ('error') {\n <svg lucideCircleAlert [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n @case ('warning') {\n <svg lucideAlertTriangle [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n @case ('success') {\n <svg lucideCheckCircle2 [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n @case ('primary') {\n <svg lucideShieldAlert [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n @default {\n <svg lucideInfo [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n }\n }\n </div>\n }\n\n <!-- Main Alert Body & Details -->\n <div class=\"talos-alert-body\">\n <!-- Header: Title & Severity Badge -->\n <div class=\"talos-alert-header\">\n @if (title()) {\n @if (isTitleTemplate()) {\n <div class=\"talos-alert-title\">\n <ng-container *ngTemplateOutlet=\"titleTemplate()\"></ng-container>\n </div>\n } @else {\n <h4 class=\"talos-alert-title\">{{ title() }}</h4>\n }\n }\n <ng-content select=\"[talosAlertTitle], talos-alert-title\"></ng-content>\n\n @if (showSeverityBadge() && severityLabel()) {\n <span class=\"talos-alert-severity-badge\" [attr.data-severity]=\"resolvedVariant()\">\n {{ severityLabel() }}\n </span>\n }\n </div>\n\n <!-- Message Description Content -->\n <div class=\"talos-alert-message\">\n @if (message()) {\n @if (isMessageTemplate()) {\n <ng-container *ngTemplateOutlet=\"messageTemplate()\"></ng-container>\n } @else {\n <span>{{ message() }}</span>\n }\n }\n <ng-content select=\"[talosAlertDescription], talos-alert-description\"></ng-content>\n <ng-content></ng-content>\n </div>\n </div>\n\n <!-- Actions & Close Button -->\n <div class=\"talos-alert-actions\">\n <ng-content select=\"[talosAlertActions], talos-alert-actions\"></ng-content>\n\n @if (actionLabel()) {\n <button type=\"button\" class=\"talos-alert-action-btn\" (click)=\"onActionClick()\">\n {{ actionLabel() }}\n </button>\n }\n\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"talos-alert-close-btn\"\n aria-label=\"Dismiss alert\"\n (click)=\"onCloseClick()\"\n >\n <svg lucideX [size]=\"size() === 'sm' ? 14 : 16\"></svg>\n </button>\n }\n </div>\n</div>\n}\n", styles: [":host{display:block;width:100%;transition:opacity .2s ease,transform .2s ease,max-height .2s ease,margin .2s ease}:host.is-dismissing{opacity:0;transform:translateY(-4px) scale(.98);pointer-events:none}:host.is-dismissed{display:none!important}.talos-alert{position:relative;display:flex;align-items:flex-start;gap:var(--talos-alert-gap, .75rem);width:100%;border-radius:var(--talos-alert-radius, .5rem);box-sizing:border-box;font-family:inherit;transition:all .2s ease-in-out}.talos-alert.size-sm{padding:var(--talos-alert-padding-sm, .5rem .75rem);font-size:.8125rem}.talos-alert.size-sm .talos-alert-title{font-size:.875rem}.talos-alert.size-md{padding:var(--talos-alert-padding-md, .75rem 1rem);font-size:.875rem}.talos-alert.size-md .talos-alert-title{font-size:.9375rem}.talos-alert.size-lg{padding:var(--talos-alert-padding-lg, 1rem 1.25rem);font-size:.9375rem}.talos-alert.size-lg .talos-alert-title{font-size:1.0625rem}.talos-alert.is-bordered{border-width:1px;border-style:solid}.talos-alert.appearance-subtle{border:1px solid transparent}.talos-alert.appearance-subtle.variant-default{background-color:var(--talos-alert-default-bg);border-color:var(--talos-alert-default-border);color:var(--talos-alert-default-text)}.talos-alert.appearance-subtle.variant-default .talos-alert-icon{color:var(--talos-alert-default-icon)}.talos-alert.appearance-subtle.variant-info{background-color:var(--talos-alert-info-bg);border-color:var(--talos-alert-info-border);color:var(--talos-alert-info-text)}.talos-alert.appearance-subtle.variant-info .talos-alert-icon{color:var(--talos-alert-info-icon)}.talos-alert.appearance-subtle.variant-success{background-color:var(--talos-alert-success-bg);border-color:var(--talos-alert-success-border);color:var(--talos-alert-success-text)}.talos-alert.appearance-subtle.variant-success .talos-alert-icon{color:var(--talos-alert-success-icon)}.talos-alert.appearance-subtle.variant-warning{background-color:var(--talos-alert-warning-bg);border-color:var(--talos-alert-warning-border);color:var(--talos-alert-warning-text)}.talos-alert.appearance-subtle.variant-warning .talos-alert-icon{color:var(--talos-alert-warning-icon)}.talos-alert.appearance-subtle.variant-error{background-color:var(--talos-alert-error-bg);border-color:var(--talos-alert-error-border);color:var(--talos-alert-error-text)}.talos-alert.appearance-subtle.variant-error .talos-alert-icon{color:var(--talos-alert-error-icon)}.talos-alert.appearance-subtle.variant-critical{background-color:var(--talos-alert-critical-bg);border-color:var(--talos-alert-critical-border);color:var(--talos-alert-critical-text)}.talos-alert.appearance-subtle.variant-critical .talos-alert-icon{color:var(--talos-alert-critical-icon)}.talos-alert.appearance-subtle.variant-primary{background-color:var(--talos-alert-primary-bg);border-color:var(--talos-alert-primary-border);color:var(--talos-alert-primary-text)}.talos-alert.appearance-subtle.variant-primary .talos-alert-icon{color:var(--talos-alert-primary-icon)}.talos-alert.appearance-outline{background-color:transparent;border:1px solid currentColor}.talos-alert.appearance-outline.variant-default{border-color:var(--talos-alert-default-border);color:var(--talos-alert-default-text)}.talos-alert.appearance-outline.variant-default .talos-alert-icon{color:var(--talos-alert-default-icon)}.talos-alert.appearance-outline.variant-info{border-color:var(--talos-alert-info-icon);color:var(--talos-alert-info-icon)}.talos-alert.appearance-outline.variant-info .talos-alert-body{color:var(--talos-text-color, #0f172a)}.talos-alert.appearance-outline.variant-info .talos-alert-icon{color:var(--talos-alert-info-icon)}.talos-alert.appearance-outline.variant-success{border-color:var(--talos-alert-success-icon);color:var(--talos-alert-success-icon)}.talos-alert.appearance-outline.variant-success .talos-alert-body{color:var(--talos-text-color, #0f172a)}.talos-alert.appearance-outline.variant-success .talos-alert-icon{color:var(--talos-alert-success-icon)}.talos-alert.appearance-outline.variant-warning{border-color:var(--talos-alert-warning-icon);color:var(--talos-alert-warning-icon)}.talos-alert.appearance-outline.variant-warning .talos-alert-body{color:var(--talos-text-color, #0f172a)}.talos-alert.appearance-outline.variant-warning .talos-alert-icon{color:var(--talos-alert-warning-icon)}.talos-alert.appearance-outline.variant-error{border-color:var(--talos-alert-error-icon);color:var(--talos-alert-error-icon)}.talos-alert.appearance-outline.variant-error .talos-alert-body{color:var(--talos-text-color, #0f172a)}.talos-alert.appearance-outline.variant-error .talos-alert-icon{color:var(--talos-alert-error-icon)}.talos-alert.appearance-outline.variant-critical{border-color:var(--talos-alert-critical-border);color:var(--talos-alert-critical-icon)}.talos-alert.appearance-outline.variant-critical .talos-alert-body{color:var(--talos-text-color, #0f172a)}.talos-alert.appearance-outline.variant-critical .talos-alert-icon{color:var(--talos-alert-critical-icon)}.talos-alert.appearance-outline.variant-primary{border-color:var(--talos-alert-primary-icon);color:var(--talos-alert-primary-icon)}.talos-alert.appearance-outline.variant-primary .talos-alert-body{color:var(--talos-text-color, #0f172a)}.talos-alert.appearance-outline.variant-primary .talos-alert-icon{color:var(--talos-alert-primary-icon)}.talos-alert.appearance-filled{border:1px solid transparent;color:#fff}.talos-alert.appearance-filled .talos-alert-icon,.talos-alert.appearance-filled .talos-alert-title{color:#fff}.talos-alert.appearance-filled .talos-alert-message{color:#ffffffeb}.talos-alert.appearance-filled.variant-default{background-color:#475569}.talos-alert.appearance-filled.variant-info{background-color:#2563eb}.talos-alert.appearance-filled.variant-success{background-color:#16a34a}.talos-alert.appearance-filled.variant-warning{background-color:#d97706}.talos-alert.appearance-filled.variant-error{background-color:#dc2626}.talos-alert.appearance-filled.variant-critical{background-color:#991b1b;box-shadow:0 0 15px #dc262666}.talos-alert.appearance-filled.variant-primary{background-color:#2563eb}.talos-alert.appearance-filled .talos-alert-action-btn{background-color:#fff3;color:#fff;border-color:#ffffff59}.talos-alert.appearance-filled .talos-alert-action-btn:hover{background-color:#ffffff4d}.talos-alert.appearance-filled .talos-alert-close-btn{color:#fffc}.talos-alert.appearance-filled .talos-alert-close-btn:hover{background-color:#fff3;color:#fff}.talos-alert.appearance-accent,.talos-alert.appearance-left-border{background-color:var(--talos-card-bg, #ffffff);border:1px solid var(--talos-border-color, #e2e8f0);border-left-width:4px;box-shadow:var(--talos-alert-shadow);color:var(--talos-text-color, #0f172a)}.talos-alert.appearance-accent.variant-default,.talos-alert.appearance-left-border.variant-default{border-left-color:var(--talos-alert-default-icon)}.talos-alert.appearance-accent.variant-default .talos-alert-icon,.talos-alert.appearance-left-border.variant-default .talos-alert-icon{color:var(--talos-alert-default-icon)}.talos-alert.appearance-accent.variant-info,.talos-alert.appearance-left-border.variant-info{border-left-color:var(--talos-alert-info-icon)}.talos-alert.appearance-accent.variant-info .talos-alert-icon,.talos-alert.appearance-left-border.variant-info .talos-alert-icon{color:var(--talos-alert-info-icon)}.talos-alert.appearance-accent.variant-success,.talos-alert.appearance-left-border.variant-success{border-left-color:var(--talos-alert-success-icon)}.talos-alert.appearance-accent.variant-success .talos-alert-icon,.talos-alert.appearance-left-border.variant-success .talos-alert-icon{color:var(--talos-alert-success-icon)}.talos-alert.appearance-accent.variant-warning,.talos-alert.appearance-left-border.variant-warning{border-left-color:var(--talos-alert-warning-icon)}.talos-alert.appearance-accent.variant-warning .talos-alert-icon,.talos-alert.appearance-left-border.variant-warning .talos-alert-icon{color:var(--talos-alert-warning-icon)}.talos-alert.appearance-accent.variant-error,.talos-alert.appearance-left-border.variant-error{border-left-color:var(--talos-alert-error-icon)}.talos-alert.appearance-accent.variant-error .talos-alert-icon,.talos-alert.appearance-left-border.variant-error .talos-alert-icon{color:var(--talos-alert-error-icon)}.talos-alert.appearance-accent.variant-critical,.talos-alert.appearance-left-border.variant-critical{border-left-color:#ef4444}.talos-alert.appearance-accent.variant-critical .talos-alert-icon,.talos-alert.appearance-left-border.variant-critical .talos-alert-icon{color:#ef4444}.talos-alert.appearance-accent.variant-primary,.talos-alert.appearance-left-border.variant-primary{border-left-color:var(--talos-alert-primary-icon)}.talos-alert.appearance-accent.variant-primary .talos-alert-icon,.talos-alert.appearance-left-border.variant-primary .talos-alert-icon{color:var(--talos-alert-primary-icon)}.talos-alert-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;line-height:1}.talos-alert-icon svg{display:block}.talos-alert-body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:.25rem}.talos-alert-header{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.talos-alert-title{margin:0;font-weight:600;line-height:1.35;color:inherit}.talos-alert-message{line-height:1.45;color:inherit;opacity:.95}.talos-alert-severity-badge{display:inline-flex;align-items:center;padding:.125rem .4375rem;border-radius:9999px;font-size:.6875rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;background-color:#00000014;color:inherit}.talos-alert-severity-badge[data-severity=critical]{background-color:#ef4444;color:#fff}.talos-alert-severity-badge[data-severity=error]{background-color:#ef444433;color:#dc2626}.talos-alert-severity-badge[data-severity=warning]{background-color:#f59e0b33;color:#b45309}.talos-alert-severity-badge[data-severity=info]{background-color:#3b82f633;color:#1d4ed8}.talos-alert-severity-badge[data-severity=success]{background-color:#22c55e33;color:#15803d}.talos-alert-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0;margin-left:auto}.talos-alert-action-btn{display:inline-flex;align-items:center;justify-content:center;padding:.25rem .625rem;font-size:.75rem;font-weight:600;border-radius:var(--talos-border-radius, .375rem);border:1px solid currentColor;background-color:transparent;color:inherit;cursor:pointer;transition:all .15s ease}.talos-alert-action-btn:hover{background-color:#0000000f}.talos-alert-action-btn:active{transform:scale(.97)}.talos-alert-close-btn{display:inline-flex;align-items:center;justify-content:center;padding:.25rem;border:none;background:transparent;color:inherit;opacity:.7;border-radius:var(--talos-border-radius, .375rem);cursor:pointer;transition:all .15s ease}.talos-alert-close-btn:hover{opacity:1;background-color:#00000014}.talos-alert-close-btn:active{transform:scale(.92)}\n"], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LucideInfo, selector: "svg[lucideInfo]" }, { kind: "component", type: LucideCheckCircle2, selector: "svg[lucideCircleCheck], svg[lucideCheckCircle2]" }, { kind: "component", type: LucideAlertTriangle, selector: "svg[lucideTriangleAlert], svg[lucideAlertTriangle]" }, { kind: "component", type: LucideCircleAlert, selector: "svg[lucideCircleAlert], svg[lucideAlertCircle]" }, { kind: "component", type: LucideAlertOctagon, selector: "svg[lucideOctagonAlert], svg[lucideAlertOctagon]" }, { kind: "component", type: LucideShieldAlert, selector: "svg[lucideShieldAlert]" }, { kind: "component", type: LucideX, selector: "svg[lucideX]" }] });
381
- }
382
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertComponent, decorators: [{
383
- type: Component,
384
- args: [{ selector: 'talos-alert', imports: [
385
- NgComponentOutlet,
386
- NgTemplateOutlet,
387
- LucideInfo,
388
- LucideCheckCircle2,
389
- LucideAlertTriangle,
390
- LucideCircleAlert,
391
- LucideAlertOctagon,
392
- LucideShieldAlert,
393
- LucideX
394
- ], host: {
395
- '[class.talos-alert-host]': 'true',
396
- '[class.is-dismissing]': 'isDismissing()',
397
- '[class.is-dismissed]': 'isDismissed()'
398
- }, template: "@if (!isDismissed()) {\n<div\n class=\"talos-alert\"\n [class.variant-default]=\"resolvedVariant() === 'default'\"\n [class.variant-info]=\"resolvedVariant() === 'info'\"\n [class.variant-success]=\"resolvedVariant() === 'success'\"\n [class.variant-warning]=\"resolvedVariant() === 'warning'\"\n [class.variant-error]=\"resolvedVariant() === 'error'\"\n [class.variant-primary]=\"resolvedVariant() === 'primary'\"\n [class.variant-critical]=\"resolvedVariant() === 'critical'\"\n [class.appearance-subtle]=\"appearance() === 'subtle'\"\n [class.appearance-outline]=\"appearance() === 'outline'\"\n [class.appearance-filled]=\"appearance() === 'filled'\"\n [class.appearance-accent]=\"appearance() === 'accent'\"\n [class.appearance-left-border]=\"appearance() === 'left-border'\"\n [class.size-sm]=\"size() === 'sm'\"\n [class.size-md]=\"size() === 'md'\"\n [class.size-lg]=\"size() === 'lg'\"\n [class.is-bordered]=\"bordered()\"\n [class.is-dismissing]=\"isDismissing()\"\n [class]=\"customClass()\"\n [attr.role]=\"ariaRole()\"\n [attr.aria-live]=\"ariaLive()\"\n>\n <!-- Icon Section -->\n @if (showIcon() && icon() !== false) {\n <div class=\"talos-alert-icon\" aria-hidden=\"true\">\n @if (isIconTemplate()) {\n <ng-container *ngTemplateOutlet=\"iconTemplate()\"></ng-container>\n } @else if (customIconComponent()) {\n <ng-container *ngComponentOutlet=\"customIconComponent()\"></ng-container>\n } @else {\n <ng-content select=\"[talosAlertIcon], talos-alert-icon\"></ng-content>\n @switch (resolvedVariant()) {\n @case ('critical') {\n <svg lucideAlertOctagon [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n @case ('error') {\n <svg lucideCircleAlert [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n @case ('warning') {\n <svg lucideAlertTriangle [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n @case ('success') {\n <svg lucideCheckCircle2 [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n @case ('primary') {\n <svg lucideShieldAlert [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n @default {\n <svg lucideInfo [size]=\"size() === 'sm' ? 16 : size() === 'lg' ? 24 : 20\"></svg>\n }\n }\n }\n </div>\n }\n\n <!-- Main Alert Body & Details -->\n <div class=\"talos-alert-body\">\n <!-- Header: Title & Severity Badge -->\n <div class=\"talos-alert-header\">\n @if (title()) {\n @if (isTitleTemplate()) {\n <div class=\"talos-alert-title\">\n <ng-container *ngTemplateOutlet=\"titleTemplate()\"></ng-container>\n </div>\n } @else {\n <h4 class=\"talos-alert-title\">{{ title() }}</h4>\n }\n }\n <ng-content select=\"[talosAlertTitle], talos-alert-title\"></ng-content>\n\n @if (showSeverityBadge() && severityLabel()) {\n <span class=\"talos-alert-severity-badge\" [attr.data-severity]=\"resolvedVariant()\">\n {{ severityLabel() }}\n </span>\n }\n </div>\n\n <!-- Message Description Content -->\n <div class=\"talos-alert-message\">\n @if (message()) {\n @if (isMessageTemplate()) {\n <ng-container *ngTemplateOutlet=\"messageTemplate()\"></ng-container>\n } @else {\n <span>{{ message() }}</span>\n }\n }\n <ng-content select=\"[talosAlertDescription], talos-alert-description\"></ng-content>\n <ng-content></ng-content>\n </div>\n </div>\n\n <!-- Actions & Close Button -->\n <div class=\"talos-alert-actions\">\n <ng-content select=\"[talosAlertActions], talos-alert-actions\"></ng-content>\n\n @if (actionLabel()) {\n <button type=\"button\" class=\"talos-alert-action-btn\" (click)=\"onActionClick()\">\n {{ actionLabel() }}\n </button>\n }\n\n @if (dismissible()) {\n <button\n type=\"button\"\n class=\"talos-alert-close-btn\"\n aria-label=\"Dismiss alert\"\n (click)=\"onCloseClick()\"\n >\n <svg lucideX [size]=\"size() === 'sm' ? 14 : 16\"></svg>\n </button>\n }\n </div>\n</div>\n}\n", styles: [":host{display:block;width:100%;transition:opacity .2s ease,transform .2s ease,max-height .2s ease,margin .2s ease}:host.is-dismissing{opacity:0;transform:translateY(-4px) scale(.98);pointer-events:none}:host.is-dismissed{display:none!important}.talos-alert{position:relative;display:flex;align-items:flex-start;gap:var(--talos-alert-gap, .75rem);width:100%;border-radius:var(--talos-alert-radius, .5rem);box-sizing:border-box;font-family:inherit;transition:all .2s ease-in-out}.talos-alert.size-sm{padding:var(--talos-alert-padding-sm, .5rem .75rem);font-size:.8125rem}.talos-alert.size-sm .talos-alert-title{font-size:.875rem}.talos-alert.size-md{padding:var(--talos-alert-padding-md, .75rem 1rem);font-size:.875rem}.talos-alert.size-md .talos-alert-title{font-size:.9375rem}.talos-alert.size-lg{padding:var(--talos-alert-padding-lg, 1rem 1.25rem);font-size:.9375rem}.talos-alert.size-lg .talos-alert-title{font-size:1.0625rem}.talos-alert.is-bordered{border-width:1px;border-style:solid}.talos-alert.appearance-subtle{border:1px solid transparent}.talos-alert.appearance-subtle.variant-default{background-color:var(--talos-alert-default-bg);border-color:var(--talos-alert-default-border);color:var(--talos-alert-default-text)}.talos-alert.appearance-subtle.variant-default .talos-alert-icon{color:var(--talos-alert-default-icon)}.talos-alert.appearance-subtle.variant-info{background-color:var(--talos-alert-info-bg);border-color:var(--talos-alert-info-border);color:var(--talos-alert-info-text)}.talos-alert.appearance-subtle.variant-info .talos-alert-icon{color:var(--talos-alert-info-icon)}.talos-alert.appearance-subtle.variant-success{background-color:var(--talos-alert-success-bg);border-color:var(--talos-alert-success-border);color:var(--talos-alert-success-text)}.talos-alert.appearance-subtle.variant-success .talos-alert-icon{color:var(--talos-alert-success-icon)}.talos-alert.appearance-subtle.variant-warning{background-color:var(--talos-alert-warning-bg);border-color:var(--talos-alert-warning-border);color:var(--talos-alert-warning-text)}.talos-alert.appearance-subtle.variant-warning .talos-alert-icon{color:var(--talos-alert-warning-icon)}.talos-alert.appearance-subtle.variant-error{background-color:var(--talos-alert-error-bg);border-color:var(--talos-alert-error-border);color:var(--talos-alert-error-text)}.talos-alert.appearance-subtle.variant-error .talos-alert-icon{color:var(--talos-alert-error-icon)}.talos-alert.appearance-subtle.variant-critical{background-color:var(--talos-alert-critical-bg);border-color:var(--talos-alert-critical-border);color:var(--talos-alert-critical-text)}.talos-alert.appearance-subtle.variant-critical .talos-alert-icon{color:var(--talos-alert-critical-icon)}.talos-alert.appearance-subtle.variant-primary{background-color:var(--talos-alert-primary-bg);border-color:var(--talos-alert-primary-border);color:var(--talos-alert-primary-text)}.talos-alert.appearance-subtle.variant-primary .talos-alert-icon{color:var(--talos-alert-primary-icon)}.talos-alert.appearance-outline{background-color:transparent;border:1px solid currentColor}.talos-alert.appearance-outline.variant-default{border-color:var(--talos-alert-default-border);color:var(--talos-alert-default-text)}.talos-alert.appearance-outline.variant-default .talos-alert-icon{color:var(--talos-alert-default-icon)}.talos-alert.appearance-outline.variant-info{border-color:var(--talos-alert-info-icon);color:var(--talos-alert-info-icon)}.talos-alert.appearance-outline.variant-info .talos-alert-body{color:var(--talos-text-color, #0f172a)}.talos-alert.appearance-outline.variant-info .talos-alert-icon{color:var(--talos-alert-info-icon)}.talos-alert.appearance-outline.variant-success{border-color:var(--talos-alert-success-icon);color:var(--talos-alert-success-icon)}.talos-alert.appearance-outline.variant-success .talos-alert-body{color:var(--talos-text-color, #0f172a)}.talos-alert.appearance-outline.variant-success .talos-alert-icon{color:var(--talos-alert-success-icon)}.talos-alert.appearance-outline.variant-warning{border-color:var(--talos-alert-warning-icon);color:var(--talos-alert-warning-icon)}.talos-alert.appearance-outline.variant-warning .talos-alert-body{color:var(--talos-text-color, #0f172a)}.talos-alert.appearance-outline.variant-warning .talos-alert-icon{color:var(--talos-alert-warning-icon)}.talos-alert.appearance-outline.variant-error{border-color:var(--talos-alert-error-icon);color:var(--talos-alert-error-icon)}.talos-alert.appearance-outline.variant-error .talos-alert-body{color:var(--talos-text-color, #0f172a)}.talos-alert.appearance-outline.variant-error .talos-alert-icon{color:var(--talos-alert-error-icon)}.talos-alert.appearance-outline.variant-critical{border-color:var(--talos-alert-critical-border);color:var(--talos-alert-critical-icon)}.talos-alert.appearance-outline.variant-critical .talos-alert-body{color:var(--talos-text-color, #0f172a)}.talos-alert.appearance-outline.variant-critical .talos-alert-icon{color:var(--talos-alert-critical-icon)}.talos-alert.appearance-outline.variant-primary{border-color:var(--talos-alert-primary-icon);color:var(--talos-alert-primary-icon)}.talos-alert.appearance-outline.variant-primary .talos-alert-body{color:var(--talos-text-color, #0f172a)}.talos-alert.appearance-outline.variant-primary .talos-alert-icon{color:var(--talos-alert-primary-icon)}.talos-alert.appearance-filled{border:1px solid transparent;color:#fff}.talos-alert.appearance-filled .talos-alert-icon,.talos-alert.appearance-filled .talos-alert-title{color:#fff}.talos-alert.appearance-filled .talos-alert-message{color:#ffffffeb}.talos-alert.appearance-filled.variant-default{background-color:#475569}.talos-alert.appearance-filled.variant-info{background-color:#2563eb}.talos-alert.appearance-filled.variant-success{background-color:#16a34a}.talos-alert.appearance-filled.variant-warning{background-color:#d97706}.talos-alert.appearance-filled.variant-error{background-color:#dc2626}.talos-alert.appearance-filled.variant-critical{background-color:#991b1b;box-shadow:0 0 15px #dc262666}.talos-alert.appearance-filled.variant-primary{background-color:#2563eb}.talos-alert.appearance-filled .talos-alert-action-btn{background-color:#fff3;color:#fff;border-color:#ffffff59}.talos-alert.appearance-filled .talos-alert-action-btn:hover{background-color:#ffffff4d}.talos-alert.appearance-filled .talos-alert-close-btn{color:#fffc}.talos-alert.appearance-filled .talos-alert-close-btn:hover{background-color:#fff3;color:#fff}.talos-alert.appearance-accent,.talos-alert.appearance-left-border{background-color:var(--talos-card-bg, #ffffff);border:1px solid var(--talos-border-color, #e2e8f0);border-left-width:4px;box-shadow:var(--talos-alert-shadow);color:var(--talos-text-color, #0f172a)}.talos-alert.appearance-accent.variant-default,.talos-alert.appearance-left-border.variant-default{border-left-color:var(--talos-alert-default-icon)}.talos-alert.appearance-accent.variant-default .talos-alert-icon,.talos-alert.appearance-left-border.variant-default .talos-alert-icon{color:var(--talos-alert-default-icon)}.talos-alert.appearance-accent.variant-info,.talos-alert.appearance-left-border.variant-info{border-left-color:var(--talos-alert-info-icon)}.talos-alert.appearance-accent.variant-info .talos-alert-icon,.talos-alert.appearance-left-border.variant-info .talos-alert-icon{color:var(--talos-alert-info-icon)}.talos-alert.appearance-accent.variant-success,.talos-alert.appearance-left-border.variant-success{border-left-color:var(--talos-alert-success-icon)}.talos-alert.appearance-accent.variant-success .talos-alert-icon,.talos-alert.appearance-left-border.variant-success .talos-alert-icon{color:var(--talos-alert-success-icon)}.talos-alert.appearance-accent.variant-warning,.talos-alert.appearance-left-border.variant-warning{border-left-color:var(--talos-alert-warning-icon)}.talos-alert.appearance-accent.variant-warning .talos-alert-icon,.talos-alert.appearance-left-border.variant-warning .talos-alert-icon{color:var(--talos-alert-warning-icon)}.talos-alert.appearance-accent.variant-error,.talos-alert.appearance-left-border.variant-error{border-left-color:var(--talos-alert-error-icon)}.talos-alert.appearance-accent.variant-error .talos-alert-icon,.talos-alert.appearance-left-border.variant-error .talos-alert-icon{color:var(--talos-alert-error-icon)}.talos-alert.appearance-accent.variant-critical,.talos-alert.appearance-left-border.variant-critical{border-left-color:#ef4444}.talos-alert.appearance-accent.variant-critical .talos-alert-icon,.talos-alert.appearance-left-border.variant-critical .talos-alert-icon{color:#ef4444}.talos-alert.appearance-accent.variant-primary,.talos-alert.appearance-left-border.variant-primary{border-left-color:var(--talos-alert-primary-icon)}.talos-alert.appearance-accent.variant-primary .talos-alert-icon,.talos-alert.appearance-left-border.variant-primary .talos-alert-icon{color:var(--talos-alert-primary-icon)}.talos-alert-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;line-height:1}.talos-alert-icon svg{display:block}.talos-alert-body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:.25rem}.talos-alert-header{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.talos-alert-title{margin:0;font-weight:600;line-height:1.35;color:inherit}.talos-alert-message{line-height:1.45;color:inherit;opacity:.95}.talos-alert-severity-badge{display:inline-flex;align-items:center;padding:.125rem .4375rem;border-radius:9999px;font-size:.6875rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;background-color:#00000014;color:inherit}.talos-alert-severity-badge[data-severity=critical]{background-color:#ef4444;color:#fff}.talos-alert-severity-badge[data-severity=error]{background-color:#ef444433;color:#dc2626}.talos-alert-severity-badge[data-severity=warning]{background-color:#f59e0b33;color:#b45309}.talos-alert-severity-badge[data-severity=info]{background-color:#3b82f633;color:#1d4ed8}.talos-alert-severity-badge[data-severity=success]{background-color:#22c55e33;color:#15803d}.talos-alert-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0;margin-left:auto}.talos-alert-action-btn{display:inline-flex;align-items:center;justify-content:center;padding:.25rem .625rem;font-size:.75rem;font-weight:600;border-radius:var(--talos-border-radius, .375rem);border:1px solid currentColor;background-color:transparent;color:inherit;cursor:pointer;transition:all .15s ease}.talos-alert-action-btn:hover{background-color:#0000000f}.talos-alert-action-btn:active{transform:scale(.97)}.talos-alert-close-btn{display:inline-flex;align-items:center;justify-content:center;padding:.25rem;border:none;background:transparent;color:inherit;opacity:.7;border-radius:var(--talos-border-radius, .375rem);cursor:pointer;transition:all .15s ease}.talos-alert-close-btn:hover{opacity:1;background-color:#00000014}.talos-alert-close-btn:active{transform:scale(.92)}\n"] }]
399
- }], propDecorators: { severity: [{ type: i0.Input, args: [{ isSignal: true, alias: "severity", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }], showIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "showIcon", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], showSeverityBadge: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSeverityBadge", required: false }] }], dismissible: [{ type: i0.Input, args: [{ isSignal: true, alias: "dismissible", required: false }] }], actionLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "actionLabel", required: false }] }], bordered: [{ type: i0.Input, args: [{ isSignal: true, alias: "bordered", required: false }] }], customClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "customClass", required: false }] }], dismiss: [{ type: i0.Output, args: ["dismiss"] }], action: [{ type: i0.Output, args: ["action"] }], closed: [{ type: i0.Output, args: ["closed"] }] } });
400
-
401
- class TalosAlertContainerComponent {
402
- alertService = inject(TalosAlertService);
403
- /** Mode of alerts to render from the service ('inline', 'banner', or 'all') */
404
- type = input('inline', /* @ts-ignore */
405
- ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
406
- targetAlerts = computed(() => {
407
- const t = this.type();
408
- if (t === 'banner') {
409
- return this.alertService.bannerAlerts();
410
- }
411
- if (t === 'all') {
412
- return [...this.alertService.bannerAlerts(), ...this.alertService.alerts()];
413
- }
414
- return this.alertService.alerts();
415
- }, /* @ts-ignore */
416
- ...(ngDevMode ? [{ debugName: "targetAlerts" }] : /* istanbul ignore next */ []));
417
- onDismiss(id) {
418
- if (this.type() === 'banner') {
419
- this.alertService.dismissBanner(id);
420
- }
421
- else {
422
- this.alertService.dismiss(id);
423
- }
424
- }
425
- onAction(item) {
426
- if (item.onAction) {
427
- item.onAction();
428
- }
429
- }
430
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
431
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: TalosAlertContainerComponent, isStandalone: true, selector: "talos-alert-container", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.talos-alert-container-host": "true" } }, ngImport: i0, template: `
432
- @if (targetAlerts().length > 0) {
433
- <div class="talos-alert-container-stack" [class.is-banner]="type() === 'banner'">
434
- @for (item of targetAlerts(); track item.id) {
435
- <talos-alert
436
- [variant]="item.variant || 'default'"
437
- [severity]="item.severity"
438
- [appearance]="item.appearance || 'subtle'"
439
- [size]="item.size || 'md'"
440
- [title]="item.title"
441
- [message]="item.message"
442
- [showIcon]="item.showIcon ?? true"
443
- [icon]="item.icon"
444
- [showSeverityBadge]="item.showSeverityBadge ?? false"
445
- [dismissible]="item.dismissible ?? true"
446
- [actionLabel]="item.actionLabel"
447
- [bordered]="item.bordered ?? false"
448
- [customClass]="item.customClass || ''"
449
- (dismiss)="onDismiss(item.id)"
450
- (action)="onAction(item)"
451
- />
452
- }
453
- </div>
454
- }
455
- `, isInline: true, styles: [":host{display:block;width:100%}.talos-alert-container-stack{display:flex;flex-direction:column;gap:.75rem;width:100%}.talos-alert-container-stack.is-banner{gap:.5rem}.talos-alert-container-stack.is-banner talos-alert{border-radius:0;box-shadow:0 2px 8px #0000001a}\n"], dependencies: [{ kind: "component", type: TalosAlertComponent, selector: "talos-alert", inputs: ["severity", "variant", "appearance", "size", "title", "message", "showIcon", "icon", "showSeverityBadge", "dismissible", "actionLabel", "bordered", "customClass"], outputs: ["dismiss", "action", "closed"] }] });
456
- }
457
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertContainerComponent, decorators: [{
458
- type: Component,
459
- args: [{ selector: 'talos-alert-container', imports: [TalosAlertComponent], template: `
460
- @if (targetAlerts().length > 0) {
461
- <div class="talos-alert-container-stack" [class.is-banner]="type() === 'banner'">
462
- @for (item of targetAlerts(); track item.id) {
463
- <talos-alert
464
- [variant]="item.variant || 'default'"
465
- [severity]="item.severity"
466
- [appearance]="item.appearance || 'subtle'"
467
- [size]="item.size || 'md'"
468
- [title]="item.title"
469
- [message]="item.message"
470
- [showIcon]="item.showIcon ?? true"
471
- [icon]="item.icon"
472
- [showSeverityBadge]="item.showSeverityBadge ?? false"
473
- [dismissible]="item.dismissible ?? true"
474
- [actionLabel]="item.actionLabel"
475
- [bordered]="item.bordered ?? false"
476
- [customClass]="item.customClass || ''"
477
- (dismiss)="onDismiss(item.id)"
478
- (action)="onAction(item)"
479
- />
480
- }
481
- </div>
482
- }
483
- `, host: {
484
- '[class.talos-alert-container-host]': 'true'
485
- }, styles: [":host{display:block;width:100%}.talos-alert-container-stack{display:flex;flex-direction:column;gap:.75rem;width:100%}.talos-alert-container-stack.is-banner{gap:.5rem}.talos-alert-container-stack.is-banner talos-alert{border-radius:0;box-shadow:0 2px 8px #0000001a}\n"] }]
486
- }], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }] } });
487
-
488
- /**
489
- * Convenience NgModule wrapping standalone alert components and directives.
490
- */
491
- class TalosAlertModule {
492
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
493
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertModule, imports: [TalosAlertComponent,
494
- TalosAlertContainerComponent,
495
- TalosAlertTitleDirective,
496
- TalosAlertDescriptionDirective,
497
- TalosAlertActionsDirective,
498
- TalosAlertIconDirective], exports: [TalosAlertComponent,
499
- TalosAlertContainerComponent,
500
- TalosAlertTitleDirective,
501
- TalosAlertDescriptionDirective,
502
- TalosAlertActionsDirective,
503
- TalosAlertIconDirective] });
504
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertModule, imports: [TalosAlertComponent,
505
- TalosAlertContainerComponent] });
506
- }
507
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosAlertModule, decorators: [{
508
- type: NgModule,
509
- args: [{
510
- imports: [
511
- TalosAlertComponent,
512
- TalosAlertContainerComponent,
513
- TalosAlertTitleDirective,
514
- TalosAlertDescriptionDirective,
515
- TalosAlertActionsDirective,
516
- TalosAlertIconDirective
517
- ],
518
- exports: [
519
- TalosAlertComponent,
520
- TalosAlertContainerComponent,
521
- TalosAlertTitleDirective,
522
- TalosAlertDescriptionDirective,
523
- TalosAlertActionsDirective,
524
- TalosAlertIconDirective
525
- ]
526
- }]
527
- }] });
528
-
529
- /**
530
- * Generated bundle index. Do not edit.
531
- */
532
-
533
- export { TalosAlertActionsDirective, TalosAlertComponent, TalosAlertContainerComponent, TalosAlertDescriptionDirective, TalosAlertIconDirective, TalosAlertModule, TalosAlertService, TalosAlertTitleDirective };
534
- //# sourceMappingURL=weeehaoooz-talos-ui-feedback-alert.mjs.map