@weeehaoooz/talos-ui 0.1.1 → 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 (190) hide show
  1. package/README.md +2 -0
  2. package/fesm2022/{weeehaoooz-talos-ui-button-button-group.mjs → weeehaoooz-talos-ui-button.mjs} +91 -15
  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 +1316 -7
  15. package/fesm2022/weeehaoooz-talos-ui-layout.mjs.map +1 -1
  16. package/fesm2022/weeehaoooz-talos-ui-nav.mjs +3 -3
  17. package/fesm2022/weeehaoooz-talos-ui-nav.mjs.map +1 -1
  18. package/fesm2022/weeehaoooz-talos-ui.mjs +21592 -16293
  19. package/fesm2022/weeehaoooz-talos-ui.mjs.map +1 -1
  20. package/package.json +20 -139
  21. package/styles/_breadcrumb.scss +16 -0
  22. package/styles/_button-group.scss +2 -1
  23. package/styles/_buttons.scss +51 -0
  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 +33 -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 +1 -1
  46. package/types/weeehaoooz-talos-ui.d.ts +7148 -4629
  47. package/types/weeehaoooz-talos-ui.d.ts.map +1 -1
  48. package/fesm2022/weeehaoooz-talos-ui-button-button-group.mjs.map +0 -1
  49. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs +0 -94
  50. package/fesm2022/weeehaoooz-talos-ui-button-button.mjs.map +0 -1
  51. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs +0 -233
  52. package/fesm2022/weeehaoooz-talos-ui-data-display-badge.mjs.map +0 -1
  53. package/fesm2022/weeehaoooz-talos-ui-data-display-data-grid.mjs +0 -1627
  54. package/fesm2022/weeehaoooz-talos-ui-data-display-data-grid.mjs.map +0 -1
  55. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs +0 -361
  56. package/fesm2022/weeehaoooz-talos-ui-data-display-status-tag.mjs.map +0 -1
  57. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs +0 -312
  58. package/fesm2022/weeehaoooz-talos-ui-data-display-timeline.mjs.map +0 -1
  59. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs +0 -235
  60. package/fesm2022/weeehaoooz-talos-ui-data-display-trend-indicator.mjs.map +0 -1
  61. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs +0 -462
  62. package/fesm2022/weeehaoooz-talos-ui-data-viz-category-bar.mjs.map +0 -1
  63. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs +0 -805
  64. package/fesm2022/weeehaoooz-talos-ui-data-viz-heatmap.mjs.map +0 -1
  65. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs +0 -267
  66. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-donut.mjs.map +0 -1
  67. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs +0 -351
  68. package/fesm2022/weeehaoooz-talos-ui-data-viz-mini-gauge.mjs.map +0 -1
  69. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs +0 -566
  70. package/fesm2022/weeehaoooz-talos-ui-data-viz-sparkline.mjs.map +0 -1
  71. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs +0 -534
  72. package/fesm2022/weeehaoooz-talos-ui-feedback-alert.mjs.map +0 -1
  73. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs +0 -446
  74. package/fesm2022/weeehaoooz-talos-ui-feedback-dialog.mjs.map +0 -1
  75. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs +0 -376
  76. package/fesm2022/weeehaoooz-talos-ui-feedback-snackbar.mjs.map +0 -1
  77. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs +0 -147
  78. package/fesm2022/weeehaoooz-talos-ui-feedback-tooltip.mjs.map +0 -1
  79. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs +0 -242
  80. package/fesm2022/weeehaoooz-talos-ui-form-affix.mjs.map +0 -1
  81. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs +0 -514
  82. package/fesm2022/weeehaoooz-talos-ui-form-autocomplete.mjs.map +0 -1
  83. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs +0 -548
  84. package/fesm2022/weeehaoooz-talos-ui-form-checkbox.mjs.map +0 -1
  85. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs +0 -692
  86. package/fesm2022/weeehaoooz-talos-ui-form-chips.mjs.map +0 -1
  87. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs +0 -761
  88. package/fesm2022/weeehaoooz-talos-ui-form-color-picker.mjs.map +0 -1
  89. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs +0 -896
  90. package/fesm2022/weeehaoooz-talos-ui-form-date-picker.mjs.map +0 -1
  91. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs +0 -872
  92. package/fesm2022/weeehaoooz-talos-ui-form-date-range-picker.mjs.map +0 -1
  93. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs +0 -119
  94. package/fesm2022/weeehaoooz-talos-ui-form-date-time-picker.mjs.map +0 -1
  95. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs +0 -135
  96. package/fesm2022/weeehaoooz-talos-ui-form-date-time-range-picker.mjs.map +0 -1
  97. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs +0 -666
  98. package/fesm2022/weeehaoooz-talos-ui-form-drop-zone.mjs.map +0 -1
  99. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs +0 -147
  100. package/fesm2022/weeehaoooz-talos-ui-form-form-field.mjs.map +0 -1
  101. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs +0 -33
  102. package/fesm2022/weeehaoooz-talos-ui-form-input.mjs.map +0 -1
  103. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs +0 -455
  104. package/fesm2022/weeehaoooz-talos-ui-form-otp.mjs.map +0 -1
  105. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs +0 -379
  106. package/fesm2022/weeehaoooz-talos-ui-form-password-input.mjs.map +0 -1
  107. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs +0 -297
  108. package/fesm2022/weeehaoooz-talos-ui-form-radio.mjs.map +0 -1
  109. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs +0 -661
  110. package/fesm2022/weeehaoooz-talos-ui-form-range-input.mjs.map +0 -1
  111. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs +0 -346
  112. package/fesm2022/weeehaoooz-talos-ui-form-rating.mjs.map +0 -1
  113. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs +0 -896
  114. package/fesm2022/weeehaoooz-talos-ui-form-select-input.mjs.map +0 -1
  115. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs +0 -252
  116. package/fesm2022/weeehaoooz-talos-ui-form-slide-toggle.mjs.map +0 -1
  117. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs +0 -916
  118. package/fesm2022/weeehaoooz-talos-ui-form-transfer-list.mjs.map +0 -1
  119. package/types/weeehaoooz-talos-ui-button-button-group.d.ts +0 -62
  120. package/types/weeehaoooz-talos-ui-button-button-group.d.ts.map +0 -1
  121. package/types/weeehaoooz-talos-ui-button-button.d.ts +0 -38
  122. package/types/weeehaoooz-talos-ui-button-button.d.ts.map +0 -1
  123. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts +0 -119
  124. package/types/weeehaoooz-talos-ui-data-display-badge.d.ts.map +0 -1
  125. package/types/weeehaoooz-talos-ui-data-display-data-grid.d.ts +0 -272
  126. package/types/weeehaoooz-talos-ui-data-display-data-grid.d.ts.map +0 -1
  127. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts +0 -135
  128. package/types/weeehaoooz-talos-ui-data-display-status-tag.d.ts.map +0 -1
  129. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts +0 -144
  130. package/types/weeehaoooz-talos-ui-data-display-timeline.d.ts.map +0 -1
  131. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts +0 -83
  132. package/types/weeehaoooz-talos-ui-data-display-trend-indicator.d.ts.map +0 -1
  133. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts +0 -255
  134. package/types/weeehaoooz-talos-ui-data-viz-category-bar.d.ts.map +0 -1
  135. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts +0 -204
  136. package/types/weeehaoooz-talos-ui-data-viz-heatmap.d.ts.map +0 -1
  137. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts +0 -101
  138. package/types/weeehaoooz-talos-ui-data-viz-mini-donut.d.ts.map +0 -1
  139. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts +0 -138
  140. package/types/weeehaoooz-talos-ui-data-viz-mini-gauge.d.ts.map +0 -1
  141. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts +0 -161
  142. package/types/weeehaoooz-talos-ui-data-viz-sparkline.d.ts.map +0 -1
  143. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts +0 -212
  144. package/types/weeehaoooz-talos-ui-feedback-alert.d.ts.map +0 -1
  145. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts +0 -259
  146. package/types/weeehaoooz-talos-ui-feedback-dialog.d.ts.map +0 -1
  147. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts +0 -147
  148. package/types/weeehaoooz-talos-ui-feedback-snackbar.d.ts.map +0 -1
  149. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts +0 -32
  150. package/types/weeehaoooz-talos-ui-feedback-tooltip.d.ts.map +0 -1
  151. package/types/weeehaoooz-talos-ui-form-affix.d.ts +0 -88
  152. package/types/weeehaoooz-talos-ui-form-affix.d.ts.map +0 -1
  153. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts +0 -113
  154. package/types/weeehaoooz-talos-ui-form-autocomplete.d.ts.map +0 -1
  155. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts +0 -165
  156. package/types/weeehaoooz-talos-ui-form-checkbox.d.ts.map +0 -1
  157. package/types/weeehaoooz-talos-ui-form-chips.d.ts +0 -152
  158. package/types/weeehaoooz-talos-ui-form-chips.d.ts.map +0 -1
  159. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts +0 -144
  160. package/types/weeehaoooz-talos-ui-form-color-picker.d.ts.map +0 -1
  161. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts +0 -138
  162. package/types/weeehaoooz-talos-ui-form-date-picker.d.ts.map +0 -1
  163. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts +0 -148
  164. package/types/weeehaoooz-talos-ui-form-date-range-picker.d.ts.map +0 -1
  165. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts +0 -44
  166. package/types/weeehaoooz-talos-ui-form-date-time-picker.d.ts.map +0 -1
  167. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts +0 -48
  168. package/types/weeehaoooz-talos-ui-form-date-time-range-picker.d.ts.map +0 -1
  169. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts +0 -227
  170. package/types/weeehaoooz-talos-ui-form-drop-zone.d.ts.map +0 -1
  171. package/types/weeehaoooz-talos-ui-form-form-field.d.ts +0 -42
  172. package/types/weeehaoooz-talos-ui-form-form-field.d.ts.map +0 -1
  173. package/types/weeehaoooz-talos-ui-form-input.d.ts +0 -15
  174. package/types/weeehaoooz-talos-ui-form-input.d.ts.map +0 -1
  175. package/types/weeehaoooz-talos-ui-form-otp.d.ts +0 -111
  176. package/types/weeehaoooz-talos-ui-form-otp.d.ts.map +0 -1
  177. package/types/weeehaoooz-talos-ui-form-password-input.d.ts +0 -145
  178. package/types/weeehaoooz-talos-ui-form-password-input.d.ts.map +0 -1
  179. package/types/weeehaoooz-talos-ui-form-radio.d.ts +0 -84
  180. package/types/weeehaoooz-talos-ui-form-radio.d.ts.map +0 -1
  181. package/types/weeehaoooz-talos-ui-form-range-input.d.ts +0 -181
  182. package/types/weeehaoooz-talos-ui-form-range-input.d.ts.map +0 -1
  183. package/types/weeehaoooz-talos-ui-form-rating.d.ts +0 -110
  184. package/types/weeehaoooz-talos-ui-form-rating.d.ts.map +0 -1
  185. package/types/weeehaoooz-talos-ui-form-select-input.d.ts +0 -195
  186. package/types/weeehaoooz-talos-ui-form-select-input.d.ts.map +0 -1
  187. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts +0 -79
  188. package/types/weeehaoooz-talos-ui-form-slide-toggle.d.ts.map +0 -1
  189. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts +0 -192
  190. package/types/weeehaoooz-talos-ui-form-transfer-list.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weeehaoooz-talos-ui-data-display.mjs","sources":["../../../projects/talos-ui/data-display/badge/badge.types.ts","../../../projects/talos-ui/data-display/badge/badge.directive.ts","../../../projects/talos-ui/data-display/badge/badge.module.ts","../../../projects/talos-ui/data-display/breadcrumb/breadcrumb.directives.ts","../../../projects/talos-ui/data-display/breadcrumb/breadcrumb-item.component.ts","../../../projects/talos-ui/data-display/breadcrumb/breadcrumb-item.component.html","../../../projects/talos-ui/data-display/breadcrumb/breadcrumb.component.ts","../../../projects/talos-ui/data-display/breadcrumb/breadcrumb.component.html","../../../projects/talos-ui/data-display/breadcrumb/breadcrumb.module.ts","../../../projects/talos-ui/data-display/status-tag/status-tag.types.ts","../../../projects/talos-ui/data-display/status-tag/status-tag.component.ts","../../../projects/talos-ui/data-display/status-tag/status-tag.component.html","../../../projects/talos-ui/data-display/status-tag/status-tag.module.ts","../../../projects/talos-ui/data-display/data-grid/data-grid-status-cell.component.ts","../../../projects/talos-ui/data-display/data-grid/data-grid-actions-cell.component.ts","../../../projects/talos-ui/data-display/data-grid/data-grid-filter-dialog.component.ts","../../../projects/talos-ui/data-display/data-grid/data-grid-format.pipe.ts","../../../projects/talos-ui/data-display/data-grid/data-grid.component.ts","../../../projects/talos-ui/data-display/data-grid/data-grid.component.html","../../../projects/talos-ui/data-display/data-grid/data-grid.module.ts","../../../projects/talos-ui/data-display/timeline/timeline.directives.ts","../../../projects/talos-ui/data-display/timeline/timeline-item.component.ts","../../../projects/talos-ui/data-display/timeline/timeline-item.component.html","../../../projects/talos-ui/data-display/timeline/timeline.component.ts","../../../projects/talos-ui/data-display/timeline/timeline.component.html","../../../projects/talos-ui/data-display/timeline/timeline.module.ts","../../../projects/talos-ui/data-display/trend-indicator/trend-indicator.types.ts","../../../projects/talos-ui/data-display/trend-indicator/trend-indicator.component.ts","../../../projects/talos-ui/data-display/trend-indicator/trend-indicator.component.html","../../../projects/talos-ui/data-display/trend-indicator/trend-indicator.module.ts","../../../projects/talos-ui/data-display/weeehaoooz-talos-ui-data-display.ts"],"sourcesContent":["/**\n * Supported size scales for the badge.\n */\nexport type TalosBadgeSize = 'xs' | 'sm' | 'md' | 'lg';\n\n/**\n * Anchor positions for placing the badge relative to its host element.\n */\nexport type TalosBadgePosition =\n | 'top-right'\n | 'top-left'\n | 'bottom-right'\n | 'bottom-left'\n | 'top'\n | 'bottom'\n | 'inline';\n\n/**\n * Visual semantic variant presentation styles.\n */\nexport type TalosBadgeVariant =\n | 'primary'\n | 'secondary'\n | 'success'\n | 'warning'\n | 'danger'\n | 'error'\n | 'info'\n | 'neutral'\n | 'subtle'\n | 'outline';\n\n/**\n * Shape styling of the badge container.\n */\nexport type TalosBadgeShape = 'circle' | 'pill' | 'square';\n\n/**\n * Formats badge content taking into account max threshold clamping, dot mode, and null values.\n *\n * @param content The raw badge content (number, string, or null/undefined)\n * @param max The maximum numerical threshold before displaying with a '+' post-script (e.g. 99+)\n * @param dot Whether the badge is operating in dot indicator mode\n * @returns The formatted string to be rendered inside the badge\n */\nexport function formatBadgeContent(\n content: string | number | null | undefined,\n max?: number | null,\n dot: boolean = false\n): string {\n if (dot || content === null || content === undefined || content === '') {\n return '';\n }\n\n if (typeof content === 'number') {\n if (typeof max === 'number' && max >= 0 && content > max) {\n return `${max}+`;\n }\n return content.toString();\n }\n\n const trimmed = content.toString().trim();\n if (trimmed === '') {\n return '';\n }\n\n const parsedNumber = Number(trimmed);\n if (!isNaN(parsedNumber) && typeof max === 'number' && max >= 0) {\n if (parsedNumber > max) {\n return `${max}+`;\n }\n }\n\n return trimmed;\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n Renderer2,\n computed,\n effect,\n inject,\n input\n} from '@angular/core';\nimport {\n TalosBadgePosition,\n TalosBadgeShape,\n TalosBadgeSize,\n TalosBadgeVariant,\n formatBadgeContent\n} from './badge.types';\n\n@Directive({\n selector: '[talosBadge], [talos-badge]',\n host: {\n 'class': 'talos-badge-host',\n '[class.talos-badge-host--has-badge]': 'shouldRender()',\n '[attr.aria-label]': 'resolvedHostAriaLabel()'\n }\n})\nexport class TalosBadgeDirective {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly renderer = inject(Renderer2);\n private readonly destroyRef = inject(DestroyRef);\n\n /**\n * The content to display inside the badge.\n * Can be a number, string, or null/undefined.\n */\n readonly content = input<string | number | null | undefined>(null, {\n alias: 'talosBadge'\n });\n\n /**\n * Maximum numeric value to display before appending '+'.\n * For example, max = 99 will display 100 as '99+'.\n */\n readonly max = input<number | null | undefined>(undefined, {\n alias: 'talosBadgeMax'\n });\n\n /**\n * Size scale of the badge.\n * @default 'md'\n */\n readonly size = input<TalosBadgeSize>('md', {\n alias: 'talosBadgeSize'\n });\n\n /**\n * Anchor position of the badge relative to the host element.\n * @default 'top-right'\n */\n readonly position = input<TalosBadgePosition>('top-right', {\n alias: 'talosBadgePosition'\n });\n\n /**\n * Visual variant/color theme of the badge.\n * @default 'primary'\n */\n readonly variant = input<TalosBadgeVariant>('primary', {\n alias: 'talosBadgeVariant'\n });\n\n /**\n * Shape style of the badge container.\n * @default 'circle'\n */\n readonly shape = input<TalosBadgeShape>('circle', {\n alias: 'talosBadgeShape'\n });\n\n /**\n * Whether to display the badge as a small indicator dot without text content.\n * @default false\n */\n readonly dot = input<boolean>(false, {\n alias: 'talosBadgeDot'\n });\n\n /**\n * Whether to enable an animated pulse/ripple effect for notifications.\n * @default false\n */\n readonly pulse = input<boolean>(false, {\n alias: 'talosBadgePulse'\n });\n\n /**\n * Whether the badge is hidden from view.\n * @default false\n */\n readonly hidden = input<boolean>(false, {\n alias: 'talosBadgeHidden'\n });\n\n /**\n * Whether the badge overlaps the edge of the host component.\n * @default true\n */\n readonly overlap = input<boolean>(true, {\n alias: 'talosBadgeOverlap'\n });\n\n /**\n * Accessible description/label for screen readers.\n */\n readonly ariaLabel = input<string | null | undefined>(undefined, {\n alias: 'talosBadgeAriaLabel'\n });\n\n /**\n * Computed formatted text content for the badge.\n */\n readonly formattedContent = computed<string>(() => {\n return formatBadgeContent(this.content(), this.max(), this.dot());\n });\n\n /**\n * Whether the badge should actively render in the DOM and be visible.\n */\n readonly shouldRender = computed<boolean>(() => {\n if (this.hidden()) {\n return false;\n }\n if (this.dot()) {\n return true;\n }\n const c = this.content();\n return c !== null && c !== undefined && c !== '';\n });\n\n /**\n * Computed host aria-label override when provided.\n */\n readonly resolvedHostAriaLabel = computed<string | null>(() => {\n const custom = this.ariaLabel();\n if (custom !== undefined && custom !== null && custom.trim().length > 0) {\n return custom;\n }\n return null;\n });\n\n private badgeElement: HTMLElement | null = null;\n\n constructor() {\n // Reactive effect to synchronize the badge DOM element whenever signal inputs change\n effect(() => {\n this.updateBadgeDom();\n });\n\n this.destroyRef.onDestroy(() => {\n this.removeBadgeDom();\n });\n }\n\n /**\n * Returns the native badge element for inspection or testing.\n */\n get nativeBadgeElement(): HTMLElement | null {\n return this.badgeElement;\n }\n\n private updateBadgeDom(): void {\n const isVisible = this.shouldRender();\n\n if (!isVisible) {\n if (this.badgeElement) {\n this.renderer.addClass(this.badgeElement, 'talos-badge--hidden');\n this.renderer.setStyle(this.badgeElement, 'display', 'none');\n }\n return;\n }\n\n if (!this.badgeElement) {\n this.badgeElement = this.renderer.createElement('span');\n this.renderer.addClass(this.badgeElement, 'talos-badge');\n this.renderer.setAttribute(this.badgeElement, 'aria-hidden', 'true');\n this.renderer.appendChild(this.elementRef.nativeElement, this.badgeElement);\n }\n\n const badgeEl = this.badgeElement;\n if (!badgeEl) {\n return;\n }\n\n // Reset visibility styles\n this.renderer.removeClass(badgeEl, 'talos-badge--hidden');\n this.renderer.removeStyle(badgeEl, 'display');\n\n // Update text content\n const text = this.formattedContent();\n this.renderer.setProperty(badgeEl, 'textContent', text);\n\n // Apply classes for size, position, variant, shape, etc.\n const size = this.size();\n const pos = this.position();\n const variant = this.variant();\n const shape = this.shape();\n const isDot = this.dot();\n const isPulse = this.pulse();\n const isOverlap = this.overlap();\n const isMultiChar = text.length > 1;\n\n // Reset base class list and re-apply active classes\n badgeEl.className = 'talos-badge';\n this.renderer.addClass(badgeEl, `talos-badge--${size}`);\n this.renderer.addClass(badgeEl, `talos-badge--${pos}`);\n this.renderer.addClass(badgeEl, `talos-badge--${variant}`);\n this.renderer.addClass(badgeEl, `talos-badge--${shape}`);\n\n if (isDot) {\n this.renderer.addClass(badgeEl, 'talos-badge--dot');\n }\n if (isPulse) {\n this.renderer.addClass(badgeEl, 'talos-badge--pulse');\n }\n if (isOverlap) {\n this.renderer.addClass(badgeEl, 'talos-badge--overlap');\n }\n if (isMultiChar && !isDot) {\n this.renderer.addClass(badgeEl, 'talos-badge--pill');\n }\n }\n\n private removeBadgeDom(): void {\n if (this.badgeElement) {\n this.renderer.removeChild(this.elementRef.nativeElement, this.badgeElement);\n this.badgeElement = null;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { TalosBadgeDirective } from './badge.directive';\n\n@NgModule({\n imports: [TalosBadgeDirective],\n exports: [TalosBadgeDirective]\n})\nexport class TalosBadgeModule {}\n","import { Directive, TemplateRef, inject } from '@angular/core';\nimport { TalosBreadcrumbItem } from './breadcrumb.types';\n\n/**\n * Context passed to custom breadcrumb item template definitions.\n */\nexport interface TalosBreadcrumbItemContext {\n $implicit: TalosBreadcrumbItem;\n index: number;\n isFirst: boolean;\n isLast: boolean;\n}\n\n/**\n * Directive for projecting a custom separator template into `<talos-breadcrumb>`.\n *\n * @example\n * ```html\n * <talos-breadcrumb [items]=\"crumbs\">\n * <ng-template talosBreadcrumbSeparator>\n * <span class=\"custom-slash\">~</span>\n * </ng-template>\n * </talos-breadcrumb>\n * ```\n */\n@Directive({\n selector: '[talosBreadcrumbSeparator]'\n})\nexport class TalosBreadcrumbSeparatorDirective {\n readonly templateRef = inject<TemplateRef<unknown>>(TemplateRef);\n}\n\n/**\n * Directive for custom rendering of individual breadcrumb items.\n *\n * @example\n * ```html\n * <talos-breadcrumb [items]=\"crumbs\">\n * <ng-template talosBreadcrumbItemDef let-item let-isLast=\"isLast\">\n * <span class=\"custom-node\">{{ item.label }}</span>\n * </ng-template>\n * </talos-breadcrumb>\n * ```\n */\n@Directive({\n selector: '[talosBreadcrumbItemDef]'\n})\nexport class TalosBreadcrumbItemDefDirective {\n readonly templateRef = inject<TemplateRef<TalosBreadcrumbItemContext>>(TemplateRef);\n}\n","import {\n Component,\n Type,\n computed,\n input,\n output\n} from '@angular/core';\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { TalosBreadcrumbSize } from './breadcrumb.types';\n\n@Component({\n selector: 'talos-breadcrumb-item, [talosBreadcrumbItem]',\n imports: [NgComponentOutlet, NgTemplateOutlet, RouterLink],\n templateUrl: './breadcrumb-item.component.html',\n styleUrl: './breadcrumb-item.component.scss',\n host: {\n 'class': 'talos-breadcrumb-item',\n '[class.talos-breadcrumb-item--current]': 'current()',\n '[class.talos-breadcrumb-item--disabled]': 'disabled()',\n '[class.talos-breadcrumb-item--link]': 'isLink()',\n '[class.talos-breadcrumb-item--xs]': 'size() === \"xs\"',\n '[class.talos-breadcrumb-item--sm]': 'size() === \"sm\"',\n '[class.talos-breadcrumb-item--md]': 'size() === \"md\"',\n '[class.talos-breadcrumb-item--lg]': 'size() === \"lg\"'\n }\n})\nexport class TalosBreadcrumbItemComponent {\n /**\n * Text label for this item. Can be provided via input or ng-content.\n */\n readonly label = input<string | null>(null);\n\n /**\n * Standard URL hyperlink. When provided and not disabled, renders as an interactive anchor link.\n */\n readonly href = input<string | null>(null);\n\n /**\n * Angular router link navigation path or command segments.\n */\n readonly routerLink = input<string | unknown[] | null>(null);\n\n /**\n * Optional icon component to render before the item label.\n */\n readonly icon = input<Type<unknown> | null>(null);\n\n /**\n * Whether this breadcrumb item is disabled.\n * @default false\n */\n readonly disabled = input<boolean>(false);\n\n /**\n * Whether this item represents the current active page in the navigation hierarchy.\n * Current items are non-interactive and decorated with aria-current=\"page\".\n * @default false\n */\n readonly current = input<boolean>(false);\n\n /**\n * Accessible description / aria-label for screen readers.\n */\n readonly ariaLabel = input<string | null>(null);\n\n /**\n * Size scale inherited from the parent breadcrumb or set directly.\n * @default 'md'\n */\n readonly size = input<TalosBreadcrumbSize>('md');\n\n /**\n * Target window/tab attribute when href is used (e.g. '_blank').\n */\n readonly target = input<string | null>(null);\n\n /**\n * Native title attribute for tooltip display.\n */\n readonly title = input<string | null>(null);\n\n /**\n * Emitted when this breadcrumb item is clicked or activated via keyboard.\n */\n readonly itemClick = output<MouseEvent | KeyboardEvent>();\n\n /**\n * Whether this item should render as an interactive link.\n */\n readonly isLink = computed<boolean>(() => {\n if (this.current() || this.disabled()) {\n return false;\n }\n return Boolean(this.href() || this.routerLink() || this.itemClick);\n });\n\n protected onLinkClick(event: MouseEvent): void {\n if (this.disabled() || this.current()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.itemClick.emit(event);\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (this.disabled() || this.current()) {\n return;\n }\n if (event.key === 'Enter' || event.key === ' ') {\n if (event.key === ' ') {\n event.preventDefault();\n }\n this.itemClick.emit(event);\n }\n }\n}\n","<ng-template #contentTpl>\n @if (icon()) {\n <span class=\"talos-breadcrumb-item__icon\" aria-hidden=\"true\">\n <ng-container *ngComponentOutlet=\"icon()!\" />\n </span>\n }\n <span class=\"talos-breadcrumb-item__label\">\n @if (label()) {\n {{ label() }}\n } @else {\n <ng-content />\n }\n </span>\n</ng-template>\n\n@if (isLink()) {\n @if (routerLink()) {\n <a\n [routerLink]=\"routerLink()!\"\n [attr.target]=\"target() || null\"\n [attr.title]=\"title() || null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n class=\"talos-breadcrumb-item__anchor\"\n (click)=\"onLinkClick($event)\"\n (keydown)=\"onKeydown($event)\"\n >\n <ng-container *ngTemplateOutlet=\"contentTpl\" />\n </a>\n } @else {\n <a\n [attr.href]=\"href() || 'javascript:void(0)'\"\n [attr.target]=\"target() || null\"\n [attr.title]=\"title() || null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n class=\"talos-breadcrumb-item__anchor\"\n (click)=\"onLinkClick($event)\"\n (keydown)=\"onKeydown($event)\"\n >\n <ng-container *ngTemplateOutlet=\"contentTpl\" />\n </a>\n }\n} @else {\n <span\n [attr.title]=\"title() || null\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-current]=\"current() ? 'page' : null\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\"\n class=\"talos-breadcrumb-item__text\"\n >\n <ng-container *ngTemplateOutlet=\"contentTpl\" />\n </span>\n}\n","import {\n Component,\n TemplateRef,\n Type,\n computed,\n contentChild,\n input,\n output,\n signal\n} from '@angular/core';\nimport { CommonModule, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport { LucideChevronRight } from '@lucide/angular';\nimport {\n TalosBreadcrumbItem,\n TalosBreadcrumbItemClickEvent,\n TalosBreadcrumbSeparatorType,\n TalosBreadcrumbSize,\n TalosBreadcrumbVariant\n} from './breadcrumb.types';\nimport {\n TalosBreadcrumbItemDefDirective,\n TalosBreadcrumbSeparatorDirective\n} from './breadcrumb.directives';\nimport { TalosBreadcrumbItemComponent } from './breadcrumb-item.component';\n\n/**\n * Processed internal node representation for rendered breadcrumbs.\n */\nexport interface ProcessedBreadcrumbNode {\n type: 'item' | 'ellipsis';\n item?: TalosBreadcrumbItem;\n index: number;\n isFirst: boolean;\n isLast: boolean;\n isCurrent: boolean;\n omittedCount?: number;\n}\n\n@Component({\n selector: 'talos-breadcrumb, [talosBreadcrumb]',\n imports: [\n CommonModule,\n NgTemplateOutlet,\n NgComponentOutlet,\n TalosBreadcrumbItemComponent\n ],\n templateUrl: './breadcrumb.component.html',\n styleUrl: './breadcrumb.component.scss',\n host: {\n 'class': 'talos-breadcrumb',\n 'role': 'navigation',\n '[attr.aria-label]': 'ariaLabel()',\n '[class.talos-breadcrumb--xs]': 'size() === \"xs\"',\n '[class.talos-breadcrumb--sm]': 'size() === \"sm\"',\n '[class.talos-breadcrumb--md]': 'size() === \"md\"',\n '[class.talos-breadcrumb--lg]': 'size() === \"lg\"',\n '[class.talos-breadcrumb--standard]': 'variant() === \"standard\"',\n '[class.talos-breadcrumb--contained]': 'variant() === \"contained\"',\n '[class.talos-breadcrumb--subtle]': 'variant() === \"subtle\"'\n }\n})\nexport class TalosBreadcrumbComponent {\n /**\n * Data-driven list of breadcrumb items to render.\n */\n readonly items = input<TalosBreadcrumbItem[] | null>(null);\n\n /**\n * Separator style between breadcrumb items.\n * Can be 'chevron', 'slash', 'arrow', 'bullet', or a custom string.\n * @default 'chevron'\n */\n readonly separator = input<TalosBreadcrumbSeparatorType | string>('chevron');\n\n /**\n * Size scale of the breadcrumb and its separators.\n * @default 'md'\n */\n readonly size = input<TalosBreadcrumbSize>('md');\n\n /**\n * Visual variant and background container style.\n * @default 'standard'\n */\n readonly variant = input<TalosBreadcrumbVariant>('standard');\n\n /**\n * Maximum number of items to display before collapsing intermediate nodes into an ellipsis.\n */\n readonly maxItems = input<number | null>(null);\n\n /**\n * Number of items to display before the collapsed ellipsis.\n * @default 1\n */\n readonly itemsBeforeCollapse = input<number>(1);\n\n /**\n * Number of items to display after the collapsed ellipsis.\n * @default 1\n */\n readonly itemsAfterCollapse = input<number>(1);\n\n /**\n * Accessible description for the `<nav>` landmark.\n * @default 'Breadcrumb'\n */\n readonly ariaLabel = input<string>('Breadcrumb');\n\n /**\n * Emitted when an individual breadcrumb item is clicked.\n */\n readonly itemClick = output<TalosBreadcrumbItemClickEvent>();\n\n /**\n * Emitted when the user expands collapsed items via the ellipsis button.\n */\n readonly expand = output<void>();\n\n /**\n * Optional custom separator template projected from parent.\n */\n readonly customSeparator = contentChild(TalosBreadcrumbSeparatorDirective);\n\n /**\n * Optional custom item template projected from parent.\n */\n readonly customItemDef = contentChild(TalosBreadcrumbItemDefDirective);\n\n /**\n * Track whether the user has clicked to expand collapsed crumbs.\n */\n readonly expandedByUser = signal<boolean>(false);\n\n /**\n * Built-in Lucide chevron icon component.\n */\n protected readonly chevronIcon: Type<unknown> = LucideChevronRight;\n\n /**\n * Computed list of nodes for template rendering.\n */\n protected readonly displayNodes = computed<ProcessedBreadcrumbNode[]>(() => {\n const raw = this.items();\n if (!raw || raw.length === 0) {\n return [];\n }\n\n const total = raw.length;\n const max = this.maxItems();\n const shouldCollapse =\n !this.expandedByUser() && typeof max === 'number' && max > 0 && total > max;\n\n if (!shouldCollapse) {\n return raw.map((item, idx) => ({\n type: 'item' as const,\n item,\n index: idx,\n isFirst: idx === 0,\n isLast: idx === total - 1,\n isCurrent: item.current !== undefined ? item.current : idx === total - 1\n }));\n }\n\n const before = Math.max(1, this.itemsBeforeCollapse());\n const after = Math.max(1, this.itemsAfterCollapse());\n\n if (before + after >= total) {\n return raw.map((item, idx) => ({\n type: 'item' as const,\n item,\n index: idx,\n isFirst: idx === 0,\n isLast: idx === total - 1,\n isCurrent: item.current !== undefined ? item.current : idx === total - 1\n }));\n }\n\n const nodes: ProcessedBreadcrumbNode[] = [];\n\n // Head nodes\n for (let i = 0; i < before; i++) {\n const item = raw[i];\n nodes.push({\n type: 'item',\n item,\n index: i,\n isFirst: i === 0,\n isLast: false,\n isCurrent: item.current !== undefined ? item.current : false\n });\n }\n\n // Collapsed Ellipsis\n const omittedCount = total - before - after;\n nodes.push({\n type: 'ellipsis',\n index: before,\n isFirst: false,\n isLast: false,\n isCurrent: false,\n omittedCount\n });\n\n // Tail nodes\n for (let i = total - after; i < total; i++) {\n const item = raw[i];\n nodes.push({\n type: 'item',\n item,\n index: i,\n isFirst: false,\n isLast: i === total - 1,\n isCurrent: item.current !== undefined ? item.current : i === total - 1\n });\n }\n\n return nodes;\n });\n\n /**\n * Handles click on an item node.\n */\n protected onItemClick(\n item: TalosBreadcrumbItem,\n index: number,\n originalEvent: MouseEvent | KeyboardEvent\n ): void {\n this.itemClick.emit({ item, index, originalEvent });\n }\n\n /**\n * Expands the collapsed crumbs when user clicks the ellipsis button.\n */\n protected onEllipsisClick(event: MouseEvent | KeyboardEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this.expandedByUser.set(true);\n this.expand.emit();\n }\n\n /**\n * Resets the expansion state back to collapsed.\n */\n resetExpansion(): void {\n this.expandedByUser.set(false);\n }\n}\n","<ol class=\"talos-breadcrumb__list\">\n @if (items() && items()!.length > 0) {\n @for (node of displayNodes(); track node.type === 'ellipsis' ? ('ellipsis-' + node.index) : (node.item?.id ?? node.index); let isLast = $last) {\n <li class=\"talos-breadcrumb__item-wrapper\">\n @if (node.type === 'ellipsis') {\n <button\n type=\"button\"\n class=\"talos-breadcrumb__ellipsis\"\n [attr.aria-label]=\"'Show ' + (node.omittedCount || 0) + ' more items'\"\n (click)=\"onEllipsisClick($event)\"\n >\n <span class=\"talos-breadcrumb__dot\"></span>\n <span class=\"talos-breadcrumb__dot\"></span>\n <span class=\"talos-breadcrumb__dot\"></span>\n </button>\n } @else if (node.item) {\n @if (customItemDef()) {\n <ng-container\n *ngTemplateOutlet=\"\n customItemDef()!.templateRef;\n context: {\n $implicit: node.item,\n index: node.index,\n isFirst: node.isFirst,\n isLast: node.isLast\n }\n \"\n />\n } @else if (node.item.customTemplate) {\n <ng-container\n *ngTemplateOutlet=\"\n node.item.customTemplate;\n context: {\n $implicit: node.item,\n index: node.index,\n isFirst: node.isFirst,\n isLast: node.isLast\n }\n \"\n />\n } @else {\n <talos-breadcrumb-item\n [label]=\"node.item.label\"\n [href]=\"node.item.href || null\"\n [routerLink]=\"node.item.routerLink || null\"\n [icon]=\"node.item.icon || null\"\n [disabled]=\"node.item.disabled || false\"\n [current]=\"node.isCurrent\"\n [ariaLabel]=\"node.item.ariaLabel || null\"\n [target]=\"node.item.target || null\"\n [title]=\"node.item.title || null\"\n [size]=\"size()\"\n (itemClick)=\"onItemClick(node.item, node.index, $event)\"\n >\n {{ node.item.label }}\n </talos-breadcrumb-item>\n }\n }\n\n @if (!isLast) {\n <span class=\"talos-breadcrumb__separator\" aria-hidden=\"true\">\n @if (customSeparator()) {\n <ng-container *ngTemplateOutlet=\"customSeparator()!.templateRef\" />\n } @else if (separator() === 'chevron') {\n <span class=\"talos-breadcrumb__separator-icon\">\n <ng-container *ngComponentOutlet=\"chevronIcon\" />\n </span>\n } @else if (separator() === 'slash') {\n /\n } @else if (separator() === 'arrow') {\n →\n } @else if (separator() === 'bullet') {\n •\n } @else {\n {{ separator() }}\n }\n </span>\n }\n </li>\n }\n } @else {\n <ng-content />\n }\n</ol>\n","import { NgModule } from '@angular/core';\nimport { TalosBreadcrumbComponent } from './breadcrumb.component';\nimport { TalosBreadcrumbItemComponent } from './breadcrumb-item.component';\nimport {\n TalosBreadcrumbItemDefDirective,\n TalosBreadcrumbSeparatorDirective\n} from './breadcrumb.directives';\n\nconst BREADCRUMB_DECLARATIONS = [\n TalosBreadcrumbComponent,\n TalosBreadcrumbItemComponent,\n TalosBreadcrumbSeparatorDirective,\n TalosBreadcrumbItemDefDirective\n];\n\n@NgModule({\n imports: [...BREADCRUMB_DECLARATIONS],\n exports: [...BREADCRUMB_DECLARATIONS]\n})\nexport class TalosBreadcrumbModule {}\n","/**\n * Standard canonical workflow orchestration statuses.\n */\nexport type TalosCanonicalWorkflowStatus =\n | 'NEW'\n | 'PENDING'\n | 'IN-PROGRESS'\n | 'PAUSED'\n | 'RETRYING'\n | 'SKIPPED'\n | 'SUCCESS'\n | 'COMPLETED'\n | 'ERROR'\n | 'TERMINATED'\n | 'EXPIRED';\n\n/**\n * Permissive workflow status input accepting canonical names, lowercase variants, and industry aliases.\n */\nexport type TalosWorkflowStatus =\n | TalosCanonicalWorkflowStatus\n | 'new'\n | 'created'\n | 'draft'\n | 'CREATED'\n | 'DRAFT'\n | 'pending'\n | 'queued'\n | 'scheduled'\n | 'waiting'\n | 'QUEUED'\n | 'SCHEDULED'\n | 'WAITING'\n | 'in-progress'\n | 'in_progress'\n | 'IN_PROGRESS'\n | 'running'\n | 'executing'\n | 'RUNNING'\n | 'EXECUTING'\n | 'paused'\n | 'suspended'\n | 'on_hold'\n | 'on-hold'\n | 'waiting_for_approval'\n | 'SUSPENDED'\n | 'ON_HOLD'\n | 'ON-HOLD'\n | 'WAITING_FOR_APPROVAL'\n | 'retrying'\n | 'up_for_retry'\n | 'up-for-retry'\n | 'UP_FOR_RETRY'\n | 'UP-FOR-RETRY'\n | 'skipped'\n | 'bypassed'\n | 'ignored'\n | 'SKIPPED'\n | 'BYPASSED'\n | 'IGNORED'\n | 'success'\n | 'succeeded'\n | 'passed'\n | 'SUCCEEDED'\n | 'PASSED'\n | 'completed'\n | 'finished'\n | 'done'\n | 'FINISHED'\n | 'DONE'\n | 'error'\n | 'failed'\n | 'failure'\n | 'FAILED'\n | 'FAILURE'\n | 'terminated'\n | 'cancelled'\n | 'canceled'\n | 'aborted'\n | 'stopped'\n | 'killed'\n | 'CANCELLED'\n | 'CANCELED'\n | 'ABORTED'\n | 'STOPPED'\n | 'KILLED'\n | 'expired'\n | 'timeout'\n | 'timed_out'\n | 'timed-out'\n | 'stale'\n | 'TIMEOUT'\n | 'TIMED_OUT'\n | 'TIMED-OUT'\n | 'STALE';\n\n/**\n * Visual variant presentation styles.\n */\nexport type TalosStatusTagVariant = 'subtle' | 'solid' | 'outline' | 'dot';\n\n/**\n * Size scale for the status tag.\n */\nexport type TalosStatusTagSize = 'xs' | 'sm' | 'md' | 'lg';\n\n/**\n * Border radius shape style for the status tag.\n */\nexport type TalosStatusTagShape = 'rounded' | 'pill' | 'square';\n\n/**\n * Status descriptor containing default metadata.\n */\nexport interface TalosStatusDescriptor {\n readonly canonical: TalosCanonicalWorkflowStatus;\n readonly defaultLabel: string;\n readonly defaultAriaLabel: string;\n readonly cssModifier: string;\n readonly shouldAnimateIcon?: boolean;\n}\n\n/**\n * Normalizes any recognized status string or alias into its canonical status.\n */\nexport function normalizeWorkflowStatus(status: string | null | undefined): TalosCanonicalWorkflowStatus {\n if (!status) {\n return 'PENDING';\n }\n\n const clean = status.trim().toUpperCase().replace(/[\\s_]+/g, '-');\n\n switch (clean) {\n case 'NEW':\n case 'CREATED':\n case 'DRAFT':\n return 'NEW';\n\n case 'PENDING':\n case 'QUEUED':\n case 'SCHEDULED':\n case 'WAITING':\n return 'PENDING';\n\n case 'IN-PROGRESS':\n case 'INPROGRESS':\n case 'RUNNING':\n case 'EXECUTING':\n case 'ACTIVE':\n return 'IN-PROGRESS';\n\n case 'PAUSED':\n case 'SUSPENDED':\n case 'ON-HOLD':\n case 'ONHOLD':\n case 'WAITING-FOR-APPROVAL':\n case 'BLOCKED':\n return 'PAUSED';\n\n case 'RETRYING':\n case 'UP-FOR-RETRY':\n case 'RETRY':\n return 'RETRYING';\n\n case 'SKIPPED':\n case 'BYPASSED':\n case 'IGNORED':\n return 'SKIPPED';\n\n case 'SUCCESS':\n case 'SUCCEEDED':\n case 'PASSED':\n case 'OK':\n return 'SUCCESS';\n\n case 'COMPLETED':\n case 'FINISHED':\n case 'DONE':\n return 'COMPLETED';\n\n case 'ERROR':\n case 'FAILED':\n case 'FAILURE':\n case 'CRASHED':\n return 'ERROR';\n\n case 'TERMINATED':\n case 'CANCELLED':\n case 'CANCELED':\n case 'ABORTED':\n case 'STOPPED':\n case 'KILLED':\n return 'TERMINATED';\n\n case 'EXPIRED':\n case 'TIMEOUT':\n case 'TIMED-OUT':\n case 'TIMEDOUT':\n case 'STALE':\n return 'EXPIRED';\n\n default:\n return 'PENDING';\n }\n}\n\n/**\n * Status descriptors map with default metadata.\n */\nexport const TALOS_STATUS_DESCRIPTORS: Record<TalosCanonicalWorkflowStatus, TalosStatusDescriptor> = {\n 'NEW': {\n canonical: 'NEW',\n defaultLabel: 'New',\n defaultAriaLabel: 'Status: New',\n cssModifier: 'new'\n },\n 'PENDING': {\n canonical: 'PENDING',\n defaultLabel: 'Pending',\n defaultAriaLabel: 'Status: Pending',\n cssModifier: 'pending'\n },\n 'IN-PROGRESS': {\n canonical: 'IN-PROGRESS',\n defaultLabel: 'In Progress',\n defaultAriaLabel: 'Status: In Progress',\n cssModifier: 'inprogress',\n shouldAnimateIcon: true\n },\n 'PAUSED': {\n canonical: 'PAUSED',\n defaultLabel: 'Paused',\n defaultAriaLabel: 'Status: Paused',\n cssModifier: 'paused'\n },\n 'RETRYING': {\n canonical: 'RETRYING',\n defaultLabel: 'Retrying',\n defaultAriaLabel: 'Status: Retrying',\n cssModifier: 'retrying',\n shouldAnimateIcon: true\n },\n 'SKIPPED': {\n canonical: 'SKIPPED',\n defaultLabel: 'Skipped',\n defaultAriaLabel: 'Status: Skipped',\n cssModifier: 'skipped'\n },\n 'SUCCESS': {\n canonical: 'SUCCESS',\n defaultLabel: 'Success',\n defaultAriaLabel: 'Status: Success',\n cssModifier: 'success'\n },\n 'COMPLETED': {\n canonical: 'COMPLETED',\n defaultLabel: 'Completed',\n defaultAriaLabel: 'Status: Completed',\n cssModifier: 'completed'\n },\n 'ERROR': {\n canonical: 'ERROR',\n defaultLabel: 'Error',\n defaultAriaLabel: 'Status: Error',\n cssModifier: 'error'\n },\n 'TERMINATED': {\n canonical: 'TERMINATED',\n defaultLabel: 'Terminated',\n defaultAriaLabel: 'Status: Terminated',\n cssModifier: 'terminated'\n },\n 'EXPIRED': {\n canonical: 'EXPIRED',\n defaultLabel: 'Expired',\n defaultAriaLabel: 'Status: Expired',\n cssModifier: 'expired'\n }\n};\n","import {\n Component,\n ElementRef,\n Type,\n computed,\n inject,\n input\n} from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport {\n LucideSparkles,\n LucideClock,\n LucideLoader2,\n LucideCirclePause,\n LucideRotateCcw,\n LucideFastForward,\n LucideCheckCircle2,\n LucideCheckCheck,\n LucideCircleAlert,\n LucideBan,\n LucideClockAlert\n} from '@lucide/angular';\nimport {\n TALOS_STATUS_DESCRIPTORS,\n TalosCanonicalWorkflowStatus,\n TalosStatusDescriptor,\n TalosStatusTagShape,\n TalosStatusTagSize,\n TalosStatusTagVariant,\n TalosWorkflowStatus,\n normalizeWorkflowStatus\n} from './status-tag.types';\n\n@Component({\n selector: 'talos-status-tag, [talosStatusTag]',\n imports: [NgComponentOutlet],\n templateUrl: './status-tag.component.html',\n styleUrl: './status-tag.component.scss',\n host: {\n 'class': 'talos-status-tag',\n '[class.talos-status-tag--new]': 'canonicalStatus() === \"NEW\"',\n '[class.talos-status-tag--pending]': 'canonicalStatus() === \"PENDING\"',\n '[class.talos-status-tag--inprogress]': 'canonicalStatus() === \"IN-PROGRESS\"',\n '[class.talos-status-tag--paused]': 'canonicalStatus() === \"PAUSED\"',\n '[class.talos-status-tag--retrying]': 'canonicalStatus() === \"RETRYING\"',\n '[class.talos-status-tag--skipped]': 'canonicalStatus() === \"SKIPPED\"',\n '[class.talos-status-tag--success]': 'canonicalStatus() === \"SUCCESS\"',\n '[class.talos-status-tag--completed]': 'canonicalStatus() === \"COMPLETED\"',\n '[class.talos-status-tag--error]': 'canonicalStatus() === \"ERROR\"',\n '[class.talos-status-tag--terminated]': 'canonicalStatus() === \"TERMINATED\"',\n '[class.talos-status-tag--expired]': 'canonicalStatus() === \"EXPIRED\"',\n '[class.talos-status-tag--subtle]': 'variant() === \"subtle\"',\n '[class.talos-status-tag--solid]': 'variant() === \"solid\"',\n '[class.talos-status-tag--outline]': 'variant() === \"outline\"',\n '[class.talos-status-tag--dot]': 'variant() === \"dot\"',\n '[class.talos-status-tag--xs]': 'size() === \"xs\"',\n '[class.talos-status-tag--sm]': 'size() === \"sm\"',\n '[class.talos-status-tag--md]': 'size() === \"md\"',\n '[class.talos-status-tag--lg]': 'size() === \"lg\"',\n '[class.talos-status-tag--rounded]': 'shape() === \"rounded\"',\n '[class.talos-status-tag--pill]': 'shape() === \"pill\"',\n '[class.talos-status-tag--square]': 'shape() === \"square\"',\n '[class.talos-status-tag--pulse]': 'pulse()',\n '[class.talos-status-tag--icon-only]': 'iconOnly()',\n '[attr.role]': '\"status\"',\n '[attr.aria-label]': 'resolvedAriaLabel()'\n }\n})\nexport class TalosStatusTagComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /**\n * The workflow status to display. Supports all canonical names, lowercase variants, and common aliases.\n */\n readonly status = input.required<TalosWorkflowStatus | string>();\n\n /**\n * Optional custom label text. If not provided or empty, defaults to standard status label.\n */\n readonly label = input<string | null | undefined>(undefined);\n\n /**\n * Visual presentation style.\n * @default 'subtle'\n */\n readonly variant = input<TalosStatusTagVariant>('subtle');\n\n /**\n * Size scale.\n * @default 'md'\n */\n readonly size = input<TalosStatusTagSize>('md');\n\n /**\n * Border radius shape.\n * @default 'rounded'\n */\n readonly shape = input<TalosStatusTagShape>('rounded');\n\n /**\n * Whether to render the status icon / indicator symbol.\n * @default true\n */\n readonly showIcon = input<boolean>(true);\n\n /**\n * Optional custom icon component override.\n */\n readonly icon = input<Type<unknown> | null>(null);\n\n /**\n * Whether to render only the symbol/icon without label text.\n * @default false\n */\n readonly iconOnly = input<boolean>(false);\n\n /**\n * Whether to enable pulsing animation for active/waiting states.\n * @default false\n */\n readonly pulse = input<boolean>(false);\n\n /**\n * Optional accessible ARIA label override.\n */\n readonly ariaLabel = input<string | null | undefined>(undefined);\n\n /**\n * Normalized canonical workflow status.\n */\n readonly canonicalStatus = computed<TalosCanonicalWorkflowStatus>(() => {\n return normalizeWorkflowStatus(this.status());\n });\n\n /**\n * Descriptor containing default metadata for current canonical status.\n */\n readonly descriptor = computed<TalosStatusDescriptor>(() => {\n return TALOS_STATUS_DESCRIPTORS[this.canonicalStatus()];\n });\n\n /**\n * Resolved label to display when no custom content is projected.\n */\n readonly resolvedLabel = computed<string>(() => {\n const customLabel = this.label();\n if (customLabel !== undefined && customLabel !== null && customLabel.trim().length > 0) {\n return customLabel;\n }\n return this.descriptor().defaultLabel;\n });\n\n /**\n * Resolved accessibility label for screen readers.\n */\n readonly resolvedAriaLabel = computed<string>(() => {\n const customAria = this.ariaLabel();\n if (customAria !== undefined && customAria !== null && customAria.trim().length > 0) {\n return customAria;\n }\n return `${this.descriptor().defaultAriaLabel}: ${this.resolvedLabel()}`;\n });\n\n /**\n * Pixel size for the Lucide icon based on status tag size.\n */\n readonly iconSize = computed<number>(() => {\n switch (this.size()) {\n case 'xs':\n return 11;\n case 'sm':\n return 13;\n case 'lg':\n return 16;\n case 'md':\n default:\n return 14;\n }\n });\n\n /**\n * Resolved default Lucide icon component for the current canonical status.\n */\n readonly defaultIconComponent = computed<Type<unknown>>(() => {\n switch (this.canonicalStatus()) {\n case 'NEW':\n return LucideSparkles;\n case 'PENDING':\n return LucideClock;\n case 'IN-PROGRESS':\n return LucideLoader2;\n case 'PAUSED':\n return LucideCirclePause;\n case 'RETRYING':\n return LucideRotateCcw;\n case 'SKIPPED':\n return LucideFastForward;\n case 'SUCCESS':\n return LucideCheckCircle2;\n case 'COMPLETED':\n return LucideCheckCheck;\n case 'ERROR':\n return LucideCircleAlert;\n case 'TERMINATED':\n return LucideBan;\n case 'EXPIRED':\n return LucideClockAlert;\n default:\n return LucideClock;\n }\n });\n\n /**\n * Active icon component to render (custom icon if provided, otherwise default semantic icon).\n */\n readonly activeIconComponent = computed<Type<unknown>>(() => {\n return this.icon() ?? this.defaultIconComponent();\n });\n\n /**\n * Whether the icon should have active spin/rotation animation (e.g. IN-PROGRESS, RETRYING).\n */\n readonly shouldAnimateIcon = computed<boolean>(() => {\n return !!this.descriptor().shouldAnimateIcon;\n });\n}\n","@if (variant() === 'dot') {\n <span class=\"talos-status-tag__dot\" [class.talos-status-tag__dot--pulse]=\"pulse()\" aria-hidden=\"true\">\n @if (pulse()) {\n <span class=\"talos-status-tag__dot-ping\" aria-hidden=\"true\"></span>\n }\n </span>\n} @else if (showIcon()) {\n <span\n class=\"talos-status-tag__icon\"\n [class.talos-status-tag__icon--spin]=\"shouldAnimateIcon()\"\n [class.talos-status-tag__icon--pulse]=\"pulse()\"\n aria-hidden=\"true\"\n >\n <ng-container *ngComponentOutlet=\"activeIconComponent(); inputs: { size: iconSize() }\" />\n </span>\n}\n\n<span [class.talos-status-tag__label]=\"!iconOnly()\" [class.talos-sr-only]=\"iconOnly()\">\n <ng-content>{{ resolvedLabel() }}</ng-content>\n</span>\n","import { NgModule } from '@angular/core';\nimport { TalosStatusTagComponent } from './status-tag.component';\n\n@NgModule({\n imports: [TalosStatusTagComponent],\n exports: [TalosStatusTagComponent]\n})\nexport class TalosStatusTagModule {}\n","import { Component, computed, input } from '@angular/core';\nimport {\n TalosStatusTagComponent,\n TalosCanonicalWorkflowStatus,\n TalosStatusTagShape,\n TalosStatusTagSize,\n TalosStatusTagVariant,\n TalosWorkflowStatus,\n} from '../status-tag';\nimport { TalosGridColDef } from './data-grid.types';\n\n@Component({\n selector: 'talos-grid-status-cell',\n imports: [TalosStatusTagComponent],\n template: `\n <talos-status-tag\n [status]=\"status()\"\n [variant]=\"variant()\"\n [size]=\"size()\"\n [shape]=\"shape()\"\n [showIcon]=\"showIcon()\"\n >\n {{ label() }}\n </talos-status-tag>\n `,\n host: {\n class: 'talos-grid-status-cell',\n },\n})\nexport class TalosGridStatusCellComponent {\n readonly row = input.required<any>();\n readonly column = input.required<TalosGridColDef>();\n readonly rawValue = input<any>();\n\n protected readonly value = computed(() => {\n const directVal = this.rawValue();\n if (directVal !== undefined) {\n return directVal;\n }\n const r = this.row();\n const col = this.column();\n if (!r || !col?.field) return '';\n return r[col.field];\n });\n\n protected readonly status = computed<TalosWorkflowStatus | TalosCanonicalWorkflowStatus>(() => {\n const val = this.value();\n const r = this.row();\n const config = this.column().statusConfig;\n if (config?.statusMap) {\n return config.statusMap(val, r);\n }\n return (val ?? 'PENDING') as TalosWorkflowStatus;\n });\n\n protected readonly label = computed<string>(() => {\n const val = this.value();\n const r = this.row();\n const col = this.column();\n if (col.formatter) {\n return col.formatter(val, r);\n }\n return String(val ?? '');\n });\n\n protected readonly variant = computed<TalosStatusTagVariant>(() => {\n return this.column().statusConfig?.variant ?? 'subtle';\n });\n\n protected readonly size = computed<TalosStatusTagSize>(() => {\n return this.column().statusConfig?.size ?? 'sm';\n });\n\n protected readonly shape = computed<TalosStatusTagShape>(() => {\n return this.column().statusConfig?.shape ?? 'rounded';\n });\n\n protected readonly showIcon = computed<boolean>(() => {\n return this.column().statusConfig?.showIcon ?? true;\n });\n}\n","import { Component, input, output } from '@angular/core';\nimport { NgComponentOutlet } from '@angular/common';\nimport { TalosButtonDirective } from '@weeehaoooz/talos-ui/button';\nimport { TalosTooltipDirective } from '@weeehaoooz/talos-ui/feedback';\nimport { TalosGridActionClickEvent, TalosGridActionDef } from './data-grid.types';\n\n@Component({\n selector: 'talos-grid-actions-cell',\n imports: [NgComponentOutlet, TalosButtonDirective, TalosTooltipDirective],\n template: `\n <div class=\"talos-grid-actions-wrapper\">\n @for (action of visibleActions(); track action.id) {\n <button\n talosButton\n type=\"button\"\n [variant]=\"action.variant ?? 'ghost'\"\n [size]=\"action.size ?? 'xs'\"\n [iconOnly]=\"action.iconOnly ?? !action.label\"\n [disabled]=\"isActionDisabled(action)\"\n [talosTooltip]=\"getActionTooltip(action)\"\n [tooltipDisabled]=\"!getActionTooltip(action)\"\n (click)=\"onActionClick(action, $event)\"\n >\n @if (action.icon) {\n <ng-container *ngComponentOutlet=\"action.icon\" />\n }\n @if (action.label && !action.iconOnly) {\n <span class=\"action-label\">{{ action.label }}</span>\n }\n </button>\n }\n </div>\n `,\n styles: [\n `\n .talos-grid-actions-wrapper {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n flex-wrap: nowrap;\n }\n .action-label {\n margin-left: 2px;\n font-size: 11.5px;\n font-weight: 500;\n }\n :host ::ng-deep button.talos-btn {\n svg,\n .lucide {\n width: 13px;\n height: 13px;\n }\n }\n `,\n ],\n host: {\n class: 'talos-grid-actions-cell',\n },\n})\nexport class TalosGridActionsCellComponent {\n readonly row = input.required<any>();\n readonly rowIndex = input.required<number>();\n readonly actions = input<TalosGridActionDef[]>([]);\n\n readonly actionClick = output<TalosGridActionClickEvent>();\n\n protected visibleActions(): TalosGridActionDef[] {\n const r = this.row();\n return (this.actions() || []).filter((a) => {\n if (typeof a.hidden === 'function') {\n return !a.hidden(r);\n }\n return !a.hidden;\n });\n }\n\n protected isActionDisabled(action: TalosGridActionDef): boolean {\n if (typeof action.disabled === 'function') {\n return action.disabled(this.row());\n }\n return !!action.disabled;\n }\n\n protected getActionTooltip(action: TalosGridActionDef): string {\n if (typeof action.tooltip === 'function') {\n return action.tooltip(this.row());\n }\n return action.tooltip || '';\n }\n\n protected onActionClick(action: TalosGridActionDef, event: MouseEvent): void {\n event.stopPropagation();\n if (this.isActionDisabled(action)) return;\n\n if (action.onClick) {\n action.onClick(this.row(), this.rowIndex(), event);\n }\n this.actionClick.emit({\n actionId: action.id,\n row: this.row(),\n index: this.rowIndex(),\n });\n }\n}\n","import { Component, OnInit, computed, input, output, signal, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { NgComponentOutlet } from '@angular/common';\nimport { LucideSearch, LucideX } from '@lucide/angular';\nimport { TalosButtonDirective } from '@weeehaoooz/talos-ui/button';\nimport {\n DatePickerComponent,\n TalosCheckboxComponent,\n SelectInputComponent,\n OptionComponent,\n TalosInputDirective\n} from '@weeehaoooz/talos-ui/form';\nimport {\n TalosGridColDef,\n TalosGridColumnFilter,\n TalosGridFilterMode,\n TalosGridOperator,\n} from './data-grid.types';\n\n@Component({\n selector: 'talos-grid-filter-dialog',\n imports: [\n FormsModule,\n NgComponentOutlet,\n TalosButtonDirective,\n DatePickerComponent,\n TalosCheckboxComponent,\n SelectInputComponent,\n OptionComponent,\n TalosInputDirective,\n ],\n host: {\n '[class.align-right]': \"align() === 'right'\",\n '(keydown.escape)': 'closed.emit()',\n },\n template: `\n <div class=\"filter-dialog-container\" (click)=\"$event.stopPropagation()\">\n @if (filterMode() === 'set') {\n <!-- MODE A: Searchable Checkbox List (for text / select / status) -->\n <div class=\"mode-a-wrapper\">\n <!-- Search input -->\n <div class=\"search-input-wrapper\">\n <span class=\"search-icon\">\n <ng-container *ngComponentOutlet=\"searchIcon\" />\n </span>\n <input\n talosInput\n size=\"sm\"\n type=\"text\"\n class=\"filter-search-input\"\n placeholder=\"Search...\"\n [ngModel]=\"searchTerm()\"\n (ngModelChange)=\"searchTerm.set($event)\"\n (keydown.enter)=\"onSearchEnter()\"\n autofocus\n />\n @if (searchTerm()) {\n <button type=\"button\" class=\"clear-search-btn\" (click)=\"searchTerm.set('')\">\n <ng-container *ngComponentOutlet=\"xIcon\" />\n </button>\n }\n </div>\n\n <!-- Checkbox List -->\n <div class=\"checkbox-list-wrapper\">\n <!-- (Select All) item -->\n <div class=\"checkbox-item select-all-item\">\n <talos-checkbox\n size=\"sm\"\n [checked]=\"isAllSelected()\"\n [indeterminate]=\"isIndeterminate()\"\n (checkedChange)=\"toggleSelectAll($event)\"\n >\n {{ searchTerm() ? '(Select All Matches)' : '(Select All)' }}\n </talos-checkbox>\n </div>\n\n <!-- Distinct item checkboxes -->\n @for (val of visibleDistinctValues(); track val) {\n <div class=\"checkbox-item\">\n <talos-checkbox\n size=\"sm\"\n [checked]=\"isValSelected(val)\"\n (checkedChange)=\"toggleVal(val, $event)\"\n >\n {{ val || '(Blank)' }}\n </talos-checkbox>\n </div>\n }\n\n @if (visibleDistinctValues().length === 0) {\n <div class=\"no-matches-msg\">No matching values</div>\n }\n </div>\n </div>\n } @else {\n <!-- MODE B: Operator Dropdown & Filter Input (for numbers / dates) -->\n <div class=\"mode-b-wrapper\">\n <!-- Operator Dropdown -->\n <div class=\"operator-dropdown-wrapper\">\n <talos-select-input\n size=\"sm\"\n [ngModel]=\"selectedOperator()\"\n (ngModelChange)=\"selectedOperator.set($event)\"\n >\n @for (op of operatorOptions(); track op.value) {\n <talos-option [value]=\"op.value\" [label]=\"op.label\">{{ op.label }}</talos-option>\n }\n </talos-select-input>\n </div>\n\n <!-- Filter Value Input -->\n @if (selectedOperator() !== 'blank' && selectedOperator() !== 'notBlank') {\n @if (isDateField()) {\n <div class=\"date-picker-wrapper\" (keydown.enter)=\"applyConditionFilter()\">\n <talos-date-picker\n [ngModel]=\"filterVal()\"\n (ngModelChange)=\"onDateFilterValChange($event)\"\n size=\"sm\"\n placeholder=\"Select date\"\n />\n </div>\n } @else {\n <div class=\"search-input-wrapper\">\n <span class=\"search-icon\">\n <ng-container *ngComponentOutlet=\"searchIcon\" />\n </span>\n <input\n talosInput\n size=\"sm\"\n type=\"text\"\n class=\"filter-search-input\"\n placeholder=\"Filter...\"\n [ngModel]=\"filterVal()\"\n (ngModelChange)=\"filterVal.set($event)\"\n (keydown.enter)=\"applyConditionFilter()\"\n autofocus\n />\n </div>\n }\n\n <!-- Second input for Between -->\n @if (selectedOperator() === 'between') {\n @if (isDateField()) {\n <div class=\"date-picker-wrapper\" style=\"margin-top: 6px;\" (keydown.enter)=\"applyConditionFilter()\">\n <talos-date-picker\n [ngModel]=\"filterVal2()\"\n (ngModelChange)=\"onDateFilterVal2Change($event)\"\n size=\"sm\"\n placeholder=\"And max date\"\n />\n </div>\n } @else {\n <div class=\"search-input-wrapper\" style=\"margin-top: 6px;\">\n <span class=\"search-icon\">\n <ng-container *ngComponentOutlet=\"searchIcon\" />\n </span>\n <input\n talosInput\n size=\"sm\"\n type=\"text\"\n class=\"filter-search-input\"\n placeholder=\"And max value...\"\n [ngModel]=\"filterVal2()\"\n (ngModelChange)=\"filterVal2.set($event)\"\n (keydown.enter)=\"applyConditionFilter()\"\n />\n </div>\n }\n }\n }\n </div>\n }\n\n <!-- Dialog Footer -->\n <div class=\"dialog-footer\">\n <button talosButton variant=\"ghost\" size=\"sm\" type=\"button\" (click)=\"clearFilter()\">\n Clear\n </button>\n <button talosButton variant=\"primary\" size=\"sm\" type=\"button\" (click)=\"applyFilter()\">\n Apply\n </button>\n </div>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n font-family: var(--talos-font-sans, system-ui, sans-serif);\n font-size: 13px;\n }\n\n .filter-dialog-container {\n background: var(--talos-dropdown-bg, var(--talos-bg-surface, #ffffff));\n color: var(--talos-text-primary, #0f172a);\n border: 1px solid var(--talos-border-default, #cbd5e1);\n border-radius: var(--talos-radius-md, 8px);\n box-shadow:\n 0 12px 28px -4px rgba(0, 0, 0, 0.25),\n 0 4px 10px rgba(0, 0, 0, 0.1);\n width: 240px;\n padding: 10px;\n box-sizing: border-box;\n user-select: none;\n }\n\n /* Search & Filter Inputs */\n .date-picker-wrapper {\n width: 100%;\n\n talos-date-picker {\n display: block;\n width: 100%;\n }\n }\n\n .search-input-wrapper {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n }\n\n .search-icon {\n position: absolute;\n left: 9px;\n width: 14px;\n height: 14px;\n opacity: 0.6;\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n color: var(--talos-text-muted, #94a3b8);\n\n ::ng-deep svg,\n svg {\n width: 13px;\n height: 13px;\n display: block;\n }\n }\n\n .filter-search-input {\n width: 100%;\n height: 32px;\n padding: 0 24px 0 28px;\n background: var(--talos-bg-subtle, #f8fafc);\n border: 1px solid var(--talos-border-default, #cbd5e1);\n border-radius: var(--talos-radius-sm, 6px);\n color: var(--talos-text-primary, #0f172a);\n font-size: 13px;\n outline: none;\n box-sizing: border-box;\n transition:\n border-color 0.15s,\n box-shadow 0.15s;\n\n &::placeholder {\n color: var(--talos-text-muted, #94a3b8);\n }\n\n &:focus {\n border-color: var(--talos-primary, #2563eb);\n box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.25);\n }\n }\n\n .clear-search-btn {\n position: absolute;\n right: 6px;\n background: transparent;\n border: none;\n color: var(--talos-text-muted, #94a3b8);\n cursor: pointer;\n padding: 0;\n width: 16px;\n height: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n\n ::ng-deep svg,\n svg {\n width: 12px;\n height: 12px;\n display: block;\n }\n\n &:hover {\n color: var(--talos-text-primary, #0f172a);\n }\n }\n\n /* Mode A Checkbox List */\n .checkbox-list-wrapper {\n margin-top: 8px;\n max-height: 175px;\n overflow-y: auto;\n overflow-x: hidden;\n padding-right: 4px;\n scrollbar-width: thin;\n scrollbar-color: var(--talos-border-default, #cbd5e1) transparent;\n\n &::-webkit-scrollbar {\n width: 5px;\n }\n &::-webkit-scrollbar-thumb {\n background: var(--talos-border-default, #cbd5e1);\n border-radius: 4px;\n }\n }\n\n .checkbox-item {\n display: flex;\n align-items: center;\n padding: 2px 4px;\n border-radius: 4px;\n color: var(--talos-text-primary, #0f172a);\n transition: background-color 0.12s;\n\n &:hover {\n background: var(--talos-neutral-subtle-bg-hover, rgba(0, 0, 0, 0.05));\n }\n\n &.select-all-item {\n font-weight: 500;\n border-bottom: 1px solid var(--talos-border-subtle, rgba(0, 0, 0, 0.08));\n margin-bottom: 3px;\n padding-bottom: 4px;\n }\n\n talos-checkbox {\n width: 100%;\n\n ::ng-deep .talos-checkbox-wrapper {\n width: 100%;\n }\n\n ::ng-deep .talos-checkbox-label {\n font-size: 12.5px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n }\n }\n\n .no-matches-msg {\n padding: 12px;\n text-align: center;\n color: var(--talos-text-muted, #94a3b8);\n font-size: 12px;\n }\n\n /* Mode B Operator Dropdown */\n .operator-dropdown-wrapper {\n margin-bottom: 8px;\n\n talos-select-input {\n width: 100%;\n display: block;\n }\n }\n\n /* Footer */\n .dialog-footer {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 6px;\n margin-top: 10px;\n padding-top: 8px;\n border-top: 1px solid var(--talos-border-subtle, rgba(0, 0, 0, 0.08));\n }\n `,\n ],\n})\nexport class TalosGridFilterDialogComponent implements OnInit {\n readonly column = input.required<TalosGridColDef>();\n readonly distinctValues = input<string[]>([]);\n readonly currentFilter = input<TalosGridColumnFilter | undefined>(undefined);\n readonly align = input<'left' | 'right'>('left');\n\n readonly filterApplied = output<TalosGridColumnFilter>();\n readonly filterCleared = output<void>();\n readonly closed = output<void>();\n\n // Template icons\n protected readonly searchIcon: Type<unknown> = LucideSearch;\n protected readonly xIcon: Type<unknown> = LucideX;\n\n // Filter mode derived from column:\n // Mode A: text, select, status\n // Mode B: number, date\n readonly filterMode = computed<TalosGridFilterMode>(() => {\n const col = this.column();\n if (col.filterMode) return col.filterMode;\n if (\n col.type === 'number' ||\n col.sortType === 'number' ||\n col.type === 'date' ||\n col.sortType === 'date'\n ) {\n return 'condition';\n }\n return 'set';\n });\n\n // Mode A local state\n readonly searchTerm = signal<string>('');\n readonly selectedSet = signal<Set<string>>(new Set());\n\n // Mode B local state\n readonly selectedOperator = signal<TalosGridOperator>('eq');\n readonly filterVal = signal<string>('');\n readonly filterVal2 = signal<string>('');\n\n readonly operatorOptions = computed(() => {\n if (this.isDateField()) {\n return [\n { value: 'eq', label: 'Is on' },\n { value: 'neq', label: 'Is not on' },\n { value: 'gt', label: 'After' },\n { value: 'gte', label: 'On or after' },\n { value: 'lt', label: 'Before' },\n { value: 'lte', label: 'On or before' },\n { value: 'between', label: 'Between' },\n { value: 'blank', label: 'Blank' },\n { value: 'notBlank', label: 'Not blank' },\n ];\n }\n if (this.isNumberField()) {\n return [\n { value: 'eq', label: 'Equals' },\n { value: 'neq', label: 'Does not equal' },\n { value: 'gt', label: 'Greater than' },\n { value: 'gte', label: 'Greater than or equal to' },\n { value: 'lt', label: 'Less than' },\n { value: 'lte', label: 'Less than or equal to' },\n { value: 'between', label: 'Between' },\n { value: 'blank', label: 'Blank' },\n { value: 'notBlank', label: 'Not blank' },\n ];\n }\n return [\n { value: 'contains', label: 'Contains' },\n { value: 'eq', label: 'Equals' },\n { value: 'neq', label: 'Does not equal' },\n { value: 'startsWith', label: 'Starts with' },\n { value: 'endsWith', label: 'Ends with' },\n { value: 'blank', label: 'Blank' },\n { value: 'notBlank', label: 'Not blank' },\n ];\n });\n\n ngOnInit(): void {\n this.initFromCurrentFilter();\n }\n\n initFromCurrentFilter(): void {\n const cf = this.currentFilter();\n const all = this.distinctValues();\n\n if (this.filterMode() === 'set') {\n if (cf && cf.mode === 'set' && cf.selectedValues) {\n this.selectedSet.set(new Set(cf.selectedValues));\n } else {\n // Default: all selected\n this.selectedSet.set(new Set(all));\n }\n } else {\n if (cf && cf.mode === 'condition') {\n this.selectedOperator.set(cf.operator || 'eq');\n this.filterVal.set(cf.value !== undefined && cf.value !== null ? String(cf.value) : '');\n this.filterVal2.set(\n cf.secondValue !== undefined && cf.secondValue !== null ? String(cf.secondValue) : '',\n );\n } else {\n const defaultOp = this.isDateField() || this.isNumberField() ? 'eq' : 'contains';\n this.selectedOperator.set(defaultOp);\n this.filterVal.set('');\n this.filterVal2.set('');\n }\n }\n }\n\n isDateField(): boolean {\n const col = this.column();\n return col.type === 'date' || col.sortType === 'date';\n }\n\n isNumberField(): boolean {\n const col = this.column();\n return col.type === 'number' || col.sortType === 'number';\n }\n\n onDateFilterValChange(val: unknown): void {\n if (!val) {\n this.filterVal.set('');\n } else if (val instanceof Date) {\n const y = val.getFullYear();\n const m = String(val.getMonth() + 1).padStart(2, '0');\n const d = String(val.getDate()).padStart(2, '0');\n this.filterVal.set(`${y}-${m}-${d}`);\n } else {\n this.filterVal.set(String(val));\n }\n }\n\n onDateFilterVal2Change(val: unknown): void {\n if (!val) {\n this.filterVal2.set('');\n } else if (val instanceof Date) {\n const y = val.getFullYear();\n const m = String(val.getMonth() + 1).padStart(2, '0');\n const d = String(val.getDate()).padStart(2, '0');\n this.filterVal2.set(`${y}-${m}-${d}`);\n } else {\n this.filterVal2.set(String(val));\n }\n }\n\n // Mode A Helpers\n readonly visibleDistinctValues = computed(() => {\n const term = this.searchTerm().toLowerCase().trim();\n const all = this.distinctValues();\n if (!term) return all;\n return all.filter((v) => (v || '').toLowerCase().includes(term));\n });\n\n isAllSelected(): boolean {\n const visible = this.visibleDistinctValues();\n if (visible.length === 0) return false;\n const sel = this.selectedSet();\n return visible.every((v) => sel.has(v));\n }\n\n isIndeterminate(): boolean {\n const visible = this.visibleDistinctValues();\n if (visible.length === 0) return false;\n const sel = this.selectedSet();\n const count = visible.filter((v) => sel.has(v)).length;\n return count > 0 && count < visible.length;\n }\n\n toggleSelectAll(checkedOrEvent: boolean | Event): void {\n const checked =\n typeof checkedOrEvent === 'boolean'\n ? checkedOrEvent\n : (checkedOrEvent.target as HTMLInputElement).checked;\n const sel = new Set(this.selectedSet());\n const visible = this.visibleDistinctValues();\n\n if (checked) {\n visible.forEach((v) => sel.add(v));\n } else {\n visible.forEach((v) => sel.delete(v));\n }\n this.selectedSet.set(sel);\n }\n\n isValSelected(val: string): boolean {\n return this.selectedSet().has(val);\n }\n\n toggleVal(val: string, checkedOrEvent: boolean | Event): void {\n const checked =\n typeof checkedOrEvent === 'boolean'\n ? checkedOrEvent\n : (checkedOrEvent.target as HTMLInputElement).checked;\n const sel = new Set(this.selectedSet());\n if (checked) {\n sel.add(val);\n } else {\n sel.delete(val);\n }\n this.selectedSet.set(sel);\n }\n\n onSearchEnter(): void {\n const term = this.searchTerm().trim();\n if (term) {\n const visible = this.visibleDistinctValues();\n this.selectedSet.set(new Set(visible));\n }\n this.applySetFilter();\n }\n\n // Apply Actions\n applyFilter(): void {\n if (this.filterMode() === 'set') {\n this.applySetFilter();\n } else {\n this.applyConditionFilter();\n }\n }\n\n applySetFilter(): void {\n const field = this.column().field;\n const all = this.distinctValues();\n let sel = Array.from(this.selectedSet());\n\n // If search term is present and user hadn't changed individual checkboxes (still all selected),\n // narrow selection to the visible search matches\n const term = this.searchTerm().trim();\n if (term && sel.length === all.length) {\n sel = this.visibleDistinctValues();\n this.selectedSet.set(new Set(sel));\n }\n\n // If all distinct values are selected and no search term, it's effectively no filter\n if (sel.length === all.length && all.every((v) => this.selectedSet().has(v))) {\n this.clearFilter();\n return;\n }\n\n this.filterApplied.emit({\n field,\n mode: 'set',\n selectedValues: sel,\n });\n this.closed.emit();\n }\n\n applyConditionFilter(): void {\n const field = this.column().field;\n const op = this.selectedOperator();\n const val = this.filterVal().trim();\n const val2 = this.filterVal2().trim();\n\n if (op !== 'blank' && op !== 'notBlank' && val === '') {\n this.clearFilter();\n return;\n }\n\n this.filterApplied.emit({\n field,\n mode: 'condition',\n operator: op,\n value: val,\n secondValue: op === 'between' ? val2 : undefined,\n });\n this.closed.emit();\n }\n\n clearFilter(): void {\n this.filterCleared.emit();\n this.closed.emit();\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TalosGridColDef } from './data-grid.types';\n\n@Pipe({\n name: 'talosGridCellFormat',\n pure: true,\n})\nexport class TalosGridCellFormatPipe implements PipeTransform {\n private readonly fieldPartsCache = new Map<string, string[]>();\n\n transform<T = any>(row: T, col: TalosGridColDef<T>): string {\n if (!row || !col) return '';\n const val = this.extractFieldValue(row, col.field);\n if (col.formatter) {\n return col.formatter(val, row);\n }\n if (val === null || val === undefined) {\n return '';\n }\n if (col.type === 'date' && val instanceof Date) {\n return val.toLocaleDateString();\n }\n return String(val);\n }\n\n private extractFieldValue(item: any, field: string): any {\n if (!item || !field) return undefined;\n if (!field.includes('.')) {\n return item[field];\n }\n let parts = this.fieldPartsCache.get(field);\n if (!parts) {\n parts = field.split('.');\n this.fieldPartsCache.set(field, parts);\n }\n let cur = item;\n for (let i = 0; i < parts.length; i++) {\n if (cur == null) return undefined;\n cur = cur[parts[i]];\n }\n return cur;\n }\n}\n","import { Component, computed, effect, input, output, signal, Type } from '@angular/core';\nimport { NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport {\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n ConnectedPosition,\n OverlayModule,\n} from '@angular/cdk/overlay';\nimport {\n LucideArrowUp,\n LucideArrowDown,\n LucideArrowUpDown,\n LucideChevronLeft,\n LucideChevronRight,\n LucideChevronsLeft,\n LucideChevronsRight,\n LucideX,\n LucideInbox,\n LucideLoader2,\n LucideFilter,\n} from '@lucide/angular';\nimport { TalosButtonDirective } from '@weeehaoooz/talos-ui/button';\nimport { SelectInputComponent, OptionComponent } from '@weeehaoooz/talos-ui/form';\nimport { FormsModule } from '@angular/forms';\nimport { TalosGridStatusCellComponent } from './data-grid-status-cell.component';\nimport { TalosGridActionsCellComponent } from './data-grid-actions-cell.component';\nimport { TalosGridFilterDialogComponent } from './data-grid-filter-dialog.component';\nimport { TalosGridCellFormatPipe } from './data-grid-format.pipe';\nimport {\n TalosGridActionClickEvent,\n TalosGridColDef,\n TalosGridColumnFilter,\n TalosGridColumnResizeEvent,\n TalosGridDensity,\n TalosGridPaginationState,\n TalosGridSortDirection,\n TalosGridSortState,\n TalosGridSortType,\n} from './data-grid.types';\n\n@Component({\n selector: 'talos-data-grid',\n imports: [\n NgComponentOutlet,\n NgTemplateOutlet,\n OverlayModule,\n CdkConnectedOverlay,\n CdkOverlayOrigin,\n FormsModule,\n TalosButtonDirective,\n SelectInputComponent,\n OptionComponent,\n TalosGridStatusCellComponent,\n TalosGridActionsCellComponent,\n TalosGridFilterDialogComponent,\n TalosGridCellFormatPipe,\n ],\n templateUrl: './data-grid.component.html',\n styleUrl: './data-grid.component.scss',\n host: {\n class: 'talos-data-grid-host',\n '[style.min-height]': 'normalizedMinHeight()',\n '[style.height]': 'normalizedHeight()',\n },\n})\nexport class TalosDataGridComponent<T = any> {\n // Inputs\n readonly data = input.required<T[]>();\n readonly columns = input.required<TalosGridColDef<T>[]>();\n readonly density = input<TalosGridDensity>('comfortable');\n readonly filterable = input<boolean>(false);\n readonly pagination = input<boolean>(false);\n readonly pageSize = input<number>(10);\n readonly pageSizeOptions = input<number[]>([5, 10, 20, 50]);\n readonly pageIndex = input<number>(0);\n readonly totalItems = input<number | null>(null);\n readonly trackBy = input<((index: number, item: T) => any) | null>(null);\n readonly striped = input<boolean>(false);\n readonly bordered = input<boolean>(true);\n readonly hoverable = input<boolean>(true);\n readonly emptyMessage = input<string>('No records to display');\n readonly loading = input<boolean>(false);\n readonly clientSort = input<boolean>(true);\n readonly clientPagination = input<boolean>(true);\n readonly clientFilter = input<boolean>(true);\n readonly resizable = input<boolean>(false);\n readonly rowKey = input<keyof T | string | null>(null);\n readonly minHeight = input<string | number | null>(null);\n readonly height = input<string | number | null>(null);\n\n protected readonly normalizedMinHeight = computed(() => {\n const val = this.minHeight();\n if (val === null || val === undefined) return null;\n return typeof val === 'number' ? `${val}px` : val;\n });\n\n protected readonly normalizedHeight = computed(() => {\n const val = this.height();\n if (val === null || val === undefined) return null;\n return typeof val === 'number' ? `${val}px` : val;\n });\n\n // Outputs\n readonly sortChange = output<TalosGridSortState>();\n readonly filterChange = output<TalosGridColumnFilter[]>();\n readonly pageChange = output<TalosGridPaginationState>();\n readonly rowClick = output<{ row: T; index: number }>();\n readonly actionClick = output<TalosGridActionClickEvent<T>>();\n readonly columnResize = output<TalosGridColumnResizeEvent<T>>();\n\n // Icons for template\n protected readonly arrowUpIcon: Type<unknown> = LucideArrowUp;\n protected readonly arrowDownIcon: Type<unknown> = LucideArrowDown;\n protected readonly arrowUpDownIcon: Type<unknown> = LucideArrowUpDown;\n protected readonly chevronLeftIcon: Type<unknown> = LucideChevronLeft;\n protected readonly chevronRightIcon: Type<unknown> = LucideChevronRight;\n protected readonly chevronsLeftIcon: Type<unknown> = LucideChevronsLeft;\n protected readonly chevronsRightIcon: Type<unknown> = LucideChevronsRight;\n protected readonly xIcon: Type<unknown> = LucideX;\n protected readonly inboxIcon: Type<unknown> = LucideInbox;\n protected readonly loaderIcon: Type<unknown> = LucideLoader2;\n protected readonly filterIcon: Type<unknown> = LucideFilter;\n\n // Internal reactive states\n readonly internalSortState = signal<TalosGridSortState>({ field: '', direction: null });\n readonly internalFilterStates = signal<Map<string, TalosGridColumnFilter>>(new Map());\n readonly internalPageIndex = signal<number>(0);\n readonly internalPageSize = signal<number>(10);\n readonly activeFilterCol = signal<string | null>(null);\n readonly columnWidths = signal<Record<string, number>>({});\n readonly resizingColumn = signal<string | null>(null);\n readonly isResizing = computed<boolean>(() => this.resizingColumn() !== null);\n readonly hasResizableColumns = computed<boolean>(() => {\n return this.resizable() || this.columns().some((c) => c.resizable === true);\n });\n\n // CDK Connected Overlay Positions\n readonly overlayPositions: ConnectedPosition[] = [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: 6,\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n offsetY: 6,\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetY: -6,\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n offsetY: -6,\n },\n ];\n\n constructor() {\n effect(() => {\n this.internalPageIndex.set(this.pageIndex());\n });\n effect(() => {\n this.internalPageSize.set(this.pageSize());\n });\n }\n\n // Active filters list\n protected readonly activeFiltersList = computed(() => {\n return Array.from(this.internalFilterStates().values());\n });\n\n protected readonly hasActiveFilters = computed(() => {\n return this.internalFilterStates().size > 0;\n });\n\n // Cached distinct values for the currently active filter column\n readonly activeColumnDistinctValues = computed<string[]>(() => {\n const field = this.activeFilterCol();\n if (!field) return [];\n const col = this.columns().find((c) => c.field === field);\n if (!col) return [];\n return this.getDistinctValues(col);\n });\n\n // Multi-Stage Processing Pipeline:\n // Stage 1: Filtered Data\n readonly filteredData = computed<T[]>(() => {\n const raw = this.data() || [];\n if (!this.clientFilter() || this.internalFilterStates().size === 0) {\n return raw;\n }\n\n const filters = this.internalFilterStates();\n const colsMap = new Map(this.columns().map((c) => [c.field, c]));\n\n return raw.filter((item) => {\n for (const [field, filter] of filters.entries()) {\n const rawVal = this.extractFieldValue(item, field);\n const col = colsMap.get(field);\n if (!this.matchesFilter(rawVal, filter, col)) {\n return false;\n }\n }\n return true;\n });\n });\n\n // Stage 2: Sorted Data\n readonly sortedData = computed<T[]>(() => {\n const base = this.filteredData();\n const sort = this.internalSortState();\n\n if (!this.clientSort() || !sort.direction || !sort.field) {\n return base;\n }\n\n const col = this.columns().find((c) => c.field === sort.field);\n const sortType = sort.sortType || col?.sortType || this.inferSortType(col);\n const dir = sort.direction === 'asc' ? 1 : -1;\n\n // Schwartzian transform: Pre-extract and parse sort keys in an O(N) pass\n // to eliminate reflection, string conversions, and Date parsing from the O(N log N) comparator\n const mapped = base.map((item, index) => {\n const raw = this.extractFieldValue(item, sort.field);\n let sortKey: any = null;\n\n if (raw !== null && raw !== undefined && raw !== '') {\n switch (sortType) {\n case 'number': {\n const num = Number(raw);\n sortKey = isNaN(num) ? null : num;\n break;\n }\n case 'date': {\n const time = raw instanceof Date ? raw.getTime() : new Date(raw).getTime();\n sortKey = isNaN(time) ? null : time;\n break;\n }\n case 'string':\n default:\n sortKey = String(raw);\n break;\n }\n }\n\n return { item, index, sortKey };\n });\n\n mapped.sort((a, b) => {\n if (a.sortKey === b.sortKey) return a.index - b.index;\n if (a.sortKey === null) return 1;\n if (b.sortKey === null) return -1;\n\n if (sortType === 'number' || sortType === 'date') {\n const diff = (a.sortKey - b.sortKey) * dir;\n return diff !== 0 ? diff : a.index - b.index;\n }\n\n // string\n const cmp =\n (a.sortKey as string).localeCompare(b.sortKey as string, undefined, {\n numeric: true,\n sensitivity: 'base',\n }) * dir;\n return cmp !== 0 ? cmp : a.index - b.index;\n });\n\n return mapped.map((m) => m.item);\n });\n\n // Stage 3: Paged Data\n readonly pagedData = computed<T[]>(() => {\n const sorted = this.sortedData();\n if (!this.pagination() || !this.clientPagination()) {\n return sorted;\n }\n\n const pageSize = this.internalPageSize();\n const pageIndex = this.internalPageIndex();\n const start = pageIndex * pageSize;\n return sorted.slice(start, start + pageSize);\n });\n\n // Stage 4: Pagination Metrics\n readonly totalCount = computed<number>(() => {\n const externalTotal = this.totalItems();\n if (externalTotal !== null && externalTotal !== undefined) {\n return externalTotal;\n }\n return this.filteredData().length;\n });\n\n readonly totalPages = computed<number>(() => {\n const count = this.totalCount();\n const size = this.internalPageSize();\n if (count <= 0 || size <= 0) return 1;\n return Math.ceil(count / size);\n });\n\n readonly startRecord = computed<number>(() => {\n const total = this.totalCount();\n if (total === 0) return 0;\n return this.internalPageIndex() * this.internalPageSize() + 1;\n });\n\n readonly endRecord = computed<number>(() => {\n const total = this.totalCount();\n if (total === 0) return 0;\n return Math.min(total, (this.internalPageIndex() + 1) * this.internalPageSize());\n });\n\n get hasRowClickListeners(): boolean {\n return true;\n }\n\n // Row Identification for TrackBy\n trackByRow(index: number, row: T): any {\n const customTrack = this.trackBy();\n if (customTrack) {\n return customTrack(index, row);\n }\n const customKey = this.rowKey();\n if (customKey && row && typeof row === 'object') {\n return (row as any)[customKey];\n }\n if (row && typeof row === 'object') {\n const anyRow = row as any;\n return anyRow.id ?? anyRow._id ?? anyRow.uuid ?? anyRow.key ?? index;\n }\n return index;\n }\n\n // Header & Sorting helpers\n isSortable(col: TalosGridColDef<T>): boolean {\n if (col.type === 'actions') return false;\n if (col.sortable !== undefined) return col.sortable;\n return !!col.sortType;\n }\n\n isSorted(col: TalosGridColDef<T>): boolean {\n return (\n this.internalSortState().field === col.field && this.internalSortState().direction !== null\n );\n }\n\n getSortDirection(col: TalosGridColDef<T>): TalosGridSortDirection {\n if (this.internalSortState().field !== col.field) {\n return null;\n }\n return this.internalSortState().direction;\n }\n\n getAriaSort(col: TalosGridColDef<T>): 'ascending' | 'descending' | 'none' | null {\n if (!this.isSortable(col)) return null;\n const dir = this.getSortDirection(col);\n if (dir === 'asc') return 'ascending';\n if (dir === 'desc') return 'descending';\n return 'none';\n }\n\n onHeaderClick(col: TalosGridColDef<T>): void {\n if (!this.isSortable(col)) return;\n\n const current = this.internalSortState();\n let nextDirection: TalosGridSortDirection;\n\n if (current.field !== col.field) {\n nextDirection = 'asc';\n } else if (current.direction === 'asc') {\n nextDirection = 'desc';\n } else if (current.direction === 'desc') {\n nextDirection = null;\n } else {\n nextDirection = 'asc';\n }\n\n const sortType = col.sortType || this.inferSortType(col);\n const newState: TalosGridSortState = {\n field: nextDirection ? col.field : '',\n direction: nextDirection,\n sortType,\n };\n\n this.internalSortState.set(newState);\n this.sortChange.emit(newState);\n }\n\n // Column Resizing Helpers & Handlers\n isResizable(col: TalosGridColDef<T>): boolean {\n if (col.resizable !== undefined) {\n return col.resizable;\n }\n if (col.type === 'actions') {\n return false;\n }\n return this.resizable();\n }\n\n isColumnResizing(field: string): boolean {\n return this.resizingColumn() === field;\n }\n\n getColumnWidth(col: TalosGridColDef<T>): string | undefined {\n const dynamic = this.columnWidths()[col.field];\n if (dynamic !== undefined) {\n return `${dynamic}px`;\n }\n return col.width || col.minWidth;\n }\n\n getColumnMinWidth(col: TalosGridColDef<T>): string | undefined {\n const dynamic = this.columnWidths()[col.field];\n if (dynamic !== undefined) {\n return `${dynamic}px`;\n }\n return col.minWidth || col.width;\n }\n\n setColumnWidth(field: string, width: number): void {\n this.columnWidths.update((prev) => ({\n ...prev,\n [field]: width,\n }));\n }\n\n resetColumnWidths(): void {\n this.columnWidths.set({});\n }\n\n onResizeStart(col: TalosGridColDef<T>, event: MouseEvent | TouchEvent, thEl: HTMLElement): void {\n if (!this.isResizable(col)) return;\n event.preventDefault();\n event.stopPropagation();\n\n const startX = 'touches' in event ? event.touches[0].clientX : event.clientX;\n const startWidth = thEl.getBoundingClientRect().width;\n\n const minW = col.minWidth ? parseInt(col.minWidth, 10) : 50;\n const maxW = col.maxWidth ? parseInt(col.maxWidth, 10) : undefined;\n\n this.resizingColumn.set(col.field);\n if (typeof document !== 'undefined') {\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n }\n\n let lastWidth = startWidth;\n\n const onMove = (moveEvent: MouseEvent | TouchEvent) => {\n const currentX = 'touches' in moveEvent ? moveEvent.touches[0].clientX : moveEvent.clientX;\n const deltaX = currentX - startX;\n let newWidth = Math.round(startWidth + deltaX);\n if (minW !== undefined && newWidth < minW) newWidth = minW;\n if (maxW !== undefined && newWidth > maxW) newWidth = maxW;\n\n lastWidth = newWidth;\n this.columnWidths.update((prev) => ({\n ...prev,\n [col.field]: newWidth,\n }));\n };\n\n const onEnd = () => {\n if (typeof document !== 'undefined') {\n document.removeEventListener('mousemove', onMove);\n document.removeEventListener('mouseup', onEnd);\n document.removeEventListener('touchmove', onMove);\n document.removeEventListener('touchend', onEnd);\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n }\n\n this.resizingColumn.set(null);\n this.columnResize.emit({ column: col, width: lastWidth });\n };\n\n if (typeof document !== 'undefined') {\n document.addEventListener('mousemove', onMove);\n document.addEventListener('mouseup', onEnd);\n document.addEventListener('touchmove', onMove, { passive: true });\n document.addEventListener('touchend', onEnd);\n }\n }\n\n onResizeDoubleClick(col: TalosGridColDef<T>, event: MouseEvent): void {\n event.stopPropagation();\n event.preventDefault();\n this.columnWidths.update((prev) => {\n const next = { ...prev };\n delete next[col.field];\n return next;\n });\n\n if (col.width) {\n const parsed = parseInt(col.width, 10);\n if (!isNaN(parsed)) {\n this.columnResize.emit({ column: col, width: parsed });\n }\n }\n }\n\n onResizeKeydown(col: TalosGridColDef<T>, event: KeyboardEvent, thEl: HTMLElement): void {\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\n event.preventDefault();\n event.stopPropagation();\n const currentWidth = this.columnWidths()[col.field] ?? thEl.getBoundingClientRect().width;\n const step = event.key === 'ArrowRight' ? 10 : -10;\n const minW = col.minWidth ? parseInt(col.minWidth, 10) : 50;\n const maxW = col.maxWidth ? parseInt(col.maxWidth, 10) : undefined;\n let newWidth = Math.round(currentWidth + step);\n if (minW !== undefined && newWidth < minW) newWidth = minW;\n if (maxW !== undefined && newWidth > maxW) newWidth = maxW;\n\n this.columnWidths.update((prev) => ({\n ...prev,\n [col.field]: newWidth,\n }));\n this.columnResize.emit({ column: col, width: newWidth });\n }\n }\n\n // Filter Helpers & Dialog Management\n isFilterable(col: TalosGridColDef<T>): boolean {\n if (col.type === 'actions') return false;\n if (col.filterable !== undefined) return col.filterable;\n return this.filterable();\n }\n\n isFilterDialogOpen(field: string): boolean {\n return this.activeFilterCol() === field;\n }\n\n toggleFilterDialog(field: string, event: MouseEvent): void {\n event.stopPropagation();\n if (this.activeFilterCol() === field) {\n this.activeFilterCol.set(null);\n } else {\n this.activeFilterCol.set(field);\n }\n }\n\n closeFilterDialog(): void {\n this.activeFilterCol.set(null);\n }\n\n onOverlayOutsideClick(event: MouseEvent, field: string): void {\n const target = event.target as HTMLElement;\n if (\n target &&\n (target.closest(`.filter-anchor-${field}`) ||\n target.closest('.datepicker-dropdown-panel') ||\n target.closest('.talos-datepicker-host'))\n ) {\n return;\n }\n this.closeFilterDialog();\n }\n\n getDistinctValues(col: TalosGridColDef<T>): string[] {\n const raw = this.data() || [];\n const valuesSet = new Set<string>();\n\n for (const item of raw) {\n const val = this.extractFieldValue(item, col.field);\n if (val === null || val === undefined) {\n valuesSet.add('');\n } else {\n valuesSet.add(String(val));\n }\n }\n\n return Array.from(valuesSet).sort((a, b) => {\n if (a === '') return 1;\n if (b === '') return -1;\n return a.localeCompare(b, undefined, { numeric: true, sensitivity: 'base' });\n });\n }\n\n getFilter(field: string): TalosGridColumnFilter | undefined {\n return this.internalFilterStates().get(field);\n }\n\n hasFilter(field: string): boolean {\n return this.internalFilterStates().has(field);\n }\n\n onFilterApplied(filter: TalosGridColumnFilter): void {\n const map = new Map(this.internalFilterStates());\n map.set(filter.field, filter);\n this.internalFilterStates.set(map);\n this.internalPageIndex.set(0);\n this.filterChange.emit(this.activeFiltersList());\n }\n\n onFilterCleared(field: string): void {\n const map = new Map(this.internalFilterStates());\n map.delete(field);\n this.internalFilterStates.set(map);\n this.internalPageIndex.set(0);\n this.filterChange.emit(this.activeFiltersList());\n }\n\n clearAllFilters(): void {\n this.internalFilterStates.set(new Map());\n this.internalPageIndex.set(0);\n this.filterChange.emit([]);\n }\n\n // Filter Matching Evaluator\n private matchesFilter(\n rawValue: any,\n filter: TalosGridColumnFilter,\n col?: TalosGridColDef<T>,\n ): boolean {\n // Mode A: Set Filter (text / select / status)\n if (filter.mode === 'set') {\n if (!filter.selectedValues) return true;\n const strVal = rawValue === null || rawValue === undefined ? '' : String(rawValue);\n return filter.selectedValues.includes(strVal);\n }\n\n // Mode B: Condition Filter (numbers / dates / text)\n const op = filter.operator || 'eq';\n\n if (op === 'blank') {\n return rawValue === null || rawValue === undefined || rawValue === '';\n }\n if (op === 'notBlank') {\n return rawValue !== null && rawValue !== undefined && rawValue !== '';\n }\n\n if (rawValue === null || rawValue === undefined || rawValue === '') {\n return false;\n }\n\n const filterVal = filter.value;\n const secondVal = filter.secondValue;\n\n // Check if comparing dates\n const isDate =\n col?.type === 'date' ||\n col?.sortType === 'date' ||\n filterVal instanceof Date ||\n (typeof filterVal === 'string' && /^\\d{4}-\\d{2}-\\d{2}/.test(filterVal)) ||\n rawValue instanceof Date;\n\n if (isDate) {\n const rowDate = this.normalizeDateToYMD(rawValue);\n const targetDate = this.normalizeDateToYMD(filterVal);\n const targetDate2 = secondVal ? this.normalizeDateToYMD(secondVal) : '';\n\n switch (op) {\n case 'eq':\n return rowDate === targetDate;\n case 'neq':\n return rowDate !== targetDate;\n case 'gt':\n return rowDate > targetDate;\n case 'gte':\n return rowDate >= targetDate;\n case 'lt':\n return rowDate < targetDate;\n case 'lte':\n return rowDate <= targetDate;\n case 'between': {\n if (!targetDate2) return rowDate >= targetDate;\n const minD = targetDate <= targetDate2 ? targetDate : targetDate2;\n const maxD = targetDate <= targetDate2 ? targetDate2 : targetDate;\n return rowDate >= minD && rowDate <= maxD;\n }\n default:\n return true;\n }\n }\n\n // Check if comparing numbers\n const isNumber = col?.type === 'number' || col?.sortType === 'number';\n const hasFilterNum =\n filterVal !== '' &&\n filterVal !== null &&\n filterVal !== undefined &&\n !isNaN(Number(filterVal));\n const numRaw = Number(rawValue);\n\n if ((isNumber || hasFilterNum) && !isNaN(numRaw)) {\n const numFilter = Number(filterVal);\n const numFilter2 =\n secondVal !== '' && secondVal !== null && secondVal !== undefined ? Number(secondVal) : NaN;\n\n switch (op) {\n case 'eq':\n return numRaw === numFilter;\n case 'neq':\n return numRaw !== numFilter;\n case 'gt':\n return numRaw > numFilter;\n case 'gte':\n return numRaw >= numFilter;\n case 'lt':\n return numRaw < numFilter;\n case 'lte':\n return numRaw <= numFilter;\n case 'between': {\n if (isNaN(numFilter2)) return numRaw >= numFilter;\n const minN = Math.min(numFilter, numFilter2);\n const maxN = Math.max(numFilter, numFilter2);\n return numRaw >= minN && numRaw <= maxN;\n }\n default:\n return true;\n }\n }\n\n // String / Text comparison\n const strRaw = String(rawValue).toLowerCase().trim();\n const strFilter = String(filterVal ?? '')\n .toLowerCase()\n .trim();\n switch (op) {\n case 'eq':\n return strRaw === strFilter;\n case 'neq':\n return strRaw !== strFilter;\n case 'startsWith':\n return strRaw.startsWith(strFilter);\n case 'endsWith':\n return strRaw.endsWith(strFilter);\n case 'contains':\n default:\n return strRaw.includes(strFilter);\n }\n }\n\n private normalizeDateToYMD(val: any): string {\n if (!val) return '';\n if (typeof val === 'string' && /^\\d{4}-\\d{2}-\\d{2}$/.test(val)) {\n return val;\n }\n const d = new Date(val);\n if (isNaN(d.getTime())) return '';\n const y = d.getFullYear();\n const m = String(d.getMonth() + 1).padStart(2, '0');\n const day = String(d.getDate()).padStart(2, '0');\n return `${y}-${m}-${day}`;\n }\n\n // Pagination Handlers\n setPage(pageIndex: number): void {\n const validPage = Math.max(0, Math.min(pageIndex, this.totalPages() - 1));\n if (validPage !== this.internalPageIndex()) {\n this.internalPageIndex.set(validPage);\n this.pageChange.emit({\n pageIndex: validPage,\n pageSize: this.internalPageSize(),\n totalItems: this.totalCount(),\n });\n }\n }\n\n onPageSizeChange(newSizeOrEvent: number | Event): void {\n const newSize =\n typeof newSizeOrEvent === 'number'\n ? newSizeOrEvent\n : Number((newSizeOrEvent.target as HTMLSelectElement).value);\n if (isNaN(newSize) || newSize <= 0) return;\n this.internalPageSize.set(newSize);\n this.internalPageIndex.set(0);\n this.pageChange.emit({\n pageIndex: 0,\n pageSize: newSize,\n totalItems: this.totalCount(),\n });\n }\n\n // Cell Content & Row Click Helpers\n getCellValue(row: T, col: TalosGridColDef<T>): any {\n return this.extractFieldValue(row, col.field);\n }\n\n formatCellValue(row: T, col: TalosGridColDef<T>): string {\n const val = this.getCellValue(row, col);\n if (col.formatter) {\n return col.formatter(val, row);\n }\n if (val === null || val === undefined) {\n return '';\n }\n if (col.type === 'date' && val instanceof Date) {\n return val.toLocaleDateString();\n }\n return String(val);\n }\n\n onRowClick(row: T, index: number): void {\n this.rowClick.emit({ row, index });\n }\n\n private readonly fieldPartsCache = new Map<string, string[]>();\n\n private extractFieldValue(item: any, field: string): any {\n if (!item || !field) return undefined;\n if (!field.includes('.')) {\n return item[field];\n }\n let parts = this.fieldPartsCache.get(field);\n if (!parts) {\n parts = field.split('.');\n this.fieldPartsCache.set(field, parts);\n }\n let cur = item;\n for (let i = 0; i < parts.length; i++) {\n if (cur == null) return undefined;\n cur = cur[parts[i]];\n }\n return cur;\n }\n\n private inferSortType(col?: TalosGridColDef<T>): TalosGridSortType {\n if (!col) return 'string';\n if (col.type === 'number') return 'number';\n if (col.type === 'date') return 'date';\n return 'string';\n }\n}\n","<div\n class=\"talos-data-grid-container\"\n [class.density-compact]=\"density() === 'compact'\"\n [class.density-comfortable]=\"density() === 'comfortable'\"\n [class.density-spacious]=\"density() === 'spacious'\"\n [class.is-bordered]=\"bordered()\"\n [class.is-striped]=\"striped()\"\n [class.is-resizing]=\"isResizing()\"\n>\n <!-- Loading overlay -->\n @if (loading()) {\n <div class=\"talos-data-grid-loading-overlay\">\n <ng-container *ngComponentOutlet=\"loaderIcon\" />\n </div>\n }\n\n <!-- Main Scrollable Table Wrapper -->\n <div class=\"talos-data-grid-table-wrapper\">\n <table class=\"talos-data-grid-table\" [class.has-resizable-columns]=\"hasResizableColumns()\" role=\"grid\">\n <thead>\n <!-- Header Column Row -->\n <tr>\n @for (col of columns(); track col.field) {\n <th\n #thEl\n [style.width]=\"getColumnWidth(col)\"\n [style.min-width]=\"getColumnMinWidth(col)\"\n [style.max-width]=\"col.maxWidth\"\n [class.align-left]=\"!col.align || col.align === 'left'\"\n [class.align-center]=\"col.align === 'center'\"\n [class.align-right]=\"col.align === 'right'\"\n [class.is-sortable]=\"isSortable(col)\"\n [class.is-sorted]=\"isSorted(col)\"\n [class.is-resizable]=\"isResizable(col)\"\n [class.is-resizing]=\"isColumnResizing(col.field)\"\n (click)=\"onHeaderClick(col)\"\n role=\"columnheader\"\n [attr.aria-sort]=\"getAriaSort(col)\"\n >\n <div class=\"header-content-wrapper\">\n <span class=\"header-title\" [title]=\"col.header\">{{ col.header }}</span>\n @if (isSortable(col) || isFilterable(col)) {\n <div class=\"header-tools\">\n @if (isSortable(col)) {\n <button\n talosButton\n variant=\"ghost\"\n size=\"xs\"\n [iconOnly]=\"true\"\n type=\"button\"\n class=\"header-sort-btn\"\n [class.is-sorted]=\"isSorted(col)\"\n (click)=\"$event.stopPropagation(); onHeaderClick(col)\"\n [attr.aria-label]=\"'Sort by ' + col.header\"\n [title]=\"'Sort by ' + col.header\"\n >\n @if (getSortDirection(col) === 'asc') {\n <ng-container *ngComponentOutlet=\"arrowUpIcon\" />\n } @else if (getSortDirection(col) === 'desc') {\n <ng-container *ngComponentOutlet=\"arrowDownIcon\" />\n } @else {\n <ng-container *ngComponentOutlet=\"arrowUpDownIcon\" />\n }\n </button>\n }\n @if (isFilterable(col)) {\n <div\n class=\"talos-grid-filter-anchor\"\n [class]=\"'filter-anchor-' + col.field\"\n cdkOverlayOrigin\n #filterOrigin=\"cdkOverlayOrigin\"\n (click)=\"$event.stopPropagation()\"\n >\n <button\n talosButton\n variant=\"ghost\"\n size=\"xs\"\n [iconOnly]=\"true\"\n type=\"button\"\n class=\"header-filter-btn\"\n [class.is-active]=\"hasFilter(col.field)\"\n [class.is-open]=\"isFilterDialogOpen(col.field)\"\n (click)=\"toggleFilterDialog(col.field, $event)\"\n [attr.aria-label]=\"'Filter ' + col.header\"\n title=\"Filter\"\n >\n <ng-container *ngComponentOutlet=\"filterIcon\" />\n </button>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"filterOrigin\"\n [cdkConnectedOverlayOpen]=\"isFilterDialogOpen(col.field)\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n [cdkConnectedOverlayPush]=\"true\"\n (overlayOutsideClick)=\"onOverlayOutsideClick($event, col.field)\"\n >\n <talos-grid-filter-dialog\n [column]=\"col\"\n [distinctValues]=\"activeColumnDistinctValues()\"\n [currentFilter]=\"getFilter(col.field)\"\n [align]=\"col.align === 'right' ? 'right' : 'left'\"\n (filterApplied)=\"onFilterApplied($event)\"\n (filterCleared)=\"onFilterCleared(col.field)\"\n (closed)=\"closeFilterDialog()\"\n />\n </ng-template>\n </div>\n }\n </div>\n }\n </div>\n @if (isResizable(col)) {\n <div\n class=\"talos-grid-resize-handle\"\n [class.is-resizing]=\"isColumnResizing(col.field)\"\n (mousedown)=\"onResizeStart(col, $event, thEl)\"\n (touchstart)=\"onResizeStart(col, $event, thEl)\"\n (dblclick)=\"onResizeDoubleClick(col, $event)\"\n (click)=\"$event.stopPropagation()\"\n role=\"separator\"\n aria-orientation=\"vertical\"\n tabindex=\"0\"\n [attr.aria-label]=\"'Resize ' + col.header + ' column'\"\n (keydown)=\"onResizeKeydown(col, $event, thEl)\"\n ></div>\n }\n </th>\n }\n </tr>\n </thead>\n\n <!-- Table Body with TrackBy for Optimal Refresh Performance -->\n <tbody>\n @for (row of pagedData(); track trackByRow($index, row)) {\n <tr\n [class.is-hoverable]=\"hoverable()\"\n [class.is-clickable]=\"hasRowClickListeners\"\n (click)=\"onRowClick(row, $index)\"\n role=\"row\"\n >\n @for (col of columns(); track col.field) {\n <td\n [class.align-left]=\"!col.align || col.align === 'left'\"\n [class.align-center]=\"col.align === 'center'\"\n [class.align-right]=\"col.align === 'right'\"\n role=\"gridcell\"\n >\n @if (col.cellTemplate) {\n <ng-container\n *ngTemplateOutlet=\"\n col.cellTemplate;\n context: {\n $implicit: getCellValue(row, col),\n row: row,\n index: $index,\n column: col,\n }\n \"\n />\n } @else if (col.type === 'status') {\n <talos-grid-status-cell\n [row]=\"row\"\n [column]=\"col\"\n [rawValue]=\"getCellValue(row, col)\"\n />\n } @else if (col.type === 'actions' && col.actionsConfig) {\n <talos-grid-actions-cell\n [row]=\"row\"\n [rowIndex]=\"$index\"\n [actions]=\"col.actionsConfig\"\n (actionClick)=\"actionClick.emit($event)\"\n />\n } @else {\n {{ row | talosGridCellFormat: col }}\n }\n </td>\n }\n </tr>\n }\n </tbody>\n </table>\n\n <!-- Empty State -->\n @if (pagedData().length === 0) {\n <div class=\"talos-data-grid-empty\">\n <div class=\"empty-icon\">\n <ng-container *ngComponentOutlet=\"inboxIcon\" />\n </div>\n <div class=\"empty-text\">\n @if (hasActiveFilters()) {\n <span>No results matching the active filters.</span>\n } @else {\n <span>{{ emptyMessage() }}</span>\n }\n </div>\n @if (hasActiveFilters()) {\n <button talosButton variant=\"outline\" size=\"sm\" (click)=\"clearAllFilters()\">\n Clear Filters\n </button>\n }\n </div>\n }\n </div>\n\n <!-- Pagination Bar -->\n @if (pagination()) {\n <div class=\"talos-data-grid-pagination\">\n <div class=\"pagination-left\">\n <span class=\"pagination-info\">\n Showing {{ startRecord() }} to {{ endRecord() }} of {{ totalCount() }} entries\n </span>\n\n @if (pageSizeOptions().length > 1) {\n <div class=\"pagination-size-selector\">\n <span>Rows per page:</span>\n <talos-select-input\n size=\"sm\"\n placement=\"top\"\n [ngModel]=\"internalPageSize()\"\n (selectionChange)=\"onPageSizeChange(+$any($event))\"\n aria-label=\"Select page size\"\n >\n @for (size of pageSizeOptions(); track size) {\n <talos-option [value]=\"size\" [label]=\"size.toString()\">{{ size }}</talos-option>\n }\n </talos-select-input>\n </div>\n }\n </div>\n\n <div class=\"pagination-right\">\n <button\n talosButton\n variant=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [disabled]=\"internalPageIndex() <= 0\"\n (click)=\"setPage(0)\"\n title=\"First page\"\n aria-label=\"First page\"\n >\n <ng-container *ngComponentOutlet=\"chevronsLeftIcon\" />\n </button>\n\n <button\n talosButton\n variant=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [disabled]=\"internalPageIndex() <= 0\"\n (click)=\"setPage(internalPageIndex() - 1)\"\n title=\"Previous page\"\n aria-label=\"Previous page\"\n >\n <ng-container *ngComponentOutlet=\"chevronLeftIcon\" />\n </button>\n\n <span class=\"page-indicator\">\n Page {{ internalPageIndex() + 1 }} of {{ totalPages() }}\n </span>\n\n <button\n talosButton\n variant=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [disabled]=\"internalPageIndex() >= totalPages() - 1\"\n (click)=\"setPage(internalPageIndex() + 1)\"\n title=\"Next page\"\n aria-label=\"Next page\"\n >\n <ng-container *ngComponentOutlet=\"chevronRightIcon\" />\n </button>\n\n <button\n talosButton\n variant=\"ghost\"\n size=\"sm\"\n [iconOnly]=\"true\"\n [disabled]=\"internalPageIndex() >= totalPages() - 1\"\n (click)=\"setPage(totalPages() - 1)\"\n title=\"Last page\"\n aria-label=\"Last page\"\n >\n <ng-container *ngComponentOutlet=\"chevronsRightIcon\" />\n </button>\n </div>\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { TalosDataGridComponent } from './data-grid.component';\nimport { TalosGridStatusCellComponent } from './data-grid-status-cell.component';\nimport { TalosGridActionsCellComponent } from './data-grid-actions-cell.component';\nimport { TalosGridFilterDialogComponent } from './data-grid-filter-dialog.component';\nimport { TalosGridCellFormatPipe } from './data-grid-format.pipe';\n\n@NgModule({\n imports: [\n TalosDataGridComponent,\n TalosGridStatusCellComponent,\n TalosGridActionsCellComponent,\n TalosGridFilterDialogComponent,\n TalosGridCellFormatPipe,\n ],\n exports: [\n TalosDataGridComponent,\n TalosGridStatusCellComponent,\n TalosGridActionsCellComponent,\n TalosGridFilterDialogComponent,\n TalosGridCellFormatPipe,\n ],\n})\nexport class TalosDataGridModule {}\n","import { Directive, TemplateRef, inject } from '@angular/core';\n\n@Directive({\n selector: '[talosTimelineDot], ng-template[talosTimelineDot]'\n})\nexport class TalosTimelineDotDirective {\n readonly templateRef = inject(TemplateRef, { optional: true });\n}\n\n@Directive({\n selector: '[talosTimelineTitle], ng-template[talosTimelineTitle]'\n})\nexport class TalosTimelineTitleDirective {\n readonly templateRef = inject(TemplateRef, { optional: true });\n}\n\n@Directive({\n selector: '[talosTimelineTime], ng-template[talosTimelineTime]'\n})\nexport class TalosTimelineTimeDirective {\n readonly templateRef = inject(TemplateRef, { optional: true });\n}\n\n@Directive({\n selector: '[talosTimelineContent], ng-template[talosTimelineContent]'\n})\nexport class TalosTimelineContentDirective {\n readonly templateRef = inject(TemplateRef, { optional: true });\n}\n\n@Directive({\n selector: '[talosTimelineExtra], ng-template[talosTimelineExtra]'\n})\nexport class TalosTimelineExtraDirective {\n readonly templateRef = inject(TemplateRef, { optional: true });\n}\n","import {\n Component,\n ContentChild,\n Type,\n computed,\n input,\n linkedSignal,\n output\n} from '@angular/core';\nimport { DatePipe, KeyValuePipe, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';\nimport {\n LucideChevronDown,\n LucideChevronUp,\n LucideLoader2,\n LucideClock,\n LucideCheck,\n LucideAlertCircle,\n LucideInfo,\n LucideUser,\n LucideAlertTriangle\n} from '@lucide/angular';\nimport {\n TalosTimelineActor,\n TalosTimelineDiff,\n TalosTimelineDotSize,\n TalosTimelineDotVariant,\n TalosTimelineItemStatus,\n TalosTimelineLineStyle\n} from './timeline.types';\nimport {\n TalosTimelineContentDirective,\n TalosTimelineDotDirective,\n TalosTimelineExtraDirective,\n TalosTimelineTimeDirective,\n TalosTimelineTitleDirective\n} from './timeline.directives';\n\n@Component({\n selector: 'talos-timeline-item, [talosTimelineItem]',\n imports: [\n DatePipe,\n KeyValuePipe,\n NgTemplateOutlet,\n NgComponentOutlet,\n LucideChevronDown,\n LucideChevronUp,\n LucideUser\n ],\n templateUrl: './timeline-item.component.html',\n styleUrl: './timeline-item.component.scss',\n host: {\n 'class': 'talos-timeline-item',\n '[class.talos-timeline-item--primary]': 'isStatus(\"primary\")',\n '[class.talos-timeline-item--secondary]': 'isStatus(\"secondary\")',\n '[class.talos-timeline-item--success]': 'isStatus(\"success\") || isStatus(\"completed\")',\n '[class.talos-timeline-item--warning]': 'isStatus(\"warning\")',\n '[class.talos-timeline-item--error]': 'isStatus(\"error\") || isStatus(\"cancelled\")',\n '[class.talos-timeline-item--info]': 'isStatus(\"info\")',\n '[class.talos-timeline-item--neutral]': 'isStatus(\"neutral\")',\n '[class.talos-timeline-item--pending]': 'isStatus(\"pending\")',\n '[class.talos-timeline-item--in-progress]': 'isStatus(\"in-progress\")',\n '[class.talos-timeline-item--loading]': 'loading()',\n '[class.talos-timeline-item--active]': 'active()',\n '[class.talos-timeline-item--last]': 'isLast()',\n '[class.talos-timeline-item--left]': 'position() === \"left\"',\n '[class.talos-timeline-item--right]': 'position() === \"right\"',\n '[class.talos-timeline-item--expanded]': 'isExpanded()'\n }\n})\nexport class TalosTimelineItemComponent {\n // Inputs\n readonly status = input<TalosTimelineItemStatus>('neutral');\n readonly dotVariant = input<TalosTimelineDotVariant>('solid');\n readonly dotSize = input<TalosTimelineDotSize>('md');\n readonly dotColor = input<string | null>(null);\n readonly icon = input<Type<unknown> | null>(null);\n readonly loading = input<boolean>(false);\n readonly active = input<boolean>(false);\n readonly lineStyle = input<TalosTimelineLineStyle>('solid');\n readonly timestamp = input<string | Date | null>(null);\n readonly relativeTime = input<string | null>(null);\n readonly title = input<string | null>(null);\n readonly description = input<string | null>(null);\n readonly actor = input<TalosTimelineActor | null>(null);\n readonly tags = input<string[] | null>(null);\n readonly diffs = input<TalosTimelineDiff[] | null>(null);\n readonly metadata = input<Record<string, unknown> | null>(null);\n readonly expandable = input<boolean>(false);\n readonly expanded = input<boolean>(false);\n readonly position = input<'left' | 'right'>('left');\n readonly isLast = input<boolean>(false);\n\n // Outputs\n readonly itemClick = output<void>();\n readonly toggleExpand = output<boolean>();\n\n // Slot Directives\n @ContentChild(TalosTimelineDotDirective) protected readonly customDot?: TalosTimelineDotDirective;\n @ContentChild(TalosTimelineTitleDirective) protected readonly customTitle?: TalosTimelineTitleDirective;\n @ContentChild(TalosTimelineTimeDirective) protected readonly customTime?: TalosTimelineTimeDirective;\n @ContentChild(TalosTimelineContentDirective) protected readonly customContent?: TalosTimelineContentDirective;\n @ContentChild(TalosTimelineExtraDirective) protected readonly customExtra?: TalosTimelineExtraDirective;\n\n // Internal state for accordion / collapse linked to input\n protected readonly isExpanded = linkedSignal(() => this.expanded());\n\n protected readonly hasExpandableDetails = computed(() => {\n return (\n this.expandable() ||\n (this.diffs() && this.diffs()!.length > 0) ||\n (this.metadata() && Object.keys(this.metadata()!).length > 0)\n );\n });\n\n protected readonly effectiveIcon = computed<Type<unknown> | null>(() => {\n if (this.loading()) {\n return LucideLoader2;\n }\n if (this.icon()) {\n return this.icon();\n }\n switch (this.status()) {\n case 'success':\n case 'completed':\n return LucideCheck;\n case 'error':\n case 'cancelled':\n return LucideAlertCircle;\n case 'warning':\n return LucideAlertTriangle;\n case 'info':\n return LucideInfo;\n case 'pending':\n case 'in-progress':\n return LucideClock;\n default:\n return null;\n }\n });\n\n protected isStatus(expected: string): boolean {\n return this.status() === expected;\n }\n\n protected toggleAccordion(): void {\n this.isExpanded.update(current => !current);\n this.toggleExpand.emit(this.isExpanded());\n }\n\n protected onItemClicked(): void {\n this.itemClick.emit();\n }\n\n protected isDateObject(val: unknown): val is Date {\n return val instanceof Date;\n }\n\n protected formatJsonValue(val: unknown): string {\n if (typeof val === 'string') return `\"${val}\"`;\n if (typeof val === 'object' && val !== null) return JSON.stringify(val);\n return String(val);\n }\n}\n","<!-- Left / Opposite Slot (Used for Timestamps/Actor in Alternating or Two-Sided mode) -->\n<div class=\"talos-timeline-item__opposite\" aria-hidden=\"true\">\n @if (customTime?.templateRef) {\n <ng-container [ngTemplateOutlet]=\"customTime!.templateRef!\" />\n } @else if (timestamp() || relativeTime()) {\n <div class=\"talos-timeline-item__time-stamp\">\n @if (relativeTime()) {\n <span class=\"talos-timeline-item__relative-time\">{{ relativeTime() }}</span>\n }\n @if (timestamp()) {\n <span class=\"talos-timeline-item__absolute-time\">\n @if (isDateObject(timestamp())) {\n {{ timestamp() | date: 'medium' }}\n } @else {\n {{ timestamp() }}\n }\n </span>\n }\n </div>\n }\n</div>\n\n<!-- Separator Column: Connector Track & Dot Marker -->\n<div class=\"talos-timeline-item__separator\">\n <div\n class=\"talos-timeline-item__connector talos-timeline-item__connector--top\"\n [class.talos-timeline-item__connector--dashed]=\"lineStyle() === 'dashed'\"\n [class.talos-timeline-item__connector--dotted]=\"lineStyle() === 'dotted'\"\n ></div>\n\n <div\n class=\"talos-timeline-item__dot\"\n [class.talos-timeline-item__dot--solid]=\"dotVariant() === 'solid'\"\n [class.talos-timeline-item__dot--subtle]=\"dotVariant() === 'subtle'\"\n [class.talos-timeline-item__dot--outline]=\"dotVariant() === 'outline'\"\n [class.talos-timeline-item__dot--pure-dot]=\"dotVariant() === 'dot'\"\n [class.talos-timeline-item__dot--xs]=\"dotSize() === 'xs'\"\n [class.talos-timeline-item__dot--sm]=\"dotSize() === 'sm'\"\n [class.talos-timeline-item__dot--md]=\"dotSize() === 'md'\"\n [class.talos-timeline-item__dot--lg]=\"dotSize() === 'lg'\"\n [class.talos-timeline-item__dot--loading]=\"loading()\"\n [style.background-color]=\"dotColor()\"\n [style.border-color]=\"dotColor()\"\n >\n @if (customDot?.templateRef) {\n <ng-container [ngTemplateOutlet]=\"customDot!.templateRef!\" />\n } @else if (effectiveIcon()) {\n <ng-container *ngComponentOutlet=\"effectiveIcon()!\" />\n }\n </div>\n\n <div\n class=\"talos-timeline-item__connector talos-timeline-item__connector--bottom\"\n [class.talos-timeline-item__connector--dashed]=\"lineStyle() === 'dashed'\"\n [class.talos-timeline-item__connector--dotted]=\"lineStyle() === 'dotted'\"\n ></div>\n</div>\n\n<!-- Main Body / Content Area -->\n<div class=\"talos-timeline-item__body\" (click)=\"onItemClicked()\">\n <div class=\"talos-timeline-item__header\">\n <div class=\"talos-timeline-item__title-group\">\n <!-- Projected or Input Title -->\n @if (customTitle?.templateRef) {\n <ng-container [ngTemplateOutlet]=\"customTitle!.templateRef!\" />\n } @else if (title()) {\n <h4 class=\"talos-timeline-item__title\">{{ title() }}</h4>\n }\n\n <!-- Status Indicator Pill -->\n @if (status() && status() !== 'neutral') {\n <span class=\"talos-timeline-item__status-badge talos-timeline-item__status-badge--{{ status() }}\">\n {{ status() }}\n </span>\n }\n </div>\n\n <!-- Header Right / Metadata (Timestamp in Left Align mode) -->\n <div class=\"talos-timeline-item__header-meta\">\n @if (relativeTime()) {\n <span class=\"talos-timeline-item__header-time\">{{ relativeTime() }}</span>\n } @else if (timestamp()) {\n <span class=\"talos-timeline-item__header-time\">\n @if (isDateObject(timestamp())) {\n {{ timestamp() | date: 'short' }}\n } @else {\n {{ timestamp() }}\n }\n </span>\n }\n\n @if (hasExpandableDetails()) {\n <button\n type=\"button\"\n class=\"talos-timeline-item__expand-btn\"\n [attr.aria-expanded]=\"isExpanded()\"\n aria-label=\"Toggle audit details\"\n (click)=\"toggleAccordion(); $event.stopPropagation()\"\n >\n @if (isExpanded()) {\n <svg lucideChevronUp [size]=\"14\"></svg>\n } @else {\n <svg lucideChevronDown [size]=\"14\"></svg>\n }\n </button>\n }\n </div>\n </div>\n\n <!-- Actor Info for Audit Logs -->\n @if (actor(); as currentActor) {\n <div class=\"talos-timeline-item__actor\">\n <div class=\"talos-timeline-item__actor-avatar\">\n @if (currentActor.avatar) {\n <img [src]=\"currentActor.avatar\" [alt]=\"currentActor.name\" />\n } @else {\n <svg lucideUser [size]=\"12\"></svg>\n }\n </div>\n <div class=\"talos-timeline-item__actor-details\">\n <span class=\"talos-timeline-item__actor-name\">{{ currentActor.name }}</span>\n @if (currentActor.role) {\n <span class=\"talos-timeline-item__actor-role\">{{ currentActor.role }}</span>\n }\n @if (currentActor.ip) {\n <span class=\"talos-timeline-item__actor-ip\">({{ currentActor.ip }})</span>\n }\n </div>\n </div>\n }\n\n <!-- Description / Content Area -->\n <div class=\"talos-timeline-item__content\">\n @if (customContent?.templateRef) {\n <ng-container [ngTemplateOutlet]=\"customContent!.templateRef!\" />\n } @else if (description()) {\n <p class=\"talos-timeline-item__description\">{{ description() }}</p>\n }\n <ng-content></ng-content>\n </div>\n\n <!-- Tags Pill Row -->\n @if (tags() && tags()!.length > 0) {\n <div class=\"talos-timeline-item__tags\">\n @for (tag of tags()!; track tag) {\n <span class=\"talos-timeline-item__tag\">{{ tag }}</span>\n }\n </div>\n }\n\n <!-- Audit Change Diffs (Expanded / Default) -->\n @if (diffs() && diffs()!.length > 0 && isExpanded()) {\n <div class=\"talos-timeline-item__diffs-table-wrapper\">\n <table class=\"talos-timeline-item__diffs-table\">\n <thead>\n <tr>\n <th>Field</th>\n <th>Previous Value</th>\n <th>New Value</th>\n </tr>\n </thead>\n <tbody>\n @for (diff of diffs()!; track diff.field) {\n <tr class=\"talos-timeline-item__diff-row talos-timeline-item__diff-row--{{ diff.type || 'modified' }}\">\n <td class=\"talos-timeline-item__diff-field\">{{ diff.field }}</td>\n <td class=\"talos-timeline-item__diff-old\">\n <code>{{ formatJsonValue(diff.previousValue) }}</code>\n </td>\n <td class=\"talos-timeline-item__diff-new\">\n <code>{{ formatJsonValue(diff.newValue) }}</code>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n\n <!-- Expandable JSON / Metadata -->\n @if (metadata() && isExpanded()) {\n <div class=\"talos-timeline-item__metadata-card\">\n <div class=\"talos-timeline-item__metadata-header\">Metadata & Payload</div>\n <div class=\"talos-timeline-item__metadata-grid\">\n @for (entry of metadata()! | keyvalue; track entry.key) {\n <div class=\"talos-timeline-item__meta-item\">\n <span class=\"talos-timeline-item__meta-key\">{{ entry.key }}:</span>\n <span class=\"talos-timeline-item__meta-val\"><code>{{ formatJsonValue(entry.value) }}</code></span>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Extra Slot Projection -->\n @if (customExtra?.templateRef) {\n <div class=\"talos-timeline-item__extra\">\n <ng-container [ngTemplateOutlet]=\"customExtra!.templateRef!\" />\n </div>\n }\n</div>\n","import {\n Component,\n computed,\n input,\n output\n} from '@angular/core';\nimport {\n TalosTimelineAlign,\n TalosTimelineItem,\n TalosTimelineLineStyle,\n TalosTimelineMode,\n TalosTimelineOrientation\n} from './timeline.types';\nimport { TalosTimelineItemComponent } from './timeline-item.component';\n\n@Component({\n selector: 'talos-timeline, [talosTimeline]',\n imports: [TalosTimelineItemComponent],\n templateUrl: './timeline.component.html',\n styleUrl: './timeline.component.scss',\n host: {\n 'class': 'talos-timeline',\n '[class.talos-timeline--vertical]': 'orientation() === \"vertical\"',\n '[class.talos-timeline--horizontal]': 'orientation() === \"horizontal\"',\n '[class.talos-timeline--left]': 'align() === \"left\"',\n '[class.talos-timeline--right]': 'align() === \"right\"',\n '[class.talos-timeline--alternate]': 'align() === \"alternate\"',\n '[class.talos-timeline--standard]': 'mode() === \"standard\"',\n '[class.talos-timeline--dense]': 'mode() === \"dense\"',\n '[class.talos-timeline--card]': 'mode() === \"card\"',\n 'role': 'list'\n }\n})\nexport class TalosTimelineComponent {\n // Inputs\n readonly orientation = input<TalosTimelineOrientation>('vertical');\n readonly align = input<TalosTimelineAlign>('left');\n readonly mode = input<TalosTimelineMode>('standard');\n readonly reverse = input<boolean>(false);\n readonly lineStyle = input<TalosTimelineLineStyle>('solid');\n readonly items = input<TalosTimelineItem[] | null>(null);\n\n // Outputs\n readonly itemClick = output<TalosTimelineItem>();\n\n // Processed items for data-driven rendering\n protected readonly processedItems = computed(() => {\n const raw = this.items();\n if (!raw || raw.length === 0) return [];\n const list = [...raw];\n if (this.reverse()) {\n list.reverse();\n }\n return list;\n });\n\n protected getItemPosition(index: number): 'left' | 'right' {\n if (this.align() === 'alternate') {\n return index % 2 === 0 ? 'left' : 'right';\n }\n return this.align() === 'right' ? 'right' : 'left';\n }\n\n protected onDataDrivenItemClick(item: TalosTimelineItem): void {\n this.itemClick.emit(item);\n }\n}\n","@if (items() && items()!.length > 0) {\n @for (item of processedItems(); track item.id || $index; let idx = $index; let isLast = $last) {\n <talos-timeline-item\n [title]=\"item.title\"\n [description]=\"item.description || null\"\n [timestamp]=\"item.timestamp || null\"\n [relativeTime]=\"item.relativeTime || null\"\n [status]=\"item.status || 'neutral'\"\n [dotVariant]=\"item.dotVariant || 'solid'\"\n [dotSize]=\"item.dotSize || 'md'\"\n [dotColor]=\"item.dotColor || null\"\n [icon]=\"item.icon || null\"\n [loading]=\"item.loading || false\"\n [active]=\"item.active || false\"\n [lineStyle]=\"item.lineStyle || lineStyle()\"\n [actor]=\"item.actor || null\"\n [tags]=\"item.tags || null\"\n [diffs]=\"item.diffs || null\"\n [metadata]=\"item.metadata || null\"\n [expanded]=\"item.expanded || false\"\n [expandable]=\"!!(item.diffs?.length || item.metadata)\"\n [position]=\"getItemPosition(idx)\"\n [isLast]=\"isLast\"\n (itemClick)=\"onDataDrivenItemClick(item)\"\n />\n }\n} @else {\n <ng-content></ng-content>\n}\n","import { NgModule } from '@angular/core';\nimport { TalosTimelineComponent } from './timeline.component';\nimport { TalosTimelineItemComponent } from './timeline-item.component';\nimport {\n TalosTimelineContentDirective,\n TalosTimelineDotDirective,\n TalosTimelineExtraDirective,\n TalosTimelineTimeDirective,\n TalosTimelineTitleDirective\n} from './timeline.directives';\n\nconst TIMELINE_COMPONENTS = [\n TalosTimelineComponent,\n TalosTimelineItemComponent,\n TalosTimelineDotDirective,\n TalosTimelineTitleDirective,\n TalosTimelineTimeDirective,\n TalosTimelineContentDirective,\n TalosTimelineExtraDirective\n];\n\n@NgModule({\n imports: TIMELINE_COMPONENTS,\n exports: TIMELINE_COMPONENTS\n})\nexport class TalosTimelineModule {}\n","/**\n * Types and interfaces for TalosTrendIndicatorComponent\n */\n\nexport type TrendDirection = 'up' | 'down' | 'flat' | 'auto';\n\nexport type TrendPolarity = 'normal' | 'inverse' | 'neutral';\n\nexport type TrendVariant = 'badge' | 'subtle' | 'text' | 'bordered' | 'solid';\n\nexport type TrendSize = 'xs' | 'sm' | 'md' | 'lg';\n\nexport type TrendLayout = 'horizontal' | 'vertical';\n\nexport type TrendIconType = 'arrow-diagonal' | 'arrow-vertical' | 'chevron' | 'triangle';\n\nexport type TrendStatus = 'auto' | 'positive' | 'negative' | 'neutral';\n\nexport type TrendFormat = 'percentage' | 'currency' | 'number' | 'points' | 'custom';\n\nexport interface TrendCalculationResult {\n delta: number;\n deltaPercentage: number;\n direction: 'up' | 'down' | 'flat';\n status: 'positive' | 'negative' | 'neutral';\n formattedText: string;\n}\n\n","import { Component, computed, input } from '@angular/core';\nimport {\n TrendCalculationResult,\n TrendDirection,\n TrendFormat,\n TrendIconType,\n TrendLayout,\n TrendPolarity,\n TrendSize,\n TrendStatus,\n TrendVariant\n} from './trend-indicator.types';\n\n@Component({\n selector: 'talos-trend-indicator',\n templateUrl: './trend-indicator.component.html',\n styleUrl: './trend-indicator.component.scss',\n host: {\n 'class': 'talos-trend-indicator',\n '[class.talos-trend-badge]': 'variant() === \"badge\"',\n '[class.talos-trend-subtle]': 'variant() === \"subtle\"',\n '[class.talos-trend-text]': 'variant() === \"text\"',\n '[class.talos-trend-bordered]': 'variant() === \"bordered\"',\n '[class.talos-trend-solid]': 'variant() === \"solid\"',\n '[class.talos-trend-horizontal]': 'layout() === \"horizontal\"',\n '[class.talos-trend-vertical]': 'layout() === \"vertical\"',\n '[class.talos-trend-positive]': 'computedStatus() === \"positive\"',\n '[class.talos-trend-negative]': 'computedStatus() === \"negative\"',\n '[class.talos-trend-neutral]': 'computedStatus() === \"neutral\"',\n '[class.talos-trend-xs]': 'size() === \"xs\"',\n '[class.talos-trend-sm]': 'size() === \"sm\"',\n '[class.talos-trend-md]': 'size() === \"md\"',\n '[class.talos-trend-lg]': 'size() === \"lg\"',\n '[attr.role]': '\"status\"',\n '[attr.aria-label]': 'computedAriaLabel()'\n }\n})\nexport class TalosTrendIndicatorComponent {\n /** Explicit value to display (e.g. 14.2, -5.3, \"+12%\") */\n readonly value = input<number | string | null>(null);\n\n /** Current value for automatic delta calculation */\n readonly current = input<number | null>(null);\n\n /** Previous value for automatic delta calculation */\n readonly previous = input<number | null>(null);\n\n /** Explicit direction override or 'auto' */\n readonly direction = input<TrendDirection>('auto');\n\n /** Explicit status override or 'auto' */\n readonly status = input<TrendStatus>('auto');\n\n /** Polarity: normal (+ is good), inverse (+ is bad), neutral */\n readonly polarity = input<TrendPolarity>('normal');\n\n /** Visual variant */\n readonly variant = input<TrendVariant>('badge');\n\n /** Layout orientation: horizontal or vertical */\n readonly layout = input<TrendLayout>('horizontal');\n\n /** Icon shape / style */\n readonly iconType = input<TrendIconType>('arrow-diagonal');\n\n /** Size preset */\n readonly size = input<TrendSize>('md');\n\n /** Value formatting mode */\n readonly format = input<TrendFormat>('percentage');\n\n /** Prefix string before number */\n readonly prefix = input<string>('');\n\n /** Suffix string after number (e.g. '%', 'pts') */\n readonly suffix = input<string>('');\n\n /** Number of decimal places */\n readonly decimals = input<number>(1);\n\n /** Whether to show '+' / '-' sign */\n readonly showSign = input<boolean>(true);\n\n /** Whether to show arrow icon */\n readonly showIcon = input<boolean>(true);\n\n /** Show only the icon without text */\n readonly iconOnly = input<boolean>(false);\n\n /** Secondary comparison label (e.g. 'vs last month') */\n readonly label = input<string>('');\n\n /** Currency symbol when format is 'currency' */\n readonly currencySymbol = input<string>('$');\n\n /** Custom formatter function */\n readonly valueFormatter = input<((calc: TrendCalculationResult) => string) | null>(null);\n\n /** Accessible label */\n readonly ariaLabel = input<string | null>(null);\n\n /** Calculation result */\n readonly calculation = computed<TrendCalculationResult>(() => {\n const cur = this.current();\n const prev = this.previous();\n const val = this.value();\n const dec = this.decimals();\n\n let delta = 0;\n let deltaPct = 0;\n let dir: 'up' | 'down' | 'flat' = 'flat';\n\n if (cur !== null && prev !== null) {\n delta = cur - prev;\n deltaPct = prev !== 0 ? ((cur - prev) / Math.abs(prev)) * 100 : cur > 0 ? 100 : cur < 0 ? -100 : 0;\n if (delta > 0.0001) dir = 'up';\n else if (delta < -0.0001) dir = 'down';\n else dir = 'flat';\n } else if (typeof val === 'number') {\n delta = val;\n deltaPct = val;\n if (val > 0.0001) dir = 'up';\n else if (val < -0.0001) dir = 'down';\n else dir = 'flat';\n } else if (typeof val === 'string') {\n const parsed = parseFloat(val.replace(/[^0-9.-]/g, ''));\n delta = isNaN(parsed) ? 0 : parsed;\n deltaPct = delta;\n if (val.includes('+') || delta > 0.0001) dir = 'up';\n else if (val.includes('-') || delta < -0.0001) dir = 'down';\n else dir = 'flat';\n }\n\n // Force direction override if specified\n const explicitDir = this.direction();\n if (explicitDir !== 'auto') {\n dir = explicitDir;\n }\n\n // Determine status (positive / negative / neutral) based on polarity or explicit override\n const explicitStatus = this.status();\n let calculatedStatus: 'positive' | 'negative' | 'neutral' = 'neutral';\n\n if (explicitStatus !== 'auto') {\n calculatedStatus = explicitStatus;\n } else {\n const pol = this.polarity();\n if (pol === 'neutral' || dir === 'flat') {\n calculatedStatus = 'neutral';\n } else if (pol === 'normal') {\n calculatedStatus = dir === 'up' ? 'positive' : 'negative';\n } else if (pol === 'inverse') {\n calculatedStatus = dir === 'up' ? 'negative' : 'positive';\n }\n }\n\n // Format text\n let formattedText = '';\n const customFmt = this.valueFormatter();\n if (customFmt) {\n formattedText = customFmt({ delta, deltaPercentage: deltaPct, direction: dir, status: calculatedStatus, formattedText: '' });\n } else if (typeof val === 'string' && cur === null) {\n formattedText = val;\n } else {\n const sign = this.showSign() ? (dir === 'up' ? '+' : dir === 'down' ? '-' : '') : '';\n const absDelta = Math.abs(delta);\n const absPct = Math.abs(deltaPct);\n const pfx = this.prefix();\n const sfx = this.suffix();\n\n switch (this.format()) {\n case 'percentage':\n formattedText = `${sign}${pfx}${absPct.toFixed(dec)}%${sfx}`;\n break;\n case 'currency':\n formattedText = `${sign}${this.currencySymbol()}${pfx}${absDelta.toFixed(dec)}${sfx}`;\n break;\n case 'points':\n formattedText = `${sign}${pfx}${absDelta.toFixed(dec)} pts${sfx}`;\n break;\n case 'number':\n default:\n formattedText = `${sign}${pfx}${absDelta.toFixed(dec)}${sfx}`;\n break;\n }\n }\n\n return {\n delta,\n deltaPercentage: deltaPct,\n direction: dir,\n status: calculatedStatus,\n formattedText\n };\n });\n\n readonly computedStatus = computed(() => this.calculation().status);\n readonly computedDirection = computed(() => this.calculation().direction);\n readonly displayValue = computed(() => this.calculation().formattedText);\n\n readonly computedAriaLabel = computed(() => {\n const custom = this.ariaLabel();\n if (custom) return custom;\n const calc = this.calculation();\n const dirWord = calc.direction === 'up' ? 'Increased by' : calc.direction === 'down' ? 'Decreased by' : 'No change';\n const labelText = this.label() ? ` (${this.label()})` : '';\n return `Trend: ${dirWord} ${calc.formattedText}${labelText}`;\n });\n}\n\n","<span class=\"talos-trend-main\">\n @if (showIcon()) {\n <span class=\"talos-trend-icon-wrapper\" aria-hidden=\"true\">\n @switch (iconType()) {\n @case ('arrow-vertical') {\n @if (computedDirection() === 'up') {\n <svg class=\"talos-trend-icon talos-trend-icon-up\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M8 12.5V3.5M8 3.5L4.5 7M8 3.5L11.5 7\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else if (computedDirection() === 'down') {\n <svg class=\"talos-trend-icon talos-trend-icon-down\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M8 3.5V12.5M8 12.5L4.5 9M8 12.5L11.5 9\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else {\n <svg class=\"talos-trend-icon talos-trend-icon-flat\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 8H12.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n }\n }\n @case ('chevron') {\n @if (computedDirection() === 'up') {\n <svg class=\"talos-trend-icon talos-trend-icon-up\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 10L8 5.5L12.5 10\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else if (computedDirection() === 'down') {\n <svg class=\"talos-trend-icon talos-trend-icon-down\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 6L8 10.5L12.5 6\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else {\n <svg class=\"talos-trend-icon talos-trend-icon-flat\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 8H12.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n }\n }\n @case ('triangle') {\n @if (computedDirection() === 'up') {\n <svg class=\"talos-trend-icon talos-trend-icon-up talos-trend-icon--fill\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M8 4.5L13 12H3L8 4.5Z\"/>\n </svg>\n } @else if (computedDirection() === 'down') {\n <svg class=\"talos-trend-icon talos-trend-icon-down talos-trend-icon--fill\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M8 11.5L3 4H13L8 11.5Z\"/>\n </svg>\n } @else {\n <svg class=\"talos-trend-icon talos-trend-icon-flat talos-trend-icon--fill\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <rect x=\"3.5\" y=\"7\" width=\"9\" height=\"2\" rx=\"1\"/>\n </svg>\n }\n }\n @default {\n @if (computedDirection() === 'up') {\n <svg class=\"talos-trend-icon talos-trend-icon-up\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M4 11.5L11.5 4M11.5 4H6M11.5 4V9.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else if (computedDirection() === 'down') {\n <svg class=\"talos-trend-icon talos-trend-icon-down\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M4 4.5L11.5 12M11.5 12H6M11.5 12V6.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n } @else {\n <svg class=\"talos-trend-icon talos-trend-icon-flat\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\">\n <path d=\"M3.5 8H12.5\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n }\n }\n }\n </span>\n }\n\n @if (!iconOnly()) {\n <span class=\"talos-trend-value\">{{ displayValue() }}</span>\n }\n</span>\n\n@if (label()) {\n <span class=\"talos-trend-label\">{{ label() }}</span>\n}\n\n","import { NgModule } from '@angular/core';\nimport { TalosTrendIndicatorComponent } from './trend-indicator.component';\n\n@NgModule({\n imports: [TalosTrendIndicatorComponent],\n exports: [TalosTrendIndicatorComponent]\n})\nexport class TalosTrendIndicatorModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}