@weeehaoooz/talos-ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +85 -0
  3. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs +237 -0
  4. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs.map +1 -0
  5. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs +93 -0
  6. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs.map +1 -0
  7. package/fesm2022/weeehaoooz-talos-ui-core.mjs +438 -0
  8. package/fesm2022/weeehaoooz-talos-ui-core.mjs.map +1 -0
  9. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs +233 -0
  10. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs.map +1 -0
  11. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs +361 -0
  12. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs.map +1 -0
  13. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs +312 -0
  14. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs.map +1 -0
  15. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs +235 -0
  16. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs.map +1 -0
  17. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs +462 -0
  18. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs.map +1 -0
  19. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs +805 -0
  20. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs.map +1 -0
  21. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs +267 -0
  22. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs.map +1 -0
  23. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs +351 -0
  24. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs.map +1 -0
  25. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs +566 -0
  26. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs.map +1 -0
  27. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs +534 -0
  28. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs.map +1 -0
  29. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs +446 -0
  30. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs.map +1 -0
  31. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs +376 -0
  32. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs.map +1 -0
  33. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs +147 -0
  34. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs.map +1 -0
  35. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs +242 -0
  36. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs.map +1 -0
  37. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs +514 -0
  38. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs.map +1 -0
  39. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs +548 -0
  40. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs.map +1 -0
  41. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs +692 -0
  42. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs.map +1 -0
  43. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs +761 -0
  44. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs.map +1 -0
  45. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs +896 -0
  46. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs.map +1 -0
  47. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs +872 -0
  48. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs.map +1 -0
  49. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs +119 -0
  50. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs.map +1 -0
  51. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs +135 -0
  52. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs.map +1 -0
  53. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs +666 -0
  54. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs.map +1 -0
  55. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs +147 -0
  56. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs.map +1 -0
  57. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs +33 -0
  58. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs.map +1 -0
  59. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs +455 -0
  60. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs.map +1 -0
  61. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs +379 -0
  62. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs.map +1 -0
  63. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs +297 -0
  64. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs.map +1 -0
  65. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs +661 -0
  66. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs.map +1 -0
  67. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs +346 -0
  68. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs.map +1 -0
  69. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs +896 -0
  70. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs.map +1 -0
  71. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs +252 -0
  72. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs.map +1 -0
  73. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs +916 -0
  74. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs.map +1 -0
  75. package/fesm2022/weeehaoooz-talos-ui-layout.mjs +851 -0
  76. package/fesm2022/weeehaoooz-talos-ui-layout.mjs.map +1 -0
  77. package/fesm2022/weeehaoooz-talos-ui-nav.mjs +897 -0
  78. package/fesm2022/weeehaoooz-talos-ui-nav.mjs.map +1 -0
  79. package/fesm2022/weeehaoooz-talos-ui.mjs +17058 -0
  80. package/fesm2022/weeehaoooz-talos-ui.mjs.map +1 -0
  81. package/package.json +203 -0
  82. package/schematics/collection.json +10 -0
  83. package/schematics/ng-add/index.d.ts +3 -0
  84. package/schematics/ng-add/index.js +99 -0
  85. package/schematics/ng-add/schema.d.ts +10 -0
  86. package/schematics/ng-add/schema.js +2 -0
  87. package/schematics/ng-add/schema.json +52 -0
  88. package/styles/_alert.scss +56 -0
  89. package/styles/_badge.scss +279 -0
  90. package/styles/_button-group.scss +470 -0
  91. package/styles/_buttons.scss +442 -0
  92. package/styles/_card.scss +18 -0
  93. package/styles/_dialog.scss +116 -0
  94. package/styles/_drop-zone.scss +19 -0
  95. package/styles/_form-controls.scss +660 -0
  96. package/styles/_slide-toggle.scss +171 -0
  97. package/styles/_status-tag.scss +108 -0
  98. package/styles/_timeline.scss +19 -0
  99. package/styles/_tooltip.scss +32 -0
  100. package/styles/_typography.scss +279 -0
  101. package/styles/_variables.scss +590 -0
  102. package/styles/index.scss +15 -0
  103. package/types/weeehaoooz-talos-ui-button-button-group.d.ts +59 -0
  104. package/types/weeehaoooz-talos-ui-button-button-group.d.ts.map +1 -0
  105. package/types/weeehaoooz-talos-ui-button-button.d.ts +38 -0
  106. package/types/weeehaoooz-talos-ui-button-button.d.ts.map +1 -0
  107. package/types/weeehaoooz-talos-ui-core.d.ts +95 -0
  108. package/types/weeehaoooz-talos-ui-core.d.ts.map +1 -0
  109. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts +119 -0
  110. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts.map +1 -0
  111. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts +135 -0
  112. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts.map +1 -0
  113. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts +144 -0
  114. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts.map +1 -0
  115. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts +83 -0
  116. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts.map +1 -0
  117. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts +255 -0
  118. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts.map +1 -0
  119. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts +204 -0
  120. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts.map +1 -0
  121. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts +101 -0
  122. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts.map +1 -0
  123. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts +138 -0
  124. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts.map +1 -0
  125. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts +161 -0
  126. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts.map +1 -0
  127. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts +212 -0
  128. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts.map +1 -0
  129. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts +259 -0
  130. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts.map +1 -0
  131. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts +147 -0
  132. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts.map +1 -0
  133. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts +32 -0
  134. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts.map +1 -0
  135. package/types/weeehaoooz-talos-ui-form-affix.d.ts +88 -0
  136. package/types/weeehaoooz-talos-ui-form-affix.d.ts.map +1 -0
  137. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts +113 -0
  138. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts.map +1 -0
  139. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts +165 -0
  140. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts.map +1 -0
  141. package/types/weeehaoooz-talos-ui-form-chips.d.ts +152 -0
  142. package/types/weeehaoooz-talos-ui-form-chips.d.ts.map +1 -0
  143. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts +144 -0
  144. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts.map +1 -0
  145. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts +138 -0
  146. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts.map +1 -0
  147. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts +148 -0
  148. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts.map +1 -0
  149. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts +44 -0
  150. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts.map +1 -0
  151. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts +48 -0
  152. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts.map +1 -0
  153. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts +227 -0
  154. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts.map +1 -0
  155. package/types/weeehaoooz-talos-ui-form-form-field.d.ts +42 -0
  156. package/types/weeehaoooz-talos-ui-form-form-field.d.ts.map +1 -0
  157. package/types/weeehaoooz-talos-ui-form-input.d.ts +15 -0
  158. package/types/weeehaoooz-talos-ui-form-input.d.ts.map +1 -0
  159. package/types/weeehaoooz-talos-ui-form-otp.d.ts +111 -0
  160. package/types/weeehaoooz-talos-ui-form-otp.d.ts.map +1 -0
  161. package/types/weeehaoooz-talos-ui-form-password-input.d.ts +145 -0
  162. package/types/weeehaoooz-talos-ui-form-password-input.d.ts.map +1 -0
  163. package/types/weeehaoooz-talos-ui-form-radio.d.ts +84 -0
  164. package/types/weeehaoooz-talos-ui-form-radio.d.ts.map +1 -0
  165. package/types/weeehaoooz-talos-ui-form-range-input.d.ts +181 -0
  166. package/types/weeehaoooz-talos-ui-form-range-input.d.ts.map +1 -0
  167. package/types/weeehaoooz-talos-ui-form-rating.d.ts +110 -0
  168. package/types/weeehaoooz-talos-ui-form-rating.d.ts.map +1 -0
  169. package/types/weeehaoooz-talos-ui-form-select-input.d.ts +195 -0
  170. package/types/weeehaoooz-talos-ui-form-select-input.d.ts.map +1 -0
  171. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts +79 -0
  172. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts.map +1 -0
  173. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts +192 -0
  174. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts.map +1 -0
  175. package/types/weeehaoooz-talos-ui-layout.d.ts +286 -0
  176. package/types/weeehaoooz-talos-ui-layout.d.ts.map +1 -0
  177. package/types/weeehaoooz-talos-ui-nav.d.ts +384 -0
  178. package/types/weeehaoooz-talos-ui-nav.d.ts.map +1 -0
  179. package/types/weeehaoooz-talos-ui.d.ts +5050 -0
  180. package/types/weeehaoooz-talos-ui.d.ts.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weeehaoooz-talos-ui-feedback-alert.mjs","sources":["../../../projects/talos-ui/feedback/alert/alert.service.ts","../../../projects/talos-ui/feedback/alert/alert.directives.ts","../../../projects/talos-ui/feedback/alert/alert/alert.component.ts","../../../projects/talos-ui/feedback/alert/alert/alert.component.html","../../../projects/talos-ui/feedback/alert/alert-container/alert-container.component.ts","../../../projects/talos-ui/feedback/alert/alert.module.ts","../../../projects/talos-ui/feedback/alert/weeehaoooz-talos-ui-feedback-alert.ts"],"sourcesContent":["import {\n Injectable,\n TemplateRef,\n signal\n} from '@angular/core';\nimport {\n TalosAlertConfig,\n TalosAlertInstance,\n TalosAlertRef\n} from './alert.types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TalosAlertService {\n /** Reactive list of currently active programmatic alerts */\n readonly alerts = signal<TalosAlertInstance[]>([]);\n\n /** Reactive list of currently active top-level banner alerts */\n readonly bannerAlerts = signal<TalosAlertInstance[]>([]);\n\n private idCounter = 0;\n\n /** Default global configurations */\n private defaultConfig: Partial<TalosAlertConfig> = {\n severity: 'success',\n appearance: 'subtle',\n size: 'md',\n showIcon: true,\n dismissible: true\n };\n\n /**\n * Override default global configurations.\n */\n setDefaultConfig(config: Partial<TalosAlertConfig>): void {\n this.defaultConfig = { ...this.defaultConfig, ...config };\n }\n\n /**\n * Main entry point to create a programmatic alert instance.\n */\n show(\n messageOrConfig: string | TemplateRef<unknown> | TalosAlertConfig,\n configOverrides: Partial<TalosAlertConfig> = {}\n ): TalosAlertRef {\n let fullConfig: TalosAlertConfig;\n\n if (\n typeof messageOrConfig === 'string' ||\n messageOrConfig instanceof TemplateRef\n ) {\n fullConfig = {\n message: messageOrConfig,\n ...configOverrides\n };\n } else {\n fullConfig = {\n ...messageOrConfig,\n ...configOverrides\n };\n }\n\n const instance: TalosAlertInstance = {\n id: fullConfig.id || `talos-alert-${++this.idCounter}-${Date.now()}`,\n severity: fullConfig.severity ?? this.defaultConfig.severity ?? 'success',\n variant: fullConfig.variant,\n appearance: fullConfig.appearance ?? this.defaultConfig.appearance ?? 'subtle',\n size: fullConfig.size ?? this.defaultConfig.size ?? 'md',\n showIcon: fullConfig.showIcon ?? this.defaultConfig.showIcon ?? true,\n icon: fullConfig.icon,\n showSeverityBadge: fullConfig.showSeverityBadge ?? false,\n dismissible: fullConfig.dismissible ?? this.defaultConfig.dismissible ?? true,\n title: fullConfig.title,\n message: fullConfig.message,\n actionLabel: fullConfig.actionLabel,\n onAction: fullConfig.onAction,\n onDismiss: fullConfig.onDismiss,\n customClass: fullConfig.customClass,\n bordered: fullConfig.bordered,\n duration: fullConfig.duration,\n data: fullConfig.data,\n createdAt: Date.now()\n };\n\n this.alerts.update((current) => [...current, instance]);\n\n if (instance.duration && instance.duration > 0) {\n setTimeout(() => {\n this.dismiss(instance.id);\n }, instance.duration);\n }\n\n return {\n id: instance.id,\n dismiss: () => this.dismiss(instance.id)\n };\n }\n\n /**\n * Display a high-visibility global banner alert.\n */\n banner(\n messageOrConfig: string | TemplateRef<unknown> | TalosAlertConfig,\n configOverrides: Partial<TalosAlertConfig> = {}\n ): TalosAlertRef {\n let fullConfig: TalosAlertConfig;\n\n if (\n typeof messageOrConfig === 'string' ||\n messageOrConfig instanceof TemplateRef\n ) {\n fullConfig = {\n message: messageOrConfig,\n appearance: 'filled',\n severity: 'info',\n ...configOverrides\n };\n } else {\n fullConfig = {\n appearance: 'filled',\n severity: 'info',\n ...messageOrConfig,\n ...configOverrides\n };\n }\n\n const instance: TalosAlertInstance = {\n id: fullConfig.id || `talos-banner-alert-${++this.idCounter}-${Date.now()}`,\n severity: fullConfig.severity ?? 'info',\n variant: fullConfig.variant,\n appearance: fullConfig.appearance ?? 'filled',\n size: fullConfig.size ?? 'md',\n showIcon: fullConfig.showIcon ?? true,\n icon: fullConfig.icon,\n showSeverityBadge: fullConfig.showSeverityBadge ?? false,\n dismissible: fullConfig.dismissible ?? true,\n title: fullConfig.title,\n message: fullConfig.message,\n actionLabel: fullConfig.actionLabel,\n onAction: fullConfig.onAction,\n onDismiss: fullConfig.onDismiss,\n customClass: fullConfig.customClass,\n bordered: fullConfig.bordered,\n duration: fullConfig.duration,\n data: fullConfig.data,\n createdAt: Date.now()\n };\n\n this.bannerAlerts.update((current) => [...current, instance]);\n\n if (instance.duration && instance.duration > 0) {\n setTimeout(() => {\n this.dismissBanner(instance.id);\n }, instance.duration);\n }\n\n return {\n id: instance.id,\n dismiss: () => this.dismissBanner(instance.id)\n };\n }\n\n /** Convenience method for Success alerts (Default severity) */\n success(\n message: string | TemplateRef<unknown>,\n config?: Partial<TalosAlertConfig>\n ): TalosAlertRef {\n return this.show(message, { ...config, severity: 'success' });\n }\n\n /** Convenience method for Info alerts */\n info(\n message: string | TemplateRef<unknown>,\n config?: Partial<TalosAlertConfig>\n ): TalosAlertRef {\n return this.show(message, { ...config, severity: 'info' });\n }\n\n /** Convenience method for Warning alerts */\n warning(\n message: string | TemplateRef<unknown>,\n config?: Partial<TalosAlertConfig>\n ): TalosAlertRef {\n return this.show(message, { ...config, severity: 'warning' });\n }\n\n /** Convenience method for Error alerts */\n error(\n message: string | TemplateRef<unknown>,\n config?: Partial<TalosAlertConfig>\n ): TalosAlertRef {\n return this.show(message, { ...config, severity: 'error' });\n }\n\n /**\n * Dismiss a specific programmatic alert by ID, or the oldest if no ID is provided.\n */\n dismiss(id?: string): void {\n if (!id) {\n const current = this.alerts();\n if (current.length === 0) return;\n id = current[0].id;\n }\n\n const target = this.alerts().find((a) => a.id === id);\n if (target?.onDismiss) {\n target.onDismiss();\n }\n\n this.alerts.update((current) => current.filter((item) => item.id !== id));\n }\n\n /**\n * Dismiss a banner alert by ID.\n */\n dismissBanner(id?: string): void {\n if (!id) {\n const current = this.bannerAlerts();\n if (current.length === 0) return;\n id = current[0].id;\n }\n\n const target = this.bannerAlerts().find((a) => a.id === id);\n if (target?.onDismiss) {\n target.onDismiss();\n }\n\n this.bannerAlerts.update((current) => current.filter((item) => item.id !== id));\n }\n\n /**\n * Dismiss all currently active alerts and banners.\n */\n dismissAll(): void {\n this.alerts().forEach((a) => a.onDismiss?.());\n this.bannerAlerts().forEach((b) => b.onDismiss?.());\n this.alerts.set([]);\n this.bannerAlerts.set([]);\n }\n}\n","import { Directive } from '@angular/core';\n\n/**\n * Structural / Slot directive for alert title projection.\n *\n * Usage:\n * ```html\n * <talos-alert>\n * <div talosAlertTitle>System Maintenance</div>\n * <div talosAlertDescription>All services will undergo updates tonight.</div>\n * </talos-alert>\n * ```\n */\n@Directive({\n selector: '[talosAlertTitle], talos-alert-title',\n host: {\n 'class': 'talos-alert-title-directive'\n }\n})\nexport class TalosAlertTitleDirective {}\n\n/**\n * Slot directive for alert description / message body.\n */\n@Directive({\n selector: '[talosAlertDescription], talos-alert-description',\n host: {\n 'class': 'talos-alert-description-directive'\n }\n})\nexport class TalosAlertDescriptionDirective {}\n\n/**\n * Slot directive for custom alert actions / button group.\n */\n@Directive({\n selector: '[talosAlertActions], talos-alert-actions',\n host: {\n 'class': 'talos-alert-actions-directive'\n }\n})\nexport class TalosAlertActionsDirective {}\n\n/**\n * Slot directive for custom alert icon.\n */\n@Directive({\n selector: '[talosAlertIcon], talos-alert-icon',\n host: {\n 'class': 'talos-alert-icon-directive'\n }\n})\nexport class TalosAlertIconDirective {}\n","import {\n Component,\n TemplateRef,\n Type,\n computed,\n input,\n output,\n signal\n} from '@angular/core';\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport {\n LucideAlertOctagon,\n LucideAlertTriangle,\n LucideCheckCircle2,\n LucideCircleAlert,\n LucideInfo,\n LucideShieldAlert,\n LucideX\n} from '@lucide/angular';\nimport {\n TalosAlertAppearance,\n TalosAlertSeverity,\n TalosAlertSize,\n TalosAlertVariant\n} from '../alert.types';\n\n@Component({\n selector: 'talos-alert',\n imports: [\n NgComponentOutlet,\n NgTemplateOutlet,\n LucideInfo,\n LucideCheckCircle2,\n LucideAlertTriangle,\n LucideCircleAlert,\n LucideAlertOctagon,\n LucideShieldAlert,\n LucideX\n ],\n templateUrl: './alert.component.html',\n styleUrl: './alert.component.scss',\n host: {\n '[class.talos-alert-host]': 'true',\n '[class.is-dismissing]': 'isDismissing()',\n '[class.is-dismissed]': 'isDismissed()'\n }\n})\nexport class TalosAlertComponent {\n /** Alert severity state: 'success' (default), 'info', 'warning', 'error' */\n readonly severity = input<TalosAlertSeverity | undefined>('success');\n\n /** Visual variant theme fallback */\n readonly variant = input<TalosAlertVariant | undefined>(undefined);\n\n /** Visual surface appearance style */\n readonly appearance = input<TalosAlertAppearance>('subtle');\n\n /** Sizing of padding and typography */\n readonly size = input<TalosAlertSize>('md');\n\n /** Header title text or custom TemplateRef */\n readonly title = input<string | TemplateRef<unknown> | undefined>(undefined);\n\n /** Main message content or custom TemplateRef */\n readonly message = input<string | TemplateRef<unknown> | undefined>(undefined);\n\n /** Whether to display the icon */\n readonly showIcon = input<boolean>(true);\n\n /** Custom Lucide icon component, TemplateRef, or boolean */\n readonly icon = input<Type<unknown> | TemplateRef<unknown> | boolean | null | undefined>(null);\n\n /** Whether to display a dedicated severity pill badge */\n readonly showSeverityBadge = input<boolean>(false);\n\n /** Whether the alert can be dismissed */\n readonly dismissible = input<boolean>(false);\n\n /** Action button text label */\n readonly actionLabel = input<string | undefined>(undefined);\n\n /** Optional explicit border outline */\n readonly bordered = input<boolean>(false);\n\n /** Additional CSS class */\n readonly customClass = input<string>('');\n\n /** Emitted when dismiss close button is clicked */\n readonly dismiss = output<void>();\n\n /** Emitted when action button is clicked */\n readonly action = output<void>();\n\n /** Emitted when dismiss animation has finished and alert is removed */\n readonly closed = output<void>();\n\n protected readonly isDismissing = signal<boolean>(false);\n protected readonly isDismissed = signal<boolean>(false);\n\n /** Resolved visual variant considering severity */\n readonly resolvedVariant = computed<TalosAlertVariant>(() => {\n const sev = this.severity();\n if (sev) {\n return sev;\n }\n return this.variant() ?? 'success';\n });\n\n /** Severity display label for badge */\n readonly severityLabel = computed<string>(() => {\n const sev = this.severity();\n if (sev) return sev.toUpperCase();\n return '';\n });\n\n readonly isTitleTemplate = computed(() => this.title() instanceof TemplateRef);\n readonly titleTemplate = computed(() => this.title() as TemplateRef<unknown>);\n\n readonly isMessageTemplate = computed(() => this.message() instanceof TemplateRef);\n readonly messageTemplate = computed(() => this.message() as TemplateRef<unknown>);\n\n readonly isIconTemplate = computed(() => this.icon() instanceof TemplateRef);\n readonly iconTemplate = computed(() => this.icon() as TemplateRef<unknown>);\n\n readonly customIconComponent = computed(() => {\n const ic = this.icon();\n return typeof ic === 'function' ? (ic as Type<unknown>) : null;\n });\n\n readonly ariaRole = computed(() => {\n const v = this.resolvedVariant();\n return v === 'error' || v === 'warning' || v === 'critical' ? 'alert' : 'status';\n });\n\n readonly ariaLive = computed(() => {\n const v = this.resolvedVariant();\n return v === 'error' || v === 'critical' ? 'assertive' : 'polite';\n });\n\n protected onActionClick(): void {\n this.action.emit();\n }\n\n protected onCloseClick(): void {\n if (this.isDismissing() || this.isDismissed()) return;\n this.isDismissing.set(true);\n this.dismiss.emit();\n\n setTimeout(() => {\n this.isDismissed.set(true);\n this.closed.emit();\n }, 200);\n }\n}\n","@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","import { Component, computed, inject, input } from '@angular/core';\nimport { TalosAlertComponent } from '../alert/alert.component';\nimport { TalosAlertService } from '../alert.service';\nimport { TalosAlertInstance } from '../alert.types';\n\n@Component({\n selector: 'talos-alert-container',\n imports: [TalosAlertComponent],\n template: `\n @if (targetAlerts().length > 0) {\n <div class=\"talos-alert-container-stack\" [class.is-banner]=\"type() === 'banner'\">\n @for (item of targetAlerts(); track item.id) {\n <talos-alert\n [variant]=\"item.variant || 'default'\"\n [severity]=\"item.severity\"\n [appearance]=\"item.appearance || 'subtle'\"\n [size]=\"item.size || 'md'\"\n [title]=\"item.title\"\n [message]=\"item.message\"\n [showIcon]=\"item.showIcon ?? true\"\n [icon]=\"item.icon\"\n [showSeverityBadge]=\"item.showSeverityBadge ?? false\"\n [dismissible]=\"item.dismissible ?? true\"\n [actionLabel]=\"item.actionLabel\"\n [bordered]=\"item.bordered ?? false\"\n [customClass]=\"item.customClass || ''\"\n (dismiss)=\"onDismiss(item.id)\"\n (action)=\"onAction(item)\"\n />\n }\n </div>\n }\n `,\n styleUrl: './alert-container.component.scss',\n host: {\n '[class.talos-alert-container-host]': 'true'\n }\n})\nexport class TalosAlertContainerComponent {\n private readonly alertService = inject(TalosAlertService);\n\n /** Mode of alerts to render from the service ('inline', 'banner', or 'all') */\n readonly type = input<'inline' | 'banner' | 'all'>('inline');\n\n readonly targetAlerts = computed<TalosAlertInstance[]>(() => {\n const t = this.type();\n if (t === 'banner') {\n return this.alertService.bannerAlerts();\n }\n if (t === 'all') {\n return [...this.alertService.bannerAlerts(), ...this.alertService.alerts()];\n }\n return this.alertService.alerts();\n });\n\n onDismiss(id: string): void {\n if (this.type() === 'banner') {\n this.alertService.dismissBanner(id);\n } else {\n this.alertService.dismiss(id);\n }\n }\n\n onAction(item: TalosAlertInstance): void {\n if (item.onAction) {\n item.onAction();\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TalosAlertComponent } from './alert/alert.component';\nimport { TalosAlertContainerComponent } from './alert-container/alert-container.component';\nimport {\n TalosAlertTitleDirective,\n TalosAlertDescriptionDirective,\n TalosAlertActionsDirective,\n TalosAlertIconDirective\n} from './alert.directives';\n\n/**\n * Convenience NgModule wrapping standalone alert components and directives.\n */\n@NgModule({\n imports: [\n TalosAlertComponent,\n TalosAlertContainerComponent,\n TalosAlertTitleDirective,\n TalosAlertDescriptionDirective,\n TalosAlertActionsDirective,\n TalosAlertIconDirective\n ],\n exports: [\n TalosAlertComponent,\n TalosAlertContainerComponent,\n TalosAlertTitleDirective,\n TalosAlertDescriptionDirective,\n TalosAlertActionsDirective,\n TalosAlertIconDirective\n ]\n})\nexport class TalosAlertModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,446 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, input, inject, Directive, output, Component, Injector, signal, Injectable, NgModule } from '@angular/core';
3
+ import { DialogRef, Dialog } from '@angular/cdk/dialog';
4
+ import { NgTemplateOutlet } from '@angular/common';
5
+ import { LucideX, LucideAlertTriangle, LucideInfo, LucideCheckCircle2, LucideAlertCircle } from '@lucide/angular';
6
+ import { TalosButtonDirective } from '@weeehaoooz/talos-ui/button/button';
7
+
8
+ /** Injection token for data passed to a dialog component */
9
+ const TALOS_DIALOG_DATA = new InjectionToken('TALOS_DIALOG_DATA');
10
+ /** Injection token for dialog configuration */
11
+ const TALOS_DIALOG_CONFIG = new InjectionToken('TALOS_DIALOG_CONFIG');
12
+ /** Injection token for dialog reference */
13
+ const TALOS_DIALOG_REF = new InjectionToken('TALOS_DIALOG_REF');
14
+
15
+ /**
16
+ * Reference to an actively open dialog instance.
17
+ */
18
+ class TalosDialogRef {
19
+ cdkDialogRef;
20
+ config;
21
+ data;
22
+ constructor(cdkDialogRef, config, data) {
23
+ this.cdkDialogRef = cdkDialogRef;
24
+ this.config = config;
25
+ this.data = data;
26
+ }
27
+ /** Unique identifier for the dialog */
28
+ get id() {
29
+ return this.cdkDialogRef.id;
30
+ }
31
+ /** Observable that emits when the dialog is closed with the result value */
32
+ get closed() {
33
+ return this.cdkDialogRef.closed;
34
+ }
35
+ /** Observable that emits when the backdrop overlay is clicked */
36
+ get backdropClick() {
37
+ return this.cdkDialogRef.backdropClick;
38
+ }
39
+ /** Observable that emits keyboard events received by the dialog overlay */
40
+ get keydownEvents() {
41
+ return this.cdkDialogRef.keydownEvents;
42
+ }
43
+ /**
44
+ * Close the dialog, optionally returning a result value to the opener.
45
+ */
46
+ close(result) {
47
+ this.cdkDialogRef.close(result);
48
+ }
49
+ /**
50
+ * Dynamically update the size of the dialog panel.
51
+ */
52
+ updateSize(width = '', height = '') {
53
+ this.cdkDialogRef.updateSize(width, height);
54
+ return this;
55
+ }
56
+ /**
57
+ * Add CSS class(es) to the dialog overlay panel.
58
+ */
59
+ addPanelClass(classes) {
60
+ this.cdkDialogRef.addPanelClass(classes);
61
+ return this;
62
+ }
63
+ /**
64
+ * Remove CSS class(es) from the dialog overlay panel.
65
+ */
66
+ removePanelClass(classes) {
67
+ this.cdkDialogRef.removePanelClass(classes);
68
+ return this;
69
+ }
70
+ }
71
+
72
+ let uniqueTitleId = 0;
73
+ let uniqueDescId = 0;
74
+ /**
75
+ * Directive for the dialog title element.
76
+ * Automatically handles accessible ARIA labeling.
77
+ */
78
+ class TalosDialogTitleDirective {
79
+ /** Optional custom ID for accessibility linking */
80
+ id = input(`talos-dialog-title-${++uniqueTitleId}`, /* @ts-ignore */
81
+ ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
82
+ dialogRef = inject(DialogRef, { optional: true });
83
+ ngOnInit() {
84
+ if (this.dialogRef) {
85
+ // Allow CDK or parent container to associate the title ID
86
+ }
87
+ }
88
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogTitleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
89
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.1", type: TalosDialogTitleDirective, isStandalone: true, selector: "[talosDialogTitle]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.id": "id()" }, classAttribute: "talos-dialog-title" }, ngImport: i0 });
90
+ }
91
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogTitleDirective, decorators: [{
92
+ type: Directive,
93
+ args: [{
94
+ selector: '[talosDialogTitle]',
95
+ host: {
96
+ 'class': 'talos-dialog-title',
97
+ '[attr.id]': 'id()'
98
+ }
99
+ }]
100
+ }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }] } });
101
+ /**
102
+ * Directive for the dialog description/subtitle element.
103
+ * Automatically handles accessible ARIA descriptions.
104
+ */
105
+ class TalosDialogDescriptionDirective {
106
+ /** Optional custom ID for accessibility linking */
107
+ id = input(`talos-dialog-desc-${++uniqueDescId}`, /* @ts-ignore */
108
+ ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
109
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogDescriptionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
110
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.1", type: TalosDialogDescriptionDirective, isStandalone: true, selector: "[talosDialogDescription]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.id": "id()" }, classAttribute: "talos-dialog-description" }, ngImport: i0 });
111
+ }
112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogDescriptionDirective, decorators: [{
113
+ type: Directive,
114
+ args: [{
115
+ selector: '[talosDialogDescription]',
116
+ host: {
117
+ 'class': 'talos-dialog-description',
118
+ '[attr.id]': 'id()'
119
+ }
120
+ }]
121
+ }], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }] } });
122
+ /**
123
+ * Directive placed on buttons inside a dialog to trigger dismissal.
124
+ * Passes the optional [talosDialogClose] value as the dialog result.
125
+ */
126
+ class TalosDialogCloseDirective {
127
+ /** Value returned when closing the dialog */
128
+ dialogResult = input(undefined, { ...(ngDevMode ? { debugName: "dialogResult" } : /* istanbul ignore next */ {}), alias: 'talosDialogClose' });
129
+ dialogRef = inject(DialogRef, { optional: true });
130
+ onClick(event) {
131
+ if (this.dialogRef) {
132
+ this.dialogRef.close(this.dialogResult());
133
+ }
134
+ }
135
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogCloseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
136
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.1", type: TalosDialogCloseDirective, isStandalone: true, selector: "[talosDialogClose]", inputs: { dialogResult: { classPropertyName: "dialogResult", publicName: "talosDialogClose", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 });
137
+ }
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogCloseDirective, decorators: [{
139
+ type: Directive,
140
+ args: [{
141
+ selector: '[talosDialogClose]',
142
+ host: {
143
+ '(click)': 'onClick($event)'
144
+ }
145
+ }]
146
+ }], propDecorators: { dialogResult: [{ type: i0.Input, args: [{ isSignal: true, alias: "talosDialogClose", required: false }] }] } });
147
+
148
+ class TalosDialogHeaderComponent {
149
+ /** Main dialog title */
150
+ title = input(/* @ts-ignore */
151
+ ...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
152
+ /** Subtitle or helper description */
153
+ subtitle = input(/* @ts-ignore */
154
+ ...(ngDevMode ? [undefined, { debugName: "subtitle" }] : /* istanbul ignore next */ []));
155
+ /** Visual accent variant */
156
+ variant = input('default', /* @ts-ignore */
157
+ ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
158
+ /** Whether to show a bottom divider line */
159
+ divider = input(true, /* @ts-ignore */
160
+ ...(ngDevMode ? [{ debugName: "divider" }] : /* istanbul ignore next */ []));
161
+ /** Whether to show the top-right X close button */
162
+ showCloseButton = input(true, /* @ts-ignore */
163
+ ...(ngDevMode ? [{ debugName: "showCloseButton" }] : /* istanbul ignore next */ []));
164
+ /** Accessible label for the close button */
165
+ closeButtonAriaLabel = input('Close dialog', /* @ts-ignore */
166
+ ...(ngDevMode ? [{ debugName: "closeButtonAriaLabel" }] : /* istanbul ignore next */ []));
167
+ /** Emitted when the close button is clicked */
168
+ closeClick = output();
169
+ dialogRef = inject(DialogRef, { optional: true });
170
+ handleClose(event) {
171
+ this.closeClick.emit(event);
172
+ if (this.dialogRef) {
173
+ this.dialogRef.close();
174
+ }
175
+ }
176
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
177
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: TalosDialogHeaderComponent, isStandalone: true, selector: "talos-dialog-header, [talosDialogHeader]", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, divider: { classPropertyName: "divider", publicName: "divider", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, closeButtonAriaLabel: { classPropertyName: "closeButtonAriaLabel", publicName: "closeButtonAriaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closeClick: "closeClick" }, host: { properties: { "class.has-divider": "divider()", "class.variant-danger": "variant() === \"danger\"", "class.variant-warning": "variant() === \"warning\"", "class.variant-info": "variant() === \"info\"", "class.variant-success": "variant() === \"success\"" }, classAttribute: "talos-dialog-header-host" }, ngImport: i0, template: "<div class=\"talos-dialog-header-inner\">\n <div class=\"talos-dialog-header-left\">\n <div class=\"talos-dialog-header-icon-slot\">\n <ng-content select=\"[talos-dialog-icon], [dialog-icon], lucide-icon, svg\"></ng-content>\n </div>\n\n <div class=\"talos-dialog-header-text\">\n @if (title()) {\n <h2 talosDialogTitle class=\"talos-dialog-header-title\">{{ title() }}</h2>\n } @else {\n <ng-content select=\"[talosDialogTitle], h2, h3\"></ng-content>\n }\n\n @if (subtitle()) {\n <p talosDialogDescription class=\"talos-dialog-header-subtitle\">{{ subtitle() }}</p>\n } @else {\n <ng-content select=\"[talosDialogDescription], p\"></ng-content>\n }\n </div>\n </div>\n\n <div class=\"talos-dialog-header-actions\">\n <ng-content select=\"[talos-dialog-header-actions]\"></ng-content>\n\n @if (showCloseButton()) {\n <button\n type=\"button\"\n class=\"talos-dialog-header-close-btn\"\n [attr.aria-label]=\"closeButtonAriaLabel()\"\n (click)=\"handleClose($event)\"\n >\n <svg lucideX [size]=\"18\" aria-hidden=\"true\"></svg>\n </button>\n }\n </div>\n</div>\n", styles: [":host{display:block;flex-shrink:0;position:relative;padding:1.25rem 1.5rem;box-sizing:border-box}:host.has-divider{border-bottom:1px solid var(--talos-dialog-border, var(--talos-border-color, #e2e8f0))}.talos-dialog-header-inner{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.talos-dialog-header-left{display:flex;align-items:flex-start;gap:.75rem;flex:1;min-width:0}.talos-dialog-header-icon-slot{display:flex;align-items:center;justify-content:center;flex-shrink:0}.talos-dialog-header-icon-slot:empty{display:none}.talos-dialog-header-text{display:flex;flex-direction:column;gap:.25rem;min-width:0;flex:1}.talos-dialog-header-title{margin:0;font-size:1.125rem;font-weight:600;line-height:1.4;color:var(--talos-dialog-title-color, var(--talos-text-color, #0f172a));letter-spacing:-.01em}.talos-dialog-header-subtitle{margin:0;font-size:.875rem;line-height:1.4;color:var(--talos-dialog-subtitle-color, var(--talos-text-muted, #64748b))}.talos-dialog-header-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.talos-dialog-header-close-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border-radius:var(--talos-border-radius, .375rem);border:none;background:transparent;color:var(--talos-text-muted, #64748b);cursor:pointer;transition:background-color .15s ease,color .15s ease}.talos-dialog-header-close-btn:hover{background-color:var(--talos-bg-subtle, #f1f5f9);color:var(--talos-text-color, #0f172a)}.talos-dialog-header-close-btn:focus-visible{outline:none;box-shadow:var(--talos-focus-ring, 0 0 0 3px rgba(37, 99, 235, .15))}:host(.variant-danger) .talos-dialog-header-title{color:var(--talos-error-color, #ef4444)}:host(.variant-warning) .talos-dialog-header-title{color:var(--talos-warning-color, #d97706)}:host(.variant-info) .talos-dialog-header-title{color:var(--talos-primary-color, #2563eb)}:host(.variant-success) .talos-dialog-header-title{color:var(--talos-success-color, #16a34a)}\n"], dependencies: [{ kind: "component", type: LucideX, selector: "svg[lucideX]" }, { kind: "directive", type: TalosDialogTitleDirective, selector: "[talosDialogTitle]", inputs: ["id"] }, { kind: "directive", type: TalosDialogDescriptionDirective, selector: "[talosDialogDescription]", inputs: ["id"] }] });
178
+ }
179
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogHeaderComponent, decorators: [{
180
+ type: Component,
181
+ args: [{ selector: 'talos-dialog-header, [talosDialogHeader]', imports: [LucideX, TalosDialogTitleDirective, TalosDialogDescriptionDirective], host: {
182
+ 'class': 'talos-dialog-header-host',
183
+ '[class.has-divider]': 'divider()',
184
+ '[class.variant-danger]': 'variant() === "danger"',
185
+ '[class.variant-warning]': 'variant() === "warning"',
186
+ '[class.variant-info]': 'variant() === "info"',
187
+ '[class.variant-success]': 'variant() === "success"'
188
+ }, template: "<div class=\"talos-dialog-header-inner\">\n <div class=\"talos-dialog-header-left\">\n <div class=\"talos-dialog-header-icon-slot\">\n <ng-content select=\"[talos-dialog-icon], [dialog-icon], lucide-icon, svg\"></ng-content>\n </div>\n\n <div class=\"talos-dialog-header-text\">\n @if (title()) {\n <h2 talosDialogTitle class=\"talos-dialog-header-title\">{{ title() }}</h2>\n } @else {\n <ng-content select=\"[talosDialogTitle], h2, h3\"></ng-content>\n }\n\n @if (subtitle()) {\n <p talosDialogDescription class=\"talos-dialog-header-subtitle\">{{ subtitle() }}</p>\n } @else {\n <ng-content select=\"[talosDialogDescription], p\"></ng-content>\n }\n </div>\n </div>\n\n <div class=\"talos-dialog-header-actions\">\n <ng-content select=\"[talos-dialog-header-actions]\"></ng-content>\n\n @if (showCloseButton()) {\n <button\n type=\"button\"\n class=\"talos-dialog-header-close-btn\"\n [attr.aria-label]=\"closeButtonAriaLabel()\"\n (click)=\"handleClose($event)\"\n >\n <svg lucideX [size]=\"18\" aria-hidden=\"true\"></svg>\n </button>\n }\n </div>\n</div>\n", styles: [":host{display:block;flex-shrink:0;position:relative;padding:1.25rem 1.5rem;box-sizing:border-box}:host.has-divider{border-bottom:1px solid var(--talos-dialog-border, var(--talos-border-color, #e2e8f0))}.talos-dialog-header-inner{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.talos-dialog-header-left{display:flex;align-items:flex-start;gap:.75rem;flex:1;min-width:0}.talos-dialog-header-icon-slot{display:flex;align-items:center;justify-content:center;flex-shrink:0}.talos-dialog-header-icon-slot:empty{display:none}.talos-dialog-header-text{display:flex;flex-direction:column;gap:.25rem;min-width:0;flex:1}.talos-dialog-header-title{margin:0;font-size:1.125rem;font-weight:600;line-height:1.4;color:var(--talos-dialog-title-color, var(--talos-text-color, #0f172a));letter-spacing:-.01em}.talos-dialog-header-subtitle{margin:0;font-size:.875rem;line-height:1.4;color:var(--talos-dialog-subtitle-color, var(--talos-text-muted, #64748b))}.talos-dialog-header-actions{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.talos-dialog-header-close-btn{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border-radius:var(--talos-border-radius, .375rem);border:none;background:transparent;color:var(--talos-text-muted, #64748b);cursor:pointer;transition:background-color .15s ease,color .15s ease}.talos-dialog-header-close-btn:hover{background-color:var(--talos-bg-subtle, #f1f5f9);color:var(--talos-text-color, #0f172a)}.talos-dialog-header-close-btn:focus-visible{outline:none;box-shadow:var(--talos-focus-ring, 0 0 0 3px rgba(37, 99, 235, .15))}:host(.variant-danger) .talos-dialog-header-title{color:var(--talos-error-color, #ef4444)}:host(.variant-warning) .talos-dialog-header-title{color:var(--talos-warning-color, #d97706)}:host(.variant-info) .talos-dialog-header-title{color:var(--talos-primary-color, #2563eb)}:host(.variant-success) .talos-dialog-header-title{color:var(--talos-success-color, #16a34a)}\n"] }]
189
+ }], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], divider: [{ type: i0.Input, args: [{ isSignal: true, alias: "divider", required: false }] }], showCloseButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCloseButton", required: false }] }], closeButtonAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeButtonAriaLabel", required: false }] }], closeClick: [{ type: i0.Output, args: ["closeClick"] }] } });
190
+
191
+ class TalosDialogContentComponent {
192
+ /** Internal padding size */
193
+ padding = input('md', /* @ts-ignore */
194
+ ...(ngDevMode ? [{ debugName: "padding" }] : /* istanbul ignore next */ []));
195
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
196
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.1", type: TalosDialogContentComponent, isStandalone: true, selector: "talos-dialog-content, [talosDialogContent]", inputs: { padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.padding-none": "padding() === \"none\"", "class.padding-sm": "padding() === \"sm\"", "class.padding-md": "padding() === \"md\"", "class.padding-lg": "padding() === \"lg\"" }, classAttribute: "talos-dialog-content-host" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:block;flex:1 1 auto;overflow-y:auto;overflow-x:hidden;box-sizing:border-box;color:var(--talos-text-color, #0f172a);font-size:.9375rem;line-height:1.5;scrollbar-width:thin;scrollbar-color:var(--talos-border-color, #cbd5e1) transparent}:host::-webkit-scrollbar{width:6px;height:6px}:host::-webkit-scrollbar-track{background:transparent}:host::-webkit-scrollbar-thumb{background-color:var(--talos-border-color, #cbd5e1);border-radius:9999px}:host::-webkit-scrollbar-thumb:hover{background-color:var(--talos-border-hover, #64748b)}:host.padding-none{padding:0}:host.padding-sm{padding:1rem 1.25rem}:host.padding-md{padding:1.5rem}:host.padding-lg{padding:2rem}\n"] });
197
+ }
198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogContentComponent, decorators: [{
199
+ type: Component,
200
+ args: [{ selector: 'talos-dialog-content, [talosDialogContent]', host: {
201
+ 'class': 'talos-dialog-content-host',
202
+ '[class.padding-none]': 'padding() === "none"',
203
+ '[class.padding-sm]': 'padding() === "sm"',
204
+ '[class.padding-md]': 'padding() === "md"',
205
+ '[class.padding-lg]': 'padding() === "lg"'
206
+ }, template: "<ng-content></ng-content>\n", styles: [":host{display:block;flex:1 1 auto;overflow-y:auto;overflow-x:hidden;box-sizing:border-box;color:var(--talos-text-color, #0f172a);font-size:.9375rem;line-height:1.5;scrollbar-width:thin;scrollbar-color:var(--talos-border-color, #cbd5e1) transparent}:host::-webkit-scrollbar{width:6px;height:6px}:host::-webkit-scrollbar-track{background:transparent}:host::-webkit-scrollbar-thumb{background-color:var(--talos-border-color, #cbd5e1);border-radius:9999px}:host::-webkit-scrollbar-thumb:hover{background-color:var(--talos-border-hover, #64748b)}:host.padding-none{padding:0}:host.padding-sm{padding:1rem 1.25rem}:host.padding-md{padding:1.5rem}:host.padding-lg{padding:2rem}\n"] }]
207
+ }], propDecorators: { padding: [{ type: i0.Input, args: [{ isSignal: true, alias: "padding", required: false }] }] } });
208
+
209
+ class TalosDialogFooterComponent {
210
+ /** Button alignment in footer */
211
+ align = input('end', /* @ts-ignore */
212
+ ...(ngDevMode ? [{ debugName: "align" }] : /* istanbul ignore next */ []));
213
+ /** Whether to show a top divider border */
214
+ divider = input(true, /* @ts-ignore */
215
+ ...(ngDevMode ? [{ debugName: "divider" }] : /* istanbul ignore next */ []));
216
+ /** Whether the footer sticks to the bottom when content scrolls */
217
+ sticky = input(false, /* @ts-ignore */
218
+ ...(ngDevMode ? [{ debugName: "sticky" }] : /* istanbul ignore next */ []));
219
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
220
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.1", type: TalosDialogFooterComponent, isStandalone: true, selector: "talos-dialog-footer, [talosDialogFooter]", inputs: { align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, divider: { classPropertyName: "divider", publicName: "divider", isSignal: true, isRequired: false, transformFunction: null }, sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.has-divider": "divider()", "class.is-sticky": "sticky()", "class.align-start": "align() === \"start\"", "class.align-center": "align() === \"center\"", "class.align-end": "align() === \"end\"", "class.align-space-between": "align() === \"space-between\"" }, classAttribute: "talos-dialog-footer-host" }, ngImport: i0, template: "<div class=\"talos-dialog-footer-inner\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block;flex-shrink:0;padding:1rem 1.5rem;box-sizing:border-box;background-color:var(--talos-dialog-footer-bg, transparent)}:host.has-divider{border-top:1px solid var(--talos-dialog-border, var(--talos-border-color, #e2e8f0))}:host.is-sticky{position:sticky;bottom:0;z-index:10;background-color:var(--talos-dialog-bg, var(--talos-card-bg, #ffffff))}.talos-dialog-footer-inner{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}:host(.align-start) .talos-dialog-footer-inner{justify-content:flex-start}:host(.align-center) .talos-dialog-footer-inner{justify-content:center}:host(.align-end) .talos-dialog-footer-inner{justify-content:flex-end}:host(.align-space-between) .talos-dialog-footer-inner{justify-content:space-between}\n"] });
221
+ }
222
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogFooterComponent, decorators: [{
223
+ type: Component,
224
+ args: [{ selector: 'talos-dialog-footer, [talosDialogFooter]', host: {
225
+ 'class': 'talos-dialog-footer-host',
226
+ '[class.has-divider]': 'divider()',
227
+ '[class.is-sticky]': 'sticky()',
228
+ '[class.align-start]': 'align() === "start"',
229
+ '[class.align-center]': 'align() === "center"',
230
+ '[class.align-end]': 'align() === "end"',
231
+ '[class.align-space-between]': 'align() === "space-between"'
232
+ }, template: "<div class=\"talos-dialog-footer-inner\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{display:block;flex-shrink:0;padding:1rem 1.5rem;box-sizing:border-box;background-color:var(--talos-dialog-footer-bg, transparent)}:host.has-divider{border-top:1px solid var(--talos-dialog-border, var(--talos-border-color, #e2e8f0))}:host.is-sticky{position:sticky;bottom:0;z-index:10;background-color:var(--talos-dialog-bg, var(--talos-card-bg, #ffffff))}.talos-dialog-footer-inner{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}:host(.align-start) .talos-dialog-footer-inner{justify-content:flex-start}:host(.align-center) .talos-dialog-footer-inner{justify-content:center}:host(.align-end) .talos-dialog-footer-inner{justify-content:flex-end}:host(.align-space-between) .talos-dialog-footer-inner{justify-content:space-between}\n"] }]
233
+ }], propDecorators: { align: [{ type: i0.Input, args: [{ isSignal: true, alias: "align", required: false }] }], divider: [{ type: i0.Input, args: [{ isSignal: true, alias: "divider", required: false }] }], sticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "sticky", required: false }] }] } });
234
+
235
+ class TalosConfirmDialogComponent {
236
+ data = inject(TALOS_DIALOG_DATA, { optional: true }) || {
237
+ title: 'Confirmation',
238
+ message: 'Are you sure you want to proceed?'
239
+ };
240
+ dialogRef = inject(DialogRef);
241
+ title = this.data.title;
242
+ message = this.data.message;
243
+ isTemplateMessage = typeof this.data.message !== 'string';
244
+ confirmText = this.data.confirmText ?? 'Confirm';
245
+ cancelText = this.data.cancelText ?? 'Cancel';
246
+ variant = this.data.variant ?? 'primary';
247
+ showCancel = this.data.showCancel ?? true;
248
+ get confirmButtonVariant() {
249
+ if (this.variant === 'danger')
250
+ return 'danger';
251
+ return 'primary';
252
+ }
253
+ onConfirm() {
254
+ this.dialogRef.close(true);
255
+ }
256
+ onCancel() {
257
+ this.dialogRef.close(false);
258
+ }
259
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosConfirmDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
260
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.1", type: TalosConfirmDialogComponent, isStandalone: true, selector: "talos-confirm-dialog", host: { classAttribute: "talos-confirm-dialog-host" }, ngImport: i0, template: "<talos-dialog-header [title]=\"title\" [variant]=\"variant\" [divider]=\"false\">\n <div class=\"confirm-icon-wrapper\" [class]=\"'variant-' + variant\" talos-dialog-icon>\n @switch (variant) {\n @case ('danger') {\n <svg lucideAlertCircle [size]=\"22\"></svg>\n }\n @case ('warning') {\n <svg lucideAlertTriangle [size]=\"22\"></svg>\n }\n @case ('success') {\n <svg lucideCheckCircle2 [size]=\"22\"></svg>\n }\n @default {\n <svg lucideInfo [size]=\"22\"></svg>\n }\n }\n </div>\n</talos-dialog-header>\n\n<talos-dialog-content padding=\"sm\">\n @if (isTemplateMessage) {\n <ng-container [ngTemplateOutlet]=\"$any(message)\"></ng-container>\n } @else {\n <p class=\"confirm-message-text\">{{ message }}</p>\n }\n</talos-dialog-content>\n\n<talos-dialog-footer [divider]=\"false\" align=\"end\">\n @if (showCancel) {\n <button talosButton variant=\"secondary\" size=\"md\" (click)=\"onCancel()\">\n {{ cancelText }}\n </button>\n }\n <button talosButton [variant]=\"confirmButtonVariant\" size=\"md\" (click)=\"onConfirm()\">\n {{ confirmText }}\n </button>\n</talos-dialog-footer>\n", styles: [":host{display:flex;flex-direction:column;box-sizing:border-box}.confirm-icon-wrapper{display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:9999px;flex-shrink:0}.confirm-icon-wrapper.variant-default,.confirm-icon-wrapper.variant-primary,.confirm-icon-wrapper.variant-info{background-color:var(--talos-primary-light, #eff6ff);color:var(--talos-primary-color, #2563eb)}.confirm-icon-wrapper.variant-danger{background-color:#ef44441f;color:var(--talos-error-color, #ef4444)}.confirm-icon-wrapper.variant-warning{background-color:#d977061f;color:var(--talos-warning-color, #d97706)}.confirm-icon-wrapper.variant-success{background-color:#16a34a1f;color:var(--talos-success-color, #16a34a)}.confirm-message-text{margin:0;color:var(--talos-text-muted, #64748b);font-size:.9375rem;line-height:1.55}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TalosButtonDirective, selector: "button[talosButton], a[talosButton], button[talos-btn], a[talos-btn]", inputs: ["variant", "size", "iconOnly", "fullWidth", "pill", "loading", "disabled", "animation", "spinning", "popping", "feedback"] }, { kind: "component", type: TalosDialogHeaderComponent, selector: "talos-dialog-header, [talosDialogHeader]", inputs: ["title", "subtitle", "variant", "divider", "showCloseButton", "closeButtonAriaLabel"], outputs: ["closeClick"] }, { kind: "component", type: TalosDialogContentComponent, selector: "talos-dialog-content, [talosDialogContent]", inputs: ["padding"] }, { kind: "component", type: TalosDialogFooterComponent, selector: "talos-dialog-footer, [talosDialogFooter]", inputs: ["align", "divider", "sticky"] }, { kind: "component", type: LucideAlertTriangle, selector: "svg[lucideTriangleAlert], svg[lucideAlertTriangle]" }, { kind: "component", type: LucideInfo, selector: "svg[lucideInfo]" }, { kind: "component", type: LucideCheckCircle2, selector: "svg[lucideCircleCheck], svg[lucideCheckCircle2]" }, { kind: "component", type: LucideAlertCircle, selector: "svg[lucideCircleAlert], svg[lucideAlertCircle]" }] });
261
+ }
262
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosConfirmDialogComponent, decorators: [{
263
+ type: Component,
264
+ args: [{ selector: 'talos-confirm-dialog', imports: [
265
+ NgTemplateOutlet,
266
+ TalosButtonDirective,
267
+ TalosDialogHeaderComponent,
268
+ TalosDialogContentComponent,
269
+ TalosDialogFooterComponent,
270
+ LucideAlertTriangle,
271
+ LucideInfo,
272
+ LucideCheckCircle2,
273
+ LucideAlertCircle
274
+ ], host: {
275
+ 'class': 'talos-confirm-dialog-host'
276
+ }, template: "<talos-dialog-header [title]=\"title\" [variant]=\"variant\" [divider]=\"false\">\n <div class=\"confirm-icon-wrapper\" [class]=\"'variant-' + variant\" talos-dialog-icon>\n @switch (variant) {\n @case ('danger') {\n <svg lucideAlertCircle [size]=\"22\"></svg>\n }\n @case ('warning') {\n <svg lucideAlertTriangle [size]=\"22\"></svg>\n }\n @case ('success') {\n <svg lucideCheckCircle2 [size]=\"22\"></svg>\n }\n @default {\n <svg lucideInfo [size]=\"22\"></svg>\n }\n }\n </div>\n</talos-dialog-header>\n\n<talos-dialog-content padding=\"sm\">\n @if (isTemplateMessage) {\n <ng-container [ngTemplateOutlet]=\"$any(message)\"></ng-container>\n } @else {\n <p class=\"confirm-message-text\">{{ message }}</p>\n }\n</talos-dialog-content>\n\n<talos-dialog-footer [divider]=\"false\" align=\"end\">\n @if (showCancel) {\n <button talosButton variant=\"secondary\" size=\"md\" (click)=\"onCancel()\">\n {{ cancelText }}\n </button>\n }\n <button talosButton [variant]=\"confirmButtonVariant\" size=\"md\" (click)=\"onConfirm()\">\n {{ confirmText }}\n </button>\n</talos-dialog-footer>\n", styles: [":host{display:flex;flex-direction:column;box-sizing:border-box}.confirm-icon-wrapper{display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:9999px;flex-shrink:0}.confirm-icon-wrapper.variant-default,.confirm-icon-wrapper.variant-primary,.confirm-icon-wrapper.variant-info{background-color:var(--talos-primary-light, #eff6ff);color:var(--talos-primary-color, #2563eb)}.confirm-icon-wrapper.variant-danger{background-color:#ef44441f;color:var(--talos-error-color, #ef4444)}.confirm-icon-wrapper.variant-warning{background-color:#d977061f;color:var(--talos-warning-color, #d97706)}.confirm-icon-wrapper.variant-success{background-color:#16a34a1f;color:var(--talos-success-color, #16a34a)}.confirm-message-text{margin:0;color:var(--talos-text-muted, #64748b);font-size:.9375rem;line-height:1.55}\n"] }]
277
+ }] });
278
+
279
+ class TalosDialogService {
280
+ cdkDialog = inject(Dialog);
281
+ injector = inject(Injector);
282
+ /** Signal of currently open dialog references */
283
+ openDialogs = signal([], /* @ts-ignore */
284
+ ...(ngDevMode ? [{ debugName: "openDialogs" }] : /* istanbul ignore next */ []));
285
+ /**
286
+ * Open a component or template inside a modal dialog.
287
+ */
288
+ open(componentOrTemplate, config = {}) {
289
+ const size = config.size ?? 'md';
290
+ const backdropBlur = config.backdropBlur ?? false;
291
+ const panelClasses = ['talos-dialog-panel', `talos-dialog-size-${size}`];
292
+ if (config.panelClass) {
293
+ if (Array.isArray(config.panelClass)) {
294
+ panelClasses.push(...config.panelClass);
295
+ }
296
+ else {
297
+ panelClasses.push(config.panelClass);
298
+ }
299
+ }
300
+ const backdropClasses = ['talos-dialog-backdrop'];
301
+ if (backdropBlur === true || backdropBlur === 'md') {
302
+ backdropClasses.push('talos-dialog-backdrop-blur-md');
303
+ }
304
+ else if (backdropBlur === 'sm') {
305
+ backdropClasses.push('talos-dialog-backdrop-blur-sm');
306
+ }
307
+ else if (backdropBlur === 'lg') {
308
+ backdropClasses.push('talos-dialog-backdrop-blur-lg');
309
+ }
310
+ if (config.backdropClass) {
311
+ if (Array.isArray(config.backdropClass)) {
312
+ backdropClasses.push(...config.backdropClass);
313
+ }
314
+ else {
315
+ backdropClasses.push(config.backdropClass);
316
+ }
317
+ }
318
+ const disableClose = config.disableClose ?? false;
319
+ let talosRef = null;
320
+ const cdkConfig = {
321
+ panelClass: panelClasses,
322
+ backdropClass: backdropClasses,
323
+ hasBackdrop: config.hasBackdrop ?? true,
324
+ disableClose: disableClose,
325
+ closeOnNavigation: true,
326
+ autoFocus: config.autoFocus ?? 'first-tabbable',
327
+ restoreFocus: config.restoreFocus ?? true,
328
+ ariaLabel: config.ariaLabel,
329
+ ariaLabelledBy: config.ariaLabelledBy,
330
+ ariaDescribedBy: config.ariaDescribedBy,
331
+ role: config.role ?? 'dialog',
332
+ id: config.id,
333
+ width: config.width,
334
+ minWidth: config.minWidth,
335
+ maxWidth: config.maxWidth,
336
+ height: config.height,
337
+ minHeight: config.minHeight,
338
+ maxHeight: config.maxHeight,
339
+ data: config.data,
340
+ injector: this.injector,
341
+ providers: (cdkDialogRef) => {
342
+ talosRef = new TalosDialogRef(cdkDialogRef, config, config.data);
343
+ return [
344
+ { provide: TalosDialogRef, useValue: talosRef },
345
+ { provide: TALOS_DIALOG_REF, useValue: talosRef },
346
+ { provide: TALOS_DIALOG_DATA, useValue: config.data },
347
+ { provide: TALOS_DIALOG_CONFIG, useValue: config }
348
+ ];
349
+ }
350
+ };
351
+ const cdkRef = this.cdkDialog.open(componentOrTemplate, cdkConfig);
352
+ if (!talosRef) {
353
+ talosRef = new TalosDialogRef(cdkRef, config, config.data);
354
+ }
355
+ const resolvedTalosRef = talosRef;
356
+ // Track active dialogs
357
+ this.openDialogs.update(current => [...current, resolvedTalosRef]);
358
+ cdkRef.closed.subscribe(() => {
359
+ this.openDialogs.update(current => current.filter(d => d.id !== resolvedTalosRef.id));
360
+ });
361
+ return resolvedTalosRef;
362
+ }
363
+ /**
364
+ * Convenience helper to display a confirmation dialog.
365
+ */
366
+ confirm(options) {
367
+ return this.open(TalosConfirmDialogComponent, {
368
+ size: options.size ?? 'sm',
369
+ backdropBlur: options.backdropBlur ?? true,
370
+ disableClose: options.disableClose ?? false,
371
+ role: 'alertdialog',
372
+ data: options
373
+ });
374
+ }
375
+ /**
376
+ * Convenience helper to display an alert dialog.
377
+ */
378
+ alert(options) {
379
+ return this.open(TalosConfirmDialogComponent, {
380
+ size: options.size ?? 'sm',
381
+ backdropBlur: options.backdropBlur ?? true,
382
+ role: 'alertdialog',
383
+ data: {
384
+ ...options,
385
+ showCancel: false,
386
+ confirmText: options.okText ?? 'OK'
387
+ }
388
+ });
389
+ }
390
+ /**
391
+ * Close all currently open dialogs.
392
+ */
393
+ closeAll() {
394
+ this.cdkDialog.closeAll();
395
+ }
396
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
397
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogService, providedIn: 'root' });
398
+ }
399
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogService, decorators: [{
400
+ type: Injectable,
401
+ args: [{
402
+ providedIn: 'root'
403
+ }]
404
+ }] });
405
+
406
+ const DIALOG_COMPONENTS = [
407
+ TalosDialogHeaderComponent,
408
+ TalosDialogContentComponent,
409
+ TalosDialogFooterComponent,
410
+ TalosConfirmDialogComponent,
411
+ TalosDialogTitleDirective,
412
+ TalosDialogDescriptionDirective,
413
+ TalosDialogCloseDirective
414
+ ];
415
+ class TalosDialogModule {
416
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
417
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogModule, imports: [TalosDialogHeaderComponent,
418
+ TalosDialogContentComponent,
419
+ TalosDialogFooterComponent,
420
+ TalosConfirmDialogComponent,
421
+ TalosDialogTitleDirective,
422
+ TalosDialogDescriptionDirective,
423
+ TalosDialogCloseDirective], exports: [TalosDialogHeaderComponent,
424
+ TalosDialogContentComponent,
425
+ TalosDialogFooterComponent,
426
+ TalosConfirmDialogComponent,
427
+ TalosDialogTitleDirective,
428
+ TalosDialogDescriptionDirective,
429
+ TalosDialogCloseDirective] });
430
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogModule, imports: [TalosDialogHeaderComponent,
431
+ TalosConfirmDialogComponent] });
432
+ }
433
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.1", ngImport: i0, type: TalosDialogModule, decorators: [{
434
+ type: NgModule,
435
+ args: [{
436
+ imports: [...DIALOG_COMPONENTS],
437
+ exports: [...DIALOG_COMPONENTS]
438
+ }]
439
+ }] });
440
+
441
+ /**
442
+ * Generated bundle index. Do not edit.
443
+ */
444
+
445
+ export { TALOS_DIALOG_CONFIG, TALOS_DIALOG_DATA, TALOS_DIALOG_REF, TalosConfirmDialogComponent, TalosDialogCloseDirective, TalosDialogContentComponent, TalosDialogDescriptionDirective, TalosDialogFooterComponent, TalosDialogHeaderComponent, TalosDialogModule, TalosDialogRef, TalosDialogService, TalosDialogTitleDirective };
446
+ //# sourceMappingURL=weeehaoooz-talos-ui-feedback-dialog.mjs.map